From 957a831dbfd9521daa397c6992c6e01734aad965 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 31 Jan 2022 06:41:18 +0400 Subject: [PATCH 001/521] Replace tga to png --- mods/CORE/tga_encoder/README.md | 4 - mods/CORE/tga_encoder/init.lua | 92 ----------- mods/CORE/tga_encoder/mod.conf | 3 - mods/ITEMS/mcl_maps/init.lua | 177 +++++++++++----------- mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr | 5 +- mods/ITEMS/mcl_maps/mod.conf | 2 +- 6 files changed, 91 insertions(+), 192 deletions(-) delete mode 100644 mods/CORE/tga_encoder/README.md delete mode 100644 mods/CORE/tga_encoder/init.lua delete mode 100644 mods/CORE/tga_encoder/mod.conf diff --git a/mods/CORE/tga_encoder/README.md b/mods/CORE/tga_encoder/README.md deleted file mode 100644 index 9b3293dda..000000000 --- a/mods/CORE/tga_encoder/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# tga_encoder -A TGA Encoder written in Lua without the use of external Libraries. - -May be used as a Minetest mod. diff --git a/mods/CORE/tga_encoder/init.lua b/mods/CORE/tga_encoder/init.lua deleted file mode 100644 index 39309c9c9..000000000 --- a/mods/CORE/tga_encoder/init.lua +++ /dev/null @@ -1,92 +0,0 @@ -tga_encoder = {} - -local image = setmetatable({}, { - __call = function(self, ...) - local t = setmetatable({}, {__index = self}) - t:constructor(...) - return t - end, -}) - -function image:constructor(pixels) - self.data = "" - self.pixels = pixels - self.width = #pixels[1] - self.height = #pixels - - self:encode() -end - -function image:encode_colormap_spec() - self.data = self.data - .. string.char(0, 0) -- first entry index - .. string.char(0, 0) -- number of entries - .. string.char(0) -- bits per pixel -end - -function image:encode_image_spec() - self.data = self.data - .. string.char(0, 0) -- X-origin - .. string.char(0, 0) -- Y-origin - .. string.char(self.width % 256, math.floor(self.width / 256)) -- width - .. string.char(self.height % 256, math.floor(self.height / 256)) -- height - .. string.char(24) -- pixel depth (RGB = 3 bytes = 24 bits) - .. string.char(0) -- image descriptor -end - -function image:encode_header() - self.data = self.data - .. string.char(0) -- image id - .. string.char(0) -- color map type - .. string.char(10) -- image type (RLE RGB = 10) - self:encode_colormap_spec() -- color map specification - self:encode_image_spec() -- image specification -end - -function image:encode_data() - local current_pixel = '' - local previous_pixel = '' - local count = 1 - local packets = {} - local rle_packet = '' - for _, row in ipairs(self.pixels) do - for _, pixel in ipairs(row) do - current_pixel = string.char(pixel[3], pixel[2], pixel[1]) - if current_pixel ~= previous_pixel or count == 128 then - packets[#packets +1] = rle_packet - count = 1 - previous_pixel = current_pixel - else - count = count + 1 - end - rle_packet = string.char(128 + count - 1) .. current_pixel - end - end - packets[#packets +1] = rle_packet - self.data = self.data .. table.concat(packets) -end - -function image:encode_footer() - self.data = self.data - .. string.char(0, 0, 0, 0) -- extension area offset - .. string.char(0, 0, 0, 0) -- developer area offset - .. "TRUEVISION-XFILE" - .. "." - .. string.char(0) -end - -function image:encode() - self:encode_header() -- header - -- no color map and image id data - self:encode_data() -- encode data - -- no extension or developer area - self:encode_footer() -- footer -end - -function image:save(filename) - local f = assert(io.open(filename, "w")) - f:write(self.data) - f:close() -end - -tga_encoder.image = image diff --git a/mods/CORE/tga_encoder/mod.conf b/mods/CORE/tga_encoder/mod.conf deleted file mode 100644 index e4bfac898..000000000 --- a/mods/CORE/tga_encoder/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = tga_encoder -author = Fleckenstein -description = A TGA Encoder written in Lua without the use of external Libraries. diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index d2ff951ad..954fe9ee7 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -1,24 +1,12 @@ mcl_maps = {} -local modname = minetest.get_current_modname() -local modpath = minetest.get_modpath(modname) -local S = minetest.get_translator(modname) - -local math = math -local vector = vector -local table = table -local pairs = pairs - -local pos_to_string = minetest.pos_to_string -local string_to_pos = minetest.string_to_pos -local get_item_group = minetest.get_item_group -local dynamic_add_media = minetest.dynamic_add_media -local get_connected_players = minetest.get_connected_players - -local storage = minetest.get_mod_storage() +local S = minetest.get_translator("mcl_maps") +local modpath = minetest.get_modpath("mcl_maps") local worldpath = minetest.get_worldpath() local map_textures_path = worldpath .. "/mcl_maps/" ---local last_finished_id = storage:get_int("next_id") - 1 + +local math_min = math.min +local math_max = math.max minetest.mkdir(map_textures_path) @@ -40,17 +28,15 @@ local loaded_maps = {} local c_air = minetest.get_content_id("air") function mcl_maps.create_map(pos) - local minp = vector.multiply(vector.floor(vector.divide(pos, 128)), 128) - local maxp = vector.add(minp, vector.new(127, 127, 127)) + local minp = vector.subtract(vector.floor(pos), 64) + local maxp = vector.add(minp, 127) local itemstack = ItemStack("mcl_maps:filled_map") local meta = itemstack:get_meta() - local next_id = storage:get_int("next_id") - storage:set_int("next_id", next_id + 1) - local id = tostring(next_id) + local id = string.format("%.0f", minetest.hash_node_position(minp)) meta:set_string("mcl_maps:id", id) - meta:set_string("mcl_maps:minp", pos_to_string(minp)) - meta:set_string("mcl_maps:maxp", pos_to_string(maxp)) + meta:set_string("mcl_maps:minp", minetest.pos_to_string(minp)) + meta:set_string("mcl_maps:maxp", minetest.pos_to_string(maxp)) tt.reload_itemstack_description(itemstack) creating_maps[id] = true @@ -62,78 +48,93 @@ function mcl_maps.create_map(pos) local emin, emax = vm:read_from_map(minp, maxp) local data = vm:get_data() local param2data = vm:get_param2_data() - local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax}) + local offset_x, offset_y, offset_z = minp.x - emin.x, minp.y - emin.y, minp.z - emin.z + local dx = emax.x - emin.x + 1 + local dy = (emax.y - emin.y + 1) * dx + local offset = offset_z * dy + offset_y * dx + offset_x + local map_y_start = 64 * dx + local map_y_limit = 127 * dx + local pixels = {} local last_heightmap for x = 1, 128 do - local map_x = minp.x - 1 + x + local map_x = x + offset local heightmap = {} for z = 1, 128 do - local map_z = minp.z - 1 + z + local map_z = (z-1) * dy + map_x local color, height - for map_y = maxp.y, minp.y, -1 do - local index = area:index(map_x, map_y, map_z) - local c_id = data[index] - if c_id ~= c_air then - color = color_cache[c_id] - if color == nil then - local nodename = minetest.get_name_from_content_id(c_id) - local def = minetest.registered_nodes[nodename] - if def then - local texture - if def.palette then - texture = def.palette - elseif def.tiles then - texture = def.tiles[1] - if type(texture) == "table" then - texture = texture.name - end - end - if texture then - texture = texture:match("([^=^%^]-([^.]+))$"):split("^")[1] - end - if def.palette then - local palette = palettes[texture] - color = palette and {palette = palette} - else - color = texture_colors[texture] - end + + local map_y = map_z + map_y_start + local map_y_limit = map_z + map_y_limit + while data[map_y] ~= c_air and map_y < map_y_limit do + map_y = map_y + dx + end + while data[map_y] == c_air and map_y > map_z do + map_y = map_y - dx + end + local c_id = data[map_y] + color = color_cache[c_id] + if color == nil then + local nodename = minetest.get_name_from_content_id(c_id) + local def = minetest.registered_nodes[nodename] + if def then + local texture + if def.palette then + texture = def.palette + elseif def.tiles then + texture = def.tiles[1] + if type(texture) == "table" then + texture = texture.name end end - - if color and color.palette then - color = color.palette[param2data[index] + 1] + if texture then + texture = texture:match("([^=^%^]-([^.]+))$"):split("^")[1] + end + if def.palette then + local palette = palettes[texture] + color = palette and {palette = palette} else - color_cache[c_id] = color or false + color = texture_colors[texture] end - - if color and last_heightmap then - local last_height = last_heightmap[z] - if last_height < map_y then - color = { - math.min(255, color[1] + 16), - math.min(255, color[2] + 16), - math.min(255, color[3] + 16), - } - elseif last_height > map_y then - color = { - math.max(0, color[1] - 16), - math.max(0, color[2] - 16), - math.max(0, color[3] - 16), - } - end - end - height = map_y - break end end + + if color and color.palette then + color = color.palette[param2data[map_y] + 1] + else + color_cache[c_id] = color or false + end + + if color and last_heightmap then + local last_height = last_heightmap[z] + local y = map_y - map_z + if last_height < y then + color = { + math_min(255, color[1] + 16), + math_min(255, color[2] + 16), + math_min(255, color[3] + 16), + } + elseif last_height > y then + color = { + math_max(0, color[1] - 16), + math_max(0, color[2] - 16), + math_max(0, color[3] - 16), + } + end + end + height = map_y - map_z + heightmap[z] = height or minp.y - pixels[z] = pixels[z] or {} - pixels[z][x] = color or {0, 0, 0} + pixels[#pixels + 1] = color and {r = color[1], g = color[2], b = color[3]} or {r = 0, g = 0, b = 0} end last_heightmap = heightmap end - tga_encoder.image(pixels):save(map_textures_path .. "mcl_maps_map_texture_" .. id .. ".tga") + + local png = minetest.encode_png(128, 128, pixels) + local f = io.open(map_textures_path .. "mcl_maps_map_texture_" .. id .. ".png", "w") + if not f then return end + f:write(png) + f:close() creating_maps[id] = nil end) return itemstack @@ -144,11 +145,11 @@ function mcl_maps.load_map(id) return end - local texture = "mcl_maps_map_texture_" .. id .. ".tga" + local texture = "mcl_maps_map_texture_" .. id .. ".png" if not loaded_maps[id] then loaded_maps[id] = true - dynamic_add_media(map_textures_path .. texture, function() end) + minetest.dynamic_add_media(map_textures_path .. texture, function() end) end return texture @@ -229,14 +230,14 @@ end local old_add_item = minetest.add_item function minetest.add_item(pos, stack) stack = ItemStack(stack) - if get_item_group(stack:get_name(), "filled_map") > 0 then + if minetest.get_item_group(stack:get_name(), "filled_map") > 0 then stack:set_name("mcl_maps:filled_map") end return old_add_item(pos, stack) end tt.register_priority_snippet(function(itemstring, _, itemstack) - if itemstack and get_item_group(itemstring, "filled_map") > 0 then + if itemstack and minetest.get_item_group(itemstring, "filled_map") > 0 then local id = itemstack:get_meta():get_string("mcl_maps:id") if id ~= "" then return "#" .. id, mcl_colors.GRAY @@ -262,7 +263,7 @@ minetest.register_craft({ local function on_craft(itemstack, player, old_craft_grid, craft_inv) if itemstack:get_name() == "mcl_maps:filled_map" then for _, stack in pairs(old_craft_grid) do - if get_item_group(stack:get_name(), "filled_map") > 0 then + if minetest.get_item_group(stack:get_name(), "filled_map") > 0 then itemstack:get_meta():from_table(stack:get_meta():to_table()) return itemstack end @@ -299,7 +300,7 @@ minetest.register_on_leaveplayer(function(player) end) minetest.register_globalstep(function(dtime) - for _, player in pairs(get_connected_players()) do + for _, player in pairs(minetest.get_connected_players()) do local wield = player:get_wielded_item() local texture = mcl_maps.load_map_item(wield) local hud = huds[player] @@ -319,8 +320,8 @@ minetest.register_globalstep(function(dtime) local pos = vector.round(player:get_pos()) local meta = wield:get_meta() - local minp = string_to_pos(meta:get_string("mcl_maps:minp")) - local maxp = string_to_pos(meta:get_string("mcl_maps:maxp")) + local minp = minetest.string_to_pos(meta:get_string("mcl_maps:minp")) + local maxp = minetest.string_to_pos(meta:get_string("mcl_maps:maxp")) local marker = "mcl_maps_player_arrow.png" diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr index 1808e839d..9ef7cd5c5 100644 --- a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr @@ -1,8 +1,5 @@ # 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 create a filled map (which can't be stacked anymore).=Clic droit pour créer une carte remplie (qui ne peut plus être empilée). +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 -Shows a map image.=Affiche une carte. -When created, the map saves the nearby area as an image that can be viewed any time by holding the map.=Lors de sa création, la carte sauvegarde le terrain proche sous forme d'image qui peut être consultée n'importe quand en tenant la carte dans la main. -Hold the map in your hand. This will display a map on your screen.=Tenez la carte dans votre main. Cela affichera la carte à l'écran. diff --git a/mods/ITEMS/mcl_maps/mod.conf b/mods/ITEMS/mcl_maps/mod.conf index e1f068963..7275471b2 100644 --- a/mods/ITEMS/mcl_maps/mod.conf +++ b/mods/ITEMS/mcl_maps/mod.conf @@ -1,2 +1,2 @@ name = mcl_maps -depends = mcl_core, mcl_flowers, tga_encoder, tt, mcl_colors, mcl_skins, mcl_util +depends = mcl_core, mcl_flowers, tt, mcl_colors, mcl_skins, mcl_util From 4ae1bf711d0282e737b7cf37de0f874fe53eca6b Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 6 Feb 2022 06:46:21 +0400 Subject: [PATCH 002/521] Break villages --- mods/CORE/mcl_mapgen/init.lua | 6 ++- mods/MAPGEN/mcl_villages/buildings.lua | 73 ++------------------------ mods/MAPGEN/mcl_villages/init.lua | 32 ++++++----- mods/MAPGEN/mcl_villages/mod.conf | 4 +- mods/MAPGEN/mcl_villages/utils.lua | 73 ++++++++++---------------- 5 files changed, 57 insertions(+), 131 deletions(-) diff --git a/mods/CORE/mcl_mapgen/init.lua b/mods/CORE/mcl_mapgen/init.lua index d751e9eb4..3cc455a88 100644 --- a/mods/CORE/mcl_mapgen/init.lua +++ b/mods/CORE/mcl_mapgen/init.lua @@ -480,7 +480,6 @@ function mcl_mapgen.get_voxel_manip(vm_context) return vm_context.vm end -local CS_NODES = mcl_mapgen.CS_NODES function mcl_mapgen.clamp_to_chunk(x, size) if not size then minetest.log("warning", "[mcl_mapgen] Couldn't clamp " .. tostring(x) .. " - missing size") @@ -504,6 +503,11 @@ function mcl_mapgen.clamp_to_chunk(x, size) end return x - overflow end + function mcl_mapgen.get_chunk_beginning(x) return x - ((x + central_chunk_min_pos) % CS_NODES) end + +function mcl_mapgen.get_chunk_ending(x) + return mcl_mapgen.get_chunk_beginning(x) + LAST_NODE_IN_CHUNK +end diff --git a/mods/MAPGEN/mcl_villages/buildings.lua b/mods/MAPGEN/mcl_villages/buildings.lua index 0860ce9a5..2e9011a22 100644 --- a/mods/MAPGEN/mcl_villages/buildings.lua +++ b/mods/MAPGEN/mcl_villages/buildings.lua @@ -1,62 +1,3 @@ ---[[ -------------------------------------------------------------------------------- --- build schematic, replace material, rotation -------------------------------------------------------------------------------- -function settlements.build_schematic(vm, data, va, pos, building, replace_wall, name) - -- get building node material for better integration to surrounding - local platform_material = mcl_vars.get_node(pos) - if not platform_material or (platform_material.name == "air" or platform_material.name == "ignore") then - return - end - platform_material = platform_material.name - -- pick random material - local material = wallmaterial[math.random(1,#wallmaterial)] - -- schematic conversion to lua - local schem_lua = minetest.serialize_schematic(building, - "lua", - {lua_use_comments = false, lua_num_indent_spaces = 0}).." return schematic" - -- replace material - if replace_wall == "y" then - schem_lua = schem_lua:gsub("mcl_core:cobble", material) - end - schem_lua = schem_lua:gsub("mcl_core:dirt_with_grass", - platform_material) - --- Disable special junglewood for now. - -- special material for spawning npcs - -- schem_lua = schem_lua:gsub("mcl_core:junglewood", - -- "settlements:junglewood") --- - - -- format schematic string - local schematic = loadstring(schem_lua)() - -- build foundation for the building an make room above - local width = schematic["size"]["x"] - local depth = schematic["size"]["z"] - local height = schematic["size"]["y"] - local possible_rotations = {"0", "90", "180", "270"} - local rotation = possible_rotations[ math.random( #possible_rotations ) ] - settlements.foundation( - pos, - width, - depth, - height, - rotation) - vm:set_data(data) - -- place schematic - - minetest.place_schematic_on_vmanip( - vm, - pos, - schematic, - rotation, - nil, - true) - vm:write_to_map(true) -end]] -------------------------------------------------------------------------------- --- initialize settlement_info -------------------------------------------------------------------------------- function settlements.initialize_settlement_info(pr) local count_buildings = {} @@ -75,18 +16,14 @@ end ------------------------------------------------------------------------------- -- fill settlement_info -------------------------------------------------------------------------------- -function settlements.create_site_plan(maxp, minp, pr) +local possible_rotations = {"0", "90", "180", "270"} +function settlements.create_site_plan(minp, maxp, pr) local settlement_info = {} local building_all_info - local possible_rotations = {"0", "90", "180", "270"} -- find center of chunk - local center = { - x=math.floor((minp.x+maxp.x)/2), - y=maxp.y, - z=math.floor((minp.z+maxp.z)/2) - } + local center = vector.add(minp, mcl_mapgen.HALF_CS_NODES) -- find center_surface of chunk - local center_surface , surface_material = settlements.find_surface(center, true) + local center_surface , surface_material = settlements.find_surface(center) local chunks = {} chunks[mcl_mapgen.get_chunk_number(center)] = true @@ -130,7 +67,7 @@ function settlements.create_site_plan(maxp, minp, pr) pos_surface, surface_material = settlements.find_surface(pos1) else chunks[chunk_number] = true - pos_surface, surface_material = settlements.find_surface(pos1, true) + pos_surface, surface_material = settlements.find_surface(pos1) end if not pos_surface then break end diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 47ca91f2e..fa4f2b7b7 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -59,7 +59,7 @@ local function build_a_settlement(minp, maxp, blockseed) local pr = PseudoRandom(blockseed) -- fill settlement_info with buildings and their data - local settlement_info = settlements.create_site_plan(maxp, minp, pr) + local settlement_info = settlements.create_site_plan(minp, maxp, pr) if not settlement_info then return end -- evaluate settlement_info and prepair terrain @@ -74,33 +74,37 @@ end -- Disable natural generation in singlenode. local mg_name = minetest.get_mapgen_setting("mg_name") +local scan_last_node = (mcl_mapgen.CS - 2) * mcl_mapgen.BS - 1 +local scan_offset = mcl_mapgen.BS if mg_name ~= "singlenode" then mcl_mapgen.register_mapgen(function(minp, maxp, blockseed) -- local str1 = (maxp.y >= 0 and blockseed % 77 == 17) and "YES" or "no" -- minetest.log("action","[mcl_villages] " .. str1 .. ": minp=" .. minetest.pos_to_string(minp) .. ", maxp=" .. minetest.pos_to_string(maxp) .. ", blockseed=" .. tostring(blockseed)) -- don't build settlement underground - if maxp.y < 0 then return end + local y_max = maxp.y + if y_max < -30 then return end -- randomly try to build settlements - if blockseed % 77 ~= 17 then return end + -- if blockseed % 77 ~= 17 then return end -- don't build settlements on (too) uneven terrain -- lame and quick replacement of `heightmap` by kay27 - we maybe need to restore `heightmap` analysis if there will be a way for the engine to avoid cavegen conflicts: -------------------------------------------------------------------------- - local height_difference, min, max - local pr1=PseudoRandom(blockseed) - for i=1,pr1:next(5,10) do - local x = pr1:next(0, 40) + minp.x + 19 - local z = pr1:next(0, 40) + minp.z + 19 - local y = minetest_get_spawn_level(x, z) - if not y then return end - if y < (min or y+1) then min = y end - if y > (max or y-1) then max = y end + local min, max = 9999999, -9999999 + local pr = PseudoRandom(blockseed) + for i = 1, pr:next(5,10) do + local pos = vector.add(vector.new(pr:next(0, scan_last_node) + scan_offset, 0, pr:next(0, scan_last_node) + scan_offset), minp) + local surface_point = settlements.find_surface(pos) + if not surface_point then return end + local y = surface_point.y + min = math.min(y, min) + max = math.max(y, max) end - height_difference = max - min + 1 + local height_difference = max - min -------------------------------------------------------------------------- - if height_difference > max_height_difference then return end + minetest.chat_send_all("height diff="..height_difference) + if height_difference > 10 then return end build_a_settlement(minp, maxp, blockseed) end, mcl_mapgen.order.VILLAGES) diff --git a/mods/MAPGEN/mcl_villages/mod.conf b/mods/MAPGEN/mcl_villages/mod.conf index d8e2aa7d4..c8e0d8149 100644 --- a/mods/MAPGEN/mcl_villages/mod.conf +++ b/mods/MAPGEN/mcl_villages/mod.conf @@ -1,5 +1,5 @@ name = mcl_villages -author = Rochambeau +author = Rochambeau, MysticTempest, kay27 description = This mod adds settlements on world generation. -depends = mcl_util, mcl_mapgen_core, mcl_structures, mcl_core, mcl_loot +depends = mcl_util, mcl_mapgen_core, mcl_structures, mcl_core, mcl_loot, mcl_mapgen optional_depends = mcl_farming, mobs_mc diff --git a/mods/MAPGEN/mcl_villages/utils.lua b/mods/MAPGEN/mcl_villages/utils.lua index 1d94ead0c..589b04403 100644 --- a/mods/MAPGEN/mcl_villages/utils.lua +++ b/mods/MAPGEN/mcl_villages/utils.lua @@ -1,4 +1,4 @@ -local get_node = mcl_mapgen.get_far_node +local get_node = minetest.get_node ------------------------------------------------------------------------------- -- function to copy tables @@ -22,55 +22,36 @@ end -- function to find surface block y coordinate -- returns surface postion ------------------------------------------------------------------------------- -function settlements.find_surface(pos, wait) +function settlements.find_surface(pos) local p6 = vector.new(pos) - local cnt = 0 - local itter = 1 -- count up or down - local cnt_max = 200 - -- check, in which direction to look for surface - local surface_node - if wait then - surface_node = get_node(p6, true, 10000000) - else - surface_node = get_node(p6) - end - if surface_node.name=="air" or surface_node.name=="ignore" then - itter = -1 - end - -- go through nodes an find surface - while cnt < cnt_max do - -- Check Surface_node and Node above - -- - if settlements.surface_mat[surface_node.name] then - local surface_node_plus_1 = get_node({ x=p6.x, y=p6.y+1, z=p6.z}) - if surface_node_plus_1 and surface_node and - (string.find(surface_node_plus_1.name,"air") or - string.find(surface_node_plus_1.name,"snow") or - string.find(surface_node_plus_1.name,"fern") or - string.find(surface_node_plus_1.name,"flower") or - string.find(surface_node_plus_1.name,"bush") or - string.find(surface_node_plus_1.name,"tree") or - string.find(surface_node_plus_1.name,"grass")) - then - settlements.debug("find_surface7: " ..surface_node.name.. " " .. surface_node_plus_1.name) - return p6, surface_node.name - else - settlements.debug("find_surface2: wrong surface+1") - end - else - settlements.debug("find_surface3: wrong surface "..surface_node.name.." at pos "..minetest.pos_to_string(p6)) + p6.y = mcl_mapgen.get_chunk_ending(p6.y) + local ymin = mcl_mapgen.get_chunk_beginning(p6.y) + local node = get_node(p6) + minetest.chat_send_all(node.name) + if node.name ~= "air" then return end + while true do + p6.y = p6.y - 1 + if p6.y < ymin then return end + node = get_node(p6) + if settlements.surface_mat[node.name] then + break end + end + minetest.chat_send_all(node.name) - p6.y = p6.y + itter - if p6.y < 0 then - settlements.debug("find_surface4: y<0") - return nil - end - cnt = cnt+1 - surface_node = get_node(p6) + local prev_node = minetest.get_node(vector.new(p6.x, p6.y + 1, p6.z)) + local name = prev_node.name + if (string.find(name, "air") + or string.find(name, "snow") + or string.find(name, "fern") + or string.find(name, "flower") + or string.find(name, "bush") + or string.find(name, "tree") + or string.find(name, "grass") + ) then + minetest.chat_send_all("found! "..node.name..", "..minetest.pos_to_string(p6)) + return p6, node.name end - settlements.debug("find_surface5: cnt_max overflow") - return nil end ------------------------------------------------------------------------------- -- check distance for new building From 7e7c0c3a3750c65fa5bcbf875658d922d7ed2fe0 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 7 Feb 2022 04:25:52 +0400 Subject: [PATCH 003/521] Make little cleanup --- mods/MAPGEN/mcl_villages/buildings.lua | 15 +++------------ mods/MAPGEN/mcl_villages/init.lua | 20 +------------------- 2 files changed, 4 insertions(+), 31 deletions(-) diff --git a/mods/MAPGEN/mcl_villages/buildings.lua b/mods/MAPGEN/mcl_villages/buildings.lua index 2e9011a22..b21c0157d 100644 --- a/mods/MAPGEN/mcl_villages/buildings.lua +++ b/mods/MAPGEN/mcl_villages/buildings.lua @@ -23,9 +23,7 @@ function settlements.create_site_plan(minp, maxp, pr) -- find center of chunk local center = vector.add(minp, mcl_mapgen.HALF_CS_NODES) -- find center_surface of chunk - local center_surface , surface_material = settlements.find_surface(center) - local chunks = {} - chunks[mcl_mapgen.get_chunk_number(center)] = true + local center_surface, surface_material = settlements.find_surface(center) -- go build settlement around center if not center_surface then return false end @@ -60,15 +58,8 @@ function settlements.create_site_plan(minp, maxp, pr) local ptx, ptz = x + r * math.cos( angle ), z + r * math.sin( angle ) ptx = settlements.round(ptx, 0) ptz = settlements.round(ptz, 0) - local pos1 = { x=ptx, y=center_surface.y+50, z=ptz} - local chunk_number = mcl_mapgen.get_chunk_number(pos1) - local pos_surface, surface_material - if chunks[chunk_number] then - pos_surface, surface_material = settlements.find_surface(pos1) - else - chunks[chunk_number] = true - pos_surface, surface_material = settlements.find_surface(pos1) - end + local pos1 = { x=ptx, y=center_surface.y, z=ptz} + local pos_surface, surface_material = settlements.find_surface(pos1) if not pos_surface then break end local randomized_schematic_table = shuffle(settlements.schematic_table, pr) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index fa4f2b7b7..386056ac6 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -8,7 +8,7 @@ dofile(settlements.modpath.."/utils.lua") dofile(settlements.modpath.."/foundation.lua") dofile(settlements.modpath.."/buildings.lua") dofile(settlements.modpath.."/paths.lua") ---dofile(settlements.modpath.."/convert_lua_mts.lua") + -- -- load settlements on server -- @@ -33,24 +33,6 @@ minetest.register_node("mcl_villages:stonebrickcarved", { }) - - ---[[ Enable for testing, but use MineClone2's own spawn code if/when merging. --- --- register inhabitants --- -if minetest.get_modpath("mobs_mc") then - mobs:register_spawn("mobs_mc:villager", --name - {"mcl_core:stonebrickcarved"}, --nodes - 15, --max_light - 0, --min_light - 20, --chance - 7, --active_object_count - 31000, --max_height - nil) --day_toggle -end ---]] - -- -- on map generation, try to build a settlement -- From 4b4e29b3c1345cbdd376419968ab53532d972a67 Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 8 Feb 2022 07:39:01 +0400 Subject: [PATCH 004/521] Slightly rewrite villages at all --- mods/CORE/mcl_mapgen/init.lua | 4 + mods/MAPGEN/mcl_villages/buildings.lua | 208 --------- mods/MAPGEN/mcl_villages/const.lua | 81 ---- mods/MAPGEN/mcl_villages/foundation.lua | 65 --- mods/MAPGEN/mcl_villages/init.lua | 428 ++++++++++++++++--- mods/MAPGEN/mcl_villages/locale/template.txt | 2 + mods/MAPGEN/mcl_villages/mod.conf | 2 +- mods/MAPGEN/mcl_villages/paths.lua | 91 ---- mods/MAPGEN/mcl_villages/utils.lua | 198 --------- 9 files changed, 370 insertions(+), 709 deletions(-) delete mode 100644 mods/MAPGEN/mcl_villages/buildings.lua delete mode 100644 mods/MAPGEN/mcl_villages/const.lua delete mode 100644 mods/MAPGEN/mcl_villages/foundation.lua create mode 100644 mods/MAPGEN/mcl_villages/locale/template.txt delete mode 100644 mods/MAPGEN/mcl_villages/paths.lua delete mode 100644 mods/MAPGEN/mcl_villages/utils.lua diff --git a/mods/CORE/mcl_mapgen/init.lua b/mods/CORE/mcl_mapgen/init.lua index 3cc455a88..bc390e597 100644 --- a/mods/CORE/mcl_mapgen/init.lua +++ b/mods/CORE/mcl_mapgen/init.lua @@ -511,3 +511,7 @@ end function mcl_mapgen.get_chunk_ending(x) return mcl_mapgen.get_chunk_beginning(x) + LAST_NODE_IN_CHUNK end + +mcl_mapgen.get_block_seed = get_block_seed +mcl_mapgen.get_block_seed2 = get_block_seed2 +mcl_mapgen.get_block_seed3 = get_block_seed3 diff --git a/mods/MAPGEN/mcl_villages/buildings.lua b/mods/MAPGEN/mcl_villages/buildings.lua deleted file mode 100644 index b21c0157d..000000000 --- a/mods/MAPGEN/mcl_villages/buildings.lua +++ /dev/null @@ -1,208 +0,0 @@ -function settlements.initialize_settlement_info(pr) - local count_buildings = {} - - -- count_buildings table reset - for k,v in pairs(settlements.schematic_table) do - count_buildings[v["name"]] = 0 - end - - -- randomize number of buildings - local number_of_buildings = pr:next(10, 25) - local number_built = 1 - settlements.debug("Village ".. number_of_buildings) - - return count_buildings, number_of_buildings, number_built -end -------------------------------------------------------------------------------- --- fill settlement_info --------------------------------------------------------------------------------- -local possible_rotations = {"0", "90", "180", "270"} -function settlements.create_site_plan(minp, maxp, pr) - local settlement_info = {} - local building_all_info - -- find center of chunk - local center = vector.add(minp, mcl_mapgen.HALF_CS_NODES) - -- find center_surface of chunk - local center_surface, surface_material = settlements.find_surface(center) - - -- go build settlement around center - if not center_surface then return false end - - -- add settlement to list - table.insert(settlements_in_world, center_surface) - -- save list to file - settlements.save() - -- initialize all settlement_info table - local count_buildings, number_of_buildings, number_built = settlements.initialize_settlement_info(pr) - -- first building is townhall in the center - building_all_info = settlements.schematic_table[1] - local rotation = possible_rotations[ pr:next(1, #possible_rotations ) ] - -- add to settlement info table - local index = 1 - settlement_info[index] = { - pos = center_surface, - name = building_all_info["name"], - hsize = building_all_info["hsize"], - rotat = rotation, - surface_mat = surface_material - } - --increase index for following buildings - index = index + 1 - -- now some buildings around in a circle, radius = size of town center - local x, z, r = center_surface.x, center_surface.z, building_all_info["hsize"] - -- draw j circles around center and increase radius by math.random(2,5) - for j = 1,20 do - -- set position on imaginary circle - for j = 0, 360, 15 do - local angle = j * math.pi / 180 - local ptx, ptz = x + r * math.cos( angle ), z + r * math.sin( angle ) - ptx = settlements.round(ptx, 0) - ptz = settlements.round(ptz, 0) - local pos1 = { x=ptx, y=center_surface.y, z=ptz} - local pos_surface, surface_material = settlements.find_surface(pos1) - if not pos_surface then break end - - local randomized_schematic_table = shuffle(settlements.schematic_table, pr) - -- pick schematic - local size = #randomized_schematic_table - for i = size, 1, -1 do - -- already enough buildings of that type? - if count_buildings[randomized_schematic_table[i]["name"]] < randomized_schematic_table[i]["max_num"]*number_of_buildings then - building_all_info = randomized_schematic_table[i] - -- check distance to other buildings - local distance_to_other_buildings_ok = settlements.check_distance(settlement_info, pos_surface, building_all_info["hsize"]) - if distance_to_other_buildings_ok then - -- count built houses - count_buildings[building_all_info["name"]] = count_buildings[building_all_info["name"]] +1 - rotation = possible_rotations[ pr:next(1, #possible_rotations ) ] - number_built = number_built + 1 - settlement_info[index] = { - pos = pos_surface, - name = building_all_info["name"], - hsize = building_all_info["hsize"], - rotat = rotation, - surface_mat = surface_material - } - index = index + 1 - break - end - end - end - if number_of_buildings == number_built then - break - end - end - if number_built >= number_of_buildings then - break - end - r = r + pr:next(2,5) - end - settlements.debug("really ".. number_built) - return settlement_info -end -------------------------------------------------------------------------------- --- evaluate settlement_info and place schematics -------------------------------------------------------------------------------- --- Initialize node -local function construct_node(p1, p2, name) - local r = minetest.registered_nodes[name] - if r then - if r.on_construct then - local nodes = minetest.find_nodes_in_area(p1, p2, name) - for p=1, #nodes do - local pos = nodes[p] - r.on_construct(pos) - end - return nodes - end - minetest.log("warning", "[mcl_villages] No on_construct defined for node name " .. name) - return - end - minetest.log("warning", "[mcl_villages] Attempt to 'construct' inexistant nodes: " .. name) -end -local function init_nodes(p1, rotation, pr, size) - local p2 = vector.subtract(vector.add(p1, size), 1) - construct_node(p1, p2, "mcl_itemframes:item_frame") - construct_node(p1, p2, "mcl_furnaces:furnace") - construct_node(p1, p2, "mcl_anvils:anvil") - - local nodes = construct_node(p1, p2, "mcl_chests:chest") - if nodes and #nodes > 0 then - for p=1, #nodes do - local pos = nodes[p] - settlements.fill_chest(pos, pr) - end - end -end -function settlements.place_schematics(settlement_info, pr) - local building_all_info - for i, built_house in ipairs(settlement_info) do - for j, schem in ipairs(settlements.schematic_table) do - if settlement_info[i]["name"] == schem["name"] then - building_all_info = schem - break - end - end - - local pos = settlement_info[i]["pos"] - local rotation = settlement_info[i]["rotat"] - -- get building node material for better integration to surrounding - local platform_material = settlement_info[i]["surface_mat"] - --platform_material_name = minetest.get_name_from_content_id(platform_material) - -- pick random material - --local material = wallmaterial[pr:next(1,#wallmaterial)] - -- - local building = building_all_info["mts"] - local replace_wall = building_all_info["rplc"] - -- schematic conversion to lua - local schem_lua = minetest.serialize_schematic(building, - "lua", - {lua_use_comments = false, lua_num_indent_spaces = 0}).." return schematic" - schem_lua = schem_lua:gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") - -- replace material - if replace_wall then - --Note, block substitution isn't matching node names exactly; so nodes that are to be substituted that have the same prefixes cause bugs. - -- Example: Attempting to swap out 'mcl_core:stonebrick'; which has multiple, additional sub-variants: (carved, cracked, mossy). Will currently cause issues, so leaving disabled. - if platform_material == "mcl_core:snow" or platform_material == "mcl_core:dirt_with_grass_snow" or platform_material == "mcl_core:podzol" then - schem_lua = schem_lua:gsub("mcl_core:tree", "mcl_core:sprucetree") - schem_lua = schem_lua:gsub("mcl_core:wood", "mcl_core:sprucewood") - --schem_lua = schem_lua:gsub("mcl_fences:fence", "mcl_fences:spruce_fence") - --schem_lua = schem_lua:gsub("mcl_stairs:slab_wood_top", "mcl_stairs:slab_sprucewood_top") - --schem_lua = schem_lua:gsub("mcl_stairs:stair_wood", "mcl_stairs:stair_sprucewood") - --schem_lua = schem_lua:gsub("mesecons_pressureplates:pressure_plate_wood_off", "mesecons_pressureplates:pressure_plate_sprucewood_off") - elseif platform_material == "mcl_core:sand" or platform_material == "mcl_core:redsand" then - schem_lua = schem_lua:gsub("mcl_core:tree", "mcl_core:sandstonecarved") - schem_lua = schem_lua:gsub("mcl_core:cobble", "mcl_core:sandstone") - schem_lua = schem_lua:gsub("mcl_core:wood", "mcl_core:sandstonesmooth") - --schem_lua = schem_lua:gsub("mcl_fences:fence", "mcl_fences:birch_fence") - --schem_lua = schem_lua:gsub("mcl_stairs:slab_wood_top", "mcl_stairs:slab_birchwood_top") - --schem_lua = schem_lua:gsub("mcl_stairs:stair_wood", "mcl_stairs:stair_birchwood") - --schem_lua = schem_lua:gsub("mesecons_pressureplates:pressure_plate_wood_off", "mesecons_pressureplates:pressure_plate_birchwood_off") - --schem_lua = schem_lua:gsub("mcl_stairs:stair_stonebrick", "mcl_stairs:stair_redsandstone") - --schem_lua = schem_lua:gsub("mcl_core:stonebrick", "mcl_core:redsandstonesmooth") - schem_lua = schem_lua:gsub("mcl_core:brick_block", "mcl_core:redsandstone") - end - end - schem_lua = schem_lua:gsub("mcl_core:dirt_with_grass", platform_material) - - --[[ Disable special junglewood for now. - -- special material for spawning npcs - schem_lua = schem_lua:gsub("mcl_core:junglewood", "settlements:junglewood") - --]] - - schem_lua = schem_lua:gsub("mcl_stairs:stair_wood_outer", "mcl_stairs:slab_wood") - schem_lua = schem_lua:gsub("mcl_stairs:stair_stone_rough_outer", "air") - - -- format schematic string - local schematic = loadstring(schem_lua)() - -- build foundation for the building an make room above - -- place schematic - mcl_structures.place_schematic({ - pos = pos, - schematic = schematic, - rotation = rotation, - on_placed = init_nodes, - pr = pr, - }) - end -end diff --git a/mods/MAPGEN/mcl_villages/const.lua b/mods/MAPGEN/mcl_villages/const.lua deleted file mode 100644 index eb7806209..000000000 --- a/mods/MAPGEN/mcl_villages/const.lua +++ /dev/null @@ -1,81 +0,0 @@ --- switch for debugging -function settlements.debug(message) - -- minetest.chat_send_all(message) - -- minetest.log("warning", "[mcl_villages] "..message) - minetest.log("verbose", "[mcl_villages] "..message) -end - ---[[ Manually set in 'buildings.lua' --- material to replace cobblestone with -local wallmaterial = { - "mcl_core:junglewood", - "mcl_core:sprucewood", - "mcl_core:wood", - "mcl_core:birchwood", - "mcl_core:acaciawood", - "mcl_core:stonebrick", - "mcl_core:cobble", - "mcl_core:sandstonecarved", - "mcl_core:sandstone", - "mcl_core:sandstonesmooth2" -} ---]] -settlements.surface_mat = {} -------------------------------------------------------------------------------- --- Set array to list --- https://stackoverflow.com/questions/656199/search-for-an-item-in-a-lua-list -------------------------------------------------------------------------------- -function settlements.grundstellungen() - settlements.surface_mat = settlements.Set { - "mcl_core:dirt_with_grass", - --"mcl_core:dry_dirt_with_grass", - "mcl_core:dirt_with_grass_snow", - --"mcl_core:dirt_with_dry_grass", - "mcl_core:podzol", - "mcl_core:sand", - "mcl_core:redsand", - --"mcl_core:silver_sand", - "mcl_core:snow" - } -end --- --- possible surfaces where buildings can be built --- - --- --- path to schematics --- -schem_path = settlements.modpath.."/schematics/" --- --- list of schematics --- -local basic_pseudobiome_villages = minetest.settings:get_bool("basic_pseudobiome_villages", true) - -settlements.schematic_table = { - {name = "large_house", mts = schem_path.."large_house.mts", hwidth = 11, hdepth = 12, hheight = 9, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, - {name = "blacksmith", mts = schem_path.."blacksmith.mts", hwidth = 7, hdepth = 7, hheight = 13, hsize = 13, max_num = 0.055, rplc = basic_pseudobiome_villages }, - {name = "butcher", mts = schem_path.."butcher.mts", hwidth = 11, hdepth = 8, hheight = 10, hsize = 14, max_num = 0.03 , rplc = basic_pseudobiome_villages }, - {name = "church", mts = schem_path.."church.mts", hwidth = 13, hdepth = 13, hheight = 14, hsize = 15, max_num = 0.04 , rplc = basic_pseudobiome_villages }, - {name = "farm", mts = schem_path.."farm.mts", hwidth = 7, hdepth = 7, hheight = 13, hsize = 13, max_num = 0.1 , rplc = basic_pseudobiome_villages }, - {name = "lamp", mts = schem_path.."lamp.mts", hwidth = 3, hdepth = 3, hheight = 13, hsize = 10, max_num = 0.1 , rplc = false }, - {name = "library", mts = schem_path.."library.mts", hwidth = 12, hdepth = 12, hheight = 8, hsize = 13, max_num = 0.04 , rplc = basic_pseudobiome_villages }, - {name = "medium_house", mts = schem_path.."medium_house.mts", hwidth = 8, hdepth = 12, hheight = 8, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, - {name = "small_house", mts = schem_path.."small_house.mts", hwidth = 9, hdepth = 7, hheight = 8, hsize = 13, max_num = 0.7 , rplc = basic_pseudobiome_villages }, - {name = "tavern", mts = schem_path.."tavern.mts", hwidth = 11, hdepth = 10, hheight = 10, hsize = 13, max_num = 0.050, rplc = basic_pseudobiome_villages }, - {name = "well", mts = schem_path.."well.mts", hwidth = 6, hdepth = 8, hheight = 6, hsize = 10, max_num = 0.045, rplc = basic_pseudobiome_villages }, -} - --- --- list of settlements, load on server start up --- -settlements_in_world = {} --- --- --- maximum allowed difference in height for building a sttlement --- -max_height_difference = 56 --- --- --- -half_map_chunk_size = 40 ---quarter_map_chunk_size = 20 diff --git a/mods/MAPGEN/mcl_villages/foundation.lua b/mods/MAPGEN/mcl_villages/foundation.lua deleted file mode 100644 index 71c5cfdda..000000000 --- a/mods/MAPGEN/mcl_villages/foundation.lua +++ /dev/null @@ -1,65 +0,0 @@ -------------------------------------------------------------------------------- --- function to fill empty space below baseplate when building on a hill -------------------------------------------------------------------------------- -function settlements.ground(pos, pr) -- role model: Wendelsteinkircherl, Brannenburg - local p2 = vector.new(pos) - local cnt = 0 - local mat = "mcl_core:dirt" - p2.y = p2.y-1 - while true do - cnt = cnt+1 - if cnt > 20 then break end - if cnt>pr:next(2,4) then - mat = "mcl_core:stone" - end - minetest.swap_node(p2, {name=mat}) - p2.y = p2.y-1 - end -end -------------------------------------------------------------------------------- --- function clear space above baseplate -------------------------------------------------------------------------------- -function settlements.terraform(settlement_info, pr) - local fheight, fwidth, fdepth, schematic_data - - for i, built_house in ipairs(settlement_info) do - -- pick right schematic_info to current built_house - for j, schem in ipairs(settlements.schematic_table) do - if settlement_info[i]["name"] == schem["name"] then - schematic_data = schem - break - end - end - local pos = settlement_info[i]["pos"] - if settlement_info[i]["rotat"] == "0" or settlement_info[i]["rotat"] == "180" then - fwidth = schematic_data["hwidth"] - fdepth = schematic_data["hdepth"] - else - fwidth = schematic_data["hdepth"] - fdepth = schematic_data["hwidth"] - end - --fheight = schematic_data["hheight"] * 3 -- remove trees and leaves above - fheight = schematic_data["hheight"] -- remove trees and leaves above - -- - -- now that every info is available -> create platform and clear space above - -- - for xi = 0,fwidth-1 do - for zi = 0,fdepth-1 do - for yi = 0,fheight *3 do - if yi == 0 then - local p = {x=pos.x+xi, y=pos.y, z=pos.z+zi} - settlements.ground(p, pr) - else - -- write ground --- local p = {x=pos.x+xi, y=pos.y+yi, z=pos.z+zi} --- local node = mcl_vars.get_node(p) --- if node and node.name ~= "air" then --- minetest.swap_node(p,{name="air"}) --- end - minetest.swap_node({x=pos.x+xi, y=pos.y+yi, z=pos.z+zi},{name="air"}) - end - end - end - end - end -end diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 386056ac6..6f563e8a5 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -1,26 +1,338 @@ -settlements = {} -settlements.modpath = minetest.get_modpath(minetest.get_current_modname()) +mcl_villages = {} +local chunk_offset_top = 16 +local chunk_offset_bottom = 3 +local max_height_difference = 12 +local minp_min = -64 +local chance_per_chunk = 1 +local noise_multiplier = 1 +local random_offset = 1 +local random_multiply = 19 +local struct_threshold = chance_per_chunk - 1 +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) +local basic_pseudobiome_villages = minetest.settings:get_bool("basic_pseudobiome_villages", true) +local schem_path = modpath .. "/schematics/" +local schematic_table = { + {name = "large_house", mts = schem_path.."large_house.mts", hwidth = 11, hdepth = 12, hheight = 9, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, + {name = "blacksmith", mts = schem_path.."blacksmith.mts", hwidth = 7, hdepth = 7, hheight = 13, hsize = 13, max_num = 0.055, rplc = basic_pseudobiome_villages }, + {name = "butcher", mts = schem_path.."butcher.mts", hwidth = 11, hdepth = 8, hheight = 10, hsize = 14, max_num = 0.03 , rplc = basic_pseudobiome_villages }, + {name = "church", mts = schem_path.."church.mts", hwidth = 13, hdepth = 13, hheight = 14, hsize = 15, max_num = 0.04 , rplc = basic_pseudobiome_villages }, + {name = "farm", mts = schem_path.."farm.mts", hwidth = 7, hdepth = 7, hheight = 13, hsize = 13, max_num = 0.1 , rplc = basic_pseudobiome_villages }, + {name = "lamp", mts = schem_path.."lamp.mts", hwidth = 3, hdepth = 3, hheight = 13, hsize = 10, max_num = 0.1 , rplc = false }, + {name = "library", mts = schem_path.."library.mts", hwidth = 12, hdepth = 12, hheight = 8, hsize = 13, max_num = 0.04 , rplc = basic_pseudobiome_villages }, + {name = "medium_house", mts = schem_path.."medium_house.mts", hwidth = 8, hdepth = 12, hheight = 8, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, + {name = "small_house", mts = schem_path.."small_house.mts", hwidth = 9, hdepth = 7, hheight = 8, hsize = 13, max_num = 0.7 , rplc = basic_pseudobiome_villages }, + {name = "tavern", mts = schem_path.."tavern.mts", hwidth = 11, hdepth = 10, hheight = 10, hsize = 13, max_num = 0.050, rplc = basic_pseudobiome_villages }, + {name = "well", mts = schem_path.."well.mts", hwidth = 6, hdepth = 8, hheight = 6, hsize = 10, max_num = 0.045, rplc = basic_pseudobiome_villages }, +} +local surface_mat = { + ["mcl_core:dirt_with_dry_grass"] = true, + ["mcl_core:dirt_with_grass"] = true, + ["mcl_core:dirt_with_grass_snow"] = true, + ["mcl_core:podzol"] = true, + ["mcl_core:redsand"] = true, + ["mcl_core:sand"] = true, + ["mcl_core:snow"] = true, +} +local storage = minetest.get_mod_storage() +local villages = minetest.deserialize(storage:get_string("villages") or "return {}") or {} +local minetest_get_spawn_level = minetest.get_spawn_level +local minetest_get_node = minetest.get_node +local minetest_find_nodes_in_area = minetest.find_nodes_in_area +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level +local math_pi = math.pi +local math_cos = math.cos +local math_sin = math.sin +local math_floor = math.floor +local math_ceil = math.ceil +local minetest_swap_node = minetest.swap_node +local minetest_registered_nodes = minetest.registered_nodes +local air_offset = chunk_offset_top - 1 +local ground_offset = chunk_offset_bottom + 1 +local surface_search_list = {} +for k, _ in surface_mat do + table.insert(surface_search_list, k) +end -local minetest_get_spawn_level = minetest.get_spawn_level +local function math_round(x) + return (x < 0) and math_ceil(x - 0.5) or math_floor(x + 0.5) +end -dofile(settlements.modpath.."/const.lua") -dofile(settlements.modpath.."/utils.lua") -dofile(settlements.modpath.."/foundation.lua") -dofile(settlements.modpath.."/buildings.lua") -dofile(settlements.modpath.."/paths.lua") +local function find_surface(pos, minp, maxp) + local x, z = pos.x, pos.z + local y_top = maxp.y + local y_max = y_top - air_offset + if #minetest_find_nodes_in_area({x=x, y=y_max, z=z}, {x=x, y=y_top, z=z}, "air") < chunk_offset_top then return end + y_max = y_max - 1 + local y_bottom = minp.y + local y_min = y_bottom + chunk_offset_bottom + local nodes = minetest_find_nodes_in_area({x=x, y=y_min, z=z}, {x=x, y=y_max, z=z}, surface_search_list) + for _, surface_pos in pairs(nodes) do + local node_name_from_above = minetest_get_node({x=surface_pos.x, y=surface_pos.y+1, z=surface_pos.z}).name + if string.find(node_name_from_above, "air" ) + or string.find(node_name_from_above, "snow" ) + or string.find(node_name_from_above, "fern" ) + or string.find(node_name_from_above, "flower") + or string.find(node_name_from_above, "bush" ) + or string.find(node_name_from_above, "tree" ) + or string.find(node_name_from_above, "grass" ) + then return surface_pos, minetese_get_node(surface_pos).name + end +end --- --- load settlements on server --- -settlements_in_world = settlements.load() -settlements.grundstellungen() +local function get_treasures(pr) + local loottable = {{ + stacks_min = 3, + stacks_max = 8, + items = { + { itemstring = "mcl_core:diamond" , weight = 3, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_core:iron_ingot" , weight = 10, amount_min = 1, amount_max = 5 }, + { itemstring = "mcl_core:gold_ingot" , weight = 5, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_farming:bread" , weight = 15, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_core:apple" , weight = 15, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_tools:pick_iron" , weight = 5, }, + { itemstring = "mcl_tools:sword_iron" , weight = 5, }, + { itemstring = "mcl_armor:chestplate_iron" , weight = 5, }, + { itemstring = "mcl_armor:helmet_iron" , weight = 5, }, + { itemstring = "mcl_armor:leggings_iron" , weight = 5, }, + { itemstring = "mcl_armor:boots_iron" , weight = 5, }, + { itemstring = "mcl_core:obsidian" , weight = 5, amount_min = 3, amount_max = 7 }, + { itemstring = "mcl_core:sapling" , weight = 5, amount_min = 3, amount_max = 7 }, + { itemstring = "mcl_mobitems:saddle" , weight = 3, }, + { itemstring = "mobs_mc:iron_horse_armor" , weight = 1, }, + { itemstring = "mobs_mc:gold_horse_armor" , weight = 1, }, + { itemstring = "mobs_mc:diamond_horse_armor", weight = 1, }, + } + }} + local items = mcl_loot.get_multi_loot(loottable, pr) + return items +end +local function fill_chest(pos, pr) + local meta = minetest.get_meta(pos) + minetest.registered_nodes["mcl_chests:chest_small"].on_construct(pos) + local inv = minetest.get_inventory( {type="node", pos=pos} ) + local items = get_treasures(pr) + mcl_loot.fill_inventory(inv, "main", items, pr) +end + +local possible_rotations = {"0", "90", "180", "270"} + +local function get_random_rotation(pr) + return possible_rotations[pr:next(1, #possible_rotations)] +end + +local function create_site_plan(minp, maxp, pr) + local plan = {} + local building_all_info + local center = vector.add(minp, mcl_mapgen.HALF_CS_NODES) + local center_surface, surface_material = find_surface(center, minp, maxp) + if not center_surface then return end + + local number_of_buildings = pr:next(10, 25) + local shuffle = {} + local count_buildings = {} + for i = 1, #schematic_table do + shuffle[i] = i + count_buildings[i] = 0 + end + for i = #shuffle, 2, -1 do + local j = pr:next(1, i) + shuffle[i], shuffle[j] = shuffle[j], shuffle[i] + end + local number_built = 1 + local shuffle_index = pr:next(1, #schematic_table) + + -- first building is townhall in the center + plan[#plan + 1] = { + pos = center_surface, + building = schematic_table[shuffle_index], + rotation = get_random_rotation(pr), + surface_mat = surface_material, + } + count_buildings[1] = count_buildings[1] + 1 + -- now some buildings around in a circle, radius = size of town center + local x, z, r = center_surface.x, center_surface.z, schematic_table[1].hsize + -- draw j circles around center and increase radius by random(2, 5) + for k = 1, 20 do + -- set position on imaginary circle + for j = 0, 360, 15 do + local angle = j * math_pi / 180 + local pos_surface, surface_material = find_surface( + { + x = math_round(x + r * math_cos(angle)), + z = math_round(z + r * math_sin(angle)) + }, + minp, + maxp, + ) + if pos_surface then + shuffle_index = (shuffle_index % (#schematic_table)) + 1 + local schematic_index = shuffle[shuffle_index] + local schematic = schematic_table[schematic_index] + if count_buildings[schematic_index] < schematic.max_num * number_of_buildings then + local hsize2 = schematic.hsize^2 + local is_distance_ok = true + for _, built_house in pairs(plan) do + local pos = built_house.pos + local building = built_house.building + local distance2 = (pos_surface.x - pos.x)^2 + (pos_surface.z - pos.z)^2 + if distance2 < building.hsize^2 or distance < hsize2 then + is_distance_ok = false + break + end + end + if is_distance_ok then + plan[#plan + 1] = { + pos = pos_surface, + building = schematic, + rotation = get_random_rotation(pr), + surface_mat = surface_material, + } + count_buildinigs[schematic_index] = count_buildinigs[schematic_index] + 1 + number_built = number_built + 1 + break + end + end + end + if number_built >= number_of_buildings then + break + end + end + if number_built >= number_of_buildings then + break + end + r = r + pr:next(2, 5) + end + return plan +end + +local function ground(pos, minp, maxp, pr) + local p2 = vector.new(pos) + local cnt = 0 + local mat = "mcl_core:dirt" + p2.y = p2.y - 1 + local min_y = math_max(minp.y, p2.y - pr:next(17,27)) + local stone_level = p2.y - pr:next(2, 4) + while p2.y >= min_y do + if p2.y == stone_level then + mat = "mcl_core:stone" + end + minetest.swap_node(p2, {name=mat}) + p2.y = p2.y - 1 + end +end + +local function terraform(plan, minp, maxp, pr) + local fheight, fwidth, fdepth, schematic_data, pos, rotation + for _, built_house in pairs(plan) do + schematic_data = plan[i].building + pos = plan[i].pos + rotation = plan[i].rotation + if rotation == "0" or rotation = "180" then + fwidth = schematic_data.hwidth + fdepth = schematic_data.hdepth + else + fwidth = schematic_data.hdepth + fdepth = schematic_data.hwidth + end + fheight = schematic_data.hheight + for xi = pos.x, pos.x + fwidth - 1 do + for zi = pos.z, pos.z + fdepth - 1 do + for yi = pos.y, math_min(pos.y + fheight * 3, maxp.y) do + local p = {x = xi, y = yi, z = zi} + if yi == pos.y then + ground(p, pr) + else + minetest_swap_node(p, {name = "air"}) + end + end + end + end + end +end + +local function paths(plan) + local starting_point + local end_point + local distance + starting_point = plan[1].pos + for o, p in pairs(plan) do + end_point = settlement_info[o].pos + local path = minetest.find_path(starting_point, end_point, mcl_mapgen.CS_NODES, 2, 2) + if path then + for _, pos in pairs(path) do + local surface_mat = minetest.get_node(pos).name + if surface_mat == "mcl_core:sand" or surface_mat == "mcl_core:redsand" then + minetest.swap_node(surface_point, {name = "mcl_core:sandstonesmooth2"}) + else + minetest.swap_node(surface_point, {name = "mcl_core:grass_path"}) + end + end + end + end +end + +local function init_nodes(p1, rotation, pr, size) + local p2 = vector.subtract(vector.add(p1, size), 1) + local nodes = minetest.find_nodes_in_area(p1, p2, {"mcl_itemframes:item_frame", "mcl_furnaces:furnace", "mcl_anvils:anvil"}) + for _, pos in pairs(nodes) do + local name = minetest_get_node(pos).name + local def = minetest_registered_nodes[minetest_get_node(pos).name] + def.on_construct(pos) + if name == "mcl_chests:chest" then + fill_chest(pos, pr) + end + end +end + +local function place_schematics(plan, pr) + for _, built_house in pairs(plan) do + local pos = built_house.pos + local rotation = built_house.rotation + local platform_material = built_house.surface_mat + local building = built_house.building.mts + local replace_wall = built_house.building.rplc + local schem_lua = minetest.serialize_schematic(building, + "lua", + {lua_use_comments = false, lua_num_indent_spaces = 0}).." return schematic" + schem_lua = schem_lua:gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") + if replace_wall then + --Note, block substitution isn't matching node names exactly; so nodes that are to be substituted that have the same prefixes cause bugs. + -- Example: Attempting to swap out 'mcl_core:stonebrick'; which has multiple, additional sub-variants: (carved, cracked, mossy). Will currently cause issues, so leaving disabled. + if platform_material == "mcl_core:snow" or platform_material == "mcl_core:dirt_with_grass_snow" or platform_material == "mcl_core:podzol" then + schem_lua = schem_lua:gsub("mcl_core:tree", "mcl_core:sprucetree") + schem_lua = schem_lua:gsub("mcl_core:wood", "mcl_core:sprucewood") + elseif platform_material == "mcl_core:sand" or platform_material == "mcl_core:redsand" then + schem_lua = schem_lua:gsub("mcl_core:tree", "mcl_core:sandstonecarved") + schem_lua = schem_lua:gsub("mcl_core:cobble", "mcl_core:sandstone") + schem_lua = schem_lua:gsub("mcl_core:wood", "mcl_core:sandstonesmooth") + schem_lua = schem_lua:gsub("mcl_core:brick_block", "mcl_core:redsandstone") + end + end + schem_lua = schem_lua:gsub("mcl_core:dirt_with_grass", platform_material) + schem_lua = schem_lua:gsub("mcl_stairs:stair_wood_outer", "mcl_stairs:slab_wood") + schem_lua = schem_lua:gsub("mcl_stairs:stair_stone_rough_outer", "air") + + local schematic = loadstring(schem_lua)() + -- build foundation for the building an make room above + -- place schematic + mcl_structures.place_schematic({ + pos = pos, + schematic = schematic, + rotation = rotation, + on_placed = init_nodes, + pr = pr, + }) + end +end -- -- register block for npc spawn -- minetest.register_node("mcl_villages:stonebrickcarved", { - description = ("Chiseled Stone Village Bricks"), + description = S("Chiseled Stone Village Bricks"), _doc_items_longdesc = doc.sub.items.temp.build, tiles = {"mcl_core_stonebrick_carved.png"}, stack_max = 64, @@ -36,73 +348,59 @@ minetest.register_node("mcl_villages:stonebrickcarved", { -- -- on map generation, try to build a settlement -- -local function build_a_settlement(minp, maxp, blockseed) - minetest.log("action","[mcl_villages] Building village at mapchunk " .. minetest.pos_to_string(minp) .. "..." .. minetest.pos_to_string(maxp) .. ", blockseed = " .. tostring(blockseed)) - local pr = PseudoRandom(blockseed) +local function build_a_settlement(minp, maxp, pr) + minetest.log("action","[mcl_villages] Building village at mapchunk " .. minetest.pos_to_string(minp) .. "..." .. minetest.pos_to_string(maxp)) + local pr = pr or PseudoRandom(mcl_mapgen.get_block_seed3(minp)) + local plan = create_site_plan(minp, maxp, pr) + if not plan then return end + terraform(plan, minp, maxp, pr) + paths(plan) + place_schematics(plan, pr) - -- fill settlement_info with buildings and their data - local settlement_info = settlements.create_site_plan(minp, maxp, pr) - if not settlement_info then return end + local center = vector.add(minp, mcl_mapgen.HALF_CS_NODES) + local center_surface = settlements.find_surface(center) + table.insert(villages, center_surface) + storage:set_string("villages", minetest.serialize(villages)) - -- evaluate settlement_info and prepair terrain - settlements.terraform(settlement_info, pr) + -- save list to file + settlements.save() - -- evaluate settlement_info and build paths between buildings - settlements.paths(settlement_info) - - -- evaluate settlement_info and place schematics - settlements.place_schematics(settlement_info, pr) end -- Disable natural generation in singlenode. -local mg_name = minetest.get_mapgen_setting("mg_name") -local scan_last_node = (mcl_mapgen.CS - 2) * mcl_mapgen.BS - 1 -local scan_offset = mcl_mapgen.BS if mg_name ~= "singlenode" then - mcl_mapgen.register_mapgen(function(minp, maxp, blockseed) - -- local str1 = (maxp.y >= 0 and blockseed % 77 == 17) and "YES" or "no" - -- minetest.log("action","[mcl_villages] " .. str1 .. ": minp=" .. minetest.pos_to_string(minp) .. ", maxp=" .. minetest.pos_to_string(maxp) .. ", blockseed=" .. tostring(blockseed)) - -- don't build settlement underground - local y_max = maxp.y - if y_max < -30 then return end - -- randomly try to build settlements - -- if blockseed % 77 ~= 17 then return end - - -- don't build settlements on (too) uneven terrain - - -- lame and quick replacement of `heightmap` by kay27 - we maybe need to restore `heightmap` analysis if there will be a way for the engine to avoid cavegen conflicts: - -------------------------------------------------------------------------- + local mg_name = minetest.get_mapgen_setting("mg_name") + local scan_last_node = mcl_mapgen.LAST_BLOCK * mcl_mapgen.BS - 1 + local scan_offset = mcl_mapgen.BS + mcl_mapgen.register_mapgen(function(minp, maxp, chunkseed) + if minp.y < minp_min then return end + local pr = PseudoRandom(chunkseed * random_multiply + random_offset) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if (random_number + noise) < struct_threshold then return end local min, max = 9999999, -9999999 - local pr = PseudoRandom(blockseed) for i = 1, pr:next(5,10) do - local pos = vector.add(vector.new(pr:next(0, scan_last_node) + scan_offset, 0, pr:next(0, scan_last_node) + scan_offset), minp) - local surface_point = settlements.find_surface(pos) + local surface_point = settlements.find_surface( + vector.add( + vector.new( + pr:next(scan_offset, scan_last_node) + , + 0, + pr:next(0, scan_last_node) + scan_offset + ), + minp + ) + ) if not surface_point then return end local y = surface_point.y min = math.min(y, min) max = math.max(y, max) end local height_difference = max - min - -------------------------------------------------------------------------- - minetest.chat_send_all("height diff="..height_difference) - if height_difference > 10 then return end - - build_a_settlement(minp, maxp, blockseed) + if height_difference > max_height_difference then return end + build_a_settlement(minp, maxp, chunkkseed) end, mcl_mapgen.order.VILLAGES) end --- manually place villages -if minetest.is_creative_enabled("") then - minetest.register_craftitem("mcl_villages:tool", { - description = "mcl_villages build tool", - inventory_image = "default_tool_woodshovel.png", - -- build ssettlement - on_place = function(itemstack, placer, pointed_thing) - if not pointed_thing.under then return end - local minp = vector.subtract( pointed_thing.under, half_map_chunk_size) - local maxp = vector.add( pointed_thing.under, half_map_chunk_size) - build_a_settlement(minp, maxp, math.random(0,32767)) - end - }) - mcl_wip.register_experimental_item("mcl_villages:tool") + +function mcl_villages.get_villages() + return villages end diff --git a/mods/MAPGEN/mcl_villages/locale/template.txt b/mods/MAPGEN/mcl_villages/locale/template.txt new file mode 100644 index 000000000..e396a8b08 --- /dev/null +++ b/mods/MAPGEN/mcl_villages/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain: mcl_villages +Chiseled Stone Village Bricks= diff --git a/mods/MAPGEN/mcl_villages/mod.conf b/mods/MAPGEN/mcl_villages/mod.conf index c8e0d8149..3f9a67bb3 100644 --- a/mods/MAPGEN/mcl_villages/mod.conf +++ b/mods/MAPGEN/mcl_villages/mod.conf @@ -1,5 +1,5 @@ name = mcl_villages author = Rochambeau, MysticTempest, kay27 description = This mod adds settlements on world generation. -depends = mcl_util, mcl_mapgen_core, mcl_structures, mcl_core, mcl_loot, mcl_mapgen +depends = mcl_util, mcl_structures, mcl_core, mcl_loot, mcl_mapgen optional_depends = mcl_farming, mobs_mc diff --git a/mods/MAPGEN/mcl_villages/paths.lua b/mods/MAPGEN/mcl_villages/paths.lua deleted file mode 100644 index 63f2ba146..000000000 --- a/mods/MAPGEN/mcl_villages/paths.lua +++ /dev/null @@ -1,91 +0,0 @@ -------------------------------------------------------------------------------- --- generate paths between buildings -------------------------------------------------------------------------------- -function settlements.paths(settlement_info) - local starting_point - local end_point - local distance - --for k,v in pairs(settlement_info) do - starting_point = settlement_info[1]["pos"] - for o,p in pairs(settlement_info) do - - end_point = settlement_info[o]["pos"] - if starting_point ~= end_point - then - -- loop until end_point is reched (distance == 0) - while true do - - -- define surrounding pos to starting_point - local north_p = {x=starting_point.x+1, y=starting_point.y, z=starting_point.z} - local south_p = {x=starting_point.x-1, y=starting_point.y, z=starting_point.z} - local west_p = {x=starting_point.x, y=starting_point.y, z=starting_point.z+1} - local east_p = {x=starting_point.x, y=starting_point.y, z=starting_point.z-1} - -- measure distance to end_point - local dist_north_p_to_end = math.sqrt( - ((north_p.x - end_point.x)*(north_p.x - end_point.x))+ - ((north_p.z - end_point.z)*(north_p.z - end_point.z)) - ) - local dist_south_p_to_end = math.sqrt( - ((south_p.x - end_point.x)*(south_p.x - end_point.x))+ - ((south_p.z - end_point.z)*(south_p.z - end_point.z)) - ) - local dist_west_p_to_end = math.sqrt( - ((west_p.x - end_point.x)*(west_p.x - end_point.x))+ - ((west_p.z - end_point.z)*(west_p.z - end_point.z)) - ) - local dist_east_p_to_end = math.sqrt( - ((east_p.x - end_point.x)*(east_p.x - end_point.x))+ - ((east_p.z - end_point.z)*(east_p.z - end_point.z)) - ) - -- evaluate which pos is closer to the end_point - if dist_north_p_to_end <= dist_south_p_to_end and - dist_north_p_to_end <= dist_west_p_to_end and - dist_north_p_to_end <= dist_east_p_to_end - then - starting_point = north_p - distance = dist_north_p_to_end - - elseif dist_south_p_to_end <= dist_north_p_to_end and - dist_south_p_to_end <= dist_west_p_to_end and - dist_south_p_to_end <= dist_east_p_to_end - then - starting_point = south_p - distance = dist_south_p_to_end - - elseif dist_west_p_to_end <= dist_north_p_to_end and - dist_west_p_to_end <= dist_south_p_to_end and - dist_west_p_to_end <= dist_east_p_to_end - then - starting_point = west_p - distance = dist_west_p_to_end - - elseif dist_east_p_to_end <= dist_north_p_to_end and - dist_east_p_to_end <= dist_south_p_to_end and - dist_east_p_to_end <= dist_west_p_to_end - then - starting_point = east_p - distance = dist_east_p_to_end - end - -- find surface of new starting point - local surface_point, surface_mat = settlements.find_surface(starting_point) - -- replace surface node with mcl_core:grass_path - if surface_point - then - if surface_mat == "mcl_core:sand" or surface_mat == "mcl_core:redsand" then - minetest.swap_node(surface_point,{name="mcl_core:sandstonesmooth2"}) - else - minetest.swap_node(surface_point,{name="mcl_core:grass_path"}) - end - -- don't set y coordinate, surface might be too low or high - starting_point.x = surface_point.x - starting_point.z = surface_point.z - end - if distance <= 1 or - starting_point == end_point - then - break - end - end - end - end -end diff --git a/mods/MAPGEN/mcl_villages/utils.lua b/mods/MAPGEN/mcl_villages/utils.lua deleted file mode 100644 index 589b04403..000000000 --- a/mods/MAPGEN/mcl_villages/utils.lua +++ /dev/null @@ -1,198 +0,0 @@ -local get_node = minetest.get_node - -------------------------------------------------------------------------------- --- function to copy tables -------------------------------------------------------------------------------- -function settlements.shallowCopy(original) - local copy = {} - for key, value in pairs(original) do - copy[key] = value - end - return copy -end --- --- --- -function settlements.round(num, numDecimalPlaces) - local mult = 10^(numDecimalPlaces or 0) - return math.floor(num * mult + 0.5) / mult -end - -------------------------------------------------------------------------------- --- function to find surface block y coordinate --- returns surface postion -------------------------------------------------------------------------------- -function settlements.find_surface(pos) - local p6 = vector.new(pos) - p6.y = mcl_mapgen.get_chunk_ending(p6.y) - local ymin = mcl_mapgen.get_chunk_beginning(p6.y) - local node = get_node(p6) - minetest.chat_send_all(node.name) - if node.name ~= "air" then return end - while true do - p6.y = p6.y - 1 - if p6.y < ymin then return end - node = get_node(p6) - if settlements.surface_mat[node.name] then - break - end - end - minetest.chat_send_all(node.name) - - local prev_node = minetest.get_node(vector.new(p6.x, p6.y + 1, p6.z)) - local name = prev_node.name - if (string.find(name, "air") - or string.find(name, "snow") - or string.find(name, "fern") - or string.find(name, "flower") - or string.find(name, "bush") - or string.find(name, "tree") - or string.find(name, "grass") - ) then - minetest.chat_send_all("found! "..node.name..", "..minetest.pos_to_string(p6)) - return p6, node.name - end -end -------------------------------------------------------------------------------- --- check distance for new building -------------------------------------------------------------------------------- -function settlements.check_distance(settlement_info, building_pos, building_size) - local distance - for i, built_house in ipairs(settlement_info) do - distance = math.sqrt( - ((building_pos.x - built_house["pos"].x)*(building_pos.x - built_house["pos"].x))+ - ((building_pos.z - built_house["pos"].z)*(building_pos.z - built_house["pos"].z))) - if distance < building_size or distance < built_house["hsize"] then - return false - end - end - return true -end -------------------------------------------------------------------------------- --- save list of generated settlements -------------------------------------------------------------------------------- -function settlements.save() - local file = io.open(minetest.get_worldpath().."/settlements.txt", "w") - if file then - file:write(minetest.serialize(settlements_in_world)) - file:close() - end -end -------------------------------------------------------------------------------- --- load list of generated settlements -------------------------------------------------------------------------------- -function settlements.load() - local file = io.open(minetest.get_worldpath().."/settlements.txt", "r") - if file then - local table = minetest.deserialize(file:read("*all")) - if type(table) == "table" then - return table - end - end - return {} -end -------------------------------------------------------------------------------- --- fill chests -------------------------------------------------------------------------------- -function settlements.fill_chest(pos, pr) - -- initialize chest (mts chests don't have meta) - local meta = minetest.get_meta(pos) - if meta:get_string("infotext") ~= "Chest" then - -- For MineClone2 0.70 or before - -- minetest.registered_nodes["mcl_chests:chest"].on_construct(pos) - -- - -- For MineClone2 after commit 09ab1482b5 (the new entity chests) - minetest.registered_nodes["mcl_chests:chest_small"].on_construct(pos) - end - -- fill chest - local inv = minetest.get_inventory( {type="node", pos=pos} ) - - local function get_treasures(prand) - local loottable = {{ - stacks_min = 3, - stacks_max = 8, - items = { - { itemstring = "mcl_core:diamond", weight = 3, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_core:iron_ingot", weight = 10, amount_min = 1, amount_max = 5 }, - { itemstring = "mcl_core:gold_ingot", weight = 5, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_farming:bread", weight = 15, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_core:apple", weight = 15, amount_min = 1, amount_max = 3 }, - { itemstring = "mcl_tools:pick_iron", weight = 5 }, - { itemstring = "mcl_tools:sword_iron", weight = 5 }, - { itemstring = "mcl_armor:chestplate_iron", weight = 5 }, - { itemstring = "mcl_armor:helmet_iron", weight = 5 }, - { itemstring = "mcl_armor:leggings_iron", weight = 5 }, - { itemstring = "mcl_armor:boots_iron", weight = 5 }, - { itemstring = "mcl_core:obsidian", weight = 5, amount_min = 3, amount_max = 7 }, - { itemstring = "mcl_core:sapling", weight = 5, amount_min = 3, amount_max = 7 }, - { itemstring = "mcl_mobitems:saddle", weight = 3 }, - { itemstring = "mobs_mc:iron_horse_armor", weight = 1 }, - { itemstring = "mobs_mc:gold_horse_armor", weight = 1 }, - { itemstring = "mobs_mc:diamond_horse_armor", weight = 1 }, - } - }} - local items = mcl_loot.get_multi_loot(loottable, prand) - return items - end - - local items = get_treasures(pr) - mcl_loot.fill_inventory(inv, "main", items, pr) -end - -------------------------------------------------------------------------------- --- initialize furnace -------------------------------------------------------------------------------- -function settlements.initialize_furnace(pos) - -- find chests within radius - local furnacepos = minetest.find_node_near(pos, - 7, --radius - {"mcl_furnaces:furnace"}) - -- initialize furnacepos (mts furnacepos don't have meta) - if furnacepos - then - local meta = minetest.get_meta(furnacepos) - if meta:get_string("infotext") ~= "furnace" - then - minetest.registered_nodes["mcl_furnaces:furnace"].on_construct(furnacepos) - end - end -end -------------------------------------------------------------------------------- --- initialize anvil -------------------------------------------------------------------------------- -function settlements.initialize_anvil(pos) - -- find chests within radius - local anvilpos = minetest.find_node_near(pos, - 7, --radius - {"mcl_anvils:anvil"}) - -- initialize anvilpos (mts anvilpos don't have meta) - if anvilpos - then - local meta = minetest.get_meta(anvilpos) - if meta:get_string("infotext") ~= "anvil" - then - minetest.registered_nodes["mcl_anvils:anvil"].on_construct(anvilpos) - end - end -end -------------------------------------------------------------------------------- --- randomize table -------------------------------------------------------------------------------- -function shuffle(tbl, pr) - local table = settlements.shallowCopy(tbl) - local size = #table - for i = size, 1, -1 do - local rand = pr:next(1, size) - table[i], table[rand] = table[rand], table[i] - end - return table -end -------------------------------------------------------------------------------- --- Set array to list --- https://stackoverflow.com/questions/656199/search-for-an-item-in-a-lua-list -------------------------------------------------------------------------------- -function settlements.Set (list) - local set = {} - for _, l in ipairs(list) do set[l] = true end - return set -end From 04fc9217ec754b8bb63f60a1171a834c31550341 Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 8 Feb 2022 08:12:53 +0400 Subject: [PATCH 005/521] Make new villages run --- mods/MAPGEN/mcl_villages/init.lua | 74 ++++++++++++++++--------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 6f563e8a5..3a0bcfa7c 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -44,6 +44,8 @@ local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_le local math_pi = math.pi local math_cos = math.cos local math_sin = math.sin +local math_min = math.min +local math_max = math.max local math_floor = math.floor local math_ceil = math.ceil local minetest_swap_node = minetest.swap_node @@ -51,7 +53,7 @@ local minetest_registered_nodes = minetest.registered_nodes local air_offset = chunk_offset_top - 1 local ground_offset = chunk_offset_bottom + 1 local surface_search_list = {} -for k, _ in surface_mat do +for k, _ in pairs(surface_mat) do table.insert(surface_search_list, k) end @@ -77,7 +79,9 @@ local function find_surface(pos, minp, maxp) or string.find(node_name_from_above, "bush" ) or string.find(node_name_from_above, "tree" ) or string.find(node_name_from_above, "grass" ) - then return surface_pos, minetese_get_node(surface_pos).name + then + return surface_pos, minetest_get_node(surface_pos).name + end end end @@ -165,7 +169,7 @@ local function create_site_plan(minp, maxp, pr) z = math_round(z + r * math_sin(angle)) }, minp, - maxp, + maxp ) if pos_surface then shuffle_index = (shuffle_index % (#schematic_table)) + 1 @@ -178,7 +182,7 @@ local function create_site_plan(minp, maxp, pr) local pos = built_house.pos local building = built_house.building local distance2 = (pos_surface.x - pos.x)^2 + (pos_surface.z - pos.z)^2 - if distance2 < building.hsize^2 or distance < hsize2 then + if distance2 < building.hsize^2 or distance2 < hsize2 then is_distance_ok = false break end @@ -190,7 +194,7 @@ local function create_site_plan(minp, maxp, pr) rotation = get_random_rotation(pr), surface_mat = surface_material, } - count_buildinigs[schematic_index] = count_buildinigs[schematic_index] + 1 + count_buildings[schematic_index] = count_buildings[schematic_index] + 1 number_built = number_built + 1 break end @@ -227,10 +231,10 @@ end local function terraform(plan, minp, maxp, pr) local fheight, fwidth, fdepth, schematic_data, pos, rotation for _, built_house in pairs(plan) do - schematic_data = plan[i].building - pos = plan[i].pos - rotation = plan[i].rotation - if rotation == "0" or rotation = "180" then + schematic_data = built_house.building + pos = built_house.pos + rotation = built_house.rotation + if rotation == "0" or rotation == "180" then fwidth = schematic_data.hwidth fdepth = schematic_data.hdepth else @@ -243,7 +247,7 @@ local function terraform(plan, minp, maxp, pr) for yi = pos.y, math_min(pos.y + fheight * 3, maxp.y) do local p = {x = xi, y = yi, z = zi} if yi == pos.y then - ground(p, pr) + ground(p, minp, maxp, pr) else minetest_swap_node(p, {name = "air"}) end @@ -253,21 +257,24 @@ local function terraform(plan, minp, maxp, pr) end end -local function paths(plan) - local starting_point - local end_point - local distance - starting_point = plan[1].pos - for o, p in pairs(plan) do - end_point = settlement_info[o].pos - local path = minetest.find_path(starting_point, end_point, mcl_mapgen.CS_NODES, 2, 2) +local function paths(plan, minp, maxp) + local starting_point = find_surface({x = plan[1].pos.x + 2, z = plan[1].pos.z + 2}, minp, maxp) + if not starting_point then return end + starting_point.y = starting_point.y + 1 + for i = 2, #plan do + local p = plan[i] + local end_point = p.pos + end_point.y = end_point.y + 1 + local path = minetest.find_path(starting_point, end_point, mcl_mapgen.CS_NODES, 2, 2, "A*_noprefetch") if path then for _, pos in pairs(path) do + pos.y = pos.y - 1 + local surface_mat = minetest.get_node(pos).name if surface_mat == "mcl_core:sand" or surface_mat == "mcl_core:redsand" then - minetest.swap_node(surface_point, {name = "mcl_core:sandstonesmooth2"}) + minetest.swap_node(pos, {name = "mcl_core:sandstonesmooth2"}) else - minetest.swap_node(surface_point, {name = "mcl_core:grass_path"}) + minetest.swap_node(pos, {name = "mcl_core:grass_path"}) end end end @@ -353,18 +360,11 @@ local function build_a_settlement(minp, maxp, pr) local pr = pr or PseudoRandom(mcl_mapgen.get_block_seed3(minp)) local plan = create_site_plan(minp, maxp, pr) if not plan then return end + paths(plan, minp, maxp) terraform(plan, minp, maxp, pr) - paths(plan) place_schematics(plan, pr) - - local center = vector.add(minp, mcl_mapgen.HALF_CS_NODES) - local center_surface = settlements.find_surface(center) - table.insert(villages, center_surface) + table.insert(villages, minp) storage:set_string("villages", minetest.serialize(villages)) - - -- save list to file - settlements.save() - end -- Disable natural generation in singlenode. @@ -375,27 +375,29 @@ if mg_name ~= "singlenode" then mcl_mapgen.register_mapgen(function(minp, maxp, chunkseed) if minp.y < minp_min then return end local pr = PseudoRandom(chunkseed * random_multiply + random_offset) + local random_number = pr:next(1, chance_per_chunk) local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier if (random_number + noise) < struct_threshold then return end local min, max = 9999999, -9999999 for i = 1, pr:next(5,10) do - local surface_point = settlements.find_surface( + local surface_point = find_surface( vector.add( vector.new( - pr:next(scan_offset, scan_last_node) + , + pr:next(scan_offset, scan_last_node), 0, - pr:next(0, scan_last_node) + scan_offset + pr:next(scan_offset, scan_last_node) ), minp - ) + ), + minp, + maxp ) if not surface_point then return end local y = surface_point.y - min = math.min(y, min) - max = math.max(y, max) + min = math_min(y, min) + max = math_max(y, max) end local height_difference = max - min - minetest.chat_send_all("height diff="..height_difference) if height_difference > max_height_difference then return end build_a_settlement(minp, maxp, chunkkseed) end, mcl_mapgen.order.VILLAGES) From f449ba8370cae9cbb41d87a87426242ade64a2fb Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 9 Feb 2022 06:34:20 +0400 Subject: [PATCH 006/521] Fix terraform --- mods/MAPGEN/mcl_villages/README.md | 22 +++ mods/MAPGEN/mcl_villages/README.txt | 45 ------ mods/MAPGEN/mcl_villages/init.lua | 133 ++++++++++-------- .../mcl_villages/locale/mcl_villages.ru.tr | 2 + mods/MAPGEN/mcl_villages/mod.conf | 2 +- 5 files changed, 103 insertions(+), 101 deletions(-) create mode 100644 mods/MAPGEN/mcl_villages/README.md delete mode 100644 mods/MAPGEN/mcl_villages/README.txt create mode 100644 mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr diff --git a/mods/MAPGEN/mcl_villages/README.md b/mods/MAPGEN/mcl_villages/README.md new file mode 100644 index 000000000..3d1531fb3 --- /dev/null +++ b/mods/MAPGEN/mcl_villages/README.md @@ -0,0 +1,22 @@ +# MCL_Villages version 1.0 +-------------------------- +Originally a fork of Rochambeau's "Settlements", fully rewritten for MineClone 5. + +## Using the mod +---------------- +This mod adds villages on world generation. + +## Credits +---------- + * This mod is originally based on "ruins" by BlockMen + + * Completely new schematics for MineClone2: + * MysticTempest - CC-BY-SA 4.0 + + * Basic conversion of Settlements mod for compatibility with MineClone2: MysticTempest + + * Reimplemention: kay27 + +## License +---------- + * License of source code: WTFPL diff --git a/mods/MAPGEN/mcl_villages/README.txt b/mods/MAPGEN/mcl_villages/README.txt deleted file mode 100644 index 7573084d8..000000000 --- a/mods/MAPGEN/mcl_villages/README.txt +++ /dev/null @@ -1,45 +0,0 @@ -MCL_Villages: -============================ -A fork of Rochambeau's "Settlements" mod converted for use in MineClone5. - --------------- -Using the mod: --------------- -This mod adds settlements on world generation. - -And, in Creative Mode; also comes with a debug tool for spawning in villages. - - -------------- -MCL2 Credits: -------------- -Code forked from: https://github.com/MysticTempest/settlements/tree/mcl_villages - Commit: e24b4be -================================================================================ -Basic conversion of Settlements mod for compatibility with MineClone2, plus new schematics: MysticTempest - -Seed-based Village Generation, multi-threading, bugfixes: kay27 - - - -========================= -version: 0.1 alpha - -License of source code: WTFPL ------------------------------ -(c) Copyright Rochambeau (2018) - -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 Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. - - -Credits: --------------- -This mod is based on "ruins" by BlockMen - -Completely new schematics for MineClone2: -MysticTempest - CC-BY-SA 4.0 - diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 3a0bcfa7c..6009539da 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -15,7 +15,7 @@ local basic_pseudobiome_villages = minetest.settings:get_bool("basic_pseudobiome local schem_path = modpath .. "/schematics/" local schematic_table = { {name = "large_house", mts = schem_path.."large_house.mts", hwidth = 11, hdepth = 12, hheight = 9, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, - {name = "blacksmith", mts = schem_path.."blacksmith.mts", hwidth = 7, hdepth = 7, hheight = 13, hsize = 13, max_num = 0.055, rplc = basic_pseudobiome_villages }, + {name = "blacksmith", mts = schem_path.."blacksmith.mts", hwidth = 7, hdepth = 11, hheight = 7, hsize = 13, max_num = 0.055, rplc = basic_pseudobiome_villages }, {name = "butcher", mts = schem_path.."butcher.mts", hwidth = 11, hdepth = 8, hheight = 10, hsize = 14, max_num = 0.03 , rplc = basic_pseudobiome_villages }, {name = "church", mts = schem_path.."church.mts", hwidth = 13, hdepth = 13, hheight = 14, hsize = 15, max_num = 0.04 , rplc = basic_pseudobiome_villages }, {name = "farm", mts = schem_path.."farm.mts", hwidth = 7, hdepth = 7, hheight = 13, hsize = 13, max_num = 0.1 , rplc = basic_pseudobiome_villages }, @@ -27,13 +27,13 @@ local schematic_table = { {name = "well", mts = schem_path.."well.mts", hwidth = 6, hdepth = 8, hheight = 6, hsize = 10, max_num = 0.045, rplc = basic_pseudobiome_villages }, } local surface_mat = { - ["mcl_core:dirt_with_dry_grass"] = true, - ["mcl_core:dirt_with_grass"] = true, - ["mcl_core:dirt_with_grass_snow"] = true, - ["mcl_core:podzol"] = true, - ["mcl_core:redsand"] = true, - ["mcl_core:sand"] = true, - ["mcl_core:snow"] = true, + ["mcl_core:dirt_with_dry_grass"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, + ["mcl_core:dirt_with_grass"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, + ["mcl_core:dirt_with_grass_snow"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, + ["mcl_core:podzol"] = { top = "mcl_core:podzol", bottom = "mcl_core:stone" }, + ["mcl_core:redsand"] = { top = "mcl_core:redsand", bottom = "mcl_core:redsandstone" }, + ["mcl_core:sand"] = { top = "mcl_core:sand", bottom = "mcl_core:sandstone" }, + ["mcl_core:snow"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, } local storage = minetest.get_mod_storage() local villages = minetest.deserialize(storage:get_string("villages") or "return {}") or {} @@ -48,8 +48,10 @@ local math_min = math.min local math_max = math.max local math_floor = math.floor local math_ceil = math.ceil +local string_find = string.find local minetest_swap_node = minetest.swap_node local minetest_registered_nodes = minetest.registered_nodes +local minetest_bulk_set_node = minetest.bulk_set_node local air_offset = chunk_offset_top - 1 local ground_offset = chunk_offset_bottom + 1 local surface_search_list = {} @@ -72,13 +74,13 @@ local function find_surface(pos, minp, maxp) local nodes = minetest_find_nodes_in_area({x=x, y=y_min, z=z}, {x=x, y=y_max, z=z}, surface_search_list) for _, surface_pos in pairs(nodes) do local node_name_from_above = minetest_get_node({x=surface_pos.x, y=surface_pos.y+1, z=surface_pos.z}).name - if string.find(node_name_from_above, "air" ) - or string.find(node_name_from_above, "snow" ) - or string.find(node_name_from_above, "fern" ) - or string.find(node_name_from_above, "flower") - or string.find(node_name_from_above, "bush" ) - or string.find(node_name_from_above, "tree" ) - or string.find(node_name_from_above, "grass" ) + if string_find(node_name_from_above, "air" ) + or string_find(node_name_from_above, "snow" ) + or string_find(node_name_from_above, "fern" ) + or string_find(node_name_from_above, "flower") + or string_find(node_name_from_above, "bush" ) + or string_find(node_name_from_above, "tree" ) + or string_find(node_name_from_above, "grass" ) then return surface_pos, minetest_get_node(surface_pos).name end @@ -212,49 +214,69 @@ local function create_site_plan(minp, maxp, pr) return plan end -local function ground(pos, minp, maxp, pr) - local p2 = vector.new(pos) - local cnt = 0 - local mat = "mcl_core:dirt" - p2.y = p2.y - 1 - local min_y = math_max(minp.y, p2.y - pr:next(17,27)) - local stone_level = p2.y - pr:next(2, 4) - while p2.y >= min_y do - if p2.y == stone_level then - mat = "mcl_core:stone" - end - minetest.swap_node(p2, {name=mat}) - p2.y = p2.y - 1 - end -end - -local function terraform(plan, minp, maxp, pr) - local fheight, fwidth, fdepth, schematic_data, pos, rotation - for _, built_house in pairs(plan) do - schematic_data = built_house.building - pos = built_house.pos - rotation = built_house.rotation - if rotation == "0" or rotation == "180" then - fwidth = schematic_data.hwidth - fdepth = schematic_data.hdepth - else - fwidth = schematic_data.hdepth - fdepth = schematic_data.hwidth - end - fheight = schematic_data.hheight - for xi = pos.x, pos.x + fwidth - 1 do - for zi = pos.z, pos.z + fdepth - 1 do - for yi = pos.y, math_min(pos.y + fheight * 3, maxp.y) do - local p = {x = xi, y = yi, z = zi} - if yi == pos.y then - ground(p, minp, maxp, pr) - else - minetest_swap_node(p, {name = "air"}) +local function ground(pos1, pos2, minp, maxp, pr, mat) + local pos1, pos2 = pos1, pos2 + local x1, x2, z1, z2, y = pos1.x, pos2.x, pos1.z, pos2.z, pos1.y - 1 + local pos_list_dirt = {} + local pos_list_stone = {} + for x0 = x1, x2 do + for z0 = z1, z2 do + local finish = false + local y1 = y - pr:next(2, 4) + for y0 = y, y1, -1 do + local p0 = {x = x0, y = y0, z = z0} + local node = minetest_get_node(p0) + local node_name = node.name + if node_name ~= "air" and not string_find(node_name, "water") and not string_find(node_name, "flower") then + finish = true + break + end + pos_list_dirt[#pos_list_dirt + 1] = p0 + end + if not finish then + for y0 = y1 - 1, math_max(minp.y, y - pr:next(17, 27)), -1 do + local p0 = {x = x0, y = y0, z = z0} + local node = minetest_get_node(p0) + local node_name = node.name + if node_name ~= "air" and not string_find(node_name, "water") and not string_find(node_name, "flower") then + break end + pos_list_stone[#pos_list_stone + 1] = p0 end end end end + minetest_bulk_set_node(pos_list_dirt, {name = surface_mat[mat].top}) + minetest_bulk_set_node(pos_list_stone, {name = surface_mat[mat].bottom}) +end + +local function terraform(plan, minp, maxp, pr) + local fheight, fwidth, fdepth, schematic_data, pos, rotation, swap_wd, build_material + for _, built_house in pairs(plan) do + schematic_data = built_house.building + pos = built_house.pos + rotation = built_house.rotation + build_material = built_house.surface_mat + swap_wd = rotation == "90" or rotation == "270" + fwidth = swap_wd and schematic_data.hdepth or schematic_data.hwidth + fdepth = swap_wd and schematic_data.hwidth or schematic_data.hdepth + fheight = schematic_data.hheight + local pos2 = { + x = pos.x + fwidth - 1, + y = math_min(pos.y + fheight * 3, maxp.y), + z = pos.z + fdepth - 1 + } + ground(pos, {x = pos2.x, y = pos.y, z = pos2.z}, minp, maxp, pr, build_material) + local node_list = {} + for xi = pos.x, pos2.x do + for zi = pos.z, pos2.z do + for yi = pos.y, pos2.y do + node_list[#node_list + 1] = {x = xi, y = yi, z = zi} + end + end + end + minetest_bulk_set_node(node_list, {name = "air"}) + end end local function paths(plan, minp, maxp) @@ -283,12 +305,13 @@ end local function init_nodes(p1, rotation, pr, size) local p2 = vector.subtract(vector.add(p1, size), 1) - local nodes = minetest.find_nodes_in_area(p1, p2, {"mcl_itemframes:item_frame", "mcl_furnaces:furnace", "mcl_anvils:anvil"}) + local nodes = minetest.find_nodes_in_area(p1, p2, {"mcl_itemframes:item_frame", "mcl_furnaces:furnace", "mcl_anvils:anvil", "mcl_chests:chest"}) for _, pos in pairs(nodes) do local name = minetest_get_node(pos).name local def = minetest_registered_nodes[minetest_get_node(pos).name] def.on_construct(pos) if name == "mcl_chests:chest" then + minetest_swap_node(pos, {name = "mcl_chests:chest_small"}) fill_chest(pos, pr) end end @@ -363,7 +386,7 @@ local function build_a_settlement(minp, maxp, pr) paths(plan, minp, maxp) terraform(plan, minp, maxp, pr) place_schematics(plan, pr) - table.insert(villages, minp) + villages[#villages + 1] = minp storage:set_string("villages", minetest.serialize(villages)) end diff --git a/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr b/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr new file mode 100644 index 000000000..467f31121 --- /dev/null +++ b/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_villages +Chiseled Stone Village Bricks=Точёный каменный блок из деревни diff --git a/mods/MAPGEN/mcl_villages/mod.conf b/mods/MAPGEN/mcl_villages/mod.conf index 3f9a67bb3..eb4a5d080 100644 --- a/mods/MAPGEN/mcl_villages/mod.conf +++ b/mods/MAPGEN/mcl_villages/mod.conf @@ -1,5 +1,5 @@ name = mcl_villages author = Rochambeau, MysticTempest, kay27 -description = This mod adds settlements on world generation. +description = This mod adds villages on world generation. depends = mcl_util, mcl_structures, mcl_core, mcl_loot, mcl_mapgen optional_depends = mcl_farming, mobs_mc From 200536b41601bf1ceb4bfede3982bbb1ff4c3cc3 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 01:20:30 +0000 Subject: [PATCH 007/521] #198 Fix a crash, step 1 --- mods/HELP/doc/doc/init.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index 304900753..df675bf1d 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -1124,10 +1124,10 @@ minetest.register_chatcommand("helpform", { } ) -minetest.register_on_joinplayer(function(player) - local playername = player:get_player_name() +minetest.register_on_authplayer(function(playername, ip, is_success) + if not is_success then return end local playerdata = doc.data.players[playername] - if playerdata == nil then + if not playerdata then -- Initialize player data doc.data.players[playername] = {} playerdata = doc.data.players[playername] @@ -1171,7 +1171,9 @@ minetest.register_on_joinplayer(function(player) playerdata.stored_data.revealed_count[cid] = rc end end +end +minetest.register_on_joinplayer(function(player) -- Add button for Inventory++ if mod_inventory_plus then inventory_plus.register_button(player, "doc_inventory_plus", S("Help")) From eaa8df9e55963e0536e7f3cbd097969fc1255b7a Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 01:23:01 +0000 Subject: [PATCH 008/521] #198 Fix a crash, step 2 --- mods/HUD/mcl_bossbars/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_bossbars/init.lua b/mods/HUD/mcl_bossbars/init.lua index f1d99e013..be2ed2a2a 100644 --- a/mods/HUD/mcl_bossbars/init.lua +++ b/mods/HUD/mcl_bossbars/init.lua @@ -102,8 +102,8 @@ function mcl_bossbars.update_boss(object, name, color) end end -minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() +minetest.register_on_authplayer(function(name, ip, is_success) + if not is_success then return end mcl_bossbars.huds[name] = {} mcl_bossbars.bars[name] = {} end) From ce0e643cad119fd8f5125a71a2a3a441afa5277f Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 01:23:55 +0000 Subject: [PATCH 009/521] #198 Fix a crash, step 3 --- mods/HELP/doc/doc/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index df675bf1d..fc684246b 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -1171,7 +1171,7 @@ minetest.register_on_authplayer(function(playername, ip, is_success) playerdata.stored_data.revealed_count[cid] = rc end end -end +end) minetest.register_on_joinplayer(function(player) -- Add button for Inventory++ From 8b441a81567b75f01439b690aea651144f951cbb Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 01:36:38 +0000 Subject: [PATCH 010/521] #198 Fix a crash, step 4 --- mods/ITEMS/mcl_shields/init.lua | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_shields/init.lua b/mods/ITEMS/mcl_shields/init.lua index 913a7005d..ef0e7ba43 100644 --- a/mods/ITEMS/mcl_shields/init.lua +++ b/mods/ITEMS/mcl_shields/init.lua @@ -2,6 +2,8 @@ local minetest, math, vector = minetest, math, vector local modname = minetest.get_current_modname() local S = minetest.get_translator(modname) +local possible_hackers = {} + mcl_shields = { types = { mob = true, @@ -287,8 +289,7 @@ local function update_shield_entity(player, blocking, i) end minetest.register_globalstep(function(dtime) - for _, player in pairs(minetest.get_connected_players()) do - + for _, player in pairs(minetest.get_connected_players()) do if not possible_hackers[player:get_player_name()] then handle_blocking(player) local blocking, shieldstack = mcl_shields.is_blocking(player) @@ -360,7 +361,7 @@ minetest.register_globalstep(function(dtime) for i = 1, 2 do update_shield_entity(player, blocking, i) end - end + end end end) minetest.register_on_dieplayer(function(player) @@ -462,7 +463,13 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv return craft_banner_on_shield(itemstack, player, old_craft_grid, craft_inv) end) +minetest.register_on_authplayer(function(name, ip, is_success) + if not is_success then return end + possible_hackers[name] = true +end) + minetest.register_on_joinplayer(function(player) + possible_hackers[player:get_player_name()] = nil mcl_shields.players[player] = { shields = {}, blocking = 0, From e9e3479fb3d7a5225aa31918ebe7e34a38cd45a2 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 01:41:26 +0000 Subject: [PATCH 011/521] #198 Fix a crash, step 5 --- mods/ITEMS/mcl_fireworks/register.lua | 3 ++- mods/PLAYER/mcl_anticheat/init.lua | 2 +- mods/PLAYER/mcl_playerplus/init.lua | 11 +++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_fireworks/register.lua b/mods/ITEMS/mcl_fireworks/register.lua index 23066b663..5ea31a798 100644 --- a/mods/ITEMS/mcl_fireworks/register.lua +++ b/mods/ITEMS/mcl_fireworks/register.lua @@ -10,7 +10,8 @@ local function register_rocket(n, duration, force) inventory_image = "mcl_fireworks_rocket.png", stack_max = 64, on_use = function(itemstack, user, pointed_thing) - local elytra = mcl_playerplus.elytra[user] + if not user:is_player then return end + local elytra = mcl_playerplus.elytra[user:get_player_name()] if elytra.active and elytra.rocketing <= 0 then elytra.rocketing = duration if not minetest.is_creative_enabled(user:get_player_name()) then diff --git a/mods/PLAYER/mcl_anticheat/init.lua b/mods/PLAYER/mcl_anticheat/init.lua index 9f4078007..f4a3ac909 100644 --- a/mods/PLAYER/mcl_anticheat/init.lua +++ b/mods/PLAYER/mcl_anticheat/init.lua @@ -39,7 +39,7 @@ local function update_player(player_object) local feet_y, head_y = floor(pos.y-0.1), floor(pos.y + 1.49) if mcl_playerplus.elytra then - local elytra = mcl_playerplus.elytra[player_object] + local elytra = mcl_playerplus.elytra[name] if elytra and elytra.active then return end diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 720c11525..88107442e 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -275,7 +275,7 @@ minetest.register_globalstep(function(dtime) local fly_pos = player:get_pos() local fly_node = minetest.get_node({x = fly_pos.x, y = fly_pos.y - 0.5, z = fly_pos.z}).name - local elytra = mcl_playerplus.elytra[player] + local elytra = mcl_playerplus.elytra[name] elytra.active = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" and not player:get_attach() @@ -625,15 +625,14 @@ minetest.register_globalstep(function(dtime) end) -- set to blank on join (for 3rd party mods) -minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() - +minetest.register_on_authplayer(function(name, ip, is_success) + if not is_success then return end mcl_playerplus_internal[name] = { lastPos = nil, swimDistance = 0, jump_cooldown = -1, -- Cooldown timer for jumping, we need this to prevent the jump exhaustion to increase rapidly } - mcl_playerplus.elytra[player] = {active = false, rocketing = 0} + mcl_playerplus.elytra[name] = {active = false, rocketing = 0} end) -- clear when player leaves @@ -641,7 +640,7 @@ minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() mcl_playerplus_internal[name] = nil - mcl_playerplus.elytra[player] = nil + mcl_playerplus.elytra[name] = nil end) -- Don't change HP if the player falls in the water or through End Portal: From 3984c72bbc6fdffb1ff2022fdf3cf45d070be24c Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 01:43:05 +0000 Subject: [PATCH 012/521] #198 Fix a crash, step 6 --- mods/ITEMS/mcl_fireworks/register.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_fireworks/register.lua b/mods/ITEMS/mcl_fireworks/register.lua index 5ea31a798..f113a6678 100644 --- a/mods/ITEMS/mcl_fireworks/register.lua +++ b/mods/ITEMS/mcl_fireworks/register.lua @@ -10,7 +10,7 @@ local function register_rocket(n, duration, force) inventory_image = "mcl_fireworks_rocket.png", stack_max = 64, on_use = function(itemstack, user, pointed_thing) - if not user:is_player then return end + if not user:is_player() then return end local elytra = mcl_playerplus.elytra[user:get_player_name()] if elytra.active and elytra.rocketing <= 0 then elytra.rocketing = duration From 52e2e2506b2c75ec9e22603249ddd857756cd6ef Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 01:48:09 +0000 Subject: [PATCH 013/521] #198 Fix a crash, step 7 --- mods/HELP/mcl_craftguide/init.lua | 6 +++++- mods/PLAYER/mcl_playerinfo/init.lua | 5 ++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 3bc7b705a..989f1a2b5 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -1093,9 +1093,13 @@ if progressive_mode then mcl_craftguide.add_recipe_filter("Default progressive filter", progressive_filter) + M.register_on_authplayer(function(name, ip, is_success) + if not is_success then return + init_data(name) + end) + M.register_on_joinplayer(function(player) local name = player:get_player_name() - init_data(name) local meta = player:get_meta() local data = player_data[name] diff --git a/mods/PLAYER/mcl_playerinfo/init.lua b/mods/PLAYER/mcl_playerinfo/init.lua index 9c5d1433f..1ff5add71 100644 --- a/mods/PLAYER/mcl_playerinfo/init.lua +++ b/mods/PLAYER/mcl_playerinfo/init.lua @@ -73,9 +73,8 @@ minetest.register_globalstep(function(dtime) end) -- set to blank on join (for 3rd party mods) -minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() - +minetest.register_on_authlayer(function(name, ip, is_success) + if not is_success then return end mcl_playerinfo[name] = { node_head = "", node_feet = "", From 89a016c0e645b61d988a96f25c90628bf26cb121 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 02:01:01 +0000 Subject: [PATCH 014/521] #198 Fix a crash, step 8 --- mods/HELP/mcl_craftguide/init.lua | 24 ++++++++++++++++-------- mods/ITEMS/mcl_shields/init.lua | 11 ++++++++++- mods/PLAYER/mcl_playerinfo/init.lua | 2 +- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 989f1a2b5..f75ab07f7 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -1,5 +1,7 @@ mcl_craftguide = {} +local awaiting_connection_player_names = {} + local M = minetest local player_data = {} @@ -1075,12 +1077,14 @@ if progressive_mode then 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 not awaiting_connection_player_names[name] then + 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) + if #diff > 0 then + data.inv_items = table_merge(diff, data.inv_items) + end end end @@ -1094,12 +1098,14 @@ if progressive_mode then mcl_craftguide.add_recipe_filter("Default progressive filter", progressive_filter) M.register_on_authplayer(function(name, ip, is_success) - if not is_success then return - init_data(name) + if not is_success then return end + awaiting_connection_player_names[name] = true end) M.register_on_joinplayer(function(player) local name = player:get_player_name() + awaiting_connection_player_names[name] = nil + init_data(name) local meta = player:get_meta() local data = player_data[name] @@ -1130,7 +1136,9 @@ if progressive_mode then local players = M.get_connected_players() for i = 1, #players do local player = players[i] - save_meta(player) + if not awaiting_connection_player_names[player:get_player_name()] then + save_meta(player) + end end end) else diff --git a/mods/ITEMS/mcl_shields/init.lua b/mods/ITEMS/mcl_shields/init.lua index ef0e7ba43..04bb42db3 100644 --- a/mods/ITEMS/mcl_shields/init.lua +++ b/mods/ITEMS/mcl_shields/init.lua @@ -24,6 +24,15 @@ interact_priv.give_to_admin = false local overlay = mcl_enchanting.overlay local hud = "mcl_shield_hud.png" +local function is_player_for_real(obj) + if not obj then return end + if not obj:is_player() then return end + local name = obj:get_player_name() + if not name then return end + if possible_hackers[name] then return end + return true +end + minetest.register_tool("mcl_shields:shield", { description = S("Shield"), _doc_items_longdesc = S("A shield is a tool used for protecting the player against attacks."), @@ -123,7 +132,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) local type = reason.type local damager = reason.direct local blocking, shieldstack = mcl_shields.is_blocking(obj) - if obj:is_player() and blocking and mcl_shields.types[type] and damager then + if is_player_for_real(obj) and blocking and mcl_shields.types[type] and damager then local entity = damager:get_luaentity() if entity and (type == "arrow" or type == "generic") then damager = entity._shooter diff --git a/mods/PLAYER/mcl_playerinfo/init.lua b/mods/PLAYER/mcl_playerinfo/init.lua index 1ff5add71..6c714c78b 100644 --- a/mods/PLAYER/mcl_playerinfo/init.lua +++ b/mods/PLAYER/mcl_playerinfo/init.lua @@ -73,7 +73,7 @@ minetest.register_globalstep(function(dtime) end) -- set to blank on join (for 3rd party mods) -minetest.register_on_authlayer(function(name, ip, is_success) +minetest.register_on_authplayer(function(name, ip, is_success) if not is_success then return end mcl_playerinfo[name] = { node_head = "", From 636be37c851ea82047a332f41e6465f526920f60 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:06:34 +0400 Subject: [PATCH 015/521] #198 Fix a crash, step 9 --- mods/ITEMS/mcl_shields/init.lua | 13 +++---------- mods/PLAYER/mcl_playerplus/init.lua | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_shields/init.lua b/mods/ITEMS/mcl_shields/init.lua index 04bb42db3..cfcd721fb 100644 --- a/mods/ITEMS/mcl_shields/init.lua +++ b/mods/ITEMS/mcl_shields/init.lua @@ -21,18 +21,11 @@ local interact_priv = minetest.registered_privileges.interact interact_priv.give_to_singleplayer = false interact_priv.give_to_admin = false +local is_player = mcl_playerplus.is_player + local overlay = mcl_enchanting.overlay local hud = "mcl_shield_hud.png" -local function is_player_for_real(obj) - if not obj then return end - if not obj:is_player() then return end - local name = obj:get_player_name() - if not name then return end - if possible_hackers[name] then return end - return true -end - minetest.register_tool("mcl_shields:shield", { description = S("Shield"), _doc_items_longdesc = S("A shield is a tool used for protecting the player against attacks."), @@ -132,7 +125,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) local type = reason.type local damager = reason.direct local blocking, shieldstack = mcl_shields.is_blocking(obj) - if is_player_for_real(obj) and blocking and mcl_shields.types[type] and damager then + if is_player(obj) and blocking and mcl_shields.types[type] and damager then local entity = damager:get_luaentity() if entity and (type == "arrow" or type == "generic") then damager = entity._shooter diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 88107442e..1616e3e68 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -17,6 +17,8 @@ local is_sprinting = mcl_sprint.is_sprinting local exhaust = mcl_hunger.exhaust local playerphysics = playerphysics +local is_player = mcl_player.is_player + local vector = vector local math = math -- Internal player state @@ -25,6 +27,17 @@ local mcl_playerplus_internal = {} local time = 0 local look_pitch = 0 +function mcl_playerplus.is_player(obj) + if not obj then return end + if not obj:is_player() then return end + local name = obj:get_player_name() + if not name then return end + if possible_hackers[name] then return end + return true +end + +local is_player = mcl_playerplus.is_player + local function player_collision(player) local pos = player:get_pos() @@ -35,7 +48,7 @@ local function player_collision(player) for _,object in pairs(minetest.get_objects_inside_radius(pos, width)) do - if object and (object:is_player() + if object and (is_player(object) or (object:get_luaentity()._cmi_is_mob == true and object ~= player)) then local pos2 = object:get_pos() From 7e9388b80d8c050ff807c1fe64c0541949a57937 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:15:03 +0400 Subject: [PATCH 016/521] #198 Fix a crash, step 10 --- mods/ENTITIES/mcl_item_entity/init.lua | 5 ++--- mods/ITEMS/mcl_shields/init.lua | 11 +++++++++-- mods/PLAYER/mcl_player/mod.conf | 1 + mods/PLAYER/mcl_playerplus/init.lua | 4 +--- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 91e152ca1..f9a717455 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -6,9 +6,8 @@ local pool = {} local tick = false -minetest.register_on_joinplayer(function(player) - local name - name = player:get_player_name() +minetest.register_on_authplayer(function(name, ip, is_success) + if not is_success then return end pool[name] = 0 end) diff --git a/mods/ITEMS/mcl_shields/init.lua b/mods/ITEMS/mcl_shields/init.lua index cfcd721fb..671c42c76 100644 --- a/mods/ITEMS/mcl_shields/init.lua +++ b/mods/ITEMS/mcl_shields/init.lua @@ -21,11 +21,18 @@ local interact_priv = minetest.registered_privileges.interact interact_priv.give_to_singleplayer = false interact_priv.give_to_admin = false -local is_player = mcl_playerplus.is_player - local overlay = mcl_enchanting.overlay local hud = "mcl_shield_hud.png" +function is_player(obj) + if not obj then return end + if not obj:is_player() then return end + local name = obj:get_player_name() + if not name then return end + if possible_hackers[name] then return end + return true +end + minetest.register_tool("mcl_shields:shield", { description = S("Shield"), _doc_items_longdesc = S("A shield is a tool used for protecting the player against attacks."), diff --git a/mods/PLAYER/mcl_player/mod.conf b/mods/PLAYER/mcl_player/mod.conf index 97ccce8e6..d092bd3f3 100644 --- a/mods/PLAYER/mcl_player/mod.conf +++ b/mods/PLAYER/mcl_player/mod.conf @@ -1,3 +1,4 @@ name = mcl_player author = celeron55 description = Adds the 3D player model, taken from Minetest Game 0.4.16. +depends = mcl_shields diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 1616e3e68..6a191a05a 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -27,7 +27,7 @@ local mcl_playerplus_internal = {} local time = 0 local look_pitch = 0 -function mcl_playerplus.is_player(obj) +function is_player(obj) if not obj then return end if not obj:is_player() then return end local name = obj:get_player_name() @@ -36,8 +36,6 @@ function mcl_playerplus.is_player(obj) return true end -local is_player = mcl_playerplus.is_player - local function player_collision(player) local pos = player:get_pos() From b86446df3483e4463aeb88708cab711501a32882 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:18:07 +0400 Subject: [PATCH 017/521] #198 Fix a crash, step 11 --- mods/ENTITIES/mcl_item_entity/init.lua | 17 +++++++++++++---- mods/PLAYER/mcl_player/mod.conf | 1 - 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index f9a717455..521c94486 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -42,6 +42,15 @@ item_drop_settings.drop_single_item = false --if true, the drop control dro item_drop_settings.magnet_time = 0.75 -- how many seconds an item follows the player before giving up +function is_player(obj) + if not obj then return end + if not obj:is_player() then return end + local name = obj:get_player_name() + if not name then return end + if possible_hackers[name] then return end + return true +end + local function get_gravity() return tonumber(minetest.settings:get("movement_gravity")) or 9.81 end @@ -132,7 +141,7 @@ minetest.register_globalstep(function(dtime) --magnet and collection for _,object in pairs(minetest.get_objects_inside_radius(checkpos, item_drop_settings.xp_radius_magnet)) do - if not object:is_player() and vector.distance(checkpos, object:get_pos()) < item_drop_settings.radius_magnet and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then + if not is_player(object) and vector.distance(checkpos, object:get_pos()) < item_drop_settings.radius_magnet and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then if object:get_luaentity()._magnet_timer >= 0 and object:get_luaentity()._magnet_timer < item_drop_settings.magnet_time and inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then @@ -166,7 +175,7 @@ minetest.register_globalstep(function(dtime) end end - elseif not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "mcl_experience:orb" then + elseif not is_player(object) and object:get_luaentity() and object:get_luaentity().name == "mcl_experience:orb" then local entity = object:get_luaentity() entity.collector = player:get_player_name() entity.collected = true @@ -229,7 +238,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. - if (digger and digger:is_player() and minetest.is_creative_enabled(digger:get_player_name())) or doTileDrops == false then + if (digger and is_player(digger) and minetest.is_creative_enabled(digger:get_player_name())) or doTileDrops == false then return end @@ -339,7 +348,7 @@ end -- Drop single items by default function minetest.item_drop(itemstack, dropper, pos) - if dropper and dropper:is_player() then + if dropper and is_player(dropper) then local v = dropper:get_look_dir() local p = {x=pos.x, y=pos.y+1.2, z=pos.z} local cs = itemstack:get_count() diff --git a/mods/PLAYER/mcl_player/mod.conf b/mods/PLAYER/mcl_player/mod.conf index d092bd3f3..97ccce8e6 100644 --- a/mods/PLAYER/mcl_player/mod.conf +++ b/mods/PLAYER/mcl_player/mod.conf @@ -1,4 +1,3 @@ name = mcl_player author = celeron55 description = Adds the 3D player model, taken from Minetest Game 0.4.16. -depends = mcl_shields From 1537232f17e29cc3631f7e5fa75d36f76c59cc67 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:23:27 +0400 Subject: [PATCH 018/521] #198 Fix a crash, step 12 --- mods/CORE/mcl_util/init.lua | 20 ++++++++++++++++++++ mods/ENTITIES/mcl_item_entity/init.lua | 9 +-------- mods/ENTITIES/mcl_item_entity/mod.conf | 2 +- mods/ITEMS/mcl_shields/init.lua | 19 ++----------------- mods/PLAYER/mcl_playerplus/init.lua | 9 --------- 5 files changed, 24 insertions(+), 35 deletions(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 50e3d61fc..3a634637a 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -498,3 +498,23 @@ function mcl_util.get_pointed_thing(player) end end end + +local possible_hackers = {} + +function mcl_util.is_player(obj) + if not obj then return end + if not obj:is_player() then return end + local name = obj:get_player_name() + if not name then return end + if possible_hackers[name] then return end + return true +end + +minetest.register_on_authplayer(function(name, ip, is_success) + if not is_success then return end + possible_hackers[name] = true +end) + +minetest.register_on_joinplayer(function(player) + possible_hackers[player:get_player_name()] = nil +end) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 521c94486..7b2b6c140 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -42,14 +42,7 @@ item_drop_settings.drop_single_item = false --if true, the drop control dro item_drop_settings.magnet_time = 0.75 -- how many seconds an item follows the player before giving up -function is_player(obj) - if not obj then return end - if not obj:is_player() then return end - local name = obj:get_player_name() - if not name then return end - if possible_hackers[name] then return end - return true -end +function is_player = mcl_util.is_player local function get_gravity() return tonumber(minetest.settings:get("movement_gravity")) or 9.81 diff --git a/mods/ENTITIES/mcl_item_entity/mod.conf b/mods/ENTITIES/mcl_item_entity/mod.conf index acd9f00f3..120b64aa7 100644 --- a/mods/ENTITIES/mcl_item_entity/mod.conf +++ b/mods/ENTITIES/mcl_item_entity/mod.conf @@ -1,4 +1,4 @@ name = mcl_item_entity author = PilzAdam description = Dropped items will be attracted to the player like a magnet. -depends = flowlib, mcl_enchanting +depends = flowlib, mcl_enchanting, mcl_util diff --git a/mods/ITEMS/mcl_shields/init.lua b/mods/ITEMS/mcl_shields/init.lua index 671c42c76..ab4fc70a4 100644 --- a/mods/ITEMS/mcl_shields/init.lua +++ b/mods/ITEMS/mcl_shields/init.lua @@ -2,8 +2,6 @@ local minetest, math, vector = minetest, math, vector local modname = minetest.get_current_modname() local S = minetest.get_translator(modname) -local possible_hackers = {} - mcl_shields = { types = { mob = true, @@ -24,14 +22,7 @@ interact_priv.give_to_admin = false local overlay = mcl_enchanting.overlay local hud = "mcl_shield_hud.png" -function is_player(obj) - if not obj then return end - if not obj:is_player() then return end - local name = obj:get_player_name() - if not name then return end - if possible_hackers[name] then return end - return true -end +local is_player = mcl_util.is_player minetest.register_tool("mcl_shields:shield", { description = S("Shield"), @@ -298,7 +289,7 @@ local function update_shield_entity(player, blocking, i) end minetest.register_globalstep(function(dtime) - for _, player in pairs(minetest.get_connected_players()) do if not possible_hackers[player:get_player_name()] then + for _, player in pairs(minetest.get_connected_players()) do if is_player(player) then handle_blocking(player) local blocking, shieldstack = mcl_shields.is_blocking(player) @@ -472,13 +463,7 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv return craft_banner_on_shield(itemstack, player, old_craft_grid, craft_inv) end) -minetest.register_on_authplayer(function(name, ip, is_success) - if not is_success then return end - possible_hackers[name] = true -end) - minetest.register_on_joinplayer(function(player) - possible_hackers[player:get_player_name()] = nil mcl_shields.players[player] = { shields = {}, blocking = 0, diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 6a191a05a..40e667a0b 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -27,15 +27,6 @@ local mcl_playerplus_internal = {} local time = 0 local look_pitch = 0 -function is_player(obj) - if not obj then return end - if not obj:is_player() then return end - local name = obj:get_player_name() - if not name then return end - if possible_hackers[name] then return end - return true -end - local function player_collision(player) local pos = player:get_pos() From 1ef93eab377e4ab44acdb46a188b6cbe4eeb36f5 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 02:25:19 +0000 Subject: [PATCH 019/521] #198 Fix a crash, step 13 --- mods/ENTITIES/mcl_item_entity/init.lua | 2 +- mods/ITEMS/mcl_shields/mod.conf | 2 +- mods/PLAYER/mcl_player/mod.conf | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7b2b6c140..b1202f4ad 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -42,7 +42,7 @@ item_drop_settings.drop_single_item = false --if true, the drop control dro item_drop_settings.magnet_time = 0.75 -- how many seconds an item follows the player before giving up -function is_player = mcl_util.is_player +local is_player = mcl_util.is_player local function get_gravity() return tonumber(minetest.settings:get("movement_gravity")) or 9.81 diff --git a/mods/ITEMS/mcl_shields/mod.conf b/mods/ITEMS/mcl_shields/mod.conf index 8aded6a62..f30807bf1 100644 --- a/mods/ITEMS/mcl_shields/mod.conf +++ b/mods/ITEMS/mcl_shields/mod.conf @@ -1,3 +1,3 @@ name = mcl_shields author = NO11 -depends = mcl_damage, mcl_enchanting, mcl_banners, mcl_util, playerphysics +depends = mcl_damage, mcl_enchanting, mcl_banners, mcl_util, playerphysics, mcl_playerplus diff --git a/mods/PLAYER/mcl_player/mod.conf b/mods/PLAYER/mcl_player/mod.conf index 97ccce8e6..d092bd3f3 100644 --- a/mods/PLAYER/mcl_player/mod.conf +++ b/mods/PLAYER/mcl_player/mod.conf @@ -1,3 +1,4 @@ name = mcl_player author = celeron55 description = Adds the 3D player model, taken from Minetest Game 0.4.16. +depends = mcl_shields From adec2cbeea7498543abd8b3bf3b0f8992a61fe19 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:28:35 +0400 Subject: [PATCH 020/521] #198 Fix a crash, step 14 --- mods/ITEMS/mcl_shields/mod.conf | 2 +- mods/PLAYER/mcl_player/mod.conf | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_shields/mod.conf b/mods/ITEMS/mcl_shields/mod.conf index f30807bf1..8aded6a62 100644 --- a/mods/ITEMS/mcl_shields/mod.conf +++ b/mods/ITEMS/mcl_shields/mod.conf @@ -1,3 +1,3 @@ name = mcl_shields author = NO11 -depends = mcl_damage, mcl_enchanting, mcl_banners, mcl_util, playerphysics, mcl_playerplus +depends = mcl_damage, mcl_enchanting, mcl_banners, mcl_util, playerphysics diff --git a/mods/PLAYER/mcl_player/mod.conf b/mods/PLAYER/mcl_player/mod.conf index d092bd3f3..97ccce8e6 100644 --- a/mods/PLAYER/mcl_player/mod.conf +++ b/mods/PLAYER/mcl_player/mod.conf @@ -1,4 +1,3 @@ name = mcl_player author = celeron55 description = Adds the 3D player model, taken from Minetest Game 0.4.16. -depends = mcl_shields From d20551589f615c07bf338e089de86732874f9cb4 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:29:53 +0400 Subject: [PATCH 021/521] #198 Fix a crash, step 15 --- mods/PLAYER/mcl_playerplus/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 40e667a0b..9208f5862 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -17,7 +17,7 @@ local is_sprinting = mcl_sprint.is_sprinting local exhaust = mcl_hunger.exhaust local playerphysics = playerphysics -local is_player = mcl_player.is_player +local is_player = mcl_util.is_player local vector = vector local math = math From 04094f97fad624b1624836c3cf3520ec41024887 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:32:51 +0400 Subject: [PATCH 022/521] #198 Fix a crash, step 16 --- mods/PLAYER/mcl_playerplus/init.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 9208f5862..93db2734e 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -17,8 +17,6 @@ local is_sprinting = mcl_sprint.is_sprinting local exhaust = mcl_hunger.exhaust local playerphysics = playerphysics -local is_player = mcl_util.is_player - local vector = vector local math = math -- Internal player state @@ -37,7 +35,7 @@ local function player_collision(player) for _,object in pairs(minetest.get_objects_inside_radius(pos, width)) do - if object and (is_player(object) + if object and ((mcl_util and mcl_util.is_player(object)) or (object:get_luaentity()._cmi_is_mob == true and object ~= player)) then local pos2 = object:get_pos() From b3059aecbaa165e1335d8d39c61debf07b26e74c Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:34:46 +0400 Subject: [PATCH 023/521] #198 Fix a crash, step 17 --- mods/PLAYER/mcl_playerplus/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 93db2734e..c7fd5b2b7 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -34,9 +34,9 @@ local function player_collision(player) local width = .75 for _,object in pairs(minetest.get_objects_inside_radius(pos, width)) do - + local luaentity = object:get_luaentity() if object and ((mcl_util and mcl_util.is_player(object)) - or (object:get_luaentity()._cmi_is_mob == true and object ~= player)) then + or (luaentity and luaentity._cmi_is_mob == true and object ~= player)) then local pos2 = object:get_pos() local vec = {x = pos.x - pos2.x, z = pos.z - pos2.z} From 194ac71c89376fa0e833db96886f9f8f1f38674d Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:36:15 +0400 Subject: [PATCH 024/521] #198 Fix a crash, step 18 --- mods/ITEMS/mcl_shields/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_shields/init.lua b/mods/ITEMS/mcl_shields/init.lua index ab4fc70a4..65ffc6b4b 100644 --- a/mods/ITEMS/mcl_shields/init.lua +++ b/mods/ITEMS/mcl_shields/init.lua @@ -109,6 +109,7 @@ for _, e in pairs(mcl_shields.enchantments) do end function mcl_shields.is_blocking(obj) + if not mcl_util or not mcl_util.is_player(obj) then return end local blocking = mcl_shields.players[obj].blocking if blocking > 0 then local shieldstack = obj:get_wielded_item() From e15a82b865fcedd6d5741d804885440013b8a4b4 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:38:19 +0400 Subject: [PATCH 025/521] #198 Fix a crash, step 19 --- mods/HUD/mcl_offhand/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_offhand/init.lua b/mods/HUD/mcl_offhand/init.lua index b0fc223ec..af495b886 100644 --- a/mods/HUD/mcl_offhand/init.lua +++ b/mods/HUD/mcl_offhand/init.lua @@ -55,7 +55,7 @@ local function update_wear_bar(player, itemstack) end minetest.register_globalstep(function(dtime) - for _, player in pairs(minetest.get_connected_players()) do + for _, player in pairs(minetest.get_connected_players()) do if mcl_util and mcl_util.is_player(player:get_player_name()) then local itemstack = mcl_offhand.get_offhand(player) local offhand_item = itemstack:get_name() local offhand_hud = mcl_offhand[player].hud @@ -148,7 +148,7 @@ minetest.register_globalstep(function(dtime) remove_hud(player, index) end end - end + end end end) minetest.register_allow_player_inventory_action(function(player, action, inventory, inventory_info) From 403528e54250b1db4817c35319dd0a6d5e2c04b1 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:39:47 +0400 Subject: [PATCH 026/521] #198 Fix a crash, step 20 --- mods/CORE/mcl_util/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 3a634637a..90e44cedc 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -503,6 +503,7 @@ local possible_hackers = {} function mcl_util.is_player(obj) if not obj then return end + if not obj.is_player then return end if not obj:is_player() then return end local name = obj:get_player_name() if not name then return end From adfa83c34c3a5b7333cf56e8f3fa50d8d545b54f Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 06:44:41 +0400 Subject: [PATCH 027/521] #198 Fix a crash, step 21 --- mods/PLAYER/mcl_player/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index 69f126dcf..9d910a89a 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -127,6 +127,8 @@ function mcl_player.player_get_preview(player) end function mcl_player.get_player_formspec_model(player, x, y, w, h, fsname) + if not mcl_util then return end + if not mcl_util.is_player(player) then return end local name = player:get_player_name() local model = player_model[name] local anim = models[model].animations[player_anim[name]] From 560882b1bacab458f3edfb3873308076ecd6c754 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Feb 2022 20:55:55 +0400 Subject: [PATCH 028/521] #198 Fix a crash, step 22 --- mods/ITEMS/mcl_bows/arrow.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index c61dfc26c..baa4d633a 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -145,7 +145,7 @@ function ARROW_ENTITY.on_step(self, dtime) -- Pickup arrow if player is nearby (not in Creative Mode) local objects = minetest.get_objects_inside_radius(pos, 1) for _,obj in ipairs(objects) do - if obj:is_player() then + if mcl_util and mcl_util.is_player(obj) then if self._collectable and not minetest.is_creative_enabled(obj:get_player_name()) then if obj:get_inventory():room_for_item("main", "mcl_bows:arrow") then obj:get_inventory():add_item("main", "mcl_bows:arrow") @@ -199,7 +199,7 @@ function ARROW_ENTITY.on_step(self, dtime) for k, obj in pairs(objs) do local ok = false -- Arrows can only damage players and mobs - if obj:is_player() then + if mcl_util and mcl_util.is_player(obj) then ok = true elseif obj:get_luaentity() then if (obj:get_luaentity()._cmi_is_mob or obj:get_luaentity()._hittable_by_projectile) then @@ -223,7 +223,7 @@ function ARROW_ENTITY.on_step(self, dtime) if closest_object then local obj = closest_object - local is_player = obj:is_player() + local is_player = mcl_util and mcl_util.is_player(obj) local lua = obj:get_luaentity() if obj == self._shooter and self._time_in_air > 1.02 or obj ~= self._shooter and (is_player or (lua and (lua._cmi_is_mob or lua._hittable_by_projectile))) then if obj:get_hp() > 0 then @@ -258,7 +258,7 @@ function ARROW_ENTITY.on_step(self, dtime) full_punch_interval=1.0, damage_groups={fleshy=self._damage}, }, self.object:get_velocity()) - if obj:is_player() then + if mcl_util and mcl_util.is_player(obj) then if not mcl_shields.is_blocking(obj) then local placement self._placement = math.random(1, 2) @@ -309,7 +309,7 @@ function ARROW_ENTITY.on_step(self, dtime) if is_player then - if self._shooter and self._shooter:is_player() and not self._in_player and not self._blocked then + if self._shooter and (mcl_util and mcl_util.is_player(self._shooter)) and not self._in_player and not self._blocked then -- “Ding” sound for hitting another player minetest.sound_play({name="mcl_bows_hit_player", gain=0.1}, {to_player=self._shooter:get_player_name()}, true) end @@ -320,7 +320,7 @@ function ARROW_ENTITY.on_step(self, dtime) -- 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 self._shooter and (mcl_util and mcl_util.is_player(self._shooter)) 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 @@ -331,7 +331,7 @@ function ARROW_ENTITY.on_step(self, dtime) minetest.sound_play({name="mcl_bows_hit_other", gain=0.3}, {pos=self.object:get_pos(), max_hear_distance=16}, true) end end - if not obj:is_player() then + if not mcl_util or not mcl_util.is_player(obj) then mcl_burning.extinguish(self.object) if self._piercing == 0 then self.object:remove() @@ -457,7 +457,7 @@ function ARROW_ENTITY.get_staticdata(self) end out.stuckstarttime = minetest.get_gametime() - self._stucktimer end - if self._shooter and self._shooter:is_player() then + if self._shooter and mcl_util and mcl_util.is_player(self._shooter) then out.shootername = self._shooter:get_player_name() end return minetest.serialize(out) @@ -493,7 +493,7 @@ function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) self._is_critical = data.is_critical if data.shootername then local shooter = minetest.get_player_by_name(data.shootername) - if shooter and shooter:is_player() then + if shooter and mcl_util and mcl_util.is_player(shooter) then self._shooter = shooter end end From 306a6ad20fa0c6fc23289b0907316aa7a59e4a80 Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 15 Feb 2022 03:19:43 +0400 Subject: [PATCH 029/521] #202 Destroy Nether Portals on ABMs --- mods/ITEMS/mcl_portals/portal_nether.lua | 67 +++++++++++------------- 1 file changed, 30 insertions(+), 37 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index e6dd255f0..3f2f819c8 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -209,39 +209,6 @@ local function get_target(p) end end --- Destroy portal if pos (portal frame or portal node) got destroyed -local function destroy_nether_portal(pos, node) - if not node then return end - local nn, orientation = node.name, node.param2 - local obsidian = nn == OBSIDIAN - - local function check_remove(pos, orientation) - local node = get_node(pos) - if node and (node.name == PORTAL and (orientation == nil or (node.param2 == orientation))) then - minetest.remove_node(pos) - remove_exit(pos) - end - end - if obsidian then -- check each of 6 sides of it and destroy every portal: - check_remove({x = pos.x - 1, y = pos.y, z = pos.z}, 0) - check_remove({x = pos.x + 1, y = pos.y, z = pos.z}, 0) - check_remove({x = pos.x, y = pos.y, z = pos.z - 1}, 1) - check_remove({x = pos.x, y = pos.y, z = pos.z + 1}, 1) - check_remove({x = pos.x, y = pos.y - 1, z = pos.z}) - check_remove({x = pos.x, y = pos.y + 1, z = pos.z}) - return - end - if orientation == 0 then - check_remove({x = pos.x - 1, y = pos.y, z = pos.z}, 0) - check_remove({x = pos.x + 1, y = pos.y, z = pos.z}, 0) - else - check_remove({x = pos.x, y = pos.y, z = pos.z - 1}, 1) - check_remove({x = pos.x, y = pos.y, z = pos.z + 1}, 1) - end - check_remove({x = pos.x, y = pos.y - 1, z = pos.z}) - check_remove({x = pos.x, y = pos.y + 1, z = pos.z}) -end - local on_rotate if minetest.get_modpath("screwdriver") then on_rotate = screwdriver.disallow @@ -295,7 +262,6 @@ minetest.register_node(PORTAL, { }, groups = { creative_breakable = 1, portal = 1, not_in_creative_inventory = 1 }, sounds = mcl_sounds.node_sound_glass_defaults(), - after_destruct = destroy_nether_portal, on_rotate = on_rotate, _mcl_hardness = -1, @@ -763,10 +729,38 @@ mcl_structures.register_structure({name = "nether_portal", place_function = mcl_ minetest.register_abm({ label = "Nether portal teleportation and particles", nodenames = {PORTAL}, - interval = 1, - chance = 1, + interval = 0.8, + chance = 3, action = function(pos, node) + -- Don't use call stack! + local upper_node_name = get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name + if upper_node_name ~= PORTAL and upper_node_name ~= OBSIDIAN then + minetest.remove_node(pos) + remove_exit(pos) + return + end + local lower_node_name = get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name + if lower_node_name ~= PORTAL and lower_node_name ~= OBSIDIAN then + minetest.remove_node(pos) + remove_exit(pos) + return + end + local o = node.param2 -- orientation + + local closer_node_name = get_node({x = pos.x - 1 + o, y = pos.y, z = pos.z - o}).name + if closer_node_name ~= PORTAL and closer_node_name ~= OBSIDIAN then + minetest.remove_node(pos) + remove_exit(pos) + return + end + local further_node_name = get_node({x = pos.x + 1 - o, y = pos.y, z = pos.z + o}).name + if further_node_name ~= PORTAL and further_node_name ~= OBSIDIAN then + minetest.remove_node(pos) + remove_exit(pos) + return + end + local d = random(0, 1) -- direction local time = random() * 1.9 + 0.5 local velocity, acceleration @@ -829,7 +823,6 @@ local usagehelp = S("To open a Nether portal, place an upright frame of obsidian minetest.override_item(OBSIDIAN, { _doc_items_longdesc = longdesc, _doc_items_usagehelp = usagehelp, - after_destruct = destroy_nether_portal, _on_ignite = function(user, pointed_thing) local x, y, z = pointed_thing.under.x, pointed_thing.under.y, pointed_thing.under.z -- Check empty spaces around obsidian and light all frames found: From 2bf7ebc2652e5b9187de5a0bbc2e63ddbb7ee4a8 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 03:47:23 +0400 Subject: [PATCH 030/521] Preload village schematics and calc proper sizes --- mods/MAPGEN/mcl_villages/init.lua | 38 +++++++++++++++--- .../mcl_villages/schematics/blacksmith.mts | Bin 986 -> 1052 bytes .../mcl_villages/schematics/butcher.mts | Bin 813 -> 919 bytes .../MAPGEN/mcl_villages/schematics/church.mts | Bin 956 -> 1128 bytes mods/MAPGEN/mcl_villages/schematics/farm.mts | Bin 347 -> 324 bytes mods/MAPGEN/mcl_villages/schematics/lamp.mts | Bin 209 -> 170 bytes .../mcl_villages/schematics/large_house.mts | Bin 1137 -> 1271 bytes .../mcl_villages/schematics/library.mts | Bin 816 -> 892 bytes .../mcl_villages/schematics/medium_house.mts | Bin 760 -> 830 bytes .../mcl_villages/schematics/small_house.mts | Bin 593 -> 617 bytes .../MAPGEN/mcl_villages/schematics/tavern.mts | Bin 1005 -> 1138 bytes mods/MAPGEN/mcl_villages/schematics/well.mts | Bin 476 -> 456 bytes 12 files changed, 32 insertions(+), 6 deletions(-) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 6009539da..adbb7a0f5 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -13,7 +13,7 @@ local modpath = minetest.get_modpath(modname) local S = minetest.get_translator(modname) local basic_pseudobiome_villages = minetest.settings:get_bool("basic_pseudobiome_villages", true) local schem_path = modpath .. "/schematics/" -local schematic_table = { +--[[local schematic_table = { {name = "large_house", mts = schem_path.."large_house.mts", hwidth = 11, hdepth = 12, hheight = 9, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, {name = "blacksmith", mts = schem_path.."blacksmith.mts", hwidth = 7, hdepth = 11, hheight = 7, hsize = 13, max_num = 0.055, rplc = basic_pseudobiome_villages }, {name = "butcher", mts = schem_path.."butcher.mts", hwidth = 11, hdepth = 8, hheight = 10, hsize = 14, max_num = 0.03 , rplc = basic_pseudobiome_villages }, @@ -25,7 +25,37 @@ local schematic_table = { {name = "small_house", mts = schem_path.."small_house.mts", hwidth = 9, hdepth = 7, hheight = 8, hsize = 13, max_num = 0.7 , rplc = basic_pseudobiome_villages }, {name = "tavern", mts = schem_path.."tavern.mts", hwidth = 11, hdepth = 10, hheight = 10, hsize = 13, max_num = 0.050, rplc = basic_pseudobiome_villages }, {name = "well", mts = schem_path.."well.mts", hwidth = 6, hdepth = 8, hheight = 6, hsize = 10, max_num = 0.045, rplc = basic_pseudobiome_villages }, +}]] +local schematic_table = { + {name = "large_house", mts = schem_path.."large_house.mts", max_num = 0.08 , rplc = basic_pseudobiome_villages }, + {name = "blacksmith", mts = schem_path.."blacksmith.mts", max_num = 0.055, rplc = basic_pseudobiome_villages }, + {name = "butcher", mts = schem_path.."butcher.mts", max_num = 0.03 , rplc = basic_pseudobiome_villages }, + {name = "church", mts = schem_path.."church.mts", max_num = 0.04 , rplc = basic_pseudobiome_villages }, + {name = "farm", mts = schem_path.."farm.mts", max_num = 0.1 , rplc = basic_pseudobiome_villages }, + {name = "lamp", mts = schem_path.."lamp.mts", max_num = 0.1 , rplc = false }, + {name = "library", mts = schem_path.."library.mts", max_num = 0.04 , rplc = basic_pseudobiome_villages }, + {name = "medium_house", mts = schem_path.."medium_house.mts", max_num = 0.08 , rplc = basic_pseudobiome_villages }, + {name = "small_house", mts = schem_path.."small_house.mts", max_num = 0.7 , rplc = basic_pseudobiome_villages }, + {name = "tavern", mts = schem_path.."tavern.mts", max_num = 0.050, rplc = basic_pseudobiome_villages }, + {name = "well", mts = schem_path.."well.mts", max_num = 0.045, rplc = basic_pseudobiome_villages }, } +for k, v in pairs(schematic_table) do + local schem_lua = minetest.serialize_schematic( + v.mts, + "lua", + { + lua_use_comments = false, + lua_num_indent_spaces = 0, + } + ):gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") .. " return schematic" + v.preloaded_schematic = schem_lua + local loaded_schematic = loadstring(schem_lua)() + local size = loaded_schematic.size + v.hwidth = size.x + v.hheight = size.y + v.hdepth = size.z + v.hsize = math.ceil(math.sqrt((size.x/2)^2 + (size.y/2)^2) * 2 + 1) +end local surface_mat = { ["mcl_core:dirt_with_dry_grass"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, ["mcl_core:dirt_with_grass"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, @@ -322,12 +352,8 @@ local function place_schematics(plan, pr) local pos = built_house.pos local rotation = built_house.rotation local platform_material = built_house.surface_mat - local building = built_house.building.mts local replace_wall = built_house.building.rplc - local schem_lua = minetest.serialize_schematic(building, - "lua", - {lua_use_comments = false, lua_num_indent_spaces = 0}).." return schematic" - schem_lua = schem_lua:gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") + local schem_lua = built_house.building.preloaded_schematic if replace_wall then --Note, block substitution isn't matching node names exactly; so nodes that are to be substituted that have the same prefixes cause bugs. -- Example: Attempting to swap out 'mcl_core:stonebrick'; which has multiple, additional sub-variants: (carved, cracked, mossy). Will currently cause issues, so leaving disabled. diff --git a/mods/MAPGEN/mcl_villages/schematics/blacksmith.mts b/mods/MAPGEN/mcl_villages/schematics/blacksmith.mts index d7fb66593dba1636ba133681520ae16721d276b8..09665654a91c13f5ea5f484159ad650954885192 100644 GIT binary patch delta 576 zcmcb`K8HigHze4XfrWvcfsKK)9t;>{7?=|?ix~KGlXK#e^NUiglJk?2a#ANpFquvc zVw9dZRi0k}B$t+&mz-K`1*9e~V3MBvmQhYy1geNl|L*&jGXhNnM zGqZS?rh@U(2W16@56aa&rnNSI{b znVDI5(s{`PIUO>>H*7j=ww_I4xz)8n{84n-g7c0G86R>QcNi#qcDeY7U4^|+{mT2V zEsQ1{1sZ?;|F@4}^HmLb_P@SEYSoIC+pRfLE&}_l6DQ8)58-@bbmj2ZMhSs~RT`~I z?z_Ae7=9ISo~W7fTf%@*nA!0_%PO|{d~R%M8wz`PjxePqxTP*oJMhY8LiL0@N6z%5 iC@VKxaPd!Re88lkHPbM}$UsoA&cXEz55xPgm3sjLWZZfH delta 531 zcmbQkaf`j)Hze4XfrWvcfrEj&9ts%b7$kC&bK;Zpi&CvpGK)&$%QH(d;?s)~i;EeU z6Elk#cu}Mo_~G2-{G_CuR3!P5qSRCd5x9I(QD$;>d{Rz+ayElRMM2_ZM<%g}Rq_f5 z1IzRCQy2t58q!kpl2ePVz|`b^MpH)p$q`JtQfX-nVj$^~{G#Lxpgfq4FHg+LnHVQC zS&2z}ax|kFkd~gz%c#L9GciGoH6_0^DQEIWM#IVTndF!l#3wIc5})WSGx4FAIM^tV z=3=YjlKi|>hyyJrA7<3AubA^Te@%Q6*3pO9x zRHVVca`8z@%bWt%jn0dOQr>(Gygy^lmW5x|UhUv1y76F6RPNQQ8Yh)J;%+_je3lh^ zZK_4>MV87ESF80Llhk)QFU$J>&0@MtX@GTEPRNrt@f|jYea@CP8BeJ=f8|FJS7qkZ ze__8qX9?W+W1~>X;ofAHH^7AZ>?e8b|^Z)qs Q>U;CXzI>f~-O^UC0EnC4S^xk5 diff --git a/mods/MAPGEN/mcl_villages/schematics/butcher.mts b/mods/MAPGEN/mcl_villages/schematics/butcher.mts index 251033b1ec0a3e7bf299f833ab1ffd90e35c18b3..03353de105ded131339bf1d97b4c8dafc59d077b 100644 GIT binary patch delta 589 zcmZ3>Hl5wgHze4XfrWvafrEjq9ts%57?=|?ix~KGlXK#e^NUiglJk?2a#9&2-~uU` zMJ4g&nI#$V=|zdf#giv7nof*RocxGUTr4Tx5J_iFVoFMC5rfR+ct%mq_>}xokU63g z?~6{X&;u%$mXQRRnOTyWn^u&Vn_6rIV#b5n40@A=8FeM|7{owIO7e@6Gl247I=(zH zCui~>M#YKy6ehJQ(qC6oN$CmQX=Bvgo%y3Jd%Thi z;pu}7y0!%d6XwYo6yH%em;bfkK*JdpSM?d^8PcyB8!YHDQV=m{xS`?6d~?HphlVBF z#DhVLBZwiji+O6NP^Ml4cZmFoIn5c$H)GOvlyZnM3r%KxBq#HX zsrBP7@fYS|D_9fM?j+362xwpxeaPiS8y7=SWZ1Vw9e|f>EI!VP8&SN=j-`#hkaH z-9k+Y0yZs1@)x;Z7XSV_!Mx+DM%d#D>nd~Ydz%g^I2c{f3Q%Ea5O#3TF?gd=RhD1< zHD_gHv$Mgqg-ub5xNfjTb*jx;np9kAELdfn|2E}r*PHKJ4_C|&>VJDYV6JSIh3A!t z?FRdkCe977&&z+l#Qd|#7q_Lm|9>f)_&xi9@6+fDr#I-FRC=LSy|}wldfn_#M;32Q znAZFKNx_;=$0pzVap?87w#_L=|2G^Li_ZDDRl?G{PW0lWsy8T1b1(5WRs2oCXwYO78Pw{Y+rY8Z)`euXlZn1Ut?i%aAkCnkSCK} z0T`3P0WgubB$FZn7LyW%zLFAuNMo4FmN;lo=Sdvx3pQDl2qP(l=0h6Buj`G*I?al8aW2QzQu4maF?GGaKx zS`4QP7;)->rE5qi!s-kNZ!|=yAEKkV9+DJs*K?%idXRd2Z6xHnezazSgznI2Jqe&B z1;Jt5dcxfb7;WJ*;;GRY=m17iFO<~atgnaZK(J^ZCG~Isw2L@SeLb=|;tgPc*nr<2 zco-1v9ESS;AOLa)NY8&LsK?-cK-B#Qhi*Lz2SpEx3vimoKtqS(_5u|hiW-XysL@Dd zh!W>e2FgN|M28Yi2Smmx$x%OC9SRJHdi*(yRw2s3fTwh!Y8tH{_*_5m#S^ZoU|hnt=h` z=TvhjioxV0YBp4VQW9a0)-C6?HqDs@TDClv?)HSMLlkZ5}B0Q@T-G3 llxbjQDDh<`bY~Bl;)$qu84LwJQ4U3<3?{nOOaRhvcavh^&eZ`!&5uIht z3IZ+}HnYq!XUEmwj$be2yJK4P!Rd1=EfeN#*q!X)#L>aFQ!=}tQE1uMjT^U@QT;w4`^@JRS7WLkyn0gB zI5GX7)w!4{ezPAhsA6uQE1VQrECLz3YJ6x~EO`t`D=5 z+={KYw{lMjzjnOUc=^dz^K*Oj4xHK@d~xQZIk#I=@0RXP_>@r8*t@wl!e(!QoT>Pe z3RiKLxFtUJrhm1w*Csx_z4E}n8J|RB1-{#tB=YM$=n}CyFQqN??%YDJwdXyu?N;{+ycaaNXT z0wLCW&%TW8$x@b5^zc-aEYw_a_0%*cW-}YXxlRfX93*de_?;7Tws_!>ELFH5q*wED q?-ZGgN9QAbbCjpVPt=MG*&Fcv+OyW*wQk>MITf<~VfL&|?*;&du=@`H diff --git a/mods/MAPGEN/mcl_villages/schematics/farm.mts b/mods/MAPGEN/mcl_villages/schematics/farm.mts index 9094c8681fcde6d5c441593224154176330b7372..e47f6e22f4dd4875a5b3abe920b08e9fa23f7bf8 100644 GIT binary patch delta 214 zcmcc3bc9L7Hze4XfrWvcfsKK^9t;>bC)$fntkmTf$W6|PPfN{9PA#?qQWF>3)-wo# z#7gpuk~4sUV7ekMIl-k-hlk_9p@#YFliCycRBB}$gl9_3keDIqprRbmHnox0W0THBITbP3WV&a$E=2ty=HC zG~lU%4Vyvhv(8`t6$1E0*UBqLX}#wBJ-5*yfkm5f;)9UGXU;IVux#NKo!U~v|J9nI INIBRa01d}caR2}S delta 262 zcmX@YbepN(Hze4XfrWvSfrEj)9ts$^86xEmFD7EaFd|O~5e?3FVL`LSWoFla!i+^pB%(XXOVY#|Cv7Vgj+nIcS=mWz)jegJ{NcwRtHdr?)!fd%N~+@9_s>UvhJ4xoY*{?l c_a*;>w04Ur*~_hX`+3@=-%$(;TmDA_07bKG(EtDd diff --git a/mods/MAPGEN/mcl_villages/schematics/lamp.mts b/mods/MAPGEN/mcl_villages/schematics/lamp.mts index c8d907ebad7a6bbd63574e62b695f22ba428e4b6..4d2d1a350553d2c23044298327b0a732395ac20e 100644 GIT binary patch delta 135 zcmcb}xQfx)Hze4XfrWvYft7)|9t1#)#LOZFf!ySr__Wl#R87mA7Gm?fkpCQ4$H|S2hK1|N>5BsSRuY@ft(Msr@^ZA>(f`b cUyAC_>fzuDpW`^CQP9(c=Lj2vl^M%J0Hnt+FaQ7m delta 152 zcmZ3*c#+Y`Hze4XfrWvYfsKKs9t;@R86o=1t~fGM|{mGuePqYH}cx45P?oLm-~VD8i^VF+gf^ z2NUn)O^njqC8ar;1@Yw>nI)+}t28Elu&=L(OFqCKArY}bLm=%zvV_Hf6AgTdd5NhB z&P{80I0Ea~>Q?Y12DV7P$WmOU(4DkuYT5+Hrb`Lx4~q1qBgDk^`hhL70nYDtbA;ghu9J#9O#wW*)8 z^HI@yjb@DtHg6tkJ5H*Wl=!eTUT;C<8=%pgj*M&pIb4ShOGJvObi9dU+tI&M;=|7A z{aNo?r=-2%k>Q!+@=P)2o$5UnrS3(sKM)uHfiI)B@y(rIRTli6Cmq;U zv@G%Kj2J;y+Wbg2PRSf-Um{ESgrhh198+Z$(HixiX< zUwar%7g;WBAl@GMh~s~!adN2hrky=4O$_sy+}12S=U|x7#K5E9)oB>O&cJZOJH`pj&0uP> z1CtiW4Qfd_rK$1xMadbNDGZWuD~n6=^HP(FGLy5D6N}1HQzkPq%1mZr6rcQnQGW7T zCLUQSuqFBVIaWED=@}*QU}J!43sOrM)IeTRDk;s$EC8CEn3tZ)APQHWUX+@e7Y|lB zxsFkqQGfC*MqQ?~w25mBK<=r}uSl&-jZaC;EUv7W^LE-zp(X2c%DcRJQPu3X*lhCRXB;PiQ2w$-vz%Vm=mOKnRj*k&5xD}MBb-x-P9JI&3$ z{+@RCBlq?d(>|SBH&yPE|9&HB)0El0ht$*#wB9*!_k(xC#+mO8cy8C9ZCID~{V{v` z_muxT=Y@fQm!fe(!O@R5WK9IktavYNOg8@eG|&93i1>~N`+Qdgs_?!1o#lIFmDHli h+_K*SdS4ZUa=yKB>y)6;nrSM3%P#Ma%lNWL2mrP94k`cu diff --git a/mods/MAPGEN/mcl_villages/schematics/library.mts b/mods/MAPGEN/mcl_villages/schematics/library.mts index b47e0b4138f53fbb43aa1887249002d9c1082149..2986a71625064e764e7d60cfeef3eacca8dba011 100644 GIT binary patch delta 587 zcmdnM_J>W^Hze4XfrWvGft`V?9s(GI8JH6@ix~KGlXK#e^NUiglJk?2a#9%-C+9Ls zPflf25fO$<6_@1ar6v_+CTCAR#VEta3zsO*&rg}$!DujXq4;DyMsd-kctZvOkZf9N zUUF)&6_}d*lu>=+F9V4Zprjy3vLwGKIRhvQrWy1mp4Mf|n^>h*UlEt=z}~|n(4lwk z&;hm<9iAiI+(sNm3Bmobb9xz>40RF&n4H*j-lZ_kI@h6i?$`m&mYj$qj!rWkH6=`K zl6Y0v>FjgB#Jz*@iN2!HozAYkrmoMd->h))W0TCh4JMq6 zBPA3*f^2HnLPs`<6qeU5JK9?rcUwp^tF=@(bTBe1emr;N08fdi zhObg`hxJW~8L-QnFxanW9QPr_*J1V`goEq;hrf zz8en@EBa-Z8yO{(t8<5a|6sI%r@^|jzuYfDtKn&$+?0yvjmH#p57!Hen7sJeA?R(F z4 zo~zejaC5M2ijD8riRG%YmNwai(SSKA-f-dv3D%N$Lk7i(0n!sa zR3@(07ZL<%D#!BNik zu+8$`?K@Q_{qk}VJ%U>Q?rht!?eE^8+viv(CkRf^-cYZ%_3q5@2dX<*Zakf|hHZE0 z(n8a)RR0avy5FmJt}>tNQ~ZD3YoV&`VaKdi ztdEfpWnX12@jRiP*-FEXPAgG%7{Li(cm9He#mP{5{nQox{#$U}c<+Wh& cY6bUc>r+oG7iG?N-CCZoR`(_A*T@N30RI{7F#rGn diff --git a/mods/MAPGEN/mcl_villages/schematics/medium_house.mts b/mods/MAPGEN/mcl_villages/schematics/medium_house.mts index 43ce2391b9d1952596c3ec5028d0d66dd7105926..85ef0f9031a47eb81c48356da3c63a7ab12e92d1 100644 GIT binary patch delta 543 zcmeytx{s~iHze4XfrWvCft`V?9s(Fd8JH6@ix~KGlXK#e^NUiglJk?2a#9(DKmz57 zIXT5pk$6J}agbPX2~d5p6_^6*04tV+>n<+I&r3}z%1q8qPAn=*O<~}LOO-GerKV0? zVZetFD$mbPnZzhEc^;$P#0DuKCC*$DZ#dbB(OFUg*{+<#q%mB$=?_?CSKR9 zuZT-tAi`m=!0FI4Ln8$R4^wSsrb9n$cx(~^efBXhZ>nQlz!b*Dr;&0r%W_w3PeN!8 z&l`tW1vTXuadu|4c!n2zi5qrsTu7TxE5kD*oYc6{jBReL7m zo1sC0P)ylsNbp6^$-)ul>x-?Aq|8ZSOn7(4mckEdhkgiTf&O}|Nqz5+Fp?1=v~RLa;PDNe^pgm)r@`r1K4J?Wi@23 zX1AJbQ|oK+`Qpo8Rj+OxcPQL(#hHogtjwH`4hj<=_LR3ZGWYcSc$1cra6tXM$A!B# nHXdFQo!`|Wo7`BUd*UoUoq$H z)K0!;1)er;=}pY#`RjLw%U=`9R?X|K$XQsQ^k?Z5e@hmDg=t|~a=Kq^&v&hS6lokP z*{1p9koLRM)%%Z?c^i3Fyn4;HZC}!3?W23XEq-_5ZRhbO=l2@+0>@t3JomkcK_1ttM8&UD*TRI{;>RkCAS=__^CZXt+$uhES;fm z{<&sp#QE}){)yKC$mA(7> Y9+`7p`pC1USv9EcxqQF)F2}8Y03u+yPXGV_ diff --git a/mods/MAPGEN/mcl_villages/schematics/small_house.mts b/mods/MAPGEN/mcl_villages/schematics/small_house.mts index d7b62529cb804c5fa99a9a99a8677c4f5cc46b9f..d09fbfe00ae358153475021d2d828a1689d93dac 100644 GIT binary patch delta 373 zcmcb}@{&c=Hze4XfrWt`1nVJyL13bT_+&Fi1>xe7#LS{%D=-zGoS&4GlR9yZ{NzAJ z{fQsMCtk9gSRgjJfl*S6K`=KtC%z=VC^;jw*a}QDh=PPr3@FdfPnj&sC{bS#mz;~r;o+Gp%r-b3RWwnb!oG0g(;bb^991M2ni(`5W=>?b@8b3O5a6`6 zQM8|zW2(UQrXOo~j{I!wZJgV9tEMiY<#%H%qu@0jo*k7FDjuk4$w{1Gxx-`QFxQ5s zL*nVNtRP#C2OF4I%Y+C>hsO5{uu4brD_sov_y51VMhyS5R|iEpqT}rwq!b((3f0T( zA9S-UxU9Htefk2m1Shkei4#tqabP{OB+7pco15E;muIF_Oz8Y{fsw)gOUhyZ^-Pa! delta 406 zcmaFKa*?IpHze4XfrWt+2-)jlfI)~sA~!iFJ~_WA)hZ>ks3g8Tvm_%vy(qD`n1L5X zhJiUTvxtEoE|#31l$4XoAPy2JE&<9FTY)K{SzrkfWQm+awxsy-{QQ*3_KXq}6XYg7 z5}$a)QbiD?rX;^8IU}{$3QRMIp=wKtpQx%nv01Ag>`a(FIf)R{fO-om=DZDg%h#;H zqf^pzuJ+fF>aVdgEbQ*^FrBQcn67=}$}<&LC5J{kq09*fo4a>)vDxg}vA4Z^g;BeV zA>P0&%b!TlJ(k@RndKY&#^P_iyt(qx9$nbE2@Yt zd{Mq%rp`!h)vMCB@~S^qC7%^*oRnFYdau~RWX55M``M>6GhAeZ*<)a#Pwp61DM1on=(n8^MWLk^NUigN{Uib z8H7RHtkUe%r2GmiC=D?nIU}{Wq}U2fG3ZTBVbo>JoBWDVZgMD-*u*TUiPudhD>4e# z3xNzMPt3^yD$P$y%1MnkgBXe;W@yA94N{2V*!cX?lGGvwKDevWa}tY-E8>zF7~R-P zID}H2gj16a=xd!&;JDrx&>bss)9%kRqXi6VY(b35%)%n|hu*aOn8BMPz|YJ+;Th{L z=_8^oQhF>RqG<`uT}DcsPG6KfO6-)IB|^4xFmIZ}!EDqpvqS2Yf#@TL**6zN%wd#2 z@YK9)h1!JsHy+eIX71){tUc3kG=G5r<4&I$je>ca%9He29xhr@mwe!%dB=anx)#mE zv z_K!Xvnx@TUj9GDrC;iAecCDV+X%ibY7&b9wN&DC?^V`4?$E-N%%!x3eG6p`;Gc2-x xC(Km7E4^8;EZ2u+@m#NMi5oj+HlA4F%Io%K){FxUGaEx3w#qOt*gdNb001J2L|^~_ delta 670 zcmeyw@s{1wHze4XfrWvaftP`+9vLu5Gf3nn=fo%H7o}RIWEPdgmuHq_#HSY}78f%x zCuSBg@S;dhlvSKOi&1LgMDfW2jH0T-aLMA5{JhkpqRixM1_7{OMrv_Mu~jmVn!Jh8 ze6j$OsIwqQq9nfvBxnVu8Kgl%#U((Cimkv@e0hF;N_>84NooBo}EscQ>ZgF}J(5Vw`E%^`*Eh$P(ot(xfCkplz!ez;cMP;ce6VDk>u4k047Xlek zo|uyZbY*^0Qch~TS;d^UVVy-nP3f7?ut+`qj+d5u$2f3@CPcG{HS{9J8 zTxZVPj=uYMjz2s2`Q{=chtvtW-*f-eU*94ZnzH=(+#4_7dc+pKzG>)&} zQvF^>oKNvRIq`MdlQkjfHQWAAXxb+cdHx)CrS2J7uX{D~#3wxLIK}W*pv*1$1fNSG zkeGY2FJkLIgS;7!jv0QI+xYpRdtH;wex>zNwheo%7aLmJp7M*ZZ_7J*?$XZ5*UB7M zPpCIPdd@Wbnt=88O;y60_Y&LYvfr<7O;>-m{rd~^6R%3xcNf`Se4Sh1RKF@@Wzf=7 zyq?d_>=I9W@j9&VYv=j)Yp&;Gm|leBzk9SnO;hfdckJb)BMT?%bH(Z@CI|9;eqQ2m rRAl>)_aza9d2yO^ixhN@t@_!{pX4@eqp|n5s29Iau5$K?0j-d`W&mMO-oiV;Y+q z+b0HLW|pRsVuKA#it0BM^kh`bnOTes42%zaX?l~En!xT9wx{nw+5<+XyaiHjTwja~ z6n4*KeUoOUboUIyw%KPktXhBk@$O$$6HNFv$?-@m*!2HDGw-VQ2@0`4QYAmkI&+}m kdMM8mW;c&rNesud#GDg0y?OKG#(^U((c%o3{uxFB0D@?)dH?_b delta 275 zcmX@Xe23Z0Hze4XfrWvMft`V)9s(Hn86Pgf$I&kPkkM4BDCu#uDl8Wx9Dy4 From dffdfb3cadcdf9bbedc5f830d1b67d7c8c1552a6 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 03:59:44 +0400 Subject: [PATCH 031/521] Fix terraform --- mods/MAPGEN/mcl_villages/init.lua | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index adbb7a0f5..69debee74 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -13,19 +13,6 @@ local modpath = minetest.get_modpath(modname) local S = minetest.get_translator(modname) local basic_pseudobiome_villages = minetest.settings:get_bool("basic_pseudobiome_villages", true) local schem_path = modpath .. "/schematics/" ---[[local schematic_table = { - {name = "large_house", mts = schem_path.."large_house.mts", hwidth = 11, hdepth = 12, hheight = 9, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, - {name = "blacksmith", mts = schem_path.."blacksmith.mts", hwidth = 7, hdepth = 11, hheight = 7, hsize = 13, max_num = 0.055, rplc = basic_pseudobiome_villages }, - {name = "butcher", mts = schem_path.."butcher.mts", hwidth = 11, hdepth = 8, hheight = 10, hsize = 14, max_num = 0.03 , rplc = basic_pseudobiome_villages }, - {name = "church", mts = schem_path.."church.mts", hwidth = 13, hdepth = 13, hheight = 14, hsize = 15, max_num = 0.04 , rplc = basic_pseudobiome_villages }, - {name = "farm", mts = schem_path.."farm.mts", hwidth = 7, hdepth = 7, hheight = 13, hsize = 13, max_num = 0.1 , rplc = basic_pseudobiome_villages }, - {name = "lamp", mts = schem_path.."lamp.mts", hwidth = 3, hdepth = 3, hheight = 13, hsize = 10, max_num = 0.1 , rplc = false }, - {name = "library", mts = schem_path.."library.mts", hwidth = 12, hdepth = 12, hheight = 8, hsize = 13, max_num = 0.04 , rplc = basic_pseudobiome_villages }, - {name = "medium_house", mts = schem_path.."medium_house.mts", hwidth = 8, hdepth = 12, hheight = 8, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, - {name = "small_house", mts = schem_path.."small_house.mts", hwidth = 9, hdepth = 7, hheight = 8, hsize = 13, max_num = 0.7 , rplc = basic_pseudobiome_villages }, - {name = "tavern", mts = schem_path.."tavern.mts", hwidth = 11, hdepth = 10, hheight = 10, hsize = 13, max_num = 0.050, rplc = basic_pseudobiome_villages }, - {name = "well", mts = schem_path.."well.mts", hwidth = 6, hdepth = 8, hheight = 6, hsize = 10, max_num = 0.045, rplc = basic_pseudobiome_villages }, -}]] local schematic_table = { {name = "large_house", mts = schem_path.."large_house.mts", max_num = 0.08 , rplc = basic_pseudobiome_villages }, {name = "blacksmith", mts = schem_path.."blacksmith.mts", max_num = 0.055, rplc = basic_pseudobiome_villages }, @@ -293,14 +280,14 @@ local function terraform(plan, minp, maxp, pr) fheight = schematic_data.hheight local pos2 = { x = pos.x + fwidth - 1, - y = math_min(pos.y + fheight * 3, maxp.y), + y = math_min(pos.y + fheight + 4, maxp.y), z = pos.z + fdepth - 1 } - ground(pos, {x = pos2.x, y = pos.y, z = pos2.z}, minp, maxp, pr, build_material) + ground(pos, {x = pos2.x, y = pos.y + 1, z = pos2.z}, minp, maxp, pr, build_material) local node_list = {} for xi = pos.x, pos2.x do for zi = pos.z, pos2.z do - for yi = pos.y, pos2.y do + for yi = pos.y + 1, pos2.y do node_list[#node_list + 1] = {x = xi, y = yi, z = zi} end end From c21f9b4c4068857f80c8c8081d6bb281844a96cf Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 04:10:39 +0400 Subject: [PATCH 032/521] #204 Add own Perlin noise --- mods/MAPGEN/mcl_villages/init.lua | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 69debee74..022f0ae73 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -7,7 +7,20 @@ local chance_per_chunk = 1 local noise_multiplier = 1 local random_offset = 1 local random_multiply = 19 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk -- 1 +local noise_params = { + offset = 0, + scale = 2, + spread = { + x = mcl_mapgen.CS_NODES * chance_per_chunk, + y = mcl_mapgen.CS_NODES * chance_per_chunk, + z = mcl_mapgen.CS_NODES * chance_per_chunk, + }, + seed = 842458, + octaves = 2, + persistence = 0.5, +} +local perlin_noise local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) local S = minetest.get_translator(modname) @@ -57,7 +70,7 @@ local villages = minetest.deserialize(storage:get_string("villages") or "return local minetest_get_spawn_level = minetest.get_spawn_level local minetest_get_node = minetest.get_node local minetest_find_nodes_in_area = minetest.find_nodes_in_area -local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level +local minetest_get_perlin = minetest.get_perlin local math_pi = math.pi local math_cos = math.cos local math_sin = math.sin @@ -412,7 +425,8 @@ if mg_name ~= "singlenode" then if minp.y < minp_min then return end local pr = PseudoRandom(chunkseed * random_multiply + random_offset) local random_number = pr:next(1, chance_per_chunk) - local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + perlin_noise = perlin_noise or minetest_get_perlin(noise_params) + local noise = perlin_noise:get_3d(minp) * noise_multiplier if (random_number + noise) < struct_threshold then return end local min, max = 9999999, -9999999 for i = 1, pr:next(5,10) do From f61459ae8979febbd32604dcf86b32da289fcff8 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 04:45:42 +0400 Subject: [PATCH 033/521] #204 Register all village schematics as structures --- mods/CORE/mcl_mapgen/init.lua | 22 ++++++++++-- mods/MAPGEN/mcl_villages/init.lua | 57 +++++++++++++++++++++---------- 2 files changed, 59 insertions(+), 20 deletions(-) diff --git a/mods/CORE/mcl_mapgen/init.lua b/mods/CORE/mcl_mapgen/init.lua index bc390e597..f24d76880 100644 --- a/mods/CORE/mcl_mapgen/init.lua +++ b/mods/CORE/mcl_mapgen/init.lua @@ -505,11 +505,29 @@ function mcl_mapgen.clamp_to_chunk(x, size) end function mcl_mapgen.get_chunk_beginning(x) - return x - ((x + central_chunk_min_pos) % CS_NODES) + if tonumber(x) then + return x - ((x + central_chunk_min_pos) % CS_NODES) + end + if x.x then + return { + x = mcl_mapgen.get_chunk_beginning(x.x), + y = mcl_mapgen.get_chunk_beginning(x.y), + z = mcl_mapgen.get_chunk_beginning(x.z) + } + end end function mcl_mapgen.get_chunk_ending(x) - return mcl_mapgen.get_chunk_beginning(x) + LAST_NODE_IN_CHUNK + if tonumber(x) then + return mcl_mapgen.get_chunk_beginning(x) + LAST_NODE_IN_CHUNK + end + if x.x then + return { + x = mcl_mapgen.get_chunk_beginning(x.x) + LAST_NODE_IN_CHUNK, + y = mcl_mapgen.get_chunk_beginning(x.y) + LAST_NODE_IN_CHUNK, + z = mcl_mapgen.get_chunk_beginning(x.z) + LAST_NODE_IN_CHUNK + } + end end mcl_mapgen.get_block_seed = get_block_seed diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 022f0ae73..6f9cca5ab 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -7,7 +7,7 @@ local chance_per_chunk = 1 local noise_multiplier = 1 local random_offset = 1 local random_multiply = 19 -local struct_threshold = chance_per_chunk -- 1 +local struct_threshold = chance_per_chunk - 1 local noise_params = { offset = 0, scale = 2, @@ -39,23 +39,6 @@ local schematic_table = { {name = "tavern", mts = schem_path.."tavern.mts", max_num = 0.050, rplc = basic_pseudobiome_villages }, {name = "well", mts = schem_path.."well.mts", max_num = 0.045, rplc = basic_pseudobiome_villages }, } -for k, v in pairs(schematic_table) do - local schem_lua = minetest.serialize_schematic( - v.mts, - "lua", - { - lua_use_comments = false, - lua_num_indent_spaces = 0, - } - ):gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") .. " return schematic" - v.preloaded_schematic = schem_lua - local loaded_schematic = loadstring(schem_lua)() - local size = loaded_schematic.size - v.hwidth = size.x - v.hheight = size.y - v.hdepth = size.z - v.hsize = math.ceil(math.sqrt((size.x/2)^2 + (size.y/2)^2) * 2 + 1) -end local surface_mat = { ["mcl_core:dirt_with_dry_grass"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, ["mcl_core:dirt_with_grass"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, @@ -453,6 +436,44 @@ if mg_name ~= "singlenode" then end, mcl_mapgen.order.VILLAGES) end +for k, v in pairs(schematic_table) do + local schem_lua = minetest.serialize_schematic( + v.mts, + "lua", + { + lua_use_comments = false, + lua_num_indent_spaces = 0, + } + ):gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") .. " return schematic" + v.preloaded_schematic = schem_lua + local loaded_schematic = loadstring(schem_lua)() + local size = loaded_schematic.size + v.hwidth = size.x + v.hheight = size.y + v.hdepth = size.z + v.hsize = math.ceil(math.sqrt((size.x/2)^2 + (size.y/2)^2) * 2 + 1) + mcl_structures.register_structure({ + name = v.name, + place_function = function(pos, rotation, pr, placer) + local minp = mcl_mapgen.get_chunk_beginning(pos) + local maxp = mcl_mapgen.get_chunk_ending(pos) + local surface_pos, surface_material = find_surface(pos, minp, maxp) + local plan = { + [1] = { + pos = pos, + building = schematic_table[k], + rotation = rotation, + surface_mat = surface_material or "mcl_core:snow", + } + } + if surface_material then + terraform(plan, minp, maxp, pr) + end + place_schematics(plan, pr) + end + }) +end + function mcl_villages.get_villages() return villages end From 44575dfd96df88cf28da289df0ee7f41f1f32a23 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 04:57:38 +0400 Subject: [PATCH 034/521] #204 Register village as a structure --- mods/MAPGEN/mcl_villages/init.lua | 24 +++++++++++++++---- .../mcl_villages/locale/mcl_villages.ru.tr | 1 + mods/MAPGEN/mcl_villages/locale/template.txt | 1 + 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 6f9cca5ab..9f7a1d334 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -7,7 +7,7 @@ local chance_per_chunk = 1 local noise_multiplier = 1 local random_offset = 1 local random_multiply = 19 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk local noise_params = { offset = 0, scale = 2, @@ -387,11 +387,18 @@ minetest.register_node("mcl_villages:stonebrickcarved", { -- -- on map generation, try to build a settlement -- -local function build_a_settlement(minp, maxp, pr) +local function build_a_village(minp, maxp, pr, placer) minetest.log("action","[mcl_villages] Building village at mapchunk " .. minetest.pos_to_string(minp) .. "..." .. minetest.pos_to_string(maxp)) local pr = pr or PseudoRandom(mcl_mapgen.get_block_seed3(minp)) local plan = create_site_plan(minp, maxp, pr) - if not plan then return end + if not plan then + if placer then + if placer:is_player() then + minetest.chat_send_player(placer:get_player_name(), S("Map chunk @1 to @2 is not suitable for placing villages.", minetest.pos_to_string(minp), minetest.pos_to_string(maxp))) + end + end + return + end paths(plan, minp, maxp) terraform(plan, minp, maxp, pr) place_schematics(plan, pr) @@ -432,7 +439,7 @@ if mg_name ~= "singlenode" then end local height_difference = max - min if height_difference > max_height_difference then return end - build_a_settlement(minp, maxp, chunkkseed) + build_a_village(minp, maxp, chunkkseed) end, mcl_mapgen.order.VILLAGES) end @@ -474,6 +481,15 @@ for k, v in pairs(schematic_table) do }) end +mcl_structures.register_structure({ + name = "village", + place_function = function(pos, rotation, pr, placer) + local minp = mcl_mapgen.get_chunk_beginning(pos) + local maxp = mcl_mapgen.get_chunk_ending(pos) + build_a_village(minp, maxp, pr, placer) + end +}) + function mcl_villages.get_villages() return villages end diff --git a/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr b/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr index 467f31121..325d3b191 100644 --- a/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr +++ b/mods/MAPGEN/mcl_villages/locale/mcl_villages.ru.tr @@ -1,2 +1,3 @@ # textdomain: mcl_villages Chiseled Stone Village Bricks=Точёный каменный блок из деревни +Map chunk @1 to @2 is not suitable for placing villages.=Чанк с @1 по @2 непригоден для размещения деревень. \ No newline at end of file diff --git a/mods/MAPGEN/mcl_villages/locale/template.txt b/mods/MAPGEN/mcl_villages/locale/template.txt index e396a8b08..7d9fcb43b 100644 --- a/mods/MAPGEN/mcl_villages/locale/template.txt +++ b/mods/MAPGEN/mcl_villages/locale/template.txt @@ -1,2 +1,3 @@ # textdomain: mcl_villages Chiseled Stone Village Bricks= +Map chunk @1 to @2 is not suitable for placing villages.= From 4f2567bed052f2d3f80edd38f827a6839cd46801 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 05:41:43 +0400 Subject: [PATCH 035/521] #204 Spawn villagers --- mods/MAPGEN/mcl_villages/init.lua | 32 ++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 9f7a1d334..92af69e76 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -318,7 +318,7 @@ end local function init_nodes(p1, rotation, pr, size) local p2 = vector.subtract(vector.add(p1, size), 1) - local nodes = minetest.find_nodes_in_area(p1, p2, {"mcl_itemframes:item_frame", "mcl_furnaces:furnace", "mcl_anvils:anvil", "mcl_chests:chest"}) + local nodes = minetest.find_nodes_in_area(p1, p2, {"mcl_itemframes:item_frame", "mcl_furnaces:furnace", "mcl_anvils:anvil", "mcl_chests:chest", "mcl_villages:stonebrickcarved"}) for _, pos in pairs(nodes) do local name = minetest_get_node(pos).name local def = minetest_registered_nodes[minetest_get_node(pos).name] @@ -370,6 +370,9 @@ end -- -- register block for npc spawn -- +local function spawn_villager(pos) + minetest.add_entity({x = pos.x, y = pos.y + 1, z = pos.z}, "mobs_mc:villager") +end minetest.register_node("mcl_villages:stonebrickcarved", { description = S("Chiseled Stone Village Bricks"), _doc_items_longdesc = doc.sub.items.temp.build, @@ -381,8 +384,35 @@ minetest.register_node("mcl_villages:stonebrickcarved", { is_ground_content = false, _mcl_blast_resistance = 6, _mcl_hardness = 1.5, + on_construct = spawn_villager, }) +minetest.register_abm({ + label = "Spawn villagers", + nodenames = {"mcl_villages:stonebrickcarved"}, + interval = 60, + chance = 3, + action = function(pos, node) + -- check the space above + local p = table.copy(pos) + p.y = p.y + 1 + if minetest_get_node(p).name ~= "air" then return end + p.y = p.y + 1 + if minetest_get_node(p).name ~= "air" then return end + p.y = p.y - 1 + local villagers_counter = 0 + for _, obj in pairs(minetest.get_objects_inside_radius(p, 40)) do + local lua_entity = obj:get_luaentity() + if luaentity and luaentity.name == "mobs_mc:villager" then + villagers_counter = villagers_counter + 1 + if villagers_counter > 7 then return end + end + end + spawn_villager(pos) + end +}) + + -- -- on map generation, try to build a settlement From c3e0b871dc772f6699d241cbb903a3d4c78294d3 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 06:13:39 +0400 Subject: [PATCH 036/521] #204 Fix fireball entities --- mods/ENTITIES/mobs_mc/blaze.lua | 4 ++-- mods/ITEMS/mcl_fire/fire_charge.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 8f4a96db4..a634a6a03 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -68,7 +68,7 @@ mobs:register_mob("mobs_mc:blaze", { light_damage = 0, view_range = 16, attack_type = "projectile", - arrow = "mobs_mc:blaze_fireball", + arrow = "mobs_mc:blaze_fireball_entity", shoot_interval = 3.5, shoot_offset = 1.0, passive = false, @@ -85,7 +85,7 @@ mobs:register_mob("mobs_mc:blaze", { shoot_arrow = function(self, pos, dir) -- 2-4 damage per arrow local dmg = math.random(2,4) - mobs.shoot_projectile_handling("mobs_mc:blaze_fireball", pos, dir, self.object:get_yaw(), self.object, 7, dmg,nil,nil,nil,-0.4) + mobs.shoot_projectile_handling("mobs_mc:blaze_fireball_entity", pos, dir, self.object:get_yaw(), self.object, 7, dmg,nil,nil,nil,-0.4) end, do_custom = function(self) diff --git a/mods/ITEMS/mcl_fire/fire_charge.lua b/mods/ITEMS/mcl_fire/fire_charge.lua index 5c33288f7..3afdbf759 100644 --- a/mods/ITEMS/mcl_fire/fire_charge.lua +++ b/mods/ITEMS/mcl_fire/fire_charge.lua @@ -47,7 +47,7 @@ minetest.register_craftitem("mcl_fire:fire_charge", { _on_dispense = function(stack, pos, droppos, dropnode, dropdir) -- Throw fire charge local shootpos = vector.add(pos, vector.multiply(dropdir, 0.51)) - local fireball = add_entity(shootpos, "mobs_mc:blaze_fireball") + local fireball = add_entity(shootpos, "mobs_mc:blaze_fireball_entity") local ent = fireball:get_luaentity() if ent then ent._shot_from_dispenser = true From a90981988115b40169c508ae14c9156fa0334d13 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 18:55:18 +0400 Subject: [PATCH 037/521] Quickfix a crash --- .../api/mob_functions/projectile_handling.lua | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua index a4b4c075e..bafb12737 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua @@ -28,12 +28,14 @@ mobs.shoot_projectile_handling = function(arrow_item, pos, dir, yaw, shooter, po obj:set_acceleration({x=0, y=gravity, z=0}) obj:set_yaw(yaw-math.pi/2) local le = obj:get_luaentity() - le._shooter = shooter - le._damage = damage - le._is_critical = is_critical - le._startpos = pos - le._knockback = knockback - le._collectable = collectable + if le then + le._shooter = shooter + le._damage = damage + le._is_critical = is_critical + le._startpos = pos + le._knockback = knockback + le._collectable = collectable + end --play custom shoot sound if shooter and shooter.shoot_sound then From 2b7e2e7a255ad78e348f06a91680ecaea2dd24b6 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 19:04:21 +0400 Subject: [PATCH 038/521] Restore blaze fireball --- mods/ENTITIES/mobs_mc/blaze.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index a634a6a03..e02c57a8f 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -85,7 +85,7 @@ mobs:register_mob("mobs_mc:blaze", { shoot_arrow = function(self, pos, dir) -- 2-4 damage per arrow local dmg = math.random(2,4) - mobs.shoot_projectile_handling("mobs_mc:blaze_fireball_entity", pos, dir, self.object:get_yaw(), self.object, 7, dmg,nil,nil,nil,-0.4) + mobs.shoot_projectile_handling("mobs_mc:blaze_fireball", pos, dir, self.object:get_yaw(), self.object, 7, dmg,nil,nil,nil,-0.4) end, do_custom = function(self) From 2008239a52633617658fd38e9cfc3d18305d432a Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Feb 2022 01:03:28 +0400 Subject: [PATCH 039/521] Fix code style --- mods/ITEMS/REDSTONE/mesecons_mvps/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua index fedb8fa5d..db8eb75a2 100644 --- a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua @@ -151,7 +151,7 @@ function mesecon.mvps_get_stack(pos, dir, maximum, piston_pos) -- add connected nodes to frontiers, connected is a vector list -- the vectors must be absolute positions local connected = {} - local has_loop + local has_loop if minetest.registered_nodes[nn.name] and minetest.registered_nodes[nn.name].mvps_sticky then connected, has_loop = minetest.registered_nodes[nn.name].mvps_sticky(np, nn, piston_pos) From 86dc2e0495319f3cde10cd0d6895dfe1d7edf304 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Feb 2022 02:49:52 +0400 Subject: [PATCH 040/521] Fix chances of structures --- mods/MAPGEN/mcl_structures/desert_temple.lua | 2 +- mods/MAPGEN/mcl_structures/desert_well.lua | 4 ++-- mods/MAPGEN/mcl_structures/fossil.lua | 2 +- mods/MAPGEN/mcl_structures/ice_spike_small.lua | 2 +- mods/MAPGEN/mcl_structures/igloo.lua | 5 ++--- mods/MAPGEN/mcl_structures/jungle_temple.lua | 4 ++-- mods/MAPGEN/mcl_structures/nice_jungle_temple.lua | 4 ++-- mods/MAPGEN/mcl_structures/witch_hut.lua | 4 ++-- mods/MAPGEN/mcl_villages/init.lua | 2 +- 9 files changed, 14 insertions(+), 15 deletions(-) diff --git a/mods/MAPGEN/mcl_structures/desert_temple.lua b/mods/MAPGEN/mcl_structures/desert_temple.lua index bb4c08b3a..eb1950b18 100644 --- a/mods/MAPGEN/mcl_structures/desert_temple.lua +++ b/mods/MAPGEN/mcl_structures/desert_temple.lua @@ -5,7 +5,7 @@ local chance_per_chunk = 11 local noise_multiplier = 1 local random_offset = 999 local scanning_ratio = 0.00003 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level diff --git a/mods/MAPGEN/mcl_structures/desert_well.lua b/mods/MAPGEN/mcl_structures/desert_well.lua index af57c8183..1bd6691d2 100644 --- a/mods/MAPGEN/mcl_structures/desert_well.lua +++ b/mods/MAPGEN/mcl_structures/desert_well.lua @@ -1,11 +1,11 @@ local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) -local chance_per_chunk = 60 +local chance_per_chunk = 40 local noise_multiplier = 1 local random_offset = 999 local scanning_ratio = 0.00001 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level diff --git a/mods/MAPGEN/mcl_structures/fossil.lua b/mods/MAPGEN/mcl_structures/fossil.lua index b26b7320a..6c6c2d24b 100644 --- a/mods/MAPGEN/mcl_structures/fossil.lua +++ b/mods/MAPGEN/mcl_structures/fossil.lua @@ -4,7 +4,7 @@ local modpath = minetest.get_modpath(modname) local chance_per_block = mcl_structures.from_16x16_to_block_inverted_chance(64) local noise_multiplier = 2 local random_offset = 5 -local struct_threshold = chance_per_block - 1 +local struct_threshold = chance_per_block local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level local minetest_find_nodes_in_area = minetest.find_nodes_in_area local min_y = mcl_worlds.layer_to_y(40) diff --git a/mods/MAPGEN/mcl_structures/ice_spike_small.lua b/mods/MAPGEN/mcl_structures/ice_spike_small.lua index 801c5f66e..387c61bab 100644 --- a/mods/MAPGEN/mcl_structures/ice_spike_small.lua +++ b/mods/MAPGEN/mcl_structures/ice_spike_small.lua @@ -3,7 +3,7 @@ local modpath = minetest.get_modpath(modname) local chance_per_chunk = 3 local random_offset = 1264 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk local noise_params = { offset = 0, scale = 1, diff --git a/mods/MAPGEN/mcl_structures/igloo.lua b/mods/MAPGEN/mcl_structures/igloo.lua index 4f6c9574f..ebb88667b 100644 --- a/mods/MAPGEN/mcl_structures/igloo.lua +++ b/mods/MAPGEN/mcl_structures/igloo.lua @@ -1,11 +1,10 @@ local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) --- local chance_per_chunk = mcl_structures.from_16x16_to_chunk_inverted_chance(4400) -local chance_per_chunk = 100 +local chance_per_chunk = 39 local noise_multiplier = 1.4 local random_offset = 555 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk local scanning_ratio = 0.0003 local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level diff --git a/mods/MAPGEN/mcl_structures/jungle_temple.lua b/mods/MAPGEN/mcl_structures/jungle_temple.lua index 635f35670..9abaf4626 100644 --- a/mods/MAPGEN/mcl_structures/jungle_temple.lua +++ b/mods/MAPGEN/mcl_structures/jungle_temple.lua @@ -1,10 +1,10 @@ local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) -local chance_per_chunk = 9 +local chance_per_chunk = 30 local noise_multiplier = 1.3 local random_offset = 132 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk local scanning_ratio = 0.0003 local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level diff --git a/mods/MAPGEN/mcl_structures/nice_jungle_temple.lua b/mods/MAPGEN/mcl_structures/nice_jungle_temple.lua index dd8df05d3..75a137b03 100644 --- a/mods/MAPGEN/mcl_structures/nice_jungle_temple.lua +++ b/mods/MAPGEN/mcl_structures/nice_jungle_temple.lua @@ -1,10 +1,10 @@ local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) -local chance_per_chunk = 15 +local chance_per_chunk = 40 local noise_multiplier = 1 local random_offset = 133 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk local scanning_ratio = 0.00021 local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level diff --git a/mods/MAPGEN/mcl_structures/witch_hut.lua b/mods/MAPGEN/mcl_structures/witch_hut.lua index f6dc6ec9b..49843bb59 100644 --- a/mods/MAPGEN/mcl_structures/witch_hut.lua +++ b/mods/MAPGEN/mcl_structures/witch_hut.lua @@ -1,11 +1,11 @@ local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) -local chance_per_chunk = 3 +local chance_per_chunk = 17 local noise_multiplier = -0.9 local random_offset = 8 local scanning_ratio = 0.01 -local struct_threshold = chance_per_chunk - 1 +local struct_threshold = chance_per_chunk local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 92af69e76..4a5da47bf 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -1,9 +1,9 @@ mcl_villages = {} +local chance_per_chunk = 100 local chunk_offset_top = 16 local chunk_offset_bottom = 3 local max_height_difference = 12 local minp_min = -64 -local chance_per_chunk = 1 local noise_multiplier = 1 local random_offset = 1 local random_multiply = 19 From 0b17a790081d287c75d121790b2cd901a0cea068 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Feb 2022 02:54:16 +0400 Subject: [PATCH 041/521] Fix ocean monument chance --- mods/MAPGEN/mcl_ocean_monument/init.lua | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/mods/MAPGEN/mcl_ocean_monument/init.lua b/mods/MAPGEN/mcl_ocean_monument/init.lua index fffa6f6b0..44dcabb7c 100644 --- a/mods/MAPGEN/mcl_ocean_monument/init.lua +++ b/mods/MAPGEN/mcl_ocean_monument/init.lua @@ -1,7 +1,8 @@ - --- Check it: --- seed 1, v7 mapgen --- /teleport 14958,8,11370 +local chance_per_chunk = 5 +local noise_multiplier = 1 +local random_offset = 12342 +local struct_threshold = chance_per_chunk +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level local mcl_mapgen_get_far_node = mcl_mapgen.get_far_node local minetest_log = minetest.log @@ -44,8 +45,12 @@ mcl_mapgen.register_mapgen(function(minp, maxp, seed) local y = minp.y if y ~= y_wanted then return end + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if not noise or (random_number + noise) < struct_threshold then return end + local x, z = minp.x, minp.z - local pr = PseudoRandom(seed) -- scan the ocean - it should be the ocean: for i = 1, pr:next(10, 100) do From 5f25f0d1a6819d7cc34d740271e614e01ae3ba40 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Feb 2022 03:00:10 +0400 Subject: [PATCH 042/521] Fix protected pistons work --- mods/ITEMS/REDSTONE/mesecons_pistons/init.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 93b8df96d..e6dde3f99 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -138,8 +138,6 @@ local function piston_off(pos, node) end local function piston_orientate(pos, placer) - mesecon.mvps_set_owner(pos, placer) - -- not placed by player if not placer then return end @@ -153,6 +151,7 @@ local function piston_orientate(pos, placer) elseif pitch < -55 then minetest.add_node(pos, {name=pistonspec.piston_down}) end + mesecon.mvps_set_owner(pos, placer) end From 337757f10173c8eb532f6c9e1fdec8dc1f5ecf31 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Feb 2022 05:04:01 +0400 Subject: [PATCH 043/521] #198 Fix a crash, step 23 --- mods/HUD/mcl_inventory/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index f59476965..bcdad90d3 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -8,7 +8,7 @@ mcl_inventory = {} -- Returns a single itemstack in the given inventory to the main inventory, or drop it when there's no space left function return_item(itemstack, dropper, pos, inv) - if dropper:is_player() then + if mcl_util and mcl_util.is_player(dropper) then -- Return to main inventory if inv:room_for_item("main", itemstack) then inv:add_item("main", itemstack) @@ -130,6 +130,7 @@ end -- Drop items in craft grid and reset inventory on closing minetest.register_on_player_receive_fields(function(player, formname, fields) + if not mcl_util or not mcl_util.is_player(player) then return end if fields.quit then return_fields(player,"craft") return_fields(player,"enchanting_lapis") From e68a9504b2a6dc2fb7ba168f292dce7ed88793a9 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Feb 2022 05:10:23 +0400 Subject: [PATCH 044/521] #198 Fix a crash, step 24 --- mods/HUD/mcl_inventory/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index bcdad90d3..6aa4c7c78 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -143,6 +143,7 @@ end) if not minetest.is_creative_enabled("") then function mcl_inventory.update_inventory_formspec(player) + if not mcl_util or not mcl_util.is_player(player) then return end set_inventory(player) end end From 21fc69efa5cb2e01df5e302edcfec7377bb2ed38 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Feb 2022 05:16:08 +0400 Subject: [PATCH 045/521] #198 Fix a crash, step 25 --- mods/HUD/mcl_inventory/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index 6aa4c7c78..0a8b9a7bc 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -47,6 +47,7 @@ function return_fields(player, name) end local function set_inventory(player, armor_change_only) + if not mcl_util or not mcl_util.is_player(player) then return end if minetest.is_creative_enabled(player:get_player_name()) then if armor_change_only then -- Stay on survival inventory plage if only the armor has been changed From 11c55cce297a2dcba85d60b0bc9962a937999702 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Feb 2022 05:25:05 +0400 Subject: [PATCH 046/521] #198 Fix a crash, step 26 --- mods/HUD/mcl_experience/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index aea805fa2..2b6d4d5bf 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -157,6 +157,7 @@ function mcl_experience.throw_xp(pos, total_xp) end function mcl_experience.update(player) + if not mcl_util or not mcl_util.is_player(player) then return end local xp = mcl_experience.get_xp(player) local cache = caches[player] From 0d68282b81ace03ce5b6302f7ed30aa35c25c2b3 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 13:25:11 +0100 Subject: [PATCH 047/521] Fix composter item image * Less is more (thanks AFCMS) --- mods/ITEMS/mcl_composters/init.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index d77fd4e31..1fec4cf4a 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -223,7 +223,6 @@ local function composter_get_nodeboxes(level) } end -local composter_wieldimg = minetest.inventorycube("mcl_composter_top.png", "mcl_composter_side.png", "mcl_composter_side.png") -- -- Register empty composter -- This is the base model that is craftable and can be placed in an inventory @@ -233,10 +232,6 @@ minetest.register_node("mcl_composters:composter", { _tt_help = S("Converts organic items into bonemeal"), _doc_items_longdesc = composter_longdesc, _doc_items_usagehelp = composter_usagehelp, - -- FIXME: mcl_composter_side.png is fugly. maybe somehow use minetest.inventorycube(img1, img2, img3) - -- eeeww, that is also ugly and weird - inventory_image = composter_wieldimg, - --inventory_image = "mcl_composter_side.png", paramtype = "light", drawtype = "nodebox", node_box = composter_get_nodeboxes(0), From 1e72c1243bb8f9ce139d559bd484e120e43e09f0 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 13:46:21 +0100 Subject: [PATCH 048/521] Update documentation. * Make a mention of the one second delay before composter readies. --- mods/ITEMS/mcl_composters/init.lua | 5 +++-- mods/ITEMS/mcl_composters/locale/template.txt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 1fec4cf4a..0bb0dc969 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -18,8 +18,9 @@ local composter_usagehelp = S( "Every time an item is put in the composter, there is a chance that the " .. "composter adds another layer of compost. Some items have a bigger chance " .. "of adding an extra layer than other items. After filling up with 7 layers " .. - "of compost, the composter is full and bone meal can be retrieved from it. " .. - "Taking out the bone meal empties the composter." + "of compost, the composter is full. After a delay of approximately one " .. + "second the composter becomes ready and bone meal can be retrieved from it. " .. + "Right-clicking the composter takes out the bone meal empties the composter." ) minetest.register_craft({ diff --git a/mods/ITEMS/mcl_composters/locale/template.txt b/mods/ITEMS/mcl_composters/locale/template.txt index b882113c4..c5f9bb858 100644 --- a/mods/ITEMS/mcl_composters/locale/template.txt +++ b/mods/ITEMS/mcl_composters/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mcl_composters Composter= Composters can convert various organic items into bonemeal.= -Use organic items on the composter to fill it with layers of compost. Every time an item is put in the composter, there is a chance that the composter adds another layer of compost. Some items have a bigger chance of adding an extra layer than other items. After filling up with 7 layers of compost, the composter is full and bone meal can be retrieved from it. Taking out the bone meal empties the composter.= +Use organic items on the composter to fill it with layers of compost. Every time an item is put in the composter, there is a chance that the composter adds another layer of compost. Some items have a bigger chance of adding an extra layer than other items. After filling up with 7 layers of compost, the composter is full. After a delay of approximately one second the composter becomes ready and bone meal can be retrieved from it. Right-clicking the composter takes out the bone meal empties the composter."= filled= ready for harvest= Converts organic items into bonemeal= From 72aba1d8bb44e849c8384199027c4e397a85fcdb Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 13:54:08 +0100 Subject: [PATCH 049/521] Typo fix. * it's a spruceSapling (thanks NO11) --- mods/ITEMS/mcl_composters/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 0bb0dc969..819869876 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -125,7 +125,7 @@ local compostability = { ["mcl_core:birchsapling"] = 30, ["mcl_core:darksapling"] = 30, ["mcl_core:junglesapling"] = 30, - ["mcl_core:spruceapling"] = 30, + ["mcl_core:sprucesapling"] = 30, ["mcl_ocean:seagrass"] = 30, -- missing: small dripleaf ["mcl_sweet_berry:sweet_berry"] = 30, From 9ef9530c044bbc747a361ea8895eb1af04e97db5 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 14:03:25 +0100 Subject: [PATCH 050/521] Update mod deps * Add dependency on mcl_dye for bone meal particle spawner. --- mods/ITEMS/mcl_composters/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/mod.conf b/mods/ITEMS/mcl_composters/mod.conf index 6ae5ff3e6..845a0d325 100644 --- a/mods/ITEMS/mcl_composters/mod.conf +++ b/mods/ITEMS/mcl_composters/mod.conf @@ -1,5 +1,5 @@ name = mcl_composters author = kabou description = composters -depends = mcl_core, mcl_sounds +depends = mcl_core, mcl_sounds, mcl_dye optional_depends = doc From 4cb3c6d51b91b8f33bd86775834647e0f2fb6116 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 14:24:55 +0100 Subject: [PATCH 051/521] Add player object check. * Handle the case where a mob somehow "clicks" on a composter and we get an invalid player object passed. --- mods/ITEMS/mcl_composters/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 819869876..e36d66641 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -139,7 +139,7 @@ local function composter_add_item(pos, node, player, itemstack, pointed_thing) -- handle filling the composter when rightclicked -- as an on_rightclick handles, it returns an itemstack -- - if not player or player:get_player_control().sneak then + if not player or (player:get_player_control() and player:get_player_control().sneak) then return itemstack end if not itemstack and itemstack:is_empty() then From 77b020e1ecae1b678ef43353fcea5a3c7f0ccaf1 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 14:37:51 +0100 Subject: [PATCH 052/521] Add missing melon block. * Add melon block to the compostabiles list. --- mods/ITEMS/mcl_composters/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index e36d66641..1accfe493 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -70,7 +70,7 @@ local compostability = { ["mcl_flowers:rose_bush"] = 65, ["mcl_flowers:sunflower"] = 65, ["mcl_flowers:waterlily"] = 65, - -- missing: melon block? + ["mcl_farming:melon"] = 65, -- missing: moss block? -- mushroom aliases below? ["mcl_farming:mushroom_brown"] = 65, From b138357b118b739567e34e5202d9da4ee7deb164 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 15:39:10 +0100 Subject: [PATCH 053/521] Update mod description and fix comment. * Make mod description more descriptive. * Minor comment tweak. --- mods/ITEMS/mcl_composters/init.lua | 2 +- mods/ITEMS/mcl_composters/mod.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 1accfe493..7d2a05823 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -136,7 +136,7 @@ local compostability = { local function composter_add_item(pos, node, player, itemstack, pointed_thing) -- - -- handle filling the composter when rightclicked + -- handles filling the composter when rightclicked -- as an on_rightclick handles, it returns an itemstack -- if not player or (player:get_player_control() and player:get_player_control().sneak) then diff --git a/mods/ITEMS/mcl_composters/mod.conf b/mods/ITEMS/mcl_composters/mod.conf index 845a0d325..86d729887 100644 --- a/mods/ITEMS/mcl_composters/mod.conf +++ b/mods/ITEMS/mcl_composters/mod.conf @@ -1,5 +1,5 @@ name = mcl_composters author = kabou -description = composters +description = Composters can convert various organic items into bonemeal. depends = mcl_core, mcl_sounds, mcl_dye optional_depends = doc From 3494fa80b51aa1dd493169fd70251043d33c13f9 Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 21:42:33 +0100 Subject: [PATCH 054/521] Comment fixes. * Improve comments, some typo fixes. --- mods/ITEMS/mcl_composters/init.lua | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 7d2a05823..8a900a155 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -136,8 +136,9 @@ local compostability = { local function composter_add_item(pos, node, player, itemstack, pointed_thing) -- - -- handles filling the composter when rightclicked - -- as an on_rightclick handles, it returns an itemstack + -- handler for filling the composter when rightclicked + -- + -- as an on_rightclick handler, it returns an itemstack -- if not player or (player:get_player_control() and player:get_player_control().sneak) then return itemstack @@ -181,8 +182,9 @@ end local function composter_ready(pos) -- -- update the composter block to ready for harvesting - -- this function is a callback on_timer. + -- this function is a node callback on_timer. -- the timer is set in function 'composter_fill' when composter level is 7 + -- -- returns false in order to cancel further activity of the timer -- minetest.swap_node(pos, {name = "mcl_composters:composter_ready"}) @@ -193,14 +195,14 @@ end local function composter_harvest(pos, node, player, itemstack, pointed_thing) -- - -- handle harvesting bone meal from a ready composter when rightclicked + -- handler for harvesting bone meal from a ready composter when rightclicked -- if not player or player:get_player_control().sneak then return end - -- reset composter to empty + -- reset ready type composter to empty type minetest.swap_node(pos, {name="mcl_composters:composter"}) - -- spawn bone meal item (wtf dye?! is this how the make white cocoa) + -- spawn bone meal item (wtf dye?! is this how they make white cocoa) minetest.add_item(pos, "mcl_dye:white") -- TODO play some sounds @@ -208,7 +210,7 @@ end local function composter_get_nodeboxes(level) -- - -- Convenience function because the composter nodeboxes are very similar + -- Convenience function to construct the nodeboxes for varying levels of compost -- local top_y_tbl = {[0]=-7, -5, -3, -1, 1, 3, 5, 7} local top_y = top_y_tbl[level] / 16 @@ -225,7 +227,7 @@ local function composter_get_nodeboxes(level) end -- --- Register empty composter +-- Register empty composter node -- This is the base model that is craftable and can be placed in an inventory -- minetest.register_node("mcl_composters:composter", { From f6ec8e94d25869bf491edfbd11625c7e3ddd786a Mon Sep 17 00:00:00 2001 From: kabou Date: Thu, 17 Feb 2022 21:53:08 +0100 Subject: [PATCH 055/521] Add help alias * Add help alias for the ready type composter --- mods/ITEMS/mcl_composters/init.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 8a900a155..2c95bc71e 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -335,3 +335,9 @@ minetest.register_node("mcl_composters:composter_ready", { _compost_level = 7, on_rightclick = composter_harvest }) + +-- Add entry aliases for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_composters:composter", + "nodes", "mcl_composters:composter_ready" ) +end From 69df4f261dc4bea7ec1e613f305d24d971747c36 Mon Sep 17 00:00:00 2001 From: rudzik8 Date: Fri, 18 Feb 2022 20:58:25 +0700 Subject: [PATCH 056/521] Replace old weird sweet berry textures with the new ones by Nova_Wostra --- .../textures/mcl_farming_sweet_berry.png | Bin 462 -> 410 bytes .../textures/mcl_farming_sweet_berry_bush_0.png | Bin 318 -> 442 bytes .../textures/mcl_farming_sweet_berry_bush_1.png | Bin 759 -> 491 bytes .../textures/mcl_farming_sweet_berry_bush_2.png | Bin 800 -> 526 bytes .../textures/mcl_farming_sweet_berry_bush_3.png | Bin 858 -> 567 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry.png index 7c2349971a2e174a47503ff35b02042f9ac1fbc8..8323384fc833d751dcb0841ff5f15426608aae2d 100644 GIT binary patch delta 368 zcmV-$0gwL91DXSnBnkm@Qb$4nuFf3kks%X*32;bRa{vGf6951U69E94oEQKA0WV2J zK~y+TV;FG22&FN=3UmGcAo~8dZw!@}Z{t+Q1f@{`NVBn-7MQKb#l=vnrT{h!8^CG+ z$kwx`uEE*J0AzT(t}5I>xB(uye*eA8{J|3Me*Ok)glT@q2=M{TWyr3A8^Fv7Q3Nu7 zsQcCfMvx&OeCO96hPgNIGg@e={D-*=M8gb4@xtHl{~6vqe+XuS3^~lg!f=(DnE|Bv zj}|w>K?hBSv+qB`4F#!#8-T1CqydCM>=W1SFbX(pF^EXYgI#&qT@S7q1mFx1fN2sF z;A4pT`xh(*axN$uVc`R_=**gns4nnZvoeC)2-1umja$1mGQPa`0Pac{0Gk5R{OZFe zux1b+6ipzFAOH?9U|@p61T26C;4Xk^Mh587hz;PBK~813?gdyCj7vBufgxLSYGlrCMkzQ(GS>{s2L^VET(8AP03HC($nh5d_bAu$eZO&iBVf(l!`Peq5T*zKsqNq@3hpAX zEly6Q9y+>i?NtFF05A&RsP8t~7AM={)MFn8Tj5^dL4)JJ;}Z}pd41jHM#caD002ov JPDHLkV1m8qx8VQ) diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_0.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_0.png index 6f8c0d833dd5b5b8e805381bbaa837cc5714f15d..1f4839b8eed605455f522856ec6e1a91c874b753 100644 GIT binary patch delta 400 zcmV;B0dM}k0=ff`Bnkm@Qb$4nuFf3kks%X*32;bRa{vGf6951U69E94oEQKA0Z&Op zK~y+TV;BXvfk&?2e<%|#V1m+EfpwZS*bop6GSIusAHz^aC=CW61%JQ)XL$4cAp^S* z4_NHyyDwliFS{_qj>(%))Pn$q0LZ4#Ki|SNzPkDfEY2^<#qja@H-_6sZ=>kJFaQL9 zRIOG2gEWAEh@?CNGbcpZ%X<$P&aAnJ-2j;LpWc7Lz|Qd#EcWvUJA<^M1lRzOW|+5* z&N|Ad>tn`xdCRHaD5im&4>AA*e!PFrz#%9IW`hg_IUnjOW}qwnfhB+dZh%RMK0Jg$ zia`LEH;}^uOu*v&?z!s>%0`+XCK!NwVgu$45CF-8fSR=ynBLm8krD0!pr62ofSe98 z1mqQDZ-Ce!7l90v(~<;h28qKH640Mu_K(j$;5LCYgEWFMP#oqpm}U@wGeAIAPZngz uUkDFq051oa25E)?pcoU-|IqMaU;qHugqpr{P!VeY0000sy)2HBT|o0bqTskQ5g7cW#9G VKi1s$n6>}_002ovPDHLkV1i(VdO-jH diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_1.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_1.png index 2ac3c205d8de804a93cce796b342b78adf868f02..81c7eba9449a2a90550c41c9a0dc7f5a80902cd7 100644 GIT binary patch delta 450 zcmV;z0X_cr1?vNlBnkm@Qb$4nuFf3kks%X*32;bRa{vGf6951U69E94oEQKA0f0$F zK~y+TjZ-~K13?g-T!cF%iNpjkScpgjZ3NNkz*-Qr(BEKZ>yNPYZwR6&*jm_#1jMf* zL}NrRhM1T{^o~PT-*~(1#hmzx%-_P~EvFb11=eukpq?2!NyQeKiB96?9e%U=V0I z?^L_0F=?rA!!;ctHehaTMqp?#H^Ap?ZcIskzAcmInw(!8oN|$Wboq~WRWdCPM{XV+ zA7KIv%eC51K1Yx!1=4X40B*BMRyxgpIS6%CXFKO=j+4Bd7xEH7GZ3`~?u#cyF2wY= zhDj5%Q^ASYIJpKOO`No+Il_2DJ`1EnvTVXxDnX7q6v?$J*A7Ru3*5)oUMmh+NlP`t z3yvK(R1duZJU~Q~4h#T#9W^MCMk)o}SY4PG*;I-y%MUc1NyK)K3&Bkok$4bi0WOQR$)HfV!2kdN07*qoM6N<$g5GVsqW}N^ delta 716 zcmV;-0yF*V1NQ}xBp(E4K}|sb0I`n?{9y$E000JJOGiWi004dfB%3c9^pQRne*%X| zL_t(I%XQPuPh3?P$MMgdw|ik2hJiAcVks1MqP8(=>;|K8)5Ms#YD~H@Zrr#~lqd7pb-I4FyHw&ywD^L@_wJ%J~!#km`9 zZ>3$k7~>n8N1vM-{seVP>&e;Df8Ys+17z`@t=bjGtvRjUgeyos-KZ@?W5V5L;MBoayV1_92tX`HWOBZ|`Krom$EGP}NX&e-E$XA$k}> z4fV8z(Gatkv%3GW*^x)`*|KszrDWq@?Ewdv(DTEEbKOR%g#|pXF%FamteFBHgA+^?2 zA5g(xnLg>%Brz6MjYa2Fe_D}Jm?(saMklA7KQ@%z){QsO!pJG0jbE+oe5%=b-qXcL zri&d!Dy@|AU|XVXG^%17Kcb2Vxzn3#!pxTv?4K0f-OZCUmBOY{^w?)Khgd#f6A|i@5rQH^YY}k zcmwnOowmJtUMJqPb@+--ToPtJ^wNc|(M$gexHH`Efvf?V9Ed;w zH={6oSEg-O{jAexr$V|+iL->U0Fa2xi_2)7Hv8+o*Eb+re|<<&MOBzzA4WOIAAS3a z(G(~PAh~a_mjzI~;~OQ2uXq25$PToBjlVo**jMv;vbo*N6zMdM zet{V^Ao(~Dlpf7nDlRbAG@WYzzB0~6ts&m0GtEEp;5MYPP6tbXdNwUNhn;k zmYL%W@ueckv7X{-wsMx>?3lpP7E*bBIxP{qU|Ukj=CsLp(<@*Hut?Ga1%N(Kju`fJ zv0GoH?4T9liE-g|x#%YOOg$clY40@FIBACA&y>j(*s9eknT16zx)p{3D9jdXTdP46 b`wgORErYu1hWluNAO1>8m*Ic%a7Hl5q>;Mi~5Z-Aamo00CCgSm!4)>gIeVxcsFmzri79L3=f zRop?_*rV}3MjwmaL0)04mmua)+m1luwN$OeeDP_8wehAv42cjSx=?YX{U@!dvg`Lc z^<<;ZHiWJ$w>K#Rf9>RKe^v&Y0_#|cH>uY`IsyLz(aFV>>;FSF%idb5{NL>kFG=S`{j zry5Kx?R3n1yPBu5BcIxlPv6s#zTLT555h=@tGI~;l!ATfOXBe#f4*6r$wXm%bR=F> zuBJ59RBD0k-K0$NhA8^kQ+@AY3%mbD`DE&>c=)1cANUF{W8}+1>FBGEWUg5$WiMUd z89tdTl~tp>RQz4f^nZ?eu&)E5A8(!0kr|Rr9Mhj$ZGL+f%N91eRO%}p&Y#C>^N~^T zpCTpEjl*tkoDl|TOHrfz^-}%$@#pgIm|cETwN`R`;O%Cq8o~cGF^_(~ub;A8+YmMC np6I!NlIexhqDI4a)eG=9Lq-7@2qxvS00000NkvXXu0mjfx8Qi1 diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_3.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_3.png index a473882f4dbfc1076b0e794db9c0cd80db295492..14d3ed5454ecd3cc7786eaaccaf5c8caa9cfe312 100644 GIT binary patch delta 526 zcmV+p0`dLY2Db!|Bnkm@Qb$4nuFf3kks%X*32;bRa{vGf6951U69E94oEQKA0nAB6 zK~y+TjZ-~HLQxbxnxu&e{uD(-NLeU^AVq^9O%W6|*ic(Ew7CWiO%Xw~IoDcCLs8M% z5Rp(2{Si|BL}+4}8ulI}Seu#o7Xo+9$ zg(yisO8YaR7*Z0z;&yv031IVPn+s5Xe7X5sgaoz*-3+ZB4LRW{lB9=1CIdRNnYdOb zLN-x=rIMb`Q>Pc)Igyn<2RYd8l?t%AMhlcR?{P zfX=AndHELTJ8*a%4Clg+27$$I@x+hjVNnCVbcu4fR2kesHT=E-W;2=KD*6a5R)flt z%&_i84J=$r%ac*}&y;-4QWT0sP_qWMeiun82|tP delta 816 zcmV-01JC@o1lk6WBp(E4K}|sb0I`n?{9y$E000JJOGiWirT`QG2J~ou(2+hDe*)@B zL_t(I%WacOXcG$*hQFC)CNc4*t)`CNc*%TVBmik`NT^s zoFvjq4kh()U9Yw((x#kK+nVbH(1E#t3rKK06a&m@z$`%N`>W(~r%&)Be+mohpK5;s z5Kpy4HuzuRpK%jt01CiNAPuOZt%L7UTx)82m)%5#*Fl-b*Ro3)YFS^TBj6>I4*-o1 ztB;GK8Qm0!Pc)o;FdCxoOGVF`ldkCP2@e7i@zlcC$96bH z)$-T?2Ov2C5%8}JmmL8bf4X``*IOf5iTQrxb;m9Txo_VRwk(!a40F;3i~&i}CW%0P ze?qMcCUfq6O~FY(Xx*&jT334u9kEFdK3Qju?*nsuPnZ(47$}H94(R1cGE#kKq|wp} zjvd4Llt0FF@nWy$DAQnf4lDZqXe|}qhrk5j2IOfC(zu-6QXb@#ej!R%=DRE`n z!@)tN<3ei1jn4s5w?yCt&<_j%s_=vRWMC1`hocm^-QD58OU=F8JX@D}GTT4rq*bpB z*QRB1AExv+u5cW5|MtiJq5G z^Xqu@ajmU`;ry0?e-+9VdWM|59b1Z53gn8N;||?&AM97 Date: Fri, 18 Feb 2022 18:23:58 +0400 Subject: [PATCH 057/521] Localise a var --- mods/CORE/mcl_mapgen/mod.conf | 8 ++++---- mods/MAPGEN/mcl_mapgen_core/nether_wart.lua | 2 +- mods/MAPGEN/mcl_villages/init.lua | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/mods/CORE/mcl_mapgen/mod.conf b/mods/CORE/mcl_mapgen/mod.conf index 76b4a5c93..fa734ae2b 100644 --- a/mods/CORE/mcl_mapgen/mod.conf +++ b/mods/CORE/mcl_mapgen/mod.conf @@ -1,4 +1,4 @@ -name = mcl_mapgen -author = kay27 -description = MineClone 2/5 MapGen Basic Stuff -depends = mcl_init +name = mcl_mapgen +author = kay27 +description = MineClone 2/5 MapGen Basic Stuff +depends = mcl_init diff --git a/mods/MAPGEN/mcl_mapgen_core/nether_wart.lua b/mods/MAPGEN/mcl_mapgen_core/nether_wart.lua index 7ea73ca4b..10554e7c4 100644 --- a/mods/MAPGEN/mcl_mapgen_core/nether_wart.lua +++ b/mods/MAPGEN/mcl_mapgen_core/nether_wart.lua @@ -43,7 +43,7 @@ mcl_mapgen.register_mapgen_block(function(minp, maxp, seed) local p1 = {x = minp.x + decrease_search_area, y = y1 + decrease_search_area, z = minp.z + decrease_search_area} local p2 = {x = maxp.x - decrease_search_area, y = y2 - decrease_search_area, z = maxp.z - decrease_search_area} - pos_list = minetest_find_nodes_in_area_under_air(p1, p2, place_on) + local pos_list = minetest_find_nodes_in_area_under_air(p1, p2, place_on) local pr = PseudoRandom(seed) wart_perlin = wart_perlin or minetest_get_perlin(noise_params) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 4a5da47bf..e837ab027 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -304,7 +304,6 @@ local function paths(plan, minp, maxp) if path then for _, pos in pairs(path) do pos.y = pos.y - 1 - local surface_mat = minetest.get_node(pos).name if surface_mat == "mcl_core:sand" or surface_mat == "mcl_core:redsand" then minetest.swap_node(pos, {name = "mcl_core:sandstonesmooth2"}) From b8af8cacd58003d43c58f40f3aad6f522e4062d4 Mon Sep 17 00:00:00 2001 From: kabou Date: Fri, 18 Feb 2022 16:54:07 +0100 Subject: [PATCH 058/521] Add player object check. * Add one more check if player object is an actual player. --- mods/ITEMS/mcl_composters/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 2c95bc71e..5684c2c2b 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -197,7 +197,7 @@ local function composter_harvest(pos, node, player, itemstack, pointed_thing) -- -- handler for harvesting bone meal from a ready composter when rightclicked -- - if not player or player:get_player_control().sneak then + if not player or (player:get_player_control() and player:get_player_control().sneak) then return end -- reset ready type composter to empty type From c96e4dae39100962e319260f42c4dc532fe80097 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 19 Feb 2022 00:13:00 +0400 Subject: [PATCH 059/521] Fix mcl_time node time update --- mods/CORE/mcl_time/init.lua | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/mods/CORE/mcl_time/init.lua b/mods/CORE/mcl_time/init.lua index 31bcbbe29..8e437406b 100644 --- a/mods/CORE/mcl_time/init.lua +++ b/mods/CORE/mcl_time/init.lua @@ -14,11 +14,21 @@ local last_save_seconds_irl = seconds_irl_public local next_save_seconds_irl = last_save_seconds_irl + save_to_storage_interval local previous_seconds_irl = -2 +local time_speed_is_ok = true + local function get_seconds_irl() local time_speed = tonumber(minetest.settings:get("time_speed") or default_time_speed) if time_speed < 1 then - minetest.log("warning", "[mcl_time] time_speed < 1 - please increase to make mcl_time api work (default: " .. default_time_speed .. ")") + if time_speed_is_ok then + minetest.log("warning", "[mcl_time] time_speed < 1 - please increase to make mcl_time api work (default: " .. default_time_speed .. ")") + time_speed_is_ok = false + end return 0 + else + if not time_speed_is_ok then + minetest.log("warning", "[mcl_time] time_speed is now " .. time_speed) + time_speed_is_ok = true + end end local irl_multiplier = 86400 / time_speed local day_count = minetest.get_day_count() @@ -86,14 +96,12 @@ function mcl_time.touch(pos) meta:set_int(meta_name, seconds_irl_public) end -local touch = mcl_time.touch - function mcl_time.get_number_of_times_at_pos(pos, interval, chance) if not pos then return 0 end local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) local number_of_times = (last_time == 0) and 0 or get_number_of_times(last_time, interval, chance) - touch(pos) + meta:set_int(meta_name, seconds_irl_public) return number_of_times, seconds_irl_public end @@ -108,6 +116,7 @@ function mcl_time.get_irl_seconds_passed_at_pos(pos) local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) local irl_seconds_passed = (last_time == 0) and 0 or (seconds_irl_public - last_time) + meta:set_int(meta_name, seconds_irl_public) return irl_seconds_passed end @@ -116,6 +125,7 @@ function mcl_time.get_irl_seconds_passed_at_pos_or_1(pos) local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) local irl_seconds_passed = (last_time == 0) and 1 or (seconds_irl_public - last_time) + meta:set_int(meta_name, seconds_irl_public) return irl_seconds_passed end @@ -126,6 +136,7 @@ function mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) if last_time == 0 then return end local delta_time = seconds_irl_public - last_time if delta_time <= 0 then return end + meta:set_int(meta_name, seconds_irl_public) return delta_time end From b6b54f84d51cfd642c9af028fff576b3ae3ef293 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 19 Feb 2022 00:48:37 +0400 Subject: [PATCH 060/521] Update mcl_time to v2 --- mods/CORE/mcl_time/README.md | 88 +++++++++++++++++++++++++++++------- mods/CORE/mcl_time/init.lua | 37 +++++++++------ 2 files changed, 95 insertions(+), 30 deletions(-) diff --git a/mods/CORE/mcl_time/README.md b/mods/CORE/mcl_time/README.md index c3a1bb3af..19c461e90 100644 --- a/mods/CORE/mcl_time/README.md +++ b/mods/CORE/mcl_time/README.md @@ -1,4 +1,4 @@ -# mcl_time +# mcl_time v2.0 ## by kay27 for MineClone 5 --------------------------- This mod counts time when all players sleep or some area is inactive. @@ -15,13 +15,15 @@ Usually this value grow smoothly. But when you skip the night being in the bed, ### mcl_time.get_number_of_times(last_time, interval, chance) ------------------------------------------------------------- -Handy to process AMBs. +Returns the number of how many times something would probably happen if the area was active and we didn't skip the nights. -You pass `last_time` - last known value of `seconds_irl`, also ABM `interval` and ABM `chance`. +Arguments: + * `last_time` - you pass last known for you value of `seconds_irl` + * `interval` and `chance` - interval and chance like from ABM setup Returns: - * Integer number of how many times ABM function should be called if the area was active all the time and you didn't skip the night. - * Integer value of realtime (not in-game) seconds since world creation. + * Integer number of how many times something would probably happen if the area was active all the time and we didn't skip the nights. + * Integer value of in-real-life (not in-game) seconds since world creation. ### mcl_time.touch(pos) ----------------------- @@ -29,24 +31,76 @@ This function 'toches' node at position `pos` by writing `_t` meta variable of ` ### mcl_time.get_number_of_times_at_pos(pos, interval, chance) -------------------------------------------------------------- -Much more handy to call from LBM on area load, than `mcl_time.get_number_of_times()`! +Returns the number of how many times something would probably happen for node at pos `pos` if the area was active and we didn't skip the nights. +It reads and updates meta variable `_t` from position `pos` and uses it as previous `seconds_irl`, so we don't need to remember it. -It reads meta variable `_t` from position `pos` and uses it as previous `seconds_irl`, which then pass as first argument into `mcl_time.get_number_of_times()`. -After calling this, it also 'touches' the node at `pos` by writing `seconds_irl` into meta variable `_t`. +Argunments: + * `pos` - node position + * `interval` and `chance` - interval and chance like from ABM setup Returns: - * Integer number of how many times ABM function should be called if the area was active all the time and you didn't skip the night. - * Integer value of realtime (not in-game) seconds since world creation. - -*Warning!* This function can return 0. So it's better not to use it for regular ABMs - use `mcl_time.get_number_of_times_at_pos_or_1()` instead. + * Integer number of how many times something would happen to the node at position `pos` if the area was active all the time and we didn't skip the nights. + * For unclear conditions, like missing meta or zero `time_speed`, this function will return `0`. ### mcl_time.get_number_of_times_at_pos_or_1(pos, interval, chance) ------------------------------------------------------------------- -Much more handy to process ABMs than `mcl_time.get_number_of_times()` and `mcl_time.get_number_of_times_at_pos()`! +Returns the number of how many times something would probably happen for node at pos `pos` if the area was active and we didn't skip the nights. +It reads and updates meta variable `_t` from position `pos` and uses it as previous `seconds_irl`, so we don't need to remember it. -It just calls `mcl_time.get_number_of_times_at_pos()` but doesn't return 0, the minimum number it can return is 1, -which is the most suitable for regular ABM processing function. +Argunments: + * `pos` - node position + * `interval` and `chance` - interval and chance like from ABM setup Returns: - * Integer number of how many times ABM function should be called if the area was active all the time and you didn't skip the night. - * Integer value of realtime (not in-game) seconds since world creation. + * Integer number of how many times something would happen to the node at position `pos` if the area was active all the time and we didn't skip the nights. + * For unclear conditions, like missing meta or zero `time_speed`, this function will return `1`. + +### mcl_time.get_number_of_times_at_pos_or_nil(pos, interval, chance) +--------------------------------------------------------------------- +Returns the number of how many times something would probably happen for node at pos `pos` if the area was active and we didn't skip the nights. +It reads and updates meta variable `_t` from position `pos` and uses it as previous `seconds_irl`, so we don't need to remember it. + +Argunments: + * `pos` - node position + * `interval` and `chance` - interval and chance like from ABM setup + +Returns: + * Integer number of how many times something would happen to the node at position `pos` if the area was active all the time and we didn't skip the nights. + * For unclear conditions, like missing meta or zero `time_speed`, this function will return `nil`. + +### mcl_time.get_irl_seconds_passed_at_pos(pos) +----------------------------------------------- +Returns the number of how many in-real-life seconds would be passed for the node at position `pos`, if the area was active all the time and we didn't skip the nights. +It uses node meta variable `_t` to calculate this value. + +Argunments: + * `pos` - node position + +Returns: + * Integer number of how many in-real-life seconds would be passed for the node at position `pos, if the area was active all the time and we didn't skip the nights. + * For unclear conditions, like missing meta or zero `time_speed`, this function will return `0`. + +### mcl_time.get_irl_seconds_passed_at_pos_or_1(pos) +---------------------------------------------------- +Returns the number of how many in-real-life seconds would be passed for the node at position `pos`, if the area was active all the time and we didn't skip the nights. +It uses node meta variable `_t` to calculate this value. + +Argunments: + * `pos` - node position + +Returns: + * Integer number of how many in-real-life seconds would be passed for the node at position `pos, if the area was active all the time and we didn't skip the nights. + * For unclear conditions, like missing meta or zero `time_speed`, this function will return `1`. + +### mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) +---------------------------------------------------- +Returns the number of how many in-real-life seconds would be passed for the node at position `pos`, if the area was active all the time and we didn't skip the nights. +It uses node meta variable `_t` to calculate this value. + +Argunments: + * `pos` - node position + +Returns: + * Integer number of how many in-real-life seconds would be passed for the node at position `pos, if the area was active all the time and we didn't skip the nights. + * For unclear conditions, like missing meta or zero `time_speed`, this function will return `nil`. + diff --git a/mods/CORE/mcl_time/init.lua b/mods/CORE/mcl_time/init.lua index 8e437406b..2d7e93f9e 100644 --- a/mods/CORE/mcl_time/init.lua +++ b/mods/CORE/mcl_time/init.lua @@ -76,14 +76,14 @@ local function time_runner() end function mcl_time.get_number_of_times(last_time, interval, chance) - if not last_time then return 0 end - if seconds_irl_public < 2 then return 0 end - if not interval then return 0 end - if not chance then return 0 end - if interval < 1 then return 0 end - if chance < 1 then return 0 end + if not last_time then return 0, seconds_irl_publicend end + if seconds_irl_public < 2 then return 0, seconds_irl_public end + if not interval then return 0, seconds_irl_public end + if not chance then return 0, seconds_irl_public end + if interval < 1 then return 0, seconds_irl_public end + if chance < 1 then return 0, seconds_irl_public end local number_of_intervals = (seconds_irl_public - last_time) / interval - if number_of_intervals < 1 then return 0 end + if number_of_intervals < 1 then return 0, seconds_irl_public end local average_chance = (1 + chance) / 2 local number_of_times = math.floor(number_of_intervals / average_chance) return number_of_times, seconds_irl_public @@ -98,45 +98,56 @@ end function mcl_time.get_number_of_times_at_pos(pos, interval, chance) if not pos then return 0 end + if not time_speed_is_ok then return 0 end local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) - local number_of_times = (last_time == 0) and 0 or get_number_of_times(last_time, interval, chance) meta:set_int(meta_name, seconds_irl_public) - return number_of_times, seconds_irl_public + local number_of_times = (last_time == 0) and 0 or get_number_of_times(last_time, interval, chance) + return number_of_times end local get_number_of_times_at_pos = mcl_time.get_number_of_times_at_pos function mcl_time.get_number_of_times_at_pos_or_1(pos, interval, chance) - return math.max(get_number_of_times_at_pos(pos, interval, chance), 1), seconds_irl_public + return math.max(get_number_of_times_at_pos(pos, interval, chance), 1) +end + +function mcl_time.get_number_of_times_at_pos_or_nil(pos, interval, chance) + local number_of_times_at_pos = get_number_of_times_at_pos(pos, interval, chance) + if number_of_times_at_pos > 0 then + return number_of_times_at_pos + end end function mcl_time.get_irl_seconds_passed_at_pos(pos) if not pos then return 0 end + if not time_speed_is_ok then return 0 end local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) - local irl_seconds_passed = (last_time == 0) and 0 or (seconds_irl_public - last_time) meta:set_int(meta_name, seconds_irl_public) + local irl_seconds_passed = (last_time == 0) and 0 or (seconds_irl_public - last_time) return irl_seconds_passed end function mcl_time.get_irl_seconds_passed_at_pos_or_1(pos) if not pos then return 1 end + if not time_speed_is_ok then return 1 end local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) - local irl_seconds_passed = (last_time == 0) and 1 or (seconds_irl_public - last_time) meta:set_int(meta_name, seconds_irl_public) + local irl_seconds_passed = (last_time == 0) and 1 or (seconds_irl_public - last_time) return irl_seconds_passed end function mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) if not pos then return end + if not time_speed_is_ok then return end local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) + meta:set_int(meta_name, seconds_irl_public) if last_time == 0 then return end local delta_time = seconds_irl_public - last_time if delta_time <= 0 then return end - meta:set_int(meta_name, seconds_irl_public) return delta_time end From 5dae184c48675b146c31bd46ceb67e2207812c7c Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 21:43:51 +0000 Subject: [PATCH 061/521] mcl_amethyst.fr.tr Translation --- .../mcl_amethyst/locale/mcl_amethyst.fr.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/ITEMS/mcl_amethyst/locale/mcl_amethyst.fr.tr diff --git a/mods/ITEMS/mcl_amethyst/locale/mcl_amethyst.fr.tr b/mods/ITEMS/mcl_amethyst/locale/mcl_amethyst.fr.tr new file mode 100644 index 000000000..a6d8c5510 --- /dev/null +++ b/mods/ITEMS/mcl_amethyst/locale/mcl_amethyst.fr.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_amethyst +Amethyst Cluster= Agrégat d'améthyste +Amethyst Cluster is the final growth of amethyst bud.= L'agrégat d'améthyste est le stade final de la croissance du bourgeon d'améthyste. +Amethyst Shard= Eclat d'améthyste +An amethyst shard is a crystalline mineral.= Un éclat d'améthyste est un minéral cristallin. +Block of Amethyst= Bloc d'améthyste +Budding Amethyst= Améthyste bourgeonante +Calcite= Calcite +Calcite can be found as part of amethyst geodes.= La calcite peut être trouvée dans les géodes d'améthyste. +Large Amethyst Bud= Grand bourgeon d'améthyste +Large Amethyst Bud is the third growth of amethyst bud.= Le grand bourgeon d'améthyste est le troisième stade de la croissance du bourgeon d'améthyste. +Medium Amethyst Bud= Bourgeon d'améthyste moyen +Medium Amethyst Bud is the second growth of amethyst bud.= Le bourgeon d'améthyste moyen est le deuxième stade de la croissance du bourgeon d'améthyste. +Small Amethyst Bud= Petit bourgeon d'améthyste +Small Amethyst Bud is the first growth of amethyst bud.= Le petit bourgeon d'améthyste est le premier stade de la croissance du bourgeon d'améthyste. +The Block of Amethyst is a decoration block crafted from amethyst shards.= Le bloc d'améthyste est un bloc décoratif fabriqué à partir d'éclats d'améthyste. +The Budding Amethyst can grow amethyst= L'améthyste bourgeonante peut faire croître de l'améthyste. +Tinted Glass= Verre teinté +Tinted Glass is a type of glass which blocks lights while it is visually transparent.= Le verre teinté est un type de verre qui bloque la lumière tout en étant visuellement transparent. From 460fd7fe071b5bad084c4d64ba0e170bc2c86a40 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 19 Feb 2022 01:52:10 +0400 Subject: [PATCH 062/521] Fix nether wart growrh again --- mods/CORE/mcl_time/README.md | 3 ++- mods/ITEMS/mcl_nether/nether_wart.lua | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/CORE/mcl_time/README.md b/mods/CORE/mcl_time/README.md index 19c461e90..24a4cd1cd 100644 --- a/mods/CORE/mcl_time/README.md +++ b/mods/CORE/mcl_time/README.md @@ -3,7 +3,8 @@ --------------------------- This mod counts time when all players sleep or some area is inactive. -It depends very much on `time_speed` configuration variable, which could be changed 'on the fly' by a chat command. +It depends very much on `time_speed` configuration variable, which could be changed 'on the fly' by a chat command: + * `/set time_speed 72` If `time_speed` set to 0, this mod logs warnings and returns zeroes. diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index 0fe1a990a..8e26c529b 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -26,6 +26,7 @@ minetest.register_node("mcl_nether:nether_wart_0", { }, groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), + after_place_node = mcl_time.touch, }) minetest.register_node("mcl_nether:nether_wart_1", { @@ -170,7 +171,6 @@ local function grow(pos, node) minetest.set_node(pos, new_node) local meta = minetest.get_meta(pos) meta:set_string("gametime", tostring(mcl_time:get_seconds_irl())) - end minetest.register_abm({ @@ -186,9 +186,10 @@ minetest.register_abm({ end pos.y = pos.y+1 - for i = 1, mcl_time.get_number_of_times_at_pos_or_1(pos, interval, chance) do + for i = 1, mcl_time.get_number_of_times_at_pos(pos, interval, chance) do grow(pos, node) end + mcl_time.touch(pos) end }) @@ -206,6 +207,7 @@ minetest.register_lbm({ for i = 1, mcl_time.get_number_of_times_at_pos(pos, interval, chance) do grow(pos, node) end + mcl_time.touch(pos) end }) From 88ff49ea3ad56b60394a32071bda56f7d6fbaa08 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 21:53:08 +0000 Subject: [PATCH 063/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fanvils/locale/mcl=5Fanvils.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr index 1f03de8e5..6109e6d7f 100644 --- a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.fr.tr @@ -1,16 +1,16 @@ # textdomain: mcl_anvils -Set Name=Définir le Nom +Set Name=Nommer 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. +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. Elle a cependant une durée de vie 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 deux 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 «Nommer», 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. +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 durée de vie limitée et 3 niveaux de dommages: en bon état, légèrement endommagée et très endommagée. 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 From 9ecfef6b9b6add445c4879f704e0e3d9afa2809c Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 21:57:36 +0000 Subject: [PATCH 064/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Farmor=5Fstand/locale/mcl=5Farmor=5Fstand.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 index 867b3f043..9eb026510 100644 --- a/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.fr.tr +++ b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.fr.tr @@ -1,5 +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. +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 sert à exposer 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 +Displays pieces of armor=Expose des pièces d'armure From eb5b513c1854a13a0514a61b8f25e15922461b5f Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 22:01:54 +0000 Subject: [PATCH 065/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fbanners/locale/mcl=5Fbanners.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr index cadf37c37..258b86ca6 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr @@ -3,9 +3,9 @@ White Banner=Bannière Blanche White=Blanc Grey Banner=Bannière Grise Grey=Gris -Light Grey Banner=Bannière Gris Clair +Light Grey Banner=Bannière Gris Claire Light Grey=Gris Clair -Black Banner=Bannière Noir +Black Banner=Bannière Noire Black=Noir Red Banner=Bannière Rouge Red=Rouge @@ -27,12 +27,12 @@ Brown Banner=Bannière Marron Brown=Marron Pink Banner=Bannière Rose Pink=Rose -Lime Banner=Bannière Vert Clair +Lime Banner=Bannière Verte 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. -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. +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. Elles peuvent être placées au sol et aux murs. Les bannières peuvent arborer une variété de motifs en utilisant beaucoup de colorant dans leur fabrication. +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'établi 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) @@ -40,11 +40,11 @@ You can copy the pattern of a banner by placing two banners of the same color in @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 Inverted=Division inclinée inversée (@1) +@1 Per Bend Sinister Inverted=Division oblique inversée (@1) @1 Per Bend=Division inclinée (@1) @1 Per Bend Sinister=Division oblique (@1) -@1 Flower Charge=Figure Fleur (@1) +@1 Flower Charge=Figure de Fleur (@1) @1 Gradient=Dégradé (@1) @1 Base Gradient=Dégradé de couleurs (@1) @1 Per Fess Inverted=Division inverse (@1) From 222d3012861558590a5b71780a17f3f6282008dd Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 22:29:38 +0000 Subject: [PATCH 066/521] mcl_blackstone.fr.tr Traduction --- .../locale/mcl_blackstone.fr.tr | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr diff --git a/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr b/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr new file mode 100644 index 000000000..2f70e45c8 --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.fr.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_blackstone +Blackstone=Roche noire +Polished Blackstone=Pierre noire +Chieseled Polished Blackstone=Pierre noire sculptée +Polished Blackstone Bricks=Briques de pierre noire +Basalt=Basalte +Polished Basalt=Basalte taillé +Blackstone Slab=Dalle de roche noire +Polished Blackstone Slab=Dalle de pierre noire +Chieseled Polished Blackstone Slab=Dalle de pierre noire sculptée +Polished Blackstone Brick Slab=Dalle de briques de pierre noire +Blackstone Stairs=Escalier de roche noire +Polished Blackstone Stairs=Escalier de pierre noire +Chieseled Polished Blackstone Stairs=Escalier de pierre noire sculptée +Polished Blackstone Brick Stairs=Escalier de briques de pierre noire +Quartz Bricks=Briques de quartz +Soul Torch=Torche des âmes +Soul Lantern=Lanterne des âmes +Soul Soil=Terre des âmes +Eternal Soul Fire=Feux éternel des âmes +Gilded Blackstone=Roche noire dorée +Nether Gold Ore=Minerai d'or du Nether +Smooth Basalt=Basalte lisse From 8ba0afbaed43a82c757a328f77345aa99d440a17 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 22:33:58 +0000 Subject: [PATCH 067/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fbooks/locale/mcl=5Fbooks.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_books/locale/mcl_books.fr.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.fr.tr b/mods/ITEMS/mcl_books/locale/mcl_books.fr.tr index 7024cf5d0..0840f9645 100644 --- a/mods/ITEMS/mcl_books/locale/mcl_books.fr.tr +++ b/mods/ITEMS/mcl_books/locale/mcl_books.fr.tr @@ -1,6 +1,6 @@ # 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. +Books are used to make bookshelves and book and quills.=Les livres sont utilisés pour fabriquer des étagères et des livres avec une plumes. “@1”="@1" Copy of “@1”=Copie de "@1" Copy of Copy of “@1”=Copie de Copie de "@1" @@ -24,5 +24,5 @@ Hold it in your hand, then rightclick to read the book.=Tenez-le dans votre main 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 +Book and Quill=Livre avec une Plume +Write down some notes=Prenez quelques notes From 9f395390e4d0df8a6fa45dadd959e1b0a6a61966 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 19 Feb 2022 02:36:02 +0400 Subject: [PATCH 068/521] Fix Nether Wart growth final hopefully --- mods/ITEMS/mcl_nether/nether_wart.lua | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index 8e26c529b..90af6bdd6 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -26,7 +26,7 @@ minetest.register_node("mcl_nether:nether_wart_0", { }, groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), - after_place_node = mcl_time.touch, + on_construct = mcl_time.touch, }) minetest.register_node("mcl_nether:nether_wart_1", { @@ -49,6 +49,7 @@ minetest.register_node("mcl_nether:nether_wart_1", { }, groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), + on_construct = mcl_time.touch, }) minetest.register_node("mcl_nether:nether_wart_2", { @@ -71,6 +72,7 @@ minetest.register_node("mcl_nether:nether_wart_2", { }, groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), + on_construct = mcl_time.touch, }) minetest.register_node("mcl_nether:nether_wart", { @@ -155,6 +157,7 @@ local names = {"mcl_nether:nether_wart_0", "mcl_nether:nether_wart_1", "mcl_neth local function grow(pos, node) local step = nil + local node = node or minetest.get_node(pos) for i, name in ipairs(names) do if name == node.name then step = i @@ -169,8 +172,6 @@ local function grow(pos, node) new_node.param = node.param new_node.param2 = node.param2 minetest.set_node(pos, new_node) - local meta = minetest.get_meta(pos) - meta:set_string("gametime", tostring(mcl_time:get_seconds_irl())) end minetest.register_abm({ @@ -178,7 +179,7 @@ minetest.register_abm({ nodenames = {"mcl_nether:nether_wart_0", "mcl_nether:nether_wart_1", "mcl_nether:nether_wart_2"}, neighbors = {"group:soil_nether_wart"}, interval = interval, - chance = chance, + chance = 1, action = function(pos, node) pos.y = pos.y-1 if minetest.get_item_group(minetest.get_node(pos).name, "soil_nether_wart") == 0 then @@ -187,9 +188,8 @@ minetest.register_abm({ pos.y = pos.y+1 for i = 1, mcl_time.get_number_of_times_at_pos(pos, interval, chance) do - grow(pos, node) + grow(pos) end - mcl_time.touch(pos) end }) @@ -205,9 +205,8 @@ minetest.register_lbm({ end pos.y = pos.y+1 for i = 1, mcl_time.get_number_of_times_at_pos(pos, interval, chance) do - grow(pos, node) + grow(pos) end - mcl_time.touch(pos) end }) From 7600c315122180174fe4eba90c933ac241e4cf14 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 22:37:21 +0000 Subject: [PATCH 069/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fbows/locale/mcl=5Fbows.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr index 313081e48..6cbe098f5 100644 --- a/mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.fr.tr @@ -2,12 +2,12 @@ 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. +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. Elles 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 accrochée à 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. +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% de chances de faire 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 quelque part 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 From b8a8c793422584ae63334353653d75d954dcefe9 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 22:40:30 +0000 Subject: [PATCH 070/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fbrewing/locale/mcl=5Fbrewing.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_brewing/locale/mcl_brewing.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.fr.tr b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.fr.tr index 232026fba..64dcd8d6e 100644 --- a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.fr.tr +++ b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.fr.tr @@ -3,8 +3,8 @@ Brewing Stand=Alambic Inventory=Inventaire To use a brewing stand, rightclick it.=Pour utiliser un alambic, faites un clic droit dessus. To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Pour distiller, vous avez besoin de poudre de blaze comme carburant, d'un ingrédient à distiller et d'au moins 1 bouteille en verre remplie d'un liquide. -Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Placez la poudre de blaze dans l'emplacement de gauche, l'ingrédient à distiller dans l'emplacement du milieu et 1 à 3 bouteilles dans les emplacements restantes. +Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Placez la poudre de blaze dans l'emplacement de gauche, l'ingrédient à distiller dans l'emplacement du milieu et 1 à 3 bouteilles dans les emplacements restants. When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=Lorsque vous avez trouvé une bonne combinaison, la distillation commencera automatiquement et de la vapeur commencera à apparaître, consommant le carburant et l'ingrédient à distiller. Les potions seront bientôt prêtes. Different combinations of brewing materials and liquids will give different results. Try to experiment!=Différentes combinaisons d'ingrédients et de liquides donneront des résultats différents. Essayez d'expérimenter! The stand allows you to brew potions!=L'alambic permet de produire des potions! -Brew Potions=Potions +Brew Potions=Prépare des potions From 0a10470e03ccae4fbac192c7523119c26c9cc088 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 23:01:41 +0000 Subject: [PATCH 071/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fchests/locale/mcl=5Fchests.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr index 0956c8705..431365633 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.fr.tr @@ -1,31 +1,31 @@ # 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. +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é, 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 +White Shulker Box=Boîte de Shulker Blanche +Light Grey Shulker Box=Boîte de Shulker Gris Clair +Orange Shulker Box=Boîte de Shulker Orange +Cyan Shulker Box=Boîte de Shulker Cyan +Magenta Shulker Box=Boîte de Shulker Magenta +Purple Shulker Box=Boîte de Shulker Violette +Light Blue Shulker Box=Boîte de Shulker Bleu Clair +Blue Shulker Box=Boîte de Shulker Bleue +Yellow Shulker Box=Boîte de Shulker Jaune +Brown Shulker Box=Boîte de Shulker Marron +Lime Shulker Box=Boîte de Shulker Vert Clair +Green Shulker Box=Boîte de Shulker Verte +Pink Shulker Box=Boîte de Shulker Rose +Red Shulker Box=Boîte de Shulker Rouge +Grey Shulker Box=Boîte de Shulker Grise +Black Shulker Box=Boîte de Shulker 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 +Shulker Box=Boîte de Shulker Large Chest=Coffre Large Inventory=Inventaire 27 inventory slots=27 emplacements d'inventaire From cd69ace83abbc503da3553bde842878ff625da2e Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 23:03:09 +0000 Subject: [PATCH 072/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fbanners/locale/mcl=5Fbanners.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr index 258b86ca6..fbfd935a5 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr @@ -3,7 +3,7 @@ White Banner=Bannière Blanche White=Blanc Grey Banner=Bannière Grise Grey=Gris -Light Grey Banner=Bannière Gris Claire +Light Grey Banner=Bannière Gris Clair Light Grey=Gris Clair Black Banner=Bannière Noire Black=Noir @@ -27,9 +27,9 @@ Brown Banner=Bannière Marron Brown=Marron Pink Banner=Bannière Rose Pink=Rose -Lime Banner=Bannière Verte Clair +Lime Banner=Bannière Vert Clair Lime=Vert Clair -Light Blue Banner=Bannière Bleue Clair +Light Blue Banner=Bannière Bleu 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. Elles peuvent être placées au sol et aux murs. Les bannières peuvent arborer une variété de motifs en utilisant beaucoup de colorant dans leur fabrication. 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'établi 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. From 7c5554a0f6c998aeeb0ddfe0d5f060354a24c69d Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 19 Feb 2022 03:03:23 +0400 Subject: [PATCH 073/521] Remove crash on creative to survival gamemode change --- mods/HUD/hudbars/init.lua | 4 +-- mods/HUD/mcl_experience/init.lua | 45 ++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/mods/HUD/hudbars/init.lua b/mods/HUD/hudbars/init.lua index 505ff403b..ae4dd1713 100644 --- a/mods/HUD/hudbars/init.lua +++ b/mods/HUD/hudbars/init.lua @@ -52,11 +52,11 @@ end -- Load default settings dofile(modpath.."/default_settings.lua") -if minetest.get_modpath("mcl_experience") and not minetest.is_creative_enabled("") then +--if minetest.get_modpath("mcl_experience") and not minetest.is_creative_enabled("") then -- reserve some space for experience bar: hb.settings.start_offset_left.y = hb.settings.start_offset_left.y - 20 hb.settings.start_offset_right.y = hb.settings.start_offset_right.y - 20 -end +--end local function player_exists(player) return player ~= nil and player:is_player() diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index 2b6d4d5bf..65f456f81 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -156,6 +156,27 @@ function mcl_experience.throw_xp(pos, total_xp) end end +local function init_hudbars(player) + if not minetest.is_creative_enabled(player:get_player_name()) then + hud_bars[player] = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 1}, + offset = {x = (-9 * 28) - 3, y = -(48 + 24 + 16 - 5)}, + scale = {x = 2.8, y = 3.0}, + alignment = {x = 1, y = 1}, + z_index = 11, + }) + + hud_levels[player] = player:hud_add({ + hud_elem_type = "text", + position = {x = 0.5, y = 1}, + number = 0x80FF20, + offset = {x = 0, y = -(48 + 24 + 24)}, + z_index = 12, + }) + end +end + function mcl_experience.update(player) if not mcl_util or not mcl_util.is_player(player) then return end local xp = mcl_experience.get_xp(player) @@ -164,6 +185,9 @@ function mcl_experience.update(player) cache.level = xp_to_level(xp) if not minetest.is_creative_enabled(player:get_player_name()) then + if not hud_bars[player] then + init_hudbars(player) + end player:hud_change(hud_bars[player], "text", "mcl_experience_bar_background.png^[lowpart:" .. math.floor(math.floor(xp_to_bar(xp, cache.level) * 18) / 18 * 100) .. ":mcl_experience_bar.png^[transformR270" @@ -187,26 +211,7 @@ minetest.register_on_joinplayer(function(player) caches[player] = { last_time = get_time(), } - - if not minetest.is_creative_enabled(player:get_player_name()) then - hud_bars[player] = player:hud_add({ - hud_elem_type = "image", - position = {x = 0.5, y = 1}, - offset = {x = (-9 * 28) - 3, y = -(48 + 24 + 16 - 5)}, - scale = {x = 2.8, y = 3.0}, - alignment = {x = 1, y = 1}, - z_index = 11, - }) - - hud_levels[player] = player:hud_add({ - hud_elem_type = "text", - position = {x = 0.5, y = 1}, - number = 0x80FF20, - offset = {x = 0, y = -(48 + 24 + 24)}, - z_index = 12, - }) - end - + init_hudbars(player) mcl_experience.update(player) end) From 32fe30e571341371356d880125ca36776794f3ed Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 23:05:40 +0000 Subject: [PATCH 074/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fclock/locale/mcl=5Fclock.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr b/mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr index 604f50858..3f2d430f1 100644 --- a/mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr +++ b/mods/ITEMS/mcl_clock/locale/mcl_clock.fr.tr @@ -1,5 +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. +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), 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 From 952fd163b78687d4e36c532f483beb35272b17b9 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 23:11:04 +0000 Subject: [PATCH 075/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcolorblocks/locale/mcl=5Fcolorblocks.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- .../ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr index d457364ef..75f0073d5 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.fr.tr @@ -12,7 +12,7 @@ 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 Glazed Terracotta=Terre Cuite Emaillée Noire Black Concrete Powder=Béton en Poudre Noir Black Concrete=Béton Noir Red Terracotta=Terre Cuite Rouge @@ -63,13 +63,13 @@ 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. +Terracotta is a basic building material. It comes in many different colors.=La terre cuite est un matériau de construction de base. Elle 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. Elle peut être tournée en la 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. Elle 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é +Colored Terracotta=Terre Cuite Colorée Glazed Terracotta=Terre Cuite Emaillée Concrete Powder=Béton en Poudre Concrete=Béton From 5a4313155720e22f8dec58f6c18a7abe9b0745a7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 23:21:54 +0000 Subject: [PATCH 076/521] mcl_composters.fr.tr Translation --- mods/ITEMS/mcl_composters/locale/mcl_composters.fr.tr | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 mods/ITEMS/mcl_composters/locale/mcl_composters.fr.tr diff --git a/mods/ITEMS/mcl_composters/locale/mcl_composters.fr.tr b/mods/ITEMS/mcl_composters/locale/mcl_composters.fr.tr new file mode 100644 index 000000000..7e0b9c8b1 --- /dev/null +++ b/mods/ITEMS/mcl_composters/locale/mcl_composters.fr.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_composters +Composter=Composteur +Composters can convert various organic items into bonemeal.=Les composteurs convertissent divers éléments organiques en farine d'os. +Use organic items on the composter to fill it with layers of compost. Every time an item is put in the composter, there is a chance that the composter adds another layer of compost. Some items have a bigger chance of adding an extra layer than other items. After filling up with 7 layers of compost, the composter is full and bone meal can be retrieved from it. Taking out the bone meal empties the composter.=Utiliser des éléments organiques sur le composteur le remplit de couches de compost. Chaque fois qu'un élément est mis dans le composteur, il y a une chance que le composteur rajoute une couche de compost. Certains élémnets ont de plus grandes chances que d'autres d'ajouter une couche de compost. Une fois le composteur rempli de 7 couche de compost, il est plein et on peut récupérer la farine d'os. +filled=plain +ready for harvest=prêt pour la récolte +Converts organic items into bonemeal=Convertit les éléments organiques en farine d'os From c2bc51f025c7766335bec8cfc95188e02048ea52 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 18 Feb 2022 23:40:41 +0000 Subject: [PATCH 077/521] mcl_copper.fr.tr Translation --- mods/ITEMS/mcl_copper/locale/mcl_copper.fr.tr | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 mods/ITEMS/mcl_copper/locale/mcl_copper.fr.tr diff --git a/mods/ITEMS/mcl_copper/locale/mcl_copper.fr.tr b/mods/ITEMS/mcl_copper/locale/mcl_copper.fr.tr new file mode 100644 index 000000000..1efae66ee --- /dev/null +++ b/mods/ITEMS/mcl_copper/locale/mcl_copper.fr.tr @@ -0,0 +1,37 @@ +# textdomain: mcl_copper +A block of copper is mostly a decorative block.=Le bloc de cuivre est surtout un bloc décoratif. +A block used for compact raw copper storage.=Un bloc utilisé pour le stockage compact de cuivre brut. +Block of Copper=Bloc de cuivre +Block of Raw Copper=Bloc de cuivre brut +Copper Ingot=Lingot de cuivre +Copper Ore=Minerai de cuivre +Cut copper is a decorative block.=Le cuivre taillé est un bloc décoratif. +Cut Copper=Cuivre taillé +Double Slab of Cut Copper=Double dalle de cuivre taillé +Double Slab of Exposed Cut Copper=Double dalle de cuivre taillé exposé +Double Slab of Oxidized Cut Copper=Double dalle de cuivre taillé oxydé +Double Slab of Weathered Cut Copper=Double dalle de cuivre taillé érodé +Exposed copper is a decorative block.=Le cuivre exposé est un bloc décoratif. +Exposed Copper=Cuivre exposé +Exposed cut copper is a decorative block.=Le cuivre taillé exposé est un bloc décoratif. +Exposed Cut Copper=Cuivre taillé exposé +Molten Raw Copper. It is used to craft blocks.=Cuivre brut fondu. Utilisé pour fabriquer des blocs. +Oxidized copper is a decorative block.=Le cuivre oxydé est un bloc décoratif. +Oxidized Copper=Cuivre oxydé +Oxidized cut copper is a decorative block.=Le cuivre taillé oxydé est un bloc décoratif. +Oxidized Cut Copper=Cuivre taillé oxydé +Raw Copper. Mine a Copper Ore to get it.=Cuivre brut. Creuser dans du minerai de cuivre pour l'obtenir. +Raw Copper=Cuivre brut +Slab of Cut Copper=Dalle de cuivre taillé +Slab of Exposed Cut Copper=Dalle de cuivre taillé exposé +Slab of Oxidized Cut Copper=Dalle de cuivre taillé oxydé +Slab of Weathered Cut Copper=Dalle de cuivre taillé érodé +Some copper contained in stone, it is pretty common and can be found below sea level.=Un peu de cuivre se trouve dans la pierre, il est plutôt répandu et peut être trouvé sous le niveau de la mer. +Stairs of Cut Copper=Escalier de cuivre taillé +Stairs of Exposed Cut Copper=Escalier de cuivre taillé exposé +Stairs of Oxidized Cut Copper=Escalier de cuivre taillé oxydé +Stairs of Weathered Cut Copper=Escalier de cuivre taillé érodé +Weathered copper is a decorative block.=Le cuivre érodé est un bloc décoratif. +Weathered Copper=Cuivre érodé +Weathered cut copper is a decorative block.=Le cuivre taillé érodé est un bloc décoratif. +Weathered Cut Copper=Cuivre taillé érodé From 70880b832a0184a8531c197c84158bdc20ca0c88 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 00:14:01 +0000 Subject: [PATCH 078/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections, reformulations --- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 54 +++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 64aadd6db..c4c818aae 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -9,7 +9,7 @@ A block of gold is mostly a shiny decorative block but also useful as a compact 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 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 pleins de ressource 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. @@ -20,13 +20,13 @@ 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. +Andesite is an igneous rock.=L'andésite est une roche volcanique. 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. +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 sur lesquels on peut marcher. Ils sont utilisés pour créer des limites de cartes d'aventure et autres. 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. +Bedrock is a very hard type of rock. It can not be broken, destroyed, collected or moved by normal means, unless in Creative Mode.=La bedrock est un type de roche très dur. Elle ne peut pas être brisée, détruite, collectée ou déplacée par des moyens normaux, sauf en mode créatif. Birch Bark=Écorce de Bouleau Birch Leaves=Feuilles de Bouleau Birch Sapling=Pousse de Bouleau @@ -39,7 +39,7 @@ 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. +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 charbons. 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. @@ -47,15 +47,15 @@ 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. +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 résister aux coups. 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=Grès Rouge Sculpté +Chiseled Sandstone=Grès Sculpté 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 @@ -68,7 +68,7 @@ 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. +Cobwebs can be walked through, but significantly slow you down.=Les toiles d'araignée peuvent être traversées, 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é @@ -81,27 +81,27 @@ 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. +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'elles sont placése sur le sol (comme la terre) dans un carré 2×2 et exposées à la lumière. +Dead Bush=Buisson mort +Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Les buissons morts sont des plantes peu remarquables que l'on trouve souvent dans les zones sèches. Ils peuvent servir à récolter des bâtons. Diamond=Diamant 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. +Diorite is an igneous rock.=La diorite est une roche volcanique. 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. +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 ne peut être trouvé que seul, pas en filons. Emeralds are used in villager trades as currency.=Les émeraudes sont utilisées pour faire des échanges avec les villageois. 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. +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. Elle fond dans une source d'eau en quelques secondes. Glass=Verre Gold Ingot=Lingot d'Or Gold Nugget=Pépite d'Or @@ -109,7 +109,7 @@ 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=Granit +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. @@ -117,12 +117,12 @@ 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. +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. Elle fond près des sources de lumière de bloc à un niveau de lumière de 12 ou plus. Lorsqu'elle fond ou se casse en se reposant sur un autre bloc, elle 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. +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; leur interêt principal est de créer des lingots de fer. Jungle Bark=Écorce d'Acajou Jungle Leaves=Feuilles d'Acajou Jungle Sapling=Pousse d'Acajou @@ -134,7 +134,7 @@ 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. +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 la touchez pas, cela vous fera très 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 Clair @@ -162,7 +162,7 @@ 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. +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 présente 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=Granit Poli @@ -184,13 +184,13 @@ Sand is found in large quantities at beaches and deserts.=Le sable se trouve en 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. +Slime blocks are very bouncy and prevent fall damage.=Les blocs de slime sont rebondissants 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 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 filons moyens ou grands à 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 @@ -205,7 +205,7 @@ Stone=Roche 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. +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 terre, de sable, de sable rouge, de podzol ou de terre stérile. Lorsqu'une canne à sucre est cassée, toutes les cannes à sucre connectées au-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. @@ -220,14 +220,14 @@ This is a full block of snow. Snow of this thickness is usually found in areas o 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. +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. Elle 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 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, une pousse 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. @@ -235,7 +235,7 @@ When placed on soil (such as dirt) and exposed to light, an oak sapling will gro 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. +“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 d'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. @@ -244,7 +244,7 @@ Lava interacts with water various ways:=La lave interagit avec l'eau de différe • 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. +Granite is an igneous rock.=Le granit est une roche volcanique. 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 From f74726a0219d6059a0acef1be498438304dc4cf7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 00:53:54 +0000 Subject: [PATCH 079/521] mcl_deepslate.fr.tr Translation --- .../mcl_deepslate/locale/mcl_deepslate.fr.tr | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.fr.tr diff --git a/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.fr.tr b/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.fr.tr new file mode 100644 index 000000000..1305ad387 --- /dev/null +++ b/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.fr.tr @@ -0,0 +1,51 @@ +# textdomain: mcl_deepslate +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 dont va sortir un poisson d'argent lorsqu'il sera cassé. Il a la même apparence que son équivalent normal. +Chiseled deepslate is the chiseled version of deepslate.=l'ardoise des abîmes sculptée est la version sculptée de l'ardoise des abîmes. +Chiseled Deepslate=Ardoise des abîmes sculptée +Cobbled deepslate is a stone variant that functions similar to cobblestone or blackstone.=La pierre des abîmes est une variante de roche similaire à la pierre ou la pierre noire. +Cobbled Deepslate Slab=Dalle de pierre des abîmes +Cobbled Deepslate Stairs=Escalier de pierre des abîmes +Cobbled Deepslate Wall=Muret de pierre des abîmes +Cobbled Deepslate=Pierre des abîmes +Cracked Deepslate Bricks=Ardoise des abîmes taillée craquelée +Cracked Deepslate Tiles=Ardoise des abîmes carrelée craquelée +Deepslate bricks are the brick version of deepslate.=L'ardoise des abîmes taillée est la version brique de l'ardoise des abîmes. +Deepslate Bricks Slab=Dalle d'ardoise des abîmes taillée +Deepslate Bricks Stairs=Escalier d'ardoise des abîmes taillée +Deepslate Bricks Wall=Muret d'ardoise des abîmes taillée +Deepslate Bricks=Ardoise des abîmes taillée +Deepslate coal ore is a variant of coal ore that can generate in deepslate and tuff blobs.=Le minerai de charbon de l'ardoise des abîmes est une variante de minerai de charbon qui apparaît dans l'ardoise des abîmes et les filons de tuf. +Deepslate Coal Ore=Minerai de charbon de l'ardoise des abîmes +Deepslate copper ore is a variant of copper ore that can generate in deepslate and tuff blobs.=Le minerai de cuivre de l'ardoise des abîmes est une variante de minerai de cuivre qui apparaît dans l'ardoise des abîmes et les filons de tuf. +Deepslate Copper Ore=Minerai de cuivre de l'ardoise des abîmes +Deepslate diamond ore is a variant of diamond ore that can generate in deepslate and tuff blobs.=Le minerai de diamand de l'ardoise des abîmes est une variante de minerai de diamand qui apparaît dans l'ardoise des abîmes et les filons de tuf. +Deepslate Diamond Ore=Minerai de diamand de l'ardoise des abîmes +Deepslate emerald ore is a variant of emerald ore that can generate in deepslate and tuff blobs.=Le minerai d'émeraude de l'ardoise des abîmes est une variante de minerai d'émeraude qui apparaît dans l'ardoise des abîmes et les filons de tuf. +Deepslate Emerald Ore=Minerai d'émeraude de l'ardoise des abîmes +Deepslate gold ore is a variant of gold ore that can generate in deepslate and tuff blobs.=Le minerai d'or de l'ardoise des abîmes est une variante de minerai d'or qui apparaît dans l'ardoise des abîmes et les filons de tuf. +Deepslate Gold Ore=Minerai d'or de l'ardoise des abîmes +Deepslate iron ore is a variant of iron ore that can generate in deepslate and tuff blobs.=Le minerai de fer de l'ardoise des abîmes est une variante de minerai de fer qui apparaît dans l'ardoise des abîmes et les filons de tuf. +Deepslate Iron Ore=Minerai de fer de l'ardoise des abîmes +Deepslate is a stone type found deep underground in the Overworld that functions similar to regular stone but is harder than the stone.=L'ardoise des abîmes est un type de roche présente dans les profondeurs de l'Overworld qui fonctionne de manière similaire à la roche classique mais en plus dur. +Deepslate Lapis Lazuli Ore=Minerai de lapis-lazuli de l'ardoise des abîmes +Deepslate lapis ore is a variant of lapis ore that can generate in deepslate and tuff blobs.=Le minerai de lapis de l'ardoise des abîmes est une variante de minerai de lapis-lazuli qui apparaît dans l'ardoise des abîmes et les filons de tuf. +Deepslate redstone ore is a variant of redstone ore that can generate in deepslate and tuff blobs.=Le minerai de redstone de l'ardoise des abîmes est une variante de minerai de redstone qui apparaît dans l'ardoise des abîmes et les filons de tuf. +Deepslate Redstone Ore=Minerai de Redstone de l'ardoise des abîmes +Deepslate tiles are a decorative variant of deepslate.=L''ardoise des abîmes carrelée est une variante décorative de l'ardoise des abîmes. +Deepslate Tiles Slab=Dalle d'ardoise des abîmes carrelée +Deepslate Tiles Stairs=Escalier d'ardoise des abîmes carrelée +Deepslate Tiles Wall=Muret d'ardoise des abîmes carrelée +Deepslate Tiles=Ardoise des abîmes carrelée +Deepslate=Ardoise des abïmes +Double Cobbled Deepslate Slab=Dalle double de pierre des abîmes +Double Deepslate Bricks Slab=Dalle double d'ardoise des abîmes taillée +Double Deepslate Tiles Slab=Dalle double d'ardoise des abîmes carrelée +Double Polished Deepslate Slab=Dalle double d'ardoise des abïmes polie +Hides a silverfish=Cache un poisson d'argent +Infested Deepslate=Ardoise des abïmes infestée +Lit Deepslate Redstone Ore=Minerai de Redstone de l'ardoise des abîmes éclairé +Polished deepslate is the stone-like polished version of deepslate.=l'ardoise des abîmes polie est la version polie de l'ardoise des abîmes, de manière similaire à la pierre. +Polished Deepslate Slab=Dalle d'ardoise des abïmes +Polished Deepslate Stairs=Escalier d'ardoise des abïmes +Polished Deepslate Wall=Muret d'ardoise des abïmes +Polished Deepslate=Ardoise des abïmes polie \ No newline at end of file From 7d6097fd065ba42687360e7fdd642d97991648ac Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 00:57:38 +0000 Subject: [PATCH 080/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdoors/locale/mcl=5Fdoors.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr index 9d1f25d9a..0ad520651 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr @@ -16,9 +16,9 @@ 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. +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. Elles occupent la partie supérieure ou inférieure d'un bloc, selon la façon dont elles ont été placées. 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. +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. Elles occupent la partie supérieure ou inférieure d'un bloc, selon la façon dont elles ont été placées. 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 From 254c445538f5009a3f87817afe3cfe24f3aae06a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 01:01:20 +0000 Subject: [PATCH 081/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdye/locale/mcl=5Fdye.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections, cohérence --- mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr index 8d53cc73e..24a937b85 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.fr.tr @@ -1,5 +1,5 @@ # textdomain: mcl_dye -Bone Meal=Poudre d'Os +Bone Meal=Farine d'Os Light Grey Dye=Teinture Gris Clair Grey Dye=Teinture Gris Ink Sac=Poche d'Encre @@ -19,7 +19,7 @@ This item is a dye which is used for dyeing and crafting.=Cet objet est un color 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. +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 ainsi. Lorsque vous cliquez avec le bouton droit sur un bloc d'herbe, les hautes herbes et les fleurs poussent autour. 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 From 7fe70035e2c9dabe7155b9400ff6008483bb9bfb Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 01:07:56 +0000 Subject: [PATCH 082/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fenchanting/locale/mcl=5Fenchanting.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correction --- mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr index 985499964..57d9d0b93 100644 --- a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr @@ -16,7 +16,7 @@ Increases underwater movement speed.=Augmente la vitesse de déplacement sous l' Efficiency=Efficacité Increases mining speed.=Augmente la vitesse de minage. Feather Falling=Chute amortie -Reduces fall damage.=Reduit les dégats de chute. +Reduces fall damage.=Réduit les dégats de chute. Fire Aspect=Aura de feu Sets target on fire.=Définit la cible en feu. Fire Protection=Protection contre le feu @@ -36,7 +36,7 @@ Increases knockback.=Augmente le recul. Looting=Butin Increases mob loot.=Augmente le butin des mobs. Loyalty=Loyauté -Trident returns after being thrown. Higher levels reduce return time.=Trident revient après avoir été jeté. Des niveaux plus élevés réduisent le temps de retour. +Trident returns after being thrown. Higher levels reduce return time.=Le trident revient après avoir été jeté. Des niveaux plus élevés réduisent le temps de retour. Luck of the Sea=Chance de la mer Increases rate of good loot (enchanting books, etc.)=Augmente le taux de bon butin (livres enchanteurs, etc.) Lure=Appât @@ -52,7 +52,7 @@ Increases arrow damage.=Augmente les dégâts des flèches. Projectile Protection=Protection contre les projectiles Reduces projectile damage.=Réduit les dommages causés par les projectiles. Protection=Protection -Reduces most types of damage by 4% for each level.=éduit la plupart des types de dégâts de 4% pour chaque niveau. +Reduces most types of damage by 4% for each level.=Réduit la plupart des types de dégâts de 4% pour chaque niveau. Punch=Frappe Increases arrow knockback.=Augmente le recul de la flèche. Quick Charge=Charge rapide @@ -60,7 +60,7 @@ Decreases crossbow charging time.=Diminue le temps de chargement de l'arbalète. Respiration=Apnée Extends underwater breathing time.=Prolonge le temps de respiration sous l'eau. Riptide=Impulsion -Trident launches player with itself when thrown. Works only in water or rain.=Trident lance le joueur avec lui-même lorsqu'il est lancé. Fonctionne uniquement sous l'eau ou sous la pluie. +Trident launches player with itself when thrown. Works only in water or rain.=Le trident lance le joueur avec lui-même lorsqu'il est lancé. Fonctionne uniquement sous l'eau ou sous la pluie. Sharpness=Tranchant Increases damage.=Augmente les dégâts. Silk Touch=Toucher de soie From 07b7a9ea90b18bd1e277af89deac5621fcc65310 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 01:15:46 +0000 Subject: [PATCH 083/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fend/locale/mcl=5Fend.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_end/locale/mcl_end.fr.tr | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr b/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr index dc091a0f4..4131fe8c7 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.fr.tr @@ -8,27 +8,27 @@ End rods are decorative light sources.=Les barres de l'End sont des sources de l 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. +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. Elle 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. +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 soutient la plante entière. Elle 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é +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 la plante de chorus qui pousse dans l'End. 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 dangereux. 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=Fruit du 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. +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 de l'End dans l'Overworld et pour activer les portails de l'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 du portail de l'End 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 de l'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é +Randomly teleports you when eaten=Vous téléporte aléatoirement quand il est mangé Guides the way to the mysterious End dimension=Guide le chemin vers la dimension mystérieuse de l'End End Crystal=Cristal de l'End -End Crystals are explosive devices. They can be placed on Obsidian or Bedrock. Ignite them by a punch or a hit with an arrow. End Crystals can also be used the spawn the Ender Dragon by placing one at each side of the End Exit Portal.=Les cristaux de l'End sont des dispositifs explosifs. Ils peuvent être placés sur de l'Obsidienne ou de la Bedrock. Allumez-les par un coup de poing ou avec une flèche. Les cristaux de l'End peuvent également être utilisés pour engendrer l'Ender dragon en en plaçant un de chaque côté du portail de sortie de l'End. +End Crystals are explosive devices. They can be placed on Obsidian or Bedrock. Ignite them by a punch or a hit with an arrow. End Crystals can also be used the spawn the Ender Dragon by placing one at each side of the End Exit Portal.=Les cristaux de l'End sont des dispositifs explosifs. Ils peuvent être placés sur de l'Obsidienne ou de la Bedrock. Allumez-les par un coup de poing ou avec une flèche. Les cristaux de l'End peuvent également être utilisés pour invoquer l'Ender dragon en en plaçant un de chaque côté du portail de sortie de l'End. Explosion radius: @1=Rayon d'explosion: @1 Ignited by a punch or a hit with an arrow=Enflammé par un coup de poing ou un coup avec une flèche -Place the End Crystal on Obsidian or Bedrock, then punch it or hit it with an arrow to cause an huge and probably deadly explosion. To Spawn the Ender Dragon, place one at each side of the End Exit Portal.=Placez le cristal de l'End sur l'obsidienne ou le substrat rocheux, puis frappez-le à coup de poing ou avec une flèche pour provoquer une énorme explosion probablement mortelle. Pour engendrer l'Ender dragon, placez-en un de chaque côté du portail de sortie de l'End. +Place the End Crystal on Obsidian or Bedrock, then punch it or hit it with an arrow to cause an huge and probably deadly explosion. To Spawn the Ender Dragon, place one at each side of the End Exit Portal.=Placez le cristal de l'End sur l'obsidienne ou le substrat rocheux, puis frappez-le à coup de poing ou avec une flèche pour provoquer une énorme explosion probablement mortelle. Pour invoquer l'Ender dragon, placez-en un de chaque côté du portail de sortie de l'End. From 82f63f01b67c56c402f10eb4048f2256a34369f4 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 01:35:35 +0000 Subject: [PATCH 084/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Ffarming/locale/mcl=5Ffarming.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mcl_farming/locale/mcl_farming.fr.tr | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr index 5ee1bcdfc..b2fa8265d 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.fr.tr @@ -1,6 +1,6 @@ # 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 +Grows into a beetroot plant. Chickens like beetroot seeds.=Pousse en plante de betterave. 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 @@ -8,24 +8,24 @@ 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. +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 obtenir 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) +Premature Carrot Plant=Plant de Carotte 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 carottes 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. Elles peuvent être récoltées à tout moment mais ne rapporteront de bénéfices qu'à maturité. +Premature Carrot Plant (Stage @1)=Plant de Carotte 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. +Mature carrot plants are ready to be harvested for carrots. They won't grow any further.=Les plants de carottes matures sont prêtes à être récoltés pour obtenir des carottes. Elles 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 +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 aiment 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 la manger. Placez-la 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=Carotte 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. +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 les cultures. Elles sont utilisées 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 terre, 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 @@ -35,28 +35,28 @@ 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. +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 obtenir 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. +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ête à 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é. +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 pommes de terre 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. Elles peuvent être récoltées à 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. +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. Les porcs aiment les 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-la dans votre main et faites un clic droit pour la manger. Placez-la au-dessus des terres agricoles pour la planter. Elle 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. +Baked potatoes are food items which are more filling than the unbaked ones.=Les pommes de terre au four sont plus copieuses que celles non cuites. 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. +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 très bonne. Vous pouvez la manger pour restaurer des points de faim, mais il y a 60% de chances qu'elle 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. +Grows into a pumpkin stem which in turn grows pumpkins. Chickens like pumpkin seeds.=Pousse en une tige de citrouille qui à son tour fait pousser des citrouilles. Les poulets aiment les 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. @@ -66,15 +66,15 @@ A mature pumpkin stem attempts to grow a pumpkin at one of its four adjacent blo 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. +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 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. +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. Elle 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. +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, le sol nécessaire pour planter des cultures. Ells sont créées 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. +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. Elles sont créées 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é. @@ -88,7 +88,7 @@ Wheat is used in crafting. Some animals like wheat.=Le blé est utilisé dans l' 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é. +Hay bales are decorative blocks made from wheat.=Les balles de foin sont des blocs décoratifs faits de 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=Pousse sur les terres agricoles @@ -96,4 +96,4 @@ Turns block into farmland=Transforme un bloc en terres agricoles 60% chance of poisoning=60% de chances d'empoisonnement Surface for crops=Surface pour les cultures Can become wet=Peut devenir humide -Uses: @1=Utilisations: @1 +Uses: @1=Utilisations: @1 \ No newline at end of file From df080ad94991cda384f9e6aeb52ae614e0eb3285 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 01:45:11 +0000 Subject: [PATCH 085/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Ffire/locale/mcl=5Ffire.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr index 60b6ffd0e..0e269f695 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.fr.tr @@ -1,16 +1,16 @@ # 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. +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, elles voleront en ligne droite et éclateront en feu à l'impact. Alternativement, elles 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 la. 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. +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 à courte durée de vie. 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 à courte durée de vie. 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 qui fait des dégats et peux 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é. Contrairement au 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 si vous vous tenez à l'intérieur cela fait des dégats. +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é. Contrairement au 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 si vous vous tenez à l'intérieur cela fait des dégats. @1 has been cooked crisp.=@1 a été cuit croustillant. -@1 felt the burn.=@1 sent le brûler. +@1 felt the burn.=@1 sent le brûlé. @1 died in the flames.=@1 est mort dans les flammes. @1 died in a fire.=@1 est mort dans un incendie. Fire=Feu From c9f84224f3c07f9f2e0c00abd8c5b77cf84e945b Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 01:46:59 +0000 Subject: [PATCH 086/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Ffences/locale/mcl=5Ffences.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr index ccfb86d95..a124ac21c 100644 --- a/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr @@ -1,6 +1,6 @@ # 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. +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. Elles 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 ouverts ou fermés et ne peuvent pas être sautés. Les barrières se connecteront 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 From 88c15f967e325656dc26eba15956efeb642eda70 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 01:47:32 +0000 Subject: [PATCH 087/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Ffences/locale/mcl=5Ffences.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr index a124ac21c..3583b4830 100644 --- a/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.fr.tr @@ -1,5 +1,5 @@ # 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. Elles ne peuvent pas être sautés par un simple saut. +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. Elles ne peuvent pas être sautées 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 ouverts ou fermés et ne peuvent pas être sautés. Les barrières se connecteront 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 From 17c30de74a5f9f4f578eb6a3a5e785b20eaafa51 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 19 Feb 2022 06:52:51 +0400 Subject: [PATCH 088/521] Fix maps in a very lame way --- mods/ITEMS/mcl_maps/init.lua | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index 954fe9ee7..314d91688 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -140,16 +140,22 @@ function mcl_maps.create_map(pos) return itemstack end +local loading_maps = {} + function mcl_maps.load_map(id) - if id == "" or creating_maps[id] then + if id == "" or creating_maps[id] or loading_maps[id] then return end local texture = "mcl_maps_map_texture_" .. id .. ".png" if not loaded_maps[id] then - loaded_maps[id] = true - minetest.dynamic_add_media(map_textures_path .. texture, function() end) + loading_maps[id] = true + minetest.dynamic_add_media({filepath = map_textures_path .. texture, ephemeral = true}, function(player_name) + loaded_maps[id] = true + loading_maps[id] = nil + end) + return end return texture From e817c1dbc672874bfe0f5f2e1fc461540cc41ab1 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sat, 19 Feb 2022 21:14:51 +0800 Subject: [PATCH 089/521] Update Russian and other translations --- .../ENTITIES/mcl_boats/locale/mcl_boats.ru.tr | 5 +- mods/ENTITIES/mcl_boats/locale/template.txt | 1 + .../mcl_minecarts/locale/mcl_minecarts.ru.tr | 58 ++-- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr | 10 +- .../mcl_paintings/locale/mcl_paintings.ru.tr | 2 +- mods/ENTITIES/mobs_mc/locale/mobs_mc.ru.tr | 32 +- .../lightning/locale/lightning.ru.tr | 6 +- .../locale/mcl_void_damage.ru.tr | 4 +- .../mcl_weather/locale/mcl_weather.ru.tr | 9 +- mods/HELP/doc/doc/locale/doc.ru.tr | 6 +- .../locale/doc_identifier.ru.tr | 6 +- .../HELP/doc/doc_items/locale/doc_items.ru.tr | 104 +++--- .../locale/mcl_craftguide.ru.tr | 14 +- mods/HELP/mcl_doc/locale/mcl_doc.ru.tr | 52 +-- .../locale/mcl_doc_basics.ru.tr | 324 +++++++++--------- mods/HELP/mcl_tt/locale/mcl_tt.ru.tr | 47 +-- mods/HELP/mcl_tt/locale/template.txt | 1 + mods/HUD/awards/locale/awards.ru.tr | 52 +-- mods/HUD/hudbars/locale/hudbars.ru.tr | 4 +- .../locale/mcl_achievements.ru.tr | 96 +++--- mods/HUD/mcl_achievements/locale/template.txt | 6 + mods/HUD/mcl_credits/locale/mcl_credits.ru.tr | 26 +- .../locale/mcl_death_messages.ru.tr | 112 +++--- mods/HUD/mcl_experience/bottle.lua | 2 +- .../locale/mcl_experience.ru.tr | 5 +- mods/HUD/mcl_experience/locale/template.txt | 1 + mods/HUD/mcl_hbarmor/locale/hbarmor.de.tr | 2 - mods/HUD/mcl_hbarmor/locale/hbarmor.es.tr | 2 - mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr | 2 - mods/HUD/mcl_hbarmor/locale/hbarmor.it.tr | 2 - mods/HUD/mcl_hbarmor/locale/hbarmor.ru.tr | 2 - .../mcl_inventory/locale/mcl_inventory.ru.tr | 15 +- mods/HUD/mcl_inventory/locale/template.txt | 1 + .../locale/mcl_comparators.ru.tr | 16 +- .../locale/mcl_dispensers.ru.tr | 34 +- .../mcl_droppers/locale/mcl_droppers.ru.tr | 8 +- .../mcl_observers/locale/mcl_observers.ru.tr | 6 +- .../locale/mesecons_button.ru.tr | 10 +- .../locale/mesecons_commandblock.ru.tr | 26 +- .../locale/mesecons_delayer.ru.tr | 6 +- .../locale/mesecons_lightstone.ru.tr | 6 +- .../locale/mesecons_noteblock.ru.tr | 16 +- .../locale/mesecons_pistons.ru.tr | 10 +- .../locale/mesecons_pressureplates.ru.tr | 22 +- .../locale/mesecons_solarpanel.ru.tr | 8 +- .../locale/mesecons_torch.ru.tr | 14 +- .../locale/mesecons_walllever.de.tr | 2 +- .../locale/mesecons_walllever.es.tr | 2 +- .../locale/mesecons_walllever.fr.tr | 2 +- .../locale/mesecons_walllever.pl.tr | 2 +- .../locale/mesecons_walllever.ru.tr | 8 +- .../mesecons_walllever/locale/template.txt | 2 +- .../locale/mesecons_wires.ru.tr | 10 +- mods/ITEMS/mcl_amethyst/init.lua | 2 +- mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr | 16 +- mods/ITEMS/mcl_armor/locale/mcl_armor.ru.tr | 29 +- mods/ITEMS/mcl_armor/locale/template.txt | 1 + .../locale/mcl_armor_stand.ru.tr | 8 +- .../mcl_banners/locale/mcl_banners.ru.tr | 102 +++--- mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr | 28 +- .../locale/mcl_blackstone.de.tr | 2 +- mods/ITEMS/mcl_blackstone/locale/template.txt | 4 +- mods/ITEMS/mcl_books/locale/mcl_books.ru.tr | 8 +- mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr | 17 +- mods/ITEMS/mcl_bows/locale/template.txt | 3 + .../mcl_brewing/locale/mcl_brewing.ru.tr | 12 +- .../mcl_buckets/locale/mcl_buckets.ru.tr | 8 +- mods/ITEMS/mcl_cake/locale/mcl_cake.ru.tr | 8 +- .../mcl_cauldrons/locale/mcl_cauldrons.de.tr | 2 +- .../mcl_cauldrons/locale/mcl_cauldrons.es.tr | 2 +- .../mcl_cauldrons/locale/mcl_cauldrons.pl.tr | 2 +- .../mcl_cauldrons/locale/mcl_chaudrons.fr.tr | 2 +- .../mcl_cauldrons/locale/mcl_chaudrons.ru.tr | 6 +- mods/ITEMS/mcl_cauldrons/locale/template.txt | 2 +- mods/ITEMS/mcl_chests/locale/mcl_chests.ru.tr | 34 +- mods/ITEMS/mcl_clock/locale/mcl_clock.ru.tr | 2 +- mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.ru.tr | 4 +- .../locale/mcl_colorblocks.ru.tr | 46 +-- .../mcl_compass/locale/mcl_compass.ru.tr | 4 +- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 267 ++++++++------- mods/ITEMS/mcl_core/locale/template.txt | 1 + .../locale/mcl_crafting_table.ru.tr | 8 +- mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr | 18 +- mods/ITEMS/mcl_dye/locale/mcl_dye.ru.tr | 26 +- .../locale/mcl_enchanting.ru.tr | 21 +- mods/ITEMS/mcl_enchanting/locale/template.txt | 1 + mods/ITEMS/mcl_end/locale/mcl_end.ru.tr | 56 +-- .../mcl_farming/locale/mcl_farming.ru.tr | 78 +++-- mods/ITEMS/mcl_farming/locale/template.txt | 2 + mods/ITEMS/mcl_fences/locale/mcl_fences.ru.tr | 12 +- mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr | 26 +- .../mcl_fireworks/locale/mcl_fireworks.ru.tr | 4 +- .../mcl_fishing/locale/mcl_fishing.ru.tr | 18 +- .../locale/mcl_flowerpots.ru.tr | 8 +- .../mcl_flowers/locale/mcl_flowers.ru.tr | 10 +- .../mcl_furnaces/locale/mcl_furnaces.ru.tr | 4 +- mods/ITEMS/mcl_heads/locale/mcl_heads.ru.tr | 6 +- .../mcl_hoppers/locale/mcl_hoppers.ru.tr | 12 +- .../locale/mcl_itemframes.ru.tr | 2 +- .../mcl_jukebox/locale/mcl_jukebox.ru.tr | 14 +- mods/ITEMS/mcl_maps/locale/mcl_maps.ru.tr | 4 +- .../mcl_mobitems/locale/mcl_mobitems.ru.tr | 83 ++--- .../locale/mcl_mobspawners.ru.tr | 6 +- .../locale/mcl_monster_eggs.ru.tr | 16 +- .../mcl_mushroom/locale/mcl_mushrooms.de.tr | 24 -- .../mcl_mushrooms/locale/mcl_mushrooms.ru.tr | 40 +-- mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr | 43 +-- mods/ITEMS/mcl_nether/locale/template.txt | 5 +- mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr | 76 ++-- .../mcl_portals/locale/mcl_portals.ru.tr | 26 +- .../mcl_potions/locale/mcl_potions.ru.tr | 100 +++--- mods/ITEMS/mcl_raw_ores/init.lua | 10 +- mods/ITEMS/mcl_signs/locale/mcl_signs.ru.tr | 8 +- .../mcl_sponges/locale/mcl_sponges.ru.tr | 12 +- mods/ITEMS/mcl_spyglass/init.lua | 6 +- mods/ITEMS/mcl_stairs/locale/mcl_stairs.ru.tr | 84 ++--- .../mcl_throwing/locale/mcl_throwing.ru.tr | 12 +- mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr | 12 +- mods/ITEMS/mcl_tools/locale/mcl_tools.ru.tr | 24 +- mods/ITEMS/mcl_tools/locale/template.txt | 4 + .../mcl_torches/locale/mcl_torches.ru.tr | 2 +- mods/ITEMS/mcl_walls/locale/mcl_walls.ru.tr | 12 +- mods/ITEMS/mcl_wool/locale/mcl_wool.ru.tr | 20 +- .../mclx_fences/locale/mclx_fences.ru.tr | 6 +- .../mclx_stairs/locale/mclx_stairs.ru.tr | 86 ++--- mods/ITEMS/xpanes/locale/xpanes.ru.tr | 40 +-- .../locale/mcl_structures.ru.tr | 8 +- mods/MISC/findbiome/locale/findbiome.ru.tr | 4 +- .../mcl_commands/locale/mcl_commands.ru.tr | 22 +- mods/MISC/mcl_privs/locale/mcl_privs.ru.tr | 2 +- mods/MISC/mcl_wip/locale/mcl_wip.ru.tr | 6 +- .../PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr | 8 +- mods/PLAYER/mcl_skins/locale/mcl_skins.ru.tr | 6 +- mods/PLAYER/mcl_spawn/locale/mcl_spawn.ru.tr | 2 +- 134 files changed, 1498 insertions(+), 1490 deletions(-) delete mode 100644 mods/HUD/mcl_hbarmor/locale/hbarmor.de.tr delete mode 100644 mods/HUD/mcl_hbarmor/locale/hbarmor.es.tr delete mode 100644 mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr delete mode 100644 mods/HUD/mcl_hbarmor/locale/hbarmor.it.tr delete mode 100644 mods/HUD/mcl_hbarmor/locale/hbarmor.ru.tr delete mode 100644 mods/ITEMS/mcl_mushroom/locale/mcl_mushrooms.de.tr diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.ru.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.ru.tr index 5bd6e4c4d..ce128659b 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.ru.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.ru.tr @@ -4,8 +4,9 @@ Birch Boat=Берёзовая лодка Boat=Лодка Boats are used to travel on the surface of water.=С помощью лодки можно путешествовать по водной поверхности. Dark Oak Boat=Лодка из тёмного дуба -Jungle 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.=Правый клик по воде спустит лодку на воду. Правый клик по лодке разместит вас в ней. [Влево] и [Вправо] - рулить, [Вперед] - разгоняться, [Назад] - тормозить или плыть назад. Правый клик по лодке, когда вы в ней, позволит выйти из неё. Удар по лодке превратит её обратно в предмет. +Obsidian 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_boats/locale/template.txt b/mods/ENTITIES/mcl_boats/locale/template.txt index ac52bc19f..10c810402 100644 --- a/mods/ENTITIES/mcl_boats/locale/template.txt +++ b/mods/ENTITIES/mcl_boats/locale/template.txt @@ -6,6 +6,7 @@ Boats are used to travel on the surface of water.= Dark Oak Boat= Jungle Boat= Oak Boat= +Obsidian 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. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.= Spruce Boat= Water vehicle= diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr index 6189bac84..5dcb4f112 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr @@ -1,36 +1,36 @@ # 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.=Чтобы взять вагонетку, стукните её, удерживая клавишу [Красться]. -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=Вагон с командным блоком -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.=Поместите на землю, чтобы сделать железную дорогу, рельсы автоматически соединятся между собой и будут превращаться в плавный повороты, T-образные развилки, перекрёстки и уклоны там, где это потребуется. +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=Вагонетка с командным блоком +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.=Поместите рельсы на землю, чтобы сделать железную дорогу, рельсы автоматически соединятся между собой и будут образовывать повороты, T-образные развилки, перекрёстки и склоны там, где это потребуется. 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.=Чтобы обнаруживать вагонетку и подавать энергию редстоуна, подключите его к дорожке редстоуна или механизму редстоуна, после чего направьте любую вагонетку через него. +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.=Подсоедините к нажимным рельсам провод редстоуна или редстоуновые механизмы, чтобы активировать их когда по рельсам проезжает вагонетка. Track for minecarts=Железная дорога -Speed up when powered, slow down when not powered=Разгоняет, если подключён, тормозит, если не подключён -Activates minecarts when powered=Активирует особые вагонетки, если подключён -Emits redstone power when a minecart is detected=Испускает энергию редстоуна при обнаружении вагонетки +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=Можно воспламенить с помощью инструмента или подключенного рельсового активатора +Can be ignited by tools or powered activator rail=Можно поджечь с помощью инструмента или активирующими рельсами Sneak to dismount=Нажмите [Красться] для высадки diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr index 3fb2eb2f1..b7c2e1d51 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr @@ -1,11 +1,11 @@ # 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.=Просто поместите это туда, где хотите, чтобы появился моб. Животные будут появляться уже прирученные, если это не нужно, удерживайте клавишу [Красться] при размещении. Если поместить это на спаунер, появляющийся из него моб будет изменён. +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.=Вам нужно обладать привилегией “maphack”, чтобы изменить спаунер моба. -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.=Прежде чем использовать именную бирку, нужно задать имя на наковальне. Тогда вы сможете использовать бирку, чтобы дать имя мобу. +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=Задайте имя при помощи наковальни +Set name at anvil=Переименуйте на наковальни diff --git a/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.ru.tr b/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.ru.tr index cc2f52778..3cd8ebca7 100644 --- a/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.ru.tr +++ b/mods/ENTITIES/mcl_paintings/locale/mcl_paintings.ru.tr @@ -1,2 +1,2 @@ # textdomain:mcl_paintings -Painting=Рисование +Painting=Картина diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.ru.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.ru.tr index 8857dda97..6733f22b2 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.ru.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.ru.tr @@ -1,24 +1,24 @@ # 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.=Тотем работает только когда вы держите его в руке. Если вы получаете смертельный урон, вы спасаетесь от смерти и получаете второй шанс с 1 HP. Однако тотем при этом уничтожается. +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.=Тотем работает только тогда, когда вы держите его в руке. Если вы получаете смертельный урон, вы спасаетесь от смерти и получаете второй шанс с 1 HP. Однако тотем при этом уничтожается. Agent=Агент Bat=Летучая мышь Blaze=Ифрит Chicken=Курица Cow=Корова -Mooshroom=Гриб +Mooshroom=Грибная корова Creeper=Крипер -Ender Dragon=Дракон Предела +Ender Dragon=Дракон Края Enderman=Эндермен Endermite=Эндермит Ghast=Гаст Elder Guardian=Древний страж Guardian=Страж Horse=Лошадь -Skeleton Horse=Скелет лошади -Zombie Horse=Зомби-лошадь -Donkey=Ослик +Skeleton Horse=Лошадь-скелет +Zombie Horse=Лошадь-зомби +Donkey=Осёл Mule=Мул Iron Golem=Железный голем Llama=Лама @@ -36,7 +36,7 @@ Skeleton=Скелет Stray=Странник Wither Skeleton=Скелет-иссушитель Magma Cube=Лавовый куб -Slime=Слизняк +Slime=Слизень Snow Golem=Снежный голем Spider=Паук Cave Spider=Пещерный паук @@ -53,13 +53,13 @@ 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.=Алмазные доспехи лошади, надетые на лошадь, отлично защищают её от вреда. -Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Поместите это на лошадь, чтобы одеть лошадь в доспехи. Ослики и мулы не могут носить лошадиные доспехи. +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.=Алмазная конская броня может быть надета на лошадь, чтобы повысить её защиту от урона. +Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Поместите это на лошадь, чтобы одеть лошадь в броню. Ослы и мулы не могут носить конскую броню. Farmer=Фермер Fisherman=Рыбак Fletcher=Лучник @@ -71,6 +71,6 @@ Leatherworker=Кожевник Butcher=Мясник Weapon Smith=Оружейник Tool Smith=Инструментальщик -Cleric=Церковник +Cleric=Священник Nitwit=Нищий -Protects you from death while wielding it=Защищает вас от смерти, пока вы владеете им +Protects you from death while wielding it=Защищает вас от смерти, пока вы держите его diff --git a/mods/ENVIRONMENT/lightning/locale/lightning.ru.tr b/mods/ENVIRONMENT/lightning/locale/lightning.ru.tr index 68bcf3555..68f51c81b 100644 --- a/mods/ENVIRONMENT/lightning/locale/lightning.ru.tr +++ b/mods/ENVIRONMENT/lightning/locale/lightning.ru.tr @@ -1,4 +1,4 @@ # textdomain: lightning -@1 was struck by lightning.=@1 убило молнией. -Let lightning strike at the specified position or yourself=Позволяет молнии бить в заданную позицию или в вас -No position specified and unknown player=Позиция не задана и игрок неизвестен +@1 was struck by lightning.=@1 был убит молнией. +Let lightning strike at the specified position or yourself=Бьёт молнией в заданную позицию или в вас +No position specified and unknown player=Позиция не определена и игрок неизвестен diff --git a/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.ru.tr b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.ru.tr index 35feb9684..66859f374 100644 --- a/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.ru.tr +++ b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.ru.tr @@ -1,3 +1,3 @@ # textdomain: mcl_void_damage -The void is off-limits to you!=Пустота запрещена для вас! -@1 fell into the endless void.=@1 упал(а) в бесконечную пустоту. +The void is off-limits to you!=Пустота ограничена для вас! +@1 fell into the endless void.=@1 упал в пустоту. diff --git a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.ru.tr b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.ru.tr index 0c3773b7a..d8479af2c 100644 --- a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.ru.tr +++ b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.ru.tr @@ -1,9 +1,8 @@ # textdomain: mcl_weather -Gives ability to control weather=Предоставляет возможность управлять погодой -Changes the weather to the specified parameter.=Меняет погоду на заданное значение. +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.=Ошибка: длительность не может быть менее 1 секунды. +Error: Duration can't be less than 1 second.=Ошибка: Длительность не может быть менее 1 секунды. Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Ошибка: Указана неправильная погода. Возможны варианты: “clear” (ясная), “rain” (дождь), “snow” (снег) или “thunder” (гроза). -Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Переключает между ясной погодой и осадками (случайно выбирается дождь, грозовой шторм или снег) - +Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Переключает между ясной погодой и осадками (случайно выбирается дождь, гроза или снег) diff --git a/mods/HELP/doc/doc/locale/doc.ru.tr b/mods/HELP/doc/doc/locale/doc.ru.tr index 105f92b11..b838b4075 100644 --- a/mods/HELP/doc/doc/locale/doc.ru.tr +++ b/mods/HELP/doc/doc/locale/doc.ru.tr @@ -1,7 +1,7 @@ # 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.=Доступ к запрошенной записи запрещён; эта запись засекречена. Вы можете получить доступ к ней, продвигаясь в игре. Найдите свой способ раскрыть эту запись. +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.=Все подсказки уже открыты. @@ -27,8 +27,8 @@ 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.=Система документации [doc] не предоставляет помощи сама по себе, нужны дополнительные моды для добавления справочной информации. Пожалуйста, убедитесь, что моды включены для этого мира, после чего попробуйте снова. Number of entries: @1=Количество записей: @1 -OK=О'кей -Open a window providing help entries about Minetest and more=Открыть окно с подсказками о игре Minetest и т. п. +OK=ОК +Open a window providing help entries about Minetest and more=Открыть окно с подсказками об игре Minetest и т. п. Please select a category you wish to learn more about:=Пожалуйста, выберите категорию, о которой хотите узнать больше: Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.=Рекомендованные моды: doc_basics, doc_items, doc_identifier, doc_encyclopedia. Reveal all hidden help entries to you=Раскрыть все подсказки для вас diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.ru.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.ru.tr index 1080a3186..18b19f5d2 100644 --- a/mods/HELP/doc/doc_identifier/locale/doc_identifier.ru.tr +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.ru.tr @@ -1,5 +1,5 @@ # textdomain:doc_identifier -Error: This node, item or object is undefined. This is always an error.=Ошибка: Данный узел, предмет или объект не определён. Это всегда вызывает ошибку. +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=• Автор игры или мода допустил ошибку @@ -10,8 +10,8 @@ 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.=Стукните любой блок, предмет или другую вещь, про которую хотите узнать больше. Откроется соответствующая справочная запись. Инструмент работает в двух режимах, меняющихся при использовании. В жидком режиме инструмент указывает на жидкости, в твёрдом режиме нет. +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_items/locale/doc_items.ru.tr b/mods/HELP/doc/doc_items/locale/doc_items.ru.tr index 08d038592..69f296642 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.ru.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.ru.tr @@ -14,111 +14,111 @@ Using it as fuel turns it into: @1.=Использование в качеств # Final list separator (e.g. “One, two and three”) and = и 1 second=1 секунда -A transparent block, basically empty space. It is usually left behind after digging something.=Один прозрачный блок, основное пустое пространство. Обычно оно остаётся, если выкопать что-то. +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.=Строительство этого блока абсолютно бесшумное. +Building this block is completely silent.=Строительство этого блока не издает звука. Collidable: @1=Непроходимый: @1 Description: @1=Описание: @1 Falling blocks can go through this block; they destroy it when doing so.=Падающие блоки могут пройти сквозь этот блок; при этом они уничтожат его. Full punch interval: @1 s=Интервал полного удара: @1 с 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?=Возьмите это в руку и кликните левой, чтобы съесть. Но вам правда этого хочется? +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)=Справка по остальным предметам (не блокам, не инструментам и не оружию) +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=Максимальный размер стека: @1 -Mining level: @1=Уровень добываемости: @1 -Mining ratings:=Рейтинг добываемости: +Mining level: @1=Уровень добывания: @1 +Mining ratings:=Рейтинг добывания: • @1, rating @2: @3 s - @4 s=• @1, рейтинг @2: @3 с - @4 с • @1, rating @2: @3 s=• @1, рейтинг @2: @3 с Mining times:=Время добывания: -Mining this block is completely silent.=Добывание этого блока происходит абсолютно бесшумно. +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.=Удар этого инструмента не работает так, как это обычно бывает; рукопашный бой и майнинг либо невозможны, либо работают по-другому. +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=Дальность: @1 # Range: () Range: @1 (@2)=Дальность: @1 (@2) Range: 4=Дальность: 4 # Rating used for digging times -Rating @1=Скорость копания @1 +Rating @1=Скорость добывания @1 # @1 is minimal rating, @2 is maximum rating -Rating @1-@2=Скорость копания @1-@2= -The fall damage on this block is increased by @1%.=Повреждение при падении на этот блок увеличивается на @1%. -The fall damage on this block is reduced by @1%.=Повреждение при падении на этот блок уменьшается на @1%. +Rating @1-@2=Скорость добывания @1-@2= +The fall damage on this block is increased by @1%.=При падении на этот блок получаемый урон увеличивается на @1%. +The fall damage on this block is reduced by @1%.=При падении на этот блок получаемый урон уменьшается на @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.=Этот блок принадлежит группе @1. This block belongs to these groups: @1.=Этот блок принадлежит группам: @1. -This block can be climbed.=На этот блок можно залезть. +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.=Этот блок может служить плавящимся топливом с временем горения @1. -This block causes a damage of @1 hit point per second.=Этот блок вызывает повреждение на @1 HP в секунду. -This block causes a damage of @1 hit points per second.=Этот блок вызывает повреждения на @1 HP в секунду. +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.=Этот блок можно использовать как топливо со временем горения @1. +This block causes a damage of @1 hit point per second.=Этот блок наносит урон в @1 единицу здоровья в секунду. +This block causes a damage of @1 hit points per second.=Этот блок наносит урон в @1 единиц здоровья в секунду. This block connects to blocks of the @1 group.=Этот блок соединяется с блоками группы @1. This block connects to blocks of the following groups: @1.=Этот блок соединяется с блоками групп: @1. This block connects to these blocks: @1.=Этот блок соединяется со следующими блоками: @1. This block connects to this block: @1.=Этот блок соединяется с этим блоком: @1. -This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Этот блок уменьшает ваш кислород и вызывает повреждение от погружения на @1 HP каждые 2 секунды. -This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Этот блок уменьшает ваш кислород и вызывает повреждения от погружения на @1 HP каждые 2 секунды. +This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Этот блок уменьшает ваш запас кислорода и наносит урон от утопления в @1 единицу здоровья каждые 2 секунды. +This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Этот блок уменьшает ваш запас кислорода и наносит урон от утопления в @1 единиц здоровья каждые 2 секунды. This block is a light source with a light level of @1.=Этот блок является источником света уровня @1. This block glows faintly with a light level of @1.=Этот блок мерцает с уровнем света: @1. -This block is a building block for creating various buildings.=Это строительный блок для создания разных конструкций и зданий. -This block is a liquid with these properties:=Это жидкий блок с такими свойствами: +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 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.=Этот блок будет выдавать следующие предметы при его добыче: @1. -This block will drop the following when mined: @1×@2.=Этот блок будет выдавать при его добыче: @1×@2. -This block will drop the following when mined: @1.=Этот блок будет выдавать при его добыче: @1. -This block will drop the following when mined: @1.=Этот блок будет выдавать при его добыче: @1. +This block will drop the following items when mined: @1.=При добыче из этого блока выпадут следующие предметы: @1. +This block will drop the following when mined: @1×@2.=При добыче из этого блока выпадет следующее: @1×@2. +This block will drop the following when mined: @1.=При добыче из этого блока выпадет следующее: @1. +This block will drop the following when mined: @1.=При добыче из этого блока выпадет следующее: @1. This block will make you bounce off with an elasticity of @1%.=Этот блок заставит вас отскакивать с упругостью @1%. -This block will randomly drop one of the following when mined: @1.=При добыче этот блок случайным образом выдаёт что-то из списка: @1. -This block will randomly drop up to @1 drops of the following possible drops when mined: @2.=Этот блок случайным образом выдаст до @1 из следующих возможных выдач при добыче: @2. -This block won't drop anything when mined.=Этот блок ничего не выдаст при его добыче. +This block will randomly drop one of the following when mined: @1.=При добыче из этого блока случайным образом выпадает что-то одно из списка: @1. +This block will randomly drop up to @1 drops of the following possible drops when mined: @2.=При добыче из этого блока случайным образом выпадает до @1 из следующих возможных выдач: @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.=Этот предмет относится к группе @1. This item belongs to these groups: @1.=Этот предмет относится к группам: @1. -This item can serve as a smelting fuel with a burning time of @1.=Этот предмет может служить плавящимся топливом с временем горения @1. -This item is primarily used for crafting other items.=Этот предмет в основном используется для создания других предметов. +This item can serve as a smelting fuel with a burning time of @1.=Этот предмет можно использовать как топливо со временем горения @1. +This item is primarily used for crafting other items.=Этот предмет в основном используется для крафта других предметов. This item points to liquids.=Этот предмет указывает на жидкости. This tool belongs to the @1 group.=Этот инструмент относится к группе @1. This tool belongs to these groups: @1.=Этот инструмент относится к группам: @1. -This tool can serve as a smelting fuel with a burning time of @1.=Этот инструмент может служить плавящимся топливом с временем горения @1. +This tool can serve as a smelting fuel with a burning time of @1.=Этот инструмент можно использовать как топливо со временем горения @1. This tool is capable of mining.=Этот инструмент используется для добычи. -Maximum toughness levels:=Максимальный уровень жёсткости: +Maximum toughness levels:=Максимальный уровень твёрдости: This tool points to liquids.=Этот инструмент указывает на жидкости. Tools and weapons=Инструменты и оружие -Unknown Node=Неизвестный узел -Usage help: @1=Использование помощи: @1 -Walking on this block is completely silent.=Хождение по этому блоку абсолютно бесшумное. +Unknown Node=Неизвестный блок +Usage help: @1=Помощь по использованию: @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.=Вы не можете прыгать, стоя на этом блоке. +You can not jump while standing on this block.=Вы не можете прыгать, пока стоите на этом блоке. any level=любой уровень level 0=уровень 0 level 0-@1=уровень 0-@1 @@ -132,12 +132,12 @@ Unknown item (@1)=Неизвестный предмет (@1) • Not renewable=• Необновляемое • Renewable=• Обновляемое • Viscosity: @1=• Вязкость: @1 -Itemstring: "@1"=Айтемстринг: "@1" -Durability: @1 uses=Долговечность: @1 раз(а) -Durability: @1=Долговечность: @1 -Mining durability:=Долговечность при майнинге: +Itemstring: "@1"=Техническое название: "@1" +Durability: @1 uses=Прочность: @1 использований +Durability: @1=Прочность: @1 +Mining durability:=Долговечность при добыче: • @1, level @2: @3 uses=• @1, уровень @2: @3 раз(а) • @1, level @2: Unlimited=• @1, уровень @2: Неограниченно -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=Уровень жёсткости: @1 +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=Уровень твёрдости: @1 This block is slippery.=Этот блок скользкий. diff --git a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr index ae2f28a9c..036c571eb 100644 --- a/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr +++ b/mods/HELP/mcl_craftguide/locale/mcl_craftguide.ru.tr @@ -6,7 +6,7 @@ Any wood=Любое дерево Any sand=Любой песок Any normal sandstone=Любой обычный песчаник Any red sandstone=Любой красный песчаник -Any carpet=Любое покрытие +Any carpet=Любой ковёр Any dye=Любой краситель Any water bucket=Любое ведро воды Any flower=Любой цветок @@ -15,16 +15,16 @@ Any wooden slab=Любая деревянная плита Any wooden stairs=Любые деревянные ступеньки Any coal=Любой уголь Any kind of quartz block=Любой кварцевый блок -Any kind of purpur block=Любой фиолетовый блок -Any stone bricks=Любые каменные блоки +Any kind of purpur block=Любой пурпурный блок +Any stone bricks=Любые каменные кирпичи Any stick=Любая палка -Any item belonging to the @1 group=Любой предмет, относящийся к группе @1 -Any item belonging to the groups: @1=Любой предмет, относящийся к группам: @1 +Any item belonging to the @1 group=Любой предмет из группы @1 +Any item belonging to the groups: @1=Любой предмет из группам: @1 Search=Поиск Reset=Сброс Previous page=Предыдущая страница Next page=Следующая страница -Usage @1 of @2=Использование @1 из @2 +Usage @1 of @2=Использование @1 из @2 Recipe @1 of @2=Рецепт @1 из @2 Burning time: @1=Время горения: @1 Cooking time: @1=Время приготовления: @1 @@ -34,4 +34,4 @@ Cooking=Приготовление Increase window size=Увеличить окно Decrease window size=Уменьшить окно No item to show=Нет элемента для показа -Collect items to reveal more recipes=Для рецептов нужны предметы +Collect items to reveal more recipes=Собирайте предметы чтобы открыть больше рецептов diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.ru.tr b/mods/HELP/mcl_doc/locale/mcl_doc.ru.tr index 2deeb8e73..76ce5a7c8 100644 --- a/mods/HELP/mcl_doc/locale/mcl_doc.ru.tr +++ b/mods/HELP/mcl_doc/locale/mcl_doc.ru.tr @@ -1,33 +1,33 @@ # 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 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.=Этот блок быстро разрушается, когда на расстоянии @1 нет древесных блоков любого вида. При распаде он исчезает и может уронить одну из своих обычных капель. Блок не разрушается, если он размещен игроком. -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.=Этот блок быстро распадается и исчезает, если на расстоянии @1 нет древесных блоков любого типа. Блок не разрушается, если он размещен игроком. -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.=Это растение может расти только на блоках травы и грязи. Чтобы выжить, ему нужно иметь беспрепятственный обзор неба или подвергаться воздействию света уровня 8 или выше. -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.=Это растение может расти на блоках травы, подзола и твёрдой грязи. Чтобы выжить, ему нужно иметь беспрепятственный обзор неба или подвергаться воздействию света уровня 8 или выше. +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.=Этот блок быстро саморазрушается, если на дистанции @1 метров отсутствуют блоки дерева любого типа. При разрушении может выпасть его обычный дроп. Блок не саморазрушается если он был поставлен игроком. +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.=Этот блок быстро саморазрушается и исчезает, если на дистанции @1 метров отсутствуют блоки дерева любого типа. Блок не саморазрушается если он был поставлен игроком. +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.=Это растение может расти только на блоках дёрна и грязи. Для жизни ему нужно иметь беспрепятственный обзор на небо сверху, либо уровень света 8 и выше. +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.=Это растение может расти только на блоках дёрна, грязи, подзола и твёрдой земли. Для жизни ему нужно иметь беспрепятственный обзор на небо сверху, либо уровень света 8 и выше. This block is flammable.=Этот блок легковоспламеним. -This block destroys any item it touches.=Этот блок уничтожает всё, к чему прикасается. -To eat it, wield it, then rightclick.=Чтобы съесть это, возьмите в руки и кликните правой клавишей. +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.=Чтобы выпить это, возьмите его в руки и кликните правой клавишей мыши. +To drink it, wield it, then rightclick.=Чтобы выпить это, возьмите его в руки и кликните правой кнопкой мыши. You cannot drink this when your hunger bar is full.=Вы не можете пить это, когда ваша полоска голода заполнена. -To consume it, wield it, then rightclick.=Чтобы употребить это, возьмите в руки и кликните правой клавишей мыши. +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.=Вам нужно подождать 2 секунды, прежде чем снова пить или есть. -Hunger points restored: @1=Восстановлено единиц голода: @1 -Saturation points restored: @1%.1f=Восстановлено единиц сытости: @1 +Hunger points restored: @1=Восстанавливает очков голода: @1 +Saturation points restored: @1%.1f=Восстанавливает очков насыщения: @1 This item can be repaired at an anvil with: @1.=Этот предмет можно починить на наковальне при помощи: @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.=Этот предмет можно починить на наковальне с помощью любого предмета из группы “@1”. -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.=Когда этот блок падает 1 блока, то наносит урон задеваемому игроку. Повреждение составляет B×2–2 единиц удара, где B @= количество упавших блоков. Урон не может превышать 40 HP. +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.=Когда этот блок падает вниз на 1 блок, он наносит урон игроку который заденет этот блок. Урон рассчитывается как Z×2–2 единиц здоровья, где Z это высота полета в блоках. Урон не может превышать 40 единиц здоровья. Diamond Pickaxe=Алмазная кирка Iron Pickaxe=Железная кирка Stone Pickaxe=Каменная кирка @@ -47,10 +47,10 @@ This block can be mined by any tool instantly.=Этот блок можно мг This block can be mined by:=Этот блок можно добыть при помощи: Hardness: ∞=Твердость: ∞ Hardness: @1=Твердость: @1 -This block will not be destroyed by TNT explosions.=Этот блок не уничтожат взрывы тротила. -This block drops itself when mined by shears.=Этот блок сбрасывается сам при добыче ножницами. +This block will not be destroyed by TNT explosions.=Этот блок не будет уничтожен при взрыве ТНТ. +This block drops itself when mined by shears.=При добыче этого блока ножницами выпадает этот же блок. @1×@2=@1×@2 -This blocks drops the following when mined by shears: @1=Этот блок при добыче ножницами выбрасывает следующее: @1 +This blocks drops the following when mined by shears: @1=При добыче этого блока ножницами выпадает следующее: @1 , = , • Shears=• Ножницы • Sword=• Меч @@ -60,20 +60,20 @@ Maximum damage: @1 HP=Максимальный урон: @1 HP Full punch interval: @1 s=Интервал полного удара: @1 с This tool is capable of mining.=Этим инструментом можно добывать Mining speed: @1=Скорость добычи: @1 -Painfully slow=Мучительно медленно +Painfully slow=Крайне медленно Very slow=Очень медленно Slow=Медленно Fast=Быстро Very fast=Очень быстро -Extremely fast=Ужасно быстро +Extremely fast=Экстремально быстро Instantaneous=Мгновенно -@1 uses=@1 раз(а) -Unlimited uses=не ограничено -Block breaking strength: @1=Прочность блока на разрыв: @1 +@1 uses=@1 использований +Unlimited uses=Не ограничено +Block breaking strength: @1=Сила для ломания блока: @1 Mining durability: @1=Долговечность при добыче: @1 -Armor points: @1=Эффективность защиты: @1 -Armor durability: @1=Долговечность защиты: @1 +Armor points: @1=Эффективность брони: @1 +Armor durability: @1=Долговечность брони: @1 It can be worn on the head.=Это можно носить на голове. -It can be worn on the torso.=Это можно носить на теле. +It can be worn on the torso.=Это можно носить на торсе. It can be worn on the legs.=Это можно носить на ногах. It can be worn on the feet.=Это можно носить на ступнях. diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr index c40178f99..96f538057 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr @@ -4,46 +4,46 @@ Everything you need to know to get started with playing=Всё, что вам н Advanced usage=Продвинутое использование 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:=Это максимально сжатое введение в основы игрового процесса +This is a very brief introduction to the basic gameplay:=Это краткое введение в основы игрового процесса Basic controls:=Основное управление: • Move mouse to look=• Мышь - осматриваться • [W], [A], [S] and [D] to move=• [W], [A], [S] и [D] - идти • [E] to sprint=• [E] - бежать -• [Space] to jump or move upwards=• [Пробел] - прыгнуть или двигаться вверх -• [Shift] to sneak or move downwards=• [Shift] - красться или двигаться вниз -• Mouse wheel or [1]-[9] to select item=• Колёсико или [1]-[9] - выбор предмета -• Left-click to mine blocks or attack=• Левый клик - добывать блок или атаковать -• Recover from swings to deal full damage=• Бейте без колебаний, чтобы нанести максимальный урон +• [Space] to jump or move upwards=• [Пробел] - прыгнуть или карабкаться вверх +• [Shift] to sneak or move downwards=• [Shift] - красться или карабкаться вниз +• Mouse wheel or [1]-[9] to select item=• Колёсико мыши или [1]-[9] - выбор предмета +• 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=• [I] - открыть инвентарь -• First items in inventory appear in hotbar below=• Первые предметы в инвентаре появляются на панели быстрого доступа внизу -• Lowest row in inventory appears in hotbar below=• Нижний ряд в инвентаре появляется на панели быстрого доступа внизу +• First items in inventory appear in hotbar below=• Первые поднятые предметы появляются в хотбаре(9 ячеек инвентаря) внизу экрана +• Lowest row in inventory appears in hotbar below=• Нижний ряд инвентаря это и есть хотбар • [Esc] to close this window=• [Esc] - закрыть это окно 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=• Поместите кусок дерева в решётку 2×2 (вашу личную “крафт-сетку”) в меню инвентаря и скрафтите из него 4 доски +• 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=• Поместите бревно в решётку 2×2 (вашу “сетку крафте”) в меню инвентаря и скрафтите из него 4 доски • Place them in a 2×2 shape in the crafting grid to craft a crafting table=• Разместите их в виде квадрата 2×2 в крафт-сетке, чтобы сделать верстак • Place the crafting table on the ground=• Поставьте верстак на землю -• Rightclick it for a 3×3 crafting grid=• Кликните правой по верстаку для работы с крафт-сеткой 3×3 -• Use the crafting guide (book icon) to learn all the possible crafting recipes=Используйте крафт-гид (значок книги) рецептов для изучения всех доступных рецептов -• Craft a wooden pickaxe so you can dig stone=• Создайте деревянную кирку, чтобы добыть камни +• Rightclick it for a 3×3 crafting grid=• Кликните правой кнопкой мыши по верстаку для работы с сеткой крафта 3×3 +• 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”).=Майнтест - бесплатный программный движок для игр, основанных на воксельных мирах, источником вдохновения послужили игры InfiniMiner, Minecraft и подобные. Майнтест изначально создан Пертту Ахолой (под псевдонимом “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 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 .=Обычно Майнтест поставляется в комплекте с простой игрой по умолчанию, которая называется «Игра Майнтест» (показана на рисунках 1 и 2). У вас она, вероятно, есть. Другие игры для Майнтеста можно скачать с официального форума . -Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.=Как Майнтест, так и «Игра Майнтест» в данный момент еще не завершены, поэтому, пожалуйста, простите, если что-то не заработает идеально. +• Read entries in this help to learn the rest=Читайте записи в этой справке, чтобы узнать всё остальное +• Continue playing as you wish. There's no goal. Have fun!=Продолжайте играть, как вам захочется. Эта игра не имеет конечной цели. Наслаждайтесь! +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 - свободный игровой движок для воксельных игр, вдохновлённый играми InfiniMiner, Minecraft и подобным. Minetest изначально создан Пертту Ахолой (под псевдонимом “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.=Игрок попадает в огромный мир из кубиков-блоков. Из этих кубиков состоит ландшафт, их можно убирать и снова размещать как угодно. Используя собранные предметы, вы можете создать(скрафтить) новые инструменты и предметы. Игры для Minetest могут быть и гораздо сложнее и комплекснее чем эта. +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 является встроенная возможность моддинга. Моды изменяют привычный игровой процесс. Они могут быть очень простыми, например, добавлять нескольких декоративных блоков, или очень сложными - полностью изменяющими игровой процесс, генерирующими новые виды миров и т. д. +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 можно играть в одиночку или онлайн вместе с другими игроками. Онлайн-игра будет работать «из коробки» с любыми модами без необходимости установки дополнительного программного обеспечения, так как всё необходимое предоставляется сервером. +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 поставляется в комплекте с простой игрой по умолчанию, которая называется “Minetest Game” ( рис. 1 и 2). У вас она, вероятно, есть. Другие игры для Minetest можно скачать с официального форума . +Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.=Minetest и “Minetest Game” в данный момент еще не завершены, поэтому, пожалуйста, простите, если что-то работает неидеально. 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!=Чтобы красться, удерживайте нажатой клавишу [Красться] (по умолчанию: [Shift]). Когда вы отпускаете её, то перестаете красться. Будьте осторожны: если отпустить клавишу, стоя на краю выступа, то можете оттуда упасть! • Sneak: [Shift]=• Красться: [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.=Подкрадывание может быть отключено модами. В этом случае вы все равно идете медленнее, крадясь, но вас больше ничто не останавливает на выступах. +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:=Основное движение: @@ -60,22 +60,22 @@ While on a ladder, swimming in a liquid or fly mode is active=Стоя на ле • Space: Move up=• Пробел: двигаться вверх • Shift: Move down=• Shift: двигаться вниз Extended movement (requires privileges):=Расширенное движение (требуются привилегии): -• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)=• J: включает/выключает быстрый режим для бега/полёта (требуется привилегия “fast”) +• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)=• J: включает/выключает быстрый бег/полёт (требуется привилегия “fast”) • K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)=• K: включает/выключает режим полёта, позволяющий свободно перемещаться во всех направлениях (требуется привилегия “fly”) -• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=• H: включает/выключает режим отсутствия препятствий, позволяющий проходить сквозь стены в режиме полёта (требуется привилегия “noclip”) -• E: Move even faster when in fast mode=• E: двигаться даже быстрее, чем в быстром режиме +• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=• H: включает/выключает режим, позволяющий проходить сквозь стены в режиме полёта (требуется привилегия “noclip”) +• E: Move even faster when in fast mode=• E: ускориться в быстром режиме • E: Walk fast in fast mode=• E: идти быстро в быстром режиме 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=• Shift+Правая кнопка мыши: Строить -• Roll mouse wheel: Select next/previous item in hotbar=• Вращение колёсика мыши: Выбор следующего/предыдущего предмета на панели быстрого доступа -• Roll mouse wheel / B / N: Select next/previous item in hotbar=• Вращение колёсика мыши / B / N: Выбор следующего/предыдущего предмета на панели быстрого доступа -• 1-9: Select item in hotbar directly=• 1-9: Быстрый и прямой выбор предмета на панели быстрого доступа +• Right mouse button: Build or use pointed block=• Правая кнопка мыши: Построить или использовать выбранный блок +• Shift+Right mouse button: Build=• Shift+Правая кнопка мыши: Построить +• Roll mouse wheel: Select next/previous item in hotbar=• Вращение колёсика мыши: выбор следующего/предыдущего предмета на хотбаре +• Roll mouse wheel / B / N: Select next/previous item in hotbar=• Вращение колёсика мыши / B / N: выбор следующего/предыдущего предмета в хотбаре +• 1-9: Select item in hotbar directly=• 1-9: Выбор предмета в хотбаре • Q: Drop item stack=• Q: выбросить всю стопку предметов • Shift+Q: Drop 1 item=• Shift+Q: выбросить только 1 предмет -• I: Show/hide inventory menu=• I: Показать/скрыть меню вашего инвентаря +• I: Show/hide inventory menu=• I: Показать/скрыть ваш инвентарь Inventory interaction:=Взаимодействие с инвентарём: See the entry “Basics > Inventory”.=Смотрите запись “Основы > Инвентарь”. Camera:=Камера: @@ -83,7 +83,7 @@ Camera:=Камера: • F7: Toggle camera mode=• F7: Смена режима камеры • F8: Toggle cinematic mode=• F8: Кинематографический режим Interface:=Интерфейс: -• Esc: Open menu window (pauses in single-player mode) or close window=• Esc: Открыть/закрыть меню (пауза в режиме одиночной игры) +• Esc: Open menu window (pauses in single-player mode) or close window=• Esc: Открыть/закрыть меню (ставит на паузу в одиночной игры) • F1: Show/hide HUD=• F1: Показать/убрать игровой интерфейс (HUD) • F2: Show/hide chat=• F2: Показать/убрать чат • F9: Toggle minimap=• F9: Включить/выключить миникарту @@ -91,47 +91,47 @@ Interface:=Интерфейс: • F10: Open/close console/chat log=• F10: Открыть/закрыть консоль/историю чата • F12: Take a screenshot=• F12: Сделать снимок экрана Server interaction:=Взаимодействие с сервером: -• T: Open chat window (chat requires the “shout” privilege)=• T: Открыть окно чата (чат требует привилегию “shout”) +• T: Open chat window (chat requires the “shout” privilege)=• T: Открыть окно чата (чтобы писать нужна привилегия “shout”) • /: Start issuing a server command=• /: Начать ввод серверной команды Technical:=Технические: • R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)=• R: Включить/выключить дальний обзор (отключает туман и позволяет смотреть очень далеко, может замедлять игру) -• +: Increase minimal viewing distance=• +: Увеличить минимальное расстояние просмотра -• -: Decrease minimal viewing distance=• -: Уменьшить минимальное расстояние просмотра +• +: Increase minimal viewing distance=• +: Увеличить минимальную дистанцию видимости +• -: Decrease minimal viewing distance=• -: Уменьшить минимальную дистанцию видимости • F3: Enable/disable fog=• F3: Включить/отключить туман • F5: Enable/disable debug screen which also shows your coordinates=• F5: Включить/отключить экран отладки, который также показывает ваши координаты • F6: Only useful for developers. Enables/disables profiler=• F6: Полезно только для разработчиков. Включает/отключает профайлер • P: Only useful for developers. Writes current stack traces=• P: Полезно только для разработчиков. Записывает текущие трассировки стека Players=Игроки -Players (actually: “player characters”) are the characters which users control.=Игроки (на самом деле «персонажи игроков») - персонажи, которыми управляют пользователи. +Players (actually: “player characters”) are the characters which users control.=Игроки (на самом деле «игровые персонажи») - персонажи, которыми управляют пользователи. Players are living beings. They start with a number of health points (HP) and a number of breath points (BP).=Игроки это живые существа. Они появляются с определённым количеством очков здоровья (HP) и дыхания (BP). Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.=Игроки могут ходить, красться, прыгать, карабкаться, плавать, нырять, добывать, строить, сражаться и использовать инструменты и блоки. Players can take damage for a variety of reasons, here are some:=Игроки могут получить урон по разным причинам, вот некоторые: • Taking fall damage=• Получение урона от падения -• Touching a block which causes direct 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.=На отметке здоровья HP@=0 игрок умирает. Но он может возродиться в этом же мире. -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.=Некоторые блоки не допускают дыхания. При нахождении с головой в блоке, который вызывает утопление, точки дыхания уменьшаются на 1 каждые 2 секунды. Когда все очки дыхания уходят, игрок начинает получать урон утопающего. Очки дыхания быстро восстановятся в любом другом блоке. -Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.=Урон можно отключить в любом мире. Без повреждений игроки бессмертны, а здоровье и дыхание неважны. +• 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.=Некоторые блоки уменьшают дыхание. При нахождении с головой в блоке, который вызывает утопление, очки дыхания уменьшаются на 1 каждые 2 секунды. Когда все очки дыхания пропадают, игрок начинает получать урон от утопления. Очки дыхания быстро восстанавливаются в любом другом блоке. +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.=Предметы - это вещи, которые вы можете носить с собой и хранить в инвентаре. Их можно использовать для крафтинга (создания чего-либо), плавки, строительства, добычи и многого другого. Типы предметов: блоки, инструменты, оружие, а также предметы, используемые только для крафтинга. +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=• Максимальный размер стопки: количество, которое помещается в 1 стопку предметов • 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=• Может быть использовано для крафтинга или приготовления пищи +• 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.=Распространенной разновидностью инструментов являются инструменты майнинга. Они позволяют ломать все виды блоков. Оружие - тоже своего рода инструмент. Есть и много других инструментов. Особое действие инструмента обычно выполняются по нажатию левой или правой кнопки мыши. +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”.=Многие инструменты изнашиваются при использовании и со временем могут разрушиться. Износ отображается в строке повреждений под значком инструмента. Если полоса повреждений не отображается, значит инструмент находится в отличном состоянии. Инструменты могут быть восстановлены путем крафтинга, см. “Основы > Крафтинг”. +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:=Оружие ближнего боя наносит урон при ударе по игрокам и другим живым объектам. Есть два способа атаковать: @@ -140,11 +140,11 @@ Melee weapons deal damage by punching players and other animate objects. There a 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.=Оружие наносит полный урон только тогда, когда оно полностью восстановилось после предыдущего удара. В противном случае оружие будет наносить меньший урон. Это означает, что быстрый удар очень быстр, но наносит довольно низкий урон. Обратите внимание, что интервал полного удара не ограничивает скорость атаки. +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, 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.=Чтобы прицелиться на что-то, это должно быть в пределах расстояния прицела (по-простому: «дальности») предмета, который вы держите в руках. Существует дальность по умолчанию, когда вы ничего не держите. Вещь под прицелом будет очерчена или подсвечена (в зависимости от настроек). Наведение невозможно выполнить с помощью фронтальной камеры 3-го лица. +“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.=Чтобы прицелиться на что-то, это должно быть в пределах расстояния прицела предмета, который вы держите в руках. Существует дальность по умолчанию, когда вы ничего не держите. Вещь под прицелом будет очерчена или подсвечена (в зависимости от настроек). Наведение невозможно выполнить с помощью фронтальной камеры 3-го лица. 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:=Есть 3 различных способа видеть мир: @@ -152,7 +152,7 @@ There are 3 different views which determine the way you see the world. The modes • 2: Third-person view from behind=• 2: вид от третьего лица сзади; • 3: Third-person view from the front=• 3: вид от третьего лица спереди. You can change the camera mode by pressing [F7].=Вы можете изменить режим камеры, нажав клавишу [F7]. -You might be able to zoom with [Z] to zoom the view at the crosshair. This allows you to look further.=Вероятно, вы сможете увеличить масштаб вида в перекрестии с помощью [Z]. Это позволит вам смотреть дальше. +You might be able to zoom with [Z] to zoom the view at the crosshair. This allows you to look further.=Вы можете увеличить масштаб в перекрестии с помощью [Z]. Это позволит вам смотреть дальше. 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.=Существует также кинематографический режим, который можно переключить с помощью [F8]. При включенном кинематографическом режиме движения камеры становятся более плавными. Некоторым игрокам это не нравится, это дело вкуса. By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.=Удерживая нажатой клавишу [Z], вы можете увеличить изображение в перекрестии прицела. Для этого вам нужна привилегия “zoom”. @@ -160,34 +160,34 @@ By holding down [Z], you can zoom the view at your crosshair. You need the “zo • Toggle Cinematic Mode: [F8]=• Переключение кинематографического режима: [F8]; • Zoom: [Z]=• Масштабирование: [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.=Мир MineClone 2 полностью состоит из блоков (вокселей, если быть точными). Блоки могут быть добавлены или удалены с помощью правильно подобранных инструментов. -The world is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Мир целиком состоит из блоков (точнее, вокселей). Блоки могут быть добавлены или удалены с помощью правильно подобранных инструментов. +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.=Мир MineClone 2 полностью состоит из блоков (вокселей, если быть точными). Блоки могут быть добавлены или удалены с помощью правильных инструментов. +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=• Нацеливаемые: нацеливаемые блоки демонстрируют свой контур или ореол, когда вы на них нацеливаетесь. Но через ненацеливаемые блоки ваш прицел просто пройдёт насквозь. Жидкости обычно не подлежат нацеливанию, но в них всё-таки можно целиться с помощью некоторых специальных инструментов -• 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=• Карабкательные: пока вы находитесь на блоке, по которому можно карабкаться, вы падаете и можете перемещаться вверх и вниз клавишами [Прыжок] и [Красться] +• 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:=При добыче (майнинге) блок может оставить после себя ”кусочек“. Это предметы, которые вы получаете в результате майнинга. Чаще всего вы получаете сам блок, но в зависимости от его типа блока, может быть следующие варианты: +• 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 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.=Чтобы установить блок, который вы держите в руке, нацельтесь на блок в мире и щелкните правой кнопкой мыши. Если это невозможно из-за того, что указательный блок имеет специальное действие щелчка правой кнопкой мыши, то зажмите клавишу [Красться] перед щелчком правой кнопки. +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.=Обычно блоки строятся прямо перед блоком, в который вы целитесь, прямо перед стороной, на которую вы целитесь. Но несколько блоков ведут себя иначе: когда вы пытаетесь строить на них, они заменяются вашими новыми блоками. +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 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).=Жидкости могут быть двух видов: источник (S) и течение (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.=Источники жидкостей имеют форму полного куба. Источник генерирует течение жидкости вокруг себя время от времени, и, если жидкость является возобновляемой, он также генерирует новые источники. Жидкий источник может поддерживать себя сам. Пока вы не трогаете источник, он, как правило, остаётся на месте и никуда не утекает. -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.=Текущие жидкости принимают наклонную форму. Они распространяются по всему миру, пока не пересохнут. Текучая жидкость не может поддерживать себя и всегда поступает из источника жидкости, прямо или непрямо. Без источника течение в конце концов высыхает и исчезает. +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)=• Все свойства блоков (включая урон от утопления) • Renewability: Renewable liquids can create new sources=• Возобновляемость: возобновляемые жидкости могут создавать новые источники @@ -201,36 +201,36 @@ When those criteria are met, the open space is filled with a new liquid source o 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=• Если вы упадете в жидкость, вы будете замедлены перед ударом (но не остановлены мгновенно). Итоговая сила удара определяется вашей скоростью и вязкостью жидкости. Для безопасного высокого падения в жидкость убедитесь, что над землей достаточно жидкости, иначе вы можете удариться о землю и получить урон от падения +• 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”. 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=Крафт +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”. 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=• Фигурные (рис. 2): предметы должны быть выложены в виде определенной фигуры -• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=• Простые (изображения 3 и 4): предметы помещаются в произвольных отсеках на входе (оба изображения показывают один и тот же рецепт) +• Shaped (image 2): Items need to be placed in a particular shape=• Форменные (рис. 2): предметы должны быть выложены определенной формой +• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=• Бесформенные (изображения 3 и 4): предметы помещаются в произвольных слотах сетки крафта (оба изображения показывают один и тот же рецепт) • 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%=• Ремонт (рис. 5): Два поврежденных инструмента помещаются в произвольные отсеки крафт-решётки, и на выходе получается инструмент, отремонтированный на 5% +• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%=• Ремонт (рис. 5): Два поврежденных инструмента помещаются в произвольные слоты сетки крафта, и на выходе получается инструмент, отремонтированный на 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.=В некоторых рецептах некоторые предметы должны быть не какими-то конкретными, а просто принадлежать нужной группе предметов (см. “Основы > Группы”). Такие рецепты предлагают немного больше свободы в выборе входных предметов. На рисунках 6-8 показан один и тот же групповой рецепт. Здесь требуется 8 предметов из группы “Камни“, к которой относятся все показанные предметы. -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.=В редких случаях в рецептах содержатся замены. Это означает, что при каждом крафтинге некоторые предметы из крафтинговой решётки не будут расходоваться, но будут заменяться другими предметами. +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 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.=Каждый топливный предмет имеет своё время горения. В течение этого времени печь будет работать. +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 first items from your player inventory.=В нижней части экрана вы видите несколько квадратов. Это так называемая “Панель быстрого доступа“. Она позволяет быстро получать доступ к первым предметам вашего игрового инвентаря. +Hotbar=Хотбар +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]=• Выбор предыдущего предмета панели: [Колёсико вверх] или [B] -• Select next item in hotbar: [Mouse wheel down] or [N]=• Выбор следующего предмета панели: [Колёсико вниз] или [N] -• Select item in hotbar directly: [1]-[9]=• Прямой выбор предмета панели: [1] - [9] -The selected item is also your wielded item.=Выбранный предмет на панели быстрого доступа также является вашим носимым предметом, который вы держите в руке. +• Select previous item in hotbar: [Mouse wheel up] or [B]=• Выбор предыдущего предмета хотбара: [Колёсико вверх] или [B] +• Select next item in hotbar: [Mouse wheel down] or [N]=• Выбор следующего предмета хотбара: [Колёсико вниз] или [N] +• Select item in hotbar directly: [1]-[9]=• Прямой выбор предмета хотбара: [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.=Если у вас есть карта (это такой предмет) в любом отсеке панели быстрого доступа, то вы можете пользоваться миникартой. +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.=Нажмите [F9], чтобы в правом верхнем углу появилась миникарта. Она поможет вам найти свой путь по всему миру. Нажмите его еще раз, чтобы выбирать различные режимы мини-карты и уровни масштабирования. Миникарта также показывает позиции других игроков. There are 2 minimap modes and 3 zoom levels.=Миникарта имеет 2 режима и 3 уровня масштабирования. 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.=Режим поверхности (рис. 1) это вид на мир сверху с приблизительным воспроизведением цветов блоков из которых этот мир состоит. В этом режиме видны только самые верхние блоки, а всё, что ниже, скрыто, как на спутниковой фотографии. Режим поверхности полезен, если вы заблудились. @@ -238,27 +238,27 @@ Radar mode (image 2) is more complicated. It displays the “denseness” of the 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.=Существует также два различных режима вращения. В “квадратном режиме” вращение миникарты фиксируется. Если вы нажмете [Shift]+[F9], чтобы переключиться в “режим круга”, миникарта будет вращаться в соответствии с вашим направлением взгляда, поэтому “вверх” всегда будет вашим направлением взгляда. In some games, the minimap may be disabled.=В некоторых играх миникарта может быть отключена. • Toggle minimap mode: [F9]=• Переключение режима миникарты: [F9] -• Toggle minimap rotation mode: [Shift]+[F9]=• Переключение режима вращения миникарты: [Shift]+[F9] +• Toggle minimap rotation mode: [Shift]+[F9]=• Переключение вращения миникарты: [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.=У вас есть ваш собственный инвентарь, который называется “инвентарь игрока”, вы можете открыть его нажатием клавиши инвентаря (по умолчанию это [I]). Первый ряд отсеков вашего инвентаря будут отображаться на панели быстрого доступа. +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.=У вас есть ваш собственный инвентарь, который называется “инвентарь игрока”, вы можете открыть его нажатием клавиши инвентаря (по умолчанию это [I]). Первый ряд слотов вашего инвентаря будут отображаться в хотбаре. 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=• Клик средней: взятие 10 предметов из стопки предметов -• Mouse wheel down: take 1 item from the item stack=• Колесо вниз: взятие 1 предмета из стопки предметов -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.=Выкладывание: вы можете помещать предметы в отсек, если ваш курсор удерживает 1 или более предмет, а отсек пуст, либо содержит стопку таких же предметов. -• Left click: put entire item stack=• Клик левой: положить всю стопку предметов -• Right click: put 1 item of the item stack=• Клик правой: положить только 1 предмет из всей удерживаемой курсором стопки -• Right click or mouse wheel up: put 1 item of the item stack=• Клик правой или колёсико вверх: положить 1 предмет из удерживаемой курсором стопки -• Middle click: put 10 items of the item stack=• Клик средней: положить 10 предметов из удерживаемой курсором стопки -Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.=Обмен: Вы можете обменять предметы, если курсор удерживает 1 или более предметов, а целевой отсек занят другими предметами. -• 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.=Выбрасывание: если вы, держа на курсоре стопку предметов, кликнете ей за пределами меню, то вся стопка выбрасывается в окружающую среду. +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=• Клик средней кнопкой мыши: взять 10 предметов из стопки предметов +• Mouse wheel down: take 1 item from the item stack=• Колесико вниз: взять 1 предмет из стопки предметов +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.=Выкладывание: вы можете помещать предметы в слот, если ваш курсор удерживает 1 или более предмет, а слот пуст, либо содержит стопку таких же предметов. +• Left click: put entire item stack=• Клик левой кнопкой мыши: положить всю стопку предметов +• Right click: put 1 item of the item stack=• Клик правой кнопкой мыши: положить только 1 предмет из всей удерживаемой курсором стопки +• Right click or mouse wheel up: put 1 item of the item stack=• Клик правой кнопкой мыши или колёсико вверх: положить 1 предмет из удерживаемой курсором стопки +• Middle click: put 10 items of the item stack=• Клик средней кнопкой мыши: положить 10 предметов из удерживаемой курсором стопки +Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.=Обмен: Вы можете обменять предметы, если курсор удерживает 1 или более предметов, а целевой слот занят другими предметами. +• 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=• [Красться]+Клик левой: автоматическая передача стопки предметов +• Sneak+Left click: Automatically transfer item stack=• [Красться]+Клик левой кнопкой мыши: автоматическая передача стопки предметов Online help=Онлайн-помощь You may want to check out these online resources related to MineClone 2.=Возможно, вы захотите ознакомиться с этими онлайн-ресурсами, связанными с MineClone 2. MineClone 2 download and forum discussion: =Официальный форум MineClone 2: @@ -268,18 +268,18 @@ Report bugs here.=С помощью баг-трекера можно сообщ Minetest links:=Ссылки Minetest: You may want to check out these online resources related to Minetest:=Возможно, вы захотите посетить эти онлайн-ресурсы, связанные с Minetest: Official homepage of Minetest: =Официальная домашняя страница Minetest: -The main place to find the most recent version of Minetest, the engine used by MineClone 2.=Это основное место для скачивания свежих версий Minetest (Minetest это «движок», используемый MineClone 2). +The main place to find the most recent version of Minetest, the engine used by MineClone 2.=Это основное место для скачивания свежих версий Minetest, движка, используемого MineClone 2. The main place to find the most recent version of Minetest.=Это основное место для скачивания свежих версий Minetest. Community wiki: =Wiki сообщества: -A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.=Веб-сайт документации сообщества. Любой, у кого есть учетная запись, может её редактировать! Там много документации по игре Minetest. +A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.=Веб-сайт документации сообщества. Любой, у кого есть учетная запись, может её редактировать! Там много документации по Minetest Game. Minetest forums: =Форумы 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.=Интернет-форумы, где вы можете обсудить все, что связано с 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.=Интернет-форумы, где вы можете обсудить все, что связано с Minetest. Это также место, где публикуются и обсуждаются игры и моды, сделанные игроками. Дискуссии ведутся в основном на английском языке, но есть также раздел для дискуссий и на других языках. 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.=Универсальный IRC-чат-канал для всего, связанного с Minetest, где люди могут встретиться для общения в режиме реального времени. Если вы не разбираетесь в IRC, обратитесь за помощью к Wiki. 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=• Время выкапывания: Копаемые блоки принадлежат группам, имеющим определённое время копания. Инструментами майнинга можно добывать блоки, принадлежащие определенным группам +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=• И прочее @@ -287,69 +287,69 @@ 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=• Wielding (Владеть/Держать/Нести/Удерживать): держать предмет в руке -• Pointing: Looking with the crosshair at something in range=• Pointing (Наведение/Нацеливание/Прицел/Взгляд): смотреть через прицел в виде крестика на что-либо в пределах вашей досягаемости -• Dropping: Throwing an item or item stack to the ground=• Dropping (Выпадание): бросание предмета или стопки предметов на землю -• Punching: Attacking with left-click, is also used on blocks=• Punching (Удар/Стуканье): атака с помощью щелчка левой кнопкой мыши, применяется и к блокам -• Sneaking: Walking slowly while (usually) avoiding to fall over edges=• Sneaking (Красться/Подкрадывание): идти медленно, избегая опасности падения с края блока -• Climbing: Moving up or down a climbable block=• Climbing (Карабкаться/Скалолазание): перемещение вверх или вниз по блоку, позволяющему по нему карабкаться +• 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=• Punching Удар: атака с помощью щелчка левой кнопкой мыши, применяется и к блокам +• 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=• Строительство/размещение/установка/укладывание: установка блока где-либо в мире +• 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: 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=• Отсек / отсек инвентаря: может вместить одну стопку предметов +• 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=• Ингредиент: предмет, который преимущественно используется для крафтинга (создания) новых предметов +• 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=• “сердечко”: часть индикатора здоровья, обозначает 2 HP -• “bubble”: A single breath symbol, indicates 1 BP=• “пузырёк“: часть индикатора дыхания, обозначает 1 BP -• HP: Hit point (equals half 1 “heart”)=• HP: Hit point (половинка сердечка, переводится как “единица удара”) -• BP: Breath point, indicates breath when diving=• BP: Breath point (целый пузырёк, переводится как “единица дыхания”) отображает состояние дыхания при погружении +• “heart”: A single health symbol, indicates 2 HP=• “сердечко”: часть индикатора здоровья, обозначает 2 очка здоровья (HP) +• “bubble”: A single breath symbol, indicates 1 BP=• “пузырёк“: часть индикатора дыхания, обозначает 1 очко дыхания (BP) +• HP: Hit point (equals half 1 “heart”)=• HP: очко здоровья (половинка сердечка) +• BP: Breath point, indicates breath when diving=• BP: очко дыхания, отображает состояние дыхания при погружении • Mob: Computer-controlled enemy=• Моб: управляемый компьютером враг -• Crafting: Combining multiple items to create new ones=• Крафтинг: комбинирование нескольких предметов для создания новых +• 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=• Возрождение (респаунинг): появление снова в мире после смерти +• 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=• noclip (ноуклип): позволяет летать сквозь стены Interface=Интерфейс -• Hotbar: Inventory slots at the bottom=• Панель быстрого доступа: отсеки для инвентаря внизу +• 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=• PvP: игрок против игрока. Если включено, игроки могут наносить урон друг другу • 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=• Защита: механизм присваивания себе некоторых областей мира, позволяющий владельцам запретить изменять блоки внутри этих областей всем, кроме себя, либо ограниченного списка друзей +• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside=• Защита/приват: механизм присваивания себе некоторых областей мира, позволяющий владельцам запретить изменять блоки внутри этих областей всем, кроме себя, либо ограниченного списка друзей Technical terms:=Технические условия: • Minetest: This game engine=• Minetest: движок этой игры • MineClone 2: What you play right now=• MineClone 2: то, во что вы играете прямо сейчас • Minetest Game: A game for Minetest by the Minetest developers=• Minetest Game: игра для Minetest от разработчиков Minetest • Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar=• Игра: весь игровой процесс, принятый в Minetest; например, обычная игра, или песочница, или подобное -• 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: 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”=• Узел: другое слово для обозначения “блока” +• 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.=Существует много разнообразных настроек Minetest. Почти каждый аспект игры может быть изменён. 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=• Урон (enable_damage): включает здоровье и дыхание для всех игроков. Если он выключен, то все игроки бессмертны • 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.=• Творческий режим (creative_mode): позволяет играть в стиле песочницы, сосредоточившись на творчестве, а не на сложном игровом процессе. Смысл зависит от конкретной игры. Основные черты: ускоренное время копания, мгновенный доступ почти ко всем предметам, отсутствует износ инструментов и пр. -• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other=• PvP (enable_pvp): “Игрок против игрока”. Если этот режим включён, игроки могут наносить урон друг другу +• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other=• PvP (enable_pvp): “игрок против игрока”. Если этот режим включён, игроки могут наносить урон друг другу For a full list of all available settings, use the “All Settings” dialog in the main menu.=Для получения полного списка настроек вы можете перейти в ”Настройки - Все настройки“ в главном меню Minetest. Movement modes=Режимы передвижения 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.=• Описание: при активации этого режима клавиши будут перемещать вас в соответствии с вашим текущим углом обзора, если вы находитесь в жидкости или в режиме полёта. +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]=• Клавиша по умолчанию: [L] • No privilege required=• Никаких привилегий не требуется Fast mode:=Быстрый режим @@ -357,7 +357,7 @@ Fast mode:=Быстрый режим • Default key: [J]=• Клавиша по умолчанию: [J] • Required privilege: fast=• Требуемые привилегии: 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.=• Описание: гравитация не влияет на вас, и вы можете свободно перемещаться во всех направлениях. клавишу прыжка, чтобы подниматься, и клавишу [Красться], чтобы опускаться. +• 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]=• Клавиша по умолчанию: [K] • Required privilege: fly=• Требуемые привилегии: fly Noclip mode:=Режим прохождения сквозь стены (Noclip): @@ -369,7 +369,7 @@ With [F10] you can open and close the console. The main use of the console is to 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.=Используйте чат для общения с другими игроками. Для этого требуется привилегия ”shout“. Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.=Просто введите сообщение и нажмите [Enter]. Сообщения чата не могут начинаться с “/“. -You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .=Вы можете отправлять приватные сообщения: скажите “/msg <игрок> <сообщение>” в чате, чтобы отправить “<сообщение>”, который сможет увидеть только <игрок>. +You can send private messages: Say “/msg ” in chat to send “” which can only be seen by .=Вы можете отправлять приватные сообщения: напишите “/msg <игрок> <сообщение>” в чате, чтобы отправить “<сообщение>”, который сможет увидеть только <игрок>. There are some special controls for the console:=Клавиши специального управления консолью: • [F10] Open/close console=• [F10] открыть/закрыть консоль • [Enter]: Send message or command=• [Enter]: Отправить сообщение или команду @@ -401,12 +401,12 @@ In the command reference, you see some placeholders which you need to replace wi Here are some examples to illustrate the command syntax:=Вот несколько примеров, иллюстрирующих синтаксис команды: • /mods: No parameters. Just enter “/mods”=• /mods: Нет параметров. Просто введите “/mods” • /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”=• /me <действие>: 1 параметр. Вы должны ввести “/me“, а затем любой текст, например “/me orders pizza” -• /give : Two parameters. Example: “/give Player default:apple”=• /give <имя> <Айтемстринг>: два параметра. Пример: “/give Player mcl_core:apple” +• /give : Two parameters. Example: “/give Player default:apple”=• /give <имя> <предмет>: два параметра. Пример: “/give Player mcl_core: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|<команда>]: допустимыми командами будут являться: “/help”, “/help all”, “/help privs” или “/help ” и имя команды, например: “/help time” • /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”=• /spawnentity <ИмяСущности> [<Х>,<У>,]: допустимыми командами будут являться: “/spawnentity mcl_boats:boat” и “/spawnentity mcl_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=• Для /give и /giveme вам понадобится значение «Айтемстринг» (ItemString). Это уникальный идентификатор предмета для внутреннего использования, его можно найти в справке по предмету, если у вас есть привилегия “give” (давать) или “debug” (отлаживать) -• For /spawnentity you need an entity name, which is another identifier=• Для /spawnentity вам нужно имя сущности, которое является другим идентификатором +• 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=• Для /give и /giveme вам понадобится “техническое название” (ItemString). Это уникальный идентификатор предмета для внутреннего использования, его можно найти в справке по предмету, если у вас есть привилегия “give” или “debug” +• For /spawnentity you need an entity name, which is another identifier=• Для /spawnentity вам нужно имя сущности, которое также является идентификатором 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”.=Каждый игрок имеет набор привилегий, который отличается от сервера к серверу. Ваши привилегии определяют, что вы можете и чего не можете делать. Привилегии могут быть предоставлены и отозваны у других игроков любым игроком, имеющим привилегию под названием “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.=На многопользовательском сервере с конфигурацией по умолчанию новые игроки начинают с привилегиями “interact” (взаимодействовать) и “shout” (кричать). Привилегия “interact” необходима для основных действий игрового процесса, таких как строительство, добыча , использование и т. д. Привилегия “shout” позволяет общаться в чате. @@ -414,14 +414,14 @@ 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”.=Чтобы просмотреть свои собственные привилегии, выполните команду сервера “/privs”. Here are a few basic privilege-related commands:=Вот несколько основных команд, связанных с привилегиями: • /privs: Lists your privileges=• /privs: список ваших привилегий -• /privs : Lists the privileges of =• /privs <игрок>: список привилегий игрока с именем <игрок> +• /privs : Lists the privileges of =• /privs <игрок>: список привилегий <игрока> • /help privs: Shows a list and description about all privileges=• /help privs: показывает список и описание всех привилегий Players with the “privs” privilege can modify privileges at will:=Игроки с привилегией “privs” могут предоставлять игрокам привилегии, а также лишать их, по своему усмотрению: • /grant : Grant to =• /grant <игрок> <привилегия>: предоставить <привилегию> <игроку> • /revoke : Revoke from =• /revoke <игрок> <привилегия>: отменить <привилегию> для <игрока> In single-player mode, you can use “/grantme all” to unlock all abilities.=В однопользовательском режиме вы можете использовать “/grantme all“, чтобы сразу разблокировать себе все возможности. 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).=Весть мир полностью основан на блоках, и точно так же устроен свет. Каждый блок имеет свою собственную яркость. Яркость блока выражается в “уровне свечения“, который колеблется от 0 (полная темнота) до 15 (такой же яркий, как солнце). +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).=Весь мир полностью основан на блоках, и точно так же устроен свет. Каждый блок имеет свою собственную яркость. Яркость блока выражается в “уровне свечения“, который колеблется от 0 (полная темнота) до 15 (такой же яркий, как солнце). 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.=Искусственный свет излучается светящимися блоками. Искусственный свет имеет уровень яркости от 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.=Солнечный свет самый яркий и всегда идет совершенно прямо с неба в любое время дня. Ночью свет превращается в лунный, и он тоже даёт небольшое количество света. Уровень яркости солнечного света равен 15. @@ -461,7 +461,7 @@ Enabling Creative Mode in MineClone 2 applies the following changes:=При вк 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 mobs only spawn on particular blocks (like grass blocks).=Мобы появляются случайным образом по всему миру. Это называется “спаунинг” (“spawning” – появление, рождение, нерест). Каждый вид мобов появляется на определенных типах блоков при заданном уровне освещенности. Высота тоже играет свою роль. Мирные мобы, как правило, появляются при дневном свете, в то время как враждебные предпочитают темноту. Большинство мобов могут появляться на любом твердом блоке, но некоторые мобы появляются только на определённых блоках (например, травяных). +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=Животные @@ -485,21 +485,21 @@ Core hunger rules:=Основные правила голода: • 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=• При 18-20 очках голода ваше здоровье восстанавливается со скоростью 1 HP каждые 4 секунды +• At 18-20 hunger points, you regenerate 1 HP every 4 seconds=• При 18-20 очках голода ваше здоровье восстанавливается со скоростью 1 очко каждые 4 секунды • At 6 hunger points or less, you can't sprint=• При 6 очках голода и менее меньше вы не можете бежать -• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)=• При 0 очках голода вы теряете 1 HP 4 секунды (до уровня 1 HP) -• Poisonous food decreases your health=• Ядовитая пища ухудшает ваше здоровье. +• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)=• При 0 очках голода вы теряете 1 очко здоровья 4 секунды (до тех пор пока здоровье не понизится до 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.=У вас есть 0-20 очков голода, обозначенных 20 куриными ножками над панелью быстрого доступа. У вас также есть невидимый атрибут: сытость. -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.=Каждый продукт питания увеличивает как очки голода, так и невидимые очки сытости. +You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.=У вас есть 0-20 очков голода, обозначенных 20 куриными ножками над хотбаром. У вас также есть невидимый атрибут: насыщение. +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.=Некоторые продукты питания иногда могут вызвать отравление. Когда вы отравлены, символы здоровья и голода становятся болезненно зелёными. Пищевое отравление истощает здоровье на 1 HP в секунду, до уровня 1 HP. Пищевое отравление также уменьшает невидимые очки сытости. Отравление проходит через некоторое время либо при выпивании молока. -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.=Вы начинаете с 5 очками сытости. Максимальная сытость равна вашему текущему уровню голода. Таким образом, с 20 очками голода ваша максимальная сытость 20. Это означает, что продукты питания, которые восстанавливают много очков сытости, тем эффективнее, чем больше у вас очков голода. При низком уровне голода большая часть сытости будет потеряна. -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.=Если ваши невидимые очки сытости достигают 0, вы начинаете испытывать голод постепенно терять очки голода. Если вы видите, что индикатор голода уменьшается, значит, настало время поесть. -Saturation decreases by doing things which exhaust you (highest exhaustion first):=Сытость уменьшается, если вы делаете вещи, которые истощают вас (от высокого к низкому истощению): -• Regenerating 1 HP=• Восстановление 1 HP (единицы здоровья/удара) -• Suffering food poisoning=• Страдание пищевым отравлением +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.=Некоторая пища иногда может вызвать отравление. Когда вы отравлены, символы здоровья и голода становятся болезненно зелёными. Пищевое отравление истощает здоровье на 1 HP в секунду, до уровня 1 HP. Пищевое отравление также уменьшает невидимые очки насыщения. Отравление проходит через некоторое время либо при выпивании молока. +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.=Вы начинаете с 5 очками насыщения. Максимальное насыщение равно вашему текущему уровню голода. Таким образом, с 20 очками голода ваше максимальное насыщение равно 20. Это означает, что пища, которая восстанавливает много очков насыщения, тем эффективнее, чем больше у вас очков голода. При низком уровне голода большая часть насыщения будет потеряна. +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.=Если ваши невидимые очки насыщения достигает 0, вы начинаете постепенно терять очки голода. Если вы видите, что индикатор голода уменьшается, значит, настало время поесть. +Saturation decreases by doing things which exhaust you (highest exhaustion first):=Насыщение уменьшается, если вы делаете вещи, которые истощают вас (от большего к меньшему): +• Regenerating 1 HP=• Восстановление 1 единицы здоровья +• Suffering food poisoning=• Страдание от пищевого отравления • Sprint-jumping=• Прыжки во время бега • Sprinting=• Бег • Attacking=• Атака @@ -508,4 +508,4 @@ Saturation decreases by doing things which exhaust you (highest exhaustion first • 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.=Если у вас есть карта в любом отсеке на панели быстрого доступа, вы можете использовать миникарту. +If you have a map item in any of your hotbar slots, you can use the minimap.=Если у вас есть карта в любом слоте хотбара, вы можете использовать миникарту. diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.ru.tr b/mods/HELP/mcl_tt/locale/mcl_tt.ru.tr index 349b6a5fb..501f8f9ef 100644 --- a/mods/HELP/mcl_tt/locale/mcl_tt.ru.tr +++ b/mods/HELP/mcl_tt/locale/mcl_tt.ru.tr @@ -1,33 +1,34 @@ # textdomain: mcl_tt -Head armor=Зашита головы -Torso armor=Защита тела -Legs armor=Защита ног -Feet armor=Защита ступней -Armor points: @1=Эффективность защиты: @1 -Armor durability: @1=Долговечность защиты: @1 +Head armor=Броня головы +Torso armor=Броня тела +Legs armor=Броня ног +Feet armor=Броня ступней +Armor points: @1=Эффективность брони: @1 +Armor durability: @1=Прочность брони: @1 Protection: @1%=Уровень защиты: @1% Hunger points: +@1=Очки голода: +@1 -Saturation points: +@1=Очки сытости: +@1 +Saturation points: +@1=Очки насыщения: +@1 Deals damage when falling=Наносит урон при падении -Grows on grass blocks or dirt=Растёт на блоках травы или грязи -Grows on grass blocks, podzol, dirt or coarse dirt=Растёт на блоках травы, подзола, грязи и твёрдой грязи +Grows on grass blocks or dirt=Растёт на дёрне или земле +Grows on grass blocks, podzol, dirt or coarse dirt=Растёт на дёрне, земле, подзоле, каменистой земли Flammable=Легковоспламенимо Zombie view range: -50%=Дальность зрения зомби: -50% Skeleton view range: -50%=Дальность зрения скелета: -50% Creeper view range: -50%=Дальность зрения крипера: -50% Damage: @1=Урон: @1 Damage (@1): @2=Урон (@1): @2 +Durability: @1=Прочность: @1 Healing: @1=Исцеление: @1 Healing (@1): @2=Исцеление (@1): @2 Full punch interval: @1s=Интервал полного удара: @1 с -Contact damage: @1 per second=Урон при контакте: @1 в секунду -Contact healing: @1 per second=Исцеление при контакте: @1 в секунду -Drowning damage: @1=Урон при падении: @1 +Contact damage: @1 per second=Урон при попадении: @1 в секунду +Contact healing: @1 per second=Исцеление при попадении: @1 в секунду +Drowning damage: @1=Урон при утоплении: @1 Bouncy (@1%)=Упругость (@1%) Luminance: @1=Свечение: @1 -Slippery=Скользкость +Slippery=Скользкий блок Climbable=Можно карабкаться -Climbable (only downwards)=Можно спускаться +Climbable (only downwards)=Можно спускаться вниз No jumping=Нельзя прыгать No swimming upwards=Нельзя плыть вверх No rising=Нельзя подниматься @@ -35,13 +36,13 @@ Fall damage: @1%=Урон при падении: @1% Fall damage: +@1%=Урон при падении: +@1% No fall damage=Нет урона при падении Mining speed: @1=Скорость добычи: @1 -Very fast=очень высокая -Extremely fast=ужасно высокая -Fast=высокая -Slow=низкая -Very slow=очень низкая -Painfully slow=мучительно низкая -Mining durability: @1=Долговечность добычи: @1 -Block breaking strength: @1=Сила разбиения блоков: @1 -@1 uses=@1 раз(а) +Very fast=Очень высокая +Extremely fast=Экстремально высокая +Fast=Высокая +Slow=Низкая +Very slow=Очень низкая +Painfully slow=Крайне низкая +Mining durability: @1=Прочность добывания: @1 +Block breaking strength: @1=Сила добычи блока: @1 +@1 uses=@1 использований Unlimited uses=не ограничено diff --git a/mods/HELP/mcl_tt/locale/template.txt b/mods/HELP/mcl_tt/locale/template.txt index 6fb735b13..c8cf2908a 100644 --- a/mods/HELP/mcl_tt/locale/template.txt +++ b/mods/HELP/mcl_tt/locale/template.txt @@ -17,6 +17,7 @@ Skeleton view range: -50%= Creeper view range: -50%= Damage: @1= Damage (@1): @2= +Durability: @1 Healing: @1= Healing (@1): @2= Full punch interval: @1s= diff --git a/mods/HUD/awards/locale/awards.ru.tr b/mods/HUD/awards/locale/awards.ru.tr index 8495c270f..6f6d40f4d 100644 --- a/mods/HUD/awards/locale/awards.ru.tr +++ b/mods/HUD/awards/locale/awards.ru.tr @@ -11,52 +11,52 @@ (Secret Award)=(Секретная награда) =<идентификатор достижения> =<имя> -A Cat in a Pop-Tart?!=Кот в печеньке?! +A Cat in a Pop-Tart?!=Кот в печеньке!? Achievement gotten!=Получено достижение! Achievement gotten:=Получено достижение: Achievement gotten: @1=Получено достижение: @1 Achievement not found.=Достижение не найдено. -All your awards and statistics have been cleared. You can now start again.=Ваши награды удалены вместе со всей статистикой. Теперь можно начать всё сначала. +All your awards and statistics have been cleared. You can now start again.=Ваша статистика и все награды очищены. Теперь вы можете начать всё сначала. Awards=Награды Craft: @1×@2=Скрафчено: @1×@2 Craft: @1=Скрафчено: @1 -Die @1 times.=Умер(ла) @1 раз(а). -Die.=Умер(ла). -Get the achievements statistics for the given player or yourself=Получение статистики достижений для заданного игрока или для себя -Join the game @1 times.=Присоединился(ась) к игре @1 раз(а). -Join the game.=Присоединился(ась) к игре. -List awards in chat (deprecated)=Вывести список наград в чат (устарело). -Place a block: @1=Разметил(а) блок: @1 -Place blocks: @1×@2=Разместил(а) блоки: @1×@2 +Die @1 times.=Умер @1 раз(а). +Die.=Погибните. +Get the achievements statistics for the given player or yourself=Получение статистики и достижений для заданного игрока или для себя +Join the game @1 times.=Присоединился к игре @1 раз(а). +Join the game.=Присоединитесь к игре. +List awards in chat (deprecated)=Вывести список наград в чат (устаревшее). +Place a block: @1=Разметил блок: @1 +Place blocks: @1×@2=Разместил блоки: @1×@2 Secret Achievement gotten!=Секретное достижение получено! Secret Achievement gotten:=Секретное достижение получено: Secret Achievement gotten: @1=Секретное достижение получено: @1 Show details of an achievement=Показать подробности достижения Show, clear, disable or enable your achievements=Отобразить, очистить, запретить или разрешить ваши достижения Get this achievement to find out what it is.=Получите это достижение, чтобы узнать, что это. -Write @1 chat messages.=Написано @1 сообщений(е,я) в чате. -Write something in chat.=Написал(а) что-то в чате. -You have disabled your achievements.=Вы запретили ваши достижения. -You have enabled your achievements.=Вы разрешили ваши достижения. +Write @1 chat messages.=Написано @1 сообщений в чате. +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.=Вы запретили награды. Выполните /awards enable, чтобы разрешить их обратно. -[c|clear|disable|enable]=[c|clear - очистить|disable - запретить|enable - разрешить] -OK=О'кей -Error: No awards available.=Ошибка: Награды недоступны +You've disabled awards. Type /awards enable to reenable.=Вы отключили награды. Выполните /awards enable, чтобы включить их обратно. +[c|clear|disable|enable]=[c|clear - очистить|disable - отключить|enable - включить] +OK=ОК +Error: No awards available.=Ошибка: Нет доступных наград Eat: @1×@2=Съедено: @1×@2 Eat: @1=Съедено: @1 @1/@2 eaten=@1/@2 съедено -Place @1 block(s).=Поместил(а) @1 блок(а,ов). -Dig @1 block(s).=Выкопал(а) @1 блок(а,ов). -Eat @1 item(s).=Съел(а) @1 предмет(а,ов). -Craft @1 item(s).=Скрафтил(а) @1 предмет(а,ов). +Place @1 block(s).=Поместил @1 блок(а,ов). +Dig @1 block(s).=Выкопал @1 блок(а,ов). +Eat @1 item(s).=Съел @1 предмет(а,ов). +Craft @1 item(s).=Скрафтил @1 предмет(а,ов). Can give achievements to any player=Может выдавать достижения любому игроку (grant ( | all)) | list=(grant <игрок> (<достижение> | all - всем)) | список Give achievement to player or list all achievements=Выдать достижение игроку или отобразить все достижения @1 (@2)=@1 (@2) Invalid syntax.=Неверный синтаксис. -Invalid action.=Непредусмотренное действие. -Player is not online.=Игрок не подключён. -Done.=Сделано. +Invalid action.=Неверное действие. +Player is not online.=Игрок не в сети. +Done.=Готово. Achievement “@1” does not exist.=Достижения “@1” не существует. -@1 has made the achievement @2=@1 получил(а) достижение @2 +@1 has made the achievement @2=@1 получил достижение @2 diff --git a/mods/HUD/hudbars/locale/hudbars.ru.tr b/mods/HUD/hudbars/locale/hudbars.ru.tr index 2d278e339..b76ecc155 100644 --- a/mods/HUD/hudbars/locale/hudbars.ru.tr +++ b/mods/HUD/hudbars/locale/hudbars.ru.tr @@ -1,4 +1,4 @@ # textdomain: hudbars -Health=HP -Breath=дыхание +Health=Здоровье +Breath=Дыхание @1: @2/@3=@1: @2/@3 diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.ru.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.ru.tr index 0db2ae99d..559ed3adb 100644 --- a/mods/HUD/mcl_achievements/locale/mcl_achievements.ru.tr +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.ru.tr @@ -1,49 +1,55 @@ # 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.=Создание верстака из 4 досок. -Craft a stone pickaxe using sticks and cobblestone.=Создание каменного топора из палок и булыжников. -Craft a wooden sword using wooden planks and sticks on a crafting table.=Изготовление деревянного меча из досок и палок на верстаке. +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.=Скрафтите верстак из 4 досок. +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.=Удар по скелету, скелету-иссушителю либо уклонение от стрелы на расстоянии не менее 20 метров. -Hot Topic=Автор Жжёт -Into Fire=В Огне -Into the Nether=В Аду -Iron Belly=Железный Живот +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.=Попадите по скелету, скелету-иссушителю или страннику стрелой из лука на расстоянии не менее 20 метров. +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.=Поднятие дерева с земли.@nПодсказка: Бейте по стволу, пока он не упадёт на землю, превратившись в предмет. -Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Поднятие кожи с пола.@nПодсказка: Коровы и некоторые другие животные могут оставлять кожу, если их убивать. -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.=Приготовление рыбы в печи.@nПодсказка: Ловите рыбу удочкой и готовьте её в печи. -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.=Получение слитка железа из печи.@nПодсказка: чтобы переплавить железную руду, нужно положить её в печь и туда же поместить топливо (уголь или другое). -The Haggler=Хагглер -The Lie=Тортик +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.=Поднимите бревно с земли.@nПодсказка: Бейте по стволу, пока он не выпадёт на землю, превратившись в предмет. +Pick up leather from the floor.@nHint: Cows and some other animals have a chance to drop leather, when killed.=Поднимите кожу.@nПодсказка: Коровы и некоторые другие животные могут оставлять кожу, если их убить. +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.=Приготовьте рыбу в печи.@nПодсказка: Поймайте рыбу удочкой и приготовьте её в печи. +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.=Получите слиток железа из печи.@nПодсказка: чтобы переплавить железную руду, нужно положить в печь руду и топливо (например, уголь). +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.=Поездка на вагонетке минимум на 1000 метров от стартовой точки за один раз. -Use 8 cobblestones to craft a furnace.=Создание печи из 8 булыжников. -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.=Использование пшеницы для приготовления хлеба. +Time to Mine!=Пора в шахту! +Time to Strike!=К бою готов! +Travel by minecart for at least 1000 meters from your starting point in a single ride.=Прокатитесь на вагонетке минимум на 1000 метров от стартовой точки за один раз. +Use 8 cobblestones to craft a furnace.=Скрафтите печь из 8 булыжников. +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.=Скрафтите хлеб из пшеницы. +Stone Age=Каменный век +Mine a stone with new pickaxe.=Добудьте камень новой киркой. +Hot Stuff=Горячая штучка +Put lava in a bucket.=Наберите ведро лавы. +Ice Bucket Challenge=Две стихии +Obtain an obsidian block.=Получите блок обсидиана. diff --git a/mods/HUD/mcl_achievements/locale/template.txt b/mods/HUD/mcl_achievements/locale/template.txt index ecdba2672..eccec5225 100644 --- a/mods/HUD/mcl_achievements/locale/template.txt +++ b/mods/HUD/mcl_achievements/locale/template.txt @@ -47,3 +47,9 @@ 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.= +Stone Age= +Mine a stone with new pickaxe.= +Hot Stuff= +Put lava in a bucket.= +Ice Bucket Challenge= +Obtain an obsidian block.= diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr b/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr index a8886286e..39c816b16 100644 --- a/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr +++ b/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr @@ -1,14 +1,14 @@ # textdomain: mcl_credits -3D Models= -A faithful Open Source clone of Minecraft= -Contributors= -Creator of MineClone= -Creator of MineClone2= -Developers= -Jump to speed up (additionally sprint)= -Maintainers= -MineClone5= -Original Mod Authors= -Sneak to skip= -Textures= -Translations= \ No newline at end of file +3D Models=3D модели +A faithful Open Source clone of Minecraft=Преданный клон Minecraft с открытым исходным кодом +Contributors=Контрибуторы +Creator of MineClone=Создатель MineClone +Creator of MineClone2=Создатель MineClone2 +Developers=Разработчики +Jump to speed up (additionally sprint)=[Прыжок] или [Спринт] для перемотки +Maintainers=Сопровождающие проекта +MineClone5=MineClone5 +Original Mod Authors=Оригинальные авторы модов +Sneak to skip=[Красться] чтобы пропустить +Textures=Текстуры +Translations=Переводчики \ No newline at end of file diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.ru.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.ru.tr index d5b6ec396..b71e4bbfa 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.ru.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.ru.tr @@ -1,59 +1,55 @@ # textdomain: mcl_death_messages -@1 was fatally hit by an arrow.=@1 застрелил лучник. -@1 has been killed with an arrow.=@1 убило стрелой из лука. -@1 was shot by an arrow from @2.=@1 убило стрелой @2. -@1 was shot by an arrow from a skeleton.=@1 был(а) убит(а) стрелой скелета. -@1 was shot by an arrow from a stray.=@1 был(а) убит(а) стрелой странника. -@1 was shot by an arrow from an illusioner.=@1 был(а) убит(а) стрелой иллюзора. -@1 was shot by an arrow.=@1 был(а) убит(а) стрелой. -@1 forgot to breathe.=@1 забыл(а) подышать. -@1 drowned.=@1 утонул(а). -@1 ran out of oxygen.=У @1 закончился кислород. -@1 was killed by @2.=@1 был(а) убит(а) @2. -@1 was killed.=@1 был(а) убит(а). -@1 was killed by a mob.=@1 был(а) убит(а) мобом. -@1 was burned to death by a blaze's fireball.=@1 до смерти прожарило файерболом ифрита. -@1 was killed by a fireball from a blaze.=@1 был(а) убит(а) файерболом ифрита. -@1 was burned by a fire charge.=@1 сожгло огненным разрядом. -A ghast scared @1 to death.=Гаст напугал @1 до смерти. -@1 has been fireballed by a ghast.=@1 настиг файербол Гаста. -@1 fell from a high cliff.=@1 свалился(ась) с высокого утёса. -@1 took fatal fall damage.=@1 получил(а) смертельный урон от падения. -@1 fell victim to gravity.=@1 стал(а) жертвой гравитации. -@1 died.=@1 умер(ла). -@1 was killed by a zombie.=@1 был(а) убит(а) зомби. -@1 was killed by a baby zombie.=@1 был(а) убит(а) малышом-зомби. -@1 was killed by a blaze.=@1 был(а) убит(а) ифритом. -@1 was killed by a slime.=@1 был(а) убит(а) слизняком. -@1 was killed by a witch.=@1 был(а) убит(а) ведьмой. -@1 was killed by a magma cube.=@1 был(а) убит(а) лавовым кубом. -@1 was killed by a wolf.=@1 был(а) убит(а) волком. -@1 was killed by a cat.=@1 был(а) убит(а) кошкой. -@1 was killed by an ocelot.=@1 был(а) убит(а) оцелотом. -@1 was killed by an ender dragon.=@1 был(а) убит(а) драконом предела. -@1 was killed by a wither.=@1 был(а) убит(а) иссушителем. -@1 was killed by an enderman.=@1 был(а) убит(а) эндерменом. -@1 was killed by an endermite.=@1 был(а) убит(а) эндермитом. -@1 was killed by a ghast.=@1 был(а) убит(а) гастом. -@1 was killed by an elder guardian.=@1 был(а) убит(а) древним стражем. -@1 was killed by a guardian.=@1 был(а) убит(а) стражем. -@1 was killed by an iron golem.=@1 был(а) убит(а) железным големом. -@1 was killed by a polar_bear.=@1 был(а) убит(а) полярным медведем. -@1 was killed by a killer bunny.=@1 был(а) убит(а) кроликом-убийцей. -@1 was killed by a shulker.=@1 был(а) убит(а) шалкером. -@1 was killed by a silverfish.=@1 был(а) убит(а) чешуйницей. -@1 was killed by a skeleton.=@1 был(а) убит(а) скелетом. -@1 was killed by a stray.=@1 был(а) убит(а) странником. -@1 was killed by a slime.=@1 был(а) убит(а) слизняком. -@1 was killed by a spider.=@1 был(а) убит(а) пауком. -@1 was killed by a cave spider.=@1 был(а) убит(а) пещерным пауком. -@1 was killed by a vex.=@1 был(а) убит(а) досаждателем. -@1 was killed by an evoker.=@1 был(а) убит(а) магом. -@1 was killed by an illusioner.=@1 был(а) убит(а) иллюзором. -@1 was killed by a vindicator.=@1 был(а) убит(а) поборником. -@1 was killed by a zombie villager.=@1 был(а) убит(а) зомби-жителем. -@1 was killed by a husk.=@1 был(а) убит(а) кадавром. -@1 was killed by a baby husk.=@1 был(а) убит(а) машылом-кадавром. -@1 was killed by a zombie pigman.=@1 был(а) убит(а) зомби-свиночеловеком. -@1 was killed by a baby zombie pigman.=@1 был(а) убит(а) малышом-зомби-свиночеловеком. -@1 was slain by @2.= +@1 went up in flames=@1 сгорел в языках пламени +@1 walked into fire whilst fighting @2=@1 вошел в огонь, сражаясь с @2 +@1 was struck by lightning=В @1 попала молния +@1 was struck by lightning whilst fighting @2=В @1 попала молния, пока он сражался с @2 +@1 burned to death=@1 сгорел заживо +@1 was burnt to a crisp whilst fighting @2=@1 обгорел до углей, пока сражался с @2 +@1 tried to swim in lava=@1 попытался поплавать в лаве +@1 tried to swim in lava to escape @2=@1 попытался переплыть лаву, убегая от @2 +@1 discovered the floor was lava=@1 узнал что пол это лава +@1 walked into danger zone due to @2=@1 вошел в опасную зону благодаря @2 +@1 suffocated in a wall=@1 задохнулся в стене +@1 suffocated in a wall whilst fighting @2=@1 задохнулся в стене, пока +@1 drowned=@1 утонул +@1 drowned whilst trying to escape @2=@1 утонул, убегая от @2 +@1 starved to death=@1 умер от голода +@1 starved to death whilst fighting @2=@1 умер от голода, пока сражался с @2 +@1 was pricked to death=@1 был заколот до смерти +@1 walked into a cactus whilst trying to escape @2=@1 прошелся по кактусу, убегая от @2 +@1 hit the ground too hard=@1 слишком сильно ударился об землю +@1 hit the ground too hard whilst trying to escape @2=@1 слишком сильно ударился об землю, убегая от @2 +@1 experienced kinetic energy=@1 испытал на себе кинетическую энергию +@1 experienced kinetic energy whilst trying to escape @2=@1 испытал на себе кинетическую энергию, убегая от @2 +@1 fell out of the world=@1 выпал из мира +@1 didn't want to live in the same world as @2=@1 не захотел жить в том же мире, что и @2 +@1 died=@1 погиб +@1 died because of @2=@1 погиб из-за @2 +@1 was killed by magic=@1 был убит магией +@1 was killed by magic whilst trying to escape @2=@1 был убит магией, убегая от @2 +@1 was killed by @2 using magic=@1 был убит @2 с помощью магии +@1 was killed by @2 using @3=@1 был убит @2 с помощью @3 +@1 was roasted in dragon breath=@1 поджарился в драконьем дыхании +@1 was roasted in dragon breath by @2=@1 поджарился в драконьем дыхании благодаря @2 +@1 withered away=@1 иссох +@1 withered away whilst fighting @2=@1 иссох, пока сражался с @2 +@1 was shot by a skull from @2=@1 был застрелен @2 +@1 was squashed by a falling anvil=@1 был раздавлен падающей наковальней +@1 was squashed by a falling anvil whilst fighting @2=@1 был раздавлен падающей наковальней, пока сражался с @2 +@1 was squashed by a falling block=@1 был раздавлен падающим блоком +@1 was squashed by a falling block whilst fighting @2=@1 был раздавлен падающим блоком, пока сражался с @2 +@1 was slain by @2=@1 погиб от @2 +@1 was slain by @2 using @3=@2 убил @1 с помощью своего @3 +@1 was shot by @2=@1 был застрелен @2 +@1 was shot by @2 using @3=@2 застрелил @1 с помощью своего @3 +@1 was fireballed by @2=@1 получил файерболом от @2 +@1 was fireballed by @2 using @3=@1 получил файерболом от @2 из @3 +@1 was killed trying to hurt @2=@1 погиб, пытаясь навредить @2 +@1 was killed by @3 trying to hurt @2=@1 убит @3, пытаясь навредить @2 +@1 blew up=@1 взорвался +@1 was blown up by @2=@1 был взорван @2 +@1 was blown up by @2 using @3=@1 был взорван @2 с помощью @3 +@1 was squished too much=@1 был слишком сильно сдавлен +@1 was squashed by @2=@1 был слишком сильно сдавлен благодаря @2 +@1 went off with a bang=@1 отошел в мир иной под звуки салюта +@1 went off with a bang due to a firework fired from @3 by @2=@1 отошел в мир иной под звуки салюта, выпущенного из @3 игроком @2 \ No newline at end of file diff --git a/mods/HUD/mcl_experience/bottle.lua b/mods/HUD/mcl_experience/bottle.lua index 10e42a57d..992b7247c 100644 --- a/mods/HUD/mcl_experience/bottle.lua +++ b/mods/HUD/mcl_experience/bottle.lua @@ -45,7 +45,7 @@ local function throw_xp_bottle(pos, dir, velocity) end minetest.register_craftitem("mcl_experience:bottle", { - description = "Bottle o' Enchanting", + description = S("Bottle o' Enchanting"), inventory_image = "mcl_experience_bottle.png", wield_image = "mcl_experience_bottle.png", stack_max = 64, diff --git a/mods/HUD/mcl_experience/locale/mcl_experience.ru.tr b/mods/HUD/mcl_experience/locale/mcl_experience.ru.tr index a87840aff..cc95a7f42 100644 --- a/mods/HUD/mcl_experience/locale/mcl_experience.ru.tr +++ b/mods/HUD/mcl_experience/locale/mcl_experience.ru.tr @@ -1,7 +1,8 @@ # textdomain: mcl_experience [[] ]=[[<игрок>] ] -Gives a player some XP=Даёт игроку XP +Gives a player some XP=Выдать игроку XP Error: Too many parameters!=Ошибка: слишком много параметров! Error: Incorrect value of XP=Ошибка: Недопустимое значение XP Error: Player not found=Ошибка: Игрок не найден -Added @1 XP to @2, total: @3, experience level: @4=Добавляем @1 XP игроку @2, итого: @3, уровень опыта: @4 +Added @1 XP to @2, total: @3, experience level: @4=Добавлено @1 XP игроку @2, итого: @3, уровень опыта: @4 +Bottle o' Enchanting=Пузырёк опыта \ No newline at end of file diff --git a/mods/HUD/mcl_experience/locale/template.txt b/mods/HUD/mcl_experience/locale/template.txt index a355cbbac..b2a4c04d2 100644 --- a/mods/HUD/mcl_experience/locale/template.txt +++ b/mods/HUD/mcl_experience/locale/template.txt @@ -5,3 +5,4 @@ Error: Too many parameters!= Error: Incorrect value of XP= Error: Player not found= Added @1 XP to @2, total: @3, experience level: @4= +Bottle o' Enchanting= diff --git a/mods/HUD/mcl_hbarmor/locale/hbarmor.de.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.de.tr deleted file mode 100644 index e7aa7d785..000000000 --- a/mods/HUD/mcl_hbarmor/locale/hbarmor.de.tr +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:hbarmor -Armor=Panzerung diff --git a/mods/HUD/mcl_hbarmor/locale/hbarmor.es.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.es.tr deleted file mode 100644 index f9529b482..000000000 --- a/mods/HUD/mcl_hbarmor/locale/hbarmor.es.tr +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:hbarmor -Armor=Armadura diff --git a/mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr deleted file mode 100644 index c5addfa5a..000000000 --- a/mods/HUD/mcl_hbarmor/locale/hbarmor.fr.tr +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:hbarmor -Armor=Armure diff --git a/mods/HUD/mcl_hbarmor/locale/hbarmor.it.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.it.tr deleted file mode 100644 index f02b5c435..000000000 --- a/mods/HUD/mcl_hbarmor/locale/hbarmor.it.tr +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:hbarmor -Armor=Armatura diff --git a/mods/HUD/mcl_hbarmor/locale/hbarmor.ru.tr b/mods/HUD/mcl_hbarmor/locale/hbarmor.ru.tr deleted file mode 100644 index 0b938a594..000000000 --- a/mods/HUD/mcl_hbarmor/locale/hbarmor.ru.tr +++ /dev/null @@ -1,2 +0,0 @@ -# textdomain:hbarmor -Armor=Защита diff --git a/mods/HUD/mcl_inventory/locale/mcl_inventory.ru.tr b/mods/HUD/mcl_inventory/locale/mcl_inventory.ru.tr index d378e168b..6d7ec458f 100644 --- a/mods/HUD/mcl_inventory/locale/mcl_inventory.ru.tr +++ b/mods/HUD/mcl_inventory/locale/mcl_inventory.ru.tr @@ -3,19 +3,20 @@ Recipe book=Книга рецептов Help=Помощь Select player skin=Выбор скина Achievements=Достижения +Switch stack size=Изменить размер стопки Building Blocks=Строительные блоки Decoration Blocks=Декоративные блоки -Redstone=Редстоун (красный камень) +Redstone=Редстоун Transportation=Транспорт -Brewing=Зелья -Miscellaneous=Прочее -Search Items=Искать предметы -Foodstuffs=Продовольствие +Brewing=Зельеварение +Miscellaneous=Разное +Search Items=Поиск предметов +Foodstuffs=Пища Tools=Инструменты -Combat=Битва +Combat=Оружие и доспехи Mobs=Мобы Materials=Материалы Survival Inventory=Инвентарь выживания -Crafting=Крафтинг (изготовление) +Crafting=Крафтинг Inventory=Инвентарь @1/@2=@1/@2 diff --git a/mods/HUD/mcl_inventory/locale/template.txt b/mods/HUD/mcl_inventory/locale/template.txt index 7f1c9769d..e5ba11e40 100644 --- a/mods/HUD/mcl_inventory/locale/template.txt +++ b/mods/HUD/mcl_inventory/locale/template.txt @@ -3,6 +3,7 @@ Recipe book= Help= Select player skin= Achievements= +Switch stack size= Building Blocks= Decoration Blocks= Redstone= diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.ru.tr b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.ru.tr index 39a845d6e..352526ed6 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.ru.tr +++ b/mods/ITEMS/REDSTONE/mcl_comparators/locale/mcl_comparators.ru.tr @@ -1,12 +1,12 @@ # 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.=Он может передавать сигнал редстоуна, определять, содержит ли блок какой-либо предмет, и сравнивать сигналы. +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.=Компаратор имеет 1 основной вход, 2 боковых входа и 1 выход. Выход расположен по направлению стрелки, основной вход в противоположном направлении. Оставшиеся 2 стороны это боковые входы. -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.=Основной вход можно подключать 2 способами: 1) напрямую к энергии редстоуна, как и любой другой компонент; 2) перед компаратором можно установить контейнер (например, сундук), тогда сигнал будет поступать, если в нём содержится хотя бы один предмет. -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.=Режим ПЕРЕДАЧИ:@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 a chest) is placed in front of it and the container contains at least one item.=Основной вход можно подключать 2 способами: 1) напрямую от сигнала редстоуна, как и любой другой компонент; 2) перед компаратором можно установить контейнер (например, сундук), тогда сигнал будет поступать, если в нём содержится хотя бы один предмет. +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.=Режим передачи:@nПередний индикатор погашен. На выходе появляется сигнал редстоуна, только если он подаётся на основной вход. Состояние боковых входов при этом игнорируются. 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.=Режим ВЫЧИТАНИЯ:@nПередний индикатор светится. На выходе есть сигнал только в том случае, если сигнал есть на основной входе, но при этом его нет ни на одном из боковых входов. Redstone Comparator=Компаратор -Redstone Comparator (Subtract)=Компаратор (ВЫЧИТАНИЕ) -Redstone Comparator (Powered)=Компаратор (ВКЛЮЧЁН) -Redstone Comparator (Subtract, Powered)=Компаратор (ВЫЧИТАНИЕ, ВКЛЮЧЁН) +Redstone Comparator (Subtract)=Компаратор (вычитание) +Redstone Comparator (Powered)=Компаратор (подключён) +Redstone Comparator (Subtract, Powered)=Компаратор (вычитание, подключён) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.ru.tr b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.ru.tr index af4d856ec..4a4d5b4fa 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.ru.tr +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/locale/mcl_dispensers.ru.tr @@ -1,25 +1,25 @@ # 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.=Диспенсер это элемент редстоуна, который при подаче энергии редстоуна выбрасывает предмет. В нём есть контейнер из 9 отсеков инвентаря. -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.=Направьте диспенсер в одном из 6 возможных направлений. Предметы будут вылетать из отверстия. [Используйте] диспенсер для доступа к его инвентарю. Загрузите туда предметы, которые должны из него выбрасываться. Подайте однократно на диспенсер энергию редстоуна, чтобы выпал случайный предмет. -The dispenser will do different things, depending on the dispensed item:=Диспенсер будет делать разные вещи, в зависимости от выдаваемых предметов: +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.=Раздатчик это компонент редстоуна, который при подаче сигнала редстоуна выбрасывает предмет. В нём есть контейнер из 9 слотов инвентаря. +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.=Направьте раздатчик в одном из 6 возможных направлений. Предметы будут вылетать из отверстия. Используйте раздатчик для доступа к его инвентарю. Загрузите туда предметы, которые должны из него выбрасываться. Подайте однократно на раздатчик сигнал редстоуна, чтобы он раздал случайный предмет. +The dispenser will do different things, depending on the dispensed item:=Раздатчик будет делать разные вещи, в зависимости от выдаваемых предметов: • Arrows: Are launched=• Стрелы: выстреливают -• Eggs and snowballs: Are thrown=• Яйца и снежки: происходит бросок +• Eggs and snowballs: Are thrown=• Яйца и снежки: бросаются • Fire charges: Are fired in a straight line=• Огненные шары: стреляют по прямой линии -• Armor: Will be equipped to players and armor stands=• Защита: экипирует игроков или стенд защиты +• 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=• Костная мука: применяется к блоку перед диспенсером +• 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=• Головы, тыквы: экипирует игроков, или стенд защиты, или устанавливаются как блоки +• 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=• Диспенсер, направленный вверх +• 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=• Раздатчик, направленный вверх Inventory=Инвентарь -9 inventory slots=9 отсеков инвентаря -Launches item when powered by redstone power=Выбрасывает предметы при подаче энергии редстоуна +9 inventory slots=9 слотов инвентаря +Launches item when powered by redstone power=Выдаёт предметы при подаче сигнала редстоуна diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.ru.tr b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.ru.tr index 22358678a..c4520caf2 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.ru.tr +++ b/mods/ITEMS/REDSTONE/mcl_droppers/locale/mcl_droppers.ru.tr @@ -1,9 +1,9 @@ # 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.=Выбрасыватель это элемент редстоуна и контейнер с 9 отсеками инвентаря, срабатывающий по сигналу редстоуна и выбрасывающий предмет, либо выталкивающий его в контейнер, стоящий перед ним. -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.=Выбрасыватель может быть установлен в 6 возможных направлениях, предметы будут выбрасываться в соответствующем направлении из отверстия. [Используйте] выбрасыватель для доступа к его инвентарю. Подайте на него энергию редстоуна однократно, чтобы заставить его выбросить либо предать один случайный предмет. +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.=Выбрасыватель это компонент редстоуна и контейнер с 9 слотами инвентаря, срабатывающий по сигналу редстоуна и выбрасывающий предмет, либо выталкивающий его в контейнер, стоящий перед ним. +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.=Выбрасыватель может быть установлен в 6 возможных направлениях, предметы будут выбрасываться в соответствующем направлении из отверстия. Используйте выбрасыватель для доступа к его инвентарю. Подайте на него сигнал редстоуна однократно, чтобы заставить его выбросить либо передать один случайный предмет. Downwards-Facing Dropper=Выбрасыватель, смотрящий вниз Upwards-Facing Dropper=Выбрасыватель, смотрящий вверх Inventory=Инвентарь -9 inventory slots=9 отсеков инвентаря -Drops item when powered by redstone power=Выбрасывает предмет при подаче энергии редстоуна +9 inventory slots=9 слотов инвентаря +Drops item when powered by redstone power=Выбрасывает предмет при подаче сигнала редстоуна diff --git a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.ru.tr b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.ru.tr index ac8c658c3..1ae2dd10e 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.ru.tr +++ b/mods/ITEMS/REDSTONE/mcl_observers/locale/mcl_observers.ru.tr @@ -1,5 +1,5 @@ # 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 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=Генерирует импульс редстоуна при смене блока, находящегося перед ним +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.ru.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.ru.tr index a89c8098a..df651acda 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.ru.tr @@ -1,14 +1,14 @@ # textdomain: mesecons_button -Use the button to push it.=[Используйте] кнопку, чтобы нажать её. +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.=Каменная кнопка это элемент редстоуна, сделанный из камня, её можно нажать, чтобы получить энергию редстоуна. При нажатии она включает соседние элементы редстоуна на 1 секунду. +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.=Каменная кнопка это компонент редстоуна, сделанный из камня, её можно нажать, чтобы получить сигнал редстоуна. При нажатии она включает соседние компоненты редстоуна на 1 секунду. 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.=Деревянная кнопка это элемент редстоуна, сделанный из дерева, её можно нажать, чтобы получить энергию редстоуна. При нажатии она включает соседние элементы редстоуна на полторы секунды. Деревянные кнопки можно также активировать стрелами. -Provides redstone power when pushed=Выдаёт энергию редстоуна при нажатии +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.=Деревянная кнопка это компонент редстоуна, сделанный из дерева, её можно нажать, чтобы получить сигнал редстоуна. При нажатии она включает соседние компоненты редстоуна на 1.5 секунды. Деревянные кнопки нажимаются от попадания стрелы. +Provides redstone power when pushed=Выдаёт сигнал редстоуна при нажатии Push duration: @1s=Длительность нажатия: @1с Pushable by arrow=Нажимается стрелами diff --git a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.ru.tr b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.ru.tr index 85bed4b95..bbd0a262e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_commandblock/locale/mesecons_commandblock.ru.tr @@ -1,30 +1,30 @@ # 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.=Ошибка: Команда “@1” не существует; ваш командный блок не был изменён. Используйте чат-команду “help” для поучения списка доступных команд. -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.=Ошибка: Команда “@1” не существует; ваш командный блок не был изменён. Используйте чат-команду “help” для поучения списка доступных команд. Подсказка: Попробуйте убрать ведущий слэш. +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.=Ошибка: Команда “@1” не существует; ваш командный блок не был изменён. Используйте чат-команду “help” для получения списка доступных команд. +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.=Ошибка: Команда “@1” не существует; ваш командный блок не был изменён. Используйте чат-команду “help” для получения списка доступных команд. Подсказка: Попробуйте убрать ведущий слэш. Error: You have insufficient privileges to use the command “@1” (missing privilege: @2)! The command block has not been changed.=Ошибка: Вы не имеете привилегий для использования команды “@1” (отсутствует привилегия: @2)! Командный блок не был изменён. Error: No commander! Block must be replaced.=Ошибка: Нет командующего! Блок следует заменить. Commander: @1=Командующий: @1 -Submit=Отправить +Submit=Принять No commands.=Нет команд. Commands:=Команды: Help=Помощь Placement denied. You need the “maphack” privilege to place command blocks.=Установка запрещена. Для установки командных блоков нужно иметь привилегию “maphack”. 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.=Командные блоки это мощнейшие компоненты редстоуна, способные изменять реальность сами по себе. Другими словами, они могут заставлять сервер выполнять серверные команды, если подать на них энергию редстоуна. -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 usage > 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.=Чтобы иметь возможность устанавливать командные блоки и изменять их команды, вы должны находиться в творческом режиме и иметь привилегию “maphack”. Новый командный блок не содержит команд и ничего не делает. [Используйте] командный блок (в творческом режиме!) для редактирования его команд. Изучите справочную запись “Продвинутое использование > Серверные команды”, чтобы понять, как они работают. Каждая строка содержит одну команду. Вы вводите их так, как вводили бы в консоли, но без ведущих символов слэш. Команды выполняются сверху вниз. +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.=Командные блоки это мощнейшие компоненты редстоуна, способные изменять саму реальность. Другими словами, они могут заставлять сервер выполнять серверные команды, если подать на них сигнал редстоуна. +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 usage > 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.=Чтобы иметь возможность устанавливать командные блоки и изменять их команды, вы должны находиться в творческом режиме и иметь привилегию “maphack”. Новый командный блок не содержит команд и ничего не делает. Используйте командный блок (в творческом режиме!) для редактирования его команд. Изучите справочную запись “Продвинутое использование > Серверные команды”, чтобы понять, как они работают. Каждая строка содержит одну команду. Вы вводите их так, как вводили бы в консоли, но без ведущих символов слэш. Команды выполняются сверху вниз. 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:=Командные блоки поддерживаю шаблоны, вставляйте один из них - и они будут заменены на нужный вам текст: +Command blocks support placeholders, insert one of these placeholders and they will be replaced by some other text:=Командные блоки поддерживают шаблоны, вставляйте один из них - и они будут заменены на нужный вам текст: • “@@c”: commander of this command block=• “@@c”: командир данного командного блока • “@@n” or “@@p”: nearest player from the command block=• “@@n” или “@@p”: игрок, находящийся ближе всего к данному командному блоку • “@@f” farthest player from the command block=• “@@f” игрок, находящийся дальше всего от данного командного блока • “@@r”: random player currently in the world=• “@@r”: случайный игрок, в данный момент присутствующий в мире • “@@@@”: literal “@@” sign=• “@@@@”: если нужно использовать символ “@@” сам по себе -Example 1:@n time 12000@nSets the game clock to 12:00=Пример 1:@n time 12000@nУстанавливает игровые часы на 12:00 +Example 1:@n time 12000@nSets the game clock to 12:00=Пример 1:@n time 12000@nУстанавливает игровое время на 12:00 Example 2:@n give @@n mcl_core:apple 5@nGives the nearest player 5 apples=Пример 2:@n give @@n mcl_core:apple 5@nДаёт ближайшему игроку 5 яблок Access denied. You need the “maphack” privilege to edit command blocks.=Доступ запрещён. Вам нужно иметь привилегию “maphack”, чтобы редактировать командные блоки. -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=При подаче энергии редстоуна выполняет серверные команды -Command blocks are not enabled on this server= +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=При подаче сигнала редстоуна выполняет серверные команды +Command blocks are not enabled on this server=Командные блоки отключены на этом сервере diff --git a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.ru.tr b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.ru.tr index f95d3ee8e..bc23ed33a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_delayer/locale/mesecons_delayer.ru.tr @@ -1,11 +1,11 @@ # 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.=Повторители это универсальные компоненты, выполняющие много задач: 1. Разрешают сигналам проходить только в одном направлении. 2. Задерживают сигнал. 3. Опционально они могут зафиксировать свой выходной сигнал в одном состоянии. -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.=Чтобы подключить повторитель, подайте сигнал в направлении “стрелки” (на вход). Сигнал выйдет с противоположной стороны (с выхода) с задержкой. Чтобы изменить задержку, [используйте] повторитель. Время задержки лежит между 0.1 и 0.4 секунды и может изменяться с шагом 0.1 секунды. Его отражает положение передвигающегося факела редстоуна. +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.=Чтобы подключить повторитель, подайте сигнал на вход в направлении “стрелки”. Сигнал выйдет с противоположной стороны с задержкой. Чтобы изменить задержку, используйте повторитель. Время задержки изменяется от 0.1 до 0.4 секунды и может изменяться с шагом 0.1 секунды. Время задержки отражает положение передвигающегося факела редстоуна. 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)=Повторитель (зафиксированный, подключённый) +Redstone Repeater (Locked)=Повторитель (фиксированный) +Redstone Repeater (Locked, Powered)=Повторитель (фиксированный, подключённый) Redstone Repeater (Delay @1)=Повторитель (задержка @1) Redstone Repeater (Delay @1, Powered)=Повторитель (задержка @1, подключённый) Transmits redstone power only in one direction=Передаёт энергию редстоуна только в одном направлении diff --git a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.ru.tr b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.ru.tr index cd1592a28..451d6d40e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_lightstone/locale/mesecons_lightstone.ru.tr @@ -1,4 +1,4 @@ # textdomain: mesecons_lightstone -Redstone Lamp=Лампа редстоуна -Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Лампа редстоуна это простой компонент редстоуна, который ярко светится (уровень света @1) при подаче на него энергии редстоуна. -Glows when powered by redstone power=Светит при подаче энергии редстоуна +Redstone Lamp=Лампа +Redstone lamps are simple redstone components which glow brightly (light level @1) when they receive redstone power.=Лампа это простой компонент редстоуна, который ярко светится (уровень света @1) при подаче на него сигнала редстоуна. +Glows when powered by redstone power=Светит при подаче сигнала редстоуна diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.ru.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.ru.tr index fbac4366f..d8a3faeb4 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.ru.tr @@ -1,22 +1,22 @@ # 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 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:=[Используйте] нотный блок, чтобы выбрать следующую ноту (всего предусмотрено 25 полутонов или 2 октавы). Проигрываемый инструмент зависит от материала, который находится непосредственно под нотным блоком. +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 25 semitones, or 2 octaves). The intrument played depends on the material of the block below the note block:=Используйте нотный блок, чтобы выбрать следующую ноту (всего предусмотрено 25 полутонов или 2 октавы). Проигрываемый инструмент зависит от материала, который находится непосредственно под нотным блоком. • Glass: Sticks=• Стекло: палочки • Wood: Bass guitar=• Дерево: бас-гитара • Stone: Bass drum=• Камень: бочка • Sand or gravel: Snare drum=• Песок или гравий: барабан • Anything else: Piano=• Что-либо другое: фортепиано • Block of Gold: Bell=• Золотой блок: колокол -• Clay: Flute=• Глина: флейта -• Packed Ice: Chime=• Упакованный лёд: звон +• Clay: Flute=• Блок шлины: флейта +• Packed Ice: Chime=• Плотный лёд: звон • Wool: Guitar=• Шерсть: гитара • Bone Block: Xylophne=• Костный блок: ксилофон -• Block of Iron: Iron 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=Проигрывает ноту при подключении энергии редстоуна +• 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_pistons/locale/mesecons_pistons.ru.tr b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.ru.tr index d69542e79..2f108ac3e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/locale/mesecons_pistons.ru.tr @@ -1,8 +1,8 @@ # textdomain: mesecons_pistons -This block can have one of 6 possible orientations.=Этот блок быть ориентирован в одном из 6 возможных направлений. +This block can have one of 6 possible orientations.=Этот блок быть повёрнут в одном из 6 возможных направлений. 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.=Поршень это компонент редстоуна с толкателем, который толкает блок или блоки перед собой при подаче энергии редстоуна. Следует отметить, что не все блоки могут быть сдвинуты. +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=Толкает или тянет блок при подаче энергии редстоуна +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/locale/mesecons_pressureplates.ru.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.ru.tr index fcd81f451..19a78a87f 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.ru.tr @@ -1,15 +1,15 @@ # 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.=Каменная нажимная панель это компонент редстоуна, который начинает снабжать энергией редстоуна окружающие его блоки, когда игрок или моб находится прямо на нём. От чего-то другого он не сработает. -Provides redstone power when pushed=Производит энергию редстоуна при нажимании +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.=Каменная нажимная плита это компонент редстоуна, который выдает сигнал редстоуна окружающим его блокам, когда игрок или моб находится прямо на нём. От чего-то другого он не сработает. +Provides redstone power when pushed=Производит сигнал редстоуна при нажатии Pushable by players, mobs and objects=Нажимается игроками, мобами и объектами Pushable by players and mobs=Нажимается игроками и мобами Pushable by players=Нажимается игроками diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.ru.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.ru.tr index 108cb9f75..fddc28abe 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.ru.tr @@ -1,8 +1,8 @@ # 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 toggle its state.=[Используйте] датчик дневного света для смены его состояния +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 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=Генерирует энергию редстоуна в солнечном свете +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.ru.tr b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.ru.tr index 45d0d7667..4ff4a1273 100644 --- a/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_torch/locale/mesecons_torch.ru.tr @@ -1,10 +1,10 @@ # 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.=Факелы редстоуна могут быть установлены по краям и на верхней части любого целого плотного твёрдого блока. +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=Блок редстоуна -A block of redstone permanently supplies redstone power to its surrounding blocks.=Блок редстоуна напрямую снабжает энергией окружающие блоки -Provides redstone power when it's not powered itself=Снабжает энергией редстоуна, если не подключён сам -Provides redstone power=Снабжает энергией редстоуна +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/locale/mesecons_walllever.de.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr index 27a3bb55f..880219396 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.de.tr @@ -1,4 +1,4 @@ -# textdomain: mesecons_wallever +# textdomain: mesecons_walllever 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/mesecons_walllever.es.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.es.tr index e0e55298e..9b83bf6db 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.es.tr +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.es.tr @@ -1,4 +1,4 @@ -# textdomain: mesecons_wallever +# textdomain: mesecons_walllever 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_walllever/locale/mesecons_walllever.fr.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.fr.tr index 3d5d23c81..c3dc63aa9 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.fr.tr +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.fr.tr @@ -1,4 +1,4 @@ -# textdomain: mesecons_wallever +# textdomain: mesecons_walllever 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. diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr index 924fe3dd0..9bfed99db 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.pl.tr @@ -1,4 +1,4 @@ -# textdomain: mesecons_wallever +# textdomain: mesecons_walllever Lever=Dźwignia 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.=Dźwignia jest czerwienitowym elementem, który można przełączać między stanem włączonym i wyłączonym. Wysyła ona czerwienitową energię gdy jest w stanie włączonym. Use the lever to flip it on or off.=Użyj dźwigni by przełączyć ją między stanami. diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.ru.tr b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.ru.tr index 6ed05b387..03a7ff481 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/mesecons_walllever.ru.tr @@ -1,5 +1,5 @@ -# textdomain: mesecons_wallever +# textdomain: mesecons_walllever 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=Снабжает энергией редстоуна, когда включён +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_walllever/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_walllever/locale/template.txt index 0187e6d28..198ad9f9a 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 +# textdomain: mesecons_walllever 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.= diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.ru.tr b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.ru.tr index 4316613b0..3bc2669eb 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.ru.tr @@ -1,11 +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.=Редстоун является универсальным проводящим минералом, который передает энергию красного камня. Он может размещаться на поверхности как дорожка. -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.=Поместите редстоун на землю, чтобы создать из него дорожку. Фрагменты дорожек будут соединяться между собой автоматически и могут даже проходить по холмам. Простой способ подать энергию редстоуна к дорожке редстоуна это установка факела редстоуна. +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)=Подключённое пятно редстоуна (@1) Redstone Trail (@1)=Дорожка редстоуна (@1) Powered Redstone Trail (@1)=Подключённая дорожка редстоуна (@1) -Transmits redstone power, powers mechanisms=Передаёт энергию редстоуна, подключает механизмы +Transmits redstone power, powers mechanisms=Передаёт сигнал редстоуна, питает механизмы diff --git a/mods/ITEMS/mcl_amethyst/init.lua b/mods/ITEMS/mcl_amethyst/init.lua index daf4fc386..49b454e53 100644 --- a/mods/ITEMS/mcl_amethyst/init.lua +++ b/mods/ITEMS/mcl_amethyst/init.lua @@ -156,7 +156,7 @@ for _, def in pairs(bud_def) do end minetest.register_node("mcl_amethyst:amethyst_cluster",{ - description = "Amethyst Cluster", + description = S("Amethyst Cluster"), _mcl_hardness = 1.5, _mcl_blast_resistance = 1.5, _doc_items_longdesc = S("Amethyst Cluster is the final growth of amethyst bud."), diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr index 20281bd6b..5f7f29442 100644 --- a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr @@ -1,16 +1,16 @@ # textdomain: mcl_anvils Set Name=Дать имя -Repair and 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.=Чтобы воспользоваться наковальней, кликните по ней правой кнопкой. Наковальня имеет два входных отсека (слева) и один выходной. +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.=Для переименования положите стопку предметов в один отсек, второй оставьте пустым. Наберите имя, нажмите [Enter] или “Дать имя” и заберите переименованные предметы из выходного отсека. -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.=• Инструмент + Инструмент: Положите два инструмента одного типа во входные отсеки. “Здоровье” отремонтированного инструмента будет равно сумме “здоровья” каждого из них, плюс 12% бонус. +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.=• Инструмент + Инструмент: Положите два инструмента одного типа во входные слоты. Прочность отремонтированного инструмента будет равно сумме прочностей каждого из них, плюс еще 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%.=• Инструмент + Материал: Некоторые инструменты можно также ремонтировать, добавляя к ним предмет, из которого они сделаны. Например, железные кирки ремонтируются добавлением слитков железа. Таким способом инструмент восстанавливается на 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.=Наковальня имеет ограниченный срок службы и 3 уровня износа: новая, немного изношенная, сильно повреждённая. Каждый раз, ремонтируя или переименовывая что-либо, вы имеете 12-процентный шанс повредить наковальню. Наковальни также могут повреждаться, когда они падают с высоте более 1 блока. Если повреждённая наковальня повреждается снова, то она уничтожается. -Slightly Damaged Anvil=Немного изношенная наковальня +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.=Наковальня имеет ограниченный срок службы и 3 уровня износа: новая, повреждённая, сильно повреждённая. Каждый раз, ремонтируя или переименовывая что-либо, вы имеете 12-процентный шанс повредить наковальню. Наковальни также могут повреждаться, когда они падают с высоте более 1 блока. Если сильно повреждённая наковальня повреждается снова, то она уничтожается. +Slightly Damaged Anvil=Повреждённая наковальня Very Damaged Anvil=Сильно повреждённая наковальня Repair and rename items=Ремонтирует и переименовывает предметы diff --git a/mods/ITEMS/mcl_armor/locale/mcl_armor.ru.tr b/mods/ITEMS/mcl_armor/locale/mcl_armor.ru.tr index 77ed83d10..9255238bc 100644 --- a/mods/ITEMS/mcl_armor/locale/mcl_armor.ru.tr +++ b/mods/ITEMS/mcl_armor/locale/mcl_armor.ru.tr @@ -1,23 +1,28 @@ # 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=Кожаная фуражка +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 Helmet=Кольчужный шлем +Netherite Helmet=Незеритовый шлем +Leather Tunic=Кожаная броня +Iron Chestplate=Железный нагрудник +Golden Chestplate=Золотой нагрудник +Diamond Chestplate=Алмазный нагрудник Chain Chestplate=Кольчуга +Netherite Chestplate=Незеритовый нагрудник Leather Pants=Кожаные штаны -Iron Leggings=Железные штаны -Golden Leggings=Золотые штаны -Diamond Leggings=Алмазные штаны -Chain Leggings=Кольчужные штаны +Iron Leggings=Железные поножи +Golden Leggings=Золотые поножи +Diamond Leggings=Алмазные поножи +Chain Leggings=Кольчужные поножи +Netherite Leggings=Незеритовые поножи Leather Boots=Кожаные ботинки Iron Boots=Железные ботинки Golden Boots=Золотые ботинки Diamond Boots=Алмазные ботинки Chain Boots=Кольчужные ботинки +Netherite Boots=Незеритовые ботинки +Elytra=Элитра diff --git a/mods/ITEMS/mcl_armor/locale/template.txt b/mods/ITEMS/mcl_armor/locale/template.txt index 8a95fca02..1500587ec 100644 --- a/mods/ITEMS/mcl_armor/locale/template.txt +++ b/mods/ITEMS/mcl_armor/locale/template.txt @@ -21,3 +21,4 @@ Iron Boots= Golden Boots= Diamond Boots= Chain Boots= +Elytra= diff --git a/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.ru.tr b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.ru.tr index 6d05d20fc..ebc08b65a 100644 --- a/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.ru.tr +++ b/mods/ITEMS/mcl_armor_stand/locale/mcl_armor_stand.ru.tr @@ -1,5 +1,5 @@ # 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.=Просто поместите элемент защиты на защитный стенд. Чтобы взять верхнюю часть защиты со стенда, выберите вашу руку и используйте клавишу размещения. -Displays pieces of armor=Демонстрирует части защиты +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.ru.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr index a6cee5a67..29343a5a5 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr @@ -13,65 +13,65 @@ Yellow Banner=Жёлтый флаг Yellow=Жёлтый Green Banner=Зелёный флаг Green=Зелёный -Cyan Banner=Голубой флаг +Cyan Banner=Бирюзовый флаг Cyan=Голубой Blue Banner=Синий флаг Blue=Синий -Magenta Banner=Фиолетовый флаг -Magenta=Фиолетовый +Magenta Banner=Сиреневый флаг +Magenta=Сиреневый Orange Banner=Оранжевый флаг Orange=Оранжевый -Purple Banner=Пурпурный флаг -Violet=Пурпурный +Purple Banner=Фиолетовый флаг +Violet=Фиолетовый Brown Banner=Коричневый флаг Brown=Коричневый Pink Banner=Розовый флаг Pink=Розовый -Lime Banner=Зелёный лаймовый флаг +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.=Используйте крафтинг, чтобы нарисовать узор поверх флага. Украшенные флаги можно украсить повторно, чтобы сочетать разные узоры. Таким способом вы можете нарисовать до 12 слоев на одном флаге. Если флаг содержит градиент, возможно только 3 слоя. -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.=Вы можете скопировать рисунок флага, поместив два флага одного цвета в крафтинговую решётку - один должен быть украшенный, другой - чистый. Наконец, вы можете [использовать] флаг на котле с водой для смывания верхнего слоя. -@1 Bordure=@1 Кайма -@1 Bricks=@1 Кирпичи -@1 Roundel=@1 Рондо -@1 Creeper Charge=@1 Атака крипера -@1 Saltire=@1 Андреевский крест -@1 Bordure Indented=@1 Кайма с отступом -@1 Per Bend Inverted=@1 Повторяющийся изгиб поворотом -@1 Per Bend Sinister Inverted=@1 Повторяющийся зловещий изгиб с поворотом -@1 Per Bend=@1 Повторяющийся изгиб -@1 Per Bend Sinister=@1 Зловещий изгиб -@1 Flower Charge=@1 Забота о цветке -@1 Gradient=@1 Градиент -@1 Base Gradient=@1 Основной градиент -@1 Per Fess Inverted=@1 Обратное деление щита -@1 Per Fess=@1 Деление щита -@1 Per Pale=@1 Вертикальное деление щита -@1 Per Pale Inverted=@1 Вертикальное обратное деление -@1 Thing Charge=@1 Атака существа -@1 Lozenge=@1 Ромб -@1 Skull Charge=@1 Атака черепа -@1 Paly=@1 Бледный -@1 Base Dexter Canton=@1 Основной правый кант -@1 Base Sinister Canton=@1 Основной зловещий кант -@1 Chief Dexter Canton=@1 Главный правый кант -@1 Chief Sinister Canton=@1 Главный зловещий кант -@1 Cross=@1 Крест -@1 Base=@1 Основа -@1 Pale=@1 Черта -@1 Bend Sinister=@1 Зловещий изгиб -@1 Bend=@1 Изгиб -@1 Pale Dexter=@1 Черты справа +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.=Используйте сетку крафта, чтобы нарисовать узор поверх флага. Украшенные флаги можно украсить повторно, чтобы сочетать разные узоры. Таким способом вы можете нарисовать до 12 слоев на одном флаге. Если флаг содержит градиент, возможно только 3 слоя. +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.=Вы можете скопировать рисунок флага, поместив два флага одного цвета в сетку крафта - один должен быть украшенный, другой - чистый. Вы можете использовать флаг на котле с водой чтобы смыть верхний слой. +@1 Bordure=@1 простая кайма +@1 Bricks=@1 кирпичный фон +@1 Roundel=@1 круг в центре +@1 Creeper Charge=@1 лицо крипера +@1 Saltire=@1 диагональный крест +@1 Bordure Indented=@1 рельефная кайма +@1 Per Bend Inverted=@1 нижняя левая половина +@1 Per Bend Sinister Inverted=@1 нижняя правая половина +@1 Per Bend=@1 верхняя правая половина +@1 Per Bend Sinister=@1 верхняя левая половина +@1 Flower Charge=@1 цветок +@1 Gradient=@1 верхний градиент +@1 Base Gradient=@1 нижний градиент +@1 Per Fess Inverted=@1 нижняя половина +@1 Per Fess=@1 верхняя половина +@1 Per Pale=@1 левая половина +@1 Per Pale Inverted=@1 правая половина +@1 Thing Charge=@1 нечто +@1 Lozenge=@1 Ромб в центре +@1 Skull Charge=@1 Весёлый Роджер +@1 Paly=@1 продольные полосы +@1 Base Dexter Canton=@1 нижний левый угол +@1 Base Sinister Canton=@1 нижний правый угол +@1 Chief Dexter Canton=@1 верхний левый угол +@1 Chief Sinister Canton=@1 верхний правый угол +@1 Cross=@1 крест +@1 Base=@1 треть снизу +@1 Pale=@1 вертикальная центральная линия +@1 Bend Sinister=@1 диагональная линия сверху справа +@1 Bend=@1 диагональная линия сверху слева +@1 Pale Dexter=@1 треть слева @1 Fess=@1 Разделение -@1 Pale Sinister=@1 Бледный зловещий -@1 Chief=@1 Главный -@1 Chevron=@1 Шеврон -@1 Chevron Inverted=@1 Инвертированный шеврон -@1 Base Indented=@1 Инвертированный основной -@1 Chief Indented=@1 Инвертированный главный -And one additional layer=И один индивидуальный слой -And @1 additional layers=И @1 дополнительныйх слойёв -Paintable decoration=Художественное украшение +@1 Pale Sinister=@1 треть справа +@1 Chief=@1 треть сверху +@1 Chevron=@1 треугольник снизу +@1 Chevron Inverted=@1 треугольник сверху +@1 Base Indented=@1 гребешки снизу +@1 Chief Indented=@1 гребешки сверху +And one additional layer=И один дополнительный слой +And @1 additional layers=И @1 дополнительных слоёв +Paintable decoration=Раскрашиваемая декорация diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr index 8093e95fb..53d901852 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr @@ -1,40 +1,40 @@ # 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.=Чтобы использовать кровать, встаньте рядом и кликните по ней правой кнопкой. Вы сможете уснуть, только если солнце в закате, либо уже наступила ночь, либо идёт гроза. Кровать при этом должна в месте, свободном от любых опасностей. +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.=Чтобы использовать кровать, встаньте рядом и кликните по ней правой кнопкой. Вы сможете уснуть, только если солнце в закате, либо уже наступила ночь, либо идёт гроза. Кровать при этом должна в безопасном месте. 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 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.=Сон позволяет вам пропустить ночь. Если все игроки в этом мире лягут спать, ночь будет пропущена. Она закончится буквально через несколько секунд. Таким же способом можно пропускать грозы. +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=Голубая кровать +Cyan Bed=Бирюзовая кровать Grey Bed=Серая кровать Light Grey Bed=Светло-серая кровать Black Bed=Чёрная кровать Yellow Bed=Жёлтая кровать Green Bed=Зелёная кровать -Magenta Bed=Фиолетовая кровать +Magenta Bed=Сиреневая кровать Orange Bed=Оранжевая кровать -Purple Bed=Пурпурная кровать +Purple Bed=Фиолетовая кровать Brown Bed=Коричневая кровать Pink Bed=Розовая кровать -Lime Bed=Зелёная лаймовая кровать -Light Blue Bed=Светло-голубая кровать +Lime Bed=Лаймовая кровать +Light Blue Bed=Голубая кровать White Bed=Белая кровать -You can't sleep, the bed's too far away!=Не удаётся лечь, кровать слишком далеко! +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 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!=Задана новая точка возрождения! -Leave bed=Покинуть кровать -Abort sleep=Прервать сон +Leave bed=Встать с кровати +Abort sleep=Проснуться Players in bed: @1/@2=Игроков в кроватях: @1/@2 -Note: Night skip is disabled.=Предупреждение: Пропускание ночи отключено. +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_blackstone/locale/mcl_blackstone.de.tr b/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr index dee9cd15e..9766a07d5 100644 --- a/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr +++ b/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.de.tr @@ -1,7 +1,7 @@ # textdomain: mcl_blackstone Blackstone=Schwarzstein Polished Blackstone=Polierter Schwarzstein -Chieseled Polished Blackstone=Gemeißelter polierter Schwarzstein +Chiseled Polished Blackstone=Gemeißelter polierter Schwarzstein Polished Blackstone Bricks=Polierter Schwarzsteinziegel Basalt=Basalt Polished Basalt=Polierter Basalt diff --git a/mods/ITEMS/mcl_blackstone/locale/template.txt b/mods/ITEMS/mcl_blackstone/locale/template.txt index 0af51d7d3..118560864 100644 --- a/mods/ITEMS/mcl_blackstone/locale/template.txt +++ b/mods/ITEMS/mcl_blackstone/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mcl_blackstone Blackstone= Polished Blackstone= -Chieseled Polished Blackstone= +Chiseled Polished Blackstone= Polished Blackstone Bricks= Basalt= Polished Basalt= @@ -13,6 +13,7 @@ Blackstone Stairs= Polished Blackstone Stairs= Chieseled Polished Blackstone Stairs= Polished Blackstone Brick Stairs= +Chiseled Polished Blackstone= Quartz Bricks= Soul Torch= Soul Lantern= @@ -21,3 +22,4 @@ Eternal Soul Fire= Gilded Blackstone= Nether Gold Ore= Smooth Basalt= +Blackstone Wall= diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.ru.tr b/mods/ITEMS/mcl_books/locale/mcl_books.ru.tr index a4cc9804c..5bfe9f77d 100644 --- a/mods/ITEMS/mcl_books/locale/mcl_books.ru.tr +++ b/mods/ITEMS/mcl_books/locale/mcl_books.ru.tr @@ -10,7 +10,7 @@ by @1=игрока @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.=Удерживая его в руке, кликните правой, чтобы прочитать текущие записи и отредактировать. Вы можете редактировать текст, сколько захотите. Вы также можете подписать книгу, что превратит её в подписанную книгу, её можно будет уложить в стопку с другими такими же, но больше нельзя будет редактировать. +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.=Книга может содержать до 4500 символов. Длина названия ограничена 64 символами. Enter book title:=Введите название книги by @1=игрока @1 @@ -20,9 +20,9 @@ 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.=Чтобы скопировать текст подписанной книги, поместите её в крафтинговую решётку вместе с книгой с пером (или сразу несколькими) и скрафтите. Подписанная книга не израсходуется. Не могут быть скопированы копии копий. +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.=Книжные полки используют в качестве украшений +Bookshelves are used for decoration.=Книжные полки используют в качестве декорации Book and Quill=Книга с пером Write down some notes=Сделайте какие-нибудь записи diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr index 6a1b7ed31..f7bff45d4 100644 --- a/mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr @@ -1,15 +1,18 @@ # 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.=Стрела, выпущенная из лука, обычно наносит урон 1-9. При полном натяжении есть 20-процентный шанс критического удара с уроном 10. Стрела из диспенсера всегда наносит урон уровня 3. -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.=Чтобы использовать стрелы в качестве боеприпасов для лука, просто положите их в любую ячейку вашего инвентаря, и они будут использоваться автоматически. Чтобы использовать стрелы в качестве боеприпасов для диспенсера, поместите их в инвентарь диспенсера. Чтобы взять стрелу, застрявшую в блоке, просто пройдите рядом с ней. +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.=Стрела, выпущенная из лука, обычно наносит урон 1-9. При полном натяжении есть 20% шанс критического удара с уроном 10. Стрела из раздатчика всегда наносит урон 3. +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.=Лук - это оружие дальнего боя, чтобы стрелять стрелами по вашим врагам. +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.=Скорость и урон стрелы увеличиваются, пока вы её натягиваете. Обычный урон стрелы находится между 1 и 9. При полном натяжении есть 20-процентный шанс критического удара с уроном 10. 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=Урон от лука: 1-10 -Damage from dispenser: 3=Урон от диспенсера: 3 -Launches arrows=Пускает стрелы +Damage from dispenser: 3=Урон от раздатчика: 3 +Launches arrows=Выпускает стрелы +Crossbow=Арбалет +Crossbow is a ranged weapon to shoot arrows at your foes.=Арбалет - это оружие дальнего боя, позволяющее стрелять стрелами в ваших врагов. +To use the crossbow, 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 load an arrow into the chamber, then to shoot press left mouse.=Чтобы использовать арбалет, нужно иметь хотя бы одну стрелу в вашем инвентаре (за исключением творческого режима). Удерживайте правую клавишу мыши, чтобы зарядить стрелу, затем нажмите левую кнопку мыши, чтобы выстрелить. diff --git a/mods/ITEMS/mcl_bows/locale/template.txt b/mods/ITEMS/mcl_bows/locale/template.txt index 228b61709..49afe3551 100644 --- a/mods/ITEMS/mcl_bows/locale/template.txt +++ b/mods/ITEMS/mcl_bows/locale/template.txt @@ -13,3 +13,6 @@ Ammunition= Damage from bow: 1-10= Damage from dispenser: 3= Launches arrows= +Crossbow= +Crossbow is a ranged weapon to shoot arrows at your foes.= +To use the crossbow, 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 load an arrow into the chamber, then to shoot press left mouse.= diff --git a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr index 37b96819d..030cadd9d 100644 --- a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr +++ b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr @@ -1,10 +1,10 @@ # textdomain: mcl_brewing -Brewing Stand=Варочный стенд +Brewing Stand=Варочная стойка Inventory=Инвентарь -To use a brewing stand, rightclick it.=Кликните правой, чтобы использовать варочный стенд. -To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Для приготовления зелья вам понадобится огненный порошок в качестве топлива, исходный материал и как минимум 1 стеклянная бутылка, наполненная жидкостью. -Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Поместите огненный порошок в левый отсек, исходный материал в средний отсек и 1-3 бутылки в оставшиеся отсеки. -When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=Когда вы подберёте хорошее сочетание, приготовление зелья начнётся автоматически — появится пар и начнётся расход топлива и исходного материала. Зелья вскоре будут готовы. +To use a brewing stand, rightclick it.=Кликните правой кнопкой мыши, чтобы использовать варочный стенд. +To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Для приготовления зелья вам понадобится огненный порошок в качестве топлива, ингридиент и как минимум 1 стеклянная бутылка, наполненная жидкостью. +Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Поместите огненный порошок в левый слот, ингридиент в средний слот и 1-3 бутылки в оставшиеся слоты. +When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=Когда вы подберёте хорошую комбинацию, варка зелья начнётся автоматически — появится пар и начнётся расход топлива и ингридиента. Зелья вскоре будут готовы. Different combinations of brewing materials and liquids will give different results. Try to experiment!=Разные сочетания варочных материалов и жидкостей будут давать разные результаты. Поэкспериментируйте! -The stand allows you to brew potions!=Стенд позволяет вам варить зелья! +The stand allows you to brew potions!=Стойка позволяет вам варить зелья! Brew Potions=Зельеварение diff --git a/mods/ITEMS/mcl_buckets/locale/mcl_buckets.ru.tr b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.ru.tr index 9c8cd0539..87a283cc8 100644 --- a/mods/ITEMS/mcl_buckets/locale/mcl_buckets.ru.tr +++ b/mods/ITEMS/mcl_buckets/locale/mcl_buckets.ru.tr @@ -1,16 +1,16 @@ # textdomain: mcl_buckets Empty Bucket=Пустое ведро A bucket can be used to collect and release liquids.=Ведро может быть использовано для набора и выливания жидкостей. -Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else.=Ударьте источник жидкости, чтобы зачерпнуть его. После этого вы можете в ведре перенести жидкость в другое место. +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.=Ведро может быть использовано для набора и выливания жидкостей. Это ведро наполнено лавой, которая безопасно хранится внутри. Используйте с осторожностью. -Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!=Стоя на безопасном расстоянии, поместите ведро в пустоту, чтобы создать источник лавы на этом участке. +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.=Ведро может быть использовано для набора и выливания жидкостей. Это ведро наполнено водой. -Place it to empty the bucket and create a water source.=Поместите ведро на пустой участок для создания водного источника. +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.=Поместите ведро на пустой участок для создания источника речной воды. +Place it to empty the bucket and create a river water source.=Используйте ведро на пустом месте для создания источника речной воды. Collects liquids=Набирает жидкости Places a lava source=Переносит источник лавы Places a water source=Переносит источник воды diff --git a/mods/ITEMS/mcl_cake/locale/mcl_cake.ru.tr b/mods/ITEMS/mcl_cake/locale/mcl_cake.ru.tr index 50a5b34c1..9cb85d84c 100644 --- a/mods/ITEMS/mcl_cake/locale/mcl_cake.ru.tr +++ b/mods/ITEMS/mcl_cake/locale/mcl_cake.ru.tr @@ -1,12 +1,12 @@ # 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.=Торты можно есть, восстанавливая очки голода, а также размещать на других блоках. Торт состоит из 7 кусочков. Каждый кусочек восстанавливает 2 очка голода и 0.4 очка сытости. Торты уничтожаются при выкапывании или разрушении нижестоящего блока. -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.=Поместите торт куда-нибудь, затем кликните правой, чтобы съесть кусочек. +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.=Торты можно разместить на блоке и съесть, чтобы восстановить очки голода. Торт состоит из 7 кусочков. Каждый кусочек восстанавливает 2 очка голода и 0.4 очка насыщения. Торты уничтожаются при выкапывании или разрушении нижестоящего блока. +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)=Торт (осталось 6 кусочков) Cake (5 Slices Left)=Торт (осталось 5 кусочков) Cake (4 Slices Left)=Торт (осталось 4 кусочка) Cake (3 Slices Left)=Торт (осталось 3 кусочка) Cake (2 Slices Left)=Торт (осталось 2 кусочка) Cake (1 Slice Left)=Торт (остался 1 кусочек) -With 7 tasty slices!=Из 7 вкусных кусочков -Hunger points: +@1 per slice=Очки голода: +@1 с каждым куском +With 7 tasty slices!=Из 7 вкусных кусочков! +Hunger points: +@1 per slice=Очки голода: +@1 на каждый кусочек diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr index fe1d9aa81..fa2ae6874 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_cauldron +# textdomain: mcl_cauldrons Cauldron=Kessel Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kessel werden benutzt, um Wasser zu lagern, im Regen werden sie langsam aufgefüllt. Kessel können auch verwendet werden, um Banner abzuwaschen. Place a water bucket 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.=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. Benutzen Sie ein bemaltes Banner auf den Kessel, um die oberste Schicht abzuwaschen. diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr index 9748e61b4..16af1a5c9 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_cauldron +# textdomain: mcl_cauldrons 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 bucket 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. diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr index 58826d9ab..32adf9851 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.pl.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_cauldron +# textdomain: mcl_cauldrons Cauldron=Kocioł Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kotły są wykorzystywane do przechowywania wody oraz powoli wypełniają się podczas deszczu. Place a water bucket 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.=Umieść wiadro wody w kotle by wypełnić go wodą. Umieść puste wiadro na pełnym kotle by odzyskać wodę. Umieść szklaną butelkę w kotle z wodą aby odzyskać jedną trzecią wody. Użyj upiększonego sztandaru na kotle z wodą aby zmyć górną warstwę. diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr index a241c5cb0..ea920874b 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_cauldron +# textdomain: mcl_cauldrons 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 bucket 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. diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr index 6ecae1025..fb58ced24 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr @@ -1,7 +1,7 @@ -# textdomain: mcl_cauldron +# textdomain: mcl_cauldrons 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 bucket 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.=Попытайтесь поместить ведро воды в котёл, чтобы наполнить его водой. Попытка поместить пустое ведро приведёт к освобождению котла. Поместите в котёл бутылку воды, чтобы наполнить его на треть. +Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Котлы используются для хранения воды и могут медленно наполняться под дождём. Котлы можно использовать для смывания узоров с флага. +Place a water bucket 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)=Котёл (1/3 воды) Cauldron (2/3 Water)=Котёл (2/3 воды) Cauldron (3/3 Water)=Котёл (3/3 воды) diff --git a/mods/ITEMS/mcl_cauldrons/locale/template.txt b/mods/ITEMS/mcl_cauldrons/locale/template.txt index 5e18f3283..4c476e166 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/template.txt +++ b/mods/ITEMS/mcl_cauldrons/locale/template.txt @@ -1,4 +1,4 @@ -# textdomain: mcl_cauldron +# textdomain: mcl_cauldrons 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 bucket 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.= diff --git a/mods/ITEMS/mcl_chests/locale/mcl_chests.ru.tr b/mods/ITEMS/mcl_chests/locale/mcl_chests.ru.tr index f06ada538..9d1ff5aa9 100644 --- a/mods/ITEMS/mcl_chests/locale/mcl_chests.ru.tr +++ b/mods/ITEMS/mcl_chests/locale/mcl_chests.ru.tr @@ -1,38 +1,38 @@ # 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.=Сундуки это хранилища, предоставляющие 27 отсеков инвентаря. Сундук можно превратить в большой сундук, удвоив его вместительность, для этого нужно поставить ещё один сундук рядом с уже имеющимся. -To access its inventory, rightclick it. When broken, the items will drop out.=Чтобы получить доступ к инвентарю, кликните по сундуку правой клавишей. Если сломать сундук, то он превратится в носимый предмет. +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.=Сундук это хранилище, предоставляющее 27 слотов инвентаря. Сундук можно превратить в большой сундук с двойной вместительностью, если поставить ещё один сундук рядом с уже имеющимся. +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.=Сундук-ловушка - это хранилище, предоставляющее 27 отсеков инвентаря. При открытии он посылает сигнал редстоуна соседним блокам всё время, пока остается открытым. Сундук-ловушку можно превратить в большой сундук-ловушку, удвоив его вместительность, для этого нужно поставить ещё один сундук-ловушку рядом с уже имеющимся. -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.=Сундук Предела предоставляет вам доступ к одиночному персональному межпространственному инвентарю из 27 отсеков. Этот инвентарь остаётся прежним, неважно какой из сундуков Предела вы используете для доступа к нему. Если вы положите предмет в сундук Предела, вы обнаружите его во всех остальных сундуках Предела. Каждый игрок видит только свои собственные предметы и не видит предметы остальных игроков. -Rightclick the ender chest to access your personal interdimensional inventory.=Кликните правой по сундуку Предела, чтобы получить доступ к вашему персональному межпространственному инвентарю. +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.=Сундук-ловушка это хранилище, предоставляющее 27 слотов инвентаря. Когда сундук-ловушка открыт, он посылает сигнал редстоуна рядом стоящим блокам. Сундук-ловушку можно превратить в большой сундук-ловушку с двойной вместительностью, если поставить ещё один сундук-ловушку рядом с уже имеющимся. +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.=Сундук Края предоставляет вам доступ к персональному межпространственному инвентарю из 27 слотов. Этот инвентарь остаётся прежним, неважно какой из сундуков Края вы используете для доступа к нему. Если вы положите предмет в сундук Предела, вы обнаружите его во всех остальных сундуках Предела. Каждый игрок видит только свои собственные предметы и не видит предметы остальных игроков. +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=Светло-голубой ящик шалкера +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=Зелёный лаймовый ящик шалкера +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.=Ящик шалкера это переносное хранилище, предоставляющее 27 отсеков инвентаря для любых предметов, за исключением ящиков шалкера. Ящики шалкера сохраняют в себе инвентарь, если их сломать, так что их вместе со всем инвентарём можно переносить как один предмет. Ящики шалкера могут быть разных цветов. -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.=Чтобы получить доступ к инвентарю ящика шалкера, поставьте его куда-нибудь и кликните по нему правой клавишей. Чтобы взять с собой ящик шалкера со всем его содержимым, просто сломайте его, а потом подберите, ни один предмет из него не выпадет. Чтобы вновь получить доступ к содержимому, его надо снова поставить. +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.=Ящик шалкера это переносное хранилище, предоставляющее 27 слотов инвентаря для любых предметов, за исключением ящиков шалкера. Ящики шалкера сохраняют в себе инвентарь, если их сломать, так что их вместе со всем инвентарём можно переносить как один предмет. Ящики шалкера могут быть разных цветов. +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=Инвентарь -27 inventory slots=27 отсеков инвентаря +27 inventory slots=27 слотов инвентаря Can be carried around with its contents=Можно переносить вместе со всем содержимым Can be combined to a large chest=Можно объединить в большой сундук -27 interdimensional inventory slots=27 межпространственных отсеков инвентаря -Put items inside, retrieve them from any ender chest=Положите внутрь предмет и получите его из любого сундука Предела +27 interdimensional inventory slots=27 межпространственных слотов инвентаря +Put items inside, retrieve them from any ender chest=Положите внутрь предмет и получите его из любого сундука Края Emits a redstone signal when opened=Подаёт сигнал редстоуна, будучи открытым Barrel=Бочка -Barrels are containers which provide 27 inventory slots.=Бочки это хранилища, предоставляющие 27 отсеков инвентаря. +Barrels are containers which provide 27 inventory slots.=Бочки это хранилища, предоставляющие 27 слотов инвентаря. diff --git a/mods/ITEMS/mcl_clock/locale/mcl_clock.ru.tr b/mods/ITEMS/mcl_clock/locale/mcl_clock.ru.tr index dca0f960c..bb24223a2 100644 --- a/mods/ITEMS/mcl_clock/locale/mcl_clock.ru.tr +++ b/mods/ITEMS/mcl_clock/locale/mcl_clock.ru.tr @@ -1,5 +1,5 @@ # 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.=Часы имеют вращающийся диск со значком солнца (жёлтый диск) и луны, а также маленькую стрелку, которая показывает время, обозначая реальное положение солнца и луны в небе. Полдень обозначается символом солнца, а полночь символом луны. +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_cocoas/locale/mcl_cocoas.ru.tr b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.ru.tr index 524c28bcc..80e62cea8 100644 --- a/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.ru.tr +++ b/mods/ITEMS/mcl_cocoas/locale/mcl_cocoas.ru.tr @@ -1,6 +1,6 @@ # textdomain: mcl_cocoas Premature Cocoa Pod=Молодой стручок какао -Cocoa pods grow on the side of jungle trees in 3 stages.=Стручки какао растут на деревьях джунглей в 3 этапа. +Cocoa pods grow on the side of jungle trees in 3 stages.=Стручки какао растут на тропических деревьях в 3 этапа. 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.=Зрелый стручок какао вырос на дереве джунглей до своего полного размера и готов к сбору в качестве какао-бобов. Дальше ему расти некуда. +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.=Зрелый стручок какао вырос на тропическом дереве до своего полного размера и готов к сбору в качестве какао-бобов. Стручок не будет расти дальше. diff --git a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.ru.tr b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.ru.tr index e1d694457..9c43b5681 100644 --- a/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.ru.tr +++ b/mods/ITEMS/mcl_colorblocks/locale/mcl_colorblocks.ru.tr @@ -27,26 +27,26 @@ Green Terracotta=Зелёная керамика Green Glazed Terracotta=Зелёная глазурованная керамика Green Concrete Powder=Зелёный цемент Green Concrete=Зелёный бетон -Cyan Terracotta=Голубая керамика -Cyan Glazed Terracotta=Голубая глазурованная керамика -Cyan Concrete Powder=Голубой цемент -Cyan 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=Фиолетовый бетон +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=Пурпурный бетон +Purple Terracotta=Фиолетовая керамика +Purple Glazed Terracotta=Фиолетовая глазурованная керамика +Purple Concrete Powder=Фиолетовый цемент +Purple Concrete=Фиолетовый бетон Brown Terracotta=Коричневая керамика Brown Glazed Terracotta=Коричневая глазурованная керамика Brown Concrete Powder=Коричневый цемент @@ -55,18 +55,18 @@ 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.=Керамика это основной строительный материал. Он бывает разных цветов. +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.=Бетон это декоративный блок, который бывает разных цветов. Бетон славится хорошим и чистым цветом. +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.=Керамика - основной строительный материал, который может быть разных цветов. Обычный блок керамики не окрашен. Colored Terracotta=Окрашенная керамика diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.ru.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.ru.tr index dadf20c7d..4f5e464aa 100644 --- a/mods/ITEMS/mcl_compass/locale/mcl_compass.ru.tr +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.ru.tr @@ -1,4 +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.=Компас - инструмент, показывающий на начало мира (X@=0, Z@=0) или на точку возрождения в Верхнем Мире. +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Компас - инструмент, показывающий на центр мира (X@=0, Z@=0) или на точку возрождения в Верхнем Мире. Compass=Компас -Points to the world origin=Указывает на начало мира +Points to the world origin=Указывает на центр мира diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index 2d5b5462c..8dffb4ea1 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -1,211 +1,223 @@ # textdomain: mcl_core -@1 could not survive in lava.=@1 не смог(ла) выжить в лаве. -@1 died in lava.=@1 погиб(ла) в лаве. -@1 melted in lava.=@1 расплавился(лась) в лаве. -@1 took a bath in a hot lava tub.=@1 принял(а) ванну с горячей лавой. +@1 could not survive in lava.=@1 не смог выжить в лаве. +@1 died in lava.=@1 погиб в лаве. +@1 melted in lava.=@1 расплавился в лаве. +@1 took a bath in a hot lava tub.=@1 принял ванну с горячей лавой. 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 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 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 decorative block but also useful as a compact storage of lapis lazuli.=Ляпис-лазурный блок это, прежде всего, декоративный блок, но он также удобен для компактного хранения ляпис-лазури. +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 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.=Сегмент лестницы, позволяющий вам карабкаться вертикально. Лестницы можно устанавливать только на стороны твёрдых блоков. Их нельзя разместить на стекле, листьях, льду, светящемся камне и морских фонарях. +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=Бревно акации 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.=Яблоки относятся к продуктовым предметам, которые можно есть. +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.=Барьеры это невидимые блоки-препятствия. Они могут использоваться, например, для создания границ карты. Монстры и животные не будут появляться на барьерах. Заборы с барьерами визуально не связываются. Другие блоки могут строиться на барьерах, как на любых других блоках. +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.=Бедрок это очень твёрдый камень. Его невозможно сломать, выкопать или сдвинуть обычным способом, за исключением творческого режима. +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=Берёзовое бревно Birch Wood Planks=Берёзовые доски Birch leaves are grown from birch trees.=Листва берёзы произрастает на берёзах. -Black Stained Glass=Чёрное витражное стекло +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=Синее витражное стекло +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 decorative blocks and a compact storage of bone meal.=Костные блоки это декоративные блоки, а также способ компактного хранения костной муки. -Bowl=Чаша -Bowls are mainly used to hold tasty soups.=Чаши чаще всего используются для хранения вкусных супов. +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=Коричневое витражное стекло +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 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.=Глиняные шарики это необработанный материал, в основном используемый для создания кирпичей при помощи печи. -Clay is a versatile kind of earth commonly found at beaches underwater.=Глина это универсальный тип почвы, часто встречающийся под водой возле отмелей. +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 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.=Глина это необработанный материал, в основном используемый для создания кирпичей при помощи печи. +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.=Твёрдая грязь равносильна почве для некоторых растений и похожа на обычную грязь, но на ней не растёт трава. +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=Резной красный камень +Cracked Stone Bricks=Потрескавшийся каменный кирпич +Cut Red Sandstone=Резной красный песчаник Cut Sandstone=Резной песчаник -Cut red sandstone is a decorative building block.=Резной красный камень это декоративный строительный блок. +Cut red sandstone is a decorative building block.=Резной красный песчаник это декоративный строительный блок. Cut sandstone is a decorative building block.=Резной песчаник это декоративный строительный блок. -Cyan Stained Glass=Голубое витражное стекло +Cyan Stained Glass=Бирюзовое окрашенное стекло Dark Oak Bark=Кора тёмного дуба Dark Oak Leaves=Листва тёмного дуба Dark Oak Sapling=Саженец тёмного дуба -Dark Oak Wood=Тёмный дуб +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.=Из саженцев тёмного дуба могут вырастать деревья, но для этого надо высаживать их группами. Одинокие саженцы не будут расти. Группа из четырёх саженцев станет деревом через некоторое время после высадки на освещённый участок почвы (или грязи) в виде квадрата 2*2. +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.=Из саженцев тёмного дуба могут вырастать деревья, но для этого надо высаживать их группами. Одинокие саженцы не будут расти. Группа из четырёх саженцев станет деревом через некоторое время после высадки на освещённый участок почвы в виде квадрата 2×2. 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.=Алмазная руда встречается редко, в виде скоплений около дна мира. +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.=Грязь то же самое, что почва для некоторых растений. Под освещением на этом блоке может прорасти трава или мицелий, если такие блоки уже есть поблизости. +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 used in villager trades as currency.= +Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку, а не в кластерах. +Emeralds are used in villager trades as currency.=Изумруды используют деревенские жители в качестве валюты. Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава Flowing Water=Текущая вода -Frosted Ice=Намёрзший лёд -Frosted ice is a short-lived solid block. It melts into a water source within a few seconds.=Намёрзший лёд это быстро исчезающий твёрдый блок. Он за несколько секунд тает, превращаясь в источник воды. +Frosted Ice=Подмороженный лёд +Frosted ice is a short-lived solid 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.=Золотые яблоки это изысканные продуктовые предметы, которые можно есть. +Golden apples are precious food items which can be eaten.=Золотые яблоки это ценный съедобный продукт. Granite=Гранит -Grass Block=Травяной блок +Grass Block=Дёрн Grass Path=Тропинка -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.=Тропинки это декоративная разновидность травяных блоков. Их верхняя часть окрашена другим цветом, а они сами чуть ниже, чтобы это смотрелось как притоптанная трава. Такие блоки можно создать при помощи лопаты. При помещении под твёрдый блок данные блоки превращаются в грязь. +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=Серое витражное стекло +Green Stained Glass=Зелёное окрашенное стекло +Grey Stained Glass=Серое окрашенное стекло Ice=Лёд -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.=Лёд это твёрдый блок, обычно встречающийся в холодных областях. Он плавится, когда рядом имеется источник света уровня 12 и выше. Если он плавится или ломается, будучи расположенным на другом блоке, то превращается в источник воды. -In the End dimension, starting a fire on this block will create an eternal fire.=В измерении Предела разжигание огня на этом блоке создаст вечный огонь. +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.=Лёд это твёрдый блок, обычно встречающийся в холодных областях. Он тает, когда рядом имеется источник света уровня 12 и выше. Если он тает или ломается, будучи расположенным на другом блоке, то превращается в источник воды. +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.=Листва дерева джунглей произрастает на деревьях джунглей. +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.=Ляпис-лазурная руда это руда ляпис-лазури. Она изредка встречается в виде скоплений вблизи дна мира. +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.=Чистое железо. Используется для создания брони, инструментов и чего угодно. -Mossy Cobblestone=Мшистый булыжник -Mossy Stone Bricks=Мшистый каменный блок +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.=Железный слиток. Используется для создания брони, инструментов и прочего. +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.=Мицелий это тип грязи, идеально подходящий для грибов. В отличие от других грязевых блоков, он не может быть превращён в грядку при помощи мотыги. При наличии освещения мицелий медленно распространяется по соседствующей с ним грязи. Под непрозрачным блоком или жидкостью со временем превращается обратно в грязь. +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=Дубовое бревно 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.=Упакованный лёд это сжатая форма льда. Он непрозрачный и твёрдый. +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=Розовое витражное стекло +Pink Stained Glass=Розовое окрашенное стекло Podzol=Подзол -Podzol is a type of dirt found in taiga forests. Only a few plants are able to survive on it.=Подзол это тип грязи, встречающийся в таёжных лесах. Только несколько растений имеют способность выжить на нём. +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 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=Пурпурное витражное стекло +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=Красный песок Red Sandstone=Красный песчаник -Red Stained Glass=Красное витражное стекло +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.=Краснокаменная руда обычно содержится вблизи дна мира. +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.=Песчаник это сжатый песок, мягкая разновидность камня. +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=Гладкий красный камень +Slime blocks are very bouncy and prevent fall damage.=Блок слизи очень упругий и спасает от повреждений при падении. +Smooth Red Sandstone=Гладкий красный песчаник Smooth Sandstone=Гладкий песчаник -Smooth red sandstone is a decorative building block.=Гладкий красный камень это декоративный строительный блок. -Smooth sandstone is compressed sand and is a rather soft kind of stone.=Гладкий песчаник это сжатый песок, мягкая разновидность камня. +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.=Немного угля содержится в камне, это обычное явление, скопления таких блоков встречаются около возвышенностей. -Some iron contained in stone, it is prety common and can be found below sea level.=Немного железа содержится в камне, это довольно обычное явление, такие блоки встречаются ниже уровня моря. +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=Еловое бревно Spruce Wood Planks=Еловые доски Spruce leaves are grown from spruce trees.=Хвоя растёт на еловых деревьях. -Stained glass is a decorative 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.=Палки это универсальный материал, используемый для создания различных вещей, присутствует во многих рецептах. +Sticks are a very versatile crafting material; used in countless crafting recipes.=Палки это универсальный материал, используемый для крафта различных предметов, присутствует во многих рецептах. Stone=Камень -Stone Bricks=Каменные блоки +Stripped Acacia Log=Отёсаное бревно акации +Stripped Acacia Wood=Отёсаная древесина акации +Stripped Birch Log=Отёсаное берёзовое бревно +Stripped Birch Wood=Отёсаная берёзовая древесина +Stripped Dark Oak Log=Отёсаное бревно тёмного дуба +Stripped Dark Oak Wood=Отёсаная древесина тёмного дуба +Stripped Jungle Log=Отёсаное бревно тропического дерева +Stripped Jungle Wood=Отёсаная древесина тропического дерева +Stripped Oak Log=Отёсаное дубовое бревно +Stripped Oak Wood=Отёсаная дубовая древесина +Stripped Spruce Log=Отёсаное еловое бревно +Stripped Spruce Wood=Отёсаная еловая древесина +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.=Сахарный тростник это растение, имеющее некоторое применение в крафтинге. Если тростник находится по соседству с водой на травяном блоке, грязи, красном песке, подзоле или грубой грязи, он будет медленно расти вверх до 3 блоков. Если сломать тростник, все верхние части также сломаются. +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.=Сахарный тростник это растение, используемое в крафте. Если тростник находится по соседству с водой на дёрне, земле, песке, красном песке, подзоле или каменистой земле, он будет медленно расти вверх до 3 блоков. Если сломать тростник, все верхние части также сломаются. 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.=Берёзовый ствол @@ -214,45 +226,46 @@ 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.=Это часть кактуса, обычно встречающегося в засушливых областях, особенно в пустынях. Со временем кактусы растут до 3 блоков вверх на песке или красном песке. Кактус колет живых существ, трогающих его, причиняя урон в 1 HP каждые полсекунды. Если сломать кактус, все вышестоящие блоки сломаются также. +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.=Это кактус, обычно встречающийся в засушливых регионах, особенно в пустынях. Со временем кактусы вырастают до 3 блоков вверх на песке или красном песке. Кактус колет живых существ, касающихся его, причиняя урон в 1 единицу здоровья каждые полсекунды. Если сломать кактус, все вышестоящие блоки сломаются также. 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.=Наст это верхний слой снега. Он тает вблизи не солнечных источников света с яркостью уровня 12 и выше. +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.=Слой снега. Он тает вблизи источников света с яркостью уровня 12 и выше. Vines=Лоза -Vines are climbable blocks which can be placed on the sides of solid full-cube blocks. Vines slowly grow and spread.=Лоза это блок, по которому можно карабкаться, он может быть помещён по сторонам твёрдого кубического блока. +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.=После высадки на почву (например, грязь) при наличии света саженец дерева джунглей вырастет в дерево джунглей через некоторое время. Если высадить 4 саженца по схеме 2*2, вырастет огромное дерево джунглей. -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.=После высадки на почву (например, грязь) при наличии света саженец ели вырастет в ель через некоторое время. Если высадить 4 саженца по схеме 2*2, вырастет огромная ель. -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 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.=После посадки на почву (например, на землю) при наличии света саженец тропического дерева вырастет в тропическое дерево через некоторое время. Если высадить 4 саженца по схеме 2×2, вырастет огромное тропическое дерево. +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.=После посадки на почву (например, на землю) при наличии света саженец ели вырастет в ель через некоторое время. Если высадить 4 саженца по схеме 2×2, вырастет огромная ель. +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.=“Уголь” относится к угольным кускам, добываемым из угольной руды, которую можно встретить под землёй. Уголь это стандартное печное топливо для вас, но он также нужен, чтобы сделать факелы, угольные блоки и несколько других вещей. +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.=• Если вода попадает прямо под лаву, эта вода превращается в камень. +• 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.=• Когда лава прямо над водой, вода превращается в камень. -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.=Наст может стыковаться и иметь один из 8 разных уровней высоты. При уровнях 2-8 в снег нельзя провалиться. Верхний снег превращается в 2-9 снежков, в зависимости от его высоты. -This block can only be placed on full solid blocks and on another top snow (which increases its height).=Этот блок можно поместить только на целый твёрдый блок либо на другой наст (что увеличит его высоту). +• 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.=Гранит это камень вулканической породы. +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.=Слои снега могут наслаиваться друг на друга и иметь один из 8 разных уровней высоты. При уровнях 2-8 слой снега становится непроходиымы. Слой снега дропает 2-9 снежков, в зависимости от его высоты. +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=Повреждение при контакте: @1 за полсекунды +Contact damage: @1 per half second=Урон при контакте: @1 за полсекунды Slows down movement=Замедляет перемещение -2×2 saplings required=Высаживается по схеме 2*2 -2×2 saplings @= large tree=2*2 саженца @= большое дерево -Grows on sand or dirt next to water=Растёт на песке или грязи рядом с водой -Stackable=Можно состыковать +2×2 saplings required=Высаживается по схеме 2×2 +2×2 saplings @= large tree=2×2 саженца @= большое дерево +Grows on sand or dirt next to water=Растёт на песке или земле рядом с водой +Stackable=Наслаивается +Enchanted Golden Apple=Зачарованное золотое яблоко diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 19d156711..da500ab8c 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -92,6 +92,7 @@ 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.= +Enchanted Golden Apple= Emerald= Emerald Ore= Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.= diff --git a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.ru.tr b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.ru.tr index 1e4eb560f..88aa019f6 100644 --- a/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.ru.tr +++ b/mods/ITEMS/mcl_crafting_table/locale/mcl_crafting_table.ru.tr @@ -1,8 +1,8 @@ # 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.=Верстак это блок, позволяющий крафтить в решётке 3×3, что позволяет выполнять продвинутый крафтинг. -Rightclick the crafting table to access the 3×3 crafting grid.=Кликните правой для получения доступа к решётке крафтинга 3×3. +A crafting table is a block which grants you access to a 3×3 crafting grid which allows you to perform advanced crafts.=Верстак это блок с сеткой крафта 3×3, что позволяет использовать продвинутые рецепты. +Rightclick the crafting table to access the 3×3 crafting grid.=Кликните правой кнопкой мыши для получения доступа к сетке крафта 3×3. Recipe book=Книга рецептов -Crafting=Крафтинг +Crafting=Крафт Inventory=Инвентарь -3×3 crafting grid=Решётка крафтинга 3×3 +3×3 crafting grid=Сетка крафта 3×3 diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr index 1515a2cd2..7ce948210 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr @@ -1,24 +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.=Деревянные двери это сдвоенные блочные преграды, которые можно открывать и закрывать вручную и по сигналу редстоуна. -To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Чтобы открыть или закрыть деревянную дверь, кликните правой либо подайте к её нижней части сигнал редстоуна. +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Деревянные двери это барьеры высотой в 2 блока, которые можно открывать и закрывать вручную или по сигналу редстоуна. +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=Дверь из дерева джунглей +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.=Железные двери это сдвоенные блочные преграды, которые можно открывать и закрывать только по сигналу редстоуна и нельзя вручную. +Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Железные двери это барьеры высотой в 2 блока, которые можно открывать и закрывать только по сигналу редстоуна, но не вручную. 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.=Деревянные люки это горизонтальные преграды, которые можно открывать и закрывать вручную и по сигналу редстоуна. Они занимают верхнюю или нижнюю часть блока, в зависимости от того, как они были установлены. В открытом состоянии по ним можно карабкаться, как по лестницам. +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.=Железные люки это горизонтальные преграды, которые можно открывать и закрывать только по сигналу редстоуна и нельзя вручную. Они занимают верхнюю или нижнюю часть блока, в зависимости от того, как они были установлены. В открытом состоянии по ним можно карабкаться, как по лестницам. -Openable by players and redstone power=Открывается игроками и действием редстоуна -Openable by redstone power=Открывается действием редстоуна +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.ru.tr b/mods/ITEMS/mcl_dye/locale/mcl_dye.ru.tr index e70388115..7d3e107b1 100644 --- a/mods/ITEMS/mcl_dye/locale/mcl_dye.ru.tr +++ b/mods/ITEMS/mcl_dye/locale/mcl_dye.ru.tr @@ -3,25 +3,25 @@ Bone Meal=Костная мука Light Grey Dye=Светло-серый краситель Grey Dye=Серый краситель Ink Sac=Чернильный мешок -Purple Dye=Пурпурный краситель -Lapis Lazuli=Ляпис-лазурь -Light Blue Dye=Светло-голубой краситель -Cyan Dye=Голубой краситель -Cactus Green=Зелень кактуса -Lime Dye=Зелёный лаймовый краситель -Dandelion Yellow=Одуванчиковый жёлтый краситель +Purple Dye=Фиолетовый краситель +Lapis Lazuli=Лазурит +Light Blue Dye=Голубой краситель +Cyan Dye=Бирюзовый краситель +Cactus Green=Зеленый краситель +Lime Dye=Лаймовый краситель +Dandelion Yellow=Жёлтый краситель Cocoa Beans=Какао-бобы Orange Dye=Оранжевый краситель -Rose Red=Экстракт красной розы -Magenta 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.=Кликните правой по овце, чтобы окрасить её шерсть. Остальные вещи окрашиваются путём крафтинга. +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.=Кликните правой по овце, чтобы сделать её шерсть коричневой. Кликните правой по боковой части ствола дерева джунглей, чтобы посадить молодое какао. +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=Растут на стволах деревьев джунглей +Grows at the side of jungle trees=Растут на стволах тропических деревьев Speeds up plant growth=Ускоряет рост растений diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.ru.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.ru.tr index 6cd1e1db6..f599a7799 100644 --- a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.ru.tr +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.ru.tr @@ -2,13 +2,13 @@ Aqua Affinity=Родство с водой Increases underwater mining speed.=Увеличивает скорость добычи под водой. Bane of Arthropods=Бич членистоногих -Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Увеличивает урон и применяет Замедление IV к насекомым и членистоногим (паукам, пещерным паукам, чешуйницам и чешуйницам края). +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Увеличивает урон и применяет Замедление IV к насекомым и членистоногим (паукам, пещерным паукам, чешуйницам и чешуйницам Края). Blast Protection=Взрывоустойчивость Reduces explosion damage and knockback.=Уменьшает урон и отдачу от взрывов. Channeling=Громовержец Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.=Бьёт молнией в цель. Работает только во время грозы, когда цель не защищена плотными блоками. Curse of Binding=Проклятие несъёмности -Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=Предмет не может быть изъят из слота доспехов, кроме как в результате смерти, разрушения или в креативном режиме. +Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=Предмет не может быть изъят из слота доспехов, кроме как в результате смерти, разрушения или в творческом режиме. Curse of Vanishing=Проклятье утраты Item destroyed on death.=Предмет уничтожается при смерти. Depth Strider=Покоритель глубин @@ -21,17 +21,17 @@ Fire Aspect=Заговор огня Sets target on fire.=Поджигает цель. Fire Protection=Защита от огня Reduces fire damage.=Уменьшает урон от огня. -Flame=Пламя +Flame=Горящая стрела Arrows set target on fire.=Стрелы поджигают цель. Fortune=Удача -Increases certain block drops.=Увеличивает выпадение ресурсов из блоков. +Increases certain block drops.=Даёт шанс выпадения большего количества ресурсов из блоков. Frost Walker=Ледоход -Turns water beneath the player into frosted ice and prevents the damage from magma blocks.=Превращает воду под игроком в замороженный лёд и предотвращает урон от магмовых блоков. +Turns water beneath the player into frosted ice and prevents the damage from magma blocks.=Превращает воду под игроком в подмороженный лёд и предотвращает урон от магмовых блоков. Impaling=Пронзатель Trident deals additional damage to ocean mobs.=Трезубец наносит дополнительный урон океаническим мобам. Infinity=Бесконечность Shooting consumes no regular arrows.=При стрельбе не расходуются стрелы. -Knockback=Отскок +Knockback=Отдача Increases knockback.=Увеличивает отдачу. Looting=Добыча Increases mob loot.=Увеличивает добычу от мобов. @@ -66,18 +66,18 @@ Increases damage.=Увеличенный урон. Silk Touch=Шёлковое касание Mined blocks drop themselves.=Добываемый блок выпадает сам, даже если из него должно выпадать что-то другое. Smite=Небесная кара -Increases damage to undead mobs.=Дополнительный урон мертвякам (зомби и т.п.). +Increases damage to undead mobs.=Дополнительный урон нежити. Soul Speed=Скорость души Increases walking speed on soul sand.=Увеличивает скорость ходьбы по песку душ. Sweeping Edge=Разящий клинок Increases sweeping attack damage.=Увеличивает урон по мобам, стоящих рядом с целью. Thorns=Шипы Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=Отражают некоторый урон, получаемый от ударов, за счёт снижения прочности с каждым разом. -Unbreaking=Нерушимость +Unbreaking=Прочность Increases item durability.=Увеличивает прочность предмета. Inventory=Инвентарь -@1 Lapis Lazuli=@1 Ляпис-лазурь -@1 Enchantment Levels=@1 Уровень зачаровывания +@1 Lapis Lazuli=@1 лазурит(а) +@1 Enchantment Levels=@1 уровень зачаровывания Level requirement: @1=Требуемый уровень: @1 Enchant an item=Зачаровать предмет []=<игрок> <зачарование> [<уровень>] @@ -98,3 +98,4 @@ The target item is not enchantable.=Указана незачаровываем Enchanted Book=Зачарованная книга Enchanting Table=Стол зачаровывания Enchant=Зачарование +Spend experience, and lapis to enchant various items.=Зачаровавает предметы за опыт и лазурит diff --git a/mods/ITEMS/mcl_enchanting/locale/template.txt b/mods/ITEMS/mcl_enchanting/locale/template.txt index 1f540d6d3..c459a308b 100644 --- a/mods/ITEMS/mcl_enchanting/locale/template.txt +++ b/mods/ITEMS/mcl_enchanting/locale/template.txt @@ -95,6 +95,7 @@ Enchant an item= Enchanted Book= Enchanting Table= +Spend experience, and lapis to enchant various items.= Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.= Enchanting succeded.= diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr b/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr index 6ab7a3c67..494ffdfdb 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr @@ -1,33 +1,33 @@ # textdomain: mcl_end -End Stone=Камень Предела -End Stone Bricks=Кирпичи из камня Предела +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.=Используйте клавишу [Атаковать], чтобы освободить око Предела. Оно поднимется и полетит в горизонтальном направлении к ближайшему храму портала. Если вы очень близко к храму портала Предела, то око Предела полетит к нему напрямую. Оно остановится через несколько секунд. Оно может превратиться обратно в предмет, но есть 20-процентная вероятность того, что оно разобьётся. -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=Растёт на камнях Предела +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.=Используйте клавишу [Атаковать], чтобы кинуть око Края. Оно поднимется и полетит в горизонтальном направлении к ближайшему храму с порталом. Если вы очень близко к храму портала Края, то око Края полетит к нему напрямую. Оно остановится через несколько секунд. Оно может превратиться обратно в предмет, но есть 20-процентная вероятность того, что око разобьётся. +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=Показывает путь к загадочному измерению Предела -End Crystal=Кристалл Предела -End Crystals are explosive devices. They can be placed on Obsidian or Bedrock. Ignite them by a punch or a hit with an arrow. End Crystals can also be used the spawn the Ender Dragon by placing one at each side of the End Exit Portal.=Кристаллы Предела - это взрывные устройства. Их можно размещать на обсидиане или бедроке. Подрывайте их ударом или попаданием стрелы. Кристаллы Предела также можно использовать для порождения Дракона Предела, для этого их нужно поместить по одной штуке с каждой стороны выходного портала Предела. +Guides the way to the mysterious End dimension=Показывает путь к загадочному измерению Края +End Crystal=Кристалл Края +End Crystals are explosive devices. They can be placed on Obsidian or Bedrock. Ignite them by a punch or a hit with an arrow. End Crystals can also be used the spawn the Ender Dragon by placing one at each side of the End Exit Portal.=Кристаллы Края - это взрывные устройства. Их можно размещать на обсидиане или бедроке. Подрывайте их ударом или попаданием стрелы. Кристаллы Края также можно использовать для порождения Дракона Края, для этого их нужно поместить по одной штуке с каждой стороны выходного портала Края. Explosion radius: @1=Радиус взрыва: @1 -Ignited by a punch or a hit with an arrow=Поджигается ударом или при попадании стрелы -Place the End Crystal on Obsidian or Bedrock, then punch it or hit it with an arrow to cause an huge and probably deadly explosion. To Spawn the Ender Dragon, place one at each side of the End Exit Portal.=Разместите кристалл Предела на обсидиане или бедроке и ударьте по нему или попадите в него стрелой, чтобы вызвать огромный и, вероятно, смертельный взрыв. Чтобы вызвать Дракона Предела, поместите по одной штуке с каждой стороны портала выходного портала Предела. +Ignited by a punch or a hit with an arrow=Взрывается от удара или при попадании стрелы +Place the End Crystal on Obsidian or Bedrock, then punch it or hit it with an arrow to cause an huge and probably deadly explosion. To Spawn the Ender Dragon, place one at each side of the End Exit Portal.=Разместите кристалл Края на обсидиане или бедроке и ударьте по нему или попадите в него стрелой, чтобы вызвать огромный и смертоносный взрыв. Чтобы привызвать Дракона Края, поместите по одной штуке с каждой стороны выходного портала Края. diff --git a/mods/ITEMS/mcl_farming/locale/mcl_farming.ru.tr b/mods/ITEMS/mcl_farming/locale/mcl_farming.ru.tr index f587fb943..04a0e5f68 100644 --- a/mods/ITEMS/mcl_farming/locale/mcl_farming.ru.tr +++ b/mods/ITEMS/mcl_farming/locale/mcl_farming.ru.tr @@ -1,99 +1,101 @@ # 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.=Положите семена свёклы на грядку (которую можно создать при помощи мотыги), чтобы посадить свёклу. Они прорастают при солнечном свете и растут быстрее на увлажнённой почке. Кликните правой по животному, чтобы накормить его семенами свёклы. +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)=Рассада молодой свёклы (стадия 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.=Свёкла растёт в 4 стадии на грядках под действием солнечного света. На увлажнённой грядке процесс пойдёт чуть быстрее. Собирать урожай можно на любой стадии, но выгода будет только при сборе созревших экземпляров. Premature Beetroot Plant=Рассада молодой свёклы Premature Beetroot Plant (Stage 2)=Рассада молодой свёклы (стадия 2) Premature Beetroot Plant (Stage 3)=Рассада молодой свёклы (стадия 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.=Созревшая свёкла это культивируемое растение, с которого уже можно собирать урожай свёклы и некоторое количество свекольных семян. Дальше расти она уже не будет. +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.=Борщ можно есть, он съедобен. +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, 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.=Морковь растёт в 8 стадий на грядках под действием солнечного света, но визуально различить можно только 4 стадии. На увлажнённой грядке рост идёт чуть быстрее. Собирать урожай можно на любой стадии, но выгода будет только при сборе созревших экземпляров. +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.=Морковь растёт в 8 стадий на грядках под действием солнечного света, но визуально различить можно только 4 стадии. На увлажнённой грядке рост идёт чуть быстрее. Собирать урожай можно на любой стадии, но выгода будет только при сборе созревшей моркови. Premature Carrot Plant (Stage @1)=Рассада молодой моркови (стадия @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.=Чтобы съесть, кликните правой, держа её в руке. Или поместите её на грядку, чтобы посадить морковь. Она растёт под действием солнечного света, на влажных грядках процесс идёт быстрее. Или кликните правой по животному, чтобы покормить его. +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!=Золотая морковь это изысканный продуктовый предмет, которые можно есть. Она отлично, отлично утоляет голод! +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.=Примените мотыгу к культивируемому блоку (кликнув правой по нему), чтобы превратить его в грядку. Грязь, травяные блоки и тропинки это культивируемые блоки. Разрыхлив мотыгой грубую грязь, вы получите из её обыкновенную грязь. +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=Семена дыни +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.=Дыня это блок, который может расти на дыневом стебле, выросшем из семян дыни. -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.=Стебель дыни растёт на грядке в 8 стадий. На увлажнённой грядке рост происходит немного быстрее. На созревших стеблях могут расти дыни. -Premature Melon Stem (Stage @1)=Молодой стебель дыни (стадия @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.=Это продуктовый предмет, его можно есть. +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=Созревший арбузный стебель +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.=Стебель арбуза растёт на грядке в 8 стадий. На увлажнённой грядке рост происходит немного быстрее. На созревших стеблях могут расти арбузы. +Premature Melon Stem (Stage @1)=Молодой стебель арбуза (стадия @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, 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.=Картофель растёт в 8 стадий на грядках под действием солнечного света, но визуально различить можно только 4 стадии. На увлажнённой грядке рост идёт чуть быстрее. Собирать урожай можно на любой стадии, но выгода будет только при сборе созревших экземпляров. Premature Potato Plant (Stage @1)=Саженец молодого картофеля (стадия @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.=Чтобы съесть, кликните правой, держа его в руке. Или поместите его на грядку, чтобы посадить картофель. Он растёт под действием солнечного света, на влажных грядках процесс идёт быстрее. Или кликните правой по животному, чтобы покормить его. +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.=Печёный картофель это продуктовый предмет, который насыщает лучше, чем сырой картофель. +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.=Этот картофель вреден для здоровья. Его можно есть для восстановления очков голода, но с вероятностью 60% он вас ненадолго отравит. +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.=Этот картофель вреден. Его можно есть для восстановления очков голода, но с вероятностью 60% вы ненадолго отравитесь. 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.=Положите семена тыквы на грядку (которую можно создать при помощи мотыги), чтобы посадить тыкву. Тыквенные стебли прорастают при солнечном свете, они растут быстрее на увлажнённой почке. Когда стебель созреет, то попытается вырастить тыкву рядом с собой. Кликните правой по животному, чтобы накормить его тыквенными семенами. +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.=Стебель тыквы растёт на грядке в 8 стадий. На увлажнённой грядке рост происходит немного быстрее. На созревших стеблях могут расти тыквы. Premature Pumpkin Stem (Stage @1)=Молодой стебель тыквы (стадия @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. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.=Тыкву можно носить как шлем. Тыквы растут из тыквенных стеблей, которые растут из семян тыквы. +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. 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.=Тыквенный пирог это вкусный продуктовый предмет, который можно съесть. +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.=Грядка нужна для земледелия, она представляет собой поверхность для высадки культур. Он создается при применении мотыги к грязи и тому подобным блокам. Растения могут расти на грядках, но медленно. Грядки превратятся в увлажнённые грядки, если пойдёт дождь, либо если поблизости есть источник воды. Этот блок превратится обратно в грязь, если поместить на него твёрдый блок, а также под действием поршневого рычага. +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 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.=Увлажнённая грядка нужна для земледелия, на ней вы можете выращивать некоторые растения. Она создается, когда обыкновенная грядка попадает под дождь, либо рядом есть источник воды. Без воды этот блок рано или поздно высохнет. Увлажнённая грядка превратится обратно в грязь, если поместить на неё твёрдый блок, либо она попадёт под действие поршневого рычага. +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.=Положите семена пшеницы на грядку (которую можно создать при помощи мотыги), чтобы посадить пшеницу. Семена растут при солнечном свете, их рост происходит быстрее на увлажнённой почке. Кликните правой по животному, чтобы накормить его семенами пшеницы. +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.=Молодая пшеница растёт на грядке под действием солнечного света за 8 стадий. На увлажнённой грядке она растёт быстрее. Собирать урожай можно на любой стадии, но выгода будет только при сборе созревших экземпляров. Premature Wheat Plant (Stage @1)=Ростки молодой пшеницы (стадия @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.=Пшеницы используется для крафтинга. Некоторые животные любят пшеницу. +Wheat is used in crafting. Some animals like wheat.=Пшеницы используется для крафта. Некоторые животные любят пшеницу. 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.=Чтобы вырезать лицо на тыкве, примените ножницы к выбранной стороне тыквы. -Use the “Place” key on an animal to try to feed it wheat.=Нажмите клавишу “Разместить” на животном, чтобы попытаться покормить его пшеницей. -Grows on farmland=Прорастает(ют) на грядке +Use the “Place” key on an animal to try to feed it wheat.=Нажмите клавишу [Использовать] на животном, чтобы попытаться покормить его пшеницей. +Grows on farmland=Прорастает на грядке Turns block into farmland=Превращает блоки в грядки 60% chance of poisoning=Вероятность отравления: 60% Surface for crops=Поверхность для культур Can become wet=Может намокать -Uses: @1=Выдерживает: @1 использований(е,я) +Uses: @1=Выдерживает: @1 использований +Sweet Berry=Сладкая ягода +Sweet Berry Bush (Stage @1)=Куст сладкой ягоды (стадия @1) \ No newline at end of file diff --git a/mods/ITEMS/mcl_farming/locale/template.txt b/mods/ITEMS/mcl_farming/locale/template.txt index 7359fefa6..6fc6660f5 100644 --- a/mods/ITEMS/mcl_farming/locale/template.txt +++ b/mods/ITEMS/mcl_farming/locale/template.txt @@ -97,3 +97,5 @@ Turns block into farmland= Surface for crops= Can become wet= Uses: @1= +Sweet Berry= +Sweet Berry Bush (Stage @1)= diff --git a/mods/ITEMS/mcl_fences/locale/mcl_fences.ru.tr b/mods/ITEMS/mcl_fences/locale/mcl_fences.ru.tr index bafd9ba83..57aee8c2a 100644 --- a/mods/ITEMS/mcl_fences/locale/mcl_fences.ru.tr +++ b/mods/ITEMS/mcl_fences/locale/mcl_fences.ru.tr @@ -1,18 +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.=Заборы это сооружения, преграждающие путь. Блоки заборов соединяются между собой и прикрепляются к твёрдым блокам. Через них нельзя перепрыгивать одиночным прыжком. -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.=Кликните правой по калитке, чтобы открыть или закрыть её. +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=Калитка из дерева джунглей +Jungle Fence=Забор из тропического дерева +Jungle Fence Gate=Калитка из тропического дерева Dark Oak Fence=Забор из тёмного дуба Dark Oak Fence Gate=Калитка из тёмного дуба Acacia Fence=Забор из акации Acacia Fence Gate=Калитка из акации Nether Brick Fence=Забор из адского кирпича -Openable by players and redstone power=Открываются игроками и сигналами редстоуна +Openable by players and redstone power=Открывается игроком и сигналом редстоуна diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr index 941a73aaa..aafe6ef9f 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr @@ -1,19 +1,19 @@ # 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.=Положите огненный шар в диспенсер и подайте на него энергию редстоуна для запуска. Чтобы непосредственно поджигать блоки, просто поместите его на поверхность. +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.=Огонь - это повреждающий и разрушающий, но недолговечный блок. Он будет уничтожать и переходить на соседние легковоспламенимые блоки, но исчезнет, когда больше будет нечему гореть. Он будет погашен близлежащей водой или дождем. Его можно безопасно убрать, стукнув по нему, но если вы стоите прямо в нём, это причинит вам вред. Если огонь зажжён над адским камнем или блоком магмы, он мгновенно превращается в вечный огонь. -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 был(а) заживо приготовлен(а). -@1 felt the burn.=@1 испытал(а) ожог. -@1 died in the flames.=@1 умер(ла) в пламени. -@1 died in a fire.=@1 умер(ла) в огне. +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 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 был зажарен до хрустящей корочки. +@1 felt the burn.=@1 сгорел. +@1 died in the flames.=@1 умер в пламени. +@1 died in a fire.=@1 умер в огне. Fire=Огонь Eternal Fire=Вечный огонь -Dispenser projectile=Диспенсер снаряда -Starts fires and ignites blocks=Высекает огонь, поджигает блоки +Dispenser projectile=Снаряд раздатчика +Starts fires and ignites blocks=Высекает огонь и поджигает блоки diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr index e66eb06a5..d985213b7 100644 --- a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr @@ -1,3 +1,3 @@ # textdomain: mcl_fireworks -Firework Rocket= -Flight Duration:= \ No newline at end of file +Firework Rocket=Фейерверк +Flight Duration:=Длительности полёта: \ No newline at end of file diff --git a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.ru.tr b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.ru.tr index 9ed0e4f8d..1b0b21296 100644 --- a/mods/ITEMS/mcl_fishing/locale/mcl_fishing.ru.tr +++ b/mods/ITEMS/mcl_fishing/locale/mcl_fishing.ru.tr @@ -1,18 +1,18 @@ # textdomain: mcl_fishing Fishing Rod=Удочка -Fishing rods can be used to catch fish.=Удочка используется при ловле рыбы. -Rightclick to launch the bobber. When it sinks right-click again to reel in an item. Who knows what you're going to catch?=Кликните правой для запуска поплавка. Когда он потонет, кликните снова, чтобы вытащить ваш улов. Кстати, что вы собираетесь поймать? +Fishing rods can be used to catch fish.=Удочка используется для ловли рыбы. +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.=Сырая рыба добывается при помощи удочки и это продукт, который можно безопасно есть. При приготовлении её питательная ценность растёт. +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.=Ммм, рыба! Это продуктовый предмет здорового питания. +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.=Сырой лосось добывается при помощи удочки и это продукт, который можно безопасно есть. При приготовлении его питательная ценность растёт. +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.=Это продуктовый предмет здорового питания. +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.=Тропическая рыба добывается при помощи удочки (и удачи) и это продукт, который можно безопасно есть. +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).=Иглобрюхи - распространенный вид рыбы и могут быть пойманы на удочку. Технически их можно есть, но они очень вредны для людей. Употребление иглобрюха в пищу восстанавливает всего 1 очко голода, но отравит вас очень тяжело (несмертельно уменьшит ваше здоровье), вы получите серьёзное пищевое отравление (которое увеличивает голод). -Catches fish in water=Ловит рыбу в воде +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).=Иглобрюх - распространенный вид рыбы, который может быть пойман на удочку. Технически их можно есть, но они очень ядовиты. Употребление иглобрюха в пищу восстанавливает всего 1 очко голода, но сильно отравит вас (несмертельно уменьшит ваше здоровье) и даст сильное пищевое отравление (которое увеличивает голод). +Catches fish in water=Ловить рыбу в воде Very poisonous=Очень ядовит diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr index 6bb6be923..6994da742 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr @@ -3,12 +3,12 @@ Dandelion Flower Pot=Одуванчик в горшке Poppy Flower Pot=Мак в горшке Blue Orchid Flower Pot=Голубая орхидея в горшке Allium Flower Pot=Лук в горшке -Azure Bluet 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=Нивяник обыкновенный в горшке +Oxeye Daisy Flower Pot=Нивяник в горшке Brown Mushroom Flower Pot=Коричневый гриб в горшке Red Mushroom Flower Pot=Красный гриб в горшке Oak Sapling Flower Pot=Саженец дуба в горшке @@ -18,9 +18,9 @@ Dark Oak Sapling Flower Pot=Саженец тёмного дуба в горшк Spruce Sapling Flower Pot=Саженец ели в горшке Birch Sapling Flower Pot=Саженец берёзы в горшке Dead Bush Flower Pot=Мёртвый куст в горшке -Fern 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.=Цветочные горшки это декоративные блоки, в которые можно посадить цветы и другие небольшие растения. 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.=Просто поместите растение в цветочный горшок. Цветочные горшки могут выдержать небольшие цветы (не выше 1 блока), саженцы, папоротники, мёртвые кусты, грибы и кактусы. Кликните правой по горшёчному растению, чтобы вытащить его из горшка. -Can hold a small flower or plant=Можно использовать для высадки небольшого растения или цветка +Can hold a small flower or plant=Можно использовать для посадки небольшого растения или цветка diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.ru.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.ru.tr index f5cb5e18d..98e2147fc 100644 --- a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.ru.tr +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.ru.tr @@ -1,15 +1,15 @@ # 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.=Его можно высаживать только на те блоки, на которых он может расти. +It can only be placed on a block on which it would also survive.=Это можно высаживать только на те блоки, на которых оно может расти. Poppy=Мак Dandelion=Одуванчик -Oxeye Daisy=Нивяник обыкновенный +Oxeye Daisy=Нивяник Orange Tulip=Оранжевый тюльпан Pink Tulip=Розовый тюльпан Red Tulip=Красный тюльпан White Tulip=Белый тюльпан Allium=Лук -Azure Bluet=Хоустония Альба +Azure Bluet=Хаустония серая Blue Orchid=Голубая орхидея Tall Grass=Высокая трава 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.=Высокая трава это маленькое растение, часто встречающееся на поверхности лугов. Их можно собирать, добывая семена пшеницы. С помощью костной муки высокая трава может быть превращена в двойную высокую траву (2 блока в высоту). @@ -28,5 +28,5 @@ Double tallgrass a variant of tall grass and occupies two blocks. It can be harv 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.=Лилия это плоский растительный блок, по которому можно ходить. Он размещается на водных источниках, а также на льду и замороженном льду. +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/mcl_furnaces.ru.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.ru.tr index 1ba8732df..dc6856ae6 100644 --- a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.ru.tr +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.ru.tr @@ -1,7 +1,7 @@ # textdomain: mcl_furnaces Furnace=Печь -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.=[Используйте] печь, чтобы открыть её меню. Положите печное топливо в нижний отсек, а материал-источник в верхний. Печь будет понемногу расходовать топливо для переплавки предмета. Получившийся в результате предмет будет помещён в выходной отсек справа. +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=Книга рецептов diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.ru.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.ru.tr index 28f2de4ff..f802ae92d 100644 --- a/mods/ITEMS/mcl_heads/locale/mcl_heads.ru.tr +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.ru.tr @@ -3,9 +3,9 @@ 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, which reduces the detection range of zombies by 50%.=Голова зомби это небольшой декоративный блок, немного похожий на голову зомби. Его можно носить в качестве шлема, что уменьшит радиус обнаружения вас зомби на 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, which reduces the detection range of creepers by 50%.=Голова крипера это небольшой декоративный блок, немного похожий на голову крипера. Его можно носить в качестве шлема, что уменьшит радиус обнаружения вас крипером на 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.=Голова человека это небольшой декоративный блок, немного похожий на голову человека (например, игрового персонажа). Его можно носить в качестве шлема просто для смеха, он не даёт никакой защиты. +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, which reduces the detection range of skeletons by 50%.=Череп скелета это небольшой декоративный блок, немного похожий на череп скелета. Его можно носить в качестве шлема, что уменьшит радиус обнаружения вас скелетом на 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.=Череп скелета-иссушителя это небольшой декоративный блок, немного похожий на череп скелета-иссушителя. Его можно носить в качестве шлема просто для смеха, он не даёт никакой защиты. +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/locale/mcl_hoppers.ru.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.ru.tr index ac7e82b17..2a1887908 100644 --- a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.ru.tr +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.ru.tr @@ -1,16 +1,16 @@ # textdomain: mcl_hoppers Hopper=Воронка -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.=Воронка это контейнер с 5 отсеками инвентаря. Она может собирать предметы, брошенные сверху, брать предметы из контейнеров сверху, а также пытаться класть свои предметы в примыкающий контейнер. Воронки могут действовать вниз или вбок. Воронки взаимодействуют с сундуками, выбрасывателями, диспенсерами, ящиками шалкеров, печами и другими воронками. +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.=Воронка это контейнер с 5 слотами инвентаря. Она может собирать предметы, брошенные сверху, брать предметы из контейнеров сверху, а также пытаться положить свои предметы в примыкающий контейнер. Воронки могут действовать вниз или вбок. Воронки взаимодействуют с сундуками, выбрасывателями, раздатчиками, ящиками шалкеров, печами и другими воронками. 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.=Воронки могут быть отключены, когда на них подаётся энергия редстоуна. +• 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=Отключенная боковая воронка Inventory=Инвентарь -5 inventory slots=5 отсеков инвентаря +5 inventory slots=5 слотов инвентаря Collects items from above, moves items to container below=Собирает предметы сверху, передаёт их в контейнер ниже Can be disabled with redstone power=Может быть отключена с помощью энергии редстоуна diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr index 7d3d90cc4..81902e716 100644 --- a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr @@ -1,5 +1,5 @@ # textdomain: mcl_itemframes 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.=Просто поместите в рамку любой предмет. Используйте рамку вновь, чтобы заполучить из неё предмет обратно. +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.ru.tr b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.ru.tr index 1787ca229..e81d5d1e3 100644 --- a/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.ru.tr +++ b/mods/ITEMS/mcl_jukebox/locale/mcl_jukebox.ru.tr @@ -1,11 +1,11 @@ # textdomain: mcl_jukebox -Music Disc=Диск с музыкой -A music disc holds a single music track which can be used in a jukebox to play music.=Диск с музыкой содержит одну музыкальную запись, которую можно прослушивать при помощи проигрывателя. -Place a music disc 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=Диск с музыкой +Music Disc=Пластинка +A music disc holds a single music track which can be used in a jukebox to play music.=Пластинка содержит один музыкальный трек, который можно прослушивать при помощи проигрывателя. +Place a music disc 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=@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.=Поместите диск в пустой проигрыватель, диск окажется в проигрывателе и заиграет музыка. Если в проигрывателе уже есть диск, вы сначала извлечёте его. Музыку можете услышать только вы, другие игроки не услышат. +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=Сейчас звучит: @1-@2 -Uses music discs to play music=Проигрывает музыку с дисков +Uses music discs to play music=Проигрывает музыку с пластинок diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.ru.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.ru.tr index 6c34007a9..a51da08ff 100644 --- a/mods/ITEMS/mcl_maps/locale/mcl_maps.ru.tr +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.ru.tr @@ -1,5 +1,5 @@ # 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).=Кликните правой, чтобы начать использовать карту (её больше нельзя будет уложить в стопку). +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=Карта diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.ru.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.ru.tr index f51e4f562..45c0125ad 100644 --- a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.ru.tr +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.ru.tr @@ -1,95 +1,70 @@ # textdomain: mcl_mobitems Rotten Flesh=Гнилое мясо 80% chance of food poisoning=Вероятность отравления 80% - -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.=БУЭ! Этот кусок гнили явно знавал лучшие времена. Если вы отчаялись, то можете съесть его, восстановив несколько очков голода, но с вероятностью 80% вы получите пищевое отравление, которое усилит ваш голод на некоторое время. - +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.=Буэ! Этот кусок гнили явно знавал лучшие времена. Если вы отчаялись, то можете съесть его, восстановив несколько очков голода, но с вероятностью 80% вы получите пищевое отравление, которое усилит ваш голод на некоторое время. 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.=Жареная баранина это запечённое мясо овцы, употребляемое в пищу. +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.=Стейк это приготовленное мясо коровы, его можно есть. +Steak=Жареная говядина +Steak is cooked beef from cows and can be eaten.=Жареная говядина это приготовленное мясо коровы, это съедобный продукт. Raw Chicken=Сырая курица 30% chance of food poisoning=Вероятность отравления 30% - -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.=Сырая курица это продуктовый предмет, небезопасный для употребления. Вы можете его съесть для восстановления нескольких очков голода, но с вероятностью 30% вы пострадаете от пищевого отравление, которое усилит ваш голод на некоторое время. Приготовление сырой курицы сделает её безопасной для еды, значительно увеличив питательную ценность. - -Cooked Chicken=Жареный цыплёнок -A cooked chicken is a healthy food item which can be eaten.=Жареный цыплёнок это здоровый питательный продукт, его можно есть. +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.=Сырая курица это съедобный предмет, небезопасный для употребления. Вы можете его съесть для восстановления нескольких очков голода, но с вероятностью 30% вы пострадаете от пищевого отравление, которое усилит ваш голод на некоторое время. Приготовление сырой курицы сделает её безопасной для еды, значительно увеличив питательную ценность. +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.=Свиная отбивная это приготовленное мясо свиньи, его можно есть. +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.=Это пищевой продукт, его можно есть. +Cooked Rabbit=Приготовленная крольчатина +This is a food item which can be eaten.=Приготовленная крольчатина это съедобный продукт. Milk=Молоко Removes all status effects=Убирает все эффекты состояния - -Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will remove all status effects, but restores no hunger points.=Молоко отлично освежает, его можно получить, применив ведро к корове. Выпив молока, вы избавитесь от всех эффектов состояния, но не восстановите очков голода. - -Use the placement key to drink the milk.=Используйте клавишу размещения, чтобы выпить молоко. +Milk is very refreshing and can be obtained by using a bucket on a cow. Drinking it will remove all status effects, but restores no hunger points.=Молоко отлично освежает, его можно получить, использовав ведро на корове. Выпив молока, вы избавитесь от всех эффектов, но не восстановите очков голода. +Use the placement key to drink the milk.=Используйте правую кнопку мыши, чтобы выпить молоко. Spider Eye=Паучий глаз Poisonous=Ядовито - -Spider eyes are used mainly in crafting. If you're really desperate, you can eat a spider eye, but it will poison you briefly.=Паучьи глаза в основном используются для крафтинга. Если вы отчаялись, то можете съесть их, но они вас на некоторое время отравят. - +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.=Кости можно использовать для приручения волков, чтобы они защищали вас. - -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.=Положите кость рядом с волками, чтобы привлечь их. Используйте клавишу “Разместить” на волке, чтобы дать ему кость и приручить его. Вы можете командовать приручёнными волками с помощью клавиши “Разместить”. - -String=Нити -Strings are used in crafting.=Нити используются для крафтинга +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.=Возьмите в руку кость рядом с волками, чтобы привлечь их. Используйте кость на волке, чтобы приручить его. Вы можете командовать приручёнными волками с помощи правой кнопки мыши. +String=Нить +Strings are used in crafting.=Нить используются для крафтинга Blaze Rod=Огненный стержень -This is a crafting component dropped from dead blazes.=Это крафтинговый ингредиент, отбрасываемый ифритом +This is a crafting component dropped from dead blazes.=Это ингредиент для крафта, отбрасываемый ифритом Blaze Powder=Огненный порошок -This item is mainly used for crafting.=Этот предмет в основном используется для крафтинга. +This item is mainly used for crafting.=Огненный порошок это ингредиент для крафта и топливо для варочной стойки. Magma Cream=Лавовый крем -Magma cream is a crafting component.=Лавовый крем это крафтинговый компонент. +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.=Звезда Ада выбрасывается при смерти иссушителя. Поместите её в рамку, чтобы показать миру ваше величие! Либо просто как украшение. - +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.=Кожа это универсальный крафт-компонент. +Leather is a versatile crafting component.=Кожа это универсальный материал для крафта. Feather=Перо -Feathers are used in crafting and are dropped from chickens.=Перо используется для крафтинга и выпадает из кур. +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=Седло Can be placed on animals to ride them=Можно устанавливать на животных, чтобы ездить на них -Saddles can be put on some animals in order to mount them.=Седло можно поставить на некоторых животных, чтобы закрепляться на них. - -Use the placement key with the saddle in your hand to try to 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 using the placement key on them again.=Используйте клавишу размещения, держа седло в руке, чтобы попытаться надеть его. Сёдла подходят для лошадей, мулов, осликов и свиней. Лошади, мулы и ослики должны быть предварительно приручены, иначе они откажутся от седла. На осёдланных животных можно сесть, снова нажав на них клавишу размещения. - +Saddles can be put on some animals in order to mount them.=Седло можно поставить на некоторых животных, чтобы сесть на них. +Use the placement key with the saddle in your hand to try to 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 using the placement key on them again.=Используйте седло на животном, чтобы попытаться надеть его. Сёдла подходят для лошадей, мулов, ослов и свиней. Лошади, мулы и ослы должны быть предварительно приручены, иначе они откажутся от седла. На осёдланных животных можно сесть, снова нажав на них кнопку использования. Rabbit Stew=Рагу из кролика -Rabbit stew is a very nutricious food item.=Рагу из кролика это очень питательный продукт. +Rabbit stew is a very nutricious food item.=Рагу из кролика это очень питательный съедобный продукт. Shulker Shell=Панцирь шалкера -Shulker shells are used in crafting. They are dropped from dead shulkers.=Панцирь шалкера используется для крафтинга. Он выпадает из мёртвого шалкера. +Shulker shells are used in crafting. They are dropped from dead shulkers.=Панцирь шалкера используется для крафта. Он выпадает из мёртвого шалкера. Slimeball=Слизь -Slimeballs are used in crafting. They are dropped from slimes.=Слизь используется для крафтинга. Она выпадает из слизняков. +Slimeballs are used in crafting. They are dropped from slimes.=Слизь используется для крафта. Она выпадает из слизняков. Gunpowder=Порох Carrot on a Stick=Удочка с морковью Lets you ride a saddled pig=Позволяет вам ездить на осёдланной свинье 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.=Поместите это на осёдланную свинью, чтобы закрепиться на ней. Теперь вы можете ехать на ней, как на лошади. Свиньи также идут вперёд, когда вы просто держите удочку с морковью. - +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.=Поместите это на осёдланную свинью, чтобы сесть на неё. Теперь вы можете ехать на ней, как на лошади. Свиньи также идут вперёд, когда вы просто держите удочку с морковью. diff --git a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.ru.tr b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.ru.tr index c018167c0..83cb4fd25 100644 --- a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.ru.tr +++ b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.ru.tr @@ -1,5 +1,5 @@ # 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 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.=Если у вас есть порождающее яйцо, вы можете использовать его, чтобы выбрать моба, который будет появляться. Просто поместите этот предмет на спаунер. Настроенные игроками спаунеры работают всегда, независимо от уровня освещения. +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.ru.tr b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.ru.tr index 6902b610f..a196ac306 100644 --- a/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.ru.tr +++ b/mods/ITEMS/mcl_monster_eggs/locale/mcl_monster_eggs.ru.tr @@ -1,9 +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.=Блок с икрой - это блок, из которого вылетает чешуйница, если его сломать. Выглядит идентично своему обычному аналогу. -Infested Stone=Камень с икрой -Infested Cobblestone=Булыжник с икрой -Infested Stone Bricks=Каменные блоки с икрой -Infested Cracked Stone Bricks=Треснутые каменные блоки с икрой -Infested Mossy Stone Bricks=Мшистый каменный блок с икрой -Infested Chiseled Stone Bricks=Точёный каменный блок с икрой -Hides a silverfish=Скрывает чешуйницу +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=Заражённые резные каменные кирпичи +Hides a silverfish=Прячет в себе чешуйницу \ No newline at end of file diff --git a/mods/ITEMS/mcl_mushroom/locale/mcl_mushrooms.de.tr b/mods/ITEMS/mcl_mushroom/locale/mcl_mushrooms.de.tr deleted file mode 100644 index becde0256..000000000 --- a/mods/ITEMS/mcl_mushroom/locale/mcl_mushrooms.de.tr +++ /dev/null @@ -1,24 +0,0 @@ -# textdomain: mcl_mushroom - -Warped Fungus Mushroom=Wirrpilz -Twisting Vines=Zwirbelranken -Nether Sprouts=Nethersprossen -Warped Roots=Wirrwurzeln -Warped Wart Block=Wirrwarzenblock -Shroomlight=Pilzlicht -Warped Hyphae=Wirrhyphe -Warped Nylium=Wirr-Nezel -Warped Checknode - only to check!=Wirr Checkblock - Nur zum checken! -Warped Hyphae Wood=Wirrhyphen Holz -Warped Stair=Wirrtreppe -Warped Slab=Wirrstufe -Double Warped Slab=Doppelte Wirrstufe -Crimson Fungus Mushroom=Karmesinpilz -Crimson Roots=Karmesinwurzeln -Crimson Hyphae=Karmesinhyphe -Crimson Hyphae Wood=Karmesinhyphenholz -Crimson Stair=Karmesintreppe -Crimson Slab=Karmesinstufe -Double Crimson Slab=Doppelte Karmesinstufe -Crimson Nylium=Karmesin-Nezel -Crimson Checknode - only to check!=Karmesin Checkblock - Nur zum checken! diff --git a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.ru.tr b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.ru.tr index ba3cb171e..1a92cfc79 100644 --- a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.ru.tr +++ b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.ru.tr @@ -1,24 +1,24 @@ # 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.=Одиночный гриб этого вида со временем будет медленно распространяться в направлении случайного твердого непрозрачного блока при уровне освещённости 12 и ниже пределах куба 3×3×3 вокруг себя. Он перестает распространяться, когда будет уже 5 и более грибов одного и того же вида на участке 9×3×9 блоков вокруг гриба. -Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.=Грибы вымирают при уровне света 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.=Этот гриб можно высадить на мицелий и подзол при любом уровне света. Его также можно размещать на плотных непрозрачных блоках, если уровень освещенности в дневное время не превышает 12. +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.=Одиночный гриб этого вида со временем будет медленно распространяться в направлении случайного твёрдого непрозрачного блока при уровне освещённости 12 и ниже, в пределах куба 3×3×3 вокруг себя. Он перестает распространяться, когда будет уже 5 и более грибов одного и того же вида на участке 9×3×9 блоков вокруг гриба. +Mushrooms will eventually uproot at a light level of 12 or higher. On mycelium or podzol, they survive and spread at any light level.=Грибы погибают при уровне света 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.=Этот гриб можно высадить на мицелий и подзол при любом уровне света. Его также можно размещать на твёрдых непрозрачных блоках, если уровень освещенности в дневное время не превышает 12. 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.=Если поместить блоки огромных грибов одного и того же вида рядом друг с другом, стороны, которыми они соприкасаются друг с другом, сразу превратятся в поры. -Grows on podzol, mycelium and other blocks=Растёт на подзолах, мицелии и других блоках +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/locale/mcl_nether.ru.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr index f546d16ca..55282d19b 100644 --- a/mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.ru.tr @@ -1,40 +1,43 @@ # textdomain: mcl_nether -Glowstone=Светящийся камень -Glowstone is a naturally-glowing block which is home to the 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.=Кварцевая руда это порода, содержащая адский кварц. Часто встречается в Аду вокруг адского камня. +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.=Адский камень это блок, выглядящий как камень, домом которого является Ад. Разжигание огня на этом блоке создаст вечный огонь. +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.=@1 слишком долго стоял(а) на магмовом блоке. +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.=@1 слишком долго стоял на магмовом блоке. 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.=Песок душ это блок из Ада. Идти по нему можно только медленно. Замедляющий эффект усиливается, если песок душ лежит на льду, упакованном льду или блоке слизи. +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=Красный блок адского кирпича +Red Nether Brick Block=Блок красного адского кирпича Nether Wart Block=Блок адского нароста -A nether wart block is a purely decorative block made from nether wart.=Блок адского нароста это чисто декоративный блок, сделанный из адского нароста. +A nether wart block is a purely decorative block made from nether wart.=Блок адского нароста это декоративный блок, сделанный из адского нароста. Block of Quartz=Кварцевый блок -Chiseled Quartz Block=Точёный кварцевый блок -Pillar Quartz Block=Кварцевый столб +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.=Адский кварц это универсальный ингредиент для крафтинга. +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 bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.=Адские кирпичи это главный материал для создания блоков адских кирпичей. Nether Lava Source=Адский источник лавы Flowing Nether Lava=Текущая адская лава Premature Nether Wart (Stage 1)=Саженец адского нароста (стадия 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.=Саженец адского нароста был недавно высажен на песке душ. Его медленный рост происходит 4 стадии (вторая и третья стадии неотличимы на глаз). Хотя домом адского нароста является Ад, он растёт в любом измерении. +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.=Саженец адского нароста был недавно посажен на песке душ. Его медленный рост происходит 4 стадии (вторая и третья стадии неотличимы на глаз). Хотя домом адского нароста является Ад, он растёт в любом измерении. Premature Nether Wart (Stage 2)=Саженец адского нароста (стадия 2) Premature Nether Wart (Stage 3)=Саженец адского нароста (стадия 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.=Зрелый адский нарост это растение Ада, достигшее своего полного размера, дальше расти оно уже не будет. Оно готово к сбору в качестве предметов. +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.=Адские наросты это растения, домом которых является Ад. Их можно высаживать на песке душ, и они растут в 4 стадии. -Place this item on soul sand to plant it and watch it grow.=Поместите этот предмет на песок душ, чтобы посадить его и наблюдать за его ростом. +Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Адские наросты это растения, домом которых является Нижний мир. Их можно высаживать на песке душ, и они растут в 4 стадии. +Place this item on soul sand to plant it and watch it grow.=Поместите этот предмет на песок душ, чтобы посадить его для выращивания. Burns your feet=Обжигает ваши ноги Grows on soul sand=Растёт на песке душ Reduces walking speed=Уменьшает скорость ходьбы +Netherite Scrap=Осколок незерита +Netherite Ingot=Незеритовый слиток +Ancient Debris=Древние обломки \ No newline at end of file diff --git a/mods/ITEMS/mcl_nether/locale/template.txt b/mods/ITEMS/mcl_nether/locale/template.txt index 0e69ad520..58aabd72d 100644 --- a/mods/ITEMS/mcl_nether/locale/template.txt +++ b/mods/ITEMS/mcl_nether/locale/template.txt @@ -37,4 +37,7 @@ Nether warts are plants home to the Nether. They can be planted on soul sand and Place this item on soul sand to plant it and watch it grow.= Burns your feet= Grows on soul sand= -Reduces walking speed= \ No newline at end of file +Reduces walking speed= +Netherite Scrap= +Netherite Ingot= +Ancient Debris= diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr index e7e5a12e3..b79e9cc03 100644 --- a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr @@ -1,59 +1,59 @@ # textdomain: mcl_ocean -Sea Lantern=Морской светильник -Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Морской светильник это декоративный источник света. Он отлично смотрится под водой, но размещать его можно в любых местах. +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 is used as a building block. It slowly changes its color.=Призмарин это строительный блок. Он медленно меняет свой цвет. Prismarine Bricks=Призмариновые кирпичи Dark Prismarine=Тёмный призмарин Prismarine Crystals=Призмариновые кристаллы Prismarine Shard=Осколок призмарина Dried Kelp=Сушёная ламинария -Dried Kelp Block=Блок сухой ламинарии -Brain Coral Block=Блок мозгового коралла -Brain Coral Fan=Вентилятор мозгового коралла +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=Вентилятор огненного коралла +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=Вентилятор мёртвого мозгового коралла +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 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=Мёртвый трубный коралл +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.=Водоросли растут в воде поверх грязи, песка или гравия. +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.=Водоросли растут в воде поверх грязи, песка или гравия. +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.=Сушеная ламинария - это продуктовый предмет. +Dried kelp is a food item.=Сушёная ламинария - это съедобный продукт. Grows on coral block of same species=Растет на коралловом блоке того же вида Needs water to live=Нуждается в воде, чтобы жить -Grows in water on dirt, sand, gravel=Растёт в воде на грязи, песке, гравии +Grows in water on dirt, sand, gravel=Растёт под водой на земле, песке, гравии Glows in the water=Светится в воде 4 possible sizes=4 возможных размера 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.=Это можно помещать только на верхушку блока мертвого мозгового коралла. Помещение морского огурца на другой морской огурец приведёт к тому, что он вырастет и станет ярче. +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.=Морской огурец можно помещать только на мёртвый мозговой коралловый блок. Помещение морского огурца на другой морской огурец приведёт к тому, что он вырастет и станет светить ярче. diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.ru.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.ru.tr index 8b6310793..469c36977 100644 --- a/mods/ITEMS/mcl_portals/locale/mcl_portals.ru.tr +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.ru.tr @@ -1,15 +1,15 @@ # 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.=Прыгайте в портал, чтобы телепортироваться. Вход в портал Предела в Верхнем мире телепортирует вас в определённое место в измерении Предела и создаёт обсидиановую платформу 5×5 в пункте вашего назначения. Портал предела в Пределе перебросит вас в вашу точку возрождения в Верхнем мире. -End Portal Frame=Рамка портала Предела -End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Рамка портала Предела используется для построения порталов Предела. Каждый блок имеет отсек для ока Предела. -NOTE: The End dimension is currently incomplete and might change in future versions.=Предупреждение: Измерение Предел в данный момент не завершено и может измениться в будущих версиях. -End Portal Frame with Eye of Ender=Рамка портала Предела с оком Предела +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.=Прыгайте в портал, чтобы телепортироваться. Портал Края в Верхнем мире телепортирует вас в определённое место в измерении Края и создаёт обсидиановую платформу 5×5 в пункте вашего назначения. Портал Края в измерении Края телепортирует вас в вашу точку возрождения в Верхнем мире. +End Portal Frame=Рамка портала Края +End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Рамка портала Края используется для построения порталов Края. Каждый блок имеет слот для ока Края. +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 at least 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.=Чтобы открыть портал Ада, постройте рамку из обсидиана шириной не менее 4 блоков и высото не менее 5, оставляя в центре лишь воздух. После создания обсидиановой рамки зажгите в ней огонь. Адские порталы работают только в Верхнем мире и в Аду. -Once placed, an eye of ender can not be taken back.=Однажды размещённое, око Предела нельзя взять обратно. -Used to construct end portals=Используется для создания порталов Предела +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 at least 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.=Чтобы открыть Адский портал, постройте рамку из обсидиана шириной не менее 4 блоков и высотой не менее 5, оставляя в центре рамки лишь воздух. После создания обсидиановой рамки зажгите в ней огонь. Адские порталы работают только в Верхнем мире и в Нижнем мире. +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.ru.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.ru.tr index 2bc4380ec..2330c3158 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.ru.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.ru.tr @@ -1,75 +1,75 @@ # textdomain: mcl_potions - []=<эффект> <длительность> [<фактор>] + []=<эффект> <длительность> [<сила>] -Add a status effect to yourself. Arguments: : name of status effect, e.g. poison. : duration in seconds. : effect strength multiplier (1 @= 100%)=Добавляет вам эффект состояния. Параметры: <эффект> - название эффекта состояния, например, poison (отравление). <Длительность> - длительность в секундах. <Фактор> - коэффициент силы эффекта (1 @= 100%) +Add a status effect to yourself. Arguments: : name of status effect, e.g. poison. : duration in seconds. : effect strength multiplier (1 @= 100%)=Добавляет вам эффект. Параметры: <эффект> - название эффекта , например, poison. <Длительность> - длительность в секундах. <Сила> - коэффициент силы эффекта (1 @= 100%) Missing effect parameter!=Отсутствует параметр эффекта! Missing or invalid duration parameter!=Отсутствует либо неправильно задан параметр длительности! -Invalid factor parameter!=Отсутствует параметр фактора! -@1 is not an available status effect.=@1 не является допустимым эффектом состояния. -Fermented Spider Eye=Прокисший паучий глаз -Glass Bottle=Стеклянная бутылка +Invalid factor parameter!=Отсутствует параметр силы! +@1 is not an available status effect.=@1 не является допустимым эффектом. +Fermented Spider Eye=Приготовленный паучий глаз +Glass Bottle=Пузырёк Liquid container=Контейнер для жидкостей A glass bottle is used as a container for liquids and can be used to collect water directly.=Стеклянная бутылка используется для хранения жидкостей, её также можно использовать для сбора воды. -To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Воду в бутылку можно набрать из котла с помощью команды [Использовать] (это уменьшает уровень воды в котле) или из другого источника (уровень которого не уменьшится). +To collect water, use 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.=Бутылки с водой можно использовать для наполнения котлов. Выпивание воды не даст никакого эффекта. +Water Bottle=Пузырёк с водой +Water bottles can be used to fill cauldrons. Drinking water has no effect.=Пузырёк с водой можно использовать для наполнения котла. Выпивание воды не даст никакого эффекта. -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 water into the cauldron.=Используйте правую кнопку мыши, чтобы выпить. Используйте этот предмет на котле, чтобы вылить воду в котёл. -River Water Bottle=Бутылка с речной водой -River water bottles can be used to fill cauldrons. Drinking it has no effect.=Бутылки с речной водой можно использовать для наполнения котлов. Выпивание воды не даст никакого эффекта. +River Water Bottle=Пузырёк с речной водой +River water bottles can be used to fill cauldrons. Drinking it has no effect.=Пузырёк с речной водой можно использовать для наполнения котла. Выпивание воды не даст никакого эффекта. -Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Используйте клавишу “Разместить”, чтобы выпить это. Поместите этот предмет на котёл, чтобы вылить речную воду в котёл. +Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Используйте правую кнопку мыши, чтобы выпить. Используйте этот предмет на котле, чтобы вылить речную воду в котёл. -Splash Water Bottle=Бутылка со взрывающейся водой +Splash Water Bottle=Взрывное зелье Extinguishes fire and hurts some mobs=Тушит огонь и ранит некоторых мобов -A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=Бутылка с водой, которую можно метать. Она разбивается при ударе, тушит ближайший огонь и ранит мобов, уязвимых к воде. +A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=Пузырёк с водой, который можно метать. Он разбивается при ударе, тушит ближайший огонь и ранит мобов, уязвимых к воде. -Lingering Water Bottle=Бутылка с оседающей водой +Lingering Water Bottle=Туманное зелье -A throwable water bottle that will shatter on impact, where it creates a cloud of water vapor that lingers on the ground for a while. This cloud extinguishes fire and hurts mobs that are vulnerable to water.=Бутылка с водой, которую можно метать. Она разбивается при ударе, образуя облако пара, которое оседает на землю через некоторое время. Это облако тушит огонь и ранит мобов, уязвимых к воде. +A throwable water bottle that will shatter on impact, where it creates a cloud of water vapor that lingers on the ground for a while. This cloud extinguishes fire and hurts mobs that are vulnerable to water.=Пузырёк с водой, который можно метать. Он разбивается при ударе, образуя облако пара, которое оседает на землю через некоторое время. Это облако тушит огонь и ранит мобов, уязвимых к воде. -Glistering Melon=Искрящаяся дыня +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.=Искрящаяся дыня полна маленьких золотых самородков и может отлично смотреться в рамке. Она несъедобна и не годится больше ни для чего. +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.=Сверкающий ломтик арбуза содержит в себе золотые самородки и может отлично смотреться в рамке. Ломтик не съедобен. A throwable potion that will shatter on impact, where it creates a magic cloud that lingers around for a while. Any player or mob inside the cloud will receive the potion's effect, possibly repeatedly.=Зелье, которое можно метать. При ударе оно разбивается, создавая волшебное облако, которое задерживается на некоторое время. Любой игрок или моб внутри облака получит эффект зелья, возможно, неоднократно. Use the “Punch” key to throw it.=Нажмите [Ударить] для метания. -Use the “Place” key to drink it.=Нажмите [Разместить] для выпивания. -Drinking a potion gives you a particular effect.=Выпивание зелья даёт вам особый эффект. +Use the “Place” key to drink it.=Нажмите [Разместить] чтобы выпить. +Drinking a potion gives you a particular effect.=Выпивание зелья даёт вам определённый эффект. 1 HP/@1s | @2=1 HP/@1с | @2 @1 HP=@1 HP @1 Potion=Зелье @1 -Splash @1 Potion=Взрывающееся зелье @1 -Lingering @1 Potion=Оседающее зелье @1 +Splash @1 Potion=Взрывное зелье @1 +Lingering @1 Potion=Туманное зелье @1 Arrow of @1=Стрела @1 II= II IV= IV @1 Potion@2=Зелье @1 @2 -Splash @1@2 Potion=Взрывающееся зелье @1@2 -Lingering @1@2 Potion=Оседающее зелье @1@2 +Splash @1@2 Potion=Взрывное зелье @1@2 +Lingering @1@2 Potion=Туманное зелье @1@2 Arrow of @1@2=Стрела @1@2 @1 + Potion=Зелье @1+ -Splash @1 + Potion=Взрывающееся зелье @1+ -Lingering @1 + Potion=Оседающее зелье @1+ -Arrow of @1 +=Стрела @1+ -Awkward Potion=Невкусное зелье -Awkward Splash Potion=Невкусное взрывающееся зелье -Awkward Lingering Potion=Невкусное оседающее зелье +Splash @1 + Potion=Взрывное зелье @1+ +Lingering @1 + Potion=Туманное зелье @1+ +Arrow of @1 +=Стрела @1 + +Awkward Potion=Грубое зелье +Awkward Splash Potion=Взрывное грубое зелье +Awkward Lingering Potion=Туманное грубое зелье Has an awkward taste and is used for brewing potions.=Имеет неприятный вкус и используется для приготовления других зелий. -Mundane Potion=Успокоительное зелье -Mundane Splash Potion=Успокоительное взрывающееся зелье -Mundane Lingering Potion=Успокоительное оседающее зелье +Mundane Potion=Непримечательное зелье +Mundane Splash Potion=Взрывное непримечательное взрывное зелье +Mundane Lingering Potion=Туманное непримечательное зелье Has a terrible taste and is not useful for brewing potions.=Имеет отвратительный вкус и используется для приготовления других зелий. Thick Potion=Густое зелье -Thick Splash Potion=Густое взрывающееся зелье -Thick Lingering Potion=Густое оседающее зелье +Thick Splash Potion=Взрывное густое зелье +Thick Lingering Potion=Туманное густое зелье Has a bitter taste and is not useful for brewing potions.=Имеет горький вкус и используется для приготовления других зелий. Dragon's Breath=Дыхание дракона @@ -78,14 +78,14 @@ This item is used in brewing and can be combined with splash potions to create l Healing=исцеления +4 HP=+4 HP +8 HP=+8 HP -Instantly heals.=Лечит мгновенно +Instantly heals.=Мгновенно исцеляет. Harming=урона -6 HP=-6 HP -12 HP=-12 HP -Instantly deals damage.=Вызывает мгновенную смерть. +Instantly deals damage.=Наносит мгновенный урон. Night Vision=ночного зрения -Increases the perceived brightness of light under a dark sky.=Усиливает восприятие яркости освещения под тёмным небом. -Swiftness=ускорения +Increases the perceived brightness of light under a dark sky.=Усиливает восприятие яркости освещения в тёмных местах. +Swiftness=стремительности Increases walking speed.=Увеличивает скорость ходьбы Slowness=замедления Decreases walking speed.=Уменьшает скорость ходьбы @@ -93,24 +93,24 @@ Leaping=прыгучести Increases jump strength.=Увеличивает силу прыжка Poison=отравления Applies the poison effect which deals damage at a regular interval.=Наносит эффект яда, который вызывает урон через равные промежутки времени. -Regeneration=восстановления +Regeneration=регенерации Regenerates health over time.=Восстанавливает здоровье со временем. Invisibility=невидимости Grants invisibility.=Делает невидимым. Water Breathing=подводного дыхания -Grants limitless breath underwater.=Даёт возможность неограниченно дышать под водой. +Grants limitless breath underwater.=Даёт возможность дышать под водой. Fire Resistance=огнестойкости Grants immunity to damage from heat sources like fire.=Делает невосприимчивым к урону от источников тепла, например, от огня. -Weakness=Слабость -Weakness +=Слабость + -Strength=Сила -Strength II=Сила II -Strength +=Сила + +Weakness=слабости + +Weakness +=слабости + +Strength=силы +Strength II=силы II +Strength +=силы + Try different combinations to create potions.=Пробуйте разные сочетания для приготовления зелий. -No effect=Не оказывает эффекта +No effect=Без эффекта -A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=Зелье, которое можно метать. Оно разбивается при ударе и он дает всем ближайшим игрокам и мобам эффект состояния. +A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=Метательное зелье разобьется при столкновении и даст ближайшим игрокам и мобам эффект. -This particular arrow is tipped and will give an effect when it hits a player or mob.=Эта необычная стрела с обработанным наконечником даёт эффект при попадании в игрока или моба. +This particular arrow is tipped and will give an effect when it hits a player or mob.=Эта стрела с обмакнутым в зелье наконечником даёт эффект при попадании в игрока или моба. diff --git a/mods/ITEMS/mcl_raw_ores/init.lua b/mods/ITEMS/mcl_raw_ores/init.lua index 9725249b2..eca70004e 100644 --- a/mods/ITEMS/mcl_raw_ores/init.lua +++ b/mods/ITEMS/mcl_raw_ores/init.lua @@ -1,18 +1,20 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + local function register_raw_ore(description, n) local ore = description:lower() local n = n or "" local raw_ingot = "mcl_raw_ores:raw_"..ore local texture = "mcl_raw_ores_raw_"..ore minetest.register_craftitem(raw_ingot, { - description = ("Raw "..description), - _doc_items_longdesc = ("Raw "..ore..". Mine a"..n.." "..ore.." ore to get it."), + description = S("Raw "..description), + _doc_items_longdesc = S("Raw "..ore..". Mine a"..n.." "..ore.." ore to get it."), inventory_image = texture..".png", stack_max = 64, groups = { craftitem = 1 }, }) minetest.register_node(raw_ingot.."_block", { - description = ("Block of Raw "..description), - _doc_items_longdesc = ("A block of raw "..ore.." is mostly a decorative block but also useful as a compact storage of raw "..ore.."."), + description = S("Block of Raw "..description), + _doc_items_longdesc = S("A block of raw "..ore.." is mostly a decorative block but also useful as a compact storage of raw "..ore.."."), tiles = { texture.."_block.png" }, is_ground_content = false, stack_max = 64, diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.ru.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.ru.tr index 354e556a8..d84862532 100644 --- a/mods/ITEMS/mcl_signs/locale/mcl_signs.ru.tr +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.ru.tr @@ -1,9 +1,9 @@ # 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.=На табличках можно писать. Таблички бывают двух видов: настенные и отдельно стоящие. Таблички можно размещать на верхушках и сторонах блоков, но не под блоками. -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.=После установки таблички вы можете написать на ней что-то. Вам доступны 4 строки текста, до 15 символов в каждой; всё, что вы напишете сверх лимита, потеряется. Поддерживаются не все символы. Текст нельзя изменить. Чтобы изменить его, вам придётся сломать табличку и подписать её снова. -Enter sign text:=Текст на табличке: +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.=После установки таблички вы можете написать на ней что-нибудь. Вам доступны 4 строки текста, до 15 символов в каждой; всё, что вы напишете сверх лимита, потеряется. Поддерживаются не все символы. Текст на уже подписанной табличке нельзя изменить. Чтобы изменить его, вам придётся сломать табличку и подписать её снова. +Enter sign text:=Введите текст таблички: Maximum line length: 15=Максимальная длина строки: 15 Maximum lines: 4=Максимум строк: 4 Done=Готово -Can be written=Может быть подписана +Can be written=На ней можно писать diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.ru.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.ru.tr index c3b1749d6..b323abc70 100644 --- a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.ru.tr +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.ru.tr @@ -1,10 +1,10 @@ # 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.=Намокшая губка может быть высушена в печи, тогда она превратится обратно в (сухую) губку. Если поставить пустое ведро в топливный отсек печи, это ведро наполнится водой. +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.=Губка становится губкой с речной водой, если она втягивает в себя больше речной воды, чем обыкновенной. -Removes water on contact=Убирает воду при контакте +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_spyglass/init.lua b/mods/ITEMS/mcl_spyglass/init.lua index 1a1f4529d..0fa9a680e 100644 --- a/mods/ITEMS/mcl_spyglass/init.lua +++ b/mods/ITEMS/mcl_spyglass/init.lua @@ -1,6 +1,8 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + minetest.register_tool("mcl_spyglass:spyglass",{ - description = ("Spyglass"), - _doc_items_longdesc = ("A spyglass is an item that can be used for zooming in on specific locations."), + description = S("Spyglass"), + _doc_items_longdesc = S("A spyglass is an item that can be used for zooming in on specific locations."), inventory_image = "mcl_spyglass.png", stack_max = 1, _mcl_toollike_wield = true, diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.ru.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.ru.tr index 10d470fce..b07180fb3 100644 --- a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.ru.tr +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.ru.tr @@ -1,101 +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.=Ступеньки полезны, чтобы подниматься к высоким местам, идя по ним; прыжки при этом не требуются. Размещение ступенек по углам будет создавать угловые ступеньки. Ступеньки, устанавливаемые на потолке или в верхней половине боковой части блока, будет перевёрнуты вверх ногами. +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=Двойная @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=Верхняя @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 Stairs=Дубовые ступени Oak Wood Slab=Дубовая плита Double Oak Wood Slab=Двойная дубовая плита -Jungle Wood Stairs=Ступеньки из дерева джунглей -Jungle Wood Slab=Плита из дерева джунглей -Double Jungle Wood Slab=Двойная плита из дерева джунглей -Acacia Wood Stairs=Ступеньки из акации +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 Stairs=Еловые ступени Spruce Wood Slab=Еловая плита Double Spruce Wood Slab=Двойная еловая плита -Birch Wood Stairs=Берёзовые ступеньки +Birch Wood Stairs=Берёзовые ступени Birch Wood Slab=Берёзовая плита Double Birch Wood Slab=Двойная берёзовая плита -Dark Oak Wood Stairs=Ступеньки из тёмного дуба +Dark Oak Wood Stairs=Ступени из тёмного дуба Dark Oak Wood Slab=Плита из тёмного дуба Double Dark Oak Wood Slab=Двойная плита из тёмного дуба -Stone Stairs=Каменные ступеньки +Stone Stairs=Каменные ступени Stone Slab=Каменная плита Double Stone Slab=Двойная каменная плита Polished Stone Slab=Плита из гладкого камня Double Polished Stone Slab=Двойная плита из гладкого камня -Andesite Stairs=Андезитовые ступеньки +Andesite Stairs=Андезитовые ступени Andesite Slab=Андезитовая плита Double Andesite Slab=Двойная андезитовая плита -Granite Stairs=Гранитные ступеньки +Granite Stairs=Гранитные ступени Granite Slab=Гранитная плита Double Granite Slab=Двойная гранитная плита -Diorite Stairs=Диоритовые ступеньки +Diorite Stairs=Диоритовые ступени Diorite Slab=Диоритовая плита Double Diorite Slab=Двойная диоритовая плита -Cobblestone Stairs=Ступеньки из булыжника +Cobblestone Stairs=Ступени из булыжника Cobblestone Slab=Плита из булыжника Double Cobblestone Slab=Двойная плита из булыжника -Mossy Cobblestone Stairs=Ступеньки из мшистого булыжника -Mossy Cobblestone Slab=Плита из мшистого булыжника -Double Mossy Cobblestone Slab=Двойная плита из мшистого булыжника -Brick Stairs=Кирпичные ступеньки +Mossy Cobblestone Stairs=Ступени из замшелого булыжника +Mossy Cobblestone Slab=Плита из замшелого булыжника +Double Mossy Cobblestone Slab=Двойная плита из замшелого булыжника +Brick Stairs=Кирпичные ступени Brick Slab=Кирпичная плита Double Brick Slab=Двойная кирпичная плита -Sandstone Stairs=Ступеньки из песчаника +Sandstone Stairs=Ступени из песчаника Sandstone Slab=Плита из песчаника Double Sandstone Slab=Двойная плита из песчаника -Smooth Sandstone Stairs=Ступеньки из гладкого песчаника +Smooth Sandstone Stairs=Ступени из гладкого песчаника Smooth Sandstone Slab=Плита из гладкого песчаника Double Smooth Sandstone Slab=Двойная плита из гладкого песчаника -Red Sandstone Stairs=Ступеньки из красного песчаника +Red Sandstone Stairs=Ступени из красного песчаника Red Sandstone Slab=Плита из красного песчаника Double Red Sandstone Slab=Двойная плита из красного песчаника -Smooth Red Sandstone Stairs=Ступеньки из гладкого красного песчаника +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=Кварцевые ступеньки +Stone Bricks Stairs=Ступени из каменных кирпичей +Stone Bricks Slab=Плита из каменных кирпичей +Double Stone Bricks Slab=Двойная плита из каменных кирпичей +Quartz Stairs=Кварцевые ступени Quartz Slab=Кварцевая плита Double Quartz Slab=Двойная кварцевая плита -Smooth Quartz Stairs=Ступеньки из гладкого кварца +Smooth Quartz Stairs=Ступени из гладкого кварца Smooth Quartz Slab=Плита из гладкого кварца Double Smooth Quartz Slab=Двойная плита из гладкого кварца -Nether Brick Stairs=Ступеньки из адского кирпича +Nether Brick Stairs=Ступени из адского кирпича Nether Brick Slab=Плита из адского кирпича Double Nether Brick Slab=Двойная плита из адского кирпича -Red Nether Brick Stairs=Ступеньки из красного адского кирпича +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=Пурпурные ступеньки +End Stone Brick Stairs=Ступени из камня Края +End Stone Brick Slab=Плита из камня Края +Double End Stone Brick Slab=Двойная плита из камня Края +Purpur Stairs=Пурпурные ступени Purpur Slab=Пурпурная плита Double Purpur Slab=Двойная пурпурная плита -Prismarine Stairs=Призмариновые ступеньки +Prismarine Stairs=Призмариновые ступени Prismarine Slab=Призмариновая плита Double Prismarine Slab=Двойная призмариновая плита -Prismarine Brick Stairs=Ступеньки из призмаринового кирпича +Prismarine Brick Stairs=Ступени из призмаринового кирпича Prismarine Brick Slab=Плита из призмаринового кирпича Double Prismarine Brick Slab=Двойная плита из призмаринового кирпича -Dark Prismarine Stairs=Ступеньки из тёмного призмарина +Dark Prismarine Stairs=Ступени из тёмного призмарина Dark Prismarine Slab=Плита из тёмного призмарина Double Dark Prismarine Slab=Двойная плита из тёмного призмарина Polished Andesite Slab=Плита из гладкого андезита Double Polished Andesite Slab=Двойная плита из гладкого андезита -Polished Andesite Stairs=Ступеньки из гладкого андезита +Polished Andesite Stairs=Ступени из гладкого андезита Polished Granite Slab=Плита из гладкого гранита Double Polished Granite Slab=Двойная плита из гладкого гранита -Polished Granite Stairs=Ступеньки из гладкого гранита +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=Двойная плита из мшистого каменного блока +Polished Diorite Stairs=Ступени из гладкого диорита +Mossy Stone Brick Stairs=Ступени из замшелых каменных кирпичей +Mossy Stone Brick Slab=Плита из замшелых каменных кирпичей +Double Mossy Stone Brick Slab=Двойная плита из замшелых каменных кирпичей diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.ru.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.ru.tr index 7670f729c..dff501da8 100644 --- a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.ru.tr +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.ru.tr @@ -1,12 +1,12 @@ # textdomain: mcl_throwing -@1 used the ender pearl too often.=@1 использовал(а) жемчужину Предела слишком часто. +@1 used the ender pearl too often.=@1 использовал жемчуг Края слишком часто. 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.=Снежки можно бросать или запускать из диспенсера для веселья. Попадание снежком в кого-либо ни к чему не приводит. +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 chicks will pop out of the egg.=Яйца можно бросать или запускать из диспенсера, они ломаются при ударе. Есть небольшой шанс вылупления 1 или даже 4 цыплят из яйца. -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.=Жемчужина Предела это предмет, который можно использовать для телепортации за счёт единиц вашего здоровья. Его можно бросить, и это телепортирует бросившего в место удара, когда он попадает в сплошной блок или растение. Каждая телепортация ранит пользователя на 5 очков здоровья (HP). +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.=Яйца можно бросать или запускать из раздатчика, они ломаются при столкновении. Есть небольшой шанс вылупления 1 или даже 4 цыплят из яйца. +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.=Жемчуг Края это предмет, который можно использовать для телепортации за счёт единиц вашего здоровья. Его можно бросить, и это телепортирует бросившего в то место, куда упадает жемчуг. Каждая телепортация ранит игрока на 5 очков здоровья. Throwable=Можно бросать Chance to hatch chicks when broken=Шанс вылупления цыплят при разбитии -Teleports you on impact for cost of 5 HP=Телепортирует вас при ударе за счёт 5 HP +Teleports you on impact for cost of 5 HP=Телепортирует вас; урон 5 HP от столкновения diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr index 9724c7552..2a09f5507 100644 --- a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr @@ -1,8 +1,8 @@ # textdomain: mcl_tnt -@1 was caught in an explosion.=@1 попал в радиус действия взрыва. -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.=Взрывное устройство. Когда оно взрывается, то причиняет вред живым существам и разрушает блоки вокруг себя. Тротил имеет радиус взрыва @1. С небольшой вероятностью блоки могут выпадать в качестве предметов (как при добыче), а не уничтожаться. Тротил может быть подорван инструментами, взрывами, огнём, лавой и сигналами редстоуна. -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.=Взрывное устройство. Когда оно взрывается, то причиняет вред живым существам и разрушает блоки вокруг себя. Тротил имеет радиус взрыва @1. Тротил может быть подорван инструментами, взрывами, огнём, лавой и сигналами редстоуна. -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.=Разместите тротил, зажгите его одним из методов, описанных выше. Отбегите на безопасное расстояние. Тротил начнет подвергаться воздействию силы тяжести и взорвётся через 4 секунды. -Ignited by tools, explosions, fire, lava, redstone power=Зажигается инструментами, взрывами, огнём, лавой, энергией редстоуна +@1 was caught in an explosion.=@1 попал во взрыв. +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.=Взрывчатка. Когда она взрывается, то причиняет вред живым существам и разрушает блоки вокруг себя. ТНТ имеет радиус взрыва @1. С небольшой вероятностью блоки могут выпадать в качестве предметов (как при добыче), а не уничтожаться. ТНТ может быть подорван инструментами, взрывом, огнём, лавой и сигналом редстоуна. +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.=Взрывчатка. Когда она взрывается, то причиняет вред живым существам. ТНТ имеет радиус взрыва @1. ТНТ может быть подорван инструментами, взрывом, огнём, лавой и сигналом редстоуна. +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.=Разместите ТНТ, зажгите его одним из методов, описанных выше. Отбегите на безопасное расстояние. ТНТ начнет подвергаться воздействию силы тяжести и взорвётся через 4 секунды. +Ignited by tools, explosions, fire, lava, redstone power=Зажигается инструментами, взрывом, огнём, лавой, сигналом редстоуна Explosion radius: @1=Радиус взрыва: @1 diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.ru.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.ru.tr index e82fa15ef..c19e368fc 100644 --- a/mods/ITEMS/mcl_tools/locale/mcl_tools.ru.tr +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.ru.tr @@ -1,32 +1,36 @@ # 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.=Вы используете пустую руку, если не держите в ней никакого предмета. Пустой рукой вашей стороны вы можете добывать большинство блоков, но это самый медленный метод, который позволит добыть что-то полезное только из самых слабых блоков Рука также наносит небольшой урон при ударе. Использование пустой руки часто является последним средством, поскольку гораздо предпочтительнее использовать правильные подобранные инструменты и оружие. -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 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.=Чтобы остричь овцу или вырезать безликую тыкву, нажмите клавишу “Разместить” на вашей цели. Лица могут быть вырезаны только на сторонах безликих тыкв. Добыча работает как обычно, но полученные предметы будут различаться для нескольких разных блоков. +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 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=Железная кирка Golden Pickaxe=Золотая кирка Diamond Pickaxe=Алмазная кирка +Netherite Pickaxe=Незеритовая кирка Wooden Shovel=Деревянная лопата Stone Shovel=Каменная лопата Iron Shovel=Железная лопата Golden Shovel=Золотая лопата Diamond Shovel=Алмазная лопата +Netherite Shovel=Незеритовая лопата Wooden Axe=Деревянный топор Stone Axe=Каменный топор Iron Axe=Железный топор Golden Axe=Золотой топор Diamond Axe=Алмазный топор +Netherite Axe=Незеритовый топор Wooden Sword=Деревянный меч Stone Sword=Каменный меч Iron Sword=Железный меч Golden Sword=Золотой меч Diamond Sword=Алмазный меч +Netherite Sword=Незеритовый меч Shears=Ножницы diff --git a/mods/ITEMS/mcl_tools/locale/template.txt b/mods/ITEMS/mcl_tools/locale/template.txt index ecb94105f..2f5830312 100644 --- a/mods/ITEMS/mcl_tools/locale/template.txt +++ b/mods/ITEMS/mcl_tools/locale/template.txt @@ -14,19 +14,23 @@ Stone Pickaxe= Iron Pickaxe= Golden Pickaxe= Diamond Pickaxe= +Netherite Pickaxe= Wooden Shovel= Stone Shovel= Iron Shovel= Golden Shovel= Diamond Shovel= +Netherite Shovel= Wooden Axe= Stone Axe= Iron Axe= Golden Axe= Diamond Axe= +Netherite Axe= Wooden Sword= Stone Sword= Iron Sword= Golden Sword= Diamond Sword= +Netherite Sword= Shears= diff --git a/mods/ITEMS/mcl_torches/locale/mcl_torches.ru.tr b/mods/ITEMS/mcl_torches/locale/mcl_torches.ru.tr index c3812eaad..a10f21acb 100644 --- a/mods/ITEMS/mcl_torches/locale/mcl_torches.ru.tr +++ b/mods/ITEMS/mcl_torches/locale/mcl_torches.ru.tr @@ -1,3 +1,3 @@ # textdomain: mcl_torches Torch=Факел -Torches are light sources which can be placed at the side or on the top of most blocks.=Факелы это источники света, которые можно вешать на стены или ставить на верхние части большинства блоков. +Torches are light sources which can be placed at the side or on the top of most blocks.=Факел это источник света, который можно поставить на большинство блоков сверху или сбоку. \ No newline at end of file diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.ru.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.ru.tr index deb0fa289..910ea989f 100644 --- a/mods/ITEMS/mcl_walls/locale/mcl_walls.ru.tr +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.ru.tr @@ -1,16 +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.=Часть стены. Её нельзя перепрыгнуть простым прыжком. Когда несколько из них будут расположены рядом друг с другом, они автоматически создадут хорошую структуру стены. +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=Стена из мшистого булыжника +Mossy Cobblestone Wall=Стена из замшелого булыжника Andesite Wall=Андезитовая стена Granite Wall=Гранитная стена Diorite Wall=Диоритовая стена Brick Wall=Кирпичная стена Sandstone Wall=Стена из песчаника Red Sandstone Wall=Стена из красного песчаника -Stone Brick Wall=Стена из каменного блока -Mossy Stone Brick Wall=Стена из мшистого каменного блока +Stone Brick Wall=Стена из каменных кирпичей +Mossy Stone Brick Wall=Стена из замшелого каменного блока Prismarine Wall=Призмариновая стена -End Stone Brick Wall=Стена из камня Предела +End Stone Brick Wall=Стена из кирпичей Края Nether Brick Wall=Стена из адского кирпича -Red Nether Brick Wall=Стена из красного адского кирпича +Red Nether Brick Wall=Стена из адского красного кирпича diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.ru.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.ru.tr index 6b05812a2..1a6a3ad37 100644 --- a/mods/ITEMS/mcl_wool/locale/mcl_wool.ru.tr +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.ru.tr @@ -15,23 +15,23 @@ Yellow Wool=Жёлтая шерсть Yellow Carpet=Жёлтый ковёр Green Wool=Зелёная шерсть Green Carpet=Зелёный ковёр -Cyan Wool=Голубая шерсть -Cyan Carpet=Голубой ковёр +Cyan Wool=Бирюзовая шерсть +Cyan Carpet=Бирюзовый ковёр Blue Wool=Синяя шерсть Blue Carpet=Синий ковёр -Magenta Wool=Фиолетовая шерсть -Magenta Carpet=Фиолетовый ковёр +Magenta Wool=Сиреневая шерсть +Magenta Carpet=Сиреневый ковёр Orange Wool=Оранжевая шерсть Orange Carpet=Оранжевый ковёр -Purple Wool=Пурпурная шерсть -Purple Carpet=Пурпурный ковёр +Purple Wool=Фиолетовая шерсть +Purple Carpet=Фиолетовый ковёр Brown Wool=Коричневая шерсть Brown Carpet=Коричневый ковёр Pink Wool=Розовая шерсть Pink Carpet=Розовый ковёр -Lime Wool=Зелёная лаймовая шерсть -Lime Carpet=Зелёный лаймовый ковёр -Light Blue Wool=Светло-голубая шерсть -Light Blue 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_fences/locale/mclx_fences.ru.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.ru.tr index 146fb4dd7..fc3735e2b 100644 --- a/mods/ITEMS/mclx_fences/locale/mclx_fences.ru.tr +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.ru.tr @@ -1,4 +1,4 @@ # textdomain: mclx_fences -Red Nether Brick Fence=Забор из красного адского кирпича -Red Nether Brick Fence Gate=Ворота из красного адского кирпича -Nether Brick Fence Gate=Ворота из адского кирпича +Red Nether Brick Fence=Забор из адского красного кирпича +Red Nether Brick Fence Gate=Калитка из адского красного кирпича +Nether Brick Fence Gate=Калитка из адского кирпича diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.ru.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.ru.tr index 7dca54dd1..7f8675603 100644 --- a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.ru.tr +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.ru.tr @@ -1,82 +1,82 @@ # textdomain: mclx_stairs -Oak Bark Stairs=Ступеньки из дубовой коры +Oak Bark Stairs=Ступени из дубовой коры Oak Bark Slab=Плита из дубовой коры Double Oak Bark Slab=Двойная плита из дубовой коры -Acacia Bark Stairs=Ступеньки из коры акации +Acacia Bark Stairs=Ступени из коры акации Acacia Bark Slab=Плита из коры акации Double Acacia Bark Slab=Двойная плита из коры акации -Spruce Bark Stairs=Ступеньки из еловой коры +Spruce Bark Stairs=Ступени из еловой коры Spruce Bark Slab=Плита из еловой коры Double Spruce Bark Slab=Двойная плита из еловой коры -Birch Bark Stairs=Ступеньки из берёзовой коры +Birch Bark Stairs=Ступени из берёзовой коры Birch Bark Slab=Плита из берёзовой коры Double Birch Bark Slab=Двойная плита из берёзовой коры -Jungle Bark Stairs=Ступеньки из коры дерева джунглей -Jungle Bark Slab=Плита из коры дерева джунглей -Double Jungle Bark Slab=Двойная плита из коры дерева джунглей -Dark Oak Bark Stairs=Ступеньки из коры тёмного дуба +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=Ляпис-лазурные ступеньки +Lapis Lazuli Slab=Лазуритовая плита +Double Lapis Lazuli Slab=Двойная лазуритовая плита +Lapis Lazuli Stairs=Лазуритовые ступени Slab of Gold=Золотая плита Double Slab of Gold=Двойная золотая плита -Stairs 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=Двойная плита из треснутого камня -White Concrete Stairs=Белые бетонные ступеньки +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 Stairs=Серые бетонные ступени Grey Concrete Slab=Серая бетонная панель Double Grey Concrete Slab=Серая двойная бетонная панель -Light Grey Concrete Stairs=Светло-серые бетонные ступеньки +Light Grey Concrete Stairs=Светло-серые бетонные ступени Light Grey Concrete Slab=Светло-серая бетонная панель Double Light Grey Concrete Slab=Светло-серая двойная бетонная панель -Black Concrete Stairs=Чёрные бетонные ступеньки +Black Concrete Stairs=Чёрные бетонные ступени Black Concrete Slab=Чёрная бетонная панель Double Black Concrete Slab=Черная двойная бетонная панель -Red Concrete Stairs=Красные бетонные ступеньки +Red Concrete Stairs=Красные бетонные ступени Red Concrete Slab=Красная бетонная панель Double Red Concrete Slab=Красная двойная бетонная панель -Yellow Concrete Stairs=Жёлтые бетонные ступеньки +Yellow Concrete Stairs=Жёлтые бетонные ступени Yellow Concrete Slab=Жёлтая бетонная панель Double Yellow Concrete Slab=Жёлтая двойная бетонная панель -Green Concrete Stairs=Зелёные бетонные ступеньки +Green Concrete Stairs=Зелёные бетонные ступени Green Concrete Slab=Зелёная бетонная панель Double Green Concrete Slab=Зелёная двойная бетонная панель -Cyan Concrete Stairs=Голубые бетонные ступеньки -Cyan Concrete Slab=Голубая бетонная панель -Double Cyan Concrete Slab=Голубая двойная бетонная панель -Blue Concrete Stairs=Синие бетонные ступеньки +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=Оранжевые бетонные ступеньки +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=Коричневые бетонные ступеньки +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 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=Светло-голубая двойная бетонная панель +Lime Concrete Stairs=Лаймовые бетонные ступени +Lime Concrete Slab=Лаймовая бетонная панель +Double Lime Concrete Slab=Лаймовая двойная бетонная панель +Light Blue Concrete Stairs=Голубые бетонные ступени +Light Blue Concrete Slab=Голубая бетонная панель +Double Light Blue Concrete Slab=Голубая двойная бетонная панель Concrete Slab=Бетонная панель Double Concrete Slab=Двойная бетонная панель -Concrete Stairs=Бетонные ступеньки +Concrete Stairs=Бетонные ступени diff --git a/mods/ITEMS/xpanes/locale/xpanes.ru.tr b/mods/ITEMS/xpanes/locale/xpanes.ru.tr index 47702516d..a127cc32a 100644 --- a/mods/ITEMS/xpanes/locale/xpanes.ru.tr +++ b/mods/ITEMS/xpanes/locale/xpanes.ru.tr @@ -1,23 +1,23 @@ # 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.=Железные слитки аккуратно присоединяются к соседним блокам, когда вы устанавливаете их. +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=Стеклянная панель -Stained 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=Голубой витраж +Stained 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=Бирюзовая окрашенная стеклянная панель \ No newline at end of file diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.ru.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.ru.tr index 248de695c..b9d2f48c0 100644 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.ru.tr +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.ru.tr @@ -1,7 +1,7 @@ # textdomain: mcl_structures -Generate a pre-defined structure near your position.=Генерирует поблизости заранее определённое строение. -Structure placed.=Строение размещено. +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 ”.=Ошибка: Не задан тип строения. Пожалуйста, используйте “/spawnstruct <тип>”. -Error: Unknown structure type. Please use “/spawnstruct ”.=Ошибка: Неизвестный тип строения. Пожалуйста, используйте “/spawnstruct <тип>”. +Error: No structure type given. Please use “/spawnstruct ”.=Ошибка: Не задан тип структуры. Пожалуйста, используйте “/spawnstruct <тип>”. +Error: Unknown structure type. Please use “/spawnstruct ”.=Ошибка: Неизвестный тип структуры. Пожалуйста, используйте “/spawnstruct <тип>”. Use /help spawnstruct to see a list of avaiable types.=Используйте /help spawnstruct, чтобы увидеть список доступных типов. diff --git a/mods/MISC/findbiome/locale/findbiome.ru.tr b/mods/MISC/findbiome/locale/findbiome.ru.tr index c37371820..51cb0e486 100644 --- a/mods/MISC/findbiome/locale/findbiome.ru.tr +++ b/mods/MISC/findbiome/locale/findbiome.ru.tr @@ -2,9 +2,9 @@ Find and teleport to biome=Найти и телепортироваться к биому =<биом> No player.=Нет игрока. -Biome does not exist!=Биом не существует! +Biome does not exist!=Такого биома не существует! Biome found at @1.=Биом найден в @1. No biome found!=Биом не найден! List all biomes=Список всех биомов No biomes.=Нет биомов. -Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Не поддерживается. Для поддержки мэпгена v6 требуется мод “biomeinfo”! +Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Не поддерживается. Для поддержки мапгена v6 требуется мод “biomeinfo”! diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr b/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr index 4378e5de5..b16ce2b08 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr @@ -1,24 +1,24 @@ # textdomain: mcl_commands -Players can't be killed right now, damage has been disabled.=Игроки не могут быть убиты прямо сейчас, урон отключён. -Player @1 does not exist.=Игрок @1 не существует. +Players can't be killed right now, damage has been disabled.=Игроки не могут быть убиты - урон отключён. +Player @1 does not exist.=Игрока @1 не существует. You are already dead=Вы уже мертвы -@1 is already dead=@1 уже мертв(а) -@1 committed suicide.=@1 совершил(а) роскомнадзор. -@1 was killed by @2.=@1 был(а) убит(а) @2. +@1 is already dead=@1 уже мертв +@1 committed suicide.=@1 совершил(а) Роскомнадзор. +@1 was killed by @2.=@1 был убит @2. []=[<имя>] Kill player or yourself=Убить игрока или себя Can use /say=Можно использовать /say =<сообщение> -Send a message to every player=Отправляет сообщение всем игрокам +Send a message to every player=Отправить сообщение всем игрокам Invalid usage, see /help @1.=Недопустимое использование, см. /help @1. -,, =,, <СтрокаУзла> -Set node at given position=Устанавливает узел в заданной позиции -Invalid node=Неправильный узел -@1 spawned.=@1 возродился(ась). +,, =,, <НаименованиеБлока> +Set node at given position=Устанавливает блок в заданной позиции +Invalid node=Неправильный блок +@1 spawned.=@1 возродился. Invalid parameters (see /help setblock)=Недопустимые параметры (см. /help setblock) List bans=Список банов Ban list: @1=Бан-лист: @1 -Show who is logged on=Показывает, кто подключён +Show who is logged on=Показывает игроков в сети Displays the world seed=Показывает значение зерна мира (seed) Only peaceful mobs allowed!=Включены только мирные мобы! @1[]=@1[<имя>] diff --git a/mods/MISC/mcl_privs/locale/mcl_privs.ru.tr b/mods/MISC/mcl_privs/locale/mcl_privs.ru.tr index a3f37c365..6e301d3dc 100644 --- a/mods/MISC/mcl_privs/locale/mcl_privs.ru.tr +++ b/mods/MISC/mcl_privs/locale/mcl_privs.ru.tr @@ -1,2 +1,2 @@ # textdomain: mcl_privs -Can place and use advanced blocks like mob spawners, command blocks and barriers.=Позволяет размещать и использовать продвинутые блоки, такие как спаунеры мобов, блоки команд и барьеры. \ No newline at end of file +Can place and use advanced blocks like mob spawners, command blocks and barriers.=Позволяет размещать и использовать продвинутые блоки, такие как спаунеры мобов, командные блоки и барьеры. \ No newline at end of file diff --git a/mods/MISC/mcl_wip/locale/mcl_wip.ru.tr b/mods/MISC/mcl_wip/locale/mcl_wip.ru.tr index 6fb33179d..91a0454a5 100644 --- a/mods/MISC/mcl_wip/locale/mcl_wip.ru.tr +++ b/mods/MISC/mcl_wip/locale/mcl_wip.ru.tr @@ -1,4 +1,4 @@ # textdomain: mcl_wip -# WIP означает “Work in Progress” - работа продолжается -(WIP)=(в процессе) -(Temporary)=(Временное) +# WIP означает “Work in Progress” - в процессе разработки +(WIP)=(в разработке) +(Temporary)=(Временно) diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr index a91a4db75..361812c70 100644 --- a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr @@ -1,8 +1,8 @@ # textdomain: mcl_hunger -@1 succumbed to the poison.=@1 умер(ла) от яда. -Food=Продукт +@1 succumbed to the poison.=@1 умер от яда. +Food=Еда Saturation=Насыщение %s: %.1f/%d=%s: %.1f/%d -Exhaust.=Истощ. +Exhaust.=Истощение %s: %d/%d=%s: %d/%d -@1 starved to death.=@1 умер(ла) от голода. +@1 starved to death.=@1 умер от голода. diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.ru.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.ru.tr index 64eab0e3f..3b8fac442 100644 --- a/mods/PLAYER/mcl_skins/locale/mcl_skins.ru.tr +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.ru.tr @@ -3,9 +3,9 @@ Select player skin of yourself or another player=Выберите скин для себя или для другого игрока Insufficient or wrong parameters=Недопустимые или неправильные параметры Player @1 not online!=Игрок @1 не в сети! -You need the “server” privilege to change the skin of other players!=Для смены скинов другим игрокам у вас должна быть привилегия “server”! -Invalid skin number! Valid numbers: 0 to @1=Недопустимый номер скина! Правильные номера: от 0 до @1 -Your skin has been set to: @1=Ваш скин выбран: @1 +You need the “server” privilege to change the skin of other players!=Для смены скинов другим игрокам у Вас должна быть привилегия “server”! +Invalid skin number! Valid numbers: 0 to @1=Недопустимый номер скина! Допустимые номера: от 0 до @1 +Your skin has been set to: @1=Ваш скин установлен: @1 Your skin has been set to: @1 (@2)=Ваш скин установлен: @1 (@2) Skin of @1 set to: @2 (@3)=Скин игрока @1 установлен: @2 (@3) Select player skin:=Выбор скина игрока: diff --git a/mods/PLAYER/mcl_spawn/locale/mcl_spawn.ru.tr b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.ru.tr index eec1bcd65..a6333cb12 100644 --- a/mods/PLAYER/mcl_spawn/locale/mcl_spawn.ru.tr +++ b/mods/PLAYER/mcl_spawn/locale/mcl_spawn.ru.tr @@ -1,4 +1,4 @@ # textdomain: mcl_spawn New respawn position set!=Задана новая точка возрождения! Respawn position cleared!=Точка возрождения удалена! -Your spawn bed was missing or blocked.=Точка вашего возрождения не задана либо заблокирована. +Your spawn bed was missing or blocked.=Ваша кровать пропала или заблокирована. From 3a54254077e29845590a84ab72c41c65b9382655 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sat, 19 Feb 2022 21:16:43 +0800 Subject: [PATCH 090/521] Update Russian translation --- .../locale/mcl_explosions.ru.tr | 2 + .../extra_mobs/locale/extra_mobs.ru.tr | 17 +++++++ mods/ENTITIES/extra_mobs/locale/template.txt | 17 +++++++ .../locale/mcl_falling_nodes.ru.tr | 3 ++ mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.de.tr | 2 + mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.es.tr | 2 + mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.fr.tr | 2 + mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.it.tr | 2 + mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.ru.tr | 2 + .../locale/mcl_blackstone.ru.tr | 24 +++++++++ .../locale/mcl_composters.ru.tr | 7 +++ mods/ITEMS/mcl_copper/locale/mcl_copper.ru.tr | 37 ++++++++++++++ .../mcl_deepslate/locale/mcl_deepslate.ru.tr | 51 +++++++++++++++++++ .../mcl_mushroom/locale/mcl_mushroom.de.tr | 24 +++++++++ .../mcl_mushroom/locale/mcl_mushroom.ru.tr | 24 +++++++++ .../mcl_raw_ores/locale/mcl_raw_ores.ru.tr | 9 ++++ mods/ITEMS/mcl_raw_ores/locale/template.txt | 5 ++ .../mcl_shields/locale/mcl_shields.ru.tr | 19 +++++++ .../locale/mcl_smithing_table.ru.tr | 4 ++ .../mcl_smithing_table/locale/template.txt | 4 ++ .../mcl_spyglass/locale/mcl_spyglass.ru.tr | 3 ++ mods/ITEMS/mcl_spyglass/locale/template.txt | 3 ++ .../mcl_tridents/locale/mcl_tridents.ru.tr | 3 ++ mods/ITEMS/mcl_tridents/locale/template.txt | 3 ++ .../locale/mcl_playerplus.ru.tr | 3 ++ 25 files changed, 272 insertions(+) create mode 100644 mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr create mode 100644 mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr create mode 100644 mods/ENTITIES/extra_mobs/locale/template.txt create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr create mode 100644 mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.de.tr create mode 100644 mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.es.tr create mode 100644 mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.fr.tr create mode 100644 mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.it.tr create mode 100644 mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.ru.tr create mode 100644 mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.ru.tr create mode 100644 mods/ITEMS/mcl_composters/locale/mcl_composters.ru.tr create mode 100644 mods/ITEMS/mcl_copper/locale/mcl_copper.ru.tr create mode 100644 mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.ru.tr create mode 100644 mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.de.tr create mode 100644 mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.ru.tr create mode 100644 mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.ru.tr create mode 100644 mods/ITEMS/mcl_raw_ores/locale/template.txt create mode 100644 mods/ITEMS/mcl_shields/locale/mcl_shields.ru.tr create mode 100644 mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.ru.tr create mode 100644 mods/ITEMS/mcl_smithing_table/locale/template.txt create mode 100644 mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.ru.tr create mode 100644 mods/ITEMS/mcl_spyglass/locale/template.txt create mode 100644 mods/ITEMS/mcl_tridents/locale/mcl_tridents.ru.tr create mode 100644 mods/ITEMS/mcl_tridents/locale/template.txt create mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr new file mode 100644 index 000000000..a91c96b07 --- /dev/null +++ b/mods/CORE/mcl_explosions/locale/mcl_explosions.ru.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_explosions +@1 was caught in an explosion.=@1 попал под взрыв. diff --git a/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr b/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr new file mode 100644 index 000000000..393ac6aca --- /dev/null +++ b/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr @@ -0,0 +1,17 @@ +# textdomain:extra_mobs +Hoglin=Хоглин +piglin=Пиглин +piglin Brute=Жестокий пиглин +Strider=Страйдер +Fox=Лиса +Cod=Треска +Salmon=Лосось +dolphin=Дельфин +Glow Squid=Светящийся спрут +Glow Ink Sac=Светящийся чернильный мешок +Use it to craft the Glow Item Frame.=Используется для крафта светящейся рамки. +Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.=Используйте светящийся чернильный мешок и обычную рамку для крафта светящейся рамки. +Glow Item Frame=Светящаяся рамка +Can hold an item and glows=Светится и может хранить предмет. +Glow 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.=Просто используйте любой предмет на рамке. Используйте рамку снова, чтобы забрать предмет. \ No newline at end of file diff --git a/mods/ENTITIES/extra_mobs/locale/template.txt b/mods/ENTITIES/extra_mobs/locale/template.txt new file mode 100644 index 000000000..1eaf2a4ed --- /dev/null +++ b/mods/ENTITIES/extra_mobs/locale/template.txt @@ -0,0 +1,17 @@ +# textdomain:extra_mobs +Hoglin= +piglin= +piglin Brute= +Strider= +Fox= +Cod= +Salmon= +dolphin= +Glow Squid= +Glow Ink Sac= +Use it to craft the Glow Item Frame.= +Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.= +Glow Item Frame= +Can hold an item and glows= +Glow 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.= \ No newline at end of file diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr new file mode 100644 index 000000000..db68b3ca2 --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +@1 was smashed by a falling anvil.=@1 был раздавлен упавшей наковальней. +@1 was smashed by a falling block.=@1 был раздавлен упавшим блоком. diff --git a/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.de.tr b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.de.tr new file mode 100644 index 000000000..e7aa7d785 --- /dev/null +++ b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.de.tr @@ -0,0 +1,2 @@ +# textdomain:hbarmor +Armor=Panzerung diff --git a/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.es.tr b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.es.tr new file mode 100644 index 000000000..f9529b482 --- /dev/null +++ b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.es.tr @@ -0,0 +1,2 @@ +# textdomain:hbarmor +Armor=Armadura diff --git a/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.fr.tr b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.fr.tr new file mode 100644 index 000000000..c5addfa5a --- /dev/null +++ b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.fr.tr @@ -0,0 +1,2 @@ +# textdomain:hbarmor +Armor=Armure diff --git a/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.it.tr b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.it.tr new file mode 100644 index 000000000..f02b5c435 --- /dev/null +++ b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.it.tr @@ -0,0 +1,2 @@ +# textdomain:hbarmor +Armor=Armatura diff --git a/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.ru.tr b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.ru.tr new file mode 100644 index 000000000..7d082acc3 --- /dev/null +++ b/mods/HUD/mcl_hbarmor/locale/mcl_hbarmor.ru.tr @@ -0,0 +1,2 @@ +# textdomain:hbarmor +Armor=Броня diff --git a/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.ru.tr b/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.ru.tr new file mode 100644 index 000000000..6975b6562 --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/locale/mcl_blackstone.ru.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_blackstone +Blackstone=Чернокамень +Polished Blackstone=Полированный чернокамень +Chiseled Polished Blackstone=Резной полированный чернокамень +Polished Blackstone Bricks=Полированные чернокаменные кирпичи +Basalt=Базальт +Polished Basalt=Полированный базальт +Blackstone Slab=Чернокаменная плита +Polished Blackstone Slab=Полированная чернокаменная плита +Chieseled Polished Blackstone Slab=Плита из резного полированного чернокамня +Polished Blackstone Brick Slab=Плита из полированных чернокаменных кирпичей +Blackstone Stairs=Чернокаменные ступени +Polished Blackstone Stairs=Полированные чернокаменные ступени +Chieseled Polished Blackstone Stairs=Резные полированные чернокаменные ступени +Polished Blackstone Brick Stairs=Ступени из полированных чернокаменных кирпичей +Quartz Bricks=Кварцевые кирпичи +Soul Torch=Факел душ +Soul Lantern=Лампа душ +Soul Soil=Песок душ +Eternal Soul Fire=Вечный огонь душ +Gilded Blackstone=Позолоченный чернокамень +Nether Gold Ore=Золотая руда Нижнего мира +Smooth Basalt=Гладкий базальт +Blackstone Wall=Стена из чернокамня \ No newline at end of file diff --git a/mods/ITEMS/mcl_composters/locale/mcl_composters.ru.tr b/mods/ITEMS/mcl_composters/locale/mcl_composters.ru.tr new file mode 100644 index 000000000..caaa5a73a --- /dev/null +++ b/mods/ITEMS/mcl_composters/locale/mcl_composters.ru.tr @@ -0,0 +1,7 @@ +# textdomain: mcl_composters +Composter=Компостер +Composters can convert various organic items into bonemeal.=Компостер может перерабатывать органические предметы в костную муку +Use organic items on the composter to fill it with layers of compost. Every time an item is put in the composter, there is a chance that the composter adds another layer of compost. Some items have a bigger chance of adding an extra layer than other items. After filling up with 7 layers of compost, the composter is full and bone meal can be retrieved from it. Taking out the bone meal empties the composter.=Используйте органические предметы на компостере, чтобы заполнить его слоями перегноя. Каждый раз когда в компостер попадает предмет, есть шанс что в компостере появится новый слой перегноя. Некоторые предметы имеют больший шанс на появление нового слоя. После заполнения 7 слоями перегноя, компостер можно опустошить, забрав из него костную муку. +filled=заполнен +ready for harvest=готов к сбору +Converts organic items into bonemeal=Перерабатывает органику в костную муку diff --git a/mods/ITEMS/mcl_copper/locale/mcl_copper.ru.tr b/mods/ITEMS/mcl_copper/locale/mcl_copper.ru.tr new file mode 100644 index 000000000..d611dea6f --- /dev/null +++ b/mods/ITEMS/mcl_copper/locale/mcl_copper.ru.tr @@ -0,0 +1,37 @@ +# textdomain: mcl_copper +A block of copper is mostly a decorative block.=Медный блок — это декоративный блок. +A block used for compact raw copper storage.=Блок используется для компактного хранения необработанной меди. +Block of Copper=Медный блок +Block of Raw Copper=Блок необработанной меди +Copper Ingot=Медный слиток +Copper Ore=Медная руда +Cut copper is a decorative block.=Резной медный блок это декоративный блок. +Cut Copper=Резной медный блок +Double Slab of Cut Copper=Двойная плита из резного медного блока +Double Slab of Exposed Cut Copper=Двойная плита из потемневшего резного медного блока +Double Slab of Oxidized Cut Copper=Двойная плита из окисленного резного медного блока +Double Slab of Weathered Cut Copper=Двойная плита из состаренного резного медного блока +Exposed copper is a decorative block.=Потемневший медный блок это декоративный блок. +Exposed Copper=Потемневший медный блок +Exposed cut copper is a decorative block.=Потемневший резной медный блок это декоративный блок. +Exposed Cut Copper=Потемневший резной медный блок +Molten Raw Copper. It is used to craft blocks.=Медный слиток. Используется для крафта блоков. +Oxidized copper is a decorative block.=Окисленный медный блок это декоративный блок. +Oxidized Copper=Окисленный медный блок +Oxidized cut copper is a decorative block.=Окисленный резной медный блок это декоративный блок. +Oxidized Cut Copper=Окисленный резной медный блок +Raw Copper. Mine a Copper Ore to get it.=Необработанная медь. Добудьте медную руду чтобы получить её. +Raw Copper=Необработанная медь +Slab of Cut Copper=Плита из резного медного блока +Slab of Exposed Cut Copper=Плита из потемневшего резного медного блока +Slab of Oxidized Cut Copper=Плита из окисленного резного медного блока +Slab of Weathered Cut Copper=Плита из состаренного резного медного блока +Some copper contained in stone, it is pretty common and can be found below sea level.=Залежи медной руды находятся в камне, медь довольно распространена и может быть найдена ниже уровня моря. +Stairs of Cut Copper=Ступени из резного медного блока +Stairs of Exposed Cut Copper=Ступени из потемневшего резного медного блока +Stairs of Oxidized Cut Copper=Ступени из окисленного резного медного блока +Stairs of Weathered Cut Copper=Ступени из состаренного резного медного блока +Weathered copper is a decorative block.=Состаренный медный блок это декоративный блок. +Weathered Copper=Состаренный медный блок +Weathered cut copper is a decorative block.=Состаренный резной медный блок это декоративный блок. +Weathered Cut Copper=Состаренный резной медный блок diff --git a/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.ru.tr b/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.ru.tr new file mode 100644 index 000000000..59e878e06 --- /dev/null +++ b/mods/ITEMS/mcl_deepslate/locale/mcl_deepslate.ru.tr @@ -0,0 +1,51 @@ +# textdomain: mcl_deepslate +An infested block is a block from which a silverfish will pop out when it is broken. It looks identical to its normal counterpart.=Заражённый блок это блок, после добычи которого из него появляется чешуйница. Блок выглядит идентично своему нормальному варианту. +Chiseled deepslate is the chiseled version of deepslate.=Резной сланец это резной вариант глубинного сланца. +Chiseled Deepslate=Резной сланец +Cobbled deepslate is a stone variant that functions similar to cobblestone or blackstone.=Дроблёный сланец это вариант камня, схожий на булыжник или чернокамень. +Cobbled Deepslate Slab=Плита из дроблёного сланца +Cobbled Deepslate Stairs=Ступени из дроблёного сланца +Cobbled Deepslate Wall=Стена из дроблёного сланца +Cobbled Deepslate=Дроблёный сланец +Cracked Deepslate Bricks=Потрескавшиеся сланцевые кирпичи +Cracked Deepslate Tiles=Потрескавшаяся сланцевая плитка +Deepslate bricks are the brick version of deepslate.=Сланцевые кирпичи это кирпичный вариант глубинного сланца. +Deepslate Bricks Slab=Плита из сланцевых кирпичей +Deepslate Bricks Stairs=Ступени из сланцевых кирпичей +Deepslate Bricks Wall=Стена из сланцевых кирпичей +Deepslate Bricks=Сланцевые кирпичи +Deepslate coal ore is a variant of coal ore that can generate in deepslate and tuff blobs.=Глубинная угольная руда это вариант угольной руды, генерирующийся в глубинном сланце. +Deepslate Coal Ore=Глубинная угольная руда +Deepslate copper ore is a variant of copper ore that can generate in deepslate and tuff blobs.=Глубинная медная руда это вариант медной руды, генерирующийся в глубинном сланце. +Deepslate Copper Ore=Глубинная медная руда +Deepslate diamond ore is a variant of diamond ore that can generate in deepslate and tuff blobs.=Глубинная алмазная руда это вариант алмазной руды, генерирующийся в глубинном сланце. +Deepslate Diamond Ore=Глубинная алмазная руда +Deepslate emerald ore is a variant of emerald ore that can generate in deepslate and tuff blobs.=Глубинная изумрудная руда это вариант изумрудной руды, генерирующийся в глубинном сланце. +Deepslate Emerald Ore=Глубинная изумрудная руда +Deepslate gold ore is a variant of gold ore that can generate in deepslate and tuff blobs.=Глубинная золотая руда это вариант золотой руды, генерирующийся в глубинном сланце. +Deepslate Gold Ore=Глубинная золотая руда +Deepslate iron ore is a variant of iron ore that can generate in deepslate and tuff blobs.=Глубинная железная руда это вариант железной руды, генерирующийся в глубинном сланце. +Deepslate Iron Ore=Глубинная железная руда +Deepslate is a stone type found deep underground in the Overworld that functions similar to regular stone but is harder than the stone.=Глубинный сланец это камень, который можно найти в глубине Верхнего мира. Схож с обычным камнем, но сланец твёрже. +Deepslate Lapis Lazuli Ore=Глубинная лазуритовая руда +Deepslate lapis ore is a variant of lapis ore that can generate in deepslate and tuff blobs.=Глубинная лазуритовая руда это вариант лазуритовой руды, генерирующийся в глубинном сланце. +Deepslate redstone ore is a variant of redstone ore that can generate in deepslate and tuff blobs.=Глубинная редстоуновая руда это вариант редстоуновой руды, генерирующийся в глубинном сланце. +Deepslate Redstone Ore=Глубинная редстоуновая руда +Deepslate tiles are a decorative variant of deepslate.=Сланцевая плитка это декоративный вариант глубинного сланца. +Deepslate Tiles Slab=Плита из сланцевой плитки +Deepslate Tiles Stairs=Ступени из сланцевой плитки +Deepslate Tiles Wall=Стена из сланцевой плитки +Deepslate Tiles=Сланцевая плитка +Deepslate=Глубинный сланец +Double Cobbled Deepslate Slab=Двойная плита из дроблёного сланца +Double Deepslate Bricks Slab=Двойная плита из сланцевых кирпичей +Double Deepslate Tiles Slab=Двойная плита из сланцевой плитки +Double Polished Deepslate Slab=Двойная плита из полированного сланца +Hides a silverfish=Прячет в себе чешуйницу +Infested Deepslate=Заражённый глубинный сланец +Lit Deepslate Redstone Ore=Светящаяся глубинная редстоуновая руда +Polished deepslate is the stone-like polished version of deepslate.=Полированный сланец это гладкая версия глубинного сланца. +Polished Deepslate Slab=Плита из полированного сланца +Polished Deepslate Stairs=Ступени из полированного сланца +Polished Deepslate Wall=Стена из полированного сланца +Polished Deepslate=Полированный сланец \ No newline at end of file diff --git a/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.de.tr b/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.de.tr new file mode 100644 index 000000000..becde0256 --- /dev/null +++ b/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.de.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_mushroom + +Warped Fungus Mushroom=Wirrpilz +Twisting Vines=Zwirbelranken +Nether Sprouts=Nethersprossen +Warped Roots=Wirrwurzeln +Warped Wart Block=Wirrwarzenblock +Shroomlight=Pilzlicht +Warped Hyphae=Wirrhyphe +Warped Nylium=Wirr-Nezel +Warped Checknode - only to check!=Wirr Checkblock - Nur zum checken! +Warped Hyphae Wood=Wirrhyphen Holz +Warped Stair=Wirrtreppe +Warped Slab=Wirrstufe +Double Warped Slab=Doppelte Wirrstufe +Crimson Fungus Mushroom=Karmesinpilz +Crimson Roots=Karmesinwurzeln +Crimson Hyphae=Karmesinhyphe +Crimson Hyphae Wood=Karmesinhyphenholz +Crimson Stair=Karmesintreppe +Crimson Slab=Karmesinstufe +Double Crimson Slab=Doppelte Karmesinstufe +Crimson Nylium=Karmesin-Nezel +Crimson Checknode - only to check!=Karmesin Checkblock - Nur zum checken! diff --git a/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.ru.tr b/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.ru.tr new file mode 100644 index 000000000..71a48d60d --- /dev/null +++ b/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.ru.tr @@ -0,0 +1,24 @@ +# textdomain: mcl_mushroom + +Warped Fungus Mushroom=Искажённый огромный грибок +Twisting Vines=Извилистые лианы +Nether Sprouts=Адские ростки +Warped Roots=Искажённые корни +Warped Wart Block=Искажённый блок адского нароста +Shroomlight=Грибосвет +Warped Hyphae=Искажённая ножка +Warped Nylium=Искажённый нилий +Warped Checknode - only to check!=Искажённый тестовый блок +Warped Hyphae Wood=Искажённые доски +Warped Stair=Искажённые ступени +Warped Slab=Искажённая плита +Double Warped Slab=Двойная искажённая плита +Crimson Fungus Mushroom=Багровый огромный грибок +Crimson Roots=Багровые корни +Crimson Hyphae=Багровая ножка +Crimson Hyphae Wood=Багровые доски +Crimson Stair=Багровые ступени +Crimson Slab=Багровая плита +Double Crimson Slab=Двойная багровая плита +Crimson Nylium=Багровый нилий +Crimson Checknode - only to check!=Багровый тестовый блок diff --git a/mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.ru.tr b/mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.ru.tr new file mode 100644 index 000000000..ec2c60756 --- /dev/null +++ b/mods/ITEMS/mcl_raw_ores/locale/mcl_raw_ores.ru.tr @@ -0,0 +1,9 @@ +# textdomain: mcl_raw_ores +Raw Iron=Необработанное железо +Raw Gold=Необработанное золото +Raw iron. Mine an iron ore to get it.=Необработанное железо. Добудьте железную руду чтобы получить это. +Raw gold. Mine a gold ore to get it.=Необработанное золото. Добудьте золотую руду чтобы получить это. +Block of Raw Iron=Блок необработанного железа +Block of Raw Gold=Блок необработанного золота +A block of raw iron is mostly a decorative block but also useful as a compact storage of raw iron.=Блок необработанного железа. Декоративный блок, но также подходит для компактного хранения необработанного железа. +A block of raw gold is mostly a decorative block but also useful as a compact storage of raw gold.=Блок необработанного золота. Декоративный блок, но также подходит для компактного хранения необработанного золота. \ No newline at end of file diff --git a/mods/ITEMS/mcl_raw_ores/locale/template.txt b/mods/ITEMS/mcl_raw_ores/locale/template.txt new file mode 100644 index 000000000..af375fef4 --- /dev/null +++ b/mods/ITEMS/mcl_raw_ores/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: mcl_raw_ores +Raw Iron= +Raw Gold= +Raw Iron. Mine an Iron ore to get it.= +Raw Gold. Mine a Gold ore to get it.= diff --git a/mods/ITEMS/mcl_shields/locale/mcl_shields.ru.tr b/mods/ITEMS/mcl_shields/locale/mcl_shields.ru.tr new file mode 100644 index 000000000..005a264fe --- /dev/null +++ b/mods/ITEMS/mcl_shields/locale/mcl_shields.ru.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_shields +Shield=Щит +A shield is a tool used for protecting the player against attacks.=Щит это инструмент, используемый для защиты игрока от атак +White Shield=Белый щит +Grey Shield=Серый щит +Light Grey Shield=Светло-серый щит +Black Shield=Чёрный щит +Red Shield=Красный щит +Yellow Shield=Жёлтый щит +Green Shield=Зелёный щит +Cyan Shield=Бирюзовый щит +Blue Shield=Синий щит +Magenta Shield=Сиреневый щит +Orange Shield=Оранжевый щит +Purple Shield=Фиолетовый щит +Brown Shield=Коричневый щит +Pink Shield=Розовый щит +Lime Shield=Лаймовый щит +Light Blue Shield=Голубой щит diff --git a/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.ru.tr b/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.ru.tr new file mode 100644 index 000000000..808643f9c --- /dev/null +++ b/mods/ITEMS/mcl_smithing_table/locale/mcl_smithing_table.ru.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_smithing_table +Inventory=Инвентарь +Upgrade Gear=Улучшить +Smithing table=Кузнечный стол \ No newline at end of file diff --git a/mods/ITEMS/mcl_smithing_table/locale/template.txt b/mods/ITEMS/mcl_smithing_table/locale/template.txt new file mode 100644 index 000000000..6133a22db --- /dev/null +++ b/mods/ITEMS/mcl_smithing_table/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_smithing_table +Inventory= +Upgrade Gear= +Smithing table= diff --git a/mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.ru.tr b/mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.ru.tr new file mode 100644 index 000000000..32b7fa96a --- /dev/null +++ b/mods/ITEMS/mcl_spyglass/locale/mcl_spyglass.ru.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_spyglass +Spyglass=Подзорная труба +A spyglass is an item that can be used for zooming in on specific locations.=Подзорная труба это предмет который позволяет смотреть вдаль. \ No newline at end of file diff --git a/mods/ITEMS/mcl_spyglass/locale/template.txt b/mods/ITEMS/mcl_spyglass/locale/template.txt new file mode 100644 index 000000000..606b46455 --- /dev/null +++ b/mods/ITEMS/mcl_spyglass/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_spyglass +Spyglass= +A spyglass is an item that can be used for zooming in on specific locations.= diff --git a/mods/ITEMS/mcl_tridents/locale/mcl_tridents.ru.tr b/mods/ITEMS/mcl_tridents/locale/mcl_tridents.ru.tr new file mode 100644 index 000000000..4a9b1cc4e --- /dev/null +++ b/mods/ITEMS/mcl_tridents/locale/mcl_tridents.ru.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_tridents +Trident=Трезубец +Launches a trident when you rightclick and it is in your hand=Щелкните правой кнопкой мыши чтобы метнуть трезубец \ No newline at end of file diff --git a/mods/ITEMS/mcl_tridents/locale/template.txt b/mods/ITEMS/mcl_tridents/locale/template.txt new file mode 100644 index 000000000..0825911ff --- /dev/null +++ b/mods/ITEMS/mcl_tridents/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_tridents +Trident= +Launches a trident when you rightclick and it is in your hand= diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr new file mode 100644 index 000000000..93dc166d0 --- /dev/null +++ b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_playerplus +@1 suffocated to death.=@1 задохнулся. +@1 was prickled to death by a cactus.=@1 был исколот до смерти кактусом. From b507cf89b6ba0ae15c85144b5b9fd6abb9104158 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sat, 19 Feb 2022 21:19:04 +0800 Subject: [PATCH 091/521] Small changes --- mods/HELP/mcl_tt/locale/mcl_tt.ru.tr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.ru.tr b/mods/HELP/mcl_tt/locale/mcl_tt.ru.tr index 501f8f9ef..5f1b7c875 100644 --- a/mods/HELP/mcl_tt/locale/mcl_tt.ru.tr +++ b/mods/HELP/mcl_tt/locale/mcl_tt.ru.tr @@ -1,8 +1,8 @@ # textdomain: mcl_tt -Head armor=Броня головы -Torso armor=Броня тела -Legs armor=Броня ног -Feet armor=Броня ступней +Head armor=Броня для головы +Torso armor=Броня для торса +Legs armor=Броня для ног +Feet armor=Броня для ступней Armor points: @1=Эффективность брони: @1 Armor durability: @1=Прочность брони: @1 Protection: @1%=Уровень защиты: @1% From 4e5cc0cb2bfae202de82eea87b6b7846d48727f8 Mon Sep 17 00:00:00 2001 From: kabou Date: Sat, 19 Feb 2022 14:55:25 +0100 Subject: [PATCH 092/521] Change custom node attribute name. * Rename _compost_level to _mcl_compost_level --- mods/ITEMS/mcl_composters/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index 5684c2c2b..abcc7fcb4 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -157,7 +157,7 @@ local function composter_add_item(pos, node, player, itemstack, pointed_thing) if chance >= rand then -- get current compost level local node_defs = minetest.registered_nodes[node.name] - local level = node_defs["_compost_level"] + local level = node_defs["_mcl_compost_level"] -- spawn green particles above new layer mcl_dye.add_bone_meal_particle(vector.add(pos, {x=0, y=level/8, z=0})) -- TODO: play some sounds @@ -253,7 +253,7 @@ minetest.register_node("mcl_composters:composter", { sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_hardness = 2, _mcl_blast_resistance = 2, - _compost_level = 0, + _mcl_compost_level = 0, on_rightclick = composter_add_item }) @@ -287,7 +287,7 @@ local function register_filled_composter(level) drop = "mcl_composters:composter", _mcl_hardness = 2, _mcl_blast_resistance = 2, - _compost_level = level, + _mcl_compost_level = level, on_rightclick = composter_add_item, on_timer = composter_ready }) @@ -332,7 +332,7 @@ minetest.register_node("mcl_composters:composter_ready", { drop = "mcl_composters:composter", _mcl_hardness = 2, _mcl_blast_resistance = 2, - _compost_level = 7, + _mcl_compost_level = 7, on_rightclick = composter_harvest }) From fcead8be34791f5a2a5292ea2f71faaaf5914281 Mon Sep 17 00:00:00 2001 From: "U.N.Owen" Date: Sat, 19 Feb 2022 14:24:10 +0000 Subject: [PATCH 093/521] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB(=D0=B0)=20=D0=BD=D0=B0=20'mods/ENTITIES/mcl=5Fmobs/local?= =?UTF-8?q?e/mcl=5Fmobs.ru.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr index b7c2e1d51..3ce64ced6 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr @@ -8,4 +8,4 @@ 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=Переименуйте на наковальни +Set name at anvil=Переименуйте на наковальне \ No newline at end of file From 9ac30a68aff3805067d2627651d2fa9bf6c0640f Mon Sep 17 00:00:00 2001 From: "U.N.Owen" Date: Sat, 19 Feb 2022 14:26:29 +0000 Subject: [PATCH 094/521] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB(=D0=B0)=20=D0=BD=D0=B0=20'mods/ENTITIES/mcl=5Fminecarts/?= =?UTF-8?q?locale/mcl=5Fminecarts.ru.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr index 5dcb4f112..962d6857c 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr @@ -1,6 +1,6 @@ # textdomain: mcl_minecarts Minecart=Вагонетка -Minecarts can be used for a quick transportion on rails.=Вагонетки может быть использована для быстрого перемещения по рельсам. +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.=Чтобы забрать вагонетку, ударьте по ней, удерживая клавишу [Красться]. From 5076f730cbb6478a06c3105365880138e178c5d2 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sat, 19 Feb 2022 23:20:17 +0800 Subject: [PATCH 095/521] Rework --- .../mcl_minecarts/locale/mcl_minecarts.ru.tr | 2 +- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr | 2 +- mods/HELP/doc/doc/locale/doc.ru.tr | 2 +- .../locale/doc_identifier.ru.tr | 2 +- .../HELP/doc/doc_items/locale/doc_items.ru.tr | 2 +- .../locale/mcl_doc_basics.ru.tr | 20 +++++++++---------- mods/ITEMS/mcl_blackstone/locale/template.txt | 1 - .../mcl_brewing/locale/mcl_brewing.ru.tr | 6 +++--- .../mcl_cauldrons/locale/mcl_chaudrons.fr.tr | 11 ---------- .../mcl_cauldrons/locale/mcl_chaudrons.ru.tr | 11 ---------- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- 11 files changed, 19 insertions(+), 42 deletions(-) delete mode 100644 mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr delete mode 100644 mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr index 5dcb4f112..962d6857c 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.ru.tr @@ -1,6 +1,6 @@ # textdomain: mcl_minecarts Minecart=Вагонетка -Minecarts can be used for a quick transportion on rails.=Вагонетки может быть использована для быстрого перемещения по рельсам. +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.=Чтобы забрать вагонетку, ударьте по ней, удерживая клавишу [Красться]. diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr index b7c2e1d51..a3dd92431 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr @@ -8,4 +8,4 @@ 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=Переименуйте на наковальни +Set name at anvil=Переименуйте на наковальне diff --git a/mods/HELP/doc/doc/locale/doc.ru.tr b/mods/HELP/doc/doc/locale/doc.ru.tr index b838b4075..23dc35f08 100644 --- a/mods/HELP/doc/doc/locale/doc.ru.tr +++ b/mods/HELP/doc/doc/locale/doc.ru.tr @@ -27,7 +27,7 @@ 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.=Система документации [doc] не предоставляет помощи сама по себе, нужны дополнительные моды для добавления справочной информации. Пожалуйста, убедитесь, что моды включены для этого мира, после чего попробуйте снова. Number of entries: @1=Количество записей: @1 -OK=ОК +OK=Окей Open a window providing help entries about Minetest and more=Открыть окно с подсказками об игре Minetest и т. п. Please select a category you wish to learn more about:=Пожалуйста, выберите категорию, о которой хотите узнать больше: Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.=Рекомендованные моды: doc_basics, doc_items, doc_identifier, doc_encyclopedia. diff --git a/mods/HELP/doc/doc_identifier/locale/doc_identifier.ru.tr b/mods/HELP/doc/doc_identifier/locale/doc_identifier.ru.tr index 18b19f5d2..23f9cfa45 100644 --- a/mods/HELP/doc/doc_identifier/locale/doc_identifier.ru.tr +++ b/mods/HELP/doc/doc_identifier/locale/doc_identifier.ru.tr @@ -10,7 +10,7 @@ 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=ОК +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.=Это игрок. diff --git a/mods/HELP/doc/doc_items/locale/doc_items.ru.tr b/mods/HELP/doc/doc_items/locale/doc_items.ru.tr index 69f296642..dc78f27aa 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.ru.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.ru.tr @@ -28,7 +28,7 @@ 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)=Справка по остальным предметам - не блокам, не инструментам и не оружию (т.н. ингридиенты для крафта) +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=Максимальный размер стека: @1 Mining level: @1=Уровень добывания: @1 diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr index 96f538057..e042f5fc5 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr @@ -43,7 +43,7 @@ To sneak, hold down the sneak key (default: [Shift]). When you release it, you s • Sneak: [Shift]=• Красться: [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.=Подкрадывание может быть отключено модами. В этом случае крадясь вы все равно идете медленнее, но вас больше ничто не останавливает на выступах. +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:=Основное движение: @@ -109,7 +109,7 @@ 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 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.=Другие последствия смерти зависят от игры-мода. Игрок может потерять все предметы или проиграть в соревновании. @@ -172,7 +172,7 @@ Blocks can have a wide range of different properties which determine mining time • 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.=Для добычи блоков требуется инструмент для добычи. Разные блоки добываются разными инструментами, а некоторые блоки не могут быть добыты никаким инструментом. Блоки различаются по твёрдости, а инструменты - по прочности. Добывательные инструменты со временем изнашиваются. Время добывания и износ зависят и от блока, и от инструмента майнинга. Самый быстрый способ узнать, насколько эффективны ваши инструменты, - это просто попробовать их на различных блоках. Любые предметы, которые вы извлечёте из блоков в качестве добычи, выпадут на землю и их можно будет забрать. +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=• Всегда выпадают одни и те же предметы @@ -203,14 +203,14 @@ 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=• Если вы упадете в жидкость, вы будете замедлены перед ударом (но не остановлены мгновенно). Итоговая сила удара определяется вашей скоростью и вязкостью жидкости. Для безопасного падения в жидкость убедитесь, что над землей достаточно жидкости, иначе вы можете удариться о землю и всё таки получить урон от падения +• 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”. 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.=Рецепты состоят, как минимум, из одного входного элемента и стопки выходных элементов. При выполнении единичного крафтинга будет употреблён ровно один предмет из каждой стопки в отсеках крафтинговой решётки, если только рецепт не предполагает замены. +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=• Форменные (рис. 2): предметы должны быть выложены определенной формой • Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=• Бесформенные (изображения 3 и 4): предметы помещаются в произвольных слотах сетки крафта (оба изображения показывают один и тот же рецепт) @@ -219,7 +219,7 @@ There are multiple types of crafting recipes:=Существует нескол 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.=В некоторых рецептах некоторые предметы должны быть не какими-то конкретными, а просто принадлежать нужной группе предметов (см. “Основы > Группы”). Такие рецепты предлагают немного больше свободы в выборе входных предметов. На рисунках 6-8 показан один и тот же групповой рецепт. Здесь требуется 8 предметов из группы “Камни“, к которой относятся все показанные предметы. 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 special block (like 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=Хотбар @@ -248,7 +248,7 @@ 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=• Клик средней кнопкой мыши: взять 10 предметов из стопки предметов -• Mouse wheel down: take 1 item from the item stack=• Колесико вниз: взять 1 предмет из стопки предметов +• Mouse wheel down: take 1 item from the item stack=• Колёсико вниз: взять 1 предмет из стопки предметов 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.=Выкладывание: вы можете помещать предметы в слот, если ваш курсор удерживает 1 или более предмет, а слот пуст, либо содержит стопку таких же предметов. • Left click: put entire item stack=• Клик левой кнопкой мыши: положить всю стопку предметов • Right click: put 1 item of the item stack=• Клик правой кнопкой мыши: положить только 1 предмет из всей удерживаемой курсором стопки @@ -278,7 +278,7 @@ Chat: =Чат: Weapons”=• Урон и защита: у объектов и игроков есть группы защиты, а у оружия - группы причиняемого урона. Эти группы позволяют определить урон. Смотри также: “Основы > Оружие” @@ -309,7 +309,7 @@ Items:=Предметы: • 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=• Ингредиент: предмет, который преимущественно используется для крафта (создания) новых предметов +• Craftitem: An item which is (primarily or only) used for crafting=• Материал: предмет, который преимущественно используется для крафта (создания) новых предметов Gameplay:=Игровой процесс: • “heart”: A single health symbol, indicates 2 HP=• “сердечко”: часть индикатора здоровья, обозначает 2 очка здоровья (HP) • “bubble”: A single breath symbol, indicates 1 BP=• “пузырёк“: часть индикатора дыхания, обозначает 1 очко дыхания (BP) @@ -401,7 +401,7 @@ In the command reference, you see some placeholders which you need to replace wi Here are some examples to illustrate the command syntax:=Вот несколько примеров, иллюстрирующих синтаксис команды: • /mods: No parameters. Just enter “/mods”=• /mods: Нет параметров. Просто введите “/mods” • /me : 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”=• /me <действие>: 1 параметр. Вы должны ввести “/me“, а затем любой текст, например “/me orders pizza” -• /give : Two parameters. Example: “/give Player default:apple”=• /give <имя> <предмет>: два параметра. Пример: “/give Player mcl_core:apple” +• /give : Two parameters. Example: “/give Player default:apple”=• /give <имя> <ТехническоеНазвание>: два параметра. Пример: “/give Player mcl_core: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|<команда>]: допустимыми командами будут являться: “/help”, “/help all”, “/help privs” или “/help ” и имя команды, например: “/help time” • /spawnentity [,,]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”=• /spawnentity <ИмяСущности> [<Х>,<У>,]: допустимыми командами будут являться: “/spawnentity mcl_boats:boat” и “/spawnentity mcl_boats:boat 0,0,0” Some final remarks:=Некоторые заключительные замечания: diff --git a/mods/ITEMS/mcl_blackstone/locale/template.txt b/mods/ITEMS/mcl_blackstone/locale/template.txt index 118560864..ec7e561ba 100644 --- a/mods/ITEMS/mcl_blackstone/locale/template.txt +++ b/mods/ITEMS/mcl_blackstone/locale/template.txt @@ -13,7 +13,6 @@ Blackstone Stairs= Polished Blackstone Stairs= Chieseled Polished Blackstone Stairs= Polished Blackstone Brick Stairs= -Chiseled Polished Blackstone= Quartz Bricks= Soul Torch= Soul Lantern= diff --git a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr index 030cadd9d..ce9c69fa2 100644 --- a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr +++ b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr @@ -2,9 +2,9 @@ Brewing Stand=Варочная стойка Inventory=Инвентарь To use a brewing stand, rightclick it.=Кликните правой кнопкой мыши, чтобы использовать варочный стенд. -To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Для приготовления зелья вам понадобится огненный порошок в качестве топлива, ингридиент и как минимум 1 стеклянная бутылка, наполненная жидкостью. -Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Поместите огненный порошок в левый слот, ингридиент в средний слот и 1-3 бутылки в оставшиеся слоты. -When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=Когда вы подберёте хорошую комбинацию, варка зелья начнётся автоматически — появится пар и начнётся расход топлива и ингридиента. Зелья вскоре будут готовы. +To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Для приготовления зелья вам понадобится огненный порошок в качестве топлива, материал и как минимум 1 стеклянная бутылка, наполненная жидкостью. +Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Поместите огненный порошок в левый слот, ингредиент в средний слот и 1-3 бутылки в оставшиеся слоты. +When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=Когда вы подберёте хорошую комбинацию, варка зелья начнётся автоматически — появится пар и начнётся расход топлива и материала. Зелья вскоре будут готовы. Different combinations of brewing materials and liquids will give different results. Try to experiment!=Разные сочетания варочных материалов и жидкостей будут давать разные результаты. Поэкспериментируйте! The stand allows you to brew potions!=Стойка позволяет вам варить зелья! Brew Potions=Зельеварение diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr deleted file mode 100644 index ea920874b..000000000 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr +++ /dev/null @@ -1,11 +0,0 @@ -# textdomain: mcl_cauldrons -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 bucket 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_cauldrons/locale/mcl_chaudrons.ru.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr deleted file mode 100644 index fb58ced24..000000000 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr +++ /dev/null @@ -1,11 +0,0 @@ -# textdomain: mcl_cauldrons -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 bucket 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)=Котёл (1/3 воды) -Cauldron (2/3 Water)=Котёл (2/3 воды) -Cauldron (3/3 Water)=Котёл (3/3 воды) -Cauldron (1/3 River Water)=Котёл (1/3 речной воды) -Cauldron (2/3 River Water)=Котёл (2/3 речной воды) -Cauldron (3/3 River Water)=Котёл (3/3 речной воды) -Stores water=Хранит воду diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index 8dffb4ea1..61cad0de6 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -86,7 +86,7 @@ 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.=Алмазная руда встречается редко, в виде скоплений в самом низу мира. +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.=Диорит это камень вулканической природы. From 4d95fc625302e7ff51fbea8a65071c87d3b2a4a2 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sat, 19 Feb 2022 23:23:40 +0800 Subject: [PATCH 096/521] rework --- mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.fr.tr | 11 +++++++++++ mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.ru.tr | 11 +++++++++++ 2 files changed, 22 insertions(+) create mode 100644 mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.fr.tr create mode 100644 mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.ru.tr diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.fr.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.fr.tr new file mode 100644 index 000000000..ea920874b --- /dev/null +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.fr.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_cauldrons +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 bucket 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_cauldrons/locale/mcl_cauldrons.ru.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.ru.tr new file mode 100644 index 000000000..b2255594d --- /dev/null +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.ru.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_cauldrons +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 bucket 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)=Котёл (1/3 воды) +Cauldron (2/3 Water)=Котёл (2/3 воды) +Cauldron (3/3 Water)=Котёл (3/3 воды) +Cauldron (1/3 River Water)=Котёл (1/3 речной воды) +Cauldron (2/3 River Water)=Котёл (2/3 речной воды) +Cauldron (3/3 River Water)=Котёл (3/3 речной воды) +Stores water=Хранит воду From b90652c61c034b37026b2f6b2af51659a93b1ca1 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sat, 19 Feb 2022 23:39:26 +0800 Subject: [PATCH 097/521] uh oh --- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr index b2f710c2d..3ce64ced6 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.ru.tr @@ -8,8 +8,4 @@ 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=Даёт имена мобам -<<<<<<< HEAD -Set name at anvil=Переименуйте на наковальне -======= -Set name at anvil=Переименуйте на наковальне ->>>>>>> 9ac30a68aff3805067d2627651d2fa9bf6c0640f +Set name at anvil=Переименуйте на наковальне \ No newline at end of file From 0e48a297879b896cab8a0386eea91d9fcc0d0110 Mon Sep 17 00:00:00 2001 From: kabou Date: Sat, 19 Feb 2022 16:57:22 +0100 Subject: [PATCH 098/521] Optimize texture files. * Texture files were optimized with 'optipng -o7 -zm9 -strip all' . --- .../textures/mcl_composter_bottom.png | Bin 395 -> 213 bytes .../textures/mcl_composter_compost.png | Bin 409 -> 184 bytes .../textures/mcl_composter_ready.png | Bin 582 -> 276 bytes .../textures/mcl_composter_side.png | Bin 267 -> 209 bytes .../textures/mcl_composter_top.png | Bin 397 -> 223 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_composters/textures/mcl_composter_bottom.png b/mods/ITEMS/mcl_composters/textures/mcl_composter_bottom.png index dc075789938b54b1f26881e9a101b71a6abc7fb0..cfed3a8a5c7fa7818d1cc06f534cc087fa8e1b91 100644 GIT binary patch delta 197 zcmV;$06PDR1JwbL7=Hu<0002(-QrRJ0016POjJc)OF?E(MQ>C_cv?t>V@!@|O_O-B**I>Qi|zG#c7HspE!L~$fM3{!0RS}L z9VAZ00YC#l^V5T?tu$mT-P=mXv#m4~FO09TdwGNZe8=_8eLNdqGg{XHZ~Q;di%W;zz(8vsx=NP@{JNH#BL(Nsl~ zTsNR`M|1X}k9F0kWFPvtZ(WE+Dz@h8a;$_^{!^vWfa`{{L{vE;kS5A%xo(hj)CK8q zuA20vb>Vau=mjg&xa@ai7vv?Yox`LHsbnh2nJ8n$dbJ$nu*jiF2Pv1MWwIPy{xNqa aRUZJLbDRHfYw#QZ0000ZKiFTVC>hD59(`=?h`_AByB^-Fpb_p&Ly+bm=levX0RfIP1W*Gk>p S<)uIi7(8A5T-G@yGywqImpVBB delta 395 zcmV;60d)Sj0ht4k7=H)`0000V^Z#K0000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Re2Ll5s7^(dUmH+?&CP_p=R5;7Eld*2YAQVN936>>b zi3g@k9n!Dp(EtB~4w*7Bq#XZht;L-+5&TUR?6wdj_z* zz{nlW&kTOT=zEFP4JS92ZL=aMmxt+E_o_=A_br2;IJptqi){ki3qllxI5YT!(Yf%T zI?f?tv_y4@5CxFd4MG$Qegb$dR{30Y`BJIbn!y8J!pI#)!Z}0$+$CYO#P-jR$>mf- z6j`<6G`Vs*0} zq+(-{qPkQY*Eu3@!>iN5xV)Y z2FHK1JP9=+V$Yt?hh}oe|&Z0(`z8Q`RVm7(Qm4S zKoc2Dg8YIR9G=}s19D0{T^vIsBzq5b3LY}35nwr(EV*7_(}4&6Pv&csO75^;Hz7tK zV2MXjr26ix?MgFCeb&|Wt@AjeKJRr=Ub*Wc-MqtccU=yxtvM#msl<7>T&%<6#Oi}@ zHB^P(?LV4!w=Z1fd#<=yzn{w8Suv|MH72o$umr_?V6O~g>2!LLa~|jb22WQ%mvv4F FO#p~BZcqRK delta 568 zcmV-80>}N70>%W88Gi-<001BJ|6u?C00v@9M??Vs0RI60puMM)00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-;t0|O})*GzRQ0005gNklJI4qyuNS+%hZ%- zrg>g(pj^plKF8gg57?zLC|h)QpxobbxE;M@8qD%b8)Ix@M{ zfn{n6Ln9n7PN4NqPEMW0v5f>$o;gpSBN^P2qgtzP1$Y~phfiOkwdQg4HOiIrTNwaa zL6~f*S~07qJfxHgA$ZYf;@Ad32;Yt9&q-?>TPElIf7LInO{sr4dCb}X0000S|zoLLZ^xL2VX)Z9k85Es{jiC002ovPDHLk FV1lhoJwE^d delta 209 zcmcb}*v&LSg;8;$s#5)e=8X89`d9`A2F4_BcNc~ZR#^`qhqJ&VvY3H^TNs2H8D`Cq z01C2~c>21sKW1lU=Hry?n9T?jD)4l14B@!$dnQoukb#KH#iNYP%qDvRSe_hp+|DKu zC!4~~-q|Fyy=DKs_r~ITw_g0U{qclj3(q&qO!vO|p!MAn*T;27-xM{!+O)dufX1Ds z7FA>IY^&K5#5mvQPC9-+B5B_B$(`YMm#Q~upIoaj+duUsd%TmXtkBcOZ9vNzJYD@< J);T3K0RVz4P6Yq} diff --git a/mods/ITEMS/mcl_composters/textures/mcl_composter_top.png b/mods/ITEMS/mcl_composters/textures/mcl_composter_top.png index 6fb9df7ee2f70e60bf6362ba509a8d3fd78342a3..fc6e202d3c90f2e7405c671392145fced2a74a3f 100644 GIT binary patch delta 207 zcmeBWzRx&8qMn7Bfq~)e-A6${N-n@B#5K;_F)hF~Kg6vf%A+;er!UiYW>L`O%9I7o z8EgCV8n0UK1FB>%3GxdD(jX9;@+tyIWqP_ehH%KT9(3eoaujg67=QN8ax=#RUJlHC z1&snNXQ#Go*vqDI?{e^F)7cZ1+2iLopZ`7Sy2snN72+;SkDV@)Jm|ktX5#shuYHCh zCd)LVbe2rwu#HWN7h7q;U~Bc}VM;-&wVc70T*uA-pLyysTsT+o5M;ZjtDnm{r-UW| D29!>d delta 382 zcmV-^0fGMC0gVHY7=H)`0000V^Z#K0000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Re2Ll5a6_$x^RsaA28c9S!R5;6pQ_D`nFc6%zT#JNS zT=>ZTM}MSW!WoGh7eIgnh+Ys1LLs<$Na0Y%Y#g`D#rAr=Gk>1d%4WS9@e99n0D$_d zgT|pa09XL1zXx#jrG<{Adtcgk_N9g4g=;I>KEF!)@g^6Scfzx4D|xtok*n)Racw2H zH&5c)O8Cx9q!t!U=m7xlpL4kcbNtfn3;6QyAyGJ)6gpYhNWwP&U}%sAlT)zRX|af= z8k!Wk5p~#`vv=!<$VMf*eu(=f^wCJe)|{VBm5}8>RVEFDZai9uDrW_>iJC3f4Hlhr zK|7pd)4nvJKima+L1r44{f_Q}z9ic*%({?DrjneAIwqU-YShD`hbA4QT#nVrdUW~6 c+?`ha1IdG&3+6y&UH||907*qoM6N<$f@RgH82|tP From ac9aaf927e502b646a31e4e7b03f1a35c8b1acd4 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 16:24:47 +0000 Subject: [PATCH 099/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fflowerpots/locale/mcl=5Fflowerpots.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Coherence --- mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr index d80497117..9ac00bb98 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr @@ -17,7 +17,7 @@ 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 +Dead Bush Flower Pot=Buisson Mort en Pot Fern Flower Pot=Fougère en Pot Cactus Flower Pot=Cactus en Pot Flower Pot=Pot de Fleurs From 8260b42698c964b6272d931b6101cc35766ce5bc Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 16:32:05 +0000 Subject: [PATCH 100/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fflowers/locale/mcl=5Fflowers.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr index 945a799e2..910b25384 100644 --- a/mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr +++ b/mods/ITEMS/mcl_flowers/locale/mcl_flowers.fr.tr @@ -1,6 +1,6 @@ # 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. +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 peuvent survivre. Poppy=Coquelicot Dandelion=Pisselit Oxeye Daisy=Marguerite @@ -12,21 +12,21 @@ 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. +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 dans les prairies. Elle peut être récoltée pour obtenir des 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. +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 apparaissent naturellement dans les jungles et les taigas. Elles peuvent être récoltées pour obtenir des 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 production.=Une pivoine est une grande plante qui occupe deux blocs. Principalement utilisé dans la production de colorants. +A peony is a large plant which occupies two blocks. It is mainly used in dye production.=Une pivoine est une grande plante qui occupe deux blocs. Principalement utilisée dans la production de 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 production.=Un rosier est une grande plante qui occupe deux blocs. Il n'y a rien a craindre à le toucher. Les rosiers sont principalement utilisés dans la production de teinture. +A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye production.=Un rosier est une grande plante qui occupe deux blocs. Il n'est pas dangereux de le toucher. Les rosiers sont principalement utilisés dans la production de teinture. 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 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 obtenir des 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 obtenir des 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. +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 ou de la glace givrée. From e7120c85ca5f67637a6e2f283907da6517ceeb59 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 16:35:21 +0000 Subject: [PATCH 101/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Ffurnaces/locale/mcl=5Ffurnaces.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr index deec7981c..f7b37e537 100644 --- a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr @@ -1,7 +1,7 @@ # 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. +Furnaces cook or smelt several items, using a furnace fuel, into something else.=Les fours cuisent ou fondent plusieurs articles, en utilisant du combustible, en 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 du combustible 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 From deaf383465c628d20e8801ce9ff81c2f732bada0 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 16:39:28 +0000 Subject: [PATCH 102/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fheads/locale/mcl=5Fheads.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr b/mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr index 56436f519..0302240ba 100644 --- a/mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr +++ b/mods/ITEMS/mcl_heads/locale/mcl_heads.fr.tr @@ -1,11 +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%. +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. Elle peut également être portée comme 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%. +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 creeper est un petit bloc décoratif qui ressemble à la tête d'un creeper. Elle peut également être portée comme 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. +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). Elle peut également être portée comme 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%. +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 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. +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 casque pour le plaisir, mais n'offre aucune protection. From 1491cf97e900b49ed36de51cfbaf106dc1c8ca46 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 16:49:44 +0000 Subject: [PATCH 103/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fhoppers/locale/mcl=5Fhoppers.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr index 40795d09c..6239db903 100644 --- a/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr +++ b/mods/ITEMS/mcl_hoppers/locale/mcl_hoppers.fr.tr @@ -1,16 +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 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 entonnoirs 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 vers le côté. Les entonnoirs interagissent avec les coffres, droppers, 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 +• 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 entonnoirs d'en haut placent les objets dans l'emplacement d'entrée. Les entonnoirs 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 entonnoirs latéraux 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é +Hoppers can be disabled when supplied with redstone power. Disabled hoppers don't move items.=Les entonnoirs peuvent être désactivés lorsqu'ils sont alimentés en redstone. Les entonnoirs désactivés 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 entonnoir verticalement, placez-le au sol ou au plafond. Pour le placer sur le côté, placez-le sur le côté d'un bloc. Utilisez l'entonnoir pour accéder à son inventaire. +Disabled Hopper=Entonnoir Désactivé +Side Hopper=Entonnoir Latéral +Disabled Side Hopper=Entonnoir 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 +Collects items from above, moves items to container below=Collecte les éléments au-dessus, déplace les éléments vers le conteneur en-dessous Can be disabled with redstone power=Peut être désactivé par la puissance Redstone From e92ffdce84d2fff2809e356edf3227dd1dc6909a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 17:05:53 +0000 Subject: [PATCH 104/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fmobitems/locale/mcl=5Fmobitems.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correction --- mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr index d31632345..f5654bec7 100644 --- a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.fr.tr @@ -55,7 +55,7 @@ Wield the bone near wolves to attract them. Use the “Place” key on the wolf 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. +This is a crafting component dropped from dead blazes.=Il s'agit d'un composant d'artisanat lâché par 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 @@ -76,19 +76,19 @@ 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 Can be placed on animals to ride them=Peut être placé sur les animaux pour les monter -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. +Saddles can be put on some animals in order to mount them.=Les selles peuvent être posées sur certains animaux afin de les monter. Use the placement key with the saddle in your hand to try to 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 using the placement key on them again.=Utilisez la touche de placement avec la selle à la main pour essayer de mettre la selle. Les selles conviennent aux chevaux, mulets, ânes et cochons. Les chevaux, les mulets et les ânes doivent d'abord être apprivoisés, sinon ils rejetteront la selle. Les animaux sellés peuvent être montés en utilisant à nouveau la touche de placement. 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. +Shulker shells are used in crafting. They are dropped from dead shulkers.=Les carapaces Shulker sont utilisés dans l'artisanat. Elles sont lâchées par des 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. +Slimeballs are used in crafting. They are dropped from slimes.=Les boules de slime sont utilisées dans l'artisanat. Elles sont lâchése par les Slimes. Gunpowder=Poudre à canon Carrot on a Stick=Carotte sur un Batôn Lets you ride a saddled pig=Vous permet de monter un cochon sellé 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. \ No newline at end of file +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-la 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. \ No newline at end of file From 75ef4c065f5750e2d74327512ade3bb58f254cc5 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 17:07:57 +0000 Subject: [PATCH 105/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fmobspawners/locale/mcl=5Fmobspawners.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correction --- mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr index f008ad836..85349a580 100644 --- a/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr +++ b/mods/ITEMS/mcl_mobspawners/locale/mcl_mobspawners.fr.tr @@ -1,5 +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. +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 éclairé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.=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 +Makes mobs appear=Fait apparaître des mobs From 4cf52aada6b635b9a2b0301136ea672b4e2d82c8 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 17:27:23 +0000 Subject: [PATCH 106/521] mcl_mushroom.fr.tr Translation --- .../mcl_mushroom/locale/mcl_mushroom.fr.tr | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.fr.tr diff --git a/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.fr.tr b/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.fr.tr new file mode 100644 index 000000000..e301a8b8a --- /dev/null +++ b/mods/ITEMS/mcl_mushroom/locale/mcl_mushroom.fr.tr @@ -0,0 +1,23 @@ +# textdomain: mcl_mushroom + +Warped Fungus Mushroom=Champignon tordu +Twisting Vines=Liane tordue +Nether Sprouts=Racines du nether +Warped Roots=Racines tordues +Warped Wart Block=Bloc de verrues tordu +Shroomlight=Champilampe +Warped Hyphae=Tige tordue +Warped Nylium=Nylium tordu +Warped Checknode - only to check!=Bloc de vérification tordu - seulement pour vérifier ! +Warped Hyphae Wood=Planches tordues +Warped Stair=Escalier tordu +Warped Slab=Dalle tordue +Crimson Fungus Mushroom=Champignon écarlate +Crimson Roots=Racines écarlates +Crimson Hyphae=Tige écarlate +Crimson Hyphae Wood=Planches écarlates +Crimson Stair=Escalier écarlate +Crimson Slab=Dalle écarlate +Double Crimson Slab=Dalle double écarlate +Crimson Nylium=Nylium écarlate +Crimson Checknode - only to check!=Bloc de vérification écarlate - seulement pour vérifier ! \ No newline at end of file From e783d77beec6046d5dcdf6de4118375799dbd206 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 17:32:52 +0000 Subject: [PATCH 107/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fmushrooms/locale/mcl=5Fmushrooms.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.fr.tr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.fr.tr b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.fr.tr index 647b36443..1a1f6a999 100644 --- a/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.fr.tr +++ b/mods/ITEMS/mcl_mushrooms/locale/mcl_mushrooms.fr.tr @@ -1,11 +1,11 @@ # 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 blocks are the cap parts of huge red mushrooms. It consists of a red skin and can have pores on each of its sides.=Les blocs de champignons rouges géants sont les parties du chapeau d'énormes champignons rouges. Ils se composent d'une peau rouge et peuvent avoir des pores sur chacun de leurs côtés. +The stem part of a huge red mushroom.=La 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. +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. Ils se composent d'une peau brune et peuvent avoir des pores sur chacun de leurs 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 @@ -18,7 +18,7 @@ This mushroom can be placed on mycelium and podzol at any light level. It can al 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. +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 quelques 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 +Grows on podzol, mycelium and other blocks=Pousse sur le podzol, mycélium et d'autres blocs Spreads in darkness=Se propage dans l'obscurité From 1fb5874a6982dfadfca05593a8774083c3ccc82f Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 17:40:59 +0000 Subject: [PATCH 108/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fnether/locale/mcl=5Fnether.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr b/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr index 3e3583355..ade56c167 100644 --- a/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr +++ b/mods/ITEMS/mcl_nether/locale/mcl_nether.fr.tr @@ -1,39 +1,39 @@ # 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. +Glowstone is a naturally-glowing block which is home to the Nether.=La Pierre Lumineuse est un bloc naturellement brillant originaire du 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. +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 de la netherrack 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. +Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.=La netherrack est un bloc de pierre originaire du 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. +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 d'avoir 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. +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 marcher que 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=Bloc de Briques du Nether Red Nether Brick Block=Bloc de Briques Rouges 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 verrues du Nether est un bloc purement décoratif fabriqué à partir de verrue du Nether. +A nether wart block is a purely decorative block made from nether wart.=Un bloc de verrues du Nether est un bloc purement décoratif fabriqué à partir de verrues 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. +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 lumineuses brisées. Elle est principalement utilisée 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=Brique 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 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 +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. +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 soit originaire du Nether, elle se développe dans toutes les dimensions. +Premature Nether Wart (Stage 2)=Verrue du Nether prématurée (étape 2) +Premature Nether Wart (Stage 3)=Verrue du Nether prématurée (étape 3) +Mature Nether Wart=Verrue du Nether 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. Elle est prête à être récoltée. 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. +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 originaires du Nether. Elles peuvent être plantées 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 From 9d10b38b3ad09b056a16d9ed2076be526adfd521 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 17:46:09 +0000 Subject: [PATCH 109/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Focean/locale/mcl=5Focean.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections --- mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr index a1b3f0b77..cc58aa898 100644 --- a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.fr.tr @@ -1,8 +1,8 @@ # 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ù. +Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Les lanternes aquatiques 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 is used as a building block. It slowly changes its color.=La prismarine est utilisée comme bloc de construction. Elle change lentement de couleur. Prismarine Bricks=Prismarine Taillée Dark Prismarine=Prismarine Sombre Prismarine Crystals=Cristaux de Prismarine @@ -41,12 +41,12 @@ 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. +Kelp grows inside water on top of dirt, sand or gravel.=Les algues poussent à 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. +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, elle mourra, ainsi que le bloc de corail en dessous. +Seagrass grows inside water on top of dirt, sand or gravel.=Les herbes 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 est un 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 @@ -55,5 +55,5 @@ 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 +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 existent 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 de plus en plus brillant. \ No newline at end of file From ac12357595ef8851c2fe32f08c30244e03583228 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 17:55:25 +0000 Subject: [PATCH 110/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fportals/locale/mcl=5Fportals.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correction --- mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr b/mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr index 4b2598b13..fac73b324 100644 --- a/mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr +++ b/mods/ITEMS/mcl_portals/locale/mcl_portals.fr.tr @@ -1,15 +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!). +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 de l'End (et les ramène !). 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. +End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.=Les cadres de portail de l'End sont utilisés dans la construction de portails d'End. Chaque bloc a un emplacement 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! +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!=Un portail du Nether téléporte des créatures et des objets dans la dimension brûlante et dangereuse du Nether (et les ramène !). Entrez à vos risques et périls ! 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'Overworld. 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 at least 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 d'au moins 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 d'obsidienne. Les portails du Nether ne fonctionnent que dans l'Overworld et le Nether. +Obsidian is also used as the frame of Nether portals.=L'obsidienne est également utilisée comme cadre des portails du Nether. +To open a Nether portal, place an upright frame of obsidian with a width of at least 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'au moins 4 blocs de largeur et 5 blocs de hauteur, ne laissant que de l'air au centre. Après avoir placé ce cadre, allumez un feu dans le cadre d'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 \ No newline at end of file From 6aae704e4751cd42c152dac999bb671eb3b0fdd2 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:04:04 +0000 Subject: [PATCH 111/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fpotions/locale/mcl=5Fpotions.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit corrections, cohérence --- .../ITEMS/mcl_potions/locale/mcl_potions.fr.tr | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr index f3850a7b6..085aa40ec 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.fr.tr @@ -13,7 +13,7 @@ Liquid container=Récipient de liquide 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, use 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). +To collect water, use 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 (ce qui enlève un niveau d'eau) ou toute source d'eau (ce 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. @@ -21,11 +21,11 @@ Water bottles can be used to fill cauldrons. Drinking water has no effect.=Les b 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. 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. +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. Les boire n'a aucun effet. 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. -Splash Water Bottle=Bouteille d'eau jetable +Splash Water Bottle=Bouteille d'eau éclaboussante Extinguishes fire and hurts some mobs=Éteint le feu et blesse certains mobs A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=Une bouteille d'eau jetable qui se brisera à l'impact, où elle éteint le feu à proximité et blesse les mobs vulnérables à l'eau. @@ -46,29 +46,29 @@ Drinking a potion gives you a particular effect.=Boire une potion vous donne un 1 HP/@1s | @2=1 HP/@1s | @2 @1 HP=@1 HP @1 Potion=Potion @1 -Splash @1 Potion=Potion @1 jetable +Splash @1 Potion=Potion @1 éclaboussante Lingering @1 Potion=Potion @1 persistante Arrow of @1=Flêche de @1 II= II IV= IV @1 Potion@2=@1 Potion@2 -Splash @1@2 Potion=Potion @1@2 jetable +Splash @1@2 Potion=Potion @1@2 éclaboussante Lingering @1@2 Potion=Potion @1@2 persistante Arrow of @1@2=Flêche de @1@2 @1 + Potion=@1 + Potion -Splash @1 + Potion=Potion @1 + jetable +Splash @1 + Potion=Potion @1 + éclaboussante Lingering @1 + Potion=Potion @1 + persistante Arrow of @1 +=Flêche de @1 + Awkward Potion=Potion étrange -Awkward Splash Potion=Potion étrange jetable +Awkward Splash Potion=Potion étrange éclaboussante Awkward Lingering Potion=Potion étrange persistante Has an awkward taste and is used for brewing potions.=A un goût étrange et est utilisé pour préparer des potions. Mundane Potion=Potion banale -Mundane Splash Potion=Potion banale jetable +Mundane Splash Potion=Potion banale éclaboussante Mundane Lingering Potion=Potion banale persistante Has a terrible taste and is not useful for brewing potions.=A un goût terrible et n'est pas utile pour préparer des potions. Thick Potion=Potion épaisse -Thick Splash Potion=Potion épaisse jetable +Thick Splash Potion=Potion épaisse éclaboussante Thick Lingering Potion=Potion épaisse persistante Has a bitter taste and is not useful for brewing potions.=A un goût amer et n'est pas utile pour préparer des potions. Dragon's Breath=Souffle du dragon From 87f9ef7bc9b7e74a9137ad980b2b4385f188e829 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:12:13 +0000 Subject: [PATCH 112/521] mcl_shields.fr.tr french translation --- .../mcl_shields/locale/mcl_shields.fr.tr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/ITEMS/mcl_shields/locale/mcl_shields.fr.tr diff --git a/mods/ITEMS/mcl_shields/locale/mcl_shields.fr.tr b/mods/ITEMS/mcl_shields/locale/mcl_shields.fr.tr new file mode 100644 index 000000000..ad2bf0902 --- /dev/null +++ b/mods/ITEMS/mcl_shields/locale/mcl_shields.fr.tr @@ -0,0 +1,19 @@ +# textdomain: mcl_shields +Shield=Bouclier +A shield is a tool used for protecting the player against attacks.=Le bouclier est un outil utilisé pour protéger le joueur contre les attaques. +White Shield=Bouclier blanc +Grey Shield=Bouclier gris +Light Grey Shield=Bouclier gris clair +Black Shield=Bouclier noir +Red Shield=Bouclier rouge +Yellow Shield=Bouclier jaune +Green Shield=Bouclier vert +Cyan Shield=Bouclier cyan +Blue Shield=Bouclier bleu +Magenta Shield=Bouclier magenta +Orange Shield=Bouclier orange +Purple Shield=Bouclier violet +Brown Shield=Bouclier marron +Pink Shield=Bouclier rose +Lime Shield=Bouclier vert clair +Light Blue Shield=Bouclier bleu clair \ No newline at end of file From d690cd7f10652a084b91e6be7aa0a0aa9efa5440 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:14:55 +0000 Subject: [PATCH 113/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fsigns/locale/mcl=5Fsigns.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit reformulation --- mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr b/mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr index 158640dae..e37e06f47 100644 --- a/mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr +++ b/mods/ITEMS/mcl_signs/locale/mcl_signs.fr.tr @@ -1,6 +1,6 @@ # 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. +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 afficher des inscriptions 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 From 38acffbd4ae83dc5713649ac407164fc326214c6 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:18:29 +0000 Subject: [PATCH 114/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fsponges/locale/mcl=5Fsponges.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit corrections --- mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr index 58dd74bee..723c12333 100644 --- a/mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr +++ b/mods/ITEMS/mcl_sponges/locale/mcl_sponges.fr.tr @@ -4,7 +4,7 @@ Sponges are blocks which remove water around them when they are placed or come i 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. +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 gorgée d'eau de rivière. Elle 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 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 +Can be dried in furnace=Peut être séchée au four From 60cecd577ccab7dca609752a2fa6552c13b3a6bf Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:34:16 +0000 Subject: [PATCH 115/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fstairs/locale/mcl=5Fstairs.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://fr.wikipedia.org/wiki/Granite with an e in french --- mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr index 4892122f6..049e2f990 100644 --- a/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr +++ b/mods/ITEMS/mcl_stairs/locale/mcl_stairs.fr.tr @@ -1,7 +1,7 @@ # 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. +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 équivalent bloc complet et occupent la partie inférieure ou supérieure d'un bloc, selon la façon dont elle a été placée. 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 @@ -30,9 +30,9 @@ 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 Granit -Granite Slab=Dalle en Granit -Double Granite Slab=Double Dalle en Granit +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 @@ -90,9 +90,9 @@ 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 Granite Slab=Dalle en Granite Poli +Double Polished Granite Slab=Double Dalle en Granite Poli +Polished Granite Stairs=Escalier en Granite Poli Polished Diorite Slab=Dalle en Diorite Polie Double Polished Diorite Slab=Double Dalle en Diorite Polie Polished Diorite Stairs=Escalier en Diorite Polie From fb0b495690408cd0b1d963e13576be3c01ed68f2 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:39:14 +0000 Subject: [PATCH 116/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fthrowing/locale/mcl=5Fthrowing.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit correction --- mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr index bd78c031e..b08066a4b 100644 --- a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.fr.tr @@ -2,11 +2,11 @@ @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. +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 à la main ou à 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. +Ender Pearl=Perle d'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.=Une Perle d'Ender est un objet qui peut être utilisé pour la téléportation au détriment de la santé. Elle peut être lancée et téléporter le lanceur vers son emplacement d'atterissage lorsqu'elle 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 +Teleports you on impact for cost of 5 HP=Vous téléporte au point d'impact pour un coût de 5 PV From e99ecf2b620f9a7c4c1400228f1e6a623537f8d9 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:42:03 +0000 Subject: [PATCH 117/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Ftnt/locale/mcl=5Ftnt.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit correction --- mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr index b5cba53bf..bef9f0db1 100644 --- a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.fr.tr @@ -3,6 +3,6 @@ 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. +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ée 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 From dcf383c327053a58d8896ba77b64edae31d1cc70 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:47:50 +0000 Subject: [PATCH 118/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Ftools/locale/mcl=5Ftools.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit correction --- mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr b/mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr index 02cd7f2bd..a30f8c0a1 100644 --- a/mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr +++ b/mods/ITEMS/mcl_tools/locale/mcl_tools.fr.tr @@ -1,14 +1,14 @@ # 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. +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 donneront des éléments utiles. 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ées sont bien meilleures. 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. +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. Elles peuvent également être utilisées 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. +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 obtenus sont différentes pour quelques blocs. Wooden Pickaxe=Pioche en Bois Stone Pickaxe=Pioche en Pierre Iron Pickaxe=Pioche en Fer From 5344848526d3956350f43744e1e3694e9d959b00 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:50:32 +0000 Subject: [PATCH 119/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fwalls/locale/mcl=5Fwalls.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GRANITE with an e --- mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr b/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr index 445c8f7b3..878058790 100644 --- a/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr +++ b/mods/ITEMS/mcl_walls/locale/mcl_walls.fr.tr @@ -3,13 +3,13 @@ A piece of wall. It cannot be jumped over with a simple jump. When multiple of t Cobblestone Wall=Muret de Pierres Mossy Cobblestone Wall=Muret de Pierres Moussu Andesite Wall=Muret d'Andésite -Granite Wall=Muret de Granit +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 +Mossy Stone Brick Wall=Muret de Pierre Taillée Moussue Prismarine Wall=Muret de Prismarine End Stone Brick Wall=Muret de Brique de l'End Nether Brick Wall=Muret de Brique du Nether From 87a800fb67d81bee20e5de4068f118fff196b239 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:51:41 +0000 Subject: [PATCH 120/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fwool/locale/mcl=5Fwool.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit correction --- mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr b/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr index 6b93eab08..2509325ce 100644 --- a/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr +++ b/mods/ITEMS/mcl_wool/locale/mcl_wool.fr.tr @@ -34,4 +34,4 @@ 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. -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. +Carpets are thin floor covers which come in many different colors.=Les tapis sont des revêtements de sol minces qui existent dans de nombreuses couleurs différentes. From d4e017a292a0203d57a92f6573589d1fb64dc768 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:52:53 +0000 Subject: [PATCH 121/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mclx=5Fcore/locale/mclx=5Fcore.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mclx_core/locale/mclx_core.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mclx_core/locale/mclx_core.fr.tr b/mods/ITEMS/mclx_core/locale/mclx_core.fr.tr index eaabebecf..55acd8af3 100644 --- a/mods/ITEMS/mclx_core/locale/mclx_core.fr.tr +++ b/mods/ITEMS/mclx_core/locale/mclx_core.fr.tr @@ -1,5 +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 +River Water=Eau de rivière Flowing River Water=Eau de rivière qui coule From be10380aeddaa185205071ce09d566a299e1634d Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:54:08 +0000 Subject: [PATCH 122/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mclx=5Ffences/locale/mclx=5Ffences.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cohérence --- mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr index 244b588c1..77d38d2c6 100644 --- a/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr @@ -1,4 +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 +Red Nether Brick Fence Gate=Portillon en Brique Rouge du Nether +Nether Brick Fence Gate=Portillon en Brique du Nether From a6d47198f3784ef6baac234325a5a1de73520f5e Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:56:24 +0000 Subject: [PATCH 123/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mclx=5Fstairs/locale/mclx=5Fstairs.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cohérence --- mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr index 98becd492..f8f86b1a1 100644 --- a/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr +++ b/mods/ITEMS/mclx_stairs/locale/mclx_stairs.fr.tr @@ -1,21 +1,21 @@ # textdomain: mclx_stairs Oak Bark Stairs=Escalier en écorse de Chêne -Oak Bark Slab=Plaque d'écorce de Chêne +Oak Bark Slab=Dalle 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 +Acacia Bark Slab=Dalle 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 +Spruce Bark Slab=Dalle 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 +Birch Bark Slab=Dalle 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 +Jungle Bark Slab=Dalle 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 +Dark Oak Bark Slab=Dalle 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 From 3254b513aec48b814ff7d1a9ac30fde89c7b265a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 18:59:04 +0000 Subject: [PATCH 124/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/xpanes/locale/xpanes.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/xpanes/locale/xpanes.fr.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/xpanes/locale/xpanes.fr.tr b/mods/ITEMS/xpanes/locale/xpanes.fr.tr index 6b2fe43f3..7cb4aa867 100644 --- a/mods/ITEMS/xpanes/locale/xpanes.fr.tr +++ b/mods/ITEMS/xpanes/locale/xpanes.fr.tr @@ -1,8 +1,8 @@ # 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. +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 voisines 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 voisines lorsque vous les construisez. Elles 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. +Iron bars neatly connect to their neighbors as you build them.=Les barres de fer se connectent parfaitement à leurs voisines lorsque vous les construisez. Glass Pane=Vitre Stained Glass Pane=Vitre Teintée Red Stained Glass Pane=Vitre Teintée Rouge From a37f244c93c447921697e5318813da5b4efc4dee Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:01:53 +0000 Subject: [PATCH 125/521] template.txt --- mods/CORE/mcl_explosions/locale/template.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/CORE/mcl_explosions/locale/template.txt diff --git a/mods/CORE/mcl_explosions/locale/template.txt b/mods/CORE/mcl_explosions/locale/template.txt new file mode 100644 index 000000000..656b444f9 --- /dev/null +++ b/mods/CORE/mcl_explosions/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain:mcl_explosions +@1 was caught in an explosion.= \ No newline at end of file From 4a803db66c1cd47631ec1f04add41bfde8e4f9a1 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:03:55 +0000 Subject: [PATCH 126/521] mcl_explosions.fr.tr correction --- mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr diff --git a/mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr b/mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr new file mode 100644 index 000000000..afa5e8261 --- /dev/null +++ b/mods/CORE/mcl_explosions/locale/mcl_explosions.fr.tr @@ -0,0 +1,2 @@ +# textdomain:mcl_explosions +@1 was caught in an explosion.=@1 est mort(e) dans une explosion \ No newline at end of file From b4a454b825c7ac554b9b53d26db18762ce31fe30 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:08:35 +0000 Subject: [PATCH 127/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ENTIT?= =?UTF-8?q?IES/mcl=5Fboats/locale/mcl=5Fboats.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr index 785d50146..91be07c32 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr @@ -9,4 +9,4 @@ 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. Use [Sneak] to leave the boat, 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. Utilisez [Sneak] pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet. Spruce Boat=Bateau en Sapin Water vehicle=Véhicule aquatique -Sneak to dismount= \ No newline at end of file +Sneak to dismount=S'accroupir (sneak) pour descendre \ No newline at end of file From e56a25854de9936ea6dd8a8062f0b131bad62b71 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:27:30 +0000 Subject: [PATCH 128/521] template.txt --- mods/ENTITIES/mcl_falling_nodes/locale/template.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/template.txt 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 000000000..2e7b446fc --- /dev/null +++ b/mods/ENTITIES/mcl_falling_nodes/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_falling_nodes +@1 was smashed by a falling anvil.= +@1 was smashed by a falling block.= \ No newline at end of file From 8eccbe1170805ab4b184e7bb3512002d191ea23c Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:29:27 +0000 Subject: [PATCH 129/521] mcl_falling_nodes.fr.tr --- mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.fr.tr 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 000000000..115dcb0a5 --- /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. +@1 was smashed by a falling block.=@1 a été écrasé par un bloc. \ No newline at end of file From 69a294330e7c2359b1555e839e49c97182c8d662 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:40:39 +0000 Subject: [PATCH 130/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ENTIT?= =?UTF-8?q?IES/mcl=5Fminecarts/locale/mcl=5Fminecarts.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mcl_minecarts/locale/mcl_minecarts.fr.tr | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr index 67ed5eb1b..318e28d03 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr @@ -5,32 +5,32 @@ Minecarts only ride on rails and always follow the tracks. At a T-junction with 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. +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. La TNT est allumée 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 le wagonnet avec la TNT, frappez-les tout en maintenant la touche furtive [Sneak] enfoncée. Vous ne pouvez pas faire cela si la TNT a été allumée. +A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Un 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 pour 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 avec le four, frappez-les tout en maintenant la touche furtive [Sneak] 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 Hopper=Wagonnet avec Entonnoir 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é +Powered Rail=Rail alimenté 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. +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. Les 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 le wagonnet, 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. +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âbles 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é -Sneak to dismount= \ No newline at end of file +Sneak to dismount=S'accroupir [Sneak] pour descendre \ No newline at end of file From f927ec0b1a0fd4bbe8a4c2c71112664ec8ca1230 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:43:28 +0000 Subject: [PATCH 131/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ENTIT?= =?UTF-8?q?IES/mcl=5Fmobs/locale/mcl=5Fmobs.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr index 96ac6a817..89b09ab10 100644 --- a/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr +++ b/mods/ENTITIES/mcl_mobs/locale/mcl_mobs.fr.tr @@ -6,6 +6,6 @@ You need the “maphack” privilege to change the mob spawner.=Vous avez besoin 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! +Only peaceful mobs allowed!=Seuls les mobs pacifiques sont autorisés! Give names to mobs=Donne des noms aux mobs Set name at anvil=Définir le nom sur l'enclume From cd695e828077efeb45bf58a9c02c09fd1acb3005 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:54:13 +0000 Subject: [PATCH 132/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ENTIT?= =?UTF-8?q?IES/mobs=5Fmc/locale/mobs=5Fmc.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr b/mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr index 4c8bd562d..74d664659 100644 --- a/mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr +++ b/mods/ENTITIES/mobs_mc/locale/mobs_mc.fr.tr @@ -1,7 +1,7 @@ # 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. +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é(e) 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 @@ -58,7 +58,7 @@ Iron horse armor can be worn by horses to increase their protection from harm a 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. +Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Une armure de cheval en diamant 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 @@ -73,4 +73,4 @@ 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 +Protects you from death while wielding it=Vous protège de la mort en le maniant From 49bb074ed5df45b8bf9eb70928d01fc4f3190ad2 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:57:06 +0000 Subject: [PATCH 133/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ENVIR?= =?UTF-8?q?ONMENT/lightning/locale/lightning.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ENVIRONMENT/lightning/locale/lightning.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/locale/lightning.fr.tr b/mods/ENVIRONMENT/lightning/locale/lightning.fr.tr index 18c61d51c..96c5dc9fa 100644 --- a/mods/ENVIRONMENT/lightning/locale/lightning.fr.tr +++ b/mods/ENVIRONMENT/lightning/locale/lightning.fr.tr @@ -1,4 +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 +@1 was struck by lightning.=@1 a été frappé(e) par la foudre. +Let lightning strike at the specified position or yourself=Fait frapper la foudre à la position spécifiée ou sur vous-même No position specified and unknown player=Aucune position spécifiée et joueur inconnu From 1d690a117b497741077930d62af17002eba09c1d Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 19:58:09 +0000 Subject: [PATCH 134/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ENVIR?= =?UTF-8?q?ONMENT/mcl=5Fvoid=5Fdamage/locale/mcl=5Fvoid=5Fdamage.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 515d1c999..747e9be39 100644 --- a/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.fr.tr +++ b/mods/ENVIRONMENT/mcl_void_damage/locale/mcl_void_damage.fr.tr @@ -1,3 +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. +@1 fell into the endless void.=@1 est tombé(e) dans le vide sans fin. From 0e27b751c078a5f97d829b9797b66a2db55bd5b9 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 20:14:35 +0000 Subject: [PATCH 135/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HELP/?= =?UTF-8?q?doc/doc=5Fitems/locale/doc=5Fitems.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HELP/doc/doc_items/locale/doc_items.fr.tr | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) 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 824ceeeba..cf0ea1aff 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.fr.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr @@ -18,7 +18,7 @@ A transparent block, basically empty space. It is usually left behind after digg 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 +Building this block is completely silent.=Construire ce bloc est complètement silencieux 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. @@ -42,9 +42,9 @@ 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. +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 habituelle ; le combat au corps à corps et le minage ne sont soit pas possibles 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 habituelle ; le combat au corps à corps et le minage ne sont soit pas possibles 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 habituelle ; le combat au corps à corps et le minage ne sont soit pas possibles ou fonctionnent différemment. Range: @1=Portée : @1 # Range: () Range: @1 (@2)=Portée : @1 (@2) @@ -53,47 +53,47 @@ Range: 4=Portée : 4 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%. +The fall damage on this block is increased by @1%.=Les dommages de chute sur ce bloc sont augmentés de @1%. +The fall damage on this block is reduced by @1%.=Les dommages 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 destroyed by any mining tool immediately.=Ce bloc peut être détruit par 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 par 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 causes a damage of @1 hit point per second.=Ce bloc cause des dommages de @1 point de vie par seconde. +This block causes a damage of @1 hit points per second.=Ce bloc cause des dommages 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 decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Ce bloc réduit votre souffle et cause des dommages 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 dommages 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 glows faintly with a light level of @1.=Ce bloc brille faiblement 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érents bâtiments. 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 negates all fall damage.=Ce bloc annule tous les dommages 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 a falling block ends up inside it.=Ce bloc se transformera en objet lorsqu'un autre bloc lui 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 drop the following items when mined: @1.=Ce bloc donnera les objets suivants lorsque miné : @1. +This block will drop the following when mined: @1×@2.=Ce bloc donnera les objets suivants lorsque miné : @1×@2. +This block will drop the following when mined: @1.=Ce bloc donnera les objets suivants lorsque miné : @1. +This block will drop the following when mined: @1.=Ce bloc donnera les objets suivants 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é : From fcd0e19f76ae45d6de234a0d4a89c906d0d2b91b Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 20:19:37 +0000 Subject: [PATCH 136/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HELP/?= =?UTF-8?q?doc/doc/locale/doc.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HELP/doc/doc/locale/doc.fr.tr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HELP/doc/doc/locale/doc.fr.tr b/mods/HELP/doc/doc/locale/doc.fr.tr index f7f33b0f5..2e92fd0a8 100644 --- a/mods/HELP/doc/doc/locale/doc.fr.tr +++ b/mods/HELP/doc/doc/locale/doc.fr.tr @@ -29,7 +29,7 @@ No categories have been registered, but they are required to provide help.=Aucun 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. +Open a window providing help entries about Minetest and more=Ouvrir 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. @@ -41,7 +41,7 @@ This category does not have any entries.=Cette catégorie ne contient aucune pag 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 a category yet. Please choose one in the category list first.=Vous n'avez pas encore choisi de catégorie. Veuillez 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 From 713b44906dc95e1f2d570c336c828d2adc898b3b Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 20:28:28 +0000 Subject: [PATCH 137/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HELP/?= =?UTF-8?q?mcl=5Fdoc/locale/mcl=5Fdoc.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HELP/mcl_doc/locale/mcl_doc.fr.tr | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.fr.tr b/mods/HELP/mcl_doc/locale/mcl_doc.fr.tr index 90e0c9b0e..13a0de2b3 100644 --- a/mods/HELP/mcl_doc/locale/mcl_doc.fr.tr +++ b/mods/HELP/mcl_doc/locale/mcl_doc.fr.tr @@ -2,14 +2,14 @@ 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. +This block acts as a soil for all saplings.=Ce bloc agit comme un sol pour toutes les pousses d'arbres. +This block acts as a soil for some saplings.=Ce bloc agit comme un sol pour certaines pousses d'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 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, elle doit avoir une vue dégagée sur le ciel au-dessus ou être exposée à 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, elle doit avoir une vue dégagée sur le ciel au-dessus ou être exposée à 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. @@ -48,9 +48,9 @@ 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. +This block drops itself when mined by shears.=Ce bloc se laisse tomber lorsqu'il est miné avec une 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: +This blocks drops the following when mined by shears: @1=Ce bloc laisse tomber les choses suivantes lorsqu'il est miné avec une cisaille: , =, • Shears=• Cisailles • Sword=• Epées @@ -58,7 +58,7 @@ This blocks drops the following when mined by shears: @1=Ce bloc laisse tomber l 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. +This tool is capable of mining.=Cet outil est capable de miner. Mining speed: @1=Vitesse de minage: @1 Painfully slow=Péniblement lent Very slow=Très lent From f4007350025d317e7761054cd7ed11cdd81bb881 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 20:53:52 +0000 Subject: [PATCH 138/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HELP/?= =?UTF-8?q?mcl=5Fdoc=5Fbasics/locale/mcl=5Fdoc=5Fbasics.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.fr.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 92e5e8f63..8630ab4ab 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 @@ -29,10 +29,10 @@ How to play:=Comment jouer: • 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! +• Continue playing as you wish. There's no goal. Have fun!=• Continuez à jouer comme vous le souhaitez. Il n'y a aucun but. Amusez 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. +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 envoyé dans un monde immense fait de cubes ou de blocs. Ces cubes forment généralement le paysage. Ces 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 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 . @@ -173,7 +173,7 @@ Blocks can have a wide range of different properties which determine mining time 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: +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 un "drop" 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é From 0f3f42f801e15211777f37741c22c8613ecaf828 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 20:56:21 +0000 Subject: [PATCH 139/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HELP/?= =?UTF-8?q?mcl=5Ftt/locale/mcl=5Ftt.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HELP/mcl_tt/locale/mcl_tt.fr.tr | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.fr.tr b/mods/HELP/mcl_tt/locale/mcl_tt.fr.tr index a66311448..ca4c6d292 100644 --- a/mods/HELP/mcl_tt/locale/mcl_tt.fr.tr +++ b/mods/HELP/mcl_tt/locale/mcl_tt.fr.tr @@ -36,7 +36,7 @@ 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 +Extremely fast=Extrèmement rapide Fast=Rapide Slow=Lent Very slow=Très lent @@ -45,3 +45,4 @@ 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 +Durability: @1=Durabilité : @1 \ No newline at end of file From 510f98b523d7b92a63ec2e7c8a813ee49cb2acd3 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:06:23 +0000 Subject: [PATCH 140/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HUD/a?= =?UTF-8?q?wards/locale/awards.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HUD/awards/locale/awards.fr.tr | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/HUD/awards/locale/awards.fr.tr b/mods/HUD/awards/locale/awards.fr.tr index c227a9c07..2f2a78b68 100644 --- a/mods/HUD/awards/locale/awards.fr.tr +++ b/mods/HUD/awards/locale/awards.fr.tr @@ -11,15 +11,15 @@ (Secret Award)=(Récompense Secrètte) = = -A Cat in a Pop-Tart?!=A Cat in a Pop-Tart?! +A Cat in a Pop-Tart?!=Un chat beurré ?! Achievement gotten!=Succès obtenu ! Achievement gotten:=Succès obtenu : Achievement gotten: @1=Succès obtenu : @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 +Craft: @1×@2=Fabrication: @1×@2 +Craft: @1=Fabrication: @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 @@ -59,3 +59,6 @@ Invalid action.=Action invalide. Player is not online.=Le joueur n'est pas en ligne. Done.=Terminé. Achievement “@1” does not exist.=Le succès «@1» n'existe pas. +@1 has made the achievement @2=@1 a obtenu le succès @2 +Mine a block: @1= Miner un bloc : @1 +Mine blocks: @1×@2= Miner des blocs : @1×@2 \ No newline at end of file From 8402c490b343a3381de852937fdaa32783f24b9d Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:07:47 +0000 Subject: [PATCH 141/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HUD/h?= =?UTF-8?q?udbars/locale/hudbars.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HUD/hudbars/locale/hudbars.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/hudbars/locale/hudbars.fr.tr b/mods/HUD/hudbars/locale/hudbars.fr.tr index b31b7b0c1..b207e50dd 100644 --- a/mods/HUD/hudbars/locale/hudbars.fr.tr +++ b/mods/HUD/hudbars/locale/hudbars.fr.tr @@ -1,6 +1,6 @@ # textdomain: hudbars Health=Santé -Breath=Breath +Breath=Respiration # Default format string for progress bar-style HUD bars, e.g. “Health 5/20” @1: @2/@3=@1: @2/@3 From 37d285edc505989b70b9a1585afc91fc9a546e31 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:12:05 +0000 Subject: [PATCH 142/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HUD/m?= =?UTF-8?q?cl=5Fachievements/locale/mcl=5Fachievements.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr index ae4941d2e..0896bcf36 100644 --- a/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr @@ -16,7 +16,7 @@ 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. +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 vagabond à 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 From 08dd32508777c0647fb952c6b40089db5151604e Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:18:16 +0000 Subject: [PATCH 143/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HUD/m?= =?UTF-8?q?cl=5Fdeath=5Fmessages/locale/mcl=5Fdeath=5Fmessages.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Doesn't match the template ? --- mods/HUD/mcl_death_messages/locale/mcl_death_messages.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 05cf99976..8c83238e7 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.fr.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.fr.tr @@ -56,4 +56,4 @@ A ghast scared @1 to death.=Un ghast a éffrayé @1 à mort. @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 -@1 was slain by @2.= +@1 was slain by @2.=@1 a été tué par @2 From 87c7a95703e61beb24e609039395de5192c67087 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:25:13 +0000 Subject: [PATCH 144/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/MISC/?= =?UTF-8?q?findbiome/locale/findbiome.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/MISC/findbiome/locale/findbiome.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MISC/findbiome/locale/findbiome.fr.tr b/mods/MISC/findbiome/locale/findbiome.fr.tr index 0fc6aa578..89e6019de 100644 --- a/mods/MISC/findbiome/locale/findbiome.fr.tr +++ b/mods/MISC/findbiome/locale/findbiome.fr.tr @@ -6,5 +6,5 @@ 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. +No biomes.=Aucun biome. Not supported. The “biomeinfo” mod is required for v6 mapgen support!=Non supporté. Le mod «biomeinfo» est requis pour le support de mapgen v6! From e4b20c8abb457f15768c1fe333bc3e8da538dc08 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:28:11 +0000 Subject: [PATCH 145/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/MISC/?= =?UTF-8?q?mcl=5Fcommands/locale/mcl=5Fcommands.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/MISC/mcl_commands/locale/mcl_commands.fr.tr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr b/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr index e83913264..1223c24ec 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr @@ -20,7 +20,7 @@ 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! -@1[]= -Set game mode for player or yourself= -Error: No game mode specified.= +Only peaceful mobs allowed!=Seuls les mobs pacifiques sont autorisés! +@1[]=@1[] +Set game mode for player or yourself=Choisir le mode de jeu pour vous ou pour les joueurs +Error: No game mode specified.=Erreur : mode de jeu non spécifié. From 9916c26d0faee28b0981e37955c0c3290ee19a44 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:39:31 +0000 Subject: [PATCH 146/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/PLAYE?= =?UTF-8?q?R/mcl=5Fhunger/locale/mcl=5Fhunger.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr index 811868b3a..b69a4ea9f 100644 --- a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.fr.tr @@ -3,6 +3,6 @@ Food=Nourriture Saturation=Saturation %s: %.1f/%d=%s: %.1f/%d -Exhaust.=Échappement. +Exhaust.=Épuisement. %s: %d/%d=%s: %d/%d @1 starved to death.=@1 est mort de faim. From acd02c9a5f013d4a442fc9cf6db096047a205de2 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:47:12 +0000 Subject: [PATCH 147/521] template.txt --- mods/PLAYER/mcl_playerplus/locale/template.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/PLAYER/mcl_playerplus/locale/template.txt diff --git a/mods/PLAYER/mcl_playerplus/locale/template.txt b/mods/PLAYER/mcl_playerplus/locale/template.txt new file mode 100644 index 000000000..52222c4fa --- /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.= \ No newline at end of file From d8bd5ecb4c4c90d813f47046b23f4fa8eede53a0 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:50:21 +0000 Subject: [PATCH 148/521] Ajouter 'mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr' --- mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr 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 000000000..a50f97ec8 --- /dev/null +++ b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.fr.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_playerplus +@1 suffocated to death.=@1 est mort(e) etouffé(e). +@1 was prickled to death by a cactus.=@1 a été piqué(e) à mort par un cactus. \ No newline at end of file From 55ec5d2702a6d76ea8ce5be3884dc6f61d465606 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:53:11 +0000 Subject: [PATCH 149/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/PLAYE?= =?UTF-8?q?R/mcl=5Fskins/locale/mcl=5Fskins.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr index 146c6be5f..97d570ef7 100644 --- a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr @@ -2,13 +2,13 @@ [] []=[] [] 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'apparence des autres joueurs! +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'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) +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 : @ +Name: @1=Nom : @1 From 6a3ff4c7fbc1e2ad275408006839bb72ce19a82b Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 19 Feb 2022 21:56:58 +0000 Subject: [PATCH 150/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/PLAYE?= =?UTF-8?q?R/mcl=5Fskins/locale/mcl=5Fskins.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr index 97d570ef7..d38f907ff 100644 --- a/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr +++ b/mods/PLAYER/mcl_skins/locale/mcl_skins.fr.tr @@ -5,9 +5,9 @@ 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'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)= +Your skin has been set to: @1=Votre apparence a été définie en : @1 +Your skin has been set to: @1 (@2)=Votre apparence a été définie en : @1 (@2) +Skin of @1 set to: @2 (@3)=Apparence de @1 definie en : @2 (@3) Select player skin:=Sélectionner l'apparence du joueur : @1 (@2)=@1 (@2) Name: @1=Nom : @1 From 7c3b0fcfc38a1bf90e23bffc0f646c0940b072c5 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 20 Feb 2022 03:31:36 +0400 Subject: [PATCH 151/521] Append irl time to map hash id --- mods/ITEMS/mcl_maps/init.lua | 2 +- mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr | 5 ++++- mods/ITEMS/mcl_maps/mod.conf | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index 314d91688..413e7382a 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -33,7 +33,7 @@ function mcl_maps.create_map(pos) local itemstack = ItemStack("mcl_maps:filled_map") local meta = itemstack:get_meta() - local id = string.format("%.0f", minetest.hash_node_position(minp)) + local id = string.format("%.0f-%.0f", minetest.hash_node_position(minp), mcl_time.get_seconds_irl()) meta:set_string("mcl_maps:id", id) meta:set_string("mcl_maps:minp", minetest.pos_to_string(minp)) meta:set_string("mcl_maps:maxp", minetest.pos_to_string(maxp)) diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr index 9ef7cd5c5..1808e839d 100644 --- a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr @@ -1,5 +1,8 @@ # 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). +Rightclick to create a filled map (which can't be stacked anymore).=Clic droit pour créer une carte remplie (qui ne peut plus être empilée). Map=Carte +Shows a map image.=Affiche une carte. +When created, the map saves the nearby area as an image that can be viewed any time by holding the map.=Lors de sa création, la carte sauvegarde le terrain proche sous forme d'image qui peut être consultée n'importe quand en tenant la carte dans la main. +Hold the map in your hand. This will display a map on your screen.=Tenez la carte dans votre main. Cela affichera la carte à l'écran. diff --git a/mods/ITEMS/mcl_maps/mod.conf b/mods/ITEMS/mcl_maps/mod.conf index 7275471b2..efe1708dd 100644 --- a/mods/ITEMS/mcl_maps/mod.conf +++ b/mods/ITEMS/mcl_maps/mod.conf @@ -1,2 +1,2 @@ name = mcl_maps -depends = mcl_core, mcl_flowers, tt, mcl_colors, mcl_skins, mcl_util +depends = mcl_core, mcl_flowers, tt, mcl_colors, mcl_skins, mcl_util, mcl_time From a6341374362d5f53b368d74eb426e215343c3ddd Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 20 Feb 2022 03:36:53 +0400 Subject: [PATCH 152/521] Round seconds and fix minor error in mcl_time --- mods/CORE/mcl_time/README.md | 2 +- mods/CORE/mcl_time/init.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/CORE/mcl_time/README.md b/mods/CORE/mcl_time/README.md index 24a4cd1cd..0fda96ad3 100644 --- a/mods/CORE/mcl_time/README.md +++ b/mods/CORE/mcl_time/README.md @@ -1,4 +1,4 @@ -# mcl_time v2.0 +# mcl_time v2.1 ## by kay27 for MineClone 5 --------------------------- This mod counts time when all players sleep or some area is inactive. diff --git a/mods/CORE/mcl_time/init.lua b/mods/CORE/mcl_time/init.lua index 2d7e93f9e..c4077b1fc 100644 --- a/mods/CORE/mcl_time/init.lua +++ b/mods/CORE/mcl_time/init.lua @@ -61,10 +61,10 @@ local function get_seconds_irl() next_save_seconds_irl = seconds_irl + save_to_storage_interval end - return seconds_irl + return math.floor(seconds_irl) end -local seconds_irl_public = get_seconds_irl() +seconds_irl_public = get_seconds_irl() function mcl_time.get_seconds_irl() return seconds_irl_public From 5ec7c5d246fa6a610912dccc6bb996c06f173a50 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 20 Feb 2022 04:35:46 +0400 Subject: [PATCH 153/521] Fix minor bug in mcl_time --- mods/CORE/mcl_time/README.md | 2 +- mods/CORE/mcl_time/init.lua | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/CORE/mcl_time/README.md b/mods/CORE/mcl_time/README.md index 0fda96ad3..ff4263f3f 100644 --- a/mods/CORE/mcl_time/README.md +++ b/mods/CORE/mcl_time/README.md @@ -1,4 +1,4 @@ -# mcl_time v2.1 +# mcl_time v2.2 ## by kay27 for MineClone 5 --------------------------- This mod counts time when all players sleep or some area is inactive. diff --git a/mods/CORE/mcl_time/init.lua b/mods/CORE/mcl_time/init.lua index c4077b1fc..5a3a2487a 100644 --- a/mods/CORE/mcl_time/init.lua +++ b/mods/CORE/mcl_time/init.lua @@ -102,7 +102,7 @@ function mcl_time.get_number_of_times_at_pos(pos, interval, chance) local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) meta:set_int(meta_name, seconds_irl_public) - local number_of_times = (last_time == 0) and 0 or get_number_of_times(last_time, interval, chance) + local number_of_times = (last_time <= 0) and 0 or get_number_of_times(last_time, interval, chance) return number_of_times end @@ -125,7 +125,7 @@ function mcl_time.get_irl_seconds_passed_at_pos(pos) local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) meta:set_int(meta_name, seconds_irl_public) - local irl_seconds_passed = (last_time == 0) and 0 or (seconds_irl_public - last_time) + local irl_seconds_passed = (last_time <= 0) and 0 or (seconds_irl_public - last_time) return irl_seconds_passed end @@ -135,7 +135,7 @@ function mcl_time.get_irl_seconds_passed_at_pos_or_1(pos) local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) meta:set_int(meta_name, seconds_irl_public) - local irl_seconds_passed = (last_time == 0) and 1 or (seconds_irl_public - last_time) + local irl_seconds_passed = (last_time <= 0) and 1 or (seconds_irl_public - last_time) return irl_seconds_passed end @@ -145,7 +145,7 @@ function mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) local meta = minetest.get_meta(pos) local last_time = meta:get_int(meta_name) meta:set_int(meta_name, seconds_irl_public) - if last_time == 0 then return end + if last_time <= 0 then return end local delta_time = seconds_irl_public - last_time if delta_time <= 0 then return end return delta_time From e155db8f9e305093d5f3dd512aebe288df716365 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 20 Feb 2022 04:39:28 +0400 Subject: [PATCH 154/521] Fix a crash --- mods/ITEMS/mcl_enchanting/engine.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 97a176b97..1b672aea4 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -509,7 +509,7 @@ function mcl_enchanting.show_enchanting_formspec(player) .. "real_coordinates[true]" .. "image[3.15,0.6;7.6,4.1;mcl_enchanting_button_background.png]" local itemstack = inv:get_stack("enchanting_item", 1) - local player_levels = mcl_experience.get_level(player) + local player_levels = mcl_experience.get_level(player) or 0 local y = 0.65 local any_enchantment = false local table_slots = mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves) From ae63e32048170e949c960d6e77c6fbcb2bfc3de9 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 20 Feb 2022 06:21:40 +0400 Subject: [PATCH 155/521] Add Breaking Changes: gamemode changes fly and noclip; chunksize set to 8 --- minetest.conf | 4 +++ mods/MAPGEN/mcl_mapgen_core/biomes.lua | 1 + mods/MAPGEN/mcl_mapgen_core/init.lua | 2 -- mods/MAPGEN/mcl_mapgen_core/nether.lua | 1 + mods/MISC/mcl_commands/gamemode.lua | 47 ++++++++++++++++++++++++++ mods/MISC/mcl_commands/init.lua | 2 ++ 6 files changed, 55 insertions(+), 2 deletions(-) diff --git a/minetest.conf b/minetest.conf index 97d1f5cd6..22270e9c2 100644 --- a/minetest.conf +++ b/minetest.conf @@ -36,6 +36,10 @@ mgvalleys_spflags = noaltitude_chill,noaltitude_dry,nohumid_rivers,vary_river_de # Probably values >10 won't work because of numerous overridings. Type: int. max_block_generate_distance = 13 +# Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes). +# type: int +chunksize = 8 + # MCL2-specific stuff keepInventory = false diff --git a/mods/MAPGEN/mcl_mapgen_core/biomes.lua b/mods/MAPGEN/mcl_mapgen_core/biomes.lua index d50f4da56..16a19f160 100644 --- a/mods/MAPGEN/mcl_mapgen_core/biomes.lua +++ b/mods/MAPGEN/mcl_mapgen_core/biomes.lua @@ -1,3 +1,4 @@ +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_top_snow = minetest.get_content_id("mcl_core:snow") local c_snow_block = minetest.get_content_id("mcl_core:snowblock") diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index e628321f0..f8a5d1b53 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -60,8 +60,6 @@ local flat = mcl_mapgen.flat -- Content IDs local c_bedrock = minetest.get_content_id("mcl_core:bedrock") -local c_dirt = minetest.get_content_id("mcl_core:dirt") -local c_dirt_with_grass = minetest.get_content_id("mcl_core:dirt_with_grass") local c_void = minetest.get_content_id("mcl_core:void") local c_lava = minetest.get_content_id("mcl_core:lava_source") diff --git a/mods/MAPGEN/mcl_mapgen_core/nether.lua b/mods/MAPGEN/mcl_mapgen_core/nether.lua index 1b05d32bf..ec75c80a2 100644 --- a/mods/MAPGEN/mcl_mapgen_core/nether.lua +++ b/mods/MAPGEN/mcl_mapgen_core/nether.lua @@ -5,6 +5,7 @@ local mcl_mushrooms = minetest.get_modpath("mcl_mushrooms") local c_water = minetest.get_content_id("mcl_core:water_source") local c_stone = minetest.get_content_id("mcl_core:stone") local c_sand = minetest.get_content_id("mcl_core:sand") +local c_dirt = minetest.get_content_id("mcl_core:dirt") local c_soul_sand = minetest.get_content_id("mcl_nether:soul_sand") local c_netherrack = minetest.get_content_id("mcl_nether:netherrack") diff --git a/mods/MISC/mcl_commands/gamemode.lua b/mods/MISC/mcl_commands/gamemode.lua index bd24a7685..8d720e21d 100644 --- a/mods/MISC/mcl_commands/gamemode.lua +++ b/mods/MISC/mcl_commands/gamemode.lua @@ -32,8 +32,17 @@ minetest.is_creative_enabled = function(name) return core_is_creative_enabled(name) end +local registered_functions_on_gamemode_change = {} + local function handle_gamemode_command(player_name, new_gamemode) + local old_gamemode_id = player_to_gamemode_id[player_name] + local old_gamemode = old_gamemode_id and id_to_gamemode[old_gamemode_id] player_to_gamemode_id[player_name] = gamemode_ids[new_gamemode] + if old_gamemode ~= new_gamemode then + for _, function_ref in pairs(registered_functions_on_gamemode_change) do + function_ref(player_name, old_gamemode, new_gamemode) + end + end return true end @@ -78,3 +87,41 @@ minetest.register_chatcommand("gamemode", { end end }) + +local action_id_to_index = {} + +function mcl_commands.register_on_gamemode_change(action_id, function_ref) + if action_id_to_index[action_id] then + minetest.log("warning", "[mcl_command] [gamemode] Duplicate register_on_gamemode_change action_id") + return + end + local new_index = #registered_functions_on_gamemode_change + 1 + registered_functions_on_gamemode_change[new_index] = function_ref + action_id_to_index[action_id] = new_index +end + +function mcl_commands.unregister_on_gamemode_change(action_id) + local old_index = action_id_to_index[action_id] + if not old_index then + minetest.log("warning", "[mcl_command] [gamemode] Can't unregister not registered action_id in unregister_on_gamemode_change") + return + end + table.remove(registered_functions_on_gamemode_change, old_index) + action_to_id[action_id] = nil +end + +mcl_commands.register_on_gamemode_change("check_fly_and_noclip", function(player_name, old_gamemode, new_gamemode) + if new_gamemode == "creative" then + local privs = minetest.get_player_privs(player_name) + if not privs then return end + privs.fly = true + privs.noclip = true + minetest.set_player_privs(player_name, privs) + elseif new_gamemode == "survival" then + local privs = minetest.get_player_privs(player_name) + if not privs then return end + privs.fly = nil + privs.noclip = nil + minetest.set_player_privs(player_name, privs) + end +end) diff --git a/mods/MISC/mcl_commands/init.lua b/mods/MISC/mcl_commands/init.lua index b6b07fb22..1fd5ecc3c 100644 --- a/mods/MISC/mcl_commands/init.lua +++ b/mods/MISC/mcl_commands/init.lua @@ -1,3 +1,5 @@ +mcl_commands = {} + local modpath = minetest.get_modpath(minetest.get_current_modname()) dofile(modpath.."/gamemode.lua") From b518bfd5c2e248f70f38dc5d049b8daa7fab503d Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 20 Feb 2022 06:24:30 +0400 Subject: [PATCH 156/521] #198 Fix a crash, step 27 --- mods/HUD/mcl_title/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 2ea1571c8..905707be4 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -157,13 +157,14 @@ function mcl_title.set(player, type, data) end function mcl_title.remove(player, type) - if player then + if player and mcl_util and mcl_util.is_player(player) then player:hud_change(huds_idx[type][player], "text", "") --player:hud_change(huds_idx[type][player], "style", 0) --no styling end end function mcl_title.clear(player) + if not mcl_util or not mcl_util.is_player(player) then return end mcl_title.remove(player, "title") mcl_title.remove(player, "subtitle") mcl_title.remove(player, "actionbar") From 63193638ed85d893c41890e6460a3740ee3fa1c6 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 20 Feb 2022 06:54:31 +0400 Subject: [PATCH 157/521] Add noise/chunk border indicator switch into settingtypes --- .../MAPGEN/mcl_structures/noise_indicator.lua | 37 ++++++++++++------- mods/MAPGEN/mcl_structures/structures.lua | 2 +- settingtypes.txt | 4 +- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/mods/MAPGEN/mcl_structures/noise_indicator.lua b/mods/MAPGEN/mcl_structures/noise_indicator.lua index 7cc130358..3845e5784 100644 --- a/mods/MAPGEN/mcl_structures/noise_indicator.lua +++ b/mods/MAPGEN/mcl_structures/noise_indicator.lua @@ -1,5 +1,4 @@ local step = 1 -local chunk_borders = false local levels = { [-9] = "black", @@ -31,21 +30,24 @@ local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_le local noise_offset_x_and_z = math_floor(mcl_mapgen.CS_NODES/2) mcl_mapgen.register_mapgen(function(minp, maxp, seed, vm_context) - local y0 = minp.y - for x0 = minp.x, maxp.x, step do - for z0 = minp.z, maxp.z, step do - local current_noise_level = mcl_structures_get_perlin_noise_level({x = x0 - noise_offset_x_and_z, y = y0, z = z0 - noise_offset_x_and_z}) - local amount - if current_noise_level < 0 then - amount = math_max(math_ceil(current_noise_level * 9), -9) - else - amount = math_min(math_floor(current_noise_level * 9), 9) + if minetest.settings:get_bool("mcl_debug_struct_noise", false) then + local y0 = minp.y + for x0 = minp.x, maxp.x, step do + for z0 = minp.z, maxp.z, step do + local current_noise_level = mcl_structures_get_perlin_noise_level({x = x0 - noise_offset_x_and_z, y = y0, z = z0 - noise_offset_x_and_z}) + local amount + if current_noise_level < 0 then + amount = math_max(math_ceil(current_noise_level * 9), -9) + else + amount = math_min(math_floor(current_noise_level * 9), 9) + end + local y0 = maxp.y - 9 + amount + minetest.set_node({x=x0, y=y0, z=z0}, {name = "mcl_core:glass_"..levels[amount]}) end - local y0 = maxp.y - 9 + amount - minetest.set_node({x=x0, y=y0, z=z0}, {name = "mcl_core:glass_"..levels[amount]}) end end - if chunk_borders then + + if minetest.settings:get_bool("mcl_debug_chunk_borders", false) then for x0 = minp.x, maxp.x, step do for y0 = minp.y, maxp.y, step do minetest.set_node({x=x0, y=y0, z=maxp.z}, {name = "mcl_core:glass"}) @@ -56,5 +58,12 @@ mcl_mapgen.register_mapgen(function(minp, maxp, seed, vm_context) minetest.set_node({x=maxp.x, y=y0, z=z0}, {name = "mcl_core:glass"}) end end + for z0 = minp.z, maxp.z, step do + for x0 = minp.x, maxp.x, step do + minetest.set_node({x=x0, y=maxp.y, z=z0}, {name = "mcl_core:glass"}) + end + end + if not minetest.settings:get_bool("mcl_debug_struct_noise", false) then + end end -end, -1) +end, 999999999999) diff --git a/mods/MAPGEN/mcl_structures/structures.lua b/mods/MAPGEN/mcl_structures/structures.lua index fd6b21b26..b18904d9a 100644 --- a/mods/MAPGEN/mcl_structures/structures.lua +++ b/mods/MAPGEN/mcl_structures/structures.lua @@ -11,7 +11,7 @@ if not mcl_mapgen.singlenode then dofile(modpath .. "/ice_spike_large.lua") dofile(modpath .. "/jungle_temple.lua") dofile(modpath .. "/nice_jungle_temple.lua") - -- dofile(modpath .. "/noise_indicator.lua") + dofile(modpath .. "/noise_indicator.lua") dofile(modpath .. "/stronghold.lua") dofile(modpath .. "/witch_hut.lua") end diff --git a/settingtypes.txt b/settingtypes.txt index 44bea1122..dca03b7e1 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -167,4 +167,6 @@ kick_threshold (Cheat Kicking Threshold) int 10 [Debugging] # If enabled, this will show the itemstring of an item in the description. -mcl_item_id_debug (Item ID Debug) bool false \ No newline at end of file +mcl_item_id_debug (Item ID Debug) bool false +mcl_debug_struct_noise (Show Structures Perlin Noise) bool false +mcl_debug_chunk_borders (Show Chunk Borders) bool false From 5053f0070b23cecda9a6e30849d4bc3272523623 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sun, 20 Feb 2022 11:39:43 +0800 Subject: [PATCH 158/521] Fix typos in translation --- mods/HUD/awards/locale/awards.ru.tr | 16 +-- .../locale/mcl_achievements.ru.tr | 4 +- .../locale/mcl_death_messages.ru.tr | 108 +++++++++--------- .../locale/mesecons_noteblock.ru.tr | 2 +- mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr | 4 +- mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr | 2 +- mods/ITEMS/mcl_books/locale/mcl_books.ru.tr | 4 +- mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr | 2 +- .../mcl_brewing/locale/mcl_brewing.ru.tr | 4 +- .../mcl_compass/locale/mcl_compass.ru.tr | 4 +- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 28 ++--- mods/ITEMS/mcl_end/locale/mcl_end.ru.tr | 2 +- mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr | 8 +- 13 files changed, 94 insertions(+), 94 deletions(-) diff --git a/mods/HUD/awards/locale/awards.ru.tr b/mods/HUD/awards/locale/awards.ru.tr index 6f6d40f4d..ffda88eb4 100644 --- a/mods/HUD/awards/locale/awards.ru.tr +++ b/mods/HUD/awards/locale/awards.ru.tr @@ -20,10 +20,10 @@ All your awards and statistics have been cleared. You can now start again.=Ва Awards=Награды Craft: @1×@2=Скрафчено: @1×@2 Craft: @1=Скрафчено: @1 -Die @1 times.=Умер @1 раз(а). +Die @1 times.=Умер @1 раз. Die.=Погибните. Get the achievements statistics for the given player or yourself=Получение статистики и достижений для заданного игрока или для себя -Join the game @1 times.=Присоединился к игре @1 раз(а). +Join the game @1 times.=Присоединился к игре @1 раз. Join the game.=Присоединитесь к игре. List awards in chat (deprecated)=Вывести список наград в чат (устаревшее). Place a block: @1=Разметил блок: @1 @@ -41,15 +41,15 @@ You have enabled your achievements.=Вы включили ваши достиж You have not gotten any awards.=Вы пока не получали наград. You've disabled awards. Type /awards enable to reenable.=Вы отключили награды. Выполните /awards enable, чтобы включить их обратно. [c|clear|disable|enable]=[c|clear - очистить|disable - отключить|enable - включить] -OK=ОК -Error: No awards available.=Ошибка: Нет доступных наград +OK=Окей +Error: No awards available.=Ошибка: нет доступных наград Eat: @1×@2=Съедено: @1×@2 Eat: @1=Съедено: @1 @1/@2 eaten=@1/@2 съедено -Place @1 block(s).=Поместил @1 блок(а,ов). -Dig @1 block(s).=Выкопал @1 блок(а,ов). -Eat @1 item(s).=Съел @1 предмет(а,ов). -Craft @1 item(s).=Скрафтил @1 предмет(а,ов). +Place @1 block(s).=Поместил @1 блоков. +Dig @1 block(s).=Выкопал @1 блоков. +Eat @1 item(s).=Съел @1 предметов. +Craft @1 item(s).=Скрафтил @1 предметов. Can give achievements to any player=Может выдавать достижения любому игроку (grant ( | all)) | list=(grant <игрок> (<достижение> | all - всем)) | список Give achievement to player or list all achievements=Выдать достижение игроку или отобразить все достижения diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.ru.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.ru.tr index 559ed3adb..0c3f50ca5 100644 --- a/mods/HUD/mcl_achievements/locale/mcl_achievements.ru.tr +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.ru.tr @@ -3,7 +3,7 @@ Aquire Hardware=Куй железо... Bake Bread=Хлеб насущный Benchmarking=Рабочий стол Cow Tipper=Мясник -Craft a bookshelf.=Скрафтите книжную полку +Craft a bookshelf.=Скрафтите книжную полку. Craft a cake using wheat, sugar, milk and an egg.=Скрафтите торт из пшеницы, сахара, молока и яйца. Craft a crafting table from 4 wooden planks.=Скрафтите верстак из 4 досок. Craft a stone pickaxe using sticks and cobblestone.=Скрафтите каменную кирку из палок и булыжников. @@ -14,7 +14,7 @@ Dispense With This=Раздайте с этим Eat a cooked porkchop.=Съешьте приготовленную свинину. Eat a cooked rabbit.=Съешьте приготовленную крольчатину. Get really desperate and eat rotten flesh.=Отчайтесь и съешьте гнилое мясо. -Getting Wood=Нарубить дров +Getting Wood=Нарубить древесины Getting an Upgrade=Обновка! Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Попадите по скелету, скелету-иссушителю или страннику стрелой из лука на расстоянии не менее 20 метров. Hot Topic=Жаркая тема diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.ru.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.ru.tr index b71e4bbfa..21e1bc642 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.ru.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.ru.tr @@ -1,55 +1,55 @@ # textdomain: mcl_death_messages -@1 went up in flames=@1 сгорел в языках пламени -@1 walked into fire whilst fighting @2=@1 вошел в огонь, сражаясь с @2 -@1 was struck by lightning=В @1 попала молния -@1 was struck by lightning whilst fighting @2=В @1 попала молния, пока он сражался с @2 -@1 burned to death=@1 сгорел заживо -@1 was burnt to a crisp whilst fighting @2=@1 обгорел до углей, пока сражался с @2 -@1 tried to swim in lava=@1 попытался поплавать в лаве -@1 tried to swim in lava to escape @2=@1 попытался переплыть лаву, убегая от @2 -@1 discovered the floor was lava=@1 узнал что пол это лава -@1 walked into danger zone due to @2=@1 вошел в опасную зону благодаря @2 -@1 suffocated in a wall=@1 задохнулся в стене -@1 suffocated in a wall whilst fighting @2=@1 задохнулся в стене, пока -@1 drowned=@1 утонул -@1 drowned whilst trying to escape @2=@1 утонул, убегая от @2 -@1 starved to death=@1 умер от голода -@1 starved to death whilst fighting @2=@1 умер от голода, пока сражался с @2 -@1 was pricked to death=@1 был заколот до смерти -@1 walked into a cactus whilst trying to escape @2=@1 прошелся по кактусу, убегая от @2 -@1 hit the ground too hard=@1 слишком сильно ударился об землю -@1 hit the ground too hard whilst trying to escape @2=@1 слишком сильно ударился об землю, убегая от @2 -@1 experienced kinetic energy=@1 испытал на себе кинетическую энергию -@1 experienced kinetic energy whilst trying to escape @2=@1 испытал на себе кинетическую энергию, убегая от @2 -@1 fell out of the world=@1 выпал из мира -@1 didn't want to live in the same world as @2=@1 не захотел жить в том же мире, что и @2 -@1 died=@1 погиб -@1 died because of @2=@1 погиб из-за @2 -@1 was killed by magic=@1 был убит магией -@1 was killed by magic whilst trying to escape @2=@1 был убит магией, убегая от @2 -@1 was killed by @2 using magic=@1 был убит @2 с помощью магии -@1 was killed by @2 using @3=@1 был убит @2 с помощью @3 -@1 was roasted in dragon breath=@1 поджарился в драконьем дыхании -@1 was roasted in dragon breath by @2=@1 поджарился в драконьем дыхании благодаря @2 -@1 withered away=@1 иссох -@1 withered away whilst fighting @2=@1 иссох, пока сражался с @2 -@1 was shot by a skull from @2=@1 был застрелен @2 -@1 was squashed by a falling anvil=@1 был раздавлен падающей наковальней -@1 was squashed by a falling anvil whilst fighting @2=@1 был раздавлен падающей наковальней, пока сражался с @2 -@1 was squashed by a falling block=@1 был раздавлен падающим блоком -@1 was squashed by a falling block whilst fighting @2=@1 был раздавлен падающим блоком, пока сражался с @2 -@1 was slain by @2=@1 погиб от @2 -@1 was slain by @2 using @3=@2 убил @1 с помощью своего @3 -@1 was shot by @2=@1 был застрелен @2 -@1 was shot by @2 using @3=@2 застрелил @1 с помощью своего @3 -@1 was fireballed by @2=@1 получил файерболом от @2 -@1 was fireballed by @2 using @3=@1 получил файерболом от @2 из @3 -@1 was killed trying to hurt @2=@1 погиб, пытаясь навредить @2 -@1 was killed by @3 trying to hurt @2=@1 убит @3, пытаясь навредить @2 -@1 blew up=@1 взорвался -@1 was blown up by @2=@1 был взорван @2 -@1 was blown up by @2 using @3=@1 был взорван @2 с помощью @3 -@1 was squished too much=@1 был слишком сильно сдавлен -@1 was squashed by @2=@1 был слишком сильно сдавлен благодаря @2 -@1 went off with a bang=@1 отошел в мир иной под звуки салюта -@1 went off with a bang due to a firework fired from @3 by @2=@1 отошел в мир иной под звуки салюта, выпущенного из @3 игроком @2 \ No newline at end of file +@1 went up in flames=@1 сгорел(а) в языках пламени +@1 walked into fire whilst fighting @2=@1 прошёлся(лась) по огню, сражаясь с @2 +@1 was struck by lightning=@1 был(а) убит(а) молнией +@1 was struck by lightning whilst fighting @2=@1 был(а) убит(а) молнией, сражаясь с @2 +@1 burned to death=@1 сгорел(а) заживо +@1 was burnt to a crisp whilst fighting @2=@1 обгорел(а) до углей, сражаясь с @2 +@1 tried to swim in lava=@1 попытался(ась) поплавать в лаве +@1 tried to swim in lava to escape @2=@1 попытался(ась) переплыть лаву, убегая от @2 +@1 discovered the floor was lava=@1 узнал(а) что пол это лава +@1 walked into danger zone due to @2=@1 прогулялся(лась) в опасной зоне, благодаря @2 +@1 suffocated in a wall=@1 задохнулся(ась) в стене +@1 suffocated in a wall whilst fighting @2=@1 задохнулся(ась) в стене, сражаясь с @2 +@1 drowned=@1 утонул(а) +@1 drowned whilst trying to escape @2=@1 утонул(а), убегая от @2 +@1 starved to death=@1 умер(ла) от голода +@1 starved to death whilst fighting @2=@1 умер(ла) от голода, сражаясь с @2 +@1 was pricked to death=@1 был(а) заколот(а) до смерти +@1 walked into a cactus whilst trying to escape @2=@1 задел(а) кактус, убегая от @2 +@1 hit the ground too hard=@1 слишком сильно ударился(ась) об землю +@1 hit the ground too hard whilst trying to escape @2=@1 слишком сильно ударился(ась) об землю, убегая от @2 +@1 experienced kinetic energy=@1 испытал(а) на себе кинетическую энергию +@1 experienced kinetic energy whilst trying to escape @2=@1 испытал(а) на себе кинетическую энергию, убегая от @2 +@1 fell out of the world=@1 выпал(а) из мира +@1 didn't want to live in the same world as @2=@1 не захотел(а) жить в том же мире, что и @2 +@1 died=@1 погиб(ла) +@1 died because of @2=@1 погиб(ла) из-за @2 +@1 was killed by magic=@1 был(а) убит(а) магией +@1 was killed by magic whilst trying to escape @2=@1 был(а) убит(а) магией, убегая от @2 +@1 was killed by @2 using magic=@1 был(а) убит(а) @2 с помощью магии +@1 was killed by @2 using @3=@1 был(а) убит(а) @2 с помощью @3 +@1 was roasted in dragon breath=@1 поджарился(ась) в драконьем дыхании +@1 was roasted in dragon breath by @2=@1 поджарился(ась) в драконьем дыхании, благодаря @2 +@1 withered away=@1 иссох(ла) +@1 withered away whilst fighting @2=@1 иссох(ла), сражаясь с @2 +@1 was shot by a skull from @2=@1 был(а) застрелен(а) @2 +@1 was squashed by a falling anvil=@1 раздавлен(а) падающей наковальней +@1 was squashed by a falling anvil whilst fighting @2=@1 раздавлен(а) падающей наковальней, сражаясь с @2 +@1 was squashed by a falling block=@1 раздавлен(а) падающим блоком +@1 was squashed by a falling block whilst fighting @2=@1 раздавлен(а) падающим блоком, сражаясь с @2 +@1 was slain by @2=@1 погиб(ла) от @2 +@1 was slain by @2 using @3=@2 убил(а) @1 с помощью своего @3 +@1 was shot by @2=@1 был(а) застрелен @2 +@1 was shot by @2 using @3=@2 застрелил(а) @1 с помощью своего @3 +@1 was fireballed by @2=@1 получил(а) файерболом от @2 +@1 was fireballed by @2 using @3=@1 получил(а) файерболом от @2 из @3 +@1 was killed trying to hurt @2=@1 погиб(ла), пытаясь навредить @2 +@1 was killed by @3 trying to hurt @2=@1 убит(а) @3, пытаясь навредить @2 +@1 blew up=@1 взорвался(ась) +@1 was blown up by @2=@1 был(а) взорван(а) @2 +@1 was blown up by @2 using @3=@1 был(а) взорван(а) @2 с помощью @3 +@1 was squished too much=@1 был(а) слишком сильно сдавлен(а) +@1 was squashed by @2=@1 был(а) слишком сильно сдавлен(а), благодаря @2 +@1 went off with a bang=@1 попал(а) в мир иной под звуки салюта +@1 went off with a bang due to a firework fired from @3 by @2=@1 попал(а) в мир иной под звуки салюта, выпущенного из @3 игроком @2 \ No newline at end of file diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.ru.tr b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.ru.tr index d8a3faeb4..e4ae47316 100644 --- a/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_noteblock/locale/mesecons_noteblock.ru.tr @@ -8,7 +8,7 @@ Use the note block to choose the next musical note (there are 25 semitones, or 2 • Sand or gravel: Snare drum=• Песок или гравий: барабан • Anything else: Piano=• Что-либо другое: фортепиано • Block of Gold: Bell=• Золотой блок: колокол -• Clay: Flute=• Блок шлины: флейта +• Clay: Flute=• Блок глины: флейта • Packed Ice: Chime=• Плотный лёд: звон • Wool: Guitar=• Шерсть: гитара • Bone Block: Xylophne=• Костный блок: ксилофон diff --git a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr index 5f7f29442..ad5aa0e7a 100644 --- a/mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr +++ b/mods/ITEMS/mcl_anvils/locale/mcl_anvils.ru.tr @@ -7,8 +7,8 @@ The anvil allows you to repair tools and armor, and to give names to items. It h 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.=Для переименования положите стопку предметов в один отсек, второй оставьте пустым. Наберите имя, нажмите [Enter] или “Дать имя” и заберите переименованные предметы из выходного отсека. 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.=• Инструмент + Инструмент: Положите два инструмента одного типа во входные слоты. Прочность отремонтированного инструмента будет равно сумме прочностей каждого из них, плюс еще 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%.=• Инструмент + Материал: Некоторые инструменты можно также ремонтировать, добавляя к ним предмет, из которого они сделаны. Например, железные кирки ремонтируются добавлением слитков железа. Таким способом инструмент восстанавливается на 25%. +• 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.=• Инструмент + Инструмент: положите два инструмента одного типа во входные слоты. Прочность отремонтированного инструмента будет равна сумме прочностей каждого из них, плюс еще 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%.=• Инструмент + Материал: некоторые инструменты можно также ремонтировать, добавляя к ним предмет, из которого они сделаны. Например, железные кирки ремонтируются добавлением слитков железа. Таким способом инструмент восстанавливается на 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.=Наковальня имеет ограниченный срок службы и 3 уровня износа: новая, повреждённая, сильно повреждённая. Каждый раз, ремонтируя или переименовывая что-либо, вы имеете 12-процентный шанс повредить наковальню. Наковальни также могут повреждаться, когда они падают с высоте более 1 блока. Если сильно повреждённая наковальня повреждается снова, то она уничтожается. Slightly Damaged Anvil=Повреждённая наковальня diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr index 53d901852..85e582cd4 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.ru.tr @@ -25,7 +25,7 @@ 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 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.=Новая точка возрождения успешно задана! Но спать вы можете только ночью или во время грозы. diff --git a/mods/ITEMS/mcl_books/locale/mcl_books.ru.tr b/mods/ITEMS/mcl_books/locale/mcl_books.ru.tr index 5bfe9f77d..6aac7c8d3 100644 --- a/mods/ITEMS/mcl_books/locale/mcl_books.ru.tr +++ b/mods/ITEMS/mcl_books/locale/mcl_books.ru.tr @@ -10,7 +10,7 @@ by @1=игрока @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.=Удерживая книгу в руке, кликните правой кнопкой мыши, чтобы прочитать текущие записи и отредактировать их. Вы можете редактировать текст когда и сколько угодно. Вы также можете подписать книгу, что превратит её в подписанную книгу, её можно будет уложить в стопку с другими такими же, но больше нельзя будет редактировать. +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.=Книга может содержать до 4500 символов. Длина названия ограничена 64 символами. Enter book title:=Введите название книги by @1=игрока @1 @@ -23,6 +23,6 @@ Written books contain some text written by someone. They can be read and copied, 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.=Книжные полки используют в качестве декорации +Bookshelves are used for decoration.=Книжные полки используют в качестве декораций Book and Quill=Книга с пером Write down some notes=Сделайте какие-нибудь записи diff --git a/mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr b/mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr index f7bff45d4..ef6136239 100644 --- a/mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr +++ b/mods/ITEMS/mcl_bows/locale/mcl_bows.ru.tr @@ -1,7 +1,7 @@ # 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.=Стрела, выпущенная из лука, обычно наносит урон 1-9. При полном натяжении есть 20% шанс критического удара с уроном 10. Стрела из раздатчика всегда наносит урон 3. +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.=Стрела, выпущенная из лука, обычно наносит урон 1-9. При полном натяжении есть шанс в 20% для критического удара с уроном 10. Стрела из раздатчика всегда наносит урон 3. 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=Лук diff --git a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr index ce9c69fa2..170cb4133 100644 --- a/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr +++ b/mods/ITEMS/mcl_brewing/locale/mcl_brewing.ru.tr @@ -2,8 +2,8 @@ Brewing Stand=Варочная стойка Inventory=Инвентарь To use a brewing stand, rightclick it.=Кликните правой кнопкой мыши, чтобы использовать варочный стенд. -To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Для приготовления зелья вам понадобится огненный порошок в качестве топлива, материал и как минимум 1 стеклянная бутылка, наполненная жидкостью. -Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Поместите огненный порошок в левый слот, ингредиент в средний слот и 1-3 бутылки в оставшиеся слоты. +To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Для приготовления зелья вам понадобится огненный порошок в качестве топлива, варочный материал и как минимум 1 стеклянный пузырёк, наполненная жидкостью. +Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Поместите огненный порошок в левый слот, варочный материал в средний слот и 1-3 пузырька в оставшиеся слоты. When you have found a good combination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=Когда вы подберёте хорошую комбинацию, варка зелья начнётся автоматически — появится пар и начнётся расход топлива и материала. Зелья вскоре будут готовы. Different combinations of brewing materials and liquids will give different results. Try to experiment!=Разные сочетания варочных материалов и жидкостей будут давать разные результаты. Поэкспериментируйте! The stand allows you to brew potions!=Стойка позволяет вам варить зелья! diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.ru.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.ru.tr index 4f5e464aa..dadf20c7d 100644 --- a/mods/ITEMS/mcl_compass/locale/mcl_compass.ru.tr +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.ru.tr @@ -1,4 +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.=Компас - инструмент, показывающий на центр мира (X@=0, Z@=0) или на точку возрождения в Верхнем Мире. +Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn point in the Overworld.=Компас - инструмент, показывающий на начало мира (X@=0, Z@=0) или на точку возрождения в Верхнем Мире. Compass=Компас -Points to the world origin=Указывает на центр мира +Points to the world origin=Указывает на начало мира diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index 61cad0de6..5929828f8 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -1,8 +1,8 @@ # textdomain: mcl_core -@1 could not survive in lava.=@1 не смог выжить в лаве. -@1 died in lava.=@1 погиб в лаве. -@1 melted in lava.=@1 расплавился в лаве. -@1 took a bath in a hot lava tub.=@1 принял ванну с горячей лавой. +@1 could not survive in lava.=@1 не смог(ла) выжить в лаве. +@1 died in lava.=@1 погиб(ла) в лаве. +@1 melted in lava.=@1 был(а) расплавлен(а) в лаве. +@1 took a bath in a hot lava tub.=@1 принял(а) ванну с горячей лавой. 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.=Золотой блок это, прежде всего, декоративный блок, но он также удобен для компактного хранения золотых слитков. @@ -16,7 +16,7 @@ A piece of ladder which allows you to climb vertically. Ladders can only be plac Acacia Bark=Кора акации Acacia Leaves=Листва акации Acacia Sapling=Саженец акации -Acacia Wood=Бревно акации +Acacia Wood=Акациевая древесина Acacia Wood Planks=Доски акации Acacia leaves are grown from acacia trees.=Листва акации произрастает на деревьях акации. Andesite=Андезит @@ -30,7 +30,7 @@ Bedrock is a very hard type of rock. It can not be broken, destroyed, collected Birch Bark=Кора берёзы Birch Leaves=Листва берёзы Birch Sapling=Саженец берёзы -Birch Wood=Берёзовое бревно +Birch Wood=Берёзовая древесина Birch Wood Planks=Берёзовые доски Birch leaves are grown from birch trees.=Листва берёзы произрастает на берёзах. Black Stained Glass=Чёрное окрашенное стекло @@ -52,7 +52,7 @@ 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.=Древесный уголь это альтернативное печное топливо, получаемое путём сжигания бревна в качестве ингредиента в печи. Оно имеет такую же длительность горения, как и каменный уголь, но из него нельзя сделать угольные блоки. +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=Декоративный песчаник @@ -78,7 +78,7 @@ Cyan Stained Glass=Бирюзовое окрашенное стекло Dark Oak Bark=Кора тёмного дуба Dark Oak Leaves=Листва тёмного дуба Dark Oak Sapling=Саженец тёмного дуба -Dark Oak Wood=Бревно тёмного дуба +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.=Из саженцев тёмного дуба могут вырастать деревья, но для этого надо высаживать их группами. Одинокие саженцы не будут расти. Группа из четырёх саженцев станет деревом через некоторое время после высадки на освещённый участок почвы в виде квадрата 2×2. @@ -86,7 +86,7 @@ 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.=Алмазная руда встречается редко, в виде скоплений в глубине мира. +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.=Диорит это камень вулканической природы. @@ -126,13 +126,13 @@ Iron nuggets are very small pieces of molten iron; the main purpose is to create Jungle Bark=Кора тропического дерева Jungle Leaves=Листва тропического дерева Jungle Sapling=Саженец тропического дерева -Jungle Wood=Бревно тропического дерева +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.=Лазуритовая руда это руда лазурита. Она изредка встречается в виде скоплений в глубине мира. +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=Голубое окрашенное стекло @@ -149,7 +149,7 @@ Mycelium is a type of dirt and the ideal soil for mushrooms. Unlike other dirt-t Oak Bark=Кора дуба Oak Leaves=Листва дуба Oak Sapling=Саженец дуба -Oak Wood=Дубовое бревно +Oak Wood=Дубовая древесина Oak Wood Planks=Дубовые доски Oak leaves are grown from oak trees.=Листва дуба произрастает на дубовых деревьях. Obsidian=Обсидиан @@ -178,7 +178,7 @@ 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.=Редстоуновая руда обычно содержится в глубине мира. +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=Песчаник @@ -195,7 +195,7 @@ Some iron contained in stone, it is prety common and can be found below sea leve Spruce Bark=Кора ели Spruce Leaves=Хвоя Spruce Sapling=Саженец ели -Spruce Wood=Еловое бревно +Spruce Wood=Еловая древесина Spruce Wood Planks=Еловые доски Spruce leaves are grown from spruce trees.=Хвоя растёт на еловых деревьях. Stained glass is a decorative and mostly transparent block which comes in various different colors.=Окрашенное стекло это декоративный прозрачный блок, встречающийся в различных расцветках. diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr b/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr index 494ffdfdb..a9ebfe6be 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr @@ -9,7 +9,7 @@ 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.=Установите его и ждите пока он вырастет. Его можно помещать только на камень Края, а также на верхнюю часть стебля растения хоруса. +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=Стебель растения хоруса diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr index aafe6ef9f..8705ee510 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr @@ -9,10 +9,10 @@ Fire is a damaging and destructive but short-lived kind of block. It will destro 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 был зажарен до хрустящей корочки. -@1 felt the burn.=@1 сгорел. -@1 died in the flames.=@1 умер в пламени. -@1 died in a fire.=@1 умер в огне. +@1 has been cooked crisp.=@1 был(а) зажарен(а) до хрустящей корочки. +@1 felt the burn.=@1 сгорел(а). +@1 died in the flames.=@1 погиб(ла) в пламени. +@1 died in a fire.=@1 погиб(ла) в огне. Fire=Огонь Eternal Fire=Вечный огонь Dispenser projectile=Снаряд раздатчика From 9b61c5504c6ca245ea0142baffd1086819a1abf3 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sun, 20 Feb 2022 11:48:58 +0800 Subject: [PATCH 159/521] Fix 'awards' typos --- mods/HUD/awards/locale/awards.ru.tr | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/HUD/awards/locale/awards.ru.tr b/mods/HUD/awards/locale/awards.ru.tr index ffda88eb4..885512a20 100644 --- a/mods/HUD/awards/locale/awards.ru.tr +++ b/mods/HUD/awards/locale/awards.ru.tr @@ -20,14 +20,14 @@ All your awards and statistics have been cleared. You can now start again.=Ва Awards=Награды Craft: @1×@2=Скрафчено: @1×@2 Craft: @1=Скрафчено: @1 -Die @1 times.=Умер @1 раз. +Die @1 times.=Умер(ла) @1 раз. Die.=Погибните. Get the achievements statistics for the given player or yourself=Получение статистики и достижений для заданного игрока или для себя -Join the game @1 times.=Присоединился к игре @1 раз. +Join the game @1 times.=Присоединился(ась) к игре @1 раз. Join the game.=Присоединитесь к игре. List awards in chat (deprecated)=Вывести список наград в чат (устаревшее). -Place a block: @1=Разметил блок: @1 -Place blocks: @1×@2=Разместил блоки: @1×@2 +Place a block: @1=Разметил(а) блок: @1 +Place blocks: @1×@2=Разместил(а) блоков: @1×@2 Secret Achievement gotten!=Секретное достижение получено! Secret Achievement gotten:=Секретное достижение получено: Secret Achievement gotten: @1=Секретное достижение получено: @1 @@ -46,10 +46,10 @@ Error: No awards available.=Ошибка: нет доступных наград Eat: @1×@2=Съедено: @1×@2 Eat: @1=Съедено: @1 @1/@2 eaten=@1/@2 съедено -Place @1 block(s).=Поместил @1 блоков. -Dig @1 block(s).=Выкопал @1 блоков. -Eat @1 item(s).=Съел @1 предметов. -Craft @1 item(s).=Скрафтил @1 предметов. +Place @1 block(s).=Поместил(а) @1 блоков. +Dig @1 block(s).=Выкопал(а) @1 блоков. +Eat @1 item(s).=Съел(а) @1 предметов. +Craft @1 item(s).=Скрафтил(а) @1 предметов. Can give achievements to any player=Может выдавать достижения любому игроку (grant ( | all)) | list=(grant <игрок> (<достижение> | all - всем)) | список Give achievement to player or list all achievements=Выдать достижение игроку или отобразить все достижения From a2a95e9f7369b953ea556d9dbeb446826b058da1 Mon Sep 17 00:00:00 2001 From: rudzik8 Date: Sun, 20 Feb 2022 11:48:42 +0700 Subject: [PATCH 160/521] Flip the carrot on a stick texture horizontally --- .../textures/mcl_mobitems_carrot_on_a_stick.png | Bin 321 -> 536 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_mobitems/textures/mcl_mobitems_carrot_on_a_stick.png b/mods/ITEMS/mcl_mobitems/textures/mcl_mobitems_carrot_on_a_stick.png index ff85a30df98d18c467dff3a809d8c64a9f0e1190..ee7b5af7f183b315ddde7631e69c7a513a8840e7 100644 GIT binary patch delta 511 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0j)_yK~y+TWBmXBKLfd7SB@P66O_#m=Vkjp$kFUSBO@aNu^0rv z2An*w`oFrVHG`NCKSQ8{DM?OZN-DEp;N$0KFxHZ0xb^rs$$y4`UGVASM+VP`JjV8} zdInh?V+I8&A%<8_8=?#W8vt?v2v|6VF$M)VF+6zojzL6_n;|{Og`go|10LSG$pDHC z5Y{qsXH3h8We`>|VBq3lCTIxLysi@rg5nZTE(CzQfJ|%3~dfZunRzjWFEcD z_~qeGhA*!_f)(Nd`%hnG1f^IWPIfRKYyb#=3<=+SobmqY2T&1+7&g4`)D^}>+YW%Sk zg59|hyxi=gq$9vS03)~LCTN}6vJ`RTEU4FKEqk?_oQg-5EBKEQCD zSC^(yS5{~ia6giZwSr*7ov1HX%#;A$W^2F%lOb+kPXL@Wt6~AreLgM7U^(qNjRIhF t5gP#di&D*AdmtOrW`X}}@0$&00{~5HVK(OsR3rcZ002ovPDHLkV1j@Zf@lB$ From dcf0a05f3c0d8d77312c48527ec2a279084fdf06 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sun, 20 Feb 2022 12:49:25 +0800 Subject: [PATCH 161/521] Fix typos --- .../locale/mcl_falling_nodes.ru.tr | 4 ++-- .../lightning/locale/lightning.ru.tr | 2 +- .../mcl_weather/locale/mcl_weather.ru.tr | 8 ++++---- mods/HELP/mcl_doc/locale/mcl_doc.ru.tr | 4 ++-- .../mcl_doc_basics/locale/mcl_doc_basics.ru.tr | 18 +++++++++--------- .../locale/mesecons_pressureplates.ru.tr | 2 +- .../locale/mesecons_solarpanel.ru.tr | 2 +- .../mesecons_wires/locale/mesecons_wires.ru.tr | 4 ++-- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 6 +++--- mods/ITEMS/mcl_end/locale/mcl_end.ru.tr | 2 +- mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr | 2 +- .../mcl_furnaces/locale/mcl_furnaces.ru.tr | 4 ++-- .../mcl_mobitems/locale/mcl_mobitems.ru.tr | 10 +++++----- mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr | 4 ++-- .../ITEMS/mcl_potions/locale/mcl_potions.ru.tr | 4 ++-- .../mcl_throwing/locale/mcl_throwing.ru.tr | 4 ++-- mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr | 2 +- .../mcl_commands/locale/mcl_commands.ru.tr | 4 ++-- mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr | 4 ++-- .../mcl_playerplus/locale/mcl_playerplus.ru.tr | 4 ++-- 20 files changed, 47 insertions(+), 47 deletions(-) diff --git a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr index db68b3ca2..1f55df7ef 100644 --- a/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr +++ b/mods/ENTITIES/mcl_falling_nodes/locale/mcl_falling_nodes.ru.tr @@ -1,3 +1,3 @@ # textdomain: mcl_falling_nodes -@1 was smashed by a falling anvil.=@1 был раздавлен упавшей наковальней. -@1 was smashed by a falling block.=@1 был раздавлен упавшим блоком. +@1 was smashed by a falling anvil.=@1 был(а) раздавлен упавшей наковальней. +@1 was smashed by a falling block.=@1 был(а) раздавлен упавшим блоком. diff --git a/mods/ENVIRONMENT/lightning/locale/lightning.ru.tr b/mods/ENVIRONMENT/lightning/locale/lightning.ru.tr index 68f51c81b..bbed8d1f6 100644 --- a/mods/ENVIRONMENT/lightning/locale/lightning.ru.tr +++ b/mods/ENVIRONMENT/lightning/locale/lightning.ru.tr @@ -1,4 +1,4 @@ # textdomain: lightning -@1 was struck by lightning.=@1 был убит молнией. +@1 was struck by lightning.=@1 убит(а) молнией. Let lightning strike at the specified position or yourself=Бьёт молнией в заданную позицию или в вас No position specified and unknown player=Позиция не определена и игрок неизвестен diff --git a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.ru.tr b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.ru.tr index d8479af2c..9498a2732 100644 --- a/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.ru.tr +++ b/mods/ENVIRONMENT/mcl_weather/locale/mcl_weather.ru.tr @@ -1,8 +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.=Ошибка: Длительность не может быть менее 1 секунды. -Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Ошибка: Указана неправильная погода. Возможны варианты: “clear” (ясная), “rain” (дождь), “snow” (снег) или “thunder” (гроза). +Error: No weather specified.=Ошибка: не указана погода. +Error: Invalid parameters.=Ошибка: недопустимые параметры. +Error: Duration can't be less than 1 second.=Ошибка: длительность не может быть менее 1 секунды. +Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=Ошибка: указана неправильная погода. Возможны варианты: “clear” (ясная), “rain” (дождь), “snow” (снег) или “thunder” (гроза). Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=Переключает между ясной погодой и осадками (случайно выбирается дождь, гроза или снег) diff --git a/mods/HELP/mcl_doc/locale/mcl_doc.ru.tr b/mods/HELP/mcl_doc/locale/mcl_doc.ru.tr index 76ce5a7c8..b34ad043f 100644 --- a/mods/HELP/mcl_doc/locale/mcl_doc.ru.tr +++ b/mods/HELP/mcl_doc/locale/mcl_doc.ru.tr @@ -27,7 +27,7 @@ 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.=Этот предмет можно починить на наковальне с помощью любого предмета из группы “@1”. 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.=Когда этот блок падает вниз на 1 блок, он наносит урон игроку который заденет этот блок. Урон рассчитывается как Z×2–2 единиц здоровья, где Z это высота полета в блоках. Урон не может превышать 40 единиц здоровья. +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.=Когда этот блок падает вниз на 1 блок, он наносит урон игроку, который заденет этот блок. Урон рассчитывается как Z×2–2 единиц здоровья, где Z это высота полета в блоках. Урон не может превышать 40 единиц здоровья. Diamond Pickaxe=Алмазная кирка Iron Pickaxe=Железная кирка Stone Pickaxe=Каменная кирка @@ -68,7 +68,7 @@ Very fast=Очень быстро Extremely fast=Экстремально быстро Instantaneous=Мгновенно @1 uses=@1 использований -Unlimited uses=Не ограничено +Unlimited uses=не ограничено Block breaking strength: @1=Сила для ломания блока: @1 Mining durability: @1=Долговечность при добыче: @1 Armor points: @1=Эффективность брони: @1 diff --git a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr index e042f5fc5..4d852ae6b 100644 --- a/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr +++ b/mods/HELP/mcl_doc_basics/locale/mcl_doc_basics.ru.tr @@ -13,15 +13,15 @@ Basic controls:=Основное управление: • [Shift] to sneak or move downwards=• [Shift] - красться или карабкаться вниз • Mouse wheel or [1]-[9] to select item=• Колёсико мыши или [1]-[9] - выбор предмета • Left-click to mine blocks or attack=• Левый кнопка мыши - добывать блок или атаковать -• Recover from swings to deal full damage=• Чтобы нанести максимальный урон делайте небольшой интервал между ударами +• Recover from swings to deal full damage=• Чтобы нанести максимальный урон, делайте небольшой интервал между ударами • Right-click to build blocks and use things=• Правый клик - строить блоки и использовать вещи • [I] for the inventory=• [I] - открыть инвентарь • First items in inventory appear in hotbar below=• Первые поднятые предметы появляются в хотбаре(9 ячеек инвентаря) внизу экрана • Lowest row in inventory appears in hotbar below=• Нижний ряд инвентаря это и есть хотбар • [Esc] to close this window=• [Esc] - закрыть это окно 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=• Поместите бревно в решётку 2×2 (вашу “сетку крафте”) в меню инвентаря и скрафтите из него 4 доски +• 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=• Поместите древесину в решётку 2×2 (вашу “сетку крафте”) в меню инвентаря и скрафтите из него 4 доски • Place them in a 2×2 shape in the crafting grid to craft a crafting table=• Разместите их в виде квадрата 2×2 в крафт-сетке, чтобы сделать верстак • Place the crafting table on the ground=• Поставьте верстак на землю • Rightclick it for a 3×3 crafting grid=• Кликните правой кнопкой мыши по верстаку для работы с сеткой крафта 3×3 @@ -63,8 +63,8 @@ Extended movement (requires privileges):=Расширенное движение • J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)=• J: включает/выключает быстрый бег/полёт (требуется привилегия “fast”) • K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)=• K: включает/выключает режим полёта, позволяющий свободно перемещаться во всех направлениях (требуется привилегия “fly”) • H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=• H: включает/выключает режим, позволяющий проходить сквозь стены в режиме полёта (требуется привилегия “noclip”) -• E: Move even faster when in fast mode=• E: ускориться в быстром режиме -• E: Walk fast in fast mode=• E: идти быстро в быстром режиме +• E: Move even faster when in fast mode=• E: нажатие еще раз, когда вы в быстром режиме, ускорит вас еще сильнее +• E: Walk fast in fast mode=• E: идти быстрее в быстром режиме World interaction:=Взаимодействие с миром: • Left mouse button: Punch / mine blocks / take items=• Левая кнопка мыши: Бить / добывать блоки / брать предметы • Left mouse button: Punch / mine blocks=• Левая кнопка мыши: Бить / добывать блоки @@ -160,8 +160,8 @@ By holding down [Z], you can zoom the view at your crosshair. You need the “zo • Toggle Cinematic Mode: [F8]=• Переключение кинематографического режима: [F8]; • Zoom: [Z]=• Масштабирование: [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.=Мир MineClone 2 полностью состоит из блоков (вокселей, если быть точными). Блоки могут быть добавлены или удалены с помощью правильных инструментов. -The world is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=Мир целиком состоит из блоков (точнее, вокселей). Блоки могут быть добавлены или удалены с помощью правильных инструментов. +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.=Мир MineClone 2 полностью состоит из блоков (вокселей, если быть точнее). Блоки могут быть добавлены или удалены с помощью правильных инструментов. +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=• Нацеливаемые: нацеливаемые блоки демонстрируют свой контур или ореол, когда вы на них нацеливаетесь. Но через ненацеливаемые блоки ваш прицел просто пройдёт насквозь. Жидкости обычно не подлежат нацеливанию, но в них всё-таки можно целиться с помощью некоторых специальных инструментов @@ -172,7 +172,7 @@ Blocks can have a wide range of different properties which determine mining time • 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.=Для добычи блоков требуется инструмент для добычи. Разные блоки добываются разными инструментами, а некоторые блоки не могут быть добыты никаким инструментом. Блоки различаются по твёрдости, а инструменты - по силе добычи. Добывательные инструменты со временем изнашиваются. Время добывания и износ зависят и от блока, и от инструмента. Самый быстрый способ узнать, насколько эффективны ваши инструменты, - это просто попробовать их на различных блоках. Любые предметы, которые вы извлечёте из блоков в качестве добычи, выпадут на землю и их можно будет забрать. +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=• Всегда выпадают одни и те же предметы @@ -201,7 +201,7 @@ When those criteria are met, the open space is filled with a new liquid source o 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=• Если вы ничего не делаете, то постепенно начнете тонуть +• 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.=Жидкости часто ненацеливаемы. Но некоторые специальные предметы способны указывать на все жидкости. diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.ru.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.ru.tr index 19a78a87f..6742ed560 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.ru.tr @@ -1,5 +1,5 @@ # 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.=Нажимаемая плита это компонент редстоуна, который выдает сигнал редстоуна окружающим его блокам, когда кто-то или что-то находится прямо на нём. +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=Берёзовая нажимная плита diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.ru.tr b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.ru.tr index fddc28abe..99859bb89 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/locale/mesecons_solarpanel.ru.tr @@ -1,6 +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.=Датчик дневного света это компонент редстоуна, который производит сигнал редстоуна присолнечном свете и не производит в противном случае. Он также может быть инвертирован. +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 toggle its state.=Используйте датчик дневного света для смены его состояния Inverted Daylight Sensor=Инвертированный датчик дневного света In inverted state, they provide redstone power when they are not in sunlight and no power otherwise.=В инвертированном состоянии он производит сигнал редстоуна, когда на него не попадает солнечный свет, а когда попадает - перестаёт производить. diff --git a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.ru.tr b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.ru.tr index 3bc2669eb..aea2bca60 100644 --- a/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.ru.tr +++ b/mods/ITEMS/REDSTONE/mesecons_wires/locale/mesecons_wires.ru.tr @@ -5,7 +5,7 @@ Redstone power can be received from various redstone components, such as a block 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)=Подключённое пятно редстоуна (@1) +Powered Redstone Spot (@1)=Подключенное пятно редстоуна (@1) Redstone Trail (@1)=Дорожка редстоуна (@1) -Powered Redstone Trail (@1)=Подключённая дорожка редстоуна (@1) +Powered Redstone Trail (@1)=Подключенная дорожка редстоуна (@1) Transmits redstone power, powers mechanisms=Передаёт сигнал редстоуна, питает механизмы diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index 5929828f8..ce4d05c40 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -58,7 +58,7 @@ Chiseled Red Sandstone=Декоративный красный песчаник Chiseled Sandstone=Декоративный песчаник Chiseled red sandstone is a decorative building block.=Декоративный красный песчаник это декоративный строительный блок. Chiseled sandstone is a decorative building block.=Декоративный песчаник это декоративный строительный блок. -Clay=Глиняный блок +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.=Глиняный блок это тип почвы, часто встречающийся на побережьях под водой. @@ -69,7 +69,7 @@ Coarse dirt acts as a soil for some plants and is similar to dirt, but it will n Cobblestone=Булыжник Cobweb=Паутина Cobwebs can be walked through, but significantly slow you down.=Паутину можно пройти насквозь, но она ощутимо снижает вашу скорость. -Cracked Stone Bricks=Потрескавшийся каменный кирпич +Cracked Stone Bricks=Потрескавшиеся каменные кирпичи Cut Red Sandstone=Резной красный песчаник Cut Sandstone=Резной песчаник Cut red sandstone is a decorative building block.=Резной красный песчаник это декоративный строительный блок. @@ -81,7 +81,7 @@ 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.=Из саженцев тёмного дуба могут вырастать деревья, но для этого надо высаживать их группами. Одинокие саженцы не будут расти. Группа из четырёх саженцев станет деревом через некоторое время после высадки на освещённый участок почвы в виде квадрата 2×2. +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.=Из саженцев тёмного дуба могут вырастать деревья, но для этого надо высаживать их группами. Одинарные саженцы не будут расти. Группа из четырёх саженцев станет деревом через некоторое время после высадки на освещённый участок почвы в виде квадрата 2×2. Dead Bush=Мёртвый куст Dead bushes are unremarkable plants often found in dry areas. They can be harvested for sticks.=Мёртвые кусты это непримечательные растения, часто встречающиеся в засушливых областях. Их можно собирать, чтобы сделать из них палки. Diamond=Алмаз diff --git a/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr b/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr index a9ebfe6be..de6a4b61c 100644 --- a/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr +++ b/mods/ITEMS/mcl_end/locale/mcl_end.ru.tr @@ -4,7 +4,7 @@ End Stone Bricks=Кирпичи из камня Края Purpur Block=Пурпурный блок Purpur Pillar=Пурпурная колонна End Rod=Стержень Края -End rods are decorative light sources.=Стержень Края это декоративный светильник. +End rods are decorative light sources.=Стержень Края это декоративный источник света. Dragon Egg=Яйцо дракона A dragon egg is a decorative item which can be placed.=Яйцо дракона это декоративный предмет, который можно поставить. Chorus Flower=Цветок хоруса diff --git a/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr b/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr index 8705ee510..ac2dc1993 100644 --- a/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr +++ b/mods/ITEMS/mcl_fire/locale/mcl_fire.ru.tr @@ -4,7 +4,7 @@ Fire charges are primarily projectiles which can be launched from dispensers, th 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.=Кликните правой кнопкой мыши по поверхности блока, чтобы попытаться зажечь огонь перед ним либо поджечь блок. Некоторые блоки реагируют на поджигание индивидуально. +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 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.=Вечный огонь - это поджигающий блок, который может создать еще больше огня. Он будет создавать огонь вокруг себя, если поблизости окажутся легковоспламенимые блоки. Вечный огонь можно потушить ударом или водой. В отличие от обычного огня, вечный огонь не гаснет сам по себе и также продолжает гореть под дождем. Бить вечный огонь безопасно, но он причиняет урон, если вы стоите внутри огня. diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.ru.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.ru.tr index dc6856ae6..999d39994 100644 --- a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.ru.tr +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.ru.tr @@ -1,7 +1,7 @@ # textdomain: mcl_furnaces Furnace=Печь -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.=[Используйте] печь, чтобы открыть её меню. Положите топливо в нижний слот, а материал в верхний. Печь будет понемногу расходовать топливо для переплавки предмета. Получившийся в результате предмет будет помещён в выходной слот справа. +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=Книга рецептов diff --git a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.ru.tr b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.ru.tr index 45c0125ad..25008d7ae 100644 --- a/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.ru.tr +++ b/mods/ITEMS/mcl_mobitems/locale/mcl_mobitems.ru.tr @@ -5,7 +5,7 @@ Yuck! This piece of flesh clearly has seen better days. If you're really despera 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.=Жареная баранина это приготовленноее мясо овцы, это съедобный продукт. +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=Жареная говядина @@ -34,13 +34,13 @@ Bone=Кость Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.=Кости можно использовать для приручения волков, чтобы они защищали вас. 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.=Возьмите в руку кость рядом с волками, чтобы привлечь их. Используйте кость на волке, чтобы приручить его. Вы можете командовать приручёнными волками с помощи правой кнопки мыши. String=Нить -Strings are used in crafting.=Нить используются для крафтинга +Strings are used in crafting.=Нить используются для крафта Blaze Rod=Огненный стержень -This is a crafting component dropped from dead blazes.=Это ингредиент для крафта, отбрасываемый ифритом +This is a crafting component dropped from dead blazes.=Это материал для крафта, выпадающий из ифрита. Blaze Powder=Огненный порошок -This item is mainly used for crafting.=Огненный порошок это ингредиент для крафта и топливо для варочной стойки. +This item is mainly used for crafting.=Огненный порошок это материал для крафта и топливо для варочной стойки. Magma Cream=Лавовый крем -Magma cream is a crafting component.=Лавовый крем это ингредиент для крафта. +Magma cream is a crafting component.=Лавовый крем это материал для крафта. Ghast Tear=Слеза гаста Place this item in an item frame as decoration.=Поместите это в рамку как украшение. Nether Star=Звезда Ада diff --git a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr index b79e9cc03..fb05de2cf 100644 --- a/mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr +++ b/mods/ITEMS/mcl_ocean/locale/mcl_ocean.ru.tr @@ -5,11 +5,11 @@ Prismarine=Призмарин Prismarine is used as a building block. It slowly changes its color.=Призмарин это строительный блок. Он медленно меняет свой цвет. Prismarine Bricks=Призмариновые кирпичи Dark Prismarine=Тёмный призмарин -Prismarine Crystals=Призмариновые кристаллы +Prismarine Crystals=Призмариновый кристалл Prismarine Shard=Осколок призмарина Dried Kelp=Сушёная ламинария Dried Kelp Block=Блок сушёной ламинарии -Brain Coral Block=Мозгового коралловый блок +Brain Coral Block=Мозговой коралловый блок Brain Coral Fan=Мозговой веерный коралл Brain Coral=Мозговой коралл Bubble Coral Block=Пузырчатый коралловый блок diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.ru.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.ru.tr index 2330c3158..0ff847066 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.ru.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.ru.tr @@ -11,9 +11,9 @@ Fermented Spider Eye=Приготовленный паучий глаз Glass Bottle=Пузырёк Liquid container=Контейнер для жидкостей -A glass bottle is used as a container for liquids and can be used to collect water directly.=Стеклянная бутылка используется для хранения жидкостей, её также можно использовать для сбора воды. +A glass bottle is used as a container for liquids and can be used to collect water directly.=Стеклянный пузырёк используется для хранения жидкостей, её также можно использовать для сбора воды. -To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Воду в бутылку можно набрать из котла (это уменьшает уровень воды в котле) или из другого источника (уровень которого не уменьшится). +To collect water, use 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.=Пузырёк с водой можно использовать для наполнения котла. Выпивание воды не даст никакого эффекта. diff --git a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.ru.tr b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.ru.tr index dff501da8..a58f8da92 100644 --- a/mods/ITEMS/mcl_throwing/locale/mcl_throwing.ru.tr +++ b/mods/ITEMS/mcl_throwing/locale/mcl_throwing.ru.tr @@ -1,6 +1,6 @@ # textdomain: mcl_throwing -@1 used the ender pearl too often.=@1 использовал жемчуг Края слишком часто. -Use the punch key to throw.=Используй клавишу удара для броска. +@1 used the ender pearl too often.=@1 использовал(а) жемчуг Края слишком часто. +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=Яйцо diff --git a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr index 2a09f5507..19a685754 100644 --- a/mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr +++ b/mods/ITEMS/mcl_tnt/locale/mcl_tnt.ru.tr @@ -1,5 +1,5 @@ # textdomain: mcl_tnt -@1 was caught in an explosion.=@1 попал во взрыв. +@1 was caught in an explosion.=@1 попал(а) во взрыв. 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.=Взрывчатка. Когда она взрывается, то причиняет вред живым существам и разрушает блоки вокруг себя. ТНТ имеет радиус взрыва @1. С небольшой вероятностью блоки могут выпадать в качестве предметов (как при добыче), а не уничтожаться. ТНТ может быть подорван инструментами, взрывом, огнём, лавой и сигналом редстоуна. 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.=Взрывчатка. Когда она взрывается, то причиняет вред живым существам. ТНТ имеет радиус взрыва @1. ТНТ может быть подорван инструментами, взрывом, огнём, лавой и сигналом редстоуна. diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr b/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr index b16ce2b08..a7a58c177 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr @@ -2,9 +2,9 @@ Players can't be killed right now, damage has been disabled.=Игроки не могут быть убиты - урон отключён. Player @1 does not exist.=Игрока @1 не существует. You are already dead=Вы уже мертвы -@1 is already dead=@1 уже мертв +@1 is already dead=@1 уже мертв(а) @1 committed suicide.=@1 совершил(а) Роскомнадзор. -@1 was killed by @2.=@1 был убит @2. +@1 was killed by @2.=@1 был убит(а) @2. []=[<имя>] Kill player or yourself=Убить игрока или себя Can use /say=Можно использовать /say diff --git a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr index 361812c70..bc0b33a67 100644 --- a/mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr +++ b/mods/PLAYER/mcl_hunger/locale/mcl_hunger.ru.tr @@ -1,8 +1,8 @@ # textdomain: mcl_hunger -@1 succumbed to the poison.=@1 умер от яда. +@1 succumbed to the poison.=@1 умер(ла) от яда. Food=Еда Saturation=Насыщение %s: %.1f/%d=%s: %.1f/%d Exhaust.=Истощение %s: %d/%d=%s: %d/%d -@1 starved to death.=@1 умер от голода. +@1 starved to death.=@1 умер(ла) от голода. diff --git a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr index 93dc166d0..06318c3b1 100644 --- a/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr +++ b/mods/PLAYER/mcl_playerplus/locale/mcl_playerplus.ru.tr @@ -1,3 +1,3 @@ # textdomain: mcl_playerplus -@1 suffocated to death.=@1 задохнулся. -@1 was prickled to death by a cactus.=@1 был исколот до смерти кактусом. +@1 suffocated to death.=@1 задохнулся(ась). +@1 was prickled to death by a cactus.=@1 был(а) исколот(а) до смерти кактусом. From 5af5d05a03b1f8cf3287f108a8464c618f21c387 Mon Sep 17 00:00:00 2001 From: Sab Pyrope Date: Sun, 20 Feb 2022 15:21:46 +0800 Subject: [PATCH 162/521] Final typo fix --- mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr | 2 +- mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr | 1 + mods/ITEMS/mcl_banners/locale/template.txt | 1 + mods/MISC/mcl_commands/locale/mcl_commands.ru.tr | 4 ++++ mods/MISC/mcl_commands/locale/template.txt | 4 ++++ mods/MISC/mcl_privs/locale/mcl_privs.ru.tr | 2 +- 6 files changed, 12 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr b/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr index 393ac6aca..6ebba543e 100644 --- a/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr +++ b/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr @@ -12,6 +12,6 @@ Glow Ink Sac=Светящийся чернильный мешок Use it to craft the Glow Item Frame.=Используется для крафта светящейся рамки. Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.=Используйте светящийся чернильный мешок и обычную рамку для крафта светящейся рамки. Glow Item Frame=Светящаяся рамка -Can hold an item and glows=Светится и может хранить предмет. +Can hold an item and glows=Светится и может хранить предмет Glow 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.=Просто используйте любой предмет на рамке. Используйте рамку снова, чтобы забрать предмет. \ No newline at end of file diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr index 29343a5a5..f3ae1e90e 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr @@ -75,3 +75,4 @@ You can copy the pattern of a banner by placing two banners of the same color in And one additional layer=И один дополнительный слой And @1 additional layers=И @1 дополнительных слоёв Paintable decoration=Раскрашиваемая декорация +Preview Banner=Предпросмотр баннера \ No newline at end of file diff --git a/mods/ITEMS/mcl_banners/locale/template.txt b/mods/ITEMS/mcl_banners/locale/template.txt index cb8ec0b0c..315e8c783 100644 --- a/mods/ITEMS/mcl_banners/locale/template.txt +++ b/mods/ITEMS/mcl_banners/locale/template.txt @@ -75,3 +75,4 @@ You can copy the pattern of a banner by placing two banners of the same color in And one additional layer= And @1 additional layers= Paintable decoration= +Preview Banner= diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr b/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr index a7a58c177..3c18f554c 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.ru.tr @@ -24,3 +24,7 @@ Only peaceful mobs allowed!=Включены только мирные мобы! @1[]=@1[<имя>] Set game mode for player or yourself=Задаёт режим игры для игрока или для вас Error: No game mode specified.=Ошибка: Режим игры не указан. + =<звук> <цель> +Play a sound. Arguments: : name of the sound. : Target.=Проигрывает звук. Аргументы: <звук> - название звука, <цель> - целевой игрок. +Sound name is invalid!=Неправильное название звука! +Target is invalid!!=Неправильная цель!! \ No newline at end of file diff --git a/mods/MISC/mcl_commands/locale/template.txt b/mods/MISC/mcl_commands/locale/template.txt index b42f06085..0a7cc9cf5 100644 --- a/mods/MISC/mcl_commands/locale/template.txt +++ b/mods/MISC/mcl_commands/locale/template.txt @@ -24,3 +24,7 @@ Only peaceful mobs allowed!= @1[]= Set game mode for player or yourself= Error: No game mode specified.= + = +Play a sound. Arguments: : name of the sound. : Target.= +Sound name is invalid!= +Target is invalid!!= diff --git a/mods/MISC/mcl_privs/locale/mcl_privs.ru.tr b/mods/MISC/mcl_privs/locale/mcl_privs.ru.tr index 6e301d3dc..9970e26bc 100644 --- a/mods/MISC/mcl_privs/locale/mcl_privs.ru.tr +++ b/mods/MISC/mcl_privs/locale/mcl_privs.ru.tr @@ -1,2 +1,2 @@ # textdomain: mcl_privs -Can place and use advanced blocks like mob spawners, command blocks and barriers.=Позволяет размещать и использовать продвинутые блоки, такие как спаунеры мобов, командные блоки и барьеры. \ No newline at end of file +Can place and use advanced blocks like mob spawners, command blocks and barriers.=Позволяет размещать и использовать продвинутые блоки, такие как спавнеры мобов, командные блоки и барьеры. \ No newline at end of file From 1a4ec509392ac3572737676b7ac55d4cea9ec10e Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 21 Feb 2022 05:51:00 +0400 Subject: [PATCH 163/521] #220 Fix a crash in mcl_comparators --- mods/ITEMS/REDSTONE/mcl_comparators/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua index 3517e09cb..b596f26ff 100644 --- a/mods/ITEMS/REDSTONE/mcl_comparators/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_comparators/init.lua @@ -43,7 +43,9 @@ end local function comparator_activate(pos, node) local def = minetest.registered_nodes[node.name] - minetest.swap_node(pos, { name = def.comparator_onstate, param2 = node.param2 }) + local on_state = def.comparator_onstate + if not on_state then return end + minetest.swap_node(pos, { name = on_state, param2 = node.param2 }) minetest.after(0.1, comparator_turnon , {pos = pos, node = node}) end From 9db3b97202bbd6894525df6b5f0dd6bd31296c4d Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 22 Feb 2022 03:12:45 +0400 Subject: [PATCH 164/521] Add crying obsidian --- mods/ENTITIES/mcl_dripping/init.lua | 64 ++++++++++++++---- mods/ENTITIES/mcl_dripping/readme.txt | 59 ++++++++-------- mods/ITEMS/mcl_core/locale/template.txt | 2 + mods/ITEMS/mcl_core/nodes_base.lua | 13 ++++ .../textures/mcl_core_crying_obsidian.png | Bin 0 -> 250 bytes 5 files changed, 97 insertions(+), 41 deletions(-) create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_crying_obsidian.png diff --git a/mods/ENTITIES/mcl_dripping/init.lua b/mods/ENTITIES/mcl_dripping/init.lua index 57ba7ecfe..b1cf79796 100644 --- a/mods/ENTITIES/mcl_dripping/init.lua +++ b/mods/ENTITIES/mcl_dripping/init.lua @@ -1,16 +1,24 @@ -- Dripping Water Mod -- by kddekadenz - -local math = math - -- License of code, textures & sounds: CC0 -local function register_drop(liquid, glow, sound, nodes) - minetest.register_entity("mcl_dripping:drop_" .. liquid, { +local math_random = math.random + +local all_dirs = { + {x = 0, y = 0, z = 1}, + {x = 0, y = 1, z = 0}, + {x = 1, y = 0, z = 0}, + {x = 0, y = 0, z =-1}, + {x = 0, y =-1, z = 0}, + {x =-1, y = 0, z = 0}, +} + +local function register_drop_entity(substance, glow, sound, texture_file_name) + minetest.register_entity("mcl_dripping:drop_" .. substance, { hp_max = 1, physical = true, collide_with_objects = false, - collisionbox = {-0.01, 0.01, -0.01, 0.01, 0.01, 0.01}, + collisionbox = {-0.01, -0.01, -0.01, 0.01, 0.01, 0.01}, glow = glow, pointable = false, visual = "sprite", @@ -22,11 +30,18 @@ local function register_drop(liquid, glow, sound, nodes) _dropped = false, on_activate = function(self) self.object:set_properties({ - textures = {"[combine:2x2:" .. -math.random(1, 16) .. "," .. -math.random(1, 16) .. "=default_" .. liquid .. "_source_animated.png"} + textures = { + "[combine:2x2:" + .. -math_random(1, 16) + .. "," + .. -math_random(1, 16) + .. "=" + .. (texture_file_name or ("default_" .. substance .. "_source_animated.png")) + } }) end, on_step = function(self, dtime) - local k = math.random(1, 222) + local k = math_random(1, 222) local ownpos = self.object:get_pos() if k == 1 then self.object:set_acceleration(vector.new(0, -5, 0)) @@ -38,7 +53,9 @@ local function register_drop(liquid, glow, sound, nodes) local ent = self.object:get_luaentity() if not ent._dropped then ent._dropped = true - minetest.sound_play({name = "drippingwater_" .. sound .. "drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) + if sound then + minetest.sound_play({name = "drippingwater_" .. sound .. "drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) + end end if k < 3 then self.object:remove() @@ -46,6 +63,10 @@ local function register_drop(liquid, glow, sound, nodes) end end, }) +end + +local function register_liquid_drop(liquid, glow, sound, nodes) + register_drop_entity(liquid, glow, sound) minetest.register_abm({ label = "Create drops", nodenames = nodes, @@ -55,12 +76,31 @@ local function register_drop(liquid, glow, sound, nodes) action = function(pos) if minetest.get_item_group(minetest.get_node(vector.offset(pos, 0, 1, 0)).name, liquid) ~= 0 and minetest.get_node(vector.offset(pos, 0, -1, 0)).name == "air" then - local x, z = math.random(-45, 45) / 100, math.random(-45, 45) / 100 + local x, z = math_random(-45, 45) / 100, math_random(-45, 45) / 100 minetest.add_entity(vector.offset(pos, x, -0.520, z), "mcl_dripping:drop_" .. liquid) end end, }) end -register_drop("water", 1, "", {"group:opaque", "group:leaves"}) -register_drop("lava", math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3), "lava", {"group:opaque"}) \ No newline at end of file +register_liquid_drop("water", 1, "", {"group:opaque", "group:leaves"}) +register_liquid_drop("lava", math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3), "lava", {"group:opaque"}) + +register_drop_entity("crying_obsidian", 10, nil, "mcl_core_crying_obsidian.png") +minetest.register_abm({ + label = "Create crying obsidian drops", + nodenames = {"mcl_core:crying_obsidian"}, + neighbors = {"air"}, + interval = 2, + chance = 22, + action = function(pos) + local i0 = math_random(1, 6) + for i = i0, i0 + 5 do + local dir = all_dirs[(i % 6) + 1] + if minetest.get_node(vector.add(pos, dir)).name == "air" then + minetest.add_entity(vector.offset(pos, dir.x * 0.52, dir.y * 0.52, dir.z * 0.52), "mcl_dripping:drop_crying_obsidian") + return + end + end + end, +}) diff --git a/mods/ENTITIES/mcl_dripping/readme.txt b/mods/ENTITIES/mcl_dripping/readme.txt index afe35608e..583cb65d7 100644 --- a/mods/ENTITIES/mcl_dripping/readme.txt +++ b/mods/ENTITIES/mcl_dripping/readme.txt @@ -1,29 +1,30 @@ -Dripping Mod -by kddekadenz - -modified for MineClone 2 by Wuzzy and NO11 - - -Installing instructions: - - 1. Copy the mcl_dripping mod folder into games/gamemode/mods - - 2. Start game and enjoy :) - - -Manual: - --> drops are generated rarely under solid nodes --> they will stay some time at the generated block and than they fall down --> when they collide with the ground, a sound is played and they are destroyed - - -License: - -code & sounds: CC0 - - -Changelog: - -16.04.2012 - first release -28.04.2012 - drops are now 3D; added lava drops; fixed generating of drops (not at edges now) +Dripping Mod +by kddekadenz + +modified for MineClone 2 by Wuzzy and NO11 +modified for MineClone 5 by kay27 + + +Installing instructions: + + 1. Copy the mcl_dripping mod folder into games/gamemode/mods + + 2. Start game and enjoy :) + + +Manual: + +-> drops are generated rarely under solid nodes +-> they will stay some time at the generated block and than they fall down +-> when they collide with the ground, a sound is played and they are destroyed + + +License: + +code & sounds: CC0 + + +Changelog: + +16.04.2012 - first release +28.04.2012 - drops are now 3D; added lava drops; fixed generating of drops (not at edges now) diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index da500ab8c..57b15ef82 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -155,6 +155,8 @@ 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.= +Crying Obsidian= +Crying obsidian is a luminous obsidian that can generate as part of ruined portals.= 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= diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index fe1ee58c2..ebae759ac 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -826,6 +826,19 @@ minetest.register_node("mcl_core:obsidian", { end, }) +minetest.register_node("mcl_core:crying_obsidian", { + description = S("Crying Obsidian"), + _doc_items_longdesc = S("Crying obsidian is a luminous obsidian that can generate as part of ruined portals."), + tiles = {"default_obsidian.png^mcl_core_crying_obsidian.png"}, + is_ground_content = false, + light_source = 10, + sounds = mcl_sounds.node_sound_stone_defaults(), + stack_max = 64, + groups = {pickaxey=5, building_block=1, material_stone=1}, + _mcl_blast_resistance = 1200, + _mcl_hardness = 50, +}) + minetest.register_node("mcl_core:ice", { description = S("Ice"), _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."), diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_crying_obsidian.png b/mods/ITEMS/mcl_core/textures/mcl_core_crying_obsidian.png new file mode 100644 index 0000000000000000000000000000000000000000..6229fe08add9b25be90417e112520c5333b38758 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sEXfH33KJw={CLG}_)Usv`g99-Od7E2_Q5`aQgo-U3d7N?UF z7BHx6So`n1M`v29nm3zUlBkh^fx(r36ArH1H}mny|18_C{{JX><;+Kx)i%ODNe9;l zEQ)as5SZ@Gv2((L;6g^X8ny>KCP|As6E83(Es|coD6LQZ|3+2=;cW~@rm4OAXYKd5 oLD|bz&vnP1mPLZ|nPwbh$V>5Na1*?97U&8FPgg&ebxsLQ06)1_&j0`b literal 0 HcmV?d00001 From 84fc0e7bc3908c8c0e8b9650a833f4e6ecfc3a0b Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 00:08:48 +0000 Subject: [PATCH 165/521] added mcl_lanterns mod --- mods/ITEMS/mcl_lanterns/README.md | 13 +++++++++ mods/ITEMS/mcl_lanterns/depends.txt | 7 +++++ mods/ITEMS/mcl_lanterns/init.lua | 44 +++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/README.md create mode 100644 mods/ITEMS/mcl_lanterns/depends.txt create mode 100644 mods/ITEMS/mcl_lanterns/init.lua diff --git a/mods/ITEMS/mcl_lanterns/README.md b/mods/ITEMS/mcl_lanterns/README.md new file mode 100644 index 000000000..11acb450e --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/README.md @@ -0,0 +1,13 @@ +# Blackstone Mod + +This mod is made for the Minetest Subgame Mineclone2. + +It adds new Blocks: Blackstone, Basalt, Soul Fire, Soul Torch etc. + +## Version: + +Its version 1.0.2 + +## License + +CC BY-SA 4.0 diff --git a/mods/ITEMS/mcl_lanterns/depends.txt b/mods/ITEMS/mcl_lanterns/depends.txt new file mode 100644 index 000000000..c1ada2d4e --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/depends.txt @@ -0,0 +1,7 @@ +mcl_core +screwdriver +mcl_stairs +mclx_stairs +mcl_walls +mclx_fences +mcl_torches diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua new file mode 100644 index 000000000..c4a717f77 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -0,0 +1,44 @@ +local S = minetest.get_translator("mcl_lanterns") +local N = function(s) return s end + +minetest.register_node("mcl_lanterns:lantern", { + tiles = { + "lantern_top.png", + "lantern_bottom.png", + "lantern.png", + "lantern.png", + "lantern.png", + "lantern.png", + }, + groups = {pickaxey=3}, + inventory_image = "lantern.png", + light_source = 15, + description = S("Lantern"), + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + _mcl_hardness = 1, + node_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5000, -0.1875, 0.1875, -0.06250, 0.1875}, + {-0.1250, -0.06250, -0.1250, 0.1250, 0.06250, 0.1250}, + {-0.06250, 0.1250, -0.006250, 0.06250, 0.1875, 0.006250}, + {-0.06250, 0.06250, -0.006250, -0.03125, 0.1250, 0.006250}, + {0.03125, 0.06250, -0.006250, 0.06250, 0.1250, 0.006250}, + } + }, + stack_max = 64, +}) + + + +minetest.register_craft({ + type = "shaped", + output = "mcl_lanterns:lantern", + recipe = { + {"mcl_core:iron_nugget", "mcl_core:iron_nugget","mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_core:torch", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"} + } +}) \ No newline at end of file From 8adbe66ca2240e6650bdd78d4aa81c4a066ad833 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 00:12:30 +0000 Subject: [PATCH 166/521] Update 'mods/ITEMS/mcl_lanterns/README.md' --- mods/ITEMS/mcl_lanterns/README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_lanterns/README.md b/mods/ITEMS/mcl_lanterns/README.md index 11acb450e..04a0378c0 100644 --- a/mods/ITEMS/mcl_lanterns/README.md +++ b/mods/ITEMS/mcl_lanterns/README.md @@ -1,13 +1,17 @@ -# Blackstone Mod +# Lanterns Mod This mod is made for the Minetest Subgame Mineclone2. -It adds new Blocks: Blackstone, Basalt, Soul Fire, Soul Torch etc. +It adds new Block: Lanterns ## Version: -Its version 1.0.2 +Its version 1.0.0 ## License CC BY-SA 4.0 + +## Author + +PrairieWind (Github: PrairieAstronomer) \ No newline at end of file From ba32506f127414b23943dfc316a5957b9336d8d8 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 00:13:18 +0000 Subject: [PATCH 167/521] added texture files to lanterns mod --- mods/ITEMS/mcl_lanterns/textures/lantern.png | Bin 0 -> 5736 bytes .../mcl_lanterns/textures/lantern_bottom.png | Bin 0 -> 1209 bytes mods/ITEMS/mcl_lanterns/textures/lantern_top.png | Bin 0 -> 1043 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_lanterns/textures/lantern.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/lantern_bottom.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/lantern_top.png diff --git a/mods/ITEMS/mcl_lanterns/textures/lantern.png b/mods/ITEMS/mcl_lanterns/textures/lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..1e81819ba95fb37c446bc5b37278432023322031 GIT binary patch literal 5736 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/textures/lantern_bottom.png b/mods/ITEMS/mcl_lanterns/textures/lantern_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b424385a27e3aee7687efe24215ba1481a47deb0 GIT binary patch literal 1209 zcmV;q1V;ObP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHb}T0hMgJK^hJX-4VmK6!wK9VYKZl3Qx7&{G zI5&ST+zq8xNkSV$+4aBv9PSTXlyh=X)KX5#-*gJm%)SF-9H3~ z7(MUX)Q^6FTwWj0c;wfk+-W^_>=>fk@Va<L$ z%F&UNJjwZX6P~HPcz*cdlH0|b+>Oy}jJ{`AVnU{pJCk~u${IoOLMnMZme3R*!B|(z zXoe|P5Nn`$p;bqj0<#O|uqbizb##%`98VAu~#tYssF6%KjV3V=jGclEy4k&w`;eQH_^-Hye~FcTW;@A zYh|4%ya3HzICJWGps+!qTM1U?ne^@6{Z|7&hJFlv*--C$$ri%CUL(9IM8Thb>D?_5 zoeCj)9D!3pf|r~n!fF3`?>_^6H@Qb9P>{f-FlT0_fY0^L{fewIM@ zRlJ|kbzjB%W&C_yJ9`$z_8K?8gYwTk$)3kNWDiGk^*3zT**pJZ=*Q6iX=vaT2LJH7 zzX9>#u;+!Zp#}f|00v@9M??T203iS&a0G!u00009a7bBm001r{001r{0eGc9b^rhX z2XskIMF-^q5)TCr>={A~0001pNkl zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=HIcH}4wh2L34F99Kh#Bwk{=gbaf`F+8Zld4oQ z)75#5DI2Vk1>8>uP4gX9lr^eoQdQHe#n_^WB~vrYR&vOUSD56K)n&^$mx4|ULKi$; z;8DsE4nE=`M>_PdBOj$AeQK;yQ`KrU*V01chUMQe{X6UIub) z@Q6c38aiy`Q7&qm>OD1jAon#j+SDeoxcu~u8qBJ<5Hw#WGMRx`hy>y~2_T`vWaf=x z43pes=5xTJkN|2V6HcQ^3w2~Dr4R)_f2-YP5Sva?E{Y_UJ#W-K{}g^BP<9^%beyvp)vD&1SpQ_@Kn6 zHFlAH3gZ7nkSDc!NsuRcxcUt_G;8;gAW!sgeT000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jv114+IGuVb*v60028lL_t(I%VS^|1r!5DY=TzS zcK Date: Tue, 22 Feb 2022 18:05:22 +0000 Subject: [PATCH 168/521] Add 'mods/ITEMS/mcl_lanterns/register.lua' --- mods/ITEMS/mcl_lanterns/register.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/register.lua diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua new file mode 100644 index 000000000..46ead33ce --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -0,0 +1,18 @@ +local S = minetest.get_translator("mcl_lanterns") + +mcl_lanterns.register_lantern("lantern", { + description = S("Lantern"), + longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), + texture = "mcl_lanterns_lantern.png", + texture_inv = "mcl_lanterns_lantern_inv.png", + light_level = 14, +}) + +minetest.register_craft({ + output = "mcl_lanterns:lantern_floor", + recipe = { + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_torches:torch" , "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + }, +}) \ No newline at end of file From 0ed33b5f45685f6c88e85117a1977b452c26a79b Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:06:35 +0000 Subject: [PATCH 169/521] Update 'mods/ITEMS/mcl_lanterns/init.lua' --- mods/ITEMS/mcl_lanterns/init.lua | 223 ++++++++++++++++++++++++++----- 1 file changed, 191 insertions(+), 32 deletions(-) diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua index c4a717f77..e6707b075 100644 --- a/mods/ITEMS/mcl_lanterns/init.lua +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -1,44 +1,203 @@ local S = minetest.get_translator("mcl_lanterns") -local N = function(s) return s end +local modpath = minetest.get_modpath("mcl_lanterns") -minetest.register_node("mcl_lanterns:lantern", { - tiles = { - "lantern_top.png", - "lantern_bottom.png", - "lantern.png", - "lantern.png", - "lantern.png", - "lantern.png", - }, - groups = {pickaxey=3}, - inventory_image = "lantern.png", - light_source = 15, - description = S("Lantern"), - drawtype = "nodebox", +mcl_lanterns = {} + +--[[ +TODO: +- add lantern specific sounds +- remove the hack arround walmounted nodes +]] + +function mcl_lanterns.register_lantern(name, def) + local itemstring_floor = "mcl_lanterns:"..name.."_floor" + local itemstring_ceiling = "mcl_lanterns:"..name.."_ceiling" + + local sounds = mcl_sounds.node_sound_metal_defaults() + + minetest.register_node(itemstring_floor, { + description = def.description, + _doc_items_longdesc = def.longdesc, + drawtype = "mesh", + mesh = "mcl_lanterns_lantern_floor.obj", + inventory_image = def.texture_inv, + wield_image = def.texture_inv, + tiles = { + { + name = def.texture, + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + } + }, + use_texture_alpha = "clip", + paramtype = "light", + paramtype2 = "wallmounted", + place_param2 = 1, + node_placement_prediction = "", + sunlight_propagates = true, + light_source = def.light_level, + groups = {pickaxey = 1, attached_node = 1, deco_block = 1, lantern = 1}, + selection_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, + {-0.125, -0.0625, -0.125, 0.125, 0.0625, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, + }, + }, + collision_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, + {-0.125, -0.0625, -0.125, 0.125, 0.0625, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, + }, + }, + sounds = sounds, + on_place = function(itemstack, placer, pointed_thing) + local new_stack = mcl_util.call_on_rightclick(itemstack, placer, pointed_thing) + if new_stack then + return new_stack + end + + local under = pointed_thing.under + local above = pointed_thing.above + + local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) + local fakestack = itemstack + if wdir == 0 then + fakestack:set_name(itemstring_ceiling) + elseif wdir == 1 then + fakestack:set_name(itemstring_floor) + end + + local success + itemstack, success = minetest.item_place(fakestack, placer, pointed_thing, wdir) + itemstack:set_name(itemstring_floor) + + if success then + minetest.sound_play(sounds.place, {pos = under, gain = 1}, true) + end + + return itemstack + end, + on_rotate = false, + _mcl_hardness = 3.5, + _mcl_blast_resistance = 3.5, + }) + + minetest.register_node(itemstring_ceiling, { + description = def.description, + _doc_items_create_entry = false, + drawtype = "mesh", + mesh = "mcl_lanterns_lantern_ceiling.obj", + tiles = { + { + name = def.texture, + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + } + }, + use_texture_alpha = "clip", + paramtype = "light", + paramtype2 = "wallmounted", + place_param2 = 0, + node_placement_prediction = "", + sunlight_propagates = true, + light_source = def.light_level, + groups = {pickaxey = 1, attached_node = 1, deco_block = 1, lantern = 1, not_in_creative_inventory = 1}, + drop = itemstring_floor, + selection_box = { + type = "fixed", + fixed = { + {-0.1875, 0, -0.1875, 0.1875, 0.4375, 0.1875}, + {-0.125, -0.125, -0.125, 0.125, 0, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, + }, + }, + collision_box = { + type = "fixed", + fixed = { + {-0.1875, 0, -0.1875, 0.1875, 0.4375, 0.1875}, + {-0.125, -0.125, -0.125, 0.125, 0, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, + }, + }, + sounds = sounds, + on_rotate = false, + _mcl_hardness = 3.5, + _mcl_blast_resistance = 3.5, + }) +end + +minetest.register_node("mcl_lanterns:chain", { + description = S("Chain"), + _doc_items_longdesc = S("Chains are metallic decoration blocks."), + inventory_image = "mcl_lanterns_chain_inv.png", + tiles = {"mcl_lanterns_chain.png"}, + drawtype = "mesh", paramtype = "light", paramtype2 = "facedir", - _mcl_hardness = 1, - node_box = { + use_texture_alpha = "clip", + mesh = "mcl_lanterns_chain.obj", + is_ground_content = false, + sunlight_propagates = true, + collision_box = { type = "fixed", fixed = { - {-0.1875, -0.5000, -0.1875, 0.1875, -0.06250, 0.1875}, - {-0.1250, -0.06250, -0.1250, 0.1250, 0.06250, 0.1250}, - {-0.06250, 0.1250, -0.006250, 0.06250, 0.1875, 0.006250}, - {-0.06250, 0.06250, -0.006250, -0.03125, 0.1250, 0.006250}, - {0.03125, 0.06250, -0.006250, 0.06250, 0.1250, 0.006250}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, } }, - stack_max = 64, + selection_box = { + type = "fixed", + fixed = { + {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}, + } + }, + groups = {pickaxey = 1, deco_block = 1}, + sounds = mcl_sounds.node_sound_metal_defaults(), + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + local p0 = pointed_thing.under + local p1 = pointed_thing.above + local param2 = 0 + + local placer_pos = placer:get_pos() + if placer_pos then + local dir = { + x = p1.x - placer_pos.x, + y = p1.y - placer_pos.y, + z = p1.z - placer_pos.z + } + param2 = minetest.dir_to_facedir(dir) + end + + if p0.y - 1 == p1.y then + param2 = 20 + elseif p0.x - 1 == p1.x then + param2 = 16 + elseif p0.x + 1 == p1.x then + param2 = 12 + elseif p0.z - 1 == p1.z then + param2 = 8 + elseif p0.z + 1 == p1.z then + param2 = 4 + end + + return minetest.item_place(itemstack, placer, pointed_thing, param2) + end, + _mcl_blast_resistance = 6, + _mcl_hardness = 5, }) - - minetest.register_craft({ - type = "shaped", - output = "mcl_lanterns:lantern", + output = "mcl_lanterns:chain", recipe = { - {"mcl_core:iron_nugget", "mcl_core:iron_nugget","mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_core:torch", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"} - } -}) \ No newline at end of file + {"mcl_core:iron_nugget"}, + {"mcl_core:iron_ingot"}, + {"mcl_core:iron_nugget"}, + }, +}) + +dofile(modpath.."/register.lua") \ No newline at end of file From 3ad0abbf94afbba3549a34bae95a9f83ac4c01cd Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:07:22 +0000 Subject: [PATCH 170/521] Delete 'mods/ITEMS/mcl_lanterns/depends.txt' --- mods/ITEMS/mcl_lanterns/depends.txt | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/depends.txt diff --git a/mods/ITEMS/mcl_lanterns/depends.txt b/mods/ITEMS/mcl_lanterns/depends.txt deleted file mode 100644 index c1ada2d4e..000000000 --- a/mods/ITEMS/mcl_lanterns/depends.txt +++ /dev/null @@ -1,7 +0,0 @@ -mcl_core -screwdriver -mcl_stairs -mclx_stairs -mcl_walls -mclx_fences -mcl_torches From c2a5c3057662b0bec7fc1ed073704be4ce74b709 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:07:53 +0000 Subject: [PATCH 171/521] Add 'mods/ITEMS/mcl_lanterns/mod.conf' --- mods/ITEMS/mcl_lanterns/mod.conf | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/mod.conf diff --git a/mods/ITEMS/mcl_lanterns/mod.conf b/mods/ITEMS/mcl_lanterns/mod.conf new file mode 100644 index 000000000..d1e55a05d --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/mod.conf @@ -0,0 +1,5 @@ +name = mcl_lanterns +description = Add lanterns and chains to MineClone2 +depends = mcl_sounds +optional_depends = +author = AFCMS From 77f59161d938eb9d910e82be5aeff3f23163d3de Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:08:09 +0000 Subject: [PATCH 172/521] Delete 'mods/ITEMS/mcl_lanterns/README.md' --- mods/ITEMS/mcl_lanterns/README.md | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/README.md diff --git a/mods/ITEMS/mcl_lanterns/README.md b/mods/ITEMS/mcl_lanterns/README.md deleted file mode 100644 index 04a0378c0..000000000 --- a/mods/ITEMS/mcl_lanterns/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Lanterns Mod - -This mod is made for the Minetest Subgame Mineclone2. - -It adds new Block: Lanterns - -## Version: - -Its version 1.0.0 - -## License - -CC BY-SA 4.0 - -## Author - -PrairieWind (Github: PrairieAstronomer) \ No newline at end of file From 8d89f36b4db915a83ad419f1d28d886affcaadce Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:09:07 +0000 Subject: [PATCH 173/521] Add 'mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj' --- .../models/mcl_lanterns_chain.obj | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj diff --git a/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj new file mode 100644 index 000000000..94a7b8971 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_chain.obj @@ -0,0 +1,24 @@ +# Blender v3.0.1 OBJ File: 'chain.blend' +# www.blender.org +o Plane +v 0.066291 0.500000 0.066291 +v 0.066291 -0.500000 0.066291 +v -0.066291 0.500000 -0.066291 +v -0.066291 -0.500000 -0.066291 +v -0.066291 0.500000 0.066291 +v -0.066291 -0.500000 0.066291 +v 0.066291 0.500000 -0.066291 +v 0.066291 -0.500000 -0.066291 +vt -0.000000 1.000000 +vt 0.000000 -0.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 -0.000000 +vt 0.375000 -0.000000 +vt 0.375000 1.000000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +s off +f 1/1/1 2/2/1 4/3/1 3/4/1 +f 5/5/2 6/6/2 8/7/2 7/8/2 From 39be3e0b6a233c3981ff5c66687cea9b6cd2b93b Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:10:28 +0000 Subject: [PATCH 174/521] Add 'mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj' --- .../models/mcl_lanterns_lantern_ceiling.obj | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj diff --git a/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj new file mode 100644 index 000000000..7079aa7cb --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_ceiling.obj @@ -0,0 +1,104 @@ +# Blender v3.0.1 OBJ File: 'lantern.blend' +# www.blender.org +o Lantern_Ceiling +v 0.187500 -0.000000 0.187500 +v 0.187500 0.437500 0.187500 +v 0.187500 0.000000 -0.187500 +v 0.187500 0.437500 -0.187500 +v -0.187500 -0.000000 0.187500 +v -0.187500 0.437500 0.187500 +v -0.187500 0.000000 -0.187500 +v -0.187500 0.437500 -0.187500 +v 0.125000 -0.125000 0.125000 +v 0.125000 -0.000000 0.125000 +v 0.125000 -0.125000 -0.125000 +v 0.125000 0.000000 -0.125000 +v -0.125000 -0.125000 0.125000 +v -0.125000 -0.000000 0.125000 +v -0.125000 -0.125000 -0.125000 +v -0.125000 0.000000 -0.125000 +v 0.066291 -0.500000 -0.066291 +v 0.066291 -0.125000 -0.066291 +v -0.066291 -0.500000 0.066291 +v -0.066291 -0.125000 0.066291 +v -0.066291 -0.500000 -0.066291 +v -0.066291 -0.125000 -0.066291 +v 0.066291 -0.500000 0.066291 +v 0.066291 -0.125000 0.066291 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.062500 0.125000 +vt 0.312500 0.125000 +vt 0.312500 0.375000 +vt 0.062500 0.375000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.687500 0.625000 +vt 0.687500 0.250000 +vt 0.875000 0.250000 +vt 0.875000 0.625000 +vt 0.687500 1.000000 +vt 0.687500 0.625000 +vt 0.875000 0.625000 +vt 0.875000 1.000000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/6/2 7/7/2 8/8/2 +f 8/9/3 7/10/3 5/11/3 6/12/3 +f 6/13/4 2/14/4 4/5/4 8/8/4 +f 2/15/5 1/16/5 3/17/5 4/18/5 +f 6/19/6 5/20/6 1/21/6 2/22/6 +f 9/23/1 13/24/1 15/25/1 11/26/1 +f 12/27/2 11/28/2 15/29/2 16/30/2 +f 16/31/3 15/32/3 13/33/3 14/34/3 +f 14/35/4 10/36/4 12/37/4 16/38/4 +f 10/39/5 9/40/5 11/41/5 12/42/5 +f 14/43/6 13/44/6 9/45/6 10/46/6 +f 17/47/7 18/48/7 20/49/7 19/50/7 +f 21/51/8 22/52/8 24/53/8 23/54/8 From 6c2e2ae53551bba307be1c27ecf0b7f48f2425bf Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:11:14 +0000 Subject: [PATCH 175/521] Add 'mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj' --- .../models/mcl_lanterns_lantern_floor.obj | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj diff --git a/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj new file mode 100644 index 000000000..c90ece680 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/models/mcl_lanterns_lantern_floor.obj @@ -0,0 +1,104 @@ +# Blender v3.0.1 OBJ File: 'lantern.blend' +# www.blender.org +o Lantern_Floor +v 0.187500 -0.062500 -0.187500 +v 0.187500 -0.500000 -0.187500 +v 0.187500 -0.062500 0.187500 +v 0.187500 -0.500000 0.187500 +v -0.187500 -0.062500 -0.187500 +v -0.187500 -0.500000 -0.187500 +v -0.187500 -0.062500 0.187500 +v -0.187500 -0.500000 0.187500 +v 0.125000 0.062500 -0.125000 +v 0.125000 -0.062500 -0.125000 +v 0.125000 0.062500 0.125000 +v 0.125000 -0.062500 0.125000 +v -0.125000 0.062500 -0.125000 +v -0.125000 -0.062500 -0.125000 +v -0.125000 0.062500 0.125000 +v -0.125000 -0.062500 0.125000 +v 0.066291 0.187500 0.066291 +v 0.066291 0.062500 0.066291 +v -0.066291 0.187500 -0.066291 +v -0.066291 0.062500 -0.066291 +v -0.066291 0.187500 0.066291 +v -0.066291 0.062500 0.066291 +v 0.066291 0.187500 -0.066291 +v 0.066291 0.062500 -0.066291 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.062500 0.125000 +vt 0.312500 0.125000 +vt 0.312500 0.375000 +vt 0.062500 0.375000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.687500 0.937500 +vt 0.687500 0.812500 +vt 0.875000 0.812500 +vt 0.875000 0.937500 +vt 0.687500 0.937500 +vt 0.687500 0.812500 +vt 0.875000 0.812500 +vt 0.875000 0.937500 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/6/2 7/7/2 8/8/2 +f 8/9/3 7/10/3 5/11/3 6/12/3 +f 6/13/4 2/14/4 4/5/4 8/8/4 +f 2/15/5 1/16/5 3/17/5 4/18/5 +f 6/19/6 5/20/6 1/21/6 2/22/6 +f 9/23/1 13/24/1 15/25/1 11/26/1 +f 12/27/2 11/28/2 15/29/2 16/30/2 +f 16/31/3 15/32/3 13/33/3 14/34/3 +f 14/35/4 10/36/4 12/37/4 16/38/4 +f 10/39/5 9/40/5 11/41/5 12/42/5 +f 14/43/6 13/44/6 9/45/6 10/46/6 +f 17/47/7 18/48/7 20/49/7 19/50/7 +f 21/51/8 22/52/8 24/53/8 23/54/8 From 95cfbd16e68c82cb3b25c8064be09c8bc8bd744a Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:13:47 +0000 Subject: [PATCH 176/521] Delete 'mods/ITEMS/mcl_lanterns/textures/lantern_top.png' --- mods/ITEMS/mcl_lanterns/textures/lantern_top.png | Bin 1043 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/textures/lantern_top.png diff --git a/mods/ITEMS/mcl_lanterns/textures/lantern_top.png b/mods/ITEMS/mcl_lanterns/textures/lantern_top.png deleted file mode 100644 index 60e85591a2e3a61e4471cbb0d0914beddd0f0f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmV+u1nm2XP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=HIcH}4wh2L34F99Kh#Bwk{=gbaf`F+8Zld4oQ z)75#5DI2Vk1>8>uP4gX9lr^eoQdQHe#n_^WB~vrYR&vOUSD56K)n&^$mx4|ULKi$; z;8DsE4nE=`M>_PdBOj$AeQK;yQ`KrU*V01chUMQe{X6UIub) z@Q6c38aiy`Q7&qm>OD1jAon#j+SDeoxcu~u8qBJ<5Hw#WGMRx`hy>y~2_T`vWaf=x z43pes=5xTJkN|2V6HcQ^3w2~Dr4R)_f2-YP5Sva?E{Y_UJ#W-K{}g^BP<9^%beyvp)vD&1SpQ_@Kn6 zHFlAH3gZ7nkSDc!NsuRcxcUt_G;8;gAW!sgeT000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jv114+IGuVb*v60028lL_t(I%VS^|1r!5DY=TzS zcK Date: Tue, 22 Feb 2022 18:14:00 +0000 Subject: [PATCH 177/521] Delete 'mods/ITEMS/mcl_lanterns/textures/lantern_bottom.png' --- .../mcl_lanterns/textures/lantern_bottom.png | Bin 1209 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/textures/lantern_bottom.png diff --git a/mods/ITEMS/mcl_lanterns/textures/lantern_bottom.png b/mods/ITEMS/mcl_lanterns/textures/lantern_bottom.png deleted file mode 100644 index b424385a27e3aee7687efe24215ba1481a47deb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1209 zcmV;q1V;ObP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHb}T0hMgJK^hJX-4VmK6!wK9VYKZl3Qx7&{G zI5&ST+zq8xNkSV$+4aBv9PSTXlyh=X)KX5#-*gJm%)SF-9H3~ z7(MUX)Q^6FTwWj0c;wfk+-W^_>=>fk@Va<L$ z%F&UNJjwZX6P~HPcz*cdlH0|b+>Oy}jJ{`AVnU{pJCk~u${IoOLMnMZme3R*!B|(z zXoe|P5Nn`$p;bqj0<#O|uqbizb##%`98VAu~#tYssF6%KjV3V=jGclEy4k&w`;eQH_^-Hye~FcTW;@A zYh|4%ya3HzICJWGps+!qTM1U?ne^@6{Z|7&hJFlv*--C$$ri%CUL(9IM8Thb>D?_5 zoeCj)9D!3pf|r~n!fF3`?>_^6H@Qb9P>{f-FlT0_fY0^L{fewIM@ zRlJ|kbzjB%W&C_yJ9`$z_8K?8gYwTk$)3kNWDiGk^*3zT**pJZ=*Q6iX=vaT2LJH7 zzX9>#u;+!Zp#}f|00v@9M??T203iS&a0G!u00009a7bBm001r{001r{0eGc9b^rhX z2XskIMF-^q5)TCr>={A~0001pNkl Date: Tue, 22 Feb 2022 18:14:11 +0000 Subject: [PATCH 178/521] Delete 'mods/ITEMS/mcl_lanterns/textures/lantern.png' --- mods/ITEMS/mcl_lanterns/textures/lantern.png | Bin 5736 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/textures/lantern.png diff --git a/mods/ITEMS/mcl_lanterns/textures/lantern.png b/mods/ITEMS/mcl_lanterns/textures/lantern.png deleted file mode 100644 index 1e81819ba95fb37c446bc5b37278432023322031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5736 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 From a20e00ab99bfdd5b19f0cfa24d7150d88eee89aa Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:14:48 +0000 Subject: [PATCH 179/521] added textures --- mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png | Bin 0 -> 205 bytes .../mcl_lanterns/mcl_lanterns_chain_inv.png | Bin 0 -> 202 bytes mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png | Bin 0 -> 8614 bytes .../mcl_lanterns/mcl_lanterns_lantern_inv.png | Bin 0 -> 5669 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png create mode 100644 mods/ITEMS/mcl_lanterns/mcl_lanterns_chain_inv.png create mode 100644 mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png create mode 100644 mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern_inv.png diff --git a/mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png b/mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png new file mode 100644 index 0000000000000000000000000000000000000000..01725114a6c7eba66c7abf561e57563b46171c7f GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFO>_%)r1c z48n{Iv*t(u1=&kHeO=j~u<#2hN;U1hrwSC}5AX?b1=7mO$~rnarlzL<|NmdynYtb* z#8?vK7tG-B>_!@hljQC0!qT5{GZ4tp@^ohB;AG69rR^B$ n6JS~)!hN7rbK(N-!(0q^S1^4Ln7^V2sEfhV)z4*}Q$iB}fp9ar literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/mcl_lanterns_chain_inv.png b/mods/ITEMS/mcl_lanterns/mcl_lanterns_chain_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c89dab469bf26d5c6c0c06c3dab498bccad248 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFO>_%)r1c z48n{Iv*t(u1=&kHeO=j~u<#4X2v6+Pvj+JsWgQ(IQ&ZFb|Nk%UOkEEY zVk`;r3ubV5b|VeMN%D4gVd>Af83^R4d%8G=a9mGLaA0C$3TQLvImj~ED5SwigoQ&p kt;JB}#S@H?X8TLOZa{Dfm#?mUHx3vIVCg!0JT^$DF6Tf literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png b/mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..f9936e0fbb05622646be067e889c7d7b6227445d GIT binary patch literal 8614 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 Vl@Gr#Z;k)}Gh-{Gn+Be7{{>^30(<}f literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern_inv.png b/mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..8bdc8095fc5de299ae0cbc348ff585c0b16bb0e0 GIT binary patch literal 5669 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 Date: Tue, 22 Feb 2022 18:15:17 +0000 Subject: [PATCH 180/521] Delete 'mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png' --- mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png | Bin 205 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png diff --git a/mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png b/mods/ITEMS/mcl_lanterns/mcl_lanterns_chain.png deleted file mode 100644 index 01725114a6c7eba66c7abf561e57563b46171c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFO>_%)r1c z48n{Iv*t(u1=&kHeO=j~u<#2hN;U1hrwSC}5AX?b1=7mO$~rnarlzL<|NmdynYtb* z#8?vK7tG-B>_!@hljQC0!qT5{GZ4tp@^ohB;AG69rR^B$ n6JS~)!hN7rbK(N-!(0q^S1^4Ln7^V2sEfhV)z4*}Q$iB}fp9ar From d347f3b9d34567912efcbc3ceec085f61edc97ef Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:15:30 +0000 Subject: [PATCH 181/521] Delete 'mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern_inv.png' --- .../mcl_lanterns/mcl_lanterns_lantern_inv.png | Bin 5669 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern_inv.png diff --git a/mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern_inv.png b/mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern_inv.png deleted file mode 100644 index 8bdc8095fc5de299ae0cbc348ff585c0b16bb0e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5669 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 Date: Tue, 22 Feb 2022 18:15:40 +0000 Subject: [PATCH 182/521] Delete 'mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png' --- mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png | Bin 8614 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png diff --git a/mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png b/mods/ITEMS/mcl_lanterns/mcl_lanterns_lantern.png deleted file mode 100644 index f9936e0fbb05622646be067e889c7d7b6227445d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8614 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 Vl@Gr#Z;k)}Gh-{Gn+Be7{{>^30(<}f From 25e50c58dd57229cfdd0606af66cd44d4fb508c1 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:15:49 +0000 Subject: [PATCH 183/521] Delete 'mods/ITEMS/mcl_lanterns/mcl_lanterns_chain_inv.png' --- .../ITEMS/mcl_lanterns/mcl_lanterns_chain_inv.png | Bin 202 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/mcl_lanterns_chain_inv.png diff --git a/mods/ITEMS/mcl_lanterns/mcl_lanterns_chain_inv.png b/mods/ITEMS/mcl_lanterns/mcl_lanterns_chain_inv.png deleted file mode 100644 index a8c89dab469bf26d5c6c0c06c3dab498bccad248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFO>_%)r1c z48n{Iv*t(u1=&kHeO=j~u<#4X2v6+Pvj+JsWgQ(IQ&ZFb|Nk%UOkEEY zVk`;r3ubV5b|VeMN%D4gVd>Af83^R4d%8G=a9mGLaA0C$3TQLvImj~ED5SwigoQ&p kt;JB}#S@H?X8TLOZa{Dfm#?mUHx3vIVCg!0JT^$DF6Tf From d31d4707188ed2291ac7f59e7eea6ff890eb0b7d Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 18:16:45 +0000 Subject: [PATCH 184/521] added lantern textures --- .../mcl_lanterns/textures/mcl_lanterns_chain.png | Bin 0 -> 205 bytes .../textures/mcl_lanterns_chain_inv.png | Bin 0 -> 202 bytes .../textures/mcl_lanterns_lantern.png | Bin 0 -> 8614 bytes .../textures/mcl_lanterns_lantern_inv.png | Bin 0 -> 5669 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain.png new file mode 100644 index 0000000000000000000000000000000000000000..01725114a6c7eba66c7abf561e57563b46171c7f GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFO>_%)r1c z48n{Iv*t(u1=&kHeO=j~u<#2hN;U1hrwSC}5AX?b1=7mO$~rnarlzL<|NmdynYtb* z#8?vK7tG-B>_!@hljQC0!qT5{GZ4tp@^ohB;AG69rR^B$ n6JS~)!hN7rbK(N-!(0q^S1^4Ln7^V2sEfhV)z4*}Q$iB}fp9ar literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_chain_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c89dab469bf26d5c6c0c06c3dab498bccad248 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFO>_%)r1c z48n{Iv*t(u1=&kHeO=j~u<#4X2v6+Pvj+JsWgQ(IQ&ZFb|Nk%UOkEEY zVk`;r3ubV5b|VeMN%D4gVd>Af83^R4d%8G=a9mGLaA0C$3TQLvImj~ED5SwigoQ&p kt;JB}#S@H?X8TLOZa{Dfm#?mUHx3vIVCg!0JT^$DF6Tf literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..f9936e0fbb05622646be067e889c7d7b6227445d GIT binary patch literal 8614 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 Vl@Gr#Z;k)}Gh-{Gn+Be7{{>^30(<}f literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_lantern_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..8bdc8095fc5de299ae0cbc348ff585c0b16bb0e0 GIT binary patch literal 5669 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 Date: Tue, 22 Feb 2022 22:30:00 +0000 Subject: [PATCH 185/521] Update 'mods/ITEMS/mcl_lanterns/register.lua' --- mods/ITEMS/mcl_lanterns/register.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua index 46ead33ce..12ac9468f 100644 --- a/mods/ITEMS/mcl_lanterns/register.lua +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -15,4 +15,21 @@ minetest.register_craft({ {"mcl_core:iron_nugget", "mcl_torches:torch" , "mcl_core:iron_nugget"}, {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, }, +}) + +mcl_lanterns.register_lantern("soul_lantern", { + description = S("Soul Lantern"), + longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), + texture = "mcl_lanterns_soul_lantern.png", + texture_inv = "mcl_lanterns_soul_lantern_inv.png", + light_level = 10, +}) + +minetest.register_craft({ + output = "mcl_lanterns:soul_lantern_floor", + recipe = { + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_blackstone:soul_torch", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + }, }) \ No newline at end of file From dc34d32f07a96fc5f3afa6657cd3fa77103c26ce Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 22:30:52 +0000 Subject: [PATCH 186/521] Update 'mods/ITEMS/mcl_lanterns/mod.conf' --- mods/ITEMS/mcl_lanterns/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_lanterns/mod.conf b/mods/ITEMS/mcl_lanterns/mod.conf index d1e55a05d..a9828806f 100644 --- a/mods/ITEMS/mcl_lanterns/mod.conf +++ b/mods/ITEMS/mcl_lanterns/mod.conf @@ -1,5 +1,5 @@ name = mcl_lanterns description = Add lanterns and chains to MineClone2 -depends = mcl_sounds +depends = mcl_sounds, mcl_blackstone optional_depends = author = AFCMS From a3551149b94d2fe19a693d175639198643cfecb3 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 22:32:46 +0000 Subject: [PATCH 187/521] Upload files to 'mods/ITEMS/mcl_lanterns/textures' --- .../textures/mcl_lanterns_soul_lantern.png | Bin 0 -> 8642 bytes .../textures/mcl_lanterns_soul_lantern_inv.png | Bin 0 -> 5677 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern_inv.png diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..6e20058ea35d03bcdd7c225d2c372ee7be934f82 GIT binary patch literal 8642 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 literal 0 HcmV?d00001 From 1cf22c3c60b8ad0bca93425c51b3cbc833955ab8 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 22:34:15 +0000 Subject: [PATCH 188/521] removed mcl_blackstone:soul_lantern code, as is now in mcl_lanterns --- mods/ITEMS/mcl_blackstone/init.lua | 41 ------------------------------ 1 file changed, 41 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 415351073..b46a1add7 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -825,44 +825,3 @@ minetest.register_craft({ } }) -minetest.register_node("mcl_blackstone:soul_lantern", { - tiles = { - "lantern_top.png", - "lantern_bottom.png", - "lantern.png", - "lantern.png", - "lantern.png", - "lantern.png", - }, - groups = {pickaxey=3}, - inventory_image = "lantern.png", - light_source = 10, - description = S("Soul Lantern"), - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - _mcl_hardness = 1, - node_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5000, -0.1875, 0.1875, -0.06250, 0.1875}, - {-0.1250, -0.06250, -0.1250, 0.1250, 0.06250, 0.1250}, - {-0.06250, 0.1250, -0.006250, 0.06250, 0.1875, 0.006250}, - {-0.06250, 0.06250, -0.006250, -0.03125, 0.1250, 0.006250}, - {0.03125, 0.06250, -0.006250, 0.06250, 0.1250, 0.006250}, - } - }, - stack_max = 64, -}) - - - -minetest.register_craft({ - type = "shaped", - output = "mcl_blackstone:soul_lantern", - recipe = { - {"mcl_core:iron_nugget", "mcl_core:iron_nugget","mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_blackstone:soul_torch", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"} - } -}) From 05380d838d8ed358a9c69890cf637c5e9d145153 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 22 Feb 2022 22:34:54 +0000 Subject: [PATCH 189/521] Delete 'mods/ITEMS/mcl_blackstone/textures/lantern.png' --- mods/ITEMS/mcl_blackstone/textures/lantern.png | Bin 1328 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/textures/lantern.png diff --git a/mods/ITEMS/mcl_blackstone/textures/lantern.png b/mods/ITEMS/mcl_blackstone/textures/lantern.png deleted file mode 100644 index a0cec3cbfae5ae507ba783d8cb83bbb3563832b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1328 zcmV-01<(44P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|amgFc5{O1&N1SAj=$H6S`%?;-G6D;NI%35A` zReiR}G*~H%AVMtZ`hWip_YW@i998y1RJ8-5AZr=zDY}CNP!U8Pv;ARtt_7s0{11grfKg+PX?c zF$}Rnu?96SlgZvhX%zX@L-eiK37uhXS!;6y%RaLk<-Q z5}k-7Q8CF$#VK zTpMA;AtMbPHu5O9YDd-As?n2jpQ}bkwW(NKe)>=iX4RJvG?x>Znn5v+1jThKfQ06$ znKz1&r*cy>pBa-v7^;y>aWLDV7!-`1SO(qNJ(T-YHz)CrbmNbdb5pvXP|i*1j&g5x zdq=fa){YXEKywyOPJI|y*x=Buu$8$deYtku4e&S6-#}juG-8+yE;UjVeC9zb_u0Z( zA^7zp_V%yT?hjrF&F{H%&0S_9@zgahNLbkF4-hmFeeBTt?!OQgyw$=H>M$a@P-c&# zz-Gqr_o%sR_bC-5yA>Z$Y(udJJDVK$Lus@Fea6Of{g$0gj{814Amh4LW^=KqMcRtr zEsxxCX$!$T^Bw#(Zz$PoE*nc%8ihABcVqh|H1|fReuV`_70?DwraOtPJrWF?-Xap) zUk)2wbsk#}|GlsT?YC0N z{r<|MSKGoiY}bUN$c-;b-trrc;bTK8fJ5DHMEJKbwEP}{?vFF?gT!;KohF-VJuFsREb zpooza2I}$(47Oqt3_rhpV_=Y1V0cbWH2(bdje(tu3vV=Hb-|Ax-x&6tJ;T6YY{J0s m Date: Tue, 22 Feb 2022 22:35:09 +0000 Subject: [PATCH 190/521] Delete 'mods/ITEMS/mcl_blackstone/textures/lantern_bottom.png' --- .../mcl_blackstone/textures/lantern_bottom.png | Bin 1209 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/textures/lantern_bottom.png diff --git a/mods/ITEMS/mcl_blackstone/textures/lantern_bottom.png b/mods/ITEMS/mcl_blackstone/textures/lantern_bottom.png deleted file mode 100644 index b424385a27e3aee7687efe24215ba1481a47deb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1209 zcmV;q1V;ObP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHb}T0hMgJK^hJX-4VmK6!wK9VYKZl3Qx7&{G zI5&ST+zq8xNkSV$+4aBv9PSTXlyh=X)KX5#-*gJm%)SF-9H3~ z7(MUX)Q^6FTwWj0c;wfk+-W^_>=>fk@Va<L$ z%F&UNJjwZX6P~HPcz*cdlH0|b+>Oy}jJ{`AVnU{pJCk~u${IoOLMnMZme3R*!B|(z zXoe|P5Nn`$p;bqj0<#O|uqbizb##%`98VAu~#tYssF6%KjV3V=jGclEy4k&w`;eQH_^-Hye~FcTW;@A zYh|4%ya3HzICJWGps+!qTM1U?ne^@6{Z|7&hJFlv*--C$$ri%CUL(9IM8Thb>D?_5 zoeCj)9D!3pf|r~n!fF3`?>_^6H@Qb9P>{f-FlT0_fY0^L{fewIM@ zRlJ|kbzjB%W&C_yJ9`$z_8K?8gYwTk$)3kNWDiGk^*3zT**pJZ=*Q6iX=vaT2LJH7 zzX9>#u;+!Zp#}f|00v@9M??T203iS&a0G!u00009a7bBm001r{001r{0eGc9b^rhX z2XskIMF-^q5)TCr>={A~0001pNkl Date: Tue, 22 Feb 2022 22:35:23 +0000 Subject: [PATCH 191/521] Delete 'mods/ITEMS/mcl_blackstone/textures/lantern_top.png' --- .../mcl_blackstone/textures/lantern_top.png | Bin 1043 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/textures/lantern_top.png diff --git a/mods/ITEMS/mcl_blackstone/textures/lantern_top.png b/mods/ITEMS/mcl_blackstone/textures/lantern_top.png deleted file mode 100644 index 60e85591a2e3a61e4471cbb0d0914beddd0f0f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmV+u1nm2XP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=HIcH}4wh2L34F99Kh#Bwk{=gbaf`F+8Zld4oQ z)75#5DI2Vk1>8>uP4gX9lr^eoQdQHe#n_^WB~vrYR&vOUSD56K)n&^$mx4|ULKi$; z;8DsE4nE=`M>_PdBOj$AeQK;yQ`KrU*V01chUMQe{X6UIub) z@Q6c38aiy`Q7&qm>OD1jAon#j+SDeoxcu~u8qBJ<5Hw#WGMRx`hy>y~2_T`vWaf=x z43pes=5xTJkN|2V6HcQ^3w2~Dr4R)_f2-YP5Sva?E{Y_UJ#W-K{}g^BP<9^%beyvp)vD&1SpQ_@Kn6 zHFlAH3gZ7nkSDc!NsuRcxcUt_G;8;gAW!sgeT000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jv114+IGuVb*v60028lL_t(I%VS^|1r!5DY=TzS zcK Date: Wed, 23 Feb 2022 06:26:21 +0400 Subject: [PATCH 192/521] Add ruined portal frames --- mods/MAPGEN/mcl_structures/ruined_portal.lua | 321 +++++++++++++++++++ mods/MAPGEN/mcl_structures/structures.lua | 1 + 2 files changed, 322 insertions(+) create mode 100644 mods/MAPGEN/mcl_structures/ruined_portal.lua diff --git a/mods/MAPGEN/mcl_structures/ruined_portal.lua b/mods/MAPGEN/mcl_structures/ruined_portal.lua new file mode 100644 index 000000000..f75d536cf --- /dev/null +++ b/mods/MAPGEN/mcl_structures/ruined_portal.lua @@ -0,0 +1,321 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local chance_per_chunk = 400 +chance_per_chunk = 1 +local noise_multiplier = 2.5 +local random_offset = 9159 +local scanning_ratio = 0.0001 +local struct_threshold = chance_per_chunk - 3 + +local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level + +local rotation_to_orientation = { + ["0"] = 1, + ["90"] = 0, + ["180"] = 1, + ["270"] = 0, +} + +local rotation_to_param2 = { + ["0"] = 3, + ["90"] = 0, + ["180"] = 1, + ["270"] = 2, +} + +local node_top = { + "mcl_core:goldblock", + "mcl_core:stone_with_gold", + "mcl_core:goldblock", +} + +local stone1 = {name = "mcl_core:stonebrickcracked"} +local stone2 = {name = "mcl_core:stonebrickmossy"} +local stone4 = {name = "mcl_core:stonebrick"} + +local slab1 = {name = "mcl_stairs:slab_stonebrickcracked_top"} +local slab2 = {name = "mcl_stairs:slab_stonebrickmossy_top"} +local slab3 = {name = "mcl_stairs:slab_stone_top"} +local slab4 = {name = "mcl_stairs:slab_stonebrick_top"} + +local stair1 = "mcl_stairs:stair_stonebrickcracked" +local stair2 = "mcl_stairs:stair_stonebrickmossy" +local stair3 = "mcl_stairs:stair_stone_rough" +local stair4 = "mcl_stairs:stair_stonebrick" + + +local function draw_frame(frame_pos, frame_width, frame_height, orientation, pr, is_chain, rotation) + local param2 = rotation_to_param2[rotation] + + local function set_ruined_node(pos, node) + if pr:next(1, 5) == 4 then return end + minetest.set_node(pos, node) + end + + local function get_random_stone_material() + local rnd = pr:next(1, 15) + if rnd < 4 then return stone1 end + if rnd == 4 then return stone2 end + if rnd == 5 then return stone3 end + return stone4 + end + + local function get_random_slab() + local rnd = pr:next(1, 15) + if rnd < 4 then return slab1 end + if rnd == 4 then return slab2 end + if rnd == 5 then return slab3 end + return slab4 + end + + local function get_random_stair(param2_offset) + local param2 = (param2 + (param2_offset or 0)) % 4 + local rnd = pr:next(1, 15) + if rnd < 4 then return {name = stair1, param2 = param2} end + if rnd == 4 then return {name = stair2, param2 = param2} end + if rnd == 5 then return {name = stair3, param2 = param2} end + return {name = stair4, param2 = param2} + end + + local function set_frame_stone_material(pos) + minetest.swap_node(pos, get_random_stone_material()) + end + + local function set_ruined_frame_stone_material(pos) + set_ruined_node(pos, get_random_stone_material()) + end + + local is_chain = is_chain + local orientation = orientation + local x1 = frame_pos.x + local y1 = frame_pos.y + local z1 = frame_pos.z + local slide_x = (1 - orientation) + local slide_z = orientation + local last_x = x1 + (frame_width - 1) * slide_x + local last_z = z1 + (frame_width - 1) * slide_z + local last_y = y1 + frame_height - 1 + + -- it's about the portal frame itself, what it will consist of + local frame_nodes = 2 * (frame_height + frame_width) - 4 + local obsidian_nodes = pr:next(math.round(frame_nodes * 0.5), math.round(frame_nodes * 0.73)) + local crying_obsidian_nodes = pr:next(math.round(obsidian_nodes * 0.09), math.round(obsidian_nodes * 0.5)) + local air_nodes = frame_nodes - obsidian_nodes + + local function set_frame_node(pos) + -- local node_choice = pr:next(1, air_nodes + obsidian_nodes) + local node_choice = math.round(mcl_structures_get_perlin_noise_level(pos) * (air_nodes + obsidian_nodes)) + if node_choice > obsidian_nodes and air_nodes > 0 then + air_nodes = air_nodes - 1 + return + end + obsidian_nodes = obsidian_nodes - 1 + if node_choice >= crying_obsidian_nodes then + minetest.swap_node(pos, {name = "mcl_core:obsidian"}) + return 1 + end + minetest.swap_node(pos, {name = "mcl_core:crying_obsidian"}) + crying_obsidian_nodes = crying_obsidian_nodes - 1 + return 1 + end + + local function set_outer_frame_node(def) + local is_top = def.is_top + if is_chain then + local pos2 = def.pos_outer2 + local is_top_hole = is_top and frame_width > 5 and ((pos2.x == x1 + slide_x * 2 and pos2.z == z1 + slide_z * 2) or (pos2.x == last_x - slide_x * 2 and pos2.z == last_z - slide_z * 2)) + if is_top_hole then + if pr:next(1, 7) > 1 then + minetest.swap_node(pos2, {name = "xpanes:bar_flat", param2 = orientation}) + end + else + set_frame_stone_material(pos2) + end + end + local is_obsidian = def.is_obsidian + if not is_obsidian and pr:next(1, 2) == 1 then return end + local pos = def.pos_outer1 + local is_decor_here = not is_top and pos.y % 3 == 2 + if is_decor_here then + minetest.swap_node(pos, {name = "mcl_core:stonebrickcarved"}) + elseif is_chain then + if not is_top and not is_obsidian then + minetest.swap_node(pos, {name = "xpanes:bar"}) + else + minetest.swap_node(pos, {name = "xpanes:bar_flat", param2 = orientation}) + end + else + if pr:next(1, 5) == 3 then + minetest.swap_node(pos, {name = "mcl_core:stonebrickcracked"}) + else + minetest.swap_node(pos, {name = "mcl_core:stonebrick"}) + end + end + end + + local function draw_roof(pos, length) + local x = pos.x + local y = pos.y + local z = pos.z + local number_of_roof_nodes = length + if number_of_roof_nodes > 1 then + set_ruined_node({x = x, y = y, z = z}, get_random_stair((param2 == 1 or param2 == 2) and -1 or 1)) + set_ruined_node({x = x + (length - 1) * slide_x, y = y, z = z + (length - 1) * slide_z}, get_random_stair((param2 == 1 or param2 == 2) and 1 or -1)) + number_of_roof_nodes = number_of_roof_nodes - 2 + x = x + slide_x + z = z + slide_z + end + while number_of_roof_nodes > 0 do + set_ruined_node({x = x, y = y, z = z}, get_random_stair((param2 == 1 or param2 == 2) and 2 or 0)) + x = x + slide_x + z = z + slide_z + number_of_roof_nodes = number_of_roof_nodes - 1 + end + end + + -- bottom corners + set_frame_node({x = x1, y = y1, z = z1}) + set_frame_node({x = last_x, y = y1, z = last_z}) + + -- top corners + local is_obsidian_top_left = set_frame_node({x = x1, y = last_y, z = z1}) + local is_obsidian_top_right = set_frame_node({x = last_x, y = last_y, z = last_z}) + + if is_chain then + if is_obsidian_top_left and pr:next(1, 4) ~= 2 then + set_frame_stone_material({x = x1 - slide_x * 2, y = last_y + 2, z = z1 - slide_z * 2}) + end + if is_obsidian_top_left and pr:next(1, 4) ~= 2 then + set_frame_stone_material({x = x1 - slide_x * 2, y = last_y + 1, z = z1 - slide_z * 2}) + end + if is_obsidian_top_left and pr:next(1, 4) ~= 2 then + set_frame_stone_material({x = last_x + slide_x * 2, y = last_y + 2, z = last_z + slide_z * 2}) + end + if is_obsidian_top_left and pr:next(1, 4) ~= 2 then + set_frame_stone_material({x = last_x + slide_x * 2, y = last_y + 1, z = last_z + slide_z * 2}) + end + end + + for y = y1, last_y do + local begin_or_end = y == y1 or y == lasy_y + local is_obsidian_left = begin_or_end and is_obsidian_top_left or set_frame_node({x = x1 , y = y, z = z1 }) + local is_obsidian_right = begin_or_end and is_obsidian_top_right or set_frame_node({x = last_x, y = y, z = last_z}) + set_outer_frame_node({ + pos_outer1 = {x = x1 - slide_x , y = y, z = z1 - slide_z }, + pos_outer2 = {x = x1 - slide_x * 2, y = y, z = z1 - slide_z * 2}, + is_obsidian = is_obsidian_left, + }) + set_outer_frame_node({ + pos_outer1 = {x = last_x + slide_x , y = y, z = last_z + slide_z }, + pos_outer2 = {x = last_x + slide_x * 2, y = y, z = last_z + slide_z * 2}, + is_obsidian = is_obsidian_right, + }) + end + + for i = 0, 1 do + set_outer_frame_node({ + pos_outer1 = {x = x1 - slide_x * i, y = last_y + 1, z = z1 - slide_z * i}, + pos_outer2 = {x = x1 - slide_x * i, y = last_y + 2, z = z1 - slide_z * i}, + is_obsidian = is_obsidian_top_left, + is_top = true, + }) + set_outer_frame_node({ + pos_outer1 = {x = last_x + slide_x * i, y = last_y + 1, z = last_z + slide_z * i}, + pos_outer2 = {x = last_x + slide_x * i, y = last_y + 2, z = last_z + slide_z * i}, + is_obsidian = is_obsidian_top_right, + is_top = true, + }) + end + + for x = x1 + slide_x, last_x - slide_x do for z = z1 + slide_z, last_z - slide_z do + set_frame_node({x = x, y = y1, z = z}) + local is_obsitian_top = set_frame_node({x = x, y = last_y, z = z}) + set_outer_frame_node({ + pos_outer1 = {x = x, y = last_y + 1, z = z}, + pos_outer2 = {x = x, y = last_y + 2, z = z}, + is_obsidian = is_obsidian_top, + is_top = true + }) + end end + + local node_top = {name = node_top[pr:next(1, #node_top)]} + if is_chain then + set_ruined_frame_stone_material({x = x1 + slide_x * 2, y = last_y + 3, z = z1 + slide_z * 2}) + set_ruined_frame_stone_material({x = x1 + slide_x , y = last_y + 3, z = z1 + slide_z }) + set_ruined_frame_stone_material({x = last_x - slide_x , y = last_y + 3, z = last_z - slide_z }) + set_ruined_frame_stone_material({x = last_x - slide_x * 2, y = last_y + 3, z = last_z - slide_z * 2}) + for x = x1 + slide_x * 3, last_x - slide_x * 3 do for z = z1 + slide_z * 3, last_z - slide_z * 3 do + set_ruined_node({x = x, y = last_y + 3, z = z}, node_top) + set_ruined_node({x = x - slide_z, y = last_y + 3, z = z - slide_x}, get_random_slab()) + set_ruined_node({x = x + slide_z, y = last_y + 3, z = z + slide_x}, get_random_slab()) + end end + draw_roof({x = x1 + slide_x * 3, y = last_y + 4, z = z1 + slide_z * 3}, frame_width - 6) + else + set_ruined_frame_stone_material({x = x1 + slide_x * 3, y = last_y + 2, z = z1 + slide_z * 3}) + set_ruined_frame_stone_material({x = x1 + slide_x * 2, y = last_y + 2, z = z1 + slide_z * 2}) + set_ruined_frame_stone_material({x = last_x - slide_x * 2, y = last_y + 2, z = last_z - slide_z * 2}) + set_ruined_frame_stone_material({x = last_x - slide_x * 3, y = last_y + 2, z = last_z - slide_z * 3}) + for x = x1 + slide_x * 4, last_x - slide_x * 4 do for z = z1 + slide_z * 4, last_z - slide_z * 4 do + set_ruined_node({x = x, y = last_y + 2, z = z}, node_top) + set_ruined_node({x = x - slide_z, y = last_y + 2, z = z - slide_x}, get_random_slab()) + set_ruined_node({x = x + slide_z, y = last_y + 2, z = z + slide_x}, get_random_slab()) + end end + draw_roof({x = x1 + slide_x * 3, y = last_y + 3, z = z1 + slide_z * 3}, frame_width - 6) + end +end + +local possible_rotations = {"0", "90", "180", "270"} + +local function place(pos, rotation, pr) + local width = pr:next(2, 10) + local height = pr:next(((width < 3) and 3 or 2), 10) + local lift = pr:next(0, 4) + local rotation = rotation or possible_rotations[pr:next(1, #possible_rotations)] + local orientation = rotation_to_orientation[rotation] + local is_chain = pr:next(1, 3) > 1 + assert(orientation) + draw_frame({x = pos.x, y = pos.y + lift, z = pos.z}, width + 2, height + 2, orientation, pr, is_chain, rotation) +end + +local function get_place_rank(pos) + local x, y, z = pos.x, pos.y, pos.z + local p1 = {x = x , y = y, z = z } + local p2 = {x = x + 7, y = y, z = z + 7} + local air_pos_list_surface = #minetest.find_nodes_in_area(p1, p2, "air", false) + p1.y = p1.y - 1 + p2.y = p2.y - 1 + local opaque_pos_list_surface = #minetest.find_nodes_in_area(p1, p2, "group:opaque", false) + return air_pos_list_surface + 3 * opaque_pos_list_surface +end + +mcl_structures.register_structure({ + name = "ruined_portal", + decoration = { + deco_type = "simple", + flags = "all_floors", + fill_ratio = scanning_ratio, + height = 1, + }, + on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) + if maxp.y < mcl_mapgen.overworld.min then return end + local pr = PseudoRandom(seed + random_offset) + local random_number = pr:next(1, chance_per_chunk) + local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier + if (random_number + noise) < struct_threshold then return end + local pos = pos_list[1] + if #pos_list > 1 then + local count = get_place_rank(pos) + for i = 2, #pos_list do + local pos_i = pos_list[i] + local count_i = get_place_rank(pos_i) + if count_i > count then + count = count_i + pos = pos_i + end + end + end + place(pos, nil, pr) + end, + place_function = place, +}) diff --git a/mods/MAPGEN/mcl_structures/structures.lua b/mods/MAPGEN/mcl_structures/structures.lua index b18904d9a..32a399ae3 100644 --- a/mods/MAPGEN/mcl_structures/structures.lua +++ b/mods/MAPGEN/mcl_structures/structures.lua @@ -12,6 +12,7 @@ if not mcl_mapgen.singlenode then dofile(modpath .. "/jungle_temple.lua") dofile(modpath .. "/nice_jungle_temple.lua") dofile(modpath .. "/noise_indicator.lua") + dofile(modpath .. "/ruined_portal.lua") dofile(modpath .. "/stronghold.lua") dofile(modpath .. "/witch_hut.lua") end From 8272343084881b5ca91a04b486058d29b1f5eb39 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 23 Feb 2022 07:53:21 +0400 Subject: [PATCH 193/521] Reduce chunk size to 4x4x4, add ruined portals beta --- minetest.conf | 2 +- mods/MAPGEN/mcl_structures/ruined_portal.lua | 87 +++++++++++++++++++- 2 files changed, 84 insertions(+), 5 deletions(-) diff --git a/minetest.conf b/minetest.conf index 22270e9c2..423ac3a34 100644 --- a/minetest.conf +++ b/minetest.conf @@ -38,7 +38,7 @@ max_block_generate_distance = 13 # Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes). # type: int -chunksize = 8 +chunksize = 4 # MCL2-specific stuff keepInventory = false diff --git a/mods/MAPGEN/mcl_structures/ruined_portal.lua b/mods/MAPGEN/mcl_structures/ruined_portal.lua index f75d536cf..b190921fa 100644 --- a/mods/MAPGEN/mcl_structures/ruined_portal.lua +++ b/mods/MAPGEN/mcl_structures/ruined_portal.lua @@ -2,11 +2,10 @@ local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) local chance_per_chunk = 400 -chance_per_chunk = 1 local noise_multiplier = 2.5 local random_offset = 9159 -local scanning_ratio = 0.0001 -local struct_threshold = chance_per_chunk - 3 +local scanning_ratio = 0.01 +local struct_threshold = 390 local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level @@ -30,8 +29,18 @@ local node_top = { "mcl_core:goldblock", } +local node_garbage = { + "mcl_nether:netherrack", + "mcl_core:lava_source", + "mcl_nether:netherrack", + "mcl_nether:netherrack", + "mcl_nether:magma", + "mcl_nether:netherrack", +} + local stone1 = {name = "mcl_core:stonebrickcracked"} local stone2 = {name = "mcl_core:stonebrickmossy"} +local stone3 = {name = "mcl_nether:magma"} local stone4 = {name = "mcl_core:stonebrick"} local slab1 = {name = "mcl_stairs:slab_stonebrickcracked_top"} @@ -267,14 +276,83 @@ end local possible_rotations = {"0", "90", "180", "270"} +local function draw_trash(pos, width, height, lift, orientation, pr) + local slide_x = (1 - orientation) + local slide_z = orientation + local x1 = pos.x - lift - 1 + local x2 = pos.x + (width - 1) * slide_x + lift + 1 + local z1 = pos.z - lift - 1 + local z2 = pos.z + (width - 1) * slide_z + lift + 1 + local y1 = pos.y - pr:next(1, height) - 1 + local y2 = pos.y + local opacity_layers = math.floor((y2 - y1) / 2) + local opacity_layer = -opacity_layers + for y = y1, y2 do + local inverted_opacity_0_5 = math.round(math.abs(opacity_layer) / opacity_layers * 5) + for x = x1 + pr:next(0, 2), x2 - pr:next(0, 2) do + for z = z1 + pr:next(0, 2), z2 - pr:next(0, 2) do + if inverted_opacity_0_5 == 0 or (x % inverted_opacity_0_5 ~= pr:next(0, 1) and z % inverted_opacity_0_5 ~= pr:next(0, 1)) then + minetest.swap_node({x = x, y = y, z = z}, {name = node_garbage[pr:next(1, #node_garbage)]}) + end + end + end + opacity_layer = opacity_layer + 1 + end +end + +local stair_replacement_list = { + "air", + "group:water", + "group:lava", + "group:buildable_to", + "group:deco_block", +} + +local stair_offset_from_bottom = 3 +local function draw_stairs(pos, width, height, lift, orientation, pr, is_chain) + local lift = lift + stair_offset_from_bottom + local slide_x = (1 - orientation) + local slide_z = orientation + local width = width + (is_chain and 2 or 0) + local x1 = pos.x - lift - (is_chain and 1 or 0) - 1 + local x2 = pos.x + lift + width * slide_x + 1 + local z1 = pos.z - lift - (is_chain and 1 or 0) - 1 + local z2 = pos.z + lift + width * slide_z + 1 + local y1 = pos.y - stair_offset_from_bottom + local y2 = pos.y + lift - stair_offset_from_bottom + local current_radius = lift + for y = y1, y2 do + for x = x1, x2 do + for z = z1, z2 do +--local stair1 = "mcl_stairs:stair_stonebrickcracked" +--local stair2 = "mcl_stairs:stair_stonebrickmossy" +--local stair3 = "mcl_stairs:stair_stone_rough" +--local stair4 = "mcl_stairs:stair_stonebrick" + local pos = {x = x, y = y, z = z} + if #minetest.find_nodes_in_area(pos, pos, stair_replacement_list, false) > 0 then + minetest.swap_node(pos, {name = "mcl_stairs:stair_stone_rough"}) + end + end + end + x1 = x1 + 1 + x2 = x2 - 1 + z1 = z1 + 1 + z2 = z2 - 1 + end +end + local function place(pos, rotation, pr) local width = pr:next(2, 10) local height = pr:next(((width < 3) and 3 or 2), 10) local lift = pr:next(0, 4) local rotation = rotation or possible_rotations[pr:next(1, #possible_rotations)] local orientation = rotation_to_orientation[rotation] - local is_chain = pr:next(1, 3) > 1 assert(orientation) + local param2 = rotation_to_param2[rotation] + assert(param2) + local is_chain = pr:next(1, 3) > 1 + draw_trash(pos, width, height, lift, orientation, pr) + draw_stairs(pos, width, height, lift, orientation, pr, is_chain) draw_frame({x = pos.x, y = pos.y + lift, z = pos.z}, width + 2, height + 2, orientation, pr, is_chain, rotation) end @@ -296,6 +374,7 @@ mcl_structures.register_structure({ flags = "all_floors", fill_ratio = scanning_ratio, height = 1, + place_on = {"mcl_core:sand", "mcl_core:dirt_with_grass", "mcl_core:water_source"}, }, on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) if maxp.y < mcl_mapgen.overworld.min then return end From cfc0fda314ca0809e1d6d50f65ee7c33a03005b0 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 24 Feb 2022 03:59:11 +0400 Subject: [PATCH 194/521] Finish ruined portals --- mods/ITEMS/REDSTONE/mcl_bells/README.md | 4 + mods/ITEMS/REDSTONE/mcl_bells/init.lua | 24 ++ .../REDSTONE/mcl_bells/locale/template.txt | 2 + mods/ITEMS/REDSTONE/mcl_bells/mod.conf | 3 + .../REDSTONE/mcl_bells/sounds/bell_stroke.ogg | Bin 0 -> 61797 bytes .../REDSTONE/mcl_bells/textures/bell.png | Bin 0 -> 368 bytes .../REDSTONE/mesecons_pressureplates/init.lua | 13 +- mods/MAPGEN/mcl_structures/ruined_portal.lua | 277 +++++++++++++++--- 8 files changed, 281 insertions(+), 42 deletions(-) create mode 100644 mods/ITEMS/REDSTONE/mcl_bells/README.md create mode 100644 mods/ITEMS/REDSTONE/mcl_bells/init.lua create mode 100644 mods/ITEMS/REDSTONE/mcl_bells/locale/template.txt create mode 100644 mods/ITEMS/REDSTONE/mcl_bells/mod.conf create mode 100755 mods/ITEMS/REDSTONE/mcl_bells/sounds/bell_stroke.ogg create mode 100644 mods/ITEMS/REDSTONE/mcl_bells/textures/bell.png diff --git a/mods/ITEMS/REDSTONE/mcl_bells/README.md b/mods/ITEMS/REDSTONE/mcl_bells/README.md new file mode 100644 index 000000000..9f0b1d118 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_bells/README.md @@ -0,0 +1,4 @@ + * sounds/bell_stroke.ogg + * created by edsward + * modified by sorcerykid + * obtained from https://freesound.org/people/edsward/sounds/341866/ diff --git a/mods/ITEMS/REDSTONE/mcl_bells/init.lua b/mods/ITEMS/REDSTONE/mcl_bells/init.lua new file mode 100644 index 000000000..9a69e4353 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_bells/init.lua @@ -0,0 +1,24 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +mcl_bells = {} + +local has_mcl_wip = minetest.get_modpath("mcl_wip") + +minetest.register_node("mcl_bells:bell", { + description = S("Bell"), + inventory_image = "bell.png", + drawtype = "plantlike", + tiles = {"bell.png"}, + stack_max = 64, + selection_box = { + type = "fixed", + fixed = { + -4/16, -6/16, -4/16, + 4/16, 7/16, 4/16, + }, + }, +}) + +if has_mcl_wip then + mcl_wip.register_wip_item("mcl_bells:bell") +end diff --git a/mods/ITEMS/REDSTONE/mcl_bells/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_bells/locale/template.txt new file mode 100644 index 000000000..2f554c2a0 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_bells/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain: mcl_observers +Bell= diff --git a/mods/ITEMS/REDSTONE/mcl_bells/mod.conf b/mods/ITEMS/REDSTONE/mcl_bells/mod.conf new file mode 100644 index 000000000..1685462fc --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_bells/mod.conf @@ -0,0 +1,3 @@ +name = mcl_bells +depends = mesecons +optional_depends = mcl_wip diff --git a/mods/ITEMS/REDSTONE/mcl_bells/sounds/bell_stroke.ogg b/mods/ITEMS/REDSTONE/mcl_bells/sounds/bell_stroke.ogg new file mode 100755 index 0000000000000000000000000000000000000000..023d1f94627d2b767bd1437ac3beaa112e4a8cb7 GIT binary patch literal 61797 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�*O?vYn0!;-jAx73sC7rtc2NY5A*Nl| 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

c9C1Quoim?(KlH$ewD8=#yH?}sM7{(lY1d3ti^ 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 z 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�kwE6@m!Lt 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

w~=#->NYko2zi(_db$&SS0L}ZAve-P3≠Le-mDZSHTh@P4)d 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 z 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�C{4PB> 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 literal 0 HcmV?d00001 diff --git a/mods/PLAYER/mcl_music/mod.conf b/mods/PLAYER/mcl_music/mod.conf index e36fb6f9b..74493b42d 100644 --- a/mods/PLAYER/mcl_music/mod.conf +++ b/mods/PLAYER/mcl_music/mod.conf @@ -1,4 +1,4 @@ name = mcl_music -author = diminixed, kay27 +author = diminixed, horizonchris96, kay27 description = Mod check some conditions and plays music depends = mcl_player, mcl_weather, mcl_worlds From be3549fb8d549975d10b823e624272a400e53d8f Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 5 Mar 2022 04:16:53 +0400 Subject: [PATCH 230/521] Fix crash in smoker.lua --- mods/ITEMS/mcl_furnaces/smoker.lua | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/mods/ITEMS/mcl_furnaces/smoker.lua b/mods/ITEMS/mcl_furnaces/smoker.lua index ba53f3fc1..24f939a97 100644 --- a/mods/ITEMS/mcl_furnaces/smoker.lua +++ b/mods/ITEMS/mcl_furnaces/smoker.lua @@ -96,30 +96,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if listname == "fuel" then - return 0 - end - - -- Test stack with size 1 because we burn one fuel at a time - local teststack = ItemStack(stack) - teststack:set_count(1) - local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}}) - if output.time ~= 0 then - -- Only allow to place 1 item if fuel get replaced by recipe. - -- This is the case for lava buckets. - local replace_item = decremented_input.items[1] - if replace_item:is_empty() then - -- For most fuels, just allow to place everything - return stack:get_count() - else - if inv:get_stack(listname, index):get_count() == 0 then - return 1 - else - return 0 - end - end - else - return 0 - end + return 0 elseif listname == "src" then return stack:get_count() elseif listname == "dst" then From 9d7f619a24fb4a1131be83849608371b68d638cc Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 5 Mar 2022 04:24:43 +0400 Subject: [PATCH 231/521] Fix smoker textures --- mods/ITEMS/mcl_furnaces/blast_furnace.lua | 2 +- mods/ITEMS/mcl_furnaces/smoker.lua | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_furnaces/blast_furnace.lua b/mods/ITEMS/mcl_furnaces/blast_furnace.lua index 4e14d9305..f3070fef6 100644 --- a/mods/ITEMS/mcl_furnaces/blast_furnace.lua +++ b/mods/ITEMS/mcl_furnaces/blast_furnace.lua @@ -387,7 +387,7 @@ minetest.register_node("mcl_furnaces:blast_furnace", { 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 = { - "blast_furnace_top.png", "blast_furnace_top.png", + "default_furnace_top.png", "default_furnace_top.png", "blast_furnace_side.png", "blast_furnace_side.png", "blast_furnace_side.png", "blast_furnace_front.png" }, diff --git a/mods/ITEMS/mcl_furnaces/smoker.lua b/mods/ITEMS/mcl_furnaces/smoker.lua index 24f939a97..acfaf48a3 100644 --- a/mods/ITEMS/mcl_furnaces/smoker.lua +++ b/mods/ITEMS/mcl_furnaces/smoker.lua @@ -365,9 +365,9 @@ minetest.register_node("mcl_furnaces:smoker", { 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 = { - "smoker_top.png", "smoker_top.png", - "smoker_side.png", "smoker_side.png", - "smoker_side.png", "smoker_front.png" + "default_furnace_top.png", "default_furnace_top.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "smoker_front.png" }, paramtype2 = "facedir", groups = {pickaxey=1, container=4, deco_block=1, material_stone=1}, From 82f2cc4a359f54bb753a49287ad71d33bb12c596 Mon Sep 17 00:00:00 2001 From: debiankaios Date: Sat, 5 Mar 2022 15:30:24 +0100 Subject: [PATCH 232/521] Make moss compost-able --- mods/ITEMS/mcl_composters/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index abcc7fcb4..a3e219bb2 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -71,7 +71,7 @@ local compostability = { ["mcl_flowers:sunflower"] = 65, ["mcl_flowers:waterlily"] = 65, ["mcl_farming:melon"] = 65, - -- missing: moss block? + ["mcl_core:moss"] = 65, -- mushroom aliases below? ["mcl_farming:mushroom_brown"] = 65, ["mcl_mushrooms:mushroom_brown"] = 65, @@ -118,7 +118,7 @@ local compostability = { ["mcl_core:spruceleaves"] = 30, -- ["mcl_farming:melon_seeds"] = 30, - -- missing: moss carpet + ["mcl_core:moss_carpet"] = 30, ["mcl_farming:pumpkin_seeds"] = 30, ["mcl_core:sapling"] = 30, ["mcl_core:acaciasapling"] = 30, @@ -338,6 +338,6 @@ minetest.register_node("mcl_composters:composter_ready", { -- Add entry aliases for the Help if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_composters:composter", + doc.add_entry_alias("nodes", "mcl_composters:composter", "nodes", "mcl_composters:composter_ready" ) end From 9e00371c6c4e1bf5bc8cbd12eeafa3ffe44386be Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 5 Mar 2022 17:07:56 +0000 Subject: [PATCH 233/521] fixed problem with fuel insertion --- mods/ITEMS/mcl_furnaces/smoker.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ITEMS/mcl_furnaces/smoker.lua b/mods/ITEMS/mcl_furnaces/smoker.lua index ba53f3fc1..8e3cdcd42 100644 --- a/mods/ITEMS/mcl_furnaces/smoker.lua +++ b/mods/ITEMS/mcl_furnaces/smoker.lua @@ -96,8 +96,6 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if listname == "fuel" then - return 0 - end -- Test stack with size 1 because we burn one fuel at a time local teststack = ItemStack(stack) From 354ce405b0981994eb7116eae660057381a40357 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 5 Mar 2022 17:22:29 +0000 Subject: [PATCH 234/521] added missing blast furnace and smoker textures --- .../mcl_furnaces/textures/blast_furnace_top.png | Bin 0 -> 593 bytes mods/ITEMS/mcl_furnaces/textures/smoker_side.png | Bin 0 -> 538 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_furnaces/textures/blast_furnace_top.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/smoker_side.png diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_top.png b/mods/ITEMS/mcl_furnaces/textures/blast_furnace_top.png new file mode 100644 index 0000000000000000000000000000000000000000..03ce91b5cf8d8c9eb99445a8523f842eb55ba34d GIT binary patch literal 593 zcmV-X0Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jc=1 z5e5aqYszW>00GfSL_t(I%XO2_YSd5^#(ymnWexz*m)<^1{h&UenY^7hT^-vBCA zL}7&fFTW^^jQsLz0lawi(g?bqhabe`*<519VqxR~oOz}D@VZpxeb6E?A4*fm%! zkJM7B!VhAU%Im_vjYo$E+<)*$n(}PU=C-h8V$})kMA_i+0uPzqiL6}XgmM2 fx?7gM%i4bc*JsMX(LvD&00000NkvXXu0mjfH5v?! literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_side.png b/mods/ITEMS/mcl_furnaces/textures/smoker_side.png new file mode 100644 index 0000000000000000000000000000000000000000..f1e57a7511cf623ff627caa823536d451ca624c3 GIT binary patch literal 538 zcmV+#0_FXQP)Px#32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rd3=Rb^46hbEwg3PDtVu*cR4C6? zQOi!-KomU$FG?Q8@x)5ywgFKVL9jtcL;}_oAJs*7{itr+szr*jsBl8uN5F~!jXjR> z*weI|F0OS6vl!hwbI!Ssv-aWrI{-)fdw6vnGL<6gH@1JLVshL>Xi ze9Kr8haU+IVD0T-|9r4J3Da4Wi0&($=gn3NfX;KSwk$J_EdY}+rNj}QBls&KvLn2} zzc}360x%k1TL9XdO#rhf>GyX4XtM+$gdI%%lhZQ*fqy|7X0E=)Z2Waom^? z_G<7@n9)^O5x4>)xNjkB+LFr3cB@_y$Z7f(!cLL}lU>)L{cd}Lx_aVtF!fnGnEJu= cu`K)WA0fZwN%t{OCjbBd07*qoM6N<$f~-mJ@&Et; literal 0 HcmV?d00001 From ebb2fe3c6f823b5c1edb07b5ee8f549ebd953b2b Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 5 Mar 2022 21:25:42 +0000 Subject: [PATCH 235/521] added smoker top texture --- mods/ITEMS/mcl_furnaces/textures/smoker_top.png | Bin 0 -> 597 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_furnaces/textures/smoker_top.png diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_top.png b/mods/ITEMS/mcl_furnaces/textures/smoker_top.png new file mode 100644 index 0000000000000000000000000000000000000000..bc5a0dba783a42b07fc196ea8d23dc5e69a4eb50 GIT binary patch literal 597 zcmV-b0;>IqP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jc=1 z5eX*el&9AK00GrWL_t(I%Z-!2Yui8^#Xl(#*pU>9e%M7e2m%GKAwwWbAVX>CP$-!S z4ffFI<)vQ5d*4nk+kA*5e8kly$1@$TLC zEq(s@;V*!Q1g_(ff6tfexP|_FEd#uH_qG5Urio>H#B!*xG)W45fY$51i~!)t(`VVn z=^p?tFRlQvY!BOhs1BD69e`h_KV}MY#`D2IZLIq>VmYMl*SL;;D_qJ^fpB^8PB-Hl z0FFN$0T7<`0NCAorBuyd>4As@mhB-#Ox3AS_iKFXbcm8kVI99eqS08R(O5&u(M&<^ ztdt|-uuFK>BT6Q>+>Vk7hx-S3{v(BnNMs6PIYiSnEZgJ0+S=Y>ePgreL7F5yF6opV z{a%90iz_r;Q^qS3f1Z5je=3$kEIg%F5v*@);<^?9hx-S&d~nPan(dbQ4}yO73Tj+k ziy-I|1bv$A7LK`6Sj~1z^>Zca6%5l<6R7DLLc~0O`GT^c^R@GZt?eDo2Lm)+qv}); zBF3^kT*sX$n5JXuevQ?Vu10p6jxkJ=X*#CrR9G!#SU%1o5;G5aVfW6^^un&f^PuG^ jUCQIUSc{RqE8716?tsPlSSWCx00000NkvXXu0mjfVC4u> literal 0 HcmV?d00001 From a605a7afe77a3f9df8067010e78e7092f2bf4ecf Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 6 Mar 2022 05:55:09 +0400 Subject: [PATCH 236/521] Fix yet another crash in shields line 158 --- mods/ITEMS/mcl_shields/init.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_shields/init.lua b/mods/ITEMS/mcl_shields/init.lua index 65ffc6b4b..feff76cd8 100644 --- a/mods/ITEMS/mcl_shields/init.lua +++ b/mods/ITEMS/mcl_shields/init.lua @@ -155,10 +155,13 @@ local function modify_shield(player, vpos, vrot, i) if i == 1 then arm = "Left" end - local shield = mcl_shields.players[player].shields[i] - if shield then - shield:set_attach(player, "Arm_" .. arm, vpos, vrot, false) - end + local player_data = mcl_shields.players[player] + if not player_data then return end + local shields = player_data.shields + if not shields then return end + local shield = shields[i] + if not shield then return end + shield:set_attach(player, "Arm_" .. arm, vpos, vrot, false) end local function set_shield(player, block, i) From 7c7ad3ef0aace464eb31c0777fc738a6aca69ef9 Mon Sep 17 00:00:00 2001 From: CableGuy67 Date: Sun, 6 Mar 2022 22:05:50 +0000 Subject: [PATCH 237/521] Add final texture names for the unlit state or blast furnace --- mods/ITEMS/mcl_furnaces/blast_furnace.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_furnaces/blast_furnace.lua b/mods/ITEMS/mcl_furnaces/blast_furnace.lua index f3070fef6..4e14d9305 100644 --- a/mods/ITEMS/mcl_furnaces/blast_furnace.lua +++ b/mods/ITEMS/mcl_furnaces/blast_furnace.lua @@ -387,7 +387,7 @@ minetest.register_node("mcl_furnaces:blast_furnace", { 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_top.png", + "blast_furnace_top.png", "blast_furnace_top.png", "blast_furnace_side.png", "blast_furnace_side.png", "blast_furnace_side.png", "blast_furnace_front.png" }, From 78c1f741d6093edb50f343736a5da74021627fe0 Mon Sep 17 00:00:00 2001 From: CableGuy67 Date: Sun, 6 Mar 2022 22:08:00 +0000 Subject: [PATCH 238/521] Add final texture names for the unlit state of smoker --- mods/ITEMS/mcl_furnaces/smoker.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_furnaces/smoker.lua b/mods/ITEMS/mcl_furnaces/smoker.lua index 67b0130b4..8e3cdcd42 100644 --- a/mods/ITEMS/mcl_furnaces/smoker.lua +++ b/mods/ITEMS/mcl_furnaces/smoker.lua @@ -386,9 +386,9 @@ minetest.register_node("mcl_furnaces:smoker", { 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_top.png", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "smoker_front.png" + "smoker_top.png", "smoker_top.png", + "smoker_side.png", "smoker_side.png", + "smoker_side.png", "smoker_front.png" }, paramtype2 = "facedir", groups = {pickaxey=1, container=4, deco_block=1, material_stone=1}, From 1db1d0126e62ae100260f292e6f26b2f92c73080 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 22:47:37 +0000 Subject: [PATCH 239/521] Make nether plants pottable --- mods/ITEMS/mcl_flowerpots/init.lua | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/mods/ITEMS/mcl_flowerpots/init.lua b/mods/ITEMS/mcl_flowerpots/init.lua index 578553b31..951356928 100644 --- a/mods/ITEMS/mcl_flowerpots/init.lua +++ b/mods/ITEMS/mcl_flowerpots/init.lua @@ -214,3 +214,29 @@ mcl_flowerpots.register_potted_flower("mcl_core:deadbush", { desc = S("Dead Bush"), image = "default_dry_shrub.png", }) + +-- Add the possibility to pot nether fungi and roots, depend to mcl_mushroom + +mcl_flowerpots.register_potted_flower("mcl_mushroom:warped_fungus", { + name = "warped_fungus", + desc = S("Warped Fungus Mushroom"), + image = "farming_warped_fungus.png", +}) + +mcl_flowerpots.register_potted_flower("mcl_mushroom:crimson_fungus", { + name = "crimson_fungus", + desc = S("Crimson Fungus Mushroom"), + image = "farming_crimson_fungus.png", +}) + +mcl_flowerpots.register_potted_flower("mcl_mushroom:warped_roots", { + name = "warped_roots", + desc = S("Warped Roots"), + image = "warped_roots.png", +}) + +mcl_flowerpots.register_potted_flower("mcl_mushroom:crimson_roots", { + name = "crimson_roots", + desc = S("Crimson Roots"), + image = "crimson_roots.png", +}) \ No newline at end of file From 61ad2130f7b799fa312708308ccc3107655e758e Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 22:50:15 +0000 Subject: [PATCH 240/521] Update --- mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr | 4 ++++ mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr | 4 ++++ mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr | 6 +++++- mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr | 4 ++++ mods/ITEMS/mcl_flowerpots/locale/template.txt | 4 ++++ 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr index a110d5ffc..2a57763d4 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr @@ -20,6 +20,10 @@ 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 +Warped Fungus Mushroom Flower Pot= +Crimson Fungus Mushroom Flower Pot= +Warped Roots Flower Pot= +Crimson Roots Flower Pot= 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/mcl_flowerpots.es.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr index fd12b1b4f..ff1de9e2b 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr @@ -20,6 +20,10 @@ 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 +Warped Fungus Mushroom Flower Pot= +Crimson Fungus Mushroom Flower Pot= +Warped Roots Flower Pot= +Crimson Roots Flower Pot= 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. diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr index 9ac00bb98..660aa38c1 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.fr.tr @@ -17,9 +17,13 @@ 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=Buisson Mort en Pot +Dead Bush Flower Pot=Arbuste Mort en Pot Fern Flower Pot=Fougère en Pot Cactus Flower Pot=Cactus en Pot +Warped Fungus Mushroom Flower Pot=Champignon Tordu en Pot +Crimson Fungus Mushroom Flower Pot=Champignon Ecarlate en Pot +Warped Roots Flower Pot=Racines Tordues en Pot +Crimson Roots Flower Pot=Racines Ecarlates 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. diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr index 4bc5e282a..86b5488eb 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.pl.tr @@ -20,6 +20,10 @@ Birch Sapling Flower Pot=Doniczka z sadzonką brzozy Dead Bush Flower Pot=Doniczka z martwym buszem Fern Flower Pot=Doniczka z paprocią Cactus Flower Pot=Doniczka z kaktusem +Warped Fungus Mushroom Flower Pot= +Crimson Fungus Mushroom Flower Pot= +Warped Roots Flower Pot= +Crimson Roots Flower Pot= Flower Pot=Doniczka Flower pots are decorative blocks in which flowers and other small plants can be placed.=Doniczki są dekoracyjnymi blokami w których mogą zostać postawione kwiaty i inne małe rośliny. 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.=Po prostu umieść roślinę w doniczce. Mogę one przechowywać małe kwiaty (nie większe niż 1 blok), sadzonki, paprocie, martwe busze, grzyby i kaktusy. Kliknij prawym przyciskiem w doniczkę aby odzyskać roślinę. diff --git a/mods/ITEMS/mcl_flowerpots/locale/template.txt b/mods/ITEMS/mcl_flowerpots/locale/template.txt index fcdf7d21e..76e22788d 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/template.txt +++ b/mods/ITEMS/mcl_flowerpots/locale/template.txt @@ -20,6 +20,10 @@ Birch Sapling Flower Pot= Dead Bush Flower Pot= Fern Flower Pot= Cactus Flower Pot= +Warped Fungus Mushroom Flower Pot= +Crimson Fungus Mushroom Flower Pot= +Warped Roots Flower Pot= +Crimson Roots 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.= From 81b64e53b36f20aac4186cfaf3e8b6a476341831 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 22:51:18 +0000 Subject: [PATCH 241/521] Update to template --- mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr index 6994da742..3b6957e74 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.ru.tr @@ -20,6 +20,10 @@ Birch Sapling Flower Pot=Саженец берёзы в горшке Dead Bush Flower Pot=Мёртвый куст в горшке Fern Flower Pot=Папоротник в горшке Cactus Flower Pot=Кактус в горшке +Warped Fungus Mushroom Flower Pot= +Crimson Fungus Mushroom Flower Pot= +Warped Roots Flower Pot= +Crimson Roots 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.=Просто поместите растение в цветочный горшок. Цветочные горшки могут выдержать небольшие цветы (не выше 1 блока), саженцы, папоротники, мёртвые кусты, грибы и кактусы. Кликните правой по горшёчному растению, чтобы вытащить его из горшка. From ec20083d7982865d4b349b538023beb954a3626a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 22:54:12 +0000 Subject: [PATCH 242/521] fix texture --- .../textures/farming_crimson_fungus.png | Bin 765 -> 307 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/textures/farming_crimson_fungus.png b/mods/ITEMS/mcl_mushroom/textures/farming_crimson_fungus.png index 86180a8dd35f66d2c0fa8f72936974fe8eb90172..ab1771b9538549a60d49fa9c8fe9b40a366597ea 100644 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}OMp*^E0A_)VDMmI$YWqDU|=s` z;3#5ZD`Ms-W@ay8=I{{}@RJY-kPrxz5C{U2k^%uzQj_>aCyIzq5|x-DA+bCCy?(!$KpYr7D_HZWc#$SlS$&TAiGZ7+D=LwmfQVb=1W2xT#fTQtmdKI;Vst0PZtcZ~y=R literal 765 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I4M=vMPuFE&U^?RI;uumf=k0C#tdKy7V-JIu zY}g{>k*yrX>X^&iR5t0_DW?tBPOoS6)rLJEOQDqamPoD(z{g;X6D zv3N{ju`_x0y} zITa!vGk53V^>*&R_U&{>wGU?GpUJbYUXGjjs=ad6f2-NQ54&AWSam*n?rw4MrGj5L znM4w%FtAFfIxxC%1~desa@TIX_U(7=lcTH}2UdJv`xR(g(B2n2)8B1)W*7f;o-nTr zUwh0CCXokayG0i;6f^o=R&ii_#&qXx8I#C@`;4qVJea>IM>O1P;rQ^8ZN@L@l5F1w zrkuAGHe3M>{a<1WuHIP~w*1$w#q;&|?r(Rw-xAWh@4?0M)9>APX3=o?m-dCVzi!`` ze`5LMFn;*U>+4si+U==}ob~1N1_O-ffCSI0%e&3@8r@&F&TDd=oR}N-5On#wXWzT2 zKR^ClX7ciRVj?IqVS$Sj!y%??vR2@g*OB*nq=TV*-u;IK1^UZ5KJ2;ny7YdI*}JDA ljPuT$_}0!^w(oA Date: Sun, 6 Mar 2022 22:59:16 +0000 Subject: [PATCH 243/521] Add nether fences --- mods/ITEMS/mclx_fences/init.lua | 73 ++++++++++++++++++++++++++++++--- 1 file changed, 68 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mclx_fences/init.lua b/mods/ITEMS/mclx_fences/init.lua index e78c7ef7f..d8f0e5b31 100644 --- a/mods/ITEMS/mclx_fences/init.lua +++ b/mods/ITEMS/mclx_fences/init.lua @@ -1,6 +1,6 @@ local S = minetest.get_translator(minetest.get_current_modname()) --- Red Nether Brick Fence +-- Red Nether Brick Fence and Fence Gate mcl_fences.register_fence_and_fence_gate( "red_nether_brick_fence", @@ -13,6 +13,8 @@ mcl_fences.register_fence_and_fence_gate( mcl_sounds.node_sound_stone_defaults(), "mcl_fences_nether_brick_fence_gate_open", "mcl_fences_nether_brick_fence_gate_close", 1, 1, "mcl_fences_fence_gate_red_nether_brick.png") +-- Nether Brick Fence Gate + mcl_fences.register_fence_gate( "nether_brick_fence", S("Nether Brick Fence Gate"), @@ -22,6 +24,33 @@ mcl_fences.register_fence_gate( minetest.registered_nodes["mcl_nether:nether_brick"]._mcl_blast_resistance, mcl_sounds.node_sound_stone_defaults(), "mcl_fences_nether_brick_fence_gate_open", "mcl_fences_nether_brick_fence_gate_close", 1, 1) +-- Crimson Wood Fence and Fence Gate + +mcl_fences.register_fence_and_fence_gate( + "crimson_wood_fence", + S("Crimson Hyphae Wood Fence"), S("Crimson Hyphae Wood Fence Gate"), + "mcl_fences_fence_crimson.png", + {handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20}, + minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, + minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, + {"group:fence_wood"}, + mcl_sounds.node_sound_wood_defaults(), "mcl_fences_crimson_wood_fence_gate_open", "mcl_fences_crimson_wood_fence_gate_close", 1, 1, + "mcl_fences_fence_gate_crimson.png") + +-- Warped Wood Fence and Fence Gate + +mcl_fences.register_fence_and_fence_gate( + "warped_wood_fence", + S("Warped Hyphae Wood Fence"), S("Warped Hyphae Wood Fence Gate"), + "mcl_fences_fence_warped.png", + {handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20}, + minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, + minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, + {"group:fence_wood"}, + mcl_sounds.node_sound_wood_defaults(), "mcl_fences_warped_wood_fence_gate_open", "mcl_fences_warped_wood_fence_gate_close", 1, 1, + "mcl_fences_fence_gate_warped.png") + + -- Crafting minetest.register_craft({ @@ -33,14 +62,23 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "mclx_fences:red_nether_brick_fence_gate", + output = "mclx_fences:crimson_wood_fence 3", recipe = { - {"mcl_nether:nether_wart_item", "mcl_nether:red_nether_brick", "mcl_nether:netherbrick"}, - {"mcl_nether:netherbrick", "mcl_nether:red_nether_brick", "mcl_nether:nether_wart_item"}, + {"mcl_mushroom:crimson_hyphae_wood", "mcl_core:stick", "mcl_mushroom:crimson_hyphae_wood"}, + {"mcl_mushroom:crimson_hyphae_wood", "mcl_core:stick", "mcl_mushroom:crimson_hyphae_wood"}, } }) + minetest.register_craft({ - output = "mclx_fences:red_nether_brick_fence_gate", + output = "mclx_fences:warped_wood_fence 3", + recipe = { + {"mcl_mushroom:warped_hyphae_wood", "mcl_core:stick", "mcl_mushroom:warped_hyphae_wood"}, + {"mcl_mushroom:warped_hyphae_wood", "mcl_core:stick", "mcl_mushroom:warped_hyphae_wood"}, + } +}) + +minetest.register_craft({ + output = "mclx_fences:red_nether_brick_fence_gate 2", recipe = { {"mcl_nether:netherbrick", "mcl_nether:red_nether_brick", "mcl_nether:nether_wart_item"}, {"mcl_nether:nether_wart_item", "mcl_nether:red_nether_brick", "mcl_nether:netherbrick"}, @@ -55,6 +93,21 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = "mclx_fences:crimson_wood_fence_gate", + recipe = { + {"mcl_core:stick", "mcl_mushroom:crimson_hyphae_wood", "mcl_core:stick"}, + {"mcl_core:stick", "mcl_mushroom:crimson_hyphae_wood", "mcl_core:stick"}, + } +}) + +minetest.register_craft({ + output = "mclx_fences:warped_wood_fence_gate", + recipe = { + {"mcl_core:stick", "mcl_mushroom:warped_hyphae_wood", "mcl_core:stick"}, + {"mcl_core:stick", "mcl_mushroom:warped_hyphae_wood", "mcl_core:stick"}, + } +}) -- Aliases for mcl_supplemental minetest.register_alias("mcl_supplemental:red_nether_brick_fence", "mclx_fences:red_nether_brick_fence") @@ -64,3 +117,13 @@ minetest.register_alias("mcl_supplemental:nether_brick_fence_gate_open", "mclx_f minetest.register_alias("mcl_supplemental:red_nether_brick_fence_gate", "mclx_fences:red_nether_brick_fence_gate") minetest.register_alias("mcl_supplemental:red_nether_brick_fence_gate_open", "mclx_fences:red_nether_brick_fence_gate_open") + +minetest.register_alias("mcl_supplemental:crimson_wood_fence", "mclx_fences:crimson_wood_fence") + +minetest.register_alias("mcl_supplemental:crimson_wood_fence_gate", "mclx_fences:crimson_wood_fence_gate") +minetest.register_alias("mcl_supplemental:crimson_wood_fence_gate_open", "mclx_fences:crimson_wood_fence_gate_open") + +minetest.register_alias("mcl_supplemental:warped_wood_fence", "mclx_fences:warped_wood_fence") + +minetest.register_alias("mcl_supplemental:warped_wood_fence_gate", "mclx_fences:warped_wood_fence_gate") +minetest.register_alias("mcl_supplemental:warped_wood_fence_gate_open", "mclx_fences:warped_wood_fence_gate_open") \ No newline at end of file From a31d840e09c10e133c2e7472e96f73bf6c16ab75 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:02:08 +0000 Subject: [PATCH 244/521] Add nether wood fences --- .../textures/mcl_fences_fence_crimson.png | Bin 0 -> 218 bytes .../textures/mcl_fences_fence_gate_crimson.png | Bin 0 -> 222 bytes .../textures/mcl_fences_fence_gate_warped.png | Bin 0 -> 219 bytes .../textures/mcl_fences_fence_warped.png | Bin 0 -> 219 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mclx_fences/textures/mcl_fences_fence_crimson.png create mode 100644 mods/ITEMS/mclx_fences/textures/mcl_fences_fence_gate_crimson.png create mode 100644 mods/ITEMS/mclx_fences/textures/mcl_fences_fence_gate_warped.png create mode 100644 mods/ITEMS/mclx_fences/textures/mcl_fences_fence_warped.png diff --git a/mods/ITEMS/mclx_fences/textures/mcl_fences_fence_crimson.png b/mods/ITEMS/mclx_fences/textures/mcl_fences_fence_crimson.png new file mode 100644 index 0000000000000000000000000000000000000000..39d91225f72524f45488885e94668dd270f3ca71 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ^^}tEk&y~hR>;s*uQJe@ zY_31s#<2g^Tz8;?22U5q5RU7-XC3*P6$Dr>%^> literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mclx_fences/textures/mcl_fences_fence_gate_crimson.png b/mods/ITEMS/mclx_fences/textures/mcl_fences_fence_gate_crimson.png new file mode 100644 index 0000000000000000000000000000000000000000..81166b1b5ef1bce0e04ce8aee43142499c88fe05 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ^^}tEk&y~hR>;s*uQJe@ zY_31s#<2g^Tz8;?7Ec$)5RU7-r#JF7D@eFL%oa#9f` z@TpJsZQn4n{1i|@qo<2w2*-8a)7C=G3Jk6npEIls-NG*{c3^w^fhETbBBEKo?Qe;= zU+j3U(Ds9f` z@TpJsZQn4n{1i|@qo<2w2*-8avxa=l20W}6W7VU)PZ~}gt8><$;JG|2hxY?JQ<1bx@HC-A QK*un6y85}Sb4q9e0L|V|9RL6T literal 0 HcmV?d00001 From 839de5cb4a8eebc0560e2d75f9f98f2263c18aff Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:09:03 +0000 Subject: [PATCH 245/521] Correct sound files names --- mods/ITEMS/mclx_fences/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mclx_fences/init.lua b/mods/ITEMS/mclx_fences/init.lua index d8f0e5b31..53aab68b2 100644 --- a/mods/ITEMS/mclx_fences/init.lua +++ b/mods/ITEMS/mclx_fences/init.lua @@ -34,7 +34,7 @@ mcl_fences.register_fence_and_fence_gate( minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, {"group:fence_wood"}, - mcl_sounds.node_sound_wood_defaults(), "mcl_fences_crimson_wood_fence_gate_open", "mcl_fences_crimson_wood_fence_gate_close", 1, 1, + mcl_sounds.node_sound_wood_defaults(), "mcl_fences_nether_brick_gate_open", "mcl_fences_nether_brick_fence_gate_close", 1, 1, "mcl_fences_fence_gate_crimson.png") -- Warped Wood Fence and Fence Gate @@ -47,7 +47,7 @@ mcl_fences.register_fence_and_fence_gate( minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, {"group:fence_wood"}, - mcl_sounds.node_sound_wood_defaults(), "mcl_fences_warped_wood_fence_gate_open", "mcl_fences_warped_wood_fence_gate_close", 1, 1, + mcl_sounds.node_sound_wood_defaults(), "mcl_fences_nether_brick_fence_gate_open", "mcl_fences_nether_brick_fence_gate_close", 1, 1, "mcl_fences_fence_gate_warped.png") From 6bf03ff84a28be42c73af17688eeae2be9218463 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:13:03 +0000 Subject: [PATCH 246/521] Update --- .../ITEMS/mclx_fences/locale/mcl_fences.de.tr | 18 +++++++++++++++ .../ITEMS/mclx_fences/locale/mcl_fences.es.tr | 17 ++++++++++++++ .../ITEMS/mclx_fences/locale/mcl_fences.pl.tr | 19 ++++++++++++++++ mods/ITEMS/mclx_fences/locale/template.txt | 22 +++++++++++++++---- 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr create mode 100644 mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr create mode 100644 mods/ITEMS/mclx_fences/locale/mcl_fences.pl.tr diff --git a/mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr b/mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr new file mode 100644 index 000000000..e4f2a5fa6 --- /dev/null +++ b/mods/ITEMS/mclx_fences/locale/mcl_fences.de.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.=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 lassen 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 +Nether Brick Fence=Netherziegelzaun +Openable by players and redstone power=Zu öffnen von Spielern und Redstoneenergie diff --git a/mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr b/mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr new file mode 100644 index 000000000..1e8c3798a --- /dev/null +++ b/mods/ITEMS/mclx_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/mclx_fences/locale/mcl_fences.pl.tr b/mods/ITEMS/mclx_fences/locale/mcl_fences.pl.tr new file mode 100644 index 000000000..794986b58 --- /dev/null +++ b/mods/ITEMS/mclx_fences/locale/mcl_fences.pl.tr @@ -0,0 +1,19 @@ +# 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.=Płoty są strukturami blokującymi przejścia. Nie połączą się one z innymi blokami. Nie można też nad nimi przeskoczyć pojedynczym skokiem. +Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Furtki mogą być otwierane i zamykane, ale nie można ich przeskoczyć. Łączą się one ładnie z płotem. +Right-click the fence gate to open or close it.=Naciśnij prawy przycisk myszy by otworzyć lub zamknąć furtkę. +Oak Fence=Dębowy płot +Oak Fence Gate=Dębowa furtka +Spruce Fence=Świerkowy płot +Spruce Fence Gate=Świerkowa furtka +Birch Fence=Brzozowy płot +Birch Fence Gate=Brzozowa furtka +Jungle Fence=Tropikalny płot +Jungle Fence Gate=Tropikalna furtka +Dark Oak Fence=Ciemno-dębowy płot +Dark Oak Fence Gate=Ciemno-dębowa furtka +Acacia Fence=Akacjowy płot +Acacia Fence Gate=Akacjowa furtka +Nether Brick Fence=Płot z Netherowych cegieł +Openable by players and redstone power=Może być otworzony przez graczy i energię czerwienitu + diff --git a/mods/ITEMS/mclx_fences/locale/template.txt b/mods/ITEMS/mclx_fences/locale/template.txt index e6c05c7f7..a4cd1cbe7 100644 --- a/mods/ITEMS/mclx_fences/locale/template.txt +++ b/mods/ITEMS/mclx_fences/locale/template.txt @@ -1,4 +1,18 @@ -# textdomain: mclx_fences -Red Nether Brick Fence= -Red Nether Brick Fence Gate= -Nether Brick Fence Gate= +# 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= +Nether Brick Fence= +Openable by players and redstone power= From 4776753be0de4d00539b1b9f94172dbf9e00fdb7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:15:50 +0000 Subject: [PATCH 247/521] Update --- .../mclx_fences/locale/mclx_fences.de.tr | 4 +++ .../mclx_fences/locale/mclx_fences.es.tr | 4 +++ .../mclx_fences/locale/mclx_fences.pl.tr | 4 +++ mods/ITEMS/mclx_fences/locale/template.txt | 26 ++++++------------- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.de.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.de.tr index 9aab02648..a120c1362 100644 --- a/mods/ITEMS/mclx_fences/locale/mclx_fences.de.tr +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.de.tr @@ -2,3 +2,7 @@ Red Nether Brick Fence=Roter Netherziegelzaun Red Nether Brick Fence Gate=Rotes Netherziegelzauntor Nether Brick Fence Gate=Netherziegelzauntor +Crimson Hyphae Wood Fence= +Crimson Hyphae Wood Fence Gate= +Warped Hyphae Wood Fence= +Warped Hyphae Wood Fence Gate= \ No newline at end of file diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.es.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.es.tr index 4531435bf..341489630 100644 --- a/mods/ITEMS/mclx_fences/locale/mclx_fences.es.tr +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.es.tr @@ -2,3 +2,7 @@ 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 +Crimson Hyphae Wood Fence= +Crimson Hyphae Wood Fence Gate= +Warped Hyphae Wood Fence= +Warped Hyphae Wood Fence Gate= \ No newline at end of file diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr index ecdd84562..456b88050 100644 --- a/mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.pl.tr @@ -2,3 +2,7 @@ Red Nether Brick Fence=Płot z czerwonej netherowej cegły Red Nether Brick Fence Gate=Furtka z czerwonej netherowej cegły Nether Brick Fence Gate=Furtka z netherowej cegły +Crimson Hyphae Wood Fence= +Crimson Hyphae Wood Fence Gate= +Warped Hyphae Wood Fence= +Warped Hyphae Wood Fence Gate= \ No newline at end of file diff --git a/mods/ITEMS/mclx_fences/locale/template.txt b/mods/ITEMS/mclx_fences/locale/template.txt index a4cd1cbe7..2de552267 100644 --- a/mods/ITEMS/mclx_fences/locale/template.txt +++ b/mods/ITEMS/mclx_fences/locale/template.txt @@ -1,18 +1,8 @@ -# 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= -Nether Brick Fence= -Openable by players and redstone power= +# textdomain: mclx_fences +Red Nether Brick Fence= +Red Nether Brick Fence Gate= +Nether Brick Fence Gate= +Crimson Hyphae Wood Fence= +Crimson Hyphae Wood Fence Gate= +Warped Hyphae Wood Fence= +Warped Hyphae Wood Fence Gate= \ No newline at end of file From 7e470ed1efc3992fe0d3ce9349ba9d2fd2c865bc Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:19:40 +0000 Subject: [PATCH 248/521] Supprimer 'mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr' --- mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr diff --git a/mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr b/mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr deleted file mode 100644 index e4f2a5fa6..000000000 --- a/mods/ITEMS/mclx_fences/locale/mcl_fences.de.tr +++ /dev/null @@ -1,18 +0,0 @@ -# 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 lassen 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 -Nether Brick Fence=Netherziegelzaun -Openable by players and redstone power=Zu öffnen von Spielern und Redstoneenergie From 0dbabb160aa480159aff45265abd6fea016aef84 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:19:50 +0000 Subject: [PATCH 249/521] Supprimer 'mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr' --- mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr diff --git a/mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr b/mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr deleted file mode 100644 index 1e8c3798a..000000000 --- a/mods/ITEMS/mclx_fences/locale/mcl_fences.es.tr +++ /dev/null @@ -1,17 +0,0 @@ -# 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 From 75da5db1209e43f550129160157732be51b4df23 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:20:01 +0000 Subject: [PATCH 250/521] Supprimer 'mods/ITEMS/mclx_fences/locale/mcl_fences.pl.tr' --- .../ITEMS/mclx_fences/locale/mcl_fences.pl.tr | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 mods/ITEMS/mclx_fences/locale/mcl_fences.pl.tr diff --git a/mods/ITEMS/mclx_fences/locale/mcl_fences.pl.tr b/mods/ITEMS/mclx_fences/locale/mcl_fences.pl.tr deleted file mode 100644 index 794986b58..000000000 --- a/mods/ITEMS/mclx_fences/locale/mcl_fences.pl.tr +++ /dev/null @@ -1,19 +0,0 @@ -# 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.=Płoty są strukturami blokującymi przejścia. Nie połączą się one z innymi blokami. Nie można też nad nimi przeskoczyć pojedynczym skokiem. -Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Furtki mogą być otwierane i zamykane, ale nie można ich przeskoczyć. Łączą się one ładnie z płotem. -Right-click the fence gate to open or close it.=Naciśnij prawy przycisk myszy by otworzyć lub zamknąć furtkę. -Oak Fence=Dębowy płot -Oak Fence Gate=Dębowa furtka -Spruce Fence=Świerkowy płot -Spruce Fence Gate=Świerkowa furtka -Birch Fence=Brzozowy płot -Birch Fence Gate=Brzozowa furtka -Jungle Fence=Tropikalny płot -Jungle Fence Gate=Tropikalna furtka -Dark Oak Fence=Ciemno-dębowy płot -Dark Oak Fence Gate=Ciemno-dębowa furtka -Acacia Fence=Akacjowy płot -Acacia Fence Gate=Akacjowa furtka -Nether Brick Fence=Płot z Netherowych cegieł -Openable by players and redstone power=Może być otworzony przez graczy i energię czerwienitu - From 19ac6ac9b7ee5bc35848ea3e71c84e9bf2b8f3aa Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:21:41 +0000 Subject: [PATCH 251/521] Update --- mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr index 77d38d2c6..ace92a6a7 100644 --- a/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.fr.tr @@ -2,3 +2,7 @@ Red Nether Brick Fence=Barrière en Brique Rouge du Nether Red Nether Brick Fence Gate=Portillon en Brique Rouge du Nether Nether Brick Fence Gate=Portillon en Brique du Nether +Crimson Hyphae Wood Fence=Barrière Ecarlate +Crimson Hyphae Wood Fence Gate=Portillon Ecarlate +Warped Hyphae Wood Fence=Barrière Tordue +Warped Hyphae Wood Fence Gate=Portillon Tordu From 0ddde08a0f0f30fffaf93f910d51d86d807d05d3 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:22:30 +0000 Subject: [PATCH 252/521] Update (template) --- mods/ITEMS/mclx_fences/locale/mclx_fences.ru.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mclx_fences/locale/mclx_fences.ru.tr b/mods/ITEMS/mclx_fences/locale/mclx_fences.ru.tr index fc3735e2b..c30e90808 100644 --- a/mods/ITEMS/mclx_fences/locale/mclx_fences.ru.tr +++ b/mods/ITEMS/mclx_fences/locale/mclx_fences.ru.tr @@ -2,3 +2,7 @@ Red Nether Brick Fence=Забор из адского красного кирпича Red Nether Brick Fence Gate=Калитка из адского красного кирпича Nether Brick Fence Gate=Калитка из адского кирпича +Crimson Hyphae Wood Fence= +Crimson Hyphae Wood Fence Gate= +Warped Hyphae Wood Fence= +Warped Hyphae Wood Fence Gate= \ No newline at end of file From 926382b6dcb0cf7515d256b9cec6b28bdb945be6 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:26:41 +0000 Subject: [PATCH 253/521] =?UTF-8?q?Transf=C3=A9rer=20les=20fichiers=20vers?= =?UTF-8?q?=20'mods/ITEMS/mclx=5Fdoors'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mclx_doors/init.lua | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mods/ITEMS/mclx_doors/init.lua diff --git a/mods/ITEMS/mclx_doors/init.lua b/mods/ITEMS/mclx_doors/init.lua new file mode 100644 index 000000000..2867beb80 --- /dev/null +++ b/mods/ITEMS/mclx_doors/init.lua @@ -0,0 +1,9 @@ +mclx_doors = {} + +local this = minetest.get_current_modname() +local path = minetest.get_modpath(this) + +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 From 7bc43e4e8283c770536d343461f6858366b94a5c Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:27:32 +0000 Subject: [PATCH 254/521] Add nether wood doors+trapdoors --- mods/ITEMS/mclx_doors/README.txt | 43 ++ mods/ITEMS/mclx_doors/alias.lua | 15 + mods/ITEMS/mclx_doors/api_doors.lua | 559 ++++++++++++++++++++++++ mods/ITEMS/mclx_doors/api_trapdoors.lua | 231 ++++++++++ mods/ITEMS/mclx_doors/mod.conf | 3 + 5 files changed, 851 insertions(+) create mode 100644 mods/ITEMS/mclx_doors/README.txt create mode 100644 mods/ITEMS/mclx_doors/alias.lua create mode 100644 mods/ITEMS/mclx_doors/api_doors.lua create mode 100644 mods/ITEMS/mclx_doors/api_trapdoors.lua create mode 100644 mods/ITEMS/mclx_doors/mod.conf diff --git a/mods/ITEMS/mclx_doors/README.txt b/mods/ITEMS/mclx_doors/README.txt new file mode 100644 index 000000000..b4f84ce83 --- /dev/null +++ b/mods/ITEMS/mclx_doors/README.txt @@ -0,0 +1,43 @@ +License of source code: +----------------------- +Copyright (C) 2012 PilzAdam +modified by BlockMen (added sounds, glassdoor, trapdoor) + +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 Do What The Fuck You Want +To Public License, Version 2, as published by Sam Hocevar. See +http://sam.zoy.org/wtfpl/COPYING for more details. + + +License of sounds +-------------------------------------- +Opening-Sound created by CGEffex (CC BY 3.0), modified by BlockMen + doors_door_open.ogg +Closing-Sound created by bennstir (CC BY 3.0) + doors_door_close.ogg +Steel door sounds open & close (CC-BY-3.0) by HazMatt + - http://www.freesound.org/people/HazMattt/sounds/187283/ + doors_steel_door_open.ogg + doors_steel_door_close.ogg + +License/authors of texture files +-------------------------------------- +CC-BY-SA 4.0 + +Modified from the textures of mcl_mushroom and XSSheep's Pixel Perfection Legacy by Github user 3raven : + +mcl_doors_door_crimson_lower.png +mcl_doors_door_warped_lower.png +mcl_doors_trapdoor_crimson.png +mcl_doors_door_crimson.png +mcl_doors_door_warped.png +mcl_doors_trapdoor_crimson_side.png +mcl_doors_door_crimson_side_lower.png +mcl_doors_door_warped_side_lower.png +mcl_doors_trapdoor_warped.png +mcl_doors_door_crimson_side_upper.png +mcl_doors_door_warped_side_upper.png +mcl_doors_trapdoor_warped_side.png +mcl_doors_door_crimson_upper.png +mcl_doors_door_warped_upper.png diff --git a/mods/ITEMS/mclx_doors/alias.lua b/mods/ITEMS/mclx_doors/alias.lua new file mode 100644 index 000000000..4ac2e5f16 --- /dev/null +++ b/mods/ITEMS/mclx_doors/alias.lua @@ -0,0 +1,15 @@ +-- Register aliases +local doornames = { + ["door_crimson"] = "crimson_door", + ["door_warped"] = "warped_door", +} + +for oldname, newname in pairs(doornames) do + minetest.register_alias("doors:"..oldname, "mclx_doors:"..newname) + minetest.register_alias("doors:"..oldname.."_t_1", "mclx_doors:"..newname.."_t_1") + minetest.register_alias("doors:"..oldname.."_b_1", "mclx_doors:"..newname.."_b_1") + minetest.register_alias("doors:"..oldname.."_t_2", "mclx_doors:"..newname.."_t_2") + minetest.register_alias("doors:"..oldname.."_b_2", "mclx_doors:"..newname.."_b_2") +end + + diff --git a/mods/ITEMS/mclx_doors/api_doors.lua b/mods/ITEMS/mclx_doors/api_doors.lua new file mode 100644 index 000000000..d424a6c6b --- /dev/null +++ b/mods/ITEMS/mclx_doors/api_doors.lua @@ -0,0 +1,559 @@ +local S = minetest.get_translator(minetest.get_current_modname()) +local minetest_get_meta = minetest.get_meta + +-- This helper function calls on_place_node callbacks. +local function on_place_node(place_to, newnode, + placer, oldnode, itemstack, pointed_thing) + -- Run script hook + for _, callback in pairs(minetest.registered_on_placenodes) do + -- Deep-copy pos, node and pointed_thing because callback can modify them + local place_to_copy = {x = place_to.x, y = place_to.y, z = place_to.z} + local newnode_copy = + {name = newnode.name, param1 = newnode.param1, param2 = newnode.param2} + local oldnode_copy = + {name = oldnode.name, param1 = oldnode.param1, param2 = oldnode.param2} + local pointed_thing_copy = { + type = pointed_thing.type, + above = vector.new(pointed_thing.above), + under = vector.new(pointed_thing.under), + ref = pointed_thing.ref, + } + callback(place_to_copy, newnode_copy, placer, + oldnode_copy, itemstack, pointed_thing_copy) + end +end + +-- Registers a door +-- name: The name of the door +-- def: a table with the folowing fields: +-- description +-- inventory_image +-- groups +-- tiles_bottom: the tiles of the bottom part of the door {front, side} +-- tiles_top: the tiles of the bottom part of the door {front, side} +-- If the following fields are not defined the default values are used +-- node_box_bottom +-- node_box_top +-- selection_box_bottom +-- selection_box_top +-- only_placer_can_open: if true only the player who placed the door can +-- open it +-- only_redstone_can_open: if true, the door can only be opened by redstone, +-- not by rightclicking it + +function mclx_doors:register_door(name, def) + def.groups.not_in_creative_inventory = 1 + def.groups.dig_by_piston = 1 + def.groups.door = 1 + def.groups.mesecon_ignore_opaque_dig = 1 + + if not def.sound_open then + def.sound_open = "doors_door_open" + end + if not def.sound_close then + def.sound_close = "doors_door_close" + end + + local box = {{-8/16, -8/16, -8/16, 8/16, 8/16, -5/16}} + + if not def.node_box_bottom then + def.node_box_bottom = box + end + if not def.node_box_top then + def.node_box_top = box + end + if not def.selection_box_bottom then + def.selection_box_bottom= box + end + if not def.selection_box_top then + def.selection_box_top = box + end + + 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 = S("This door is a 2-block high barrier which can be opened or closed by hand or by redstone power.") + else + 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 = S("To open or close this door, send a redstone signal to its bottom half.") + else + 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("Openable by redstone power") + else + tt_help = S("Openable by players and redstone power") + 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, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = usagehelp, + inventory_image = def.inventory_image, + stack_max = 64, + 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 + end + local pn = placer:get_player_name() + if minetest.is_protected(pointed_thing.above, pn) and minetest.is_protected(pointed_thing.under, pn) then + return itemstack + end + local ptu = pointed_thing.under + local nu = minetest.get_node(ptu) + -- Pointed thing's rightclick action takes precedence, unless player holds down the sneak key + if minetest.registered_nodes[nu.name] and minetest.registered_nodes[nu.name].on_rightclick and not placer:get_player_control().sneak then + return minetest.registered_nodes[nu.name].on_rightclick(ptu, nu, placer, itemstack) + end + + local pt + if minetest.registered_nodes[nu.name] and minetest.registered_nodes[nu.name].buildable_to then + pt = pointed_thing.under + else + pt = pointed_thing.above + end + local pt2 = {x=pt.x, y=pt.y, z=pt.z} + pt2.y = pt2.y+1 + local ptname = minetest.get_node(pt).name + local pt2name = minetest.get_node(pt2).name + if + (minetest.registered_nodes[ptname] and not minetest.registered_nodes[ptname].buildable_to) or + (minetest.registered_nodes[pt2name] and not minetest.registered_nodes[pt2name].buildable_to) + then + 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()) + + if p2 == 0 then + pt_left.x = pt_left.x-1 + elseif p2 == 1 then + pt_left.z = pt_left.z+1 + elseif p2 == 2 then + pt_left.x = pt_left.x+1 + elseif p2 == 3 then + 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}) + + if def.sounds and def.sounds.place then + minetest.sound_play(def.sounds.place, {pos=pt}, true) + end + + if def.only_placer_can_open then + local meta = minetest_get_meta(pt) + meta:set_string("doors_owner", "") + meta = minetest_get_meta(pt2) + meta:set_string("doors_owner", "") + end + + 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.is_creative_enabled(pn) then + itemstack:take_item() + end + + on_place_node(pt, minetest.get_node(pt), placer, nu, itemstack, pointed_thing) + on_place_node(pt2, minetest.get_node(pt2), placer, minetest.get_node({x=ptu.x,y=ptu.y+1,z=ptu.z}), itemstack, pointed_thing) + + return itemstack + end, + }) + + local tt = def.tiles_top + local tb = def.tiles_bottom + + 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 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] + + minetest.swap_node(pos, {name=replace_dir, param2=np2}) + pos.y = pos.y-dir + minetest.swap_node(pos, {name=replace, param2=np2}) + + local door_switching_sound + if meta1:get_int("is_open") == 1 then + door_switching_sound = def.sound_close + meta1:set_int("is_open", 0) + meta2:set_int("is_open", 0) + else + door_switching_sound = def.sound_open + 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}, true) + end + + local function on_mesecons_signal_open(pos, node) + 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") + end + end + local function on_mesecons_signal_open_top(pos, node) + on_mesecons_signal_open({x=pos.x, y=pos.y-1, z=pos.z}, node) + end + local function on_mesecons_signal_close_top(pos, node) + if not mesecon.is_powered({x=pos.x,y=pos.y-1,z=pos.z}) then + on_mesecons_signal_close({x=pos.x, y=pos.y-1, z=pos.z}, node) + end + end + + local function check_player_priv(pos, player) + if not def.only_placer_can_open then + return true + end + local meta = minetest_get_meta(pos) + local pn = player:get_player_name() + return meta:get_string("doors_owner") == pn + end + + local on_rightclick + -- Disable on_rightclick if this is a redstone-only door + 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") + end + end + end + + minetest.register_node(name.."_b_1", { + tiles = {"blank.png", tt[2].."^[transformFXR90", tb[2], tb[2].."^[transformFX", tb[1], tb[1].."^[transformFX"}, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + drop = "", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_bottom + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_bottom + }, + groups = def.groups, + _mcl_hardness = def._mcl_hardness, + _mcl_blast_resistance = def._mcl_blast_resistance, + sounds = def.sounds, + + after_destruct = function(bottom, oldnode) + local meta_bottom = minetest_get_meta(bottom) + if meta_bottom:get_int("rotation") == 1 then + meta_bottom:set_int("rotation", 0) + else + minetest.add_item(bottom, name) + local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z } + if minetest.get_node(bottom).name ~= name.."_b_2" and minetest.get_node(top).name == name.."_t_1" then + minetest.remove_node(top) + end + end + end, + + on_rightclick = on_rightclick, + + mesecons = { effector = { + action_on = on_mesecons_signal_open, + }}, + + on_rotate = function(bottom, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + local meta_bottom = minetest_get_meta(bottom) + meta_bottom:set_int("rotation", 1) + node.param2 = screwdriver.rotate.facedir(bottom, node, mode) + minetest.swap_node(bottom, node) + + local top = {x=bottom.x,y=bottom.y+1,z=bottom.z} + local meta_top = minetest_get_meta(top) + meta_top:set_int("rotation", 1) + node.name = name .."_t_1" + minetest.swap_node(top, node) + + return true + end + return false + end, + + can_dig = check_player_priv, + }) + + if def.only_redstone_can_open then + on_rightclick = nil + 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") + end + end + end + + minetest.register_node(name.."_t_1", { + tiles = {tt[2].."^[transformR90", "blank.png", tt[2], tt[2].."^[transformFX", tt[1], tt[1].."^[transformFX"}, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + drop = "", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_top + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_top + }, + groups = def.groups, + _mcl_hardness = def._mcl_hardness, + _mcl_blast_resistance = def._mcl_blast_resistance, + sounds = def.sounds, + + after_destruct = function(top, oldnode) + local meta_top = minetest_get_meta(top) + if meta_top:get_int("rotation") == 1 then + meta_top:set_int("rotation", 0) + else + local bottom = { x = top.x, y = top.y - 1, z = top.z } + if minetest.get_node(top).name ~= name.."_t_2" and minetest.get_node(bottom).name == name.."_b_1" and oldnode.name == name.."_t_1" then + minetest.dig_node(bottom) + end + end + end, + + on_rightclick = on_rightclick, + + mesecons = { effector = { + action_on = on_mesecons_signal_open_top, + rules = mesecon.rules.flat, + }}, + + on_rotate = function(top, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + local meta_top = minetest_get_meta(top) + meta_top:set_int("rotation", 1) + node.param2 = screwdriver.rotate.facedir(top, node, mode) + minetest.swap_node(top, node) + + local bottom = {x=top.x,y=top.y-1,z=top.z} + local meta_bottom = minetest_get_meta(bottom) + meta_bottom:set_int("rotation", 1) + node.name = name .."_b_1" + minetest.swap_node(bottom, node) + + return true + end + return false + end, + + can_dig = check_player_priv, + }) + + if def.only_redstone_can_open then + on_rightclick = nil + 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") + end + end + end + + minetest.register_node(name.."_b_2", { + tiles = {"blank.png", tt[2].."^[transformFXR90", tb[2].."^[transformI", tb[2].."^[transformFX", tb[1].."^[transformFX", tb[1]}, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + drop = "", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_bottom + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_bottom + }, + groups = def.groups, + _mcl_hardness = def._mcl_hardness, + _mcl_blast_resistance = def._mcl_blast_resistance, + sounds = def.sounds, + + after_destruct = function(bottom, oldnode) + local meta_bottom = minetest_get_meta(bottom) + if meta_bottom:get_int("rotation") == 1 then + meta_bottom:set_int("rotation", 0) + else + local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z } + minetest.add_item(bottom, name) + if minetest.get_node(bottom).name ~= name.."_b_1" and minetest.get_node(top).name == name.."_t_2" then + minetest.remove_node(top) + end + end + end, + + on_rightclick = on_rightclick, + + mesecons = { effector = { + action_off = on_mesecons_signal_close, + }}, + + on_rotate = function(bottom, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + local meta_bottom = minetest_get_meta(bottom) + meta_bottom:set_int("rotation", 1) + node.param2 = screwdriver.rotate.facedir(bottom, node, mode) + minetest.swap_node(bottom, node) + + local top = {x=bottom.x,y=bottom.y+1,z=bottom.z} + local meta_top = minetest_get_meta(top) + meta_top:set_int("rotation", 1) + node.name = name .."_t_2" + minetest.swap_node(top, node) + + return true + end + return false + end, + + can_dig = check_player_priv, + }) + + if def.only_redstone_can_open then + on_rightclick = nil + 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") + end + end + end + + minetest.register_node(name.."_t_2", { + tiles = {tt[2].."^[transformR90", "blank.png", tt[2].."^[transformI", tt[2].."^[transformFX", tt[1].."^[transformFX", tt[1]}, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + drop = "", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_top + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_top + }, + groups = def.groups, + _mcl_hardness = def._mcl_hardness, + _mcl_blast_resistance = def._mcl_blast_resistance, + sounds = def.sounds, + + after_destruct = function(top, oldnode) + local meta_top = minetest_get_meta(top) + if meta_top:get_int("rotation") == 1 then + meta_top:set_int("rotation", 0) + else + local bottom = { x = top.x, y = top.y - 1, z = top.z } + if minetest.get_node(top).name ~= name.."_t_1" and minetest.get_node(bottom).name == name.."_b_2" and oldnode.name == name.."_t_2" then + minetest.dig_node(bottom) + end + end + end, + + on_rightclick = on_rightclick, + + mesecons = { effector = { + action_off = on_mesecons_signal_close_top, + rules = mesecon.rules.flat, + }}, + + on_rotate = function(top, node, user, mode, param2) + if mode == screwdriver.ROTATE_FACE then + local meta_top = minetest_get_meta(top) + meta_top:set_int("rotation", 1) + node.param2 = screwdriver.rotate.facedir(top, node, mode) + minetest.swap_node(top, node) + + local bottom = {x=top.x,y=top.y-1,z=top.z} + local meta_bottom = minetest_get_meta(bottom) + meta_bottom:set_int("rotation", 1) + node.name = name .."_b_2" + minetest.swap_node(bottom, node) + + return true + end + return false + end, + + can_dig = check_player_priv, + }) + + -- Add entry aliases for the Help + if minetest.get_modpath("doc") then + doc.add_entry_alias("craftitems", name, "nodes", name.."_b_1") + doc.add_entry_alias("craftitems", name, "nodes", name.."_b_2") + doc.add_entry_alias("craftitems", name, "nodes", name.."_t_1") + doc.add_entry_alias("craftitems", name, "nodes", name.."_t_2") + end + +end diff --git a/mods/ITEMS/mclx_doors/api_trapdoors.lua b/mods/ITEMS/mclx_doors/api_trapdoors.lua new file mode 100644 index 000000000..e7bd73fb6 --- /dev/null +++ b/mods/ITEMS/mclx_doors/api_trapdoors.lua @@ -0,0 +1,231 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +-- 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 +end + +---- Trapdoor ---- + +local on_rotate +if minetest.get_modpath("screwdriver") then + 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 mclx_doors:register_trapdoor(name, def) + local groups = table.copy(def.groups) + if groups == nil then + groups = {} + end + groups.mesecon_ignore_opaque_dig = 1 + + if not def.sound_open then + def.sound_open = "doors_door_open" + end + if not def.sound_close then + def.sound_close = "doors_door_close" + end + + local function punch(pos) + local me = minetest.get_node(pos) + 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}, 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}, true) + tmp_node = {name=name.."_open", param1=me.param1, param2=me.param2} + end + minetest.set_node(pos, tmp_node) + end + + local on_rightclick + if not def.only_redstone_can_open then + on_rightclick = function(pos, node, clicker) + punch(pos) + end + end + + -- Default help texts + local longdesc, usagehelp, tt_help + longdesc = def._doc_items_longdesc + if not longdesc then + if def.only_redstone_can_open then + 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 = 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 = S("To open or close this trapdoor, rightclick it or send a redstone signal to it.") + end + if def.only_redstone_can_open then + tt_help = S("Openable by redstone power") + else + tt_help = S("Openable by players and redstone power") + end + + -- Closed trapdoor + + local tile_front = def.tile_front + local tile_side = def.tile_side + if not tile_side then + tile_side = tile_front + end + local tiles_closed = { + tile_front, + tile_front .. "^[transformFY", + tile_side, tile_side, + tile_side, tile_side, + } + + local groups_closed = groups + groups_closed.trapdoor = 1 + 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", + tiles = tiles_closed, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + inventory_image = def.inventory_image, + wield_image = def.wield_image, + is_ground_content = false, + paramtype = "light", + stack_max = 64, + paramtype2 = "facedir", + sunlight_propagates = true, + groups = groups_closed, + _mcl_hardness = def._mcl_hardness, + _mcl_blast_resistance = def._mcl_blast_resistance, + sounds = def.sounds, + node_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -5/16, 8/16},}, + }, + mesecons = {effector = { + action_on = (function(pos, node) + punch(pos) + end), + }}, + on_place = function(itemstack, placer, pointed_thing) + local p0 = pointed_thing.under + local p1 = pointed_thing.above + local param2 = 0 + + local placer_pos = placer:get_pos() + if placer_pos then + param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos)) + end + + local fpos = get_fpos(placer, pointed_thing) + + --local origname = itemstack:get_name() + if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) + or (fpos < -0.5 and fpos > -0.999999999) then + param2 = param2 + 20 + if param2 == 21 then + param2 = 23 + elseif param2 == 23 then + param2 = 21 + end + end + return minetest.item_place(itemstack, placer, pointed_thing, param2) + end, + on_rightclick = on_rightclick, + on_rotate = on_rotate, + }) + + -- Open trapdoor + + local groups_open = table.copy(groups) + + local tiles_open = { + tile_side, + tile_side .. "^[transformR180", + tile_side .. "^[transformR270", + tile_side .. "^[transformR90", + tile_front .. "^[transform46", + tile_front .. "^[transformFY", + } + + groups_open.trapdoor = 2 + groups_open.not_in_creative_inventory = 1 + minetest.register_node(name.."_open", { + drawtype = "nodebox", + tiles = tiles_open, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, + is_ground_content = false, + paramtype = "light", + paramtype2 = "facedir", + -- TODO: Implement Minecraft behaviour: Climbable if directly above + -- ladder w/ matching orientation. + -- Current behavour: Always climbable + climbable = true, + sunlight_propagates = true, + pointable = true, + groups = groups_open, + _mcl_hardness = def._mcl_hardness, + _mcl_blast_resistance = def._mcl_blast_resistance, + sounds = def.sounds, + drop = name, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 5/16, 0.5, 0.5, 0.5} + }, + on_rightclick = on_rightclick, + mesecons = {effector = { + action_off = (function(pos, node) + punch(pos) + end), + }}, + on_rotate = on_rotate, + }) + + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", name, "nodes", name.."_open") + end + +end diff --git a/mods/ITEMS/mclx_doors/mod.conf b/mods/ITEMS/mclx_doors/mod.conf new file mode 100644 index 000000000..e0e6751bf --- /dev/null +++ b/mods/ITEMS/mclx_doors/mod.conf @@ -0,0 +1,3 @@ +name = mclx_doors +depends = mcl_core, mcl_sounds, mesecons +optional_depends = doc, screwdriver From dcfa7f1b548748fb6bdcd89f99ac4c12f4b04a3a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:32:32 +0000 Subject: [PATCH 255/521] Add textures --- .../textures/mcl_doors_door_crimson.png | Bin 0 -> 220 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson.png new file mode 100644 index 0000000000000000000000000000000000000000..5682f51e5b1c7290b6bd295402916902f60752ed GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VWWe5baKtNJbQdwEqQ%b@| zMoLFVCrnwv)YLRXSG~$WYqGiiY#YN3KR+G>s$(n(@(X5gcy=QV$Vu>YaSY+Oo}7?y zqOWh)=0--2q^hEKF${*AiZ&_oe4g}j9-D%jU+5X#4IXJ>-!cu9FYU?ZpCKqKSbB)@ z2*b=|21E5?zAJMk%}#I&4>?j~aQM>Z6txInvomvEXs8rRNifV{)|8u`Vb2J1p{J{# J%Q~loCIGAhLV^GQ literal 0 HcmV?d00001 From cd7e56ba2782ef6a0a04468d585d1ba388d71dd2 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:33:22 +0000 Subject: [PATCH 256/521] Add textures --- .../textures/mcl_doors_door_crimson_lower.png | Bin 0 -> 239 bytes .../mcl_doors_door_crimson_side_lower.png | Bin 0 -> 172 bytes .../mcl_doors_door_crimson_side_upper.png | Bin 0 -> 168 bytes .../textures/mcl_doors_door_crimson_upper.png | Bin 0 -> 234 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_lower.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_lower.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_upper.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_upper.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_lower.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_lower.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9f301524830e637e584b9efcf6b0ab0b9652d0 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#x_ulJJp{($Ucg zQ&uoFHO4t*UY{m~u zy`_}d9N4n7ZCRamvQEfvJTgzLe0|l1D!nPbP5&*IS~2Y_c$#}=!`DE)hsz3tzLyy2 ze|YshvfA;?k}#{If4z-dfs04z7d-1|K)E zITIODOAfmfB`DoAa1-}AmC7_FF@_=a3(JD+c4-OLMI#6z}9-Y`njxg HN@xNA3}Y$^ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_upper.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_upper.png new file mode 100644 index 0000000000000000000000000000000000000000..19988c83a5c56db02697f7b69995f25d68b36aff GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV1=2tuDJiL}tn4Wz;UgoZ zqoWh1tYB(tnxU&+WuP_LTt9A8&s3ly#*!evUc}r{*gTe~ HDWM4fFl#Ih literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_upper.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_upper.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8203a92c143893ea7f68c756b4393ada7266bf GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#x_ulJJp{($Ucg zQ&uoFHO Date: Sun, 6 Mar 2022 23:34:13 +0000 Subject: [PATCH 257/521] Add more textures --- .../mclx_doors/textures/mcl_doors_door_warped.png | Bin 0 -> 217 bytes .../textures/mcl_doors_door_warped_lower.png | Bin 0 -> 243 bytes .../textures/mcl_doors_door_warped_side_lower.png | Bin 0 -> 168 bytes .../textures/mcl_doors_door_warped_side_upper.png | Bin 0 -> 167 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_lower.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_lower.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_upper.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped.png new file mode 100644 index 0000000000000000000000000000000000000000..118e9ca01b50f68d492ca5a0b4077e97d11f6331 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=2tuDJiL}tgNG>W1#J1 zYHDh2=I3f39pqLJ>syl(GO;3ZIbTEH0-!p^k|4ie28U-i(tw-}NhS&75p_Tr%+-6C1;t)tU>{`M3gsb}@Lm`njxg HN@xNA`TRw4 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_lower.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_lower.png new file mode 100644 index 0000000000000000000000000000000000000000..0410811c108409d02d91f2edd08a103854b32c95 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#w*0(J|0=GBq`| zHuH0}j}CGxi1n?>37J?CxqP3q{S~0%UQZXt5RU7j#|-(J3`E!-i03gB8u&Q*sKhj! z^Hpx+-m7bPd>~gK_36Eb^~{xv);M&!$%ji;{UJ#;){N5Z@__KM=Vd&2&O@Btmh;OXk;vd$@?2>=Z?TCM;9 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_lower.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_lower.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7fdeeb4b5c724d3bf151f35fa222bdc2f81e61 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=2vEtgNiBX0M~8V`b=L zYHI3W676Y|>*11?;8Wiix8x2`1!GB&UoeBivm0qZj;W`MV+hCf*11?;8Wiix8x2`1!GB&UoeBivm0qZj)|v>V+hCfWCOE=h6WD{WrkB5 z8VuKPE$HEx(GkToWg$~?$iXe{k_)oir879wMG`t3N*NiJgmE%kbTz#I+2`r%=d#Wz Gp$Pz<9xUkq literal 0 HcmV?d00001 From cecba8de89a6c9993db9553278657eb39f881652 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:34:53 +0000 Subject: [PATCH 258/521] Textures again --- .../textures/mcl_doors_door_warped_upper.png | Bin 0 -> 241 bytes .../textures/mcl_doors_trapdoor_crimson.png | Bin 0 -> 230 bytes .../textures/mcl_doors_trapdoor_crimson_side.png | Bin 0 -> 197 bytes .../textures/mcl_doors_trapdoor_warped.png | Bin 0 -> 230 bytes .../textures/mcl_doors_trapdoor_warped_side.png | Bin 0 -> 222 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_upper.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson_side.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped.png create mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped_side.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_upper.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_upper.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc7f53a16aa442885e7fdc8da1cb096f9fe3f4b GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#w*0(J|0=GBq`| zHuH0}j}CGxi1n?>37J?CxqP3q{S~0%Zci7-5RU7n#|-(J3`E!-{O2-Jb2Aqbp2~gV z&K{O8OmE*@vg31zb`uV`aq$G>3)8oc%xf?FiJ5B7H>*9=(oDf}&(y^3SNG19PUy;sR!$BT)Mq`_S^+;BK{aVc+O7q z-moC_hSW8M&`DrD$=Eds8X>I$-U2cEiB7e?**G#u4{>ro5 cYvq0I1?;s*uQJe@ zY_31s#<2g^Tz8;?Y)==*5RU7mXAkloRuEu0P|Ej@qmL2$qAWQ5xKlRylf{>WwWP?V+hA}*|UaxhYWaH6MwU5K2`A9%gANyyfAwT zi;a+FqTAHqvXrThCvB=d{Qrx>bM;^me#_}DkL72aFxhkH_=62^7P6P5d|=qLYVjtE z3G0_tujI=*ta**4G<2J^%hdj48*`4^<=xenRc~+o>70JRv1|hC-_qS2LVrsH+a$W? c=N+&XcT0Re@92|)=7`ued? z8 literal 0 HcmV?d00001 From 3d91d21782cd144424332066b61922c5a6c940ce Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:40:09 +0000 Subject: [PATCH 259/521] Sound --- .../mclx_doors/sounds/doors_door_close.ogg | Bin 0 -> 14618 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mclx_doors/sounds/doors_door_close.ogg diff --git a/mods/ITEMS/mclx_doors/sounds/doors_door_close.ogg b/mods/ITEMS/mclx_doors/sounds/doors_door_close.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b4a13ec72a8eed57d68b0ca1ca8fb55ee2b96cca GIT binary patch literal 14618 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%0D5MqQarWj^5`TyT6r0T-BxbyQ$5jNnQM%(4 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 S?cS#{P|IBL!j|h#MgD&%KOoNl literal 0 HcmV?d00001 From 701961fff0e4c64f48561944f4226909cff0f21d Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:40:49 +0000 Subject: [PATCH 260/521] Add door sound/identical to mcl_doors --- mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg | Bin 0 -> 7710 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg diff --git a/mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg b/mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d03570eef34cc923a885418ce259013df5594361 GIT binary patch literal 7710 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 literal 0 HcmV?d00001 From b8daf06a8bbb7866fb52eb54923d572d4530375d Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:42:27 +0000 Subject: [PATCH 261/521] Add translations --- mods/ITEMS/mclx_doors/locale/template.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mods/ITEMS/mclx_doors/locale/template.txt diff --git a/mods/ITEMS/mclx_doors/locale/template.txt b/mods/ITEMS/mclx_doors/locale/template.txt new file mode 100644 index 000000000..e9050a3fa --- /dev/null +++ b/mods/ITEMS/mclx_doors/locale/template.txt @@ -0,0 +1,11 @@ +# textdomain: mclx_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.= +Crimson Door= +Warped Door= +Crimson Trapdoor= +Warped 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.= +Openable by players and redstone power= +Openable by redstone power= From 4b3ec3069d78b6b3ac792bcdde8c749d0b439363 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:43:36 +0000 Subject: [PATCH 262/521] Add files/some translations are incomplete --- mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr | 11 +++++++++++ mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr | 11 +++++++++++ mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr | 12 ++++++++++++ mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr | 11 +++++++++++ mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr | 11 +++++++++++ 5 files changed, 56 insertions(+) create mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr create mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr create mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr create mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr create mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr new file mode 100644 index 000000000..8f7b87a36 --- /dev/null +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr @@ -0,0 +1,11 @@ +# 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 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. +Crimson Door= +Warped Door= +Crimson Trapdoor= +Warped 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.=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 nachdem, 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. +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/mclx_doors/locale/mcl_doors.es.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr new file mode 100644 index 000000000..78758be9f --- /dev/null +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr @@ -0,0 +1,11 @@ +# 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 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. +Crimson Door= +Warped Door= +Crimson Trapdoor= +Warped 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.=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. +Openable by players and redstone power= +Openable by redstone power= diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr new file mode 100644 index 000000000..ac484293f --- /dev/null +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr @@ -0,0 +1,12 @@ +# 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. +Crimson Door=Porte Ecarlate +Warped Door=Porte Tordue +Crimson Trapdoor=Trappe Ecarlate +Warped Trapdoor=Trappe Tordue +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. + 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/mclx_doors/locale/mcl_doors.pl.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr new file mode 100644 index 000000000..c081cbbbe --- /dev/null +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr @@ -0,0 +1,11 @@ +# textdomain: mcl_doors +Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Drewniane drzwi są blokami o wysokości 2, które mogą być otworzone i zamknięte ręcznie bądź przez zasilenie czerwienitem. +To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Aby otworzyć lub zamknąć drewniane drzwi, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. +Crimson Door= +Warped Door= +Crimson Trapdoor= +Warped 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.=Drewniane klapy są poziomymi barierami, które mogą być otwarte i zamknięte ręcznie bądź przez zasilenie czerwienitem. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinać jak po drabinie. +To open or close the trapdoor, rightclick it or send a redstone signal to it.=Aby otworzyć lub zamknąć drewniane klapy, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. +Openable by players and redstone power=Mogą być otworzone przez graczy i zasilanie czerwienitem +Openable by redstone power=Mogą być otworzone przez zasilanie czerwienitem diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr new file mode 100644 index 000000000..9c6341f1f --- /dev/null +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr @@ -0,0 +1,11 @@ +# 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.=Чтобы открыть или закрыть деревянную дверь, кликните правой либо подайте к её нижней части сигнал редстоуна. +Crimson Door= +Warped Door= +Crimson Trapdoor= +Warped 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.=Чтобы открыть или закрыть деревянные люк, кликните по нему правой клавишей либо подайте на него сигнал редстоуна. +Openable by players and redstone power=Открывается игроками и действием редстоуна +Openable by redstone power=Открывается действием редстоуна From 98fca6a564c26d1ab34ad9aa0f202dfd51f91faa Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:49:39 +0000 Subject: [PATCH 263/521] Add doors --- mods/ITEMS/mclx_doors/register.lua | 103 +++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 mods/ITEMS/mclx_doors/register.lua diff --git a/mods/ITEMS/mclx_doors/register.lua b/mods/ITEMS/mclx_doors/register.lua new file mode 100644 index 000000000..55889d164 --- /dev/null +++ b/mods/ITEMS/mclx_doors/register.lua @@ -0,0 +1,103 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +--[[ Doors ]] + +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.") + +--- Crimson Door -- +mclx_doors:register_door("mclx_doors:crimson_door", { + description = S("Crimson Door"), + _doc_items_longdesc = wood_longdesc, + _doc_items_usagehelp = wood_usagehelp, + inventory_image = "mclx_doors_door_crimson.png", + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + tiles_bottom = {"mclx_doors_door_crimson_lower.png", "mclx_doors_door_crimson_side_lower.png"}, + tiles_top = {"mclx_doors_door_crimson_upper.png", "mclx_doors_door_crimson_side_upper.png"}, + sounds = mcl_sounds.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "mclx_doors:crimson_door 3", + recipe = { + {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"}, + {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"}, + {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"} + } +}) + +--- Warped Door -- +mclx_doors:register_door("mclx_doors:warped_door", { + description = S("Warped Door"), + _doc_items_longdesc = wood_longdesc, + _doc_items_usagehelp = wood_usagehelp, + inventory_image = "mclx_doors_door_warped.png", + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + tiles_bottom = {"mclx_doors_door_warped_lower.png", "mclx_doors_door_warped_side_lower.png"}, + tiles_top = {"mclx_doors_door_warped_upper.png", "mclx_doors_door_warped_side_upper.png"}, + sounds = mcl_sounds.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "mclx_doors:warped_door 3", + recipe = { + {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"}, + {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"}, + {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"} + } +}) + + + +minetest.register_craft({ + type = "fuel", + recipe = "mclx_doors:crimson_door", + burntime = 10, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "mclx_doors:warped_door", + burntime = 10, +}) + +--[[ Trapdoors ]] +local woods = { + -- id, desc, texture, craftitem + { "crimson_trapdoor", S("Crimson Trapdoor"), "mclx_doors_trapdoor_crimson.png", "mclx_doors_trapdoor_crimson_side.png", "mcl_mushroom:crimson_hyphae_wood" }, + { "warped_trapdoor", S("Warped Trapdoor"), "mclx_doors_trapdoor_warped.png", "mclx_doors_trapdoor_warped_side.png", "mcl_mushroom:warped_hyphae_wood" }, +} + +for w=1, #woods do + mclx_doors:register_trapdoor("mclx_doors:"..woods[w][1], { + description = woods[w][2], + _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], + groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + sounds = mcl_sounds.node_sound_wood_defaults(), + }) + + minetest.register_craft({ + output = "mclx_doors:"..woods[w][1].." 2", + recipe = { + {woods[w][5], woods[w][5], woods[w][5]}, + {woods[w][5], woods[w][5], woods[w][5]}, + } + }) + + minetest.register_craft({ + type = "fuel", + recipe = "mclx_doors:"..woods[w][1], + burntime = 15, + }) +end + From 1ca437f86a1a1350e4390272c7374b9c81d1976a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 6 Mar 2022 23:52:32 +0000 Subject: [PATCH 264/521] Correct textures filenames --- mods/ITEMS/mclx_doors/register.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mclx_doors/register.lua b/mods/ITEMS/mclx_doors/register.lua index 55889d164..7d392a414 100644 --- a/mods/ITEMS/mclx_doors/register.lua +++ b/mods/ITEMS/mclx_doors/register.lua @@ -10,12 +10,12 @@ mclx_doors:register_door("mclx_doors:crimson_door", { description = S("Crimson Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, - inventory_image = "mclx_doors_door_crimson.png", + inventory_image = "mcl_doors_door_crimson.png", groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 3, - tiles_bottom = {"mclx_doors_door_crimson_lower.png", "mclx_doors_door_crimson_side_lower.png"}, - tiles_top = {"mclx_doors_door_crimson_upper.png", "mclx_doors_door_crimson_side_upper.png"}, + tiles_bottom = {"mcl_doors_door_crimson_lower.png", "mcl_doors_door_crimson_side_lower.png"}, + tiles_top = {"mcl_doors_door_crimson_upper.png", "mcl_doors_door_crimson_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -33,12 +33,12 @@ mclx_doors:register_door("mclx_doors:warped_door", { description = S("Warped Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, - inventory_image = "mclx_doors_door_warped.png", + inventory_image = "mcl_doors_door_warped.png", groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, _mcl_blast_resistance = 3, - tiles_bottom = {"mclx_doors_door_warped_lower.png", "mclx_doors_door_warped_side_lower.png"}, - tiles_top = {"mclx_doors_door_warped_upper.png", "mclx_doors_door_warped_side_upper.png"}, + tiles_bottom = {"mcl_doors_door_warped_lower.png", "mcl_doors_door_warped_side_lower.png"}, + tiles_top = {"mcl_doors_door_warped_upper.png", "mcl_doors_door_warped_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -68,8 +68,8 @@ minetest.register_craft({ --[[ Trapdoors ]] local woods = { -- id, desc, texture, craftitem - { "crimson_trapdoor", S("Crimson Trapdoor"), "mclx_doors_trapdoor_crimson.png", "mclx_doors_trapdoor_crimson_side.png", "mcl_mushroom:crimson_hyphae_wood" }, - { "warped_trapdoor", S("Warped Trapdoor"), "mclx_doors_trapdoor_warped.png", "mclx_doors_trapdoor_warped_side.png", "mcl_mushroom:warped_hyphae_wood" }, + { "crimson_trapdoor", S("Crimson Trapdoor"), "mcl_doors_trapdoor_crimson.png", "mcl_doors_trapdoor_crimson_side.png", "mcl_mushroom:crimson_hyphae_wood" }, + { "warped_trapdoor", S("Warped Trapdoor"), "mcl_doors_trapdoor_warped.png", "mcl_doors_trapdoor_warped_side.png", "mcl_mushroom:warped_hyphae_wood" }, } for w=1, #woods do From 96d6f1c537bc2effe84789ae8d703b3494e56215 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 00:33:40 +0000 Subject: [PATCH 265/521] Correction --- mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr index ac484293f..16858318d 100644 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr @@ -7,6 +7,5 @@ Crimson Trapdoor=Trappe Ecarlate Warped Trapdoor=Trappe Tordue 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. - 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 From 18c35e6924837298d11f18d3c12dad0ada8456f7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 00:39:59 +0000 Subject: [PATCH 266/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mclx=5Fdoors/locale/mcl=5Fdoors.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr index 16858318d..f90048f32 100644 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_doors +# textdomain: mclx_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. Crimson Door=Porte Ecarlate From 819f13f688c826f418476232741cf2083534339b Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 00:40:20 +0000 Subject: [PATCH 267/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mclx=5Fdoors/locale/mcl=5Fdoors.de.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr index 8f7b87a36..e817f3e78 100644 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_doors +# textdomain: mclx_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 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. Crimson Door= From 0a3d738d6f15700c5d4fa69b3b8a61d5c931d8b4 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 00:41:11 +0000 Subject: [PATCH 268/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mclx=5Fdoors/locale/mcl=5Fdoors.es.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr index 78758be9f..acf2cb6de 100644 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_doors +# textdomain: mclx_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 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. Crimson Door= From 7ed5d1ec162b8026ad353b87e7924abd08e7fc17 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 00:41:36 +0000 Subject: [PATCH 269/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mclx=5Fdoors/locale/mcl=5Fdoors.pl.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr index c081cbbbe..01bc12bb3 100644 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_doors +# textdomain: mclx_doors Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Drewniane drzwi są blokami o wysokości 2, które mogą być otworzone i zamknięte ręcznie bądź przez zasilenie czerwienitem. To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Aby otworzyć lub zamknąć drewniane drzwi, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. Crimson Door= From e376f72f4e2a1f724838306f16e2a8ec451c3987 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 00:42:00 +0000 Subject: [PATCH 270/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mclx=5Fdoors/locale/mcl=5Fdoors.ru.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr index 9c6341f1f..798c2858a 100644 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr +++ b/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr @@ -1,4 +1,4 @@ -# textdomain: mcl_doors +# textdomain: mclx_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.=Чтобы открыть или закрыть деревянную дверь, кликните правой либо подайте к её нижней части сигнал редстоуна. Crimson Door= From 7c8d5dd5f53b68733131afb582e91025bc4524fc Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:30:36 +0000 Subject: [PATCH 271/521] Add nether wood doors --- mods/ITEMS/mcl_doors/register.lua | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index c998f6538..7d791b4bb 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -143,6 +143,52 @@ minetest.register_craft({ } }) +--- Crimson Door -- +mcl_doors:register_door("mcl_doors:crimson_door", { + description = S("Crimson Door"), + _doc_items_longdesc = wood_longdesc, + _doc_items_usagehelp = wood_usagehelp, + inventory_image = "mcl_doors_door_crimson.png", + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + tiles_bottom = {"mcl_doors_door_crimson_lower.png", "mcl_doors_door_crimson_side_lower.png"}, + tiles_top = {"mcl_doors_door_crimson_upper.png", "mcl_doors_door_crimson_side_upper.png"}, + sounds = mcl_sounds.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "mcl_doors:crimson_door 3", + recipe = { + {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"}, + {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"}, + {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"} + } +}) + +--- Warped Door -- +mclx_doors:register_door("mcl_doors:warped_door", { + description = S("Warped Door"), + _doc_items_longdesc = wood_longdesc, + _doc_items_usagehelp = wood_usagehelp, + inventory_image = "mcl_doors_door_warped.png", + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + tiles_bottom = {"mcl_doors_door_warped_lower.png", "mcl_doors_door_warped_side_lower.png"}, + tiles_top = {"mcl_doors_door_warped_upper.png", "mcl_doors_door_warped_side_upper.png"}, + sounds = mcl_sounds.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "mcl_doors:warped_door 3", + recipe = { + {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"}, + {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"}, + {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"} + } +}) + minetest.register_craft({ type = "fuel", recipe = "mcl_doors:wooden_door", @@ -174,6 +220,18 @@ minetest.register_craft({ burntime = 10, }) +minetest.register_craft({ + type = "fuel", + recipe = "mcl_doors:crimson_door", + burntime = 10, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "mcl_doors:warped_door", + burntime = 10, +}) + --- Iron Door --- mcl_doors:register_door("mcl_doors:iron_door", { description = S("Iron Door"), @@ -212,6 +270,8 @@ local woods = { { "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" }, + { "crimson_trapdoor", S("Crimson Trapdoor"), "mcl_doors_trapdoor_crimson.png", "mcl_doors_trapdoor_crimson_side.png", "mcl_mushroom:crimson_hyphae_wood" }, + { "warped_trapdoor", S("Warped Trapdoor"), "mcl_doors_trapdoor_warped.png", "mcl_doors_trapdoor_warped_side.png", "mcl_mushroom:warped_hyphae_wood" }, } for w=1, #woods do From e37967dbe48b4d89df4c135f8ab7ccf36faaabdd Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:33:34 +0000 Subject: [PATCH 272/521] Add nether doors textures --- .../mcl_doors/textures/mcl_doors_door_crimson.png | Bin 0 -> 220 bytes .../textures/mcl_doors_door_crimson_lower.png | Bin 0 -> 239 bytes .../mcl_doors_door_crimson_side_lower.png | Bin 0 -> 172 bytes .../mcl_doors_door_crimson_side_upper.png | Bin 0 -> 168 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_lower.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_side_lower.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_side_upper.png diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson.png new file mode 100644 index 0000000000000000000000000000000000000000..5682f51e5b1c7290b6bd295402916902f60752ed GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VWWe5baKtNJbQdwEqQ%b@| zMoLFVCrnwv)YLRXSG~$WYqGiiY#YN3KR+G>s$(n(@(X5gcy=QV$Vu>YaSY+Oo}7?y zqOWh)=0--2q^hEKF${*AiZ&_oe4g}j9-D%jU+5X#4IXJ>-!cu9FYU?ZpCKqKSbB)@ z2*b=|21E5?zAJMk%}#I&4>?j~aQM>Z6txInvomvEXs8rRNifV{)|8u`Vb2J1p{J{# J%Q~loCIGAhLV^GQ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_lower.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9f301524830e637e584b9efcf6b0ab0b9652d0 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#x_ulJJp{($Ucg zQ&uoFHO4t*UY{m~u zy`_}d9N4n7ZCRamvQEfvJTgzLe0|l1D!nPbP5&*IS~2Y_c$#}=!`DE)hsz3tzLyy2 ze|YshvfA;?k}#{If4z-dfs04z7d-1|K)E zITIODOAfmfB`DoAa1-}AmC7_FF@_=a3(JD+c4-OLMI#6z}9-Y`njxg HN@xNA3}Y$^ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_side_upper.png new file mode 100644 index 0000000000000000000000000000000000000000..19988c83a5c56db02697f7b69995f25d68b36aff GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV1=2tuDJiL}tn4Wz;UgoZ zqoWh1tYB(tnxU&+WuP_LTt9A8&s3ly#*!evUc}r{*gTe~ HDWM4fFl#Ih literal 0 HcmV?d00001 From 5a095530d44603a9b1bacca2aa3fbfb56eab8a9f Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:34:13 +0000 Subject: [PATCH 273/521] Add nether doors textures --- .../textures/mcl_doors_door_crimson_upper.png | Bin 0 -> 234 bytes .../mcl_doors/textures/mcl_doors_door_warped.png | Bin 0 -> 217 bytes .../textures/mcl_doors_door_warped_lower.png | Bin 0 -> 243 bytes .../textures/mcl_doors_door_warped_side_lower.png | Bin 0 -> 168 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_upper.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_lower.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_side_lower.png diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_crimson_upper.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8203a92c143893ea7f68c756b4393ada7266bf GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#x_ulJJp{($Ucg zQ&uoFHOW1#J1 zYHDh2=I3f39pqLJ>syl(GO;3ZIbTEH0-!p^k|4ie28U-i(tw-}NhS&75p_Tr%+-6C1;t)tU>{`M3gsb}@Lm`njxg HN@xNA`TRw4 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_lower.png new file mode 100644 index 0000000000000000000000000000000000000000..0410811c108409d02d91f2edd08a103854b32c95 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#w*0(J|0=GBq`| zHuH0}j}CGxi1n?>37J?CxqP3q{S~0%UQZXt5RU7j#|-(J3`E!-i03gB8u&Q*sKhj! z^Hpx+-m7bPd>~gK_36Eb^~{xv);M&!$%ji;{UJ#;){N5Z@__KM=Vd&2&O@Btmh;OXk;vd$@?2>=Z?TCM;9 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_side_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_side_lower.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7fdeeb4b5c724d3bf151f35fa222bdc2f81e61 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=2vEtgNiBX0M~8V`b=L zYHI3W676Y|>*11?;8Wiix8x2`1!GB&UoeBivm0qZj;W`MV+hCf Date: Mon, 7 Mar 2022 01:35:10 +0000 Subject: [PATCH 274/521] Add nether doors textures --- .../textures/mcl_doors_door_warped_side_upper.png | Bin 0 -> 167 bytes .../textures/mcl_doors_door_warped_upper.png | Bin 0 -> 241 bytes .../textures/mcl_doors_trapdoor_crimson.png | Bin 0 -> 230 bytes .../textures/mcl_doors_trapdoor_crimson_side.png | Bin 0 -> 197 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_side_upper.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_upper.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_trapdoor_crimson.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_trapdoor_crimson_side.png diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_side_upper.png new file mode 100644 index 0000000000000000000000000000000000000000..63634ec6338a8d8fc7fbc594924b4a7c3da5013d GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=2vEtgNiBX0M~8V`b=L zYHI3W676Y|>*11?;8Wiix8x2`1!GB&UoeBivm0qZj)|v>V+hCfWCOE=h6WD{WrkB5 z8VuKPE$HEx(GkToWg$~?$iXe{k_)oir879wMG`t3N*NiJgmE%kbTz#I+2`r%=d#Wz Gp$Pz<9xUkq literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_warped_upper.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc7f53a16aa442885e7fdc8da1cb096f9fe3f4b GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#w*0(J|0=GBq`| zHuH0}j}CGxi1n?>37J?CxqP3q{S~0%Zci7-5RU7n#|-(J3`E!-{O2-Jb2Aqbp2~gV z&K{O8OmE*@vg31zb`uV`aq$G>3)8oc%xf?FiJ5B7H>*9=(oDf}&(y^3SNG19PUy;sR!$BT)Mq`_S^+;BK{aVc+O7q z-moC_hSW8M&`DrD$=Eds8X>I$-U2cEiB7e?**G#u4{>ro5 cYvq0I1?;s*uQJe@ zY_31s#<2g^Tz8;?Y)==*5RU7mXAkloRuEu0P|Ej@qmL Date: Mon, 7 Mar 2022 01:35:47 +0000 Subject: [PATCH 275/521] Add nether doors textures --- .../textures/mcl_doors_trapdoor_warped.png | Bin 0 -> 230 bytes .../textures/mcl_doors_trapdoor_warped_side.png | Bin 0 -> 222 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_trapdoor_warped.png create mode 100644 mods/ITEMS/mcl_doors/textures/mcl_doors_trapdoor_warped_side.png diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_trapdoor_warped.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_trapdoor_warped.png new file mode 100644 index 0000000000000000000000000000000000000000..60fd2d6a5affab434f648ac0e8f3d4b443c2f053 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXRaREk(a|x`b}}_JwKnr} zwT}*RD~R>2$qAWQ5xKlRylf{>WwWP?V+hA}*|UaxhYWaH6MwU5K2`A9%gANyyfAwT zi;a+FqTAHqvXrThCvB=d{Qrx>bM;^me#_}DkL72aFxhkH_=62^7P6P5d|=qLYVjtE z3G0_tujI=*ta**4G<2J^%hdj48*`4^<=xenRc~+o>70JRv1|hC-_qS2LVrsH+a$W? c=N+&XcT0Re@92|)=7`ued? z8 literal 0 HcmV?d00001 From d48e2b864489953a4447b337c8e234168ff36090 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:37:17 +0000 Subject: [PATCH 276/521] Supprimer 'mods/ITEMS/mclx_doors/register.lua' --- mods/ITEMS/mclx_doors/register.lua | 103 ----------------------------- 1 file changed, 103 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/register.lua diff --git a/mods/ITEMS/mclx_doors/register.lua b/mods/ITEMS/mclx_doors/register.lua deleted file mode 100644 index 7d392a414..000000000 --- a/mods/ITEMS/mclx_doors/register.lua +++ /dev/null @@ -1,103 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - ---[[ Doors ]] - -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.") - ---- Crimson Door -- -mclx_doors:register_door("mclx_doors:crimson_door", { - description = S("Crimson Door"), - _doc_items_longdesc = wood_longdesc, - _doc_items_usagehelp = wood_usagehelp, - inventory_image = "mcl_doors_door_crimson.png", - groups = {handy=1,axey=1, material_wood=1, flammable=-1}, - _mcl_hardness = 3, - _mcl_blast_resistance = 3, - tiles_bottom = {"mcl_doors_door_crimson_lower.png", "mcl_doors_door_crimson_side_lower.png"}, - tiles_top = {"mcl_doors_door_crimson_upper.png", "mcl_doors_door_crimson_side_upper.png"}, - sounds = mcl_sounds.node_sound_wood_defaults(), -}) - -minetest.register_craft({ - output = "mclx_doors:crimson_door 3", - recipe = { - {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"}, - {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"}, - {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"} - } -}) - ---- Warped Door -- -mclx_doors:register_door("mclx_doors:warped_door", { - description = S("Warped Door"), - _doc_items_longdesc = wood_longdesc, - _doc_items_usagehelp = wood_usagehelp, - inventory_image = "mcl_doors_door_warped.png", - groups = {handy=1,axey=1, material_wood=1, flammable=-1}, - _mcl_hardness = 3, - _mcl_blast_resistance = 3, - tiles_bottom = {"mcl_doors_door_warped_lower.png", "mcl_doors_door_warped_side_lower.png"}, - tiles_top = {"mcl_doors_door_warped_upper.png", "mcl_doors_door_warped_side_upper.png"}, - sounds = mcl_sounds.node_sound_wood_defaults(), -}) - -minetest.register_craft({ - output = "mclx_doors:warped_door 3", - recipe = { - {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"}, - {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"}, - {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"} - } -}) - - - -minetest.register_craft({ - type = "fuel", - recipe = "mclx_doors:crimson_door", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mclx_doors:warped_door", - burntime = 10, -}) - ---[[ Trapdoors ]] -local woods = { - -- id, desc, texture, craftitem - { "crimson_trapdoor", S("Crimson Trapdoor"), "mcl_doors_trapdoor_crimson.png", "mcl_doors_trapdoor_crimson_side.png", "mcl_mushroom:crimson_hyphae_wood" }, - { "warped_trapdoor", S("Warped Trapdoor"), "mcl_doors_trapdoor_warped.png", "mcl_doors_trapdoor_warped_side.png", "mcl_mushroom:warped_hyphae_wood" }, -} - -for w=1, #woods do - mclx_doors:register_trapdoor("mclx_doors:"..woods[w][1], { - description = woods[w][2], - _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], - groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1}, - _mcl_hardness = 3, - _mcl_blast_resistance = 3, - sounds = mcl_sounds.node_sound_wood_defaults(), - }) - - minetest.register_craft({ - output = "mclx_doors:"..woods[w][1].." 2", - recipe = { - {woods[w][5], woods[w][5], woods[w][5]}, - {woods[w][5], woods[w][5], woods[w][5]}, - } - }) - - minetest.register_craft({ - type = "fuel", - recipe = "mclx_doors:"..woods[w][1], - burntime = 15, - }) -end - From 5bf59931cf2aeb73737943cd60c79c08f8e1c6cc Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:37:29 +0000 Subject: [PATCH 277/521] Supprimer 'mods/ITEMS/mclx_doors/mod.conf' --- mods/ITEMS/mclx_doors/mod.conf | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/mod.conf diff --git a/mods/ITEMS/mclx_doors/mod.conf b/mods/ITEMS/mclx_doors/mod.conf deleted file mode 100644 index e0e6751bf..000000000 --- a/mods/ITEMS/mclx_doors/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = mclx_doors -depends = mcl_core, mcl_sounds, mesecons -optional_depends = doc, screwdriver From 0e00644e73a16be3eb1d43af8075b8d8ad9f12ae Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:37:41 +0000 Subject: [PATCH 278/521] Supprimer 'mods/ITEMS/mclx_doors/init.lua' --- mods/ITEMS/mclx_doors/init.lua | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/init.lua diff --git a/mods/ITEMS/mclx_doors/init.lua b/mods/ITEMS/mclx_doors/init.lua deleted file mode 100644 index 2867beb80..000000000 --- a/mods/ITEMS/mclx_doors/init.lua +++ /dev/null @@ -1,9 +0,0 @@ -mclx_doors = {} - -local this = minetest.get_current_modname() -local path = minetest.get_modpath(this) - -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 From 7020f2231350533cdb1bb2bc8a6937ad4e5031fc Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:37:54 +0000 Subject: [PATCH 279/521] Supprimer 'mods/ITEMS/mclx_doors/api_trapdoors.lua' --- mods/ITEMS/mclx_doors/api_trapdoors.lua | 231 ------------------------ 1 file changed, 231 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/api_trapdoors.lua diff --git a/mods/ITEMS/mclx_doors/api_trapdoors.lua b/mods/ITEMS/mclx_doors/api_trapdoors.lua deleted file mode 100644 index e7bd73fb6..000000000 --- a/mods/ITEMS/mclx_doors/api_trapdoors.lua +++ /dev/null @@ -1,231 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - --- 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 -end - ----- Trapdoor ---- - -local on_rotate -if minetest.get_modpath("screwdriver") then - 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 mclx_doors:register_trapdoor(name, def) - local groups = table.copy(def.groups) - if groups == nil then - groups = {} - end - groups.mesecon_ignore_opaque_dig = 1 - - if not def.sound_open then - def.sound_open = "doors_door_open" - end - if not def.sound_close then - def.sound_close = "doors_door_close" - end - - local function punch(pos) - local me = minetest.get_node(pos) - 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}, 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}, true) - tmp_node = {name=name.."_open", param1=me.param1, param2=me.param2} - end - minetest.set_node(pos, tmp_node) - end - - local on_rightclick - if not def.only_redstone_can_open then - on_rightclick = function(pos, node, clicker) - punch(pos) - end - end - - -- Default help texts - local longdesc, usagehelp, tt_help - longdesc = def._doc_items_longdesc - if not longdesc then - if def.only_redstone_can_open then - 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 = 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 = S("To open or close this trapdoor, rightclick it or send a redstone signal to it.") - end - if def.only_redstone_can_open then - tt_help = S("Openable by redstone power") - else - tt_help = S("Openable by players and redstone power") - end - - -- Closed trapdoor - - local tile_front = def.tile_front - local tile_side = def.tile_side - if not tile_side then - tile_side = tile_front - end - local tiles_closed = { - tile_front, - tile_front .. "^[transformFY", - tile_side, tile_side, - tile_side, tile_side, - } - - local groups_closed = groups - groups_closed.trapdoor = 1 - 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", - tiles = tiles_closed, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - inventory_image = def.inventory_image, - wield_image = def.wield_image, - is_ground_content = false, - paramtype = "light", - stack_max = 64, - paramtype2 = "facedir", - sunlight_propagates = true, - groups = groups_closed, - _mcl_hardness = def._mcl_hardness, - _mcl_blast_resistance = def._mcl_blast_resistance, - sounds = def.sounds, - node_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, 8/16, -5/16, 8/16},}, - }, - mesecons = {effector = { - action_on = (function(pos, node) - punch(pos) - end), - }}, - on_place = function(itemstack, placer, pointed_thing) - local p0 = pointed_thing.under - local p1 = pointed_thing.above - local param2 = 0 - - local placer_pos = placer:get_pos() - if placer_pos then - param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos)) - end - - local fpos = get_fpos(placer, pointed_thing) - - --local origname = itemstack:get_name() - if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) - or (fpos < -0.5 and fpos > -0.999999999) then - param2 = param2 + 20 - if param2 == 21 then - param2 = 23 - elseif param2 == 23 then - param2 = 21 - end - end - return minetest.item_place(itemstack, placer, pointed_thing, param2) - end, - on_rightclick = on_rightclick, - on_rotate = on_rotate, - }) - - -- Open trapdoor - - local groups_open = table.copy(groups) - - local tiles_open = { - tile_side, - tile_side .. "^[transformR180", - tile_side .. "^[transformR270", - tile_side .. "^[transformR90", - tile_front .. "^[transform46", - tile_front .. "^[transformFY", - } - - groups_open.trapdoor = 2 - groups_open.not_in_creative_inventory = 1 - minetest.register_node(name.."_open", { - drawtype = "nodebox", - tiles = tiles_open, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - is_ground_content = false, - paramtype = "light", - paramtype2 = "facedir", - -- TODO: Implement Minecraft behaviour: Climbable if directly above - -- ladder w/ matching orientation. - -- Current behavour: Always climbable - climbable = true, - sunlight_propagates = true, - pointable = true, - groups = groups_open, - _mcl_hardness = def._mcl_hardness, - _mcl_blast_resistance = def._mcl_blast_resistance, - sounds = def.sounds, - drop = name, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 5/16, 0.5, 0.5, 0.5} - }, - on_rightclick = on_rightclick, - mesecons = {effector = { - action_off = (function(pos, node) - punch(pos) - end), - }}, - on_rotate = on_rotate, - }) - - if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", name, "nodes", name.."_open") - end - -end From 4ca97d312d48c0a32673ce786a3fc7703fc6d16c Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:38:07 +0000 Subject: [PATCH 280/521] Supprimer 'mods/ITEMS/mclx_doors/api_doors.lua' --- mods/ITEMS/mclx_doors/api_doors.lua | 559 ---------------------------- 1 file changed, 559 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/api_doors.lua diff --git a/mods/ITEMS/mclx_doors/api_doors.lua b/mods/ITEMS/mclx_doors/api_doors.lua deleted file mode 100644 index d424a6c6b..000000000 --- a/mods/ITEMS/mclx_doors/api_doors.lua +++ /dev/null @@ -1,559 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) -local minetest_get_meta = minetest.get_meta - --- This helper function calls on_place_node callbacks. -local function on_place_node(place_to, newnode, - placer, oldnode, itemstack, pointed_thing) - -- Run script hook - for _, callback in pairs(minetest.registered_on_placenodes) do - -- Deep-copy pos, node and pointed_thing because callback can modify them - local place_to_copy = {x = place_to.x, y = place_to.y, z = place_to.z} - local newnode_copy = - {name = newnode.name, param1 = newnode.param1, param2 = newnode.param2} - local oldnode_copy = - {name = oldnode.name, param1 = oldnode.param1, param2 = oldnode.param2} - local pointed_thing_copy = { - type = pointed_thing.type, - above = vector.new(pointed_thing.above), - under = vector.new(pointed_thing.under), - ref = pointed_thing.ref, - } - callback(place_to_copy, newnode_copy, placer, - oldnode_copy, itemstack, pointed_thing_copy) - end -end - --- Registers a door --- name: The name of the door --- def: a table with the folowing fields: --- description --- inventory_image --- groups --- tiles_bottom: the tiles of the bottom part of the door {front, side} --- tiles_top: the tiles of the bottom part of the door {front, side} --- If the following fields are not defined the default values are used --- node_box_bottom --- node_box_top --- selection_box_bottom --- selection_box_top --- only_placer_can_open: if true only the player who placed the door can --- open it --- only_redstone_can_open: if true, the door can only be opened by redstone, --- not by rightclicking it - -function mclx_doors:register_door(name, def) - def.groups.not_in_creative_inventory = 1 - def.groups.dig_by_piston = 1 - def.groups.door = 1 - def.groups.mesecon_ignore_opaque_dig = 1 - - if not def.sound_open then - def.sound_open = "doors_door_open" - end - if not def.sound_close then - def.sound_close = "doors_door_close" - end - - local box = {{-8/16, -8/16, -8/16, 8/16, 8/16, -5/16}} - - if not def.node_box_bottom then - def.node_box_bottom = box - end - if not def.node_box_top then - def.node_box_top = box - end - if not def.selection_box_bottom then - def.selection_box_bottom= box - end - if not def.selection_box_top then - def.selection_box_top = box - end - - 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 = S("This door is a 2-block high barrier which can be opened or closed by hand or by redstone power.") - else - 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 = S("To open or close this door, send a redstone signal to its bottom half.") - else - 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("Openable by redstone power") - else - tt_help = S("Openable by players and redstone power") - 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, - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, - inventory_image = def.inventory_image, - stack_max = 64, - 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 - end - local pn = placer:get_player_name() - if minetest.is_protected(pointed_thing.above, pn) and minetest.is_protected(pointed_thing.under, pn) then - return itemstack - end - local ptu = pointed_thing.under - local nu = minetest.get_node(ptu) - -- Pointed thing's rightclick action takes precedence, unless player holds down the sneak key - if minetest.registered_nodes[nu.name] and minetest.registered_nodes[nu.name].on_rightclick and not placer:get_player_control().sneak then - return minetest.registered_nodes[nu.name].on_rightclick(ptu, nu, placer, itemstack) - end - - local pt - if minetest.registered_nodes[nu.name] and minetest.registered_nodes[nu.name].buildable_to then - pt = pointed_thing.under - else - pt = pointed_thing.above - end - local pt2 = {x=pt.x, y=pt.y, z=pt.z} - pt2.y = pt2.y+1 - local ptname = minetest.get_node(pt).name - local pt2name = minetest.get_node(pt2).name - if - (minetest.registered_nodes[ptname] and not minetest.registered_nodes[ptname].buildable_to) or - (minetest.registered_nodes[pt2name] and not minetest.registered_nodes[pt2name].buildable_to) - then - 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()) - - if p2 == 0 then - pt_left.x = pt_left.x-1 - elseif p2 == 1 then - pt_left.z = pt_left.z+1 - elseif p2 == 2 then - pt_left.x = pt_left.x+1 - elseif p2 == 3 then - 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}) - - if def.sounds and def.sounds.place then - minetest.sound_play(def.sounds.place, {pos=pt}, true) - end - - if def.only_placer_can_open then - local meta = minetest_get_meta(pt) - meta:set_string("doors_owner", "") - meta = minetest_get_meta(pt2) - meta:set_string("doors_owner", "") - end - - 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.is_creative_enabled(pn) then - itemstack:take_item() - end - - on_place_node(pt, minetest.get_node(pt), placer, nu, itemstack, pointed_thing) - on_place_node(pt2, minetest.get_node(pt2), placer, minetest.get_node({x=ptu.x,y=ptu.y+1,z=ptu.z}), itemstack, pointed_thing) - - return itemstack - end, - }) - - local tt = def.tiles_top - local tb = def.tiles_bottom - - 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 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] - - minetest.swap_node(pos, {name=replace_dir, param2=np2}) - pos.y = pos.y-dir - minetest.swap_node(pos, {name=replace, param2=np2}) - - local door_switching_sound - if meta1:get_int("is_open") == 1 then - door_switching_sound = def.sound_close - meta1:set_int("is_open", 0) - meta2:set_int("is_open", 0) - else - door_switching_sound = def.sound_open - 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}, true) - end - - local function on_mesecons_signal_open(pos, node) - 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") - end - end - local function on_mesecons_signal_open_top(pos, node) - on_mesecons_signal_open({x=pos.x, y=pos.y-1, z=pos.z}, node) - end - local function on_mesecons_signal_close_top(pos, node) - if not mesecon.is_powered({x=pos.x,y=pos.y-1,z=pos.z}) then - on_mesecons_signal_close({x=pos.x, y=pos.y-1, z=pos.z}, node) - end - end - - local function check_player_priv(pos, player) - if not def.only_placer_can_open then - return true - end - local meta = minetest_get_meta(pos) - local pn = player:get_player_name() - return meta:get_string("doors_owner") == pn - end - - local on_rightclick - -- Disable on_rightclick if this is a redstone-only door - 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") - end - end - end - - minetest.register_node(name.."_b_1", { - tiles = {"blank.png", tt[2].."^[transformFXR90", tb[2], tb[2].."^[transformFX", tb[1], tb[1].."^[transformFX"}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - is_ground_content = false, - drop = "", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_bottom - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_bottom - }, - groups = def.groups, - _mcl_hardness = def._mcl_hardness, - _mcl_blast_resistance = def._mcl_blast_resistance, - sounds = def.sounds, - - after_destruct = function(bottom, oldnode) - local meta_bottom = minetest_get_meta(bottom) - if meta_bottom:get_int("rotation") == 1 then - meta_bottom:set_int("rotation", 0) - else - minetest.add_item(bottom, name) - local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z } - if minetest.get_node(bottom).name ~= name.."_b_2" and minetest.get_node(top).name == name.."_t_1" then - minetest.remove_node(top) - end - end - end, - - on_rightclick = on_rightclick, - - mesecons = { effector = { - action_on = on_mesecons_signal_open, - }}, - - on_rotate = function(bottom, node, user, mode, param2) - if mode == screwdriver.ROTATE_FACE then - local meta_bottom = minetest_get_meta(bottom) - meta_bottom:set_int("rotation", 1) - node.param2 = screwdriver.rotate.facedir(bottom, node, mode) - minetest.swap_node(bottom, node) - - local top = {x=bottom.x,y=bottom.y+1,z=bottom.z} - local meta_top = minetest_get_meta(top) - meta_top:set_int("rotation", 1) - node.name = name .."_t_1" - minetest.swap_node(top, node) - - return true - end - return false - end, - - can_dig = check_player_priv, - }) - - if def.only_redstone_can_open then - on_rightclick = nil - 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") - end - end - end - - minetest.register_node(name.."_t_1", { - tiles = {tt[2].."^[transformR90", "blank.png", tt[2], tt[2].."^[transformFX", tt[1], tt[1].."^[transformFX"}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - is_ground_content = false, - drop = "", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_top - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_top - }, - groups = def.groups, - _mcl_hardness = def._mcl_hardness, - _mcl_blast_resistance = def._mcl_blast_resistance, - sounds = def.sounds, - - after_destruct = function(top, oldnode) - local meta_top = minetest_get_meta(top) - if meta_top:get_int("rotation") == 1 then - meta_top:set_int("rotation", 0) - else - local bottom = { x = top.x, y = top.y - 1, z = top.z } - if minetest.get_node(top).name ~= name.."_t_2" and minetest.get_node(bottom).name == name.."_b_1" and oldnode.name == name.."_t_1" then - minetest.dig_node(bottom) - end - end - end, - - on_rightclick = on_rightclick, - - mesecons = { effector = { - action_on = on_mesecons_signal_open_top, - rules = mesecon.rules.flat, - }}, - - on_rotate = function(top, node, user, mode, param2) - if mode == screwdriver.ROTATE_FACE then - local meta_top = minetest_get_meta(top) - meta_top:set_int("rotation", 1) - node.param2 = screwdriver.rotate.facedir(top, node, mode) - minetest.swap_node(top, node) - - local bottom = {x=top.x,y=top.y-1,z=top.z} - local meta_bottom = minetest_get_meta(bottom) - meta_bottom:set_int("rotation", 1) - node.name = name .."_b_1" - minetest.swap_node(bottom, node) - - return true - end - return false - end, - - can_dig = check_player_priv, - }) - - if def.only_redstone_can_open then - on_rightclick = nil - 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") - end - end - end - - minetest.register_node(name.."_b_2", { - tiles = {"blank.png", tt[2].."^[transformFXR90", tb[2].."^[transformI", tb[2].."^[transformFX", tb[1].."^[transformFX", tb[1]}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - is_ground_content = false, - drop = "", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_bottom - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_bottom - }, - groups = def.groups, - _mcl_hardness = def._mcl_hardness, - _mcl_blast_resistance = def._mcl_blast_resistance, - sounds = def.sounds, - - after_destruct = function(bottom, oldnode) - local meta_bottom = minetest_get_meta(bottom) - if meta_bottom:get_int("rotation") == 1 then - meta_bottom:set_int("rotation", 0) - else - local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z } - minetest.add_item(bottom, name) - if minetest.get_node(bottom).name ~= name.."_b_1" and minetest.get_node(top).name == name.."_t_2" then - minetest.remove_node(top) - end - end - end, - - on_rightclick = on_rightclick, - - mesecons = { effector = { - action_off = on_mesecons_signal_close, - }}, - - on_rotate = function(bottom, node, user, mode, param2) - if mode == screwdriver.ROTATE_FACE then - local meta_bottom = minetest_get_meta(bottom) - meta_bottom:set_int("rotation", 1) - node.param2 = screwdriver.rotate.facedir(bottom, node, mode) - minetest.swap_node(bottom, node) - - local top = {x=bottom.x,y=bottom.y+1,z=bottom.z} - local meta_top = minetest_get_meta(top) - meta_top:set_int("rotation", 1) - node.name = name .."_t_2" - minetest.swap_node(top, node) - - return true - end - return false - end, - - can_dig = check_player_priv, - }) - - if def.only_redstone_can_open then - on_rightclick = nil - 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") - end - end - end - - minetest.register_node(name.."_t_2", { - tiles = {tt[2].."^[transformR90", "blank.png", tt[2].."^[transformI", tt[2].."^[transformFX", tt[1].."^[transformFX", tt[1]}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "clip" or true, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - is_ground_content = false, - drop = "", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_top - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_top - }, - groups = def.groups, - _mcl_hardness = def._mcl_hardness, - _mcl_blast_resistance = def._mcl_blast_resistance, - sounds = def.sounds, - - after_destruct = function(top, oldnode) - local meta_top = minetest_get_meta(top) - if meta_top:get_int("rotation") == 1 then - meta_top:set_int("rotation", 0) - else - local bottom = { x = top.x, y = top.y - 1, z = top.z } - if minetest.get_node(top).name ~= name.."_t_1" and minetest.get_node(bottom).name == name.."_b_2" and oldnode.name == name.."_t_2" then - minetest.dig_node(bottom) - end - end - end, - - on_rightclick = on_rightclick, - - mesecons = { effector = { - action_off = on_mesecons_signal_close_top, - rules = mesecon.rules.flat, - }}, - - on_rotate = function(top, node, user, mode, param2) - if mode == screwdriver.ROTATE_FACE then - local meta_top = minetest_get_meta(top) - meta_top:set_int("rotation", 1) - node.param2 = screwdriver.rotate.facedir(top, node, mode) - minetest.swap_node(top, node) - - local bottom = {x=top.x,y=top.y-1,z=top.z} - local meta_bottom = minetest_get_meta(bottom) - meta_bottom:set_int("rotation", 1) - node.name = name .."_b_2" - minetest.swap_node(bottom, node) - - return true - end - return false - end, - - can_dig = check_player_priv, - }) - - -- Add entry aliases for the Help - if minetest.get_modpath("doc") then - doc.add_entry_alias("craftitems", name, "nodes", name.."_b_1") - doc.add_entry_alias("craftitems", name, "nodes", name.."_b_2") - doc.add_entry_alias("craftitems", name, "nodes", name.."_t_1") - doc.add_entry_alias("craftitems", name, "nodes", name.."_t_2") - end - -end From 93991f7480e1939e2111aa882e95a5f0d1353fda Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:38:19 +0000 Subject: [PATCH 281/521] Supprimer 'mods/ITEMS/mclx_doors/alias.lua' --- mods/ITEMS/mclx_doors/alias.lua | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/alias.lua diff --git a/mods/ITEMS/mclx_doors/alias.lua b/mods/ITEMS/mclx_doors/alias.lua deleted file mode 100644 index 4ac2e5f16..000000000 --- a/mods/ITEMS/mclx_doors/alias.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Register aliases -local doornames = { - ["door_crimson"] = "crimson_door", - ["door_warped"] = "warped_door", -} - -for oldname, newname in pairs(doornames) do - minetest.register_alias("doors:"..oldname, "mclx_doors:"..newname) - minetest.register_alias("doors:"..oldname.."_t_1", "mclx_doors:"..newname.."_t_1") - minetest.register_alias("doors:"..oldname.."_b_1", "mclx_doors:"..newname.."_b_1") - minetest.register_alias("doors:"..oldname.."_t_2", "mclx_doors:"..newname.."_t_2") - minetest.register_alias("doors:"..oldname.."_b_2", "mclx_doors:"..newname.."_b_2") -end - - From afe8471a41e6c83146caccac70956e86712ddc75 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:38:28 +0000 Subject: [PATCH 282/521] Supprimer 'mods/ITEMS/mclx_doors/README.txt' --- mods/ITEMS/mclx_doors/README.txt | 43 -------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/README.txt diff --git a/mods/ITEMS/mclx_doors/README.txt b/mods/ITEMS/mclx_doors/README.txt deleted file mode 100644 index b4f84ce83..000000000 --- a/mods/ITEMS/mclx_doors/README.txt +++ /dev/null @@ -1,43 +0,0 @@ -License of source code: ------------------------ -Copyright (C) 2012 PilzAdam -modified by BlockMen (added sounds, glassdoor, trapdoor) - -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 Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. - - -License of sounds --------------------------------------- -Opening-Sound created by CGEffex (CC BY 3.0), modified by BlockMen - doors_door_open.ogg -Closing-Sound created by bennstir (CC BY 3.0) - doors_door_close.ogg -Steel door sounds open & close (CC-BY-3.0) by HazMatt - - http://www.freesound.org/people/HazMattt/sounds/187283/ - doors_steel_door_open.ogg - doors_steel_door_close.ogg - -License/authors of texture files --------------------------------------- -CC-BY-SA 4.0 - -Modified from the textures of mcl_mushroom and XSSheep's Pixel Perfection Legacy by Github user 3raven : - -mcl_doors_door_crimson_lower.png -mcl_doors_door_warped_lower.png -mcl_doors_trapdoor_crimson.png -mcl_doors_door_crimson.png -mcl_doors_door_warped.png -mcl_doors_trapdoor_crimson_side.png -mcl_doors_door_crimson_side_lower.png -mcl_doors_door_warped_side_lower.png -mcl_doors_trapdoor_warped.png -mcl_doors_door_crimson_side_upper.png -mcl_doors_door_warped_side_upper.png -mcl_doors_trapdoor_warped_side.png -mcl_doors_door_crimson_upper.png -mcl_doors_door_warped_upper.png From 81e66caa1f35f1367848a2783e1f067312d34a0a Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:39:17 +0000 Subject: [PATCH 283/521] Supprimer 'mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr' --- mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr deleted file mode 100644 index e817f3e78..000000000 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.de.tr +++ /dev/null @@ -1,11 +0,0 @@ -# textdomain: mclx_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 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. -Crimson Door= -Warped Door= -Crimson Trapdoor= -Warped 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.=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 nachdem, 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. -Openable by players and redstone power=Zu öffnen von Spielern und Redstoneenergie -Openable by redstone power=Zu öffnen von Redstoneenergie From 8dc1bc539562d52e61dde24ce99649f9c106f6c7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:39:27 +0000 Subject: [PATCH 284/521] Supprimer 'mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr' --- mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr deleted file mode 100644 index acf2cb6de..000000000 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.es.tr +++ /dev/null @@ -1,11 +0,0 @@ -# textdomain: mclx_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 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. -Crimson Door= -Warped Door= -Crimson Trapdoor= -Warped 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.=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. -Openable by players and redstone power= -Openable by redstone power= From 0d505b4f60e413d991b2704ad8757968c34333d1 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:39:37 +0000 Subject: [PATCH 285/521] Supprimer 'mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr' --- mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr deleted file mode 100644 index f90048f32..000000000 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.fr.tr +++ /dev/null @@ -1,11 +0,0 @@ -# textdomain: mclx_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. -Crimson Door=Porte Ecarlate -Warped Door=Porte Tordue -Crimson Trapdoor=Trappe Ecarlate -Warped Trapdoor=Trappe Tordue -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. -Openable by players and redstone power=Ouvrable par les joueurs et puissance redstone -Openable by redstone power=Ouvrable par la puissance redstone From d469547b62fcb66d5ad6bcec5e1ab629ca00341e Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:40:05 +0000 Subject: [PATCH 286/521] Supprimer 'mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr' --- mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr deleted file mode 100644 index 798c2858a..000000000 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.ru.tr +++ /dev/null @@ -1,11 +0,0 @@ -# textdomain: mclx_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.=Чтобы открыть или закрыть деревянную дверь, кликните правой либо подайте к её нижней части сигнал редстоуна. -Crimson Door= -Warped Door= -Crimson Trapdoor= -Warped 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.=Чтобы открыть или закрыть деревянные люк, кликните по нему правой клавишей либо подайте на него сигнал редстоуна. -Openable by players and redstone power=Открывается игроками и действием редстоуна -Openable by redstone power=Открывается действием редстоуна From 14dd2c112a8d89d302d505cc5dc0e06e4000994d Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:40:16 +0000 Subject: [PATCH 287/521] Supprimer 'mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr' --- mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr diff --git a/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr b/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr deleted file mode 100644 index 01bc12bb3..000000000 --- a/mods/ITEMS/mclx_doors/locale/mcl_doors.pl.tr +++ /dev/null @@ -1,11 +0,0 @@ -# textdomain: mclx_doors -Wooden doors are 2-block high barriers which can be opened or closed by hand and by a redstone signal.=Drewniane drzwi są blokami o wysokości 2, które mogą być otworzone i zamknięte ręcznie bądź przez zasilenie czerwienitem. -To open or close a wooden door, rightclick it or supply its lower half with a redstone signal.=Aby otworzyć lub zamknąć drewniane drzwi, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. -Crimson Door= -Warped Door= -Crimson Trapdoor= -Warped 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.=Drewniane klapy są poziomymi barierami, które mogą być otwarte i zamknięte ręcznie bądź przez zasilenie czerwienitem. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinać jak po drabinie. -To open or close the trapdoor, rightclick it or send a redstone signal to it.=Aby otworzyć lub zamknąć drewniane klapy, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. -Openable by players and redstone power=Mogą być otworzone przez graczy i zasilanie czerwienitem -Openable by redstone power=Mogą być otworzone przez zasilanie czerwienitem From b0c3626f3280f971926a90212dffc17c5963e692 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:40:30 +0000 Subject: [PATCH 288/521] Supprimer 'mods/ITEMS/mclx_doors/locale/template.txt' --- mods/ITEMS/mclx_doors/locale/template.txt | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/locale/template.txt diff --git a/mods/ITEMS/mclx_doors/locale/template.txt b/mods/ITEMS/mclx_doors/locale/template.txt deleted file mode 100644 index e9050a3fa..000000000 --- a/mods/ITEMS/mclx_doors/locale/template.txt +++ /dev/null @@ -1,11 +0,0 @@ -# textdomain: mclx_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.= -Crimson Door= -Warped Door= -Crimson Trapdoor= -Warped 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.= -Openable by players and redstone power= -Openable by redstone power= From 555b32659a5736e6bcf7e688f6ffd1920b015e57 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:40:47 +0000 Subject: [PATCH 289/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson.png' --- .../textures/mcl_doors_door_crimson.png | Bin 220 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson.png deleted file mode 100644 index 5682f51e5b1c7290b6bd295402916902f60752ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VWWe5baKtNJbQdwEqQ%b@| zMoLFVCrnwv)YLRXSG~$WYqGiiY#YN3KR+G>s$(n(@(X5gcy=QV$Vu>YaSY+Oo}7?y zqOWh)=0--2q^hEKF${*AiZ&_oe4g}j9-D%jU+5X#4IXJ>-!cu9FYU?ZpCKqKSbB)@ z2*b=|21E5?zAJMk%}#I&4>?j~aQM>Z6txInvomvEXs8rRNifV{)|8u`Vb2J1p{J{# J%Q~loCIGAhLV^GQ From 0c48e41ac3ce483a071f0acb055ebf6cc892af9a Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:40:59 +0000 Subject: [PATCH 290/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_lower.png' --- .../textures/mcl_doors_door_crimson_lower.png | Bin 239 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_lower.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_lower.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_lower.png deleted file mode 100644 index 8e9f301524830e637e584b9efcf6b0ab0b9652d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#x_ulJJp{($Ucg zQ&uoFHO4t*UY{m~u zy`_}d9N4n7ZCRamvQEfvJTgzLe0|l1D!nPbP5&*IS~2Y_c$#}=!`DE)hsz3tzLyy2 ze|YshvfA;?k}#{If4z-df Date: Mon, 7 Mar 2022 01:41:10 +0000 Subject: [PATCH 291/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_lower.png' --- .../mcl_doors_door_crimson_side_lower.png | Bin 172 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_lower.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_lower.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_lower.png deleted file mode 100644 index 47e0715217790dc5f8c4b15e3666ec57cf9ac179..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=0{8DJiL}tn4Wz;UgoZ zqoWh1tYB(tnxU&+WuP_LTwnD^c{)%XV@Z%-FoVOh8)-m}v8Rh;2*>s04z7d-1|K)E zITIODOAfmfB`DoAa1-}AmC7_FF@_=a3(JD+c4-OLMI#6z}9-Y`njxg HN@xNA3}Y$^ From c76420755d21717fa721ff57eea3663237b4b106 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:41:20 +0000 Subject: [PATCH 292/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_upper.png' --- .../mcl_doors_door_crimson_side_upper.png | Bin 168 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_upper.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_upper.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_side_upper.png deleted file mode 100644 index 19988c83a5c56db02697f7b69995f25d68b36aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV1=2tuDJiL}tn4Wz;UgoZ zqoWh1tYB(tnxU&+WuP_LTt9A8&s3ly#*!evUc}r{*gTe~ HDWM4fFl#Ih From 321affaddedc5c2fff51894e04404a5f3220b06c Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:41:29 +0000 Subject: [PATCH 293/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_upper.png' --- .../textures/mcl_doors_door_crimson_upper.png | Bin 234 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_upper.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_upper.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_crimson_upper.png deleted file mode 100644 index 7c8203a92c143893ea7f68c756b4393ada7266bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#x_ulJJp{($Ucg zQ&uoFHO Date: Mon, 7 Mar 2022 01:41:39 +0000 Subject: [PATCH 294/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped.png' --- .../mclx_doors/textures/mcl_doors_door_warped.png | Bin 217 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped.png deleted file mode 100644 index 118e9ca01b50f68d492ca5a0b4077e97d11f6331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=2tuDJiL}tgNG>W1#J1 zYHDh2=I3f39pqLJ>syl(GO;3ZIbTEH0-!p^k|4ie28U-i(tw-}NhS&75p_Tr%+-6C1;t)tU>{`M3gsb}@Lm`njxg HN@xNA`TRw4 From d0dafa2d08152780a53d050afcbbf4a7f7b8062d Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:41:49 +0000 Subject: [PATCH 295/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_lower.png' --- .../textures/mcl_doors_door_warped_lower.png | Bin 243 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_lower.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_lower.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_lower.png deleted file mode 100644 index 0410811c108409d02d91f2edd08a103854b32c95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#w*0(J|0=GBq`| zHuH0}j}CGxi1n?>37J?CxqP3q{S~0%UQZXt5RU7j#|-(J3`E!-i03gB8u&Q*sKhj! z^Hpx+-m7bPd>~gK_36Eb^~{xv);M&!$%ji;{UJ#;){N5Z@__KM=Vd&2&O@Btmh;OXk;vd$@?2>=Z?TCM;9 From 746b5fe1abaae8f024de0e01ccf6b2d6fa7caf93 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:41:58 +0000 Subject: [PATCH 296/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_lower.png' --- .../textures/mcl_doors_door_warped_side_lower.png | Bin 168 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_lower.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_lower.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_lower.png deleted file mode 100644 index 3d7fdeeb4b5c724d3bf151f35fa222bdc2f81e61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=2vEtgNiBX0M~8V`b=L zYHI3W676Y|>*11?;8Wiix8x2`1!GB&UoeBivm0qZj;W`MV+hCf Date: Mon, 7 Mar 2022 01:42:10 +0000 Subject: [PATCH 297/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_upper.png' --- .../textures/mcl_doors_door_warped_side_upper.png | Bin 167 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_upper.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_upper.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_side_upper.png deleted file mode 100644 index 63634ec6338a8d8fc7fbc594924b4a7c3da5013d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=2vEtgNiBX0M~8V`b=L zYHI3W676Y|>*11?;8Wiix8x2`1!GB&UoeBivm0qZj)|v>V+hCfWCOE=h6WD{WrkB5 z8VuKPE$HEx(GkToWg$~?$iXe{k_)oir879wMG`t3N*NiJgmE%kbTz#I+2`r%=d#Wz Gp$Pz<9xUkq From c234ee6273f4c8ae84d6dd79061083e1ff5929ff Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:42:19 +0000 Subject: [PATCH 298/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_upper.png' --- .../textures/mcl_doors_door_warped_upper.png | Bin 241 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_upper.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_upper.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_door_warped_upper.png deleted file mode 100644 index fbc7f53a16aa442885e7fdc8da1cb096f9fe3f4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYm6ViJR#w*0(J|0=GBq`| zHuH0}j}CGxi1n?>37J?CxqP3q{S~0%Zci7-5RU7n#|-(J3`E!-{O2-Jb2Aqbp2~gV z&K{O8OmE*@vg31zb`uV`aq$G>3)8oc%xf?FiJ5B7H>*9=(oDf}&(y^3SNG19 Date: Mon, 7 Mar 2022 01:42:30 +0000 Subject: [PATCH 299/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson.png' --- .../textures/mcl_doors_trapdoor_crimson.png | Bin 230 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson.png deleted file mode 100644 index 46022bd9d59cde5a81ab2487a1c53567146a987b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXRaRE^l#=j~kPUy;sR!$BT)Mq`_S^+;BK{aVc+O7q z-moC_hSW8M&`DrD$=Eds8X>I$-U2cEiB7e?**G#u4{>ro5 cYvq0I1? Date: Mon, 7 Mar 2022 01:43:19 +0000 Subject: [PATCH 300/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson_side.png' --- .../textures/mcl_doors_trapdoor_crimson_side.png | Bin 197 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson_side.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson_side.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_crimson_side.png deleted file mode 100644 index 5c5af271f652aecc952520b732b01c06b7bf1e87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ^^}tEk&y~hR>;s*uQJe@ zY_31s#<2g^Tz8;?Y)==*5RU7mXAkloRuEu0P|Ej@qmL Date: Mon, 7 Mar 2022 01:43:42 +0000 Subject: [PATCH 301/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped.png' --- .../textures/mcl_doors_trapdoor_warped.png | Bin 230 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped.png deleted file mode 100644 index 60fd2d6a5affab434f648ac0e8f3d4b443c2f053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXRaREk(a|x`b}}_JwKnr} zwT}*RD~R>2$qAWQ5xKlRylf{>WwWP?V+hA}*|UaxhYWaH6MwU5K2`A9%gANyyfAwT zi;a+FqTAHqvXrThCvB=d{Qrx>bM;^me#_}DkL72aFxhkH_=62^7P6P5d|=qLYVjtE z3G0_tujI=*ta**4G<2J^%hdj48*`4^<=xenRc~+o>70JRv1|hC-_qS2LVrsH+a$W? c=N+ Date: Mon, 7 Mar 2022 01:43:52 +0000 Subject: [PATCH 302/521] Supprimer 'mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped_side.png' --- .../textures/mcl_doors_trapdoor_warped_side.png | Bin 222 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped_side.png diff --git a/mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped_side.png b/mods/ITEMS/mclx_doors/textures/mcl_doors_trapdoor_warped_side.png deleted file mode 100644 index 5e31bd2600193c123f0ac9db5baed396159f6d0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b)mO7O&~~yi^szScb1;ea zw8?d~kM?j$3vw%n^{q+psm}?SSP{8=(v(73pq3&}7sn8e>&XcT0Re@92|)=7`ued? z8 From decbda0aeda91d185811fb7cf293239bd2d0b3e3 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:44:16 +0000 Subject: [PATCH 303/521] Supprimer 'mods/ITEMS/mclx_doors/sounds/doors_door_close.ogg' --- .../mclx_doors/sounds/doors_door_close.ogg | Bin 14618 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/sounds/doors_door_close.ogg diff --git a/mods/ITEMS/mclx_doors/sounds/doors_door_close.ogg b/mods/ITEMS/mclx_doors/sounds/doors_door_close.ogg deleted file mode 100644 index b4a13ec72a8eed57d68b0ca1ca8fb55ee2b96cca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14618 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%0D5MqQarWj^5`TyT6r0T-BxbyQ$5jNnQM%(4 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 S?cS#{P|IBL!j|h#MgD&%KOoNl From 3d9321d9217a9a1b16dabe608a3f96132a68a51d Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:44:55 +0000 Subject: [PATCH 304/521] Supprimer 'mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg' --- mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg | Bin 7710 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg diff --git a/mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg b/mods/ITEMS/mclx_doors/sounds/doors_door_open.ogg deleted file mode 100644 index d03570eef34cc923a885418ce259013df5594361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7710 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 From c60189f26a63905f18a601ee6f35b31eef5fb911 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:47:59 +0000 Subject: [PATCH 305/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdoors/locale/template.txt'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_doors/locale/template.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_doors/locale/template.txt b/mods/ITEMS/mcl_doors/locale/template.txt index d8c7c8609..d5a3c7107 100644 --- a/mods/ITEMS/mcl_doors/locale/template.txt +++ b/mods/ITEMS/mcl_doors/locale/template.txt @@ -7,6 +7,8 @@ Birch Door= Dark Oak Door= Jungle Door= Spruce Door= +Crimson Door= +Warped 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.= @@ -16,6 +18,8 @@ Birch Trapdoor= Spruce Trapdoor= Dark Oak Trapdoor= Jungle Trapdoor= +Crimson Trapdoor= +Warped 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= From 3ba13807b53bb6cceeb13756f00524cb82367203 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 01:49:42 +0000 Subject: [PATCH 306/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdoors/locale/mcl=5Fdoors.de.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr index be88513cb..ebf36b86a 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.de.tr @@ -7,6 +7,8 @@ Birch Door=Birkentür Dark Oak Door=Schwarzeichentür Jungle Door=Dschungeltür Spruce Door=Fichtentür +Crimson Door= +Warped Door= 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 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. @@ -16,6 +18,8 @@ Birch Trapdoor=Birkenfalltür Spruce Trapdoor=Fichtenfalltür Dark Oak Trapdoor=Schwarzeichenfalltür Jungle Trapdoor=Dschungelfalltür +Crimson Trapdoor= +Warped 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.=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 nachdem, 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 From 887f358e1fea6b92bb7da617ffaa0dd09395587a Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 7 Mar 2022 05:52:23 +0400 Subject: [PATCH 307/521] Update hud/credits --- mods/HUD/mcl_credits/CONTRUBUTOR_LIST.txt | 86 +++++++++++ mods/HUD/mcl_credits/README.md | 9 ++ mods/HUD/mcl_credits/init.lua | 32 +++- mods/HUD/mcl_credits/people.lua | 145 ------------------ .../mcl_credits/textures/mineclone2_logo.png | Bin 77528 -> 283655 bytes mods/ITEMS/REDSTONE/mesecons_mvps/init.lua | 40 +---- 6 files changed, 131 insertions(+), 181 deletions(-) create mode 100644 mods/HUD/mcl_credits/CONTRUBUTOR_LIST.txt create mode 100644 mods/HUD/mcl_credits/README.md delete mode 100644 mods/HUD/mcl_credits/people.lua diff --git a/mods/HUD/mcl_credits/CONTRUBUTOR_LIST.txt b/mods/HUD/mcl_credits/CONTRUBUTOR_LIST.txt new file mode 100644 index 000000000..561952adc --- /dev/null +++ b/mods/HUD/mcl_credits/CONTRUBUTOR_LIST.txt @@ -0,0 +1,86 @@ +1798643961 +3raven +AFCMS +aldum +Alexander Minges +aligator +ArTee3 +Artem Arbatsky +basxto +Benjamin Schötz +Blue Blancmange +Booglejr +Brandon +Bu-Gee +bzoss +chmodsayshello +Code-Sploit +cora +Daniel Cassidy +davedevils +Dave Devil's +David McMackins II +dBeans +debiankaios +Dieter44 +Doloment +Elias Åström +Elias Fleckenstein +Emily +Emojigit +epCode +erlehmann +FinishedFragment +Glaucos Ginez +Gustavo Ramos Rehermann +Guy Liner +GuyLiner +HimbeerserverDE +iliekprogrammar +j1233 +Jared Moody +jordan4ibanez +kabou +kay27 +Laurent Rocher +Li0n +marcin-serwin +Marcin Serwin +Mental-Inferno +Midgard +MysticTempest +Nicholas Niro +nickolas360 +Nicu +nikolaus-albinger +Nils Dagsson Moskopp +NO11 +NO411 +Oil_boi +pitchum +PrairieAstronomer +PrairieWind +Rocher Laurent +rootyjr +Rootyjr +rudzik8 +Sab Pyrope +Saku Laesvuori +sfan5 +SmallJoker +superfloh247 +Sven792 +Sydney Gems +talamh +TechDudie +Thinking +Tianyang Zhang +U.N.Owen +Wouters Dorian +wuniversales +Wuzzy +Yukitty +yutyo +ZedekThePD +ZeDique la Ruleta +ztianyang diff --git a/mods/HUD/mcl_credits/README.md b/mods/HUD/mcl_credits/README.md new file mode 100644 index 000000000..3d76497d0 --- /dev/null +++ b/mods/HUD/mcl_credits/README.md @@ -0,0 +1,9 @@ +Please run the following command to update contributor list: + +```bash +# git log --pretty="%an" | sort | uniq >CONTRUBUTOR_LIST.txt +``` + +Please check that there is no error on execution, and `CONTRUBUTOR_LIST.txt` is updated. + +There should be contributor names, line by line. diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index db3ac8436..357a7fdde 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -1,10 +1,40 @@ local modname = minetest.get_current_modname() local S = minetest.get_translator(modname) +local contributors_file_name = minetest.get_modpath(modname) .. "/CONTRUBUTOR_LIST.txt" + +local file = io.open(contributors_file_name) +local contributors = {} +if not file then + minetest.log("error", "[" .. modname .. "] Can't read contributors from " .. contributors_file_name) +else + local contributor_list = file:read("*a") + file:close() + for contributor in contributor_list:gmatch("[^\r\n]+") do + table.insert(contributors, contributor) + end +end + mcl_credits = { players = {}, description = S("A faithful Open Source clone of Minecraft"), - people = dofile(minetest.get_modpath(modname) .. "/people.lua"), + people = { + {S("Creator of MineClone"), 0x0A9400, { + "davedevils", + }}, + {S("Creator of MineClone 2"), 0xFBF837, { + "Wuzzy", + }}, + {S("Creators of MineClone 5"), 0x52FF00, + contributors + }, + {S("Special thanks"), 0x00E9FF, { + "celeron55 for creating Minetest", + "Jordach for the jukebox music compilation from Big Freaking Dig", + "The workaholics who spent way too much time writing for the Minecraft Wiki. It's an invaluable resource for creating this game", + "Notch and Jeb for being the major forces behind Minecraft", + }} + } } local function add_hud_element(def, huds, y) diff --git a/mods/HUD/mcl_credits/people.lua b/mods/HUD/mcl_credits/people.lua deleted file mode 100644 index babd64bcc..000000000 --- a/mods/HUD/mcl_credits/people.lua +++ /dev/null @@ -1,145 +0,0 @@ -local modname = minetest.get_current_modname() -local S = minetest.get_translator(modname) - -return { - {S("Creator of MineClone"), 0x0A9400, { - "davedevils", - }}, - {S("Creator of MineClone2"), 0xFBF837, { - "Wuzzy", - }}, - {S("Creator of MineClone5"), 0xFF51D5, { - S("The Community"), - }}, - {S("Developers"), 0xF84355, { - "Fleckenstein", - "kay27", - "oilboi", - "bzoss", - "AFCMS", - "epCode", - "ryvnf", - "iliekprogrammar", - "MysticTempest", - "Rootyjr", - "Nicu", - "aligator", - "Code-Sploit", - "NO11", - "cora", - }}, - {S("Contributors"), 0x52FF00, { - "Laurent Rocher", - "HimbeerserverDE", - "TechDudie", - "Alexander Minges", - "ArTee3", - "ZeDique la Ruleta", - "pitchum", - "wuniversales", - "Bu-Gee", - "David McMackins II", - "Nicholas Niro", - "Wouters Dorian", - "Blue Blancmange", - "Jared Moody", - "Li0n", - "Midgard", - "Saku Laesvuori", - "Yukitty", - "ZedekThePD", - "aldum", - "dBeans", - "nickolas360", - "yutyo", - "ztianyang", - "j45", - "Marcin Serwin", - "erlehmann", - "E", - "Benjamin Schötz", - "Doloment", - "Sydney Gems", - "talamh", - "Emily2255", - "Emojigit", - "FinishedFragment", - "sfan5", - "Blue Blancmange", - "Jared Moody", - "SmallJoker", - "Sven792", - "aldum", - }}, - {S("MineClone5"), 0xA60014, { - "kay27", - "Debiankaios", - "epCode", - "NO11", - "j45", - }}, - {S("Original Mod Authors"), 0x343434, { - "Wuzzy", - "Fleckenstein", - "BlockMen", - "TenPlus1", - "PilzAdam", - "ryvnf", - "stujones11", - "Arcelmi", - "celeron55", - "maikerumine", - "GunshipPenguin", - "Qwertymine3", - "Rochambeau", - "rubenwardy", - "stu", - "4aiman", - "Kahrl", - "Krock", - "UgnilJoZ", - "lordfingle", - "22i", - "bzoss", - "kilbith", - "xeranas", - "kddekadenz", - "sofar", - "4Evergreen4", - "jordan4ibanez", - "paramat", - }}, - {S("3D Models"), 0x0019FF, { - "22i", - "tobyplowy", - "epCode", - }}, - {S("Textures"), 0xFF9705, { - "XSSheep", - "Wuzzy", - "kingoscargames", - "leorockway", - "xMrVizzy", - "yutyo", - "NO11", - "kay27", - }}, - {S("Translations"), 0x00FF60, { - "Wuzzy", - "Rocher Laurent", - "wuniversales", - "kay27", - "pitchum", - "todoporlalibertad", - "Marcin Serwin", - }}, - {S("Funders"), 0xF7FF00, { - "40W", - }}, - {S("Special thanks"), 0x00E9FF, { - "celeron55 for creating Minetest", - "Jordach for the jukebox music compilation from Big Freaking Dig", - "The workaholics who spent way too much time writing for the Minecraft Wiki. It's an invaluable resource for creating this game", - "Notch and Jeb for being the major forces behind Minecraft", - }}, -} diff --git a/mods/HUD/mcl_credits/textures/mineclone2_logo.png b/mods/HUD/mcl_credits/textures/mineclone2_logo.png index 11435df51033b13cdeba49326b6eabe72ba320a8..f95e425b99a31b91894989352cd51a1e5b581fb0 100644 GIT binary patch literal 283655 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 e$}%nPVV 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�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%0AJv1P*yKe9E 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 z

OX!*N&lx-K$(DDsD`z~xzB9S}Q{bg_P$u5dcHJ99DeuR_S1X#xPir5(kzpf4JL z{6>yei?4a`5Rhmd#wKF*>eFIgbQ>yQoEN_B6a+($!Li*M`(kcD(q0aQdZ{#R{1DBA z{;HPm*k{)m3p!l)ah>j+!1m1EQeOV^8jR} z3R)hoz<<-qC<^w*crFsZNN*vy6QKxDVAAWgjIX*E5c@qIRq9m_w&jv~)La^BVE?JV zXVOXChN{t&$pCY)`P!{CyT&lI!}zvMCI@;O`)hmbhF2NzD-I0*K_sIR7>waUjJBGn<_4KByvjcRh z$4T>%jYS(H-mL;V`53{oellwNL8w~c4GPVseNkJSpN|08Hk1}If7-uMhE1I}AI>xQ zwMulEuD~diy(ndAi)X41l~V_>HyQM?SiYZtc~+4!xYsNYa$m_Z9+>^SgO+c9<=(90 z`1%DjXJw7<%k~>qPI{Bf6lE4EcAQ504I9Ot!RLTtE(4aIu=MCufS6SXOq$lnfN?tf2M;V9C zvkSV_nd}hPG}y(vhz?u*|~c`_UvGKlK~@nJk#~pqVy41bmK&i!)HTyZ^zO! z`$N_Eo!g(+I-&X!FZ@n1%+Yh~-%cZVp^Ok)8fZ1E2Jwi1Yx=g_1DO6(9Lru z$f^dev>7~}<`vCRy)ua%aWemP_rGt@RNQOxsUB(-tN<<2RSa`FPhBaEWTx$jgj#sW zCG*$qt$;ud-g@uiJpa)}is62Qaoc2~2qXK?D$TbOI~iaq3anSZZJg#lcB+Ut_dm&f z$9Zh(Yxo0y=-Tvl6MUy^S{SF-4wb8Ft<*c!!+36+C0)DS1(6?x!8L)e$W-ie=}z;p z_OZu;AV46&M|~{d?cAPoM|)CJt)E&uPwIdi5z6N$k*WKr(JMs4s3Mbnf=uy@{4w_( zT-=I0y}F4X<>6l@6$1L0&XGqdRz8QVb((&%#S3vIY6FOuyH5i4#^DBvPgyOZ!J@3f zS>$|&rNW*}cA!K;_^o2pKz)j`u%ui7kKP)<&u!;~(i65iLMaC0)qjs@fCBafYi0gd z0!H>^hX$+^;65h-?MZ}0{I~D8E6zc7`rw`?!~B!N!*g>;14QM&TGGpeGT$n`+n{+E zOE3Dx?G+-joX5-uF{yI#V4EvYzIPnl_9EWpP5bEkKxDF6E^$kd#Sb>!5bD8+Y5QPo z7Z1ot@|rXlPH>?%{X9!XEGs;6neQS`DD3SU3VGab5+2!)Xq7Szcdp-^UP{mJ{mY8+ zasSA3W>jR(&TMgL8nbUvU!a%xr(dpX$f==Hv)QQ&ZKA|b=eHJ_l?jITy0mKY+gafjnDAgIFK6jPP>|mu3+5HFU@P)oyJv>k zNrhMPNBbE67O54wDi)@YYstStw6+35_Y(XJ1;0J_k$wI1LF6sRxK(LY1Oizk*xfBj zh{e0QP^gx(YV^(QeeuHpd7)cYOI9;@X!_)=6QEt*x&jtAx4(HP_TwQb1|C&w z$vtE-XnUf51-#+~YZX>TTE;Eq6TY8m70Wb`Q&Af|EwELe8)8m9&Y*g?@=ryr)kZbp zw8Y7|LA_s?swi|A7v^D{vJ%B>i4)USoeSH6Rl0xR-`ZRYsBlb7Wf4e&r%Je`dlf5Q zm~0_n14n?Y**zi{e{FX%m!fZQdcTEJ-_qU?$85aznV?{_iQ=Ey?hVv(y9-lV@l!+L z3?mt?)^5r_QUm~4Sml1M8rfJqSVyEfXIv0xBTdmI=57)s8cVG(pbK?nzF9l*k!v4z zxXa9v5AkI*$Z+^lKyX&MWb=D^J3O|pue{Zw+O079!dCdubri1>1-U|#`8tN~)=y{6 z?zzRVQ9)tMw5BhQxXrSQ8GGN~m8jn9h%FQ%eEn!b>*TrI_e}&wcq381_X3bcP4OD4 zG_ptN+nt*}nFZQ)9rFz(yCXG{9pH~CpVpp}-(@N)fblw+n=H%Z3-Ti`FN%J;4P@Jn zGrUG|5Ps=%Jw)4Jx2A2>IYH?my0_fFrw3#;GGHH4(-UxKKxvXsq~z{An*0z9Ku=Ak zG^e%<*lpFZZca-_F9wc%1SW-KdU5k)ef>I?aOP1LCz`gNGdP^Rj_Pmfu!KYSZkd>< zfwTlpyeNUt993wQ`E;qzPV{(W$UZL98(C~7ZPT0b%HAuRn+UOPWQ8N%;H`IDN18@w zyogpkm*bzj3DrmY+^ty;On>E=aUAA=U`!9ENrTnU1K+46u{%h9{SCCHW6Y6nNm%p4 zlv$tkteq{}F*oS8hm`SOb#|WYf5 zTVz=&E7Vx!A!bkAZv&26jY+J*5hKT_{=Yyt(@m!~v(N7KHcS0wI2>+yS<`QXM< zt>&rklg>$9+I~$a;*_@uTit6B-L>ov3NduMpeUl+h&vL{{}=$W?eaucN$gaV)EI1^ zx-g9lQdd@E3|DRijMvV;IT&#?$MP37o1GCSgUz~Z7$L9+iRkF>)r&=0%dZcV7Bo%f z61*%Gta&;?r&>Vf0kjGLeFq|()zbaDJfkl7ssy_%b{U7Sy#E})ClTySWOqBlOAq$y zyihlXM?<%VzSsxq6e-(z&(+mtA7n}x?+&|!}2X3vq;w212o2IP-@mKU|8qUM9 z!#$P(!_zLd*%@cB{7bTh#(w8^wp_DixMbLz75j&3NvQ)yLYL~(?UKeL+qgIwSa1(> zDk=*Og1-jLXr|-RYlAZ{9VgW|*1> z{rqp4JB8F5qo`4Bf+;Zn?!phGdipg&EyLk6uBkLTF~&2dp&XkE?`H+KF7~5i^6tc} zwta=0aX*sw04nJ1H9O%vQ0-}PT(?&;(H9+4MXx927Pw+L#Y8KC=W<6)RVS@PGcl$i z@tT=l$Z!dj<_wY=C&lzn`mn1c^EhWFvMZ|N{2UkWYs;t%+b*Q%A#2iM(n(-qDN*v( zDcN`Ig>xThYpv*cj(1H(F`#8}V5S0?gzImfq}BWP{N$3RZeEF~V8ED(AzS3&&;1~* zx8S|u(`*a9l@q{$d`FXL!A;{@M@L)MNN|KqhnRmlQ3SsZiL&h~Rnoo}C8 zXbT4(Rqo<^Mmw&i!6NI(gqbs8?DH=BFWuQ&wfAplkkr)+v@9)6DTKIx{`k~=D*ok{Kv2is>6&s?I$&E6p??I@cmjkSv zvX0*UYx0MVSB0&P19}(a>(cv`A(pv9R6@uvaC!<1fKRwP-{3#+oEFDkv;&z;x~=O; z2v3sL#?YEz(T^?$h+%pHOl8*9H^vkBIu%;E227EaI)TE+-r^_DKoF~si$4dfCEr-U!2zny*XX>ssW?{*K2*h~r} z10Y-=J1;vC7a)zYbkd(-{m|*-73d!|6e3tmWE&BE7gL80;#<@F?7!{`7L<1_HuDuY zFMRQS5WoPSiJs~!QhD01YkNDY#4xhu>l;f%7XyAB$~MZelb0jUtyjEJ3s2Bla!rGp zY3JzGnrd4kB&?ERK!Gjy%blL$*i5u+6?#lhH3WVv(=e;;7%(fgP?6p-JSFz#pXj74 zzl_D1cR)4Fa&#q8umx08DbAa0)YRkf1gH*?iV)8`gVi7iMsiRX*rNWn$LEE~#iB>- zK0^YywGKyvwJh347Cgy<>h)=zx?OVI@$qZYx)TDlpb2S(CUSA*zySPtW{|$QF#BJ+A+KxdL`x&Noi-R9^Z(> zw}-;h0k#F@UF=`fP1j5H^wt^q{AVga`Fvn0`H*v(I^9A$XXcDUlVx0GE$EGk)=?K# zi+UXrQ5aRb6{gWi`-A{_+}-M^VcY{So7Ot%dfrhU7ENw`Auj^%tiEuDa*Phgo2w^< zxT;{E+1QbD61+L-BqINajdgU$3FcBqecRV-g@V#zpeAUev>>tcsEviK$Iv@)=wP#n zO61rH-f~B+-O5)RbE}2*Q6QwrI0Kh*(B-8gmK`oZNbk@>4#`H zS8QtqrJrB)=C2i{6$gj>puEaX`q6CuNR=cN=TPr1M1ktQkf4R6rRoc%^qI2pKG$4d z#QdFwo=kA4yFg8ED?E|pBuqm(QNRD?8Y?d_-pNpNp|4UAjAUh2Pu2iJEqGYSTw3opE zU`LnFJ-=x=`*}-7@((s__dwIEC8bm4EYU;v`pN0og88@ga4`pH0I-(-bw?Zm8*R)1 z30IXs0V{gwdhMn_LGbL6l+ zZjr@b>E41G+$Hs+D*Y^@!}~7_(RFau)(7PHv5)vfK`r?(mhF0UuMg;wX@A#t@-$+t zvqyLLB;9jy4L*AW2-yI{FJ|uC)4#i0C-QPV3NqEJKu8|&J*26I<4q*;`+8_n$iD}H zN^b=;wOjAg0p=><6TEl60Hg`6;JfB;&A-l$y&Yvax3f?ZAzOvbv98aptL(otblRw6 z)mkQ<9nh5*_$DWPt*YxMhCab1Tko=p)#JT6K&>{{U9XmBt}02Qd<)QepT_iJC$!}& zFsFY0cGuWJ{8YJKEID|QRa=??Q{~qw0qmyo^m3Z+-DyWPTPx3yo2P48P&Gc|Fs-Cp z0AJS?xC@m&spwMpR1dCRXQ{|(qpJsYG;++)CDS{mt3kr5NnHXOKoA0F)ooUA!HmEa z5<34nH_kl%+R^ZJ0$}R?agt$*rnMak8^aGL!9cMmNM;*nu zqHXMaSHtb)FgVMjsps?+?ydf7x%Oe4N{O+e&AX9BG9)_kYx{l;UljGg(CqijrRr_t zW3!XyO|1DB(`gGpbBiU`mgUp5CzrzT+V$mVwu_V%=79}?CrKuHd_HI66)t>o#8_Vf z48B;}^i}5)em8yL7jUfQ(-i0|>rp_+@wa&i)lu6bi3VLeW4-okKsQ3cx?Z?$p{VF@ zE_FzZ>KGxE6(@}W4bWM+zPmk#h?dYfw{6Dj)F77&FH&G;O^m>v8|0LtSFNnK*`OM) zO9j3)y(U)oHC%IT^EOzIilGKzB+I=Kfe4!I>(}m2b+`ieZbaEi8F|>4FNOJrb`1Y9 zB6`foI`&1bT}YVS^8hc&YGv5in}^!rf?~jB2Mz|C>^P5 z;N8np12Ip%oYd0PTDx2|{HGlE&+6VEv8jI#bZRX-fVU2XXWGV&0J98jtbh?a?i4w=8>LG^zW$AvKGgZC z>4$*ttPkgzl1v8Bi;@OLNB@if77ZJvH?v;g+y3#G>FV?Oy!yiDGpb(0sk70edo_;T zNc2c`Rhea+hFC;}eDIJl?kK0{8Mn=Qp^g%iB&eBT8PI*(Ge+>~1LAyY9 z%`h-m*BBDo0}p3=*d~Sz{EM`Nso|xJb6~rukpW%K3rkFhyNneK?e6*Qv;`v7!#Z?p z2uO%6ZCY`?M9}V^Ot#$^DZOguII=jBwB0jZ<-R@S$^YoW7jwwn_N2QP=0653*l8rz zJaAR-uUiAg7ax7vR-rZJYQz2FSAqj^I#v&Y!?%Moy=@yLmNuc;c&qGO3#%UGk*9YQ zT1(eDeMTR5blgVW&)k=8*_rfdzC0J zIB#R;rVVG+GEPj#Jo|8o*OP1+I{%ywM%meVCBsxP!@>HkU4tKufVC$xT}00QGUG~| zlgj29htL(1u8EUGJxv#Hc|l)b<++vj(4@OMod-KzW@sC_ zCSy1cl$q6*uNI{ggHctxrH*!`$*`=7&$JRXW#0G>i>zr9+c8`+#~SeEbUwLMFx5k} zwc~j3&m3!;v=M#)%=HyzD^-B5#E@x6h!bb_&QiuT%;F-0S8|Py-v2fyNAKsZsE@Tc z7_oJu%-VwUzDL{tZcissbFYk`XQcxqqNi}g+NM>ga|8!EcMUOCQ8)kEDIJQIMTM

UJx|vsaOZab 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 O@K^LN@BS<4;{O2^{6RSY literal 77528 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 aYyTg9*d2kzhi~x!0000 Date: Mon, 7 Mar 2022 02:05:45 +0000 Subject: [PATCH 308/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdoors/locale/mcl=5Fdoors.es.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr index 1a510815b..a765553d7 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.es.tr @@ -7,6 +7,8 @@ Birch Door=Puerta de abedul Dark Oak Door=Puerta de roble oscuro Jungle Door=Puerta de jungla Spruce Door=Puerta de abeto +Crimson Door= +Warped Door= 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 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. @@ -16,6 +18,8 @@ Birch Trapdoor=Trampilla de abedul Spruce Trapdoor=Trampilla de abeto Dark Oak Trapdoor=Trampilla de roble oscuro Jungle Trapdoor=Trampilla de jungla +Crimson Trapdoor= +Warped 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.=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 From 1df31d948fd9c8174e8d503b66f64fbd4a993ee7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 02:06:43 +0000 Subject: [PATCH 309/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdoors/locale/mcl=5Fdoors.pl.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr index e26c5861a..c502b9ec6 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.pl.tr @@ -7,6 +7,8 @@ Birch Door=Brzozowe drzwi Dark Oak Door=Ciemno-dębowe drzwi Jungle Door=Tropikalne drzwi Spruce Door=Świerkowe drzwi +Crimson Door= +Warped Door= Iron Door=Żelazne drzwi Iron doors are 2-block high barriers which can only be opened or closed by a redstone signal, but not by hand.=Żelazne drzwi są blokami o wysokości dwa, które mogą być otwarte lub zamknięte przez zasilanie czerwienitem, ale nie ręcznie. To open or close an iron door, supply its lower half with a redstone signal.=Aby otworzyć lub zamknąć żelazne drzwi zasil ich dolną część czerwienitem. @@ -16,6 +18,8 @@ Birch Trapdoor=Brzozowa klapa Spruce Trapdoor=Świerkowa klapa Dark Oak Trapdoor=Ciemno-dębowa klapa Jungle Trapdoor=Tropikalna klapa +Crimson Trapdoor= +Warped 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.=Drewniane klapy są poziomymi barierami, które mogą być otwarte i zamknięte ręcznie bądź przez zasilenie czerwienitem. Zajmują główną lub dolną część bloku w zależności od tego jak zostaną postawione. Gdy są otwarte można się po nich wspinać jak po drabinie. To open or close the trapdoor, rightclick it or send a redstone signal to it.=Aby otworzyć lub zamknąć drewniane klapy, kliknij je prawym przyciskiem bądź zasil ich dolną połowę czerwienitem. Iron Trapdoor=Żelazna klapa From f2f5eea102cfefb926f848125bb11e57d20e0777 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 02:07:47 +0000 Subject: [PATCH 310/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdoors/locale/mcl=5Fdoors.ru.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr index 7ce948210..2f4b54dba 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.ru.tr @@ -7,6 +7,8 @@ Birch Door=Берёзовая дверь Dark Oak Door=Дверь из тёмного дуба Jungle Door=Дверь из тропического дерева Spruce Door=Еловая дверь +Crimson Door= +Warped 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.=Железные двери это барьеры высотой в 2 блока, которые можно открывать и закрывать только по сигналу редстоуна, но не вручную. To open or close an iron door, supply its lower half with a redstone signal.=Чтобы открыть или закрыть железную дверь, подайте на её нижнюю часть сигнал редстоуна. @@ -16,6 +18,8 @@ Birch Trapdoor=Берёзовый люк Spruce Trapdoor=Еловый люк Dark Oak Trapdoor=Люк из тёмного дуба Jungle Trapdoor=Люк из тропического дерева +Crimson Trapdoor= +Warped 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=Железный люк From bde7cf27a7cc00b61ab2caade2e7aa2aff77ac14 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 02:18:38 +0000 Subject: [PATCH 311/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdoors/locale/mcl=5Fdoors.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr index 0ad520651..a4f930841 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr @@ -7,6 +7,8 @@ Birch Door=Porte en Bouleau Dark Oak Door=Porte en Chêne Noir Jungle Door=Porte en Acajou Spruce Door=Porte en Sapin +Crimson Door= +Warped Door= 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. @@ -16,6 +18,8 @@ Birch Trapdoor=Trappe en Bouleau Spruce Trapdoor=Trappe en Sapin Dark Oak Trapdoor=Trappe en Chêne Noir Jungle Trapdoor=Trappe en Acajou +Crimson Trapdoor= +Warped 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.=Les trappes en bois sont des barrières horizontales qui peuvent être ouvertes et fermées à la main ou par un signal redstone. Elles occupent la partie supérieure ou inférieure d'un bloc, selon la façon dont elles ont été placées. 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 From d7f4515758132c5470e9e180af889652d79c4190 Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 02:23:50 +0000 Subject: [PATCH 312/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fdoors/locale/mcl=5Fdoors.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr b/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr index a4f930841..0bf2dea28 100644 --- a/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr +++ b/mods/ITEMS/mcl_doors/locale/mcl_doors.fr.tr @@ -7,8 +7,8 @@ Birch Door=Porte en Bouleau Dark Oak Door=Porte en Chêne Noir Jungle Door=Porte en Acajou Spruce Door=Porte en Sapin -Crimson Door= -Warped Door= +Crimson Door=Porte Ecarlate +Warped Door=Porte Tordue 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. @@ -18,8 +18,8 @@ Birch Trapdoor=Trappe en Bouleau Spruce Trapdoor=Trappe en Sapin Dark Oak Trapdoor=Trappe en Chêne Noir Jungle Trapdoor=Trappe en Acajou -Crimson Trapdoor= -Warped Trapdoor= +Crimson Trapdoor=Trappe Ecarlate +Warped Trapdoor=Trappe Tordue 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. Elles occupent la partie supérieure ou inférieure d'un bloc, selon la façon dont elles ont été placées. 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 From 9fe1b86a97c77d2ba9ff600243cdb6780ceb4cfd Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 7 Mar 2022 02:42:04 +0000 Subject: [PATCH 313/521] Correction --- mods/ITEMS/mcl_doors/register.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index 7d791b4bb..8c8b7613f 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -167,7 +167,7 @@ minetest.register_craft({ }) --- Warped Door -- -mclx_doors:register_door("mcl_doors:warped_door", { +mcl_doors:register_door("mcl_doors:warped_door", { description = S("Warped Door"), _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, From 1e8f5ffc74c6afed38dcd93d314af0cceeb00ca9 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 9 Mar 2022 05:21:05 +0400 Subject: [PATCH 314/521] Remove too idle players --- mods/PLAYER/mcl_anticheat/init.lua | 85 +++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_anticheat/init.lua b/mods/PLAYER/mcl_anticheat/init.lua index f4a3ac909..bd76e2818 100644 --- a/mods/PLAYER/mcl_anticheat/init.lua +++ b/mods/PLAYER/mcl_anticheat/init.lua @@ -13,6 +13,7 @@ local find_nodes_in_area = minetest.find_nodes_in_area local ceil = math.ceil local floor = math.floor +local vector_length = vector.length local distance = vector.distance @@ -20,6 +21,10 @@ local window_size = 8 local detection_interval = 1.6 local step_seconds = detection_interval / window_size local joined_players = {} +local ip_to_players = {} +local player_name_to_ip = {} +local player_doesnt_move = {} +local ban_next_time = {} local function update_settings() enable_anticheat = minetest.settings:get_bool("enable_anticheat", true) @@ -58,9 +63,15 @@ local function update_player(player_object) local noclip = #find_nodes_in_area({x = x, y = head_y, z = z}, {x = x + 1, y = head_y + 1, z = z + 1}, "group:opaque") == 8 + local velocity = player_object:get_velocity() + if vector_length(velocity) < 0.00000001 then + player_doesnt_move[name] = (player_doesnt_move[name] or 0) + 1 + else + player_doesnt_move[name] = 0 + end local player_data = { pos = pos, - velocity = player_object:get_velocity(), + velocity = velocity, air = air, noclip = noclip, } @@ -142,7 +153,24 @@ local function remove_player(player_object) if not player_object then return end local name = player_object:get_player_name() if not name then return end + local ip = player_name_to_ip[name] + player_name_to_ip[name] = nil + if ip then + local players = ip_to_players[ip] + if players then + for k, v in pairs(players) do + if v == name then + if k < #players then + players[k] = players[#players] + end + players[#players] = nil + break + end + end + end + end minetest.after(step_seconds, function() + player_doesnt_move[name] = nil joined_players[name] = nil end) end @@ -154,6 +182,50 @@ local function step() check_player(player:get_player_name()) end end + for ip, players in pairs(ip_to_players) do + if #players > 2 then + local first = players[1] + local should_be_banned = ban_next_time[ip] + if #players < 6 then + for _, player_name in pairs(players) do + if (player_doesnt_move[player_name] or 0) > 1800/step_seconds then + minetest.kick_player(player_name, "Didn't move during 30 minutes, more than 2 connections from IP " .. ip) + end + end + elseif #players < 10 then + for _, player_name in pairs(players) do + if (player_doesnt_move[player_name] or 0) > 600/step_seconds then + minetest.kick_player(player_name, "Didn't move during 10 minutes, more than 5 connections from IP " .. ip) + end + end + elseif #players < 26 then + if should_be_banned then + minetest.chat_send_all("Player " .. first .. " has been banned for having more than 9 connections at once") + minetest.ban_player(first) + else + for _, player_name in pairs(players) do + if (player_doesnt_move[player_name] or 0) > 90/step_seconds then + minetest.kick_player(player_name, "Didn't move during 1.5 minutes being connected multiple times") + ban_next_time[ip] = 1 + end + end + end + elseif #players <= 100 then + if should_be_banned then + minetest.ban_player(first) + minetest.chat_send_all("Player " .. first .. " has been banned for having more than 25 connections at once") + else + for _, player_name in pairs(players) do + minetest.kick_player(player_name, "More than 25 connections from IP address " .. ip) + end + ban_next_time[ip] = 1 + end + else + minetest.ban_player(first) + minetest.chat_send_all("Player " .. first .. " has been banned for having more than 100 connections at once") + end + end + end after(step_seconds, step) end @@ -203,4 +275,15 @@ minetest.register_on_joinplayer(update_player) minetest.register_on_leaveplayer(remove_player) +minetest.register_on_authplayer(function(name, ip, is_success) + if not is_success then return end + local players = ip_to_players[ip] + if not players then + ip_to_players[ip] = {name} + else + players[#players + 1] = name + end + player_name_to_ip[name] = ip +end) + after(step_seconds, step) From e2d2d4219becb82e8440d7536d30e7ec08a2c068 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 10 Mar 2022 23:12:47 +0400 Subject: [PATCH 315/521] Remove bubble columns mod by j45 --- mods/CORE/mcl_bubble_column/LICENSE | 674 ------------------ mods/CORE/mcl_bubble_column/README.md | 9 - mods/CORE/mcl_bubble_column/init.lua | 195 ----- mods/CORE/mcl_bubble_column/mod.conf | 1 - mods/ITEMS/mcl_core/nodes_liquid.lua | 334 +++++++-- .../mcl_core/textures/mcl_core_bubble.png | Bin 0 -> 1615 bytes mods/ITEMS/mcl_nether/init.lua | 21 +- mods/PLAYER/mcl_playerplus/init.lua | 56 +- 8 files changed, 331 insertions(+), 959 deletions(-) delete mode 100644 mods/CORE/mcl_bubble_column/LICENSE delete mode 100644 mods/CORE/mcl_bubble_column/README.md delete mode 100644 mods/CORE/mcl_bubble_column/init.lua delete mode 100644 mods/CORE/mcl_bubble_column/mod.conf create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_bubble.png diff --git a/mods/CORE/mcl_bubble_column/LICENSE b/mods/CORE/mcl_bubble_column/LICENSE deleted file mode 100644 index f288702d2..000000000 --- a/mods/CORE/mcl_bubble_column/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - 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. - - - Copyright (C) - - 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: - - Copyright (C) - 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/CORE/mcl_bubble_column/README.md b/mods/CORE/mcl_bubble_column/README.md deleted file mode 100644 index f56d30145..000000000 --- a/mods/CORE/mcl_bubble_column/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# mcl_bubble_column by j45 - -https://github.com/Minetest-j45/mcl_bubble_column/ - -Adds whirlpools and upwards bubble columns to Mineclone2/5 - -A bubble column is a block generated by placing magma blocks or soul sand in water (source). - -Bubble columns push or pull entities and items in certain directions. diff --git a/mods/CORE/mcl_bubble_column/init.lua b/mods/CORE/mcl_bubble_column/init.lua deleted file mode 100644 index ed3bcc5b3..000000000 --- a/mods/CORE/mcl_bubble_column/init.lua +++ /dev/null @@ -1,195 +0,0 @@ -mcl_bubble_column = {} - -minetest.register_abm{ - label = "bubbleColumnUpStop", - nodenames = {"group:water"}, - interval = 0.05, - chance = 1, - action = function(pos) - local meta = minetest.get_meta(pos) - if meta:get_int("bubbly") == 1 then--bubble column - --check down if current needs to be deleted - local downpos = vector.add(pos, {x = 0, y = -1, z = 0}) - local downposnode = minetest.get_node(downpos) - local downmeta = minetest.get_meta(downpos) - if (downmeta:get_int("bubbly") ~= 1 and downposnode.name ~= "mcl_nether:soul_sand") then - meta:set_int("bubbly", 0) - end - --check up to see if needs to go up - local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) - local upposnode = minetest.get_node(uppos) - local upmeta = minetest.get_meta(uppos) - if (minetest.get_item_group(upposnode.name, "water") == 3 and upmeta:get_int("bubbly") ~= 1) then - upmeta:set_int("bubbly", 1) - end - elseif meta:get_int("whirly") == 1 then--whirlpool - --check down if current needs to be deleted - local downpos = vector.add(pos, {x = 0, y = -1, z = 0}) - local downposnode = minetest.get_node(downpos) - local downmeta = minetest.get_meta(downpos) - if (downmeta:get_int("whirly") ~= 1 and downposnode.name ~= "mcl_nether:magma") then - meta:set_int("whirly", 0) - end - --check up to see if needs to go up - local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) - local upposnode = minetest.get_node(uppos) - local upmeta = minetest.get_meta(uppos) - if (minetest.get_item_group(upposnode.name, "water") == 3 and upmeta:get_int("whirly") ~= 1) then - upmeta:set_int("whirly", 1) - end - end - end, -} - -minetest.register_abm{ - label = "startBubbleColumn", - nodenames = {"mcl_nether:soul_sand"}, - interval = 0.05, - chance = 1, - action = function(pos) - local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) - local upposnode = minetest.get_node(uppos) - local upmeta = minetest.get_meta(uppos) - if (minetest.get_item_group(upposnode.name, "water") == 3 and upmeta:get_int("bubbly") ~= 1) then - upmeta:set_int("bubbly", 1) - end - end, -} - -minetest.register_abm{ - label = "startWhirlpool", - nodenames = {"mcl_nether:magma"}, - interval = 0.05, - chance = 1, - action = function(pos) - local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) - local upposnode = minetest.get_node(uppos) - local upmeta = minetest.get_meta(uppos) - if (minetest.get_item_group(upposnode.name, "water") == 3 and upmeta:get_int("whirly") ~= 1) then - upmeta:set_int("whirly", 1) - end - end, -} - - -mcl_bubble_column.on_enter_bubble_column = function(self) - local velocity = self:get_velocity() - --[[if down.name == "mcl_nether:soul_sand" then - self:add_velocity({x = 0, y = math.min(10, math.abs(velocity.y)+9.4), z = 0}) - else]] - self:add_velocity({x = 0, y = math.min(3.6, math.abs(velocity.y)+3), z = 0}) - --end -end - -mcl_bubble_column.on_enter_whirlpool = function(self) - local velocity = self:get_velocity() - --self:add_velocity({x = 0, y = math.max(-3, (-math.abs(velocity.y))-2), z = 0}) - self:add_velocity({x = 0, y = math.max(-0.3, (-math.abs(velocity.y))-0.03), z = 0}) -end - -mcl_bubble_column.on_enter_bubble_column_with_air_above = function(self) - local velocity = self:get_velocity() - --[[if down.name == "mcl_nether:soul_sand" then - self:add_velocity({x = 0, y = math.min(4.3, math.abs(velocity.y)+2.8), z = 0}) - else]] - self:add_velocity({x = 0, y = math.min(2.6, math.abs(velocity.y)+2), z = 0}) - --end -end - -mcl_bubble_column.on_enter_whirlpool_with_air_above = function(self) - local velocity = self:get_velocity() - --self:add_velocity({x = 0, y = math.max(-3.5, (-math.abs(velocity.y))-2), z = 0}) - self:add_velocity({x = 0, y = math.max(-0.9, (-math.abs(velocity.y))-0.03), z = 0}) -end - -minetest.register_abm{ - label = "entGo", - nodenames = {"group:water"}, - interval = 0.05, - chance = 1, - action = function(pos) - --if not bubble column block return - local meta = minetest.get_meta(pos) - if meta:get_int("bubbly") == 1 then - local up = minetest.get_node(vector.add(pos, {x = 0, y = 1, z = 0})) - for _,entity in pairs(minetest.get_objects_inside_radius(pos, 0.75)) do - if up.name == "air" then - mcl_bubble_column.on_enter_bubble_column_with_air_above(entity) - else - mcl_bubble_column.on_enter_bubble_column(entity) - end - end - elseif meta:get_int("whirly") == 1 then - local up = minetest.get_node(vector.add(pos, {x = 0, y = 1, z = 0})) - for _,entity in pairs(minetest.get_objects_inside_radius(pos, 0.75)) do - if up.name == "air" then - mcl_bubble_column.on_enter_whirlpool_with_air_above(entity) - else - mcl_bubble_column.on_enter_whirlpool(entity) - end - end - end - end, -} - -minetest.register_globalstep(function() - for _,player in ipairs(minetest.get_connected_players()) do - local ppos = player:get_pos() - local eyepos = {x = ppos.x, y = ppos.y + player:get_properties().eye_height, z = ppos.z} - local node = minetest.get_node(ppos) - local eyenode = minetest.get_node(eyepos) - local meta = minetest.get_meta(ppos) - local eyemeta = minetest.get_meta(eyepos) - - local eyemeta = minetest.get_meta(ppos) - --if minetest.get_item_group(node.name, "water") == 3 and minetest.get_item_group(eyenode.name, "water") == 3 then return end - if meta:get_int("bubbly") == 1 or eyemeta:get_int("bubbly") == 1 then - local up = minetest.get_node(vector.add(eyepos, {x = 0, y = 1, z = 0})) - if up.name == "air" then - mcl_bubble_column.on_enter_bubble_column_with_air_above(player) - else - mcl_bubble_column.on_enter_bubble_column(player) - end - elseif meta:get_int("whirly") == 1 or eyemeta:get_int("whirly") == 1 then - local up = minetest.get_node(vector.add(ppos, {x = 0, y = 1, z = 0})) - if up.name == "air" then - mcl_bubble_column.on_enter_whirlpool_with_air_above(player) - else - mcl_bubble_column.on_enter_whirlpool(player) - end - end - end -end) - ---abms to remove and replace old bubble columns/whirlpools -minetest.register_abm{ - label = "removeOldFlowingColumns", - nodenames = {"mcl_bubble_column:water_flowing_up", "mcl_bubble_column:water_flowing_down"}, - interval = 1,--reduce lag - chance = 1, - action = function(pos) - minetest.set_node(pos, {name = "air"}) - end, -} -minetest.register_abm{ - label = "replaceBubbleColumns", - nodenames = {"mcl_bubble_column:water_source_up"}, - interval = 1,--reduce lag - chance = 1, - action = function(pos) - minetest.set_node(pos, {name = "mcl_core:water_source"}) - local meta = minetest.get_meta(pos) - meta:set_int("bubbly", 1) - end, -} -minetest.register_abm{ - label = "replaceWhirlpools", - nodenames = {"mcl_bubble_column:water_source_down"}, - interval = 1,--reduce lag - chance = 1, - action = function(pos) - minetest.set_node(pos, {name = "mcl_core:water_source"}) - local meta = minetest.get_meta(pos) - meta:set_int("whirly", 1) - end, -} \ No newline at end of file diff --git a/mods/CORE/mcl_bubble_column/mod.conf b/mods/CORE/mcl_bubble_column/mod.conf deleted file mode 100644 index 9167bf062..000000000 --- a/mods/CORE/mcl_bubble_column/mod.conf +++ /dev/null @@ -1 +0,0 @@ -name = mcl_bubble_column \ No newline at end of file diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 0e0f71a11..75314cf9f 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -10,67 +10,133 @@ local WATER_VISC = 1 local LAVA_VISC = 7 local LIGHT_LAVA = minetest.LIGHT_MAX local USE_TEXTURE_ALPHA = true +local BUBBLE_COLUMN_SPEED = 1 +local BUBBLE_ABM_INTERVAL = 2 +local BUBBLE_AMOUNT = math.floor(BUBBLE_ABM_INTERVAL / math.abs(BUBBLE_COLUMN_SPEED) + 0.5) if minetest.features.use_texture_alpha_string_modes then USE_TEXTURE_ALPHA = "blend" end -minetest.register_node("mcl_core:water_flowing", { - description = S("Flowing Water"), - _doc_items_create_entry = false, - wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", - drawtype = "flowingliquid", - tiles = {"default_water_flowing_animated.png^[verticalframe:64:0"}, - special_tiles = { - { - image="default_water_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} - }, - { - image="default_water_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} - }, - }, - sounds = mcl_sounds.node_sound_water_defaults(), - is_ground_content = false, - use_texture_alpha = USE_TEXTURE_ALPHA, - paramtype = "light", - paramtype2 = "flowingliquid", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 4, - liquidtype = "flowing", - liquid_alternative_flowing = "mcl_core:water_flowing", - liquid_alternative_source = "mcl_core:water_source", - liquid_viscosity = WATER_VISC, - 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 = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, -}) +function mcl_core.register_liquid(def) + local base_name = def.base_name + local description_flowing = def.description_flowing + local description_source = def.description_source + local _doc_items_entry_name = def._doc_items_entry_name + local _doc_items_longdesc = def._doc_items_longdesc + local wield_image = def.wield_image + local tiles_flowing = def.tiles_flowing + local tiles_source = def.tiles_source + local special_tiles_flowing = def.special_tiles_flowing + local special_tiles_source = def.special_tiles_source + local sounds = def.sounds + local use_texture_alpha = def.use_texture_alpha + local drowning = def.drowning + local liquid_viscosity = def.liquid_viscosity + local liquid_range = def.liquid_range + local post_effect_color = def.post_effect_color + local groups = def.groups -minetest.register_node("mcl_core:water_source", { - description = S("Water Source"), + local source_node_name = string.format("mcl_core:%s_source", base_name) + local flowing_node_name = string.format("mcl_core:%s_flowing", base_name) + local mandatory_liquid_groups = {liquid=3, not_in_creative_inventory=1, dig_by_piston=1} + for group_id, group_level in pairs(mandatory_liquid_groups) do + if not groups[group_id] then + groups[group_id] = group_level + elseif groups[group_id] == false then + groups[group_id] = nil + end + end + minetest.register_node(flowing_node_name, { + description = description_flowing, + _doc_items_create_entry = false, + wield_image = wield_image, + drawtype = "flowingliquid", + tiles = tiles_flowing, + special_tiles = special_tiles_flowing, + sounds = sounds, + is_ground_content = false, + use_texture_alpha = use_texture_alpha, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drop = "", + drowning = drowning, + liquidtype = "flowing", + liquid_alternative_flowing = flowing_node_name, + liquid_alternative_source = source_node_name, + liquid_viscosity = liquid_viscosity, + liquid_range = liquid_range, + post_effect_color = post_effect_color, + groups = groups, + _mcl_blast_resistance = 100, + -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + _mcl_hardness = -1, + }) + + minetest.register_node(source_node_name, { + description = description_source, + _doc_items_entry_name = _doc_items_entry_name, + _doc_items_longdesc = _doc_items_longdesc, + _doc_items_hidden = false, + drawtype = "liquid", + tiles = tiles_source, + special_tiles = special_tiles_source, + sounds = sounds, + is_ground_content = false, + use_texture_alpha = use_texture_alpha, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drop = "", + drowning = drowning, + liquidtype = "source", + liquid_alternative_flowing = flowing_node_name, + liquid_alternative_source = source_node_name, + liquid_viscosity = liquid_viscosity, + liquid_range = liquid_range, + post_effect_color = post_effect_color, + stack_max = 64, + groups = groups, + _mcl_blast_resistance = 100, + -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + _mcl_hardness = -1, + }) +end + +mcl_core.register_liquid({ + base_name = "water", + description_flowing = S("Flowing Water"), + description_source = 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\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 = { - {name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}} + _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\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."), + wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", + tiles_flowing = {"default_water_flowing_animated.png^[verticalframe:64:0"}, + tiles_source = {{name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}}}, + special_tiles_flowing = { + { + image="default_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} + }, + { + image="default_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} + }, }, - special_tiles = { + special_tiles_source = { -- New-style water source material (mostly unused) { name="default_water_source_animated.png", @@ -78,29 +144,94 @@ S("• When water is directly below lava, the water turns into stone."), backface_culling = false, } }, - sounds = mcl_sounds.node_sound_water_defaults(), - is_ground_content = false, - use_texture_alpha = USE_TEXTURE_ALPHA, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 4, - liquidtype = "source", - liquid_alternative_flowing = "mcl_core:water_flowing", - liquid_alternative_source = "mcl_core:water_source", - liquid_viscosity = WATER_VISC, - liquid_range = 7, - 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 = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, + sounds = mcl_sounds.node_sound_water_defaults(), + use_texture_alpha = USE_TEXTURE_ALPHA, + drowning = 4, + liquid_viscosity = WATER_VISC, + liquid_range = 7, + post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, + groups = {water=3, puts_out_fire=1, freezes=1, melt_around=1}, }) +mcl_core.register_liquid({ + base_name = "whirlpool", + description_flowing = S("Flowing Water"), + description_source = S("Whirlpool"), + _doc_items_entry_name = S("Water"), + _doc_items_longdesc = + S("A whirlpool, or downward bubble column, is originating from magma at the bottom of underwater canyons.").."\n".. + S("They drag entities downward."), + wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", + tiles_flowing = {"default_water_flowing_animated.png^[verticalframe:64:0"}, + tiles_source = {{name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}}}, + special_tiles_flowing = { + { + image="default_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} + }, + { + image="default_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} + }, + }, + special_tiles_source = { + { + name="default_water_source_animated.png", + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}, + backface_culling = false, + } + }, + sounds = mcl_sounds.node_sound_water_defaults(), + use_texture_alpha = USE_TEXTURE_ALPHA, + drowning = 0, + liquid_viscosity = WATER_VISC, + liquid_range = 7, + post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, + groups = {puts_out_fire=1, freezes=1, melt_around=1}, +}) + +mcl_core.register_liquid({ + base_name = "bubble_column", + description_flowing = S("Flowing Water"), + description_source = S("Bubble Column"), + _doc_items_entry_name = S("Water"), + _doc_items_longdesc = + S("A bubble column is generated above soul sand.").."\n".. + S("It accelerates entities upward."), + wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", + tiles_flowing = {"default_water_flowing_animated.png^[verticalframe:64:0"}, + tiles_source = {{name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}}}, + special_tiles_flowing = { + { + image="default_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} + }, + { + image="default_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} + }, + }, + special_tiles_source = { + { + name="default_water_source_animated.png", + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}, + backface_culling = false, + } + }, + sounds = mcl_sounds.node_sound_water_defaults(), + use_texture_alpha = USE_TEXTURE_ALPHA, + drowning = 0, + liquid_viscosity = WATER_VISC, + liquid_range = 7, + post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, + groups = {puts_out_fire=1, freezes=1, melt_around=1}, +}) + + minetest.register_node("mcl_core:lava_flowing", { description = S("Flowing Lava"), _doc_items_create_entry = false, @@ -243,3 +374,58 @@ if minetest.settings:get("mcl_node_particles") == "full" then end, }) end + +--if minetest.settings:get("mcl_node_particles") ~= "none" then + local nether_node_to_check = { + ["mcl_core:whirlpool_source"] = "mcl_nether:magma", + ["mcl_core:bubble_column_source"] = "mcl_nether:soul_sand", + } + local nether_node_offset_y = { + ["mcl_core:whirlpool_source"] = 0.5, + ["mcl_core:bubble_column_source"] = -0.5, + } + local nether_node_speed_y = { + ["mcl_core:whirlpool_source"] = -BUBBLE_COLUMN_SPEED, + ["mcl_core:bubble_column_source"] = BUBBLE_COLUMN_SPEED, + } + minetest.register_abm({ + label = "Process bubble columns and whirlpools", + nodenames = {"mcl_core:whirlpool_source", "mcl_core:bubble_column_source"}, + interval = BUBBLE_ABM_INTERVAL, + chance = 1, + catch_up = false, + action = function(pos, node) + local x, y, z, name = pos.x, pos.y, pos.z, node.name + local check = nether_node_to_check[name] + local below = minetest.get_node({x = x, y = y - 1, z = z}).name + if below ~= name and below ~= check then + minetest.swap_node(pos, {name = "mcl_core:water_source"}) + return + end + local upper_pos = {x = x, y = y + 1, z = z} + local upper = minetest.get_node(upper_pos).name + if upper == "mcl_core:water_source" then + minetest.swap_node(upper_pos, {name = name}) + end + local offset_y, speed_y = nether_node_offset_y[name], nether_node_speed_y[name] + for _, obj in pairs(minetest.get_objects_inside_radius(pos, 12)) do + if obj:is_player() then + minetest.add_particlespawner({ + amount = BUBBLE_AMOUNT, + minpos = {x = x - 0.2, y = y + offset_y, z = z - 0.2}, + maxpos = {x = x + 0.2, y = y + offset_y, z = z + 0.2}, + minvel = {x = 0 , y = speed_y, z = 0 }, + maxvel = {x = 0 , y = speed_y, z = 0 }, + minexptime = 0.95 / BUBBLE_COLUMN_SPEED, + maxexptime = 1.05 / BUBBLE_COLUMN_SPEED, + minsize = 0.6, + maxsize = 1.9, + collisiondetection = false, + texture = "mcl_core_bubble.png", + playername = obj:get_player_name(), + }) + end + end + end, + }) +--end diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_bubble.png b/mods/ITEMS/mcl_core/textures/mcl_core_bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..083d6707c141d4ac42f952efdb97605165a6ed8f GIT binary patch literal 1615 zcmV-V2C(^wP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+SONEa^pA*{O2k52n0Zo;Bok@nj6gVw<#&|BlaYA zW-1z-#x_@x6x9EZ)h}QXf;(kvk-aT&;&AFC2k++j8;NrEu0Ane)eh~#h zXdayE#xJ?u`1@lCD^O53nhg^yzV0ci(q(PQrn7i;2n~MUFO>R`02HCN0t^Wh@DU4} zBKgFeh`^&kp9178fh!asb;=zmIfz7vW4vnPnM7MGEAMW!7YLyeB|#c&6o?gqhKT)U zSVG0AXi(LtNlmksC^1BhF{ZfsR7sLT(iBrlmU1d47ECQ#GP7(Ya~8BQbvfpgE$3Vc zik482t02C>QMpPDRcoxNTFtdIET0ydw%Ag$mRsrErK1J79((H6b1#DimeL4AM;vL` z$fHcGwJ9@9opGjVGtY9WcBp!*+P!jrR*eqTcoS;HrHg8Cr}UA6Ry)z985H9{P&_RK zu%LNq=8Zz&rQFiYXBH=-43xUW>9iDsf?*Krq*J?#a!+-0VE0ws_>ppMN%uFDb4$7_ zR@!MBLt67?^Lvrw@Acv- z%es;!oW7xL8&+%MeD-_RJr9u4(w?^3loM&&YZ+cDAD*!x;u890J~{0}yiw{)G`Vlk zGQ^GvhZ)+p$)3fIY)!0v8>)Lnu|Gj`&u9J`H1}gDhjnkP<%dw+6Ra;ob3fT;*U;Qo zG*0xt6WY8$3-to+x%{s~i>~bDy5y^UlH=~h=W+WcG`m!IrhwQ)L=&d&7OAksx#gQ$${>8nsGzFh<7-|da z6YO!+Y28-=XIiB_ZMSq5C*28%;@#8NY}BLS*r-om#`x&UK=Uso0r~VPT{fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fY7Kg z)$E!8RLwF{@tBy+t%`wH2pEJPvxrK})D!8&3_QozJ$!tlrLmmRyc2QRx35ux+i~OFt4qoxlVHgaV#N$Bt*!lp^OSFL}=AWF_EJEn1_GZ z@h8b8ldB9yjs;YqLUR1zfAG6ovk;whlY%jz`^C0DMuEUC(5&0`_pxm^PXPZjaHX~V z)dn#0NqW7lg^z&#ZQ$a%t;u`9K2Z+1tNoTK)Y1;45;|Ut?T$00006VoOIv0RI600RN!9r;`8x z010qNS#tmYE+YT{E+YYWr9XB6000McNliruK~xyig^#fb zfG`w9U!2X-0j%A?${DQOz&co4Iz)y@m!BdaA~xSPqLSAgcknnUVDhjyuPF$76#BM) zbS%zmo+rEMZ<&uOfE47@e;p?kz#fGn4<|6rtG-@LcGK%P0T{Z*0NiC1EAGYY_QwDK N002ovPDHLkV1jD`{0{&C literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index c5e39f753..2d6fbcecc 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -167,7 +167,6 @@ minetest.register_node("mcl_nether:soul_sand", { sounds = mcl_sounds.node_sound_sand_defaults(), _mcl_blast_resistance = 0.5, _mcl_hardness = 0.5, - -- Movement handling is done in mcl_playerplus mod }) minetest.register_node("mcl_nether:nether_brick", { @@ -418,3 +417,23 @@ minetest.register_craft({ dofile(minetest.get_modpath(minetest.get_current_modname()).."/nether_wart.lua") dofile(minetest.get_modpath(minetest.get_current_modname()).."/lava.lua") + +local bubble_generation_schema = { + ["mcl_nether:soul_sand"] = "mcl_core:bubble_column_source", + ["mcl_nether:magma"] = "mcl_core:whirlpool_source", +} + +minetest.register_abm({ + label = "Make whirlpools and bubble columns", + nodenames = {"mcl_nether:soul_sand", "mcl_nether:magma"}, + neighbors = {"mcl_core:water_source"}, + interval = 2, + chance = 1, + action = function(pos, node) + local pos_above = {x = pos.x, y = pos.y + 1, z = pos.z} + local above_node_name = minetest.get_node(pos_above).name + if above_node_name ~= "mcl_core:water_source" then return end + local new_above_node_name = bubble_generation_schema[node.name] + minetest.swap_node(pos_above, {name = new_above_node_name}) + end, +}) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index c7fd5b2b7..bdd2748b7 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -19,12 +19,15 @@ local playerphysics = playerphysics local vector = vector local math = math +local math_min = math.min -- Internal player state local mcl_playerplus_internal = {} local time = 0 local look_pitch = 0 +local player_pos_for_bubble_columns = {} + local function player_collision(player) local pos = player:get_pos() @@ -349,7 +352,7 @@ minetest.register_globalstep(function(dtime) set_bone_position_conditional(player,"Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) set_bone_position_conditional(player,"Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) -- controls right and left arms pitch when loading a crossbow - elseif string.find(wielded:get_name(), "mcl_bows:crossbow_") then + elseif string.find(wielded:get_name(), "mcl_bows:crossbow_") then set_bone_position_conditional(player,"Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(45,-20,25)) set_bone_position_conditional(player,"Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(55,20,-45)) -- when punching @@ -407,14 +410,15 @@ minetest.register_globalstep(function(dtime) mcl_playerplus_internal[name].jump_cooldown = mcl_playerplus_internal[name].jump_cooldown - dtime end + node_head = mcl_playerinfo[name].node_head + node_feet = mcl_playerinfo[name].node_feet + if control.jump and mcl_playerplus_internal[name].jump_cooldown <= 0 then --pos = player:get_pos() node_stand = mcl_playerinfo[name].node_stand node_stand_below = mcl_playerinfo[name].node_stand_below - node_head = mcl_playerinfo[name].node_head - node_feet = mcl_playerinfo[name].node_feet if not node_stand or not node_stand_below or not node_head or not node_feet then return end @@ -453,6 +457,48 @@ minetest.register_globalstep(function(dtime) mcl_playerplus_internal[name].jump_cooldown = 0.45 end end + + local bubble_column_feet = node_feet == "mcl_core:bubble_column_source" + if bubble_column_feet then + if not player_pos_for_bubble_columns[name] then + player_pos_for_bubble_columns[name] = fly_pos + else + local bubble_column_head = node_head == "mcl_core:bubble_column_source" + fly_pos.y = player_pos_for_bubble_columns[name].y + (bubble_column_head and time or time/10) + player:set_pos(fly_pos) + player_pos_for_bubble_columns[name] = fly_pos + end + else + local whirlpool_feet = node_feet == "mcl_core:whirlpool_source" + if whirlpool_feet then + if not player_pos_for_bubble_columns[name] then + player_pos_for_bubble_columns[name] = fly_pos + else + local whirlpool_head = node_head == "mcl_core:whirlpool_source" + local stands_on = minetest.get_node({x = fly_pos.x, y = fly_pos.y - 0.0001, z = fly_pos.z}).name + if stands_on == "mcl_nether:magma" then + fly_pos.y = math.floor(fly_pos.y) + (control.sneak and 0.51 or 0.5) + player:set_pos(fly_pos) + player_pos_for_bubble_columns[name] = fly_pos + else + fly_pos.y = player_pos_for_bubble_columns[name].y - (whirlpool_head and time/2 or time/5) + local will_stand_on = minetest.get_node({x = fly_pos.x, y = fly_pos.y - 0.0001, z = fly_pos.z}).name + if will_stand_on == "mcl_nether:magma" then + fly_pos.y = math.floor(fly_pos.y) + (control.sneak and 0.51 or 0.5) + player:set_pos(fly_pos) + player_pos_for_bubble_columns[name] = fly_pos + elseif will_stand_on == "mcl_core:whirlpool_source" then + player:set_pos(fly_pos) + player_pos_for_bubble_columns[name] = fly_pos + else + player_pos_for_bubble_columns[name] = nil + end + end + end + elseif player_pos_for_bubble_columns[name] then + player_pos_for_bubble_columns[name] = nil + end + end end -- Run the rest of the code every 0.5 seconds @@ -643,7 +689,7 @@ minetest.register_on_leaveplayer(function(player) mcl_playerplus.elytra[name] = nil end) --- Don't change HP if the player falls in the water or through End Portal: +-- Don't change HP if the player falls in the liquid or through End Portal: mcl_damage.register_modifier(function(obj, damage, reason) if reason.type == "fall" then local pos = obj:get_pos() @@ -661,7 +707,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) if not def or def.walkable then return end - if minetest.get_item_group(node.name, "water") ~= 0 then + if minetest.get_item_group(node.name, "liquid") ~= 0 then return 0 end if node.name == "mcl_portals:portal_end" then From ef08bfa5d9e3a7e1733d462d007b666b2c473a0f Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 11 Mar 2022 07:21:25 +0400 Subject: [PATCH 316/521] Spawn zombipigs in portal frames --- mods/ITEMS/mcl_portals/portal_nether.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 3f2f819c8..883f6e4fc 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -746,6 +746,13 @@ minetest.register_abm({ return end + if lower_node_name == OBSIDIAN and pos.y >= mcl_mapgen.overworld.min and random(1, 200) == 19 then + local pigman_obj = minetest.add_entity(pos, "mobs_mc:pigman") + if pigman_obj then + teleport_cooloff(pigman_obj) + end + end + local o = node.param2 -- orientation local closer_node_name = get_node({x = pos.x - 1 + o, y = pos.y, z = pos.z - o}).name From 430c3ce6369f4d042f641579dd45af5ccf2a8f82 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 12 Mar 2022 01:05:29 +0400 Subject: [PATCH 317/521] Restore killing mobs by lava --- .../mcl_mobs/api/mob_functions/ai.lua | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index 6da0d5a1a..cbbda43d5 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -801,20 +801,6 @@ function mobs.mob_step(self, dtime) return false end - - --DEBUG TIME! - --REMEMBER TO MOVE THIS AFTER DEATH CHECK - - --if self.has_head then - -- mobs.do_head_logic(self,dtime) - --end - - - - --if true then--DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG - -- return - --end - --despawn mechanism --don't despawned tamed or bred mobs if not self.tamed and not self.bred then @@ -833,7 +819,7 @@ function mobs.mob_step(self, dtime) self.object:set_texture_mod("^[colorize:red:120") --fix double death sound if self.health > 0 then - mobs.play_sound(self,"damage") + mobs.play_sound(self, "damage") end end self.old_health = self.health @@ -863,7 +849,7 @@ function mobs.mob_step(self, dtime) return end - mobs.random_sound_handling(self,dtime) + mobs.random_sound_handling(self, dtime) --mobs drowning mechanic if not self.breathes_in_water then @@ -893,14 +879,36 @@ function mobs.mob_step(self, dtime) end end + local pos = self.object:get_pos() + local node = minetest_get_node(pos).name + --water damage - if self.water_damage and self.water_damage ~= 0 then - local pos = self.object:get_pos() - local node = minetest_get_node(pos).name - if minetest_get_item_group(node, "water") ~= 0 then + if self.water_damage and self.water_damage ~= 0 and minetest_get_item_group(node, "water") ~= 0 then + self.water_counter = (self.water_counter or 0) + dtime + if self.water_counter >= 1 then mobs.smoke_effect(self) self.health = self.health - self.water_damage self:teleport() + self.water_counter = 0 + end + end + + --lava damage + local lava_damage = self.lava_damage + if lava_damage and lava_damage ~= 0 and minetest_get_item_group(node, "lava") ~= 0 then + self.lava_counter = (self.lava_counter or 0) + dtime + if self.lava_counter >= 1 then + minetest.sound_play("default_punch", { + object = self.object, + max_hear_distance = 5 + }, true) + self.object:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = self.lava_damage} + }, nil) + self.lava_counter = 0 + self.health = self.health - lava_damage + self:teleport() end end From 4b026a70e57199432b2443ea6bd0af2bd1fd2af9 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 12 Mar 2022 02:54:04 +0400 Subject: [PATCH 318/521] Slightly update contributing guidelines --- CONTRIBUTING.md | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d6c4a0b12..f142cd30e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,19 +27,35 @@ Any Pull Request that isn't a bug fix can be closed within a week unless it rece Start coding! -Refer to Minetest Lua API, Developer Wiki and other documentation. +Refer to [Minetest Lua API](https://github.com/minetest/minetest/blob/master/doc/lua_api.txt), [Developer Wiki](https://dev.minetest.net/), [MineClone 5 Wiki](https://git.minetest.land/MineClone5/MineClone5/wiki/) and other documentation. -Follow Lua code style guidelines. Use tabs, not spaces for indentation (tab size = 8). Never use `minetest.env`. +Follow [Lua code style guidelines](https://dev.minetest.net/Lua_code_style_guidelines). Use tabs, not spaces for indentation (tab size = 8). Never use `minetest.env`. Check your code works as expected. -Commit & push your changes to a new branch (not master, one change per branch) +Commit & push your changes to a new branch (not master, one change per a branch). Commit messages should use the present tense and be descriptive. Once you are happy with your changes, submit a pull request. -A pull-request is considered merge-able when: +A pull-request is considered merge-able when it looks good to one person from the community. + +Please invite other developers to review your contribution when you know they are online. If there is no any reaction during 24 hours after posting the invitation and pinging developers - you are welcome to do a self-review and merge the request. + +If someone else's contribution looks good to you - you are free to merge it ASAP. + +Different git branches are welcomed! Releases by different people are welcomed! Releases from different branches are welcomed! Frequent releases are welcomed! + +It is nice not to block other developers by your work and don't dictate them what to do, unsless they really want that. Git branches and forks are recommended to avoid conflicts at development stage. + +It is nice to try splitting big features into small steps. + +It is nice to create an issue for any work and mention the issue in the commit text, like `#123 Fix blast resistance of cactus`, where `#123` is the issue number. + +Actually, it looks like we all love what we do, so any stupid situations should be carefully discussed before merging into upstreams. But nothing prevents us from releasing controversial stuff through dedicated branches. Release your contribution when you need more feedback. + +Feel free to break the rules if you're sure you have to. #### Contributors From 429984937cbf05e7c263968c3249d700a419048f Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 13 Mar 2022 07:10:25 +0400 Subject: [PATCH 319/521] Fix several minor mob issues --- mods/ENTITIES/extra_mobs/fox.lua | 60 +- mods/ENTITIES/extra_mobs/strider.lua | 44 +- .../api/mob_functions/environment.lua | 20 - .../mcl_mobs/api/mob_functions/set_up.lua | 22 +- mods/ENTITIES/mcl_mobs/api/spawning.lua | 885 +++++++----------- mods/ENTITIES/mobs_mc/zombie.lua | 333 +++---- mods/MAPGEN/mcl_villages/init.lua | 3 +- 7 files changed, 516 insertions(+), 851 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/fox.lua b/mods/ENTITIES/extra_mobs/fox.lua index 7df04b554..10f9ca898 100644 --- a/mods/ENTITIES/extra_mobs/fox.lua +++ b/mods/ENTITIES/extra_mobs/fox.lua @@ -18,12 +18,7 @@ local S = minetest.get_translator("extra_mobs") --################### fox --################### -local followitem = "" -if minetest.get_modpath("mc_sweet_berry") then - followitem = "mc_sweet_berry:sweet_berry" -else - followitem = nil -end +local followitem = "mcl_farming:sweet_berry" local fox = { type = "monster", @@ -123,35 +118,30 @@ local fox = { mobs:register_mob("extra_mobs:fox", fox) -- spawning -mobs:spawn_specific( -"extra_mobs:fox", -"overworld", -"ground", -{ -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"ColdTaiga", -"SunflowerPlains", -"RoofedForest", -"MesaPlateauFM_grasstop", -"ExtremeHillsM", -"BirchForestM", -}, -0, -minetest.LIGHT_MAX+1, -30, -6000, -3, -mobs_mc.spawn_height.water, -mobs_mc.spawn_height.overworld_max) +mobs:spawn_setup({ + name = "extra_mobs:fox", + biomes = { + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "ColdTaiga", + "SunflowerPlains", + "RoofedForest", + "MesaPlateauFM_grasstop", + "ExtremeHillsM", + "BirchForestM", + }, + interval = 30, + chance = 6000, + min_height = mobs_mc.spawn_height.water, +}) --mobs:spawn_specific("extra_mobs:fox", "overworld", "ground", 0, minetest.LIGHT_MAX+1, 30, 6000, 3, 0, 500) --[[ diff --git a/mods/ENTITIES/extra_mobs/strider.lua b/mods/ENTITIES/extra_mobs/strider.lua index d6c854207..bc86379cd 100644 --- a/mods/ENTITIES/extra_mobs/strider.lua +++ b/mods/ENTITIES/extra_mobs/strider.lua @@ -213,20 +213,36 @@ baby_strider.child = 1 mobs:register_mob("extra_mobs:baby_strider", baby_strider) -- Regular spawning in the Nether -mobs:spawn_specific( -"extra_mobs:strider", -"nether", -"lava", -{ -"Nether" -}, -0, -minetest.LIGHT_MAX+1, -30, -6000, -3, -mobs_mc.spawn_height.nether_min, -mobs_mc.spawn_height.nether_max) + +mobs:spawn_setup({ + name = "extra_mobs:strider", + type_of_spawning = "lava", + dimension = "nether", + biomes = { + "Nether" + }, + min_height = mcl_mapgen.nether.min, + max_height = mcl_mapgen.nether.max, + chance = 2000, + check_position = function(pos) + return minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name:find("lava") + end +}) + +mobs:spawn_setup({ + name = "extra_mobs:baby_strider", + type_of_spawning = "lava", + dimension = "nether", + biomes = { + "Nether" + }, + min_height = mcl_mapgen.nether.min, + max_height = mcl_mapgen.nether.max, + chance = 100, + check_position = function(pos) + return minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name:find("lava") + end +}) -- spawn eggs mobs:register_egg("extra_mobs:strider", S("Strider"), "extra_mobs_spawn_icon_strider.png", 0) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua index c7fb073b0..22013e35e 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua @@ -211,26 +211,6 @@ mobs.teleport = function(self, target) end end ---a function used for despawning mobs -mobs.check_for_player_within_area = function(self, radius) - local pos1 = self.object:get_pos() - if not pos1 then return end - --get players in radius - for _,player in pairs(minetest_get_connected_players()) do - if player and player:get_hp() > 0 then - local pos2 = player:get_pos() - local distance = vector_distance(pos1,pos2) - if distance < radius then - --found a player - return true - end - end - end - --did not find a player - return false -end - - --a simple helper function for mobs following mobs.get_2d_distance = function(pos1,pos2) pos1.y = 0 diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua index b9cf2f669..a0467f4d2 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -5,9 +5,27 @@ local minetest_settings = minetest.settings -- CMI support check local use_cmi = minetest.global_exists("cmi") +local vector_distance = vector.distance +local minetest_get_connected_players = minetest.get_connected_players +local math_random = math.random + mobs.can_despawn = function(self) - return (not self.tamed and not self.bred and not self.nametag and - not mobs.check_for_player_within_area(self, 64)); + if self.tamed or self.bred or self.nametag then return false end + local mob_pos = self.object:get_pos() + if not mob_pos then return true end + local distance = 999 + for _, player in pairs(minetest_get_connected_players()) do + if player and player:get_hp() > 0 then + local player_pos = player:get_pos() + local new_distance = vector_distance(player_pos, mob_pos) + if new_distance < distance then + distance = new_distance + if distance < 33 then return false end + if distance < 128 and math_random(1, 200) == 19 then return true end + end + end + end + return true end -- get entity staticdata diff --git a/mods/ENTITIES/mcl_mobs/api/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua index bf07ca94d..2fcc83baf 100644 --- a/mods/ENTITIES/mcl_mobs/api/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -6,11 +6,14 @@ local find_nodes_in_area_under_air = minetest.find_nodes_in_area_under_air local get_biome_name = minetest.get_biome_name local get_objects_inside_radius = minetest.get_objects_inside_radius local get_connected_players = minetest.get_connected_players - +local minetest_get_perlin = minetest.get_perlin local math_random = math.random local math_floor = math.floor ---local max = math.max +local math_ceil = math.ceil +local math_cos = math.cos +local math_sin = math.sin +local math_round = function(x) return (x > 0) and math_floor(x + 0.5) or math_ceil(x - 0.5) end --local vector_distance = vector.distance local vector_new = vector.new @@ -22,151 +25,171 @@ local table_remove = table.remove local pairs = pairs -- range for mob count -local aoc_range = 48 +local aoc_range = 32 --do mobs spawn? local mobs_spawn = minetest.settings:get_bool("mobs_spawn", true) ~= false ---[[ -THIS IS THE BIG LIST OF ALL BIOMES - used for programming/updating mobs +local noise_params = { + offset = 0, + scale = 3, + spread = { + x = 301, + y = 50, + z = 304, + }, + seed = 100, + octaves = 3, + persistence = 0.5, +} -underground: -"FlowerForest_underground", -"JungleEdge_underground",local spawning_position = spawning_position_list[math.random(1,#spawning_position_list)] -"ColdTaiga_underground", -"IcePlains_underground", -"IcePlainsSpikes_underground", -"MegaTaiga_underground", -"Taiga_underground", -"ExtremeHills+_underground", -"JungleM_underground", -"ExtremeHillsM_underground", -"JungleEdgeM_underground", +-- THIS IS THE BIG LIST OF ALL BIOMES - used for programming/updating mobs +-- Also used for missing parameter +-- Please update the list when adding new biomes! -ocean: -"RoofedForest_ocean", -"JungleEdgeM_ocean", -"BirchForestM_ocean", -"BirchForest_ocean", -"IcePlains_deep_ocean", -"Jungle_deep_ocean", -"Savanna_ocean", -"MesaPlateauF_ocean", -"ExtremeHillsM_deep_ocean", -"Savanna_deep_ocean", -"SunflowerPlains_ocean", -"Swampland_deep_ocean", -"Swampland_ocean", -"MegaSpruceTaiga_deep_ocean", -"ExtremeHillsM_ocean", -"JungleEdgeM_deep_ocean", -"SunflowerPlains_deep_ocean", -"BirchForest_deep_ocean", -"IcePlainsSpikes_ocean", -"Mesa_ocean", -"StoneBeach_ocean", -"Plains_deep_ocean", -"JungleEdge_deep_ocean", -"SavannaM_deep_ocean", -"Desert_deep_ocean", -"Mesa_deep_ocean", -"ColdTaiga_deep_ocean", -"Plains_ocean", -"MesaPlateauFM_ocean", -"Forest_deep_ocean", -"JungleM_deep_ocean", -"FlowerForest_deep_ocean", -"MushroomIsland_ocean", -"MegaTaiga_ocean", -"StoneBeach_deep_ocean", -"IcePlainsSpikes_deep_ocean", -"ColdTaiga_ocean", -"SavannaM_ocean", -"MesaPlateauF_deep_ocean", -"MesaBryce_deep_ocean", -"ExtremeHills+_deep_ocean", -"ExtremeHills_ocean", -"MushroomIsland_deep_ocean", -"Forest_ocean", -"MegaTaiga_deep_ocean", -"JungleEdge_ocean", -"MesaBryce_ocean", -"MegaSpruceTaiga_ocean", -"ExtremeHills+_ocean", -"Jungle_ocean", -"RoofedForest_deep_ocean", -"IcePlains_ocean", -"FlowerForest_ocean", -"ExtremeHills_deep_ocean", -"MesaPlateauFM_deep_ocean", -"Desert_ocean", -"Taiga_ocean", -"BirchForestM_deep_ocean", -"Taiga_deep_ocean", -"JungleM_ocean", +local list_of_all_biomes = { -water or beach? -"MesaPlateauFM_sandlevel", -"MesaPlateauF_sandlevel", -"MesaBryce_sandlevel", -"Mesa_sandlevel", + -- underground: -beach: -"FlowerForest_beach", -"Forest_beach", -"StoneBeach", -"ColdTaiga_beach_water", -"Taiga_beach", -"Savanna_beach", -"Plains_beach", -"ExtremeHills_beach", -"ColdTaiga_beach", -"Swampland_shore", -"MushroomIslandShore", -"JungleM_shore", -"Jungle_shore", + "FlowerForest_underground", + "JungleEdge_underground", + "ColdTaiga_underground", + "IcePlains_underground", + "IcePlainsSpikes_underground", + "MegaTaiga_underground", + "Taiga_underground", + "ExtremeHills+_underground", + "JungleM_underground", + "ExtremeHillsM_underground", + "JungleEdgeM_underground", -dimension biome: -"Nether", -"End", + -- ocean: -Overworld regular: -"Mesa", -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"Jungle", -"Savanna", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"Desert", -"ColdTaiga", -"MushroomIsland", -"IcePlainsSpikes", -"SunflowerPlains", -"IcePlains", -"RoofedForest", -"ExtremeHills+_snowtop", -"MesaPlateauFM_grasstop", -"JungleEdgeM", -"ExtremeHillsM", -"JungleM", -"BirchForestM", -"MesaPlateauF", -"MesaPlateauFM", -"MesaPlateauF_grasstop", -"MesaBryce", -"JungleEdge", -"SavannaM", -]]-- + "RoofedForest_ocean", + "JungleEdgeM_ocean", + "BirchForestM_ocean", + "BirchForest_ocean", + "IcePlains_deep_ocean", + "Jungle_deep_ocean", + "Savanna_ocean", + "MesaPlateauF_ocean", + "ExtremeHillsM_deep_ocean", + "Savanna_deep_ocean", + "SunflowerPlains_ocean", + "Swampland_deep_ocean", + "Swampland_ocean", + "MegaSpruceTaiga_deep_ocean", + "ExtremeHillsM_ocean", + "JungleEdgeM_deep_ocean", + "SunflowerPlains_deep_ocean", + "BirchForest_deep_ocean", + "IcePlainsSpikes_ocean", + "Mesa_ocean", + "StoneBeach_ocean", + "Plains_deep_ocean", + "JungleEdge_deep_ocean", + "SavannaM_deep_ocean", + "Desert_deep_ocean", + "Mesa_deep_ocean", + "ColdTaiga_deep_ocean", + "Plains_ocean", + "MesaPlateauFM_ocean", + "Forest_deep_ocean", + "JungleM_deep_ocean", + "FlowerForest_deep_ocean", + "MushroomIsland_ocean", + "MegaTaiga_ocean", + "StoneBeach_deep_ocean", + "IcePlainsSpikes_deep_ocean", + "ColdTaiga_ocean", + "SavannaM_ocean", + "MesaPlateauF_deep_ocean", + "MesaBryce_deep_ocean", + "ExtremeHills+_deep_ocean", + "ExtremeHills_ocean", + "MushroomIsland_deep_ocean", + "Forest_ocean", + "MegaTaiga_deep_ocean", + "JungleEdge_ocean", + "MesaBryce_ocean", + "MegaSpruceTaiga_ocean", + "ExtremeHills+_ocean", + "Jungle_ocean", + "RoofedForest_deep_ocean", + "IcePlains_ocean", + "FlowerForest_ocean", + "ExtremeHills_deep_ocean", + "MesaPlateauFM_deep_ocean", + "Desert_ocean", + "Taiga_ocean", + "BirchForestM_deep_ocean", + "Taiga_deep_ocean", + "JungleM_ocean", + -- water or beach? + "MesaPlateauFM_sandlevel", + "MesaPlateauF_sandlevel", + "MesaBryce_sandlevel", + "Mesa_sandlevel", + + -- beach: + + "FlowerForest_beach", + "Forest_beach", + "StoneBeach", + "ColdTaiga_beach_water", + "Taiga_beach", + "Savanna_beach", + "Plains_beach", + "ExtremeHills_beach", + "ColdTaiga_beach", + "Swampland_shore", + "MushroomIslandShore", + "JungleM_shore", + "Jungle_shore", + + -- dimension biome: + + "Nether", + "End", + + -- Overworld regular: + + "Mesa", + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "Jungle", + "Savanna", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "Desert", + "ColdTaiga", + "MushroomIsland", + "IcePlainsSpikes", + "SunflowerPlains", + "IcePlains", + "RoofedForest", + "ExtremeHills+_snowtop", + "MesaPlateauFM_grasstop", + "JungleEdgeM", + "ExtremeHillsM", + "JungleM", + "BirchForestM", + "MesaPlateauF", + "MesaPlateauFM", + "MesaPlateauF_grasstop", + "MesaBryce", + "JungleEdge", + "SavannaM", +} -- count how many mobs are in an area local function count_mobs(pos) @@ -216,11 +239,74 @@ WARNING: BIOME INTEGRATION NEEDED -> How to get biome through lua?? --this is where all of the spawning information is kept local spawn_dictionary = {} +local summary_chance = 0 + +function mobs:spawn_setup(def) + if not mobs_spawn then return end + + if not def then + minetest.log("warning", "Empty mob spawn setup definition") + return + end + + local name = def.name + if not name then + minetest.log("warning", "Missing mob name") + return + end + + local dimension = def.dimension or "overworld" + local type_of_spawning = def.type_of_spawning or "ground" + local biomes = def.biomes or list_of_all_biomes + local min_light = def.min_light or 0 + local max_light = def.max_light or (minetest.LIGHT_MAX + 1) + local chance = def.chance or 1000 + local aoc = def.aoc or aoc_range + local min_height = def.min_height or mcl_mapgen.overworld.min + local max_height = def.max_height or mcl_mapgen.overworld.max + local day_toggle = def.day_toggle + local on_spawn = def.on_spawn + local check_position = def.check_position + + -- chance/spawn number override in minetest.conf for registered mob + local numbers = minetest.settings:get(name) + if numbers then + numbers = numbers:split(",") + chance = tonumber(numbers[1]) or chance + aoc = tonumber(numbers[2]) or aoc + if chance == 0 then + minetest.log("warning", string.format("[mobs] %s has spawning disabled", name)) + return + end + minetest.log("action", string.format("[mobs] Chance setting for %s changed to %s (total: %s)", name, chance, aoc)) + end + + if chance < 1 then + chance = 1 + minetest.log("warning", "Chance shouldn't be less than 1 (mob name: " .. name ..")") + end + + spawn_dictionary[#spawn_dictionary + 1] = { + name = name, + dimension = dimension, + type_of_spawning = type_of_spawning, + biomes = biomes, + min_light = min_light, + max_light = max_light, + chance = chance, + aoc = aoc, + min_height = min_height, + max_height = max_height, + day_toggle = day_toggle, + check_position = check_position, + on_spawn = on_spawn, + } + summary_chance = summary_chance + chance + minetest.log("warning", minetest.serialize(spawn_dictionary)) +end function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_light, max_light, interval, chance, aoc, min_height, max_height, day_toggle, on_spawn) - --print(dump(biomes)) - -- Do mobs spawn at all? if not mobs_spawn then return @@ -239,179 +325,7 @@ function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_ligh return end - minetest.log("action", - string.format("[mobs] Chance setting for %s changed to %s (total: %s)", name, chance, aoc)) - end - - --[[ - local function spawn_action(pos, node, active_object_count, active_object_count_wider, name) - - local orig_pos = table.copy(pos) - -- is mob actually registered? - if not mobs.spawning_mobs[name] - or not minetest.registered_entities[name] then - minetest.log("warning", "Mob spawn of "..name.." failed, unknown entity or mob is not registered for spawning!") - return - end - - -- additional custom checks for spawning mob - if mobs:spawn_abm_check(pos, node, name) == true then - minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, ABM check rejected!") - 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 -- 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 - end - - -- if toggle set to nil then ignore day/night check - if day_toggle then - - local tod = (minetest.get_timeofday() or 0) * 24000 - - if tod > 4500 and tod < 19500 then - -- daylight, but mob wants night - if day_toggle == false then - -- mob needs night - minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, mob needs light!") - return - end - else - -- night time but mob wants day - if day_toggle == true then - -- mob needs day - minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, mob needs daylight!") - return - end - end - end - - -- spawn above node - pos.y = pos.y + 1 - - -- only spawn away from player - local objs = minetest.get_objects_inside_radius(pos, 24) - - for n = 1, #objs do - - if objs[n]:is_player() then - -- player too close - minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, player too close!") - return - end - end - - -- mobs cannot spawn in protected areas when enabled - if not spawn_protected - and minetest.is_protected(pos, "") then - minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, position is protected!") - return - end - - -- are we spawning within height limits? - if pos.y > max_height - or pos.y < min_height then - minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, out of height limit!") - return - end - - -- are light levels ok? - local light = minetest.get_node_light(pos) - if not light - or light > max_light - or light < min_light then - minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, bad light!") - return - end - - -- do we have enough space to spawn mob? - local ent = minetest.registered_entities[name] - local width_x = max(1, math.ceil(ent.collisionbox[4] - ent.collisionbox[1])) - local min_x, max_x - if width_x % 2 == 0 then - max_x = math.floor(width_x/2) - min_x = -(max_x-1) - else - max_x = math.floor(width_x/2) - min_x = -max_x - end - - local width_z = max(1, math.ceil(ent.collisionbox[6] - ent.collisionbox[3])) - local min_z, max_z - if width_z % 2 == 0 then - max_z = math.floor(width_z/2) - min_z = -(max_z-1) - else - max_z = math.floor(width_z/2) - min_z = -max_z - end - - local max_y = max(0, math.ceil(ent.collisionbox[5] - ent.collisionbox[2]) - 1) - - for y = 0, max_y do - for x = min_x, max_x do - for z = min_z, max_z do - local pos2 = {x = pos.x+x, y = pos.y+y, z = pos.z+z} - if minetest.registered_nodes[node_ok(pos2).name].walkable == true then - -- inside block - minetest.log("info", "Mob spawn of "..name.." at "..minetest.pos_to_string(pos).." failed, too little space!") - if ent.spawn_small_alternative and (not minetest.registered_nodes[node_ok(pos).name].walkable) then - minetest.log("info", "Trying to spawn smaller alternative mob: "..ent.spawn_small_alternative) - spawn_action(orig_pos, node, active_object_count, active_object_count_wider, ent.spawn_small_alternative) - end - return - end - end - end - end - - -- tweak X/Y/Z spawn pos - if width_x % 2 == 0 then - pos.x = pos.x + 0.5 - end - if width_z % 2 == 0 then - pos.z = pos.z + 0.5 - end - pos.y = pos.y - 0.5 - - local mob = minetest.add_entity(pos, name) - minetest.log("action", "Mob spawned: "..name.." at "..minetest.pos_to_string(pos)) - - if on_spawn then - - local ent = mob:get_luaentity() - - on_spawn(ent, pos) - end - end - - local function spawn_abm_action(pos, node, active_object_count, active_object_count_wider) - spawn_action(pos, node, active_object_count, active_object_count_wider, name) - end - ]]-- - - local entdef = minetest.registered_entities[name] - local spawn_class - if entdef.type == "monster" then - spawn_class = "hostile" - else - spawn_class = "passive" + minetest.log("action", string.format("[mobs] Chance setting for %s changed to %s (total: %s)", name, chance, aoc)) end --load information into the spawn dictionary @@ -423,107 +337,34 @@ function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_ligh spawn_dictionary[key]["biomes"] = biomes spawn_dictionary[key]["min_light"] = min_light spawn_dictionary[key]["max_light"] = max_light - spawn_dictionary[key]["interval"] = interval spawn_dictionary[key]["chance"] = chance spawn_dictionary[key]["aoc"] = aoc spawn_dictionary[key]["min_height"] = min_height spawn_dictionary[key]["max_height"] = max_height spawn_dictionary[key]["day_toggle"] = day_toggle - --spawn_dictionary[key]["on_spawn"] = spawn_abm_action - spawn_dictionary[key]["spawn_class"] = spawn_class - --[[ - minetest.register_abm({ - label = name .. " spawning", - nodenames = nodes, - neighbors = neighbors, - interval = interval, - chance = floor(max(1, chance * mobs_spawn_chance)), - catch_up = false, - action = spawn_abm_action, - }) - ]]-- + summary_chance = summary_chance + chance end --- compatibility with older mob registration --- we're going to forget about this for now -j4i ---[[ -function mobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height, day_toggle) - - mobs:spawn_specific(name, nodes, {"air"}, min_light, max_light, 30, - chance, active_object_count, -31000, max_height, day_toggle) +local two_pi = 2 * math.pi +local function get_next_mob_spawn_pos(pos) + local distance = math_random(25, 32) + local angle = math_random() * two_pi + return { + x = math_round(pos.x + distance * math_cos(angle)), + y = pos.y, + z = math_round(pos.z + distance * math_sin(angle)) + } end -]]-- - - ---Don't disable this yet-j4i --- MarkBu's spawn function - -function mobs:spawn(def) - --does nothing for now - --[[ - local name = def.name - local nodes = def.nodes or {"group:soil", "group:stone"} - local neighbors = def.neighbors or {"air"} - local min_light = def.min_light or 0 - local max_light = def.max_light or 15 - local interval = def.interval or 30 - local chance = def.chance or 5000 - local active_object_count = def.active_object_count or 1 - local min_height = def.min_height or -31000 - local max_height = def.max_height or 31000 - local day_toggle = def.day_toggle - local on_spawn = def.on_spawn - - mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval, - chance, active_object_count, min_height, max_height, day_toggle, on_spawn) - ]]-- -end - - - -local axis ---inner and outer part of square donut radius -local inner = 15 -local outer = 64 -local int = {-1,1} - -local function position_calculation(pos) - - pos = vector_floor(pos) - - --this is used to determine the axis buffer from the player - axis = math_random(0,1) - - --cast towards the direction - if axis == 0 then --x - pos.x = pos.x + math_random(inner,outer)*int[math_random(1,2)] - pos.z = pos.z + math_random(-outer,outer) - else --z - pos.z = pos.z + math_random(inner,outer)*int[math_random(1,2)] - pos.x = pos.x + math_random(-outer,outer) - end - return pos -end - ---[[ -local decypher_limits_dictionary = { - ["overworld"] = {mcl_vars.mg_overworld_min,mcl_vars.mg_overworld_max}, - ["nether"] = {mcl_vars.mg_nether_min, mcl_vars.mg_nether_max}, - ["end"] = {mcl_vars.mg_end_min, mcl_vars.mg_end_max} -} -]]-- local function decypher_limits(posy) - --local min_max_table = decypher_limits_dictionary[dimension] - --return min_max_table[1],min_max_table[2] posy = math_floor(posy) return posy - 32, posy + 32 end --a simple helper function for mob_spawn local function biome_check(biome_list, biome_goal) - for _,data in ipairs(biome_list) do + for _, data in pairs(biome_list) do if data == biome_goal then return true end @@ -533,176 +374,102 @@ local function biome_check(biome_list, biome_goal) end ---todo mob limiting ---MAIN LOOP - if mobs_spawn then + + local perlin_noise + + local function spawn_a_mob(pos, dimension, y_min, y_max) + local dimension = dimension or mcl_worlds.pos_to_dimension(pos) + local goal_pos = get_next_mob_spawn_pos(pos) + local spawning_position_list = find_nodes_in_area_under_air( + {x = goal_pos.x, y = y_min, z = goal_pos.z}, + {x = goal_pos.x, y = y_max, z = goal_pos.z}, + {"group:solid", "group:water", "group:lava"} + ) + if #spawning_position_list <= 0 then return end + local spawning_position = spawning_position_list[math_random(1, #spawning_position_list)] + + --hard code mob limit in area to 7 for now + if count_mobs(spawning_position) >= 7 then return end + + local gotten_node = get_node(spawning_position).name + local gotten_biome = minetest.get_biome_data(spawning_position) + if not gotten_node or not gotten_biome then return end + gotten_biome = get_biome_name(gotten_biome.biome) --makes it easier to work with + + --add this so mobs don't spawn inside nodes + spawning_position.y = spawning_position.y + 1 + + --only need to poll for node light if everything else worked + local gotten_light = get_node_light(spawning_position) + + local is_water = get_item_group(gotten_node, "water") ~= 0 + local is_lava = get_item_group(gotten_node, "lava") ~= 0 + local is_ground = not (is_water or is_lava) + if not is_ground then + spawning_position.y = spawning_position.y - 1 + end + + local mob_def + + --create a disconnected clone of the spawn dictionary + --prevents memory leak + local mob_library_worker_table = table_copy(spawn_dictionary) + + --grab mob that fits into the spawning location + --randomly grab a mob, don't exclude any possibilities + perlin_noise = perlin_noise or minetest_get_perlin(noise_params) + local noise = perlin_noise:get_3d(spawning_position) + local current_summary_chance = summary_chance + while #mob_library_worker_table > 0 do + local mob_chance_offset = (math_round(noise * current_summary_chance + 12345) % current_summary_chance) + 1 + local mob_index = 1 + local mob_chance = mob_library_worker_table[mob_index].chance + local step_chance = mob_chance + while step_chance < mob_chance_offset do + mob_index = mob_index + 1 + mob_chance = mob_library_worker_table[mob_index].chance + step_chance = step_chance + mob_chance + end + local mob_def = mob_library_worker_table[mob_index] + if mob_def + and spawning_position.y >= mob_def.min_height + and spawning_position.y <= mob_def.max_height + and mob_def.dimension == dimension + and biome_check(mob_def.biomes, gotten_biome) + and gotten_light >= mob_def.min_light + and gotten_light <= mob_def.max_light + and (is_ground or mob_def.type_of_spawning ~= "ground") + and (mob_def.check_position and mob_def.check_position(spawning_position) or true) + then + --everything is correct, spawn mob + local object = minetest.add_entity(spawning_position, mob_def.name) + if object then + return mob_def.on_spawn and mob_def.on_spawn(object, pos) + end + end + current_summary_chance = current_summary_chance - mob_chance + table_remove(mob_library_worker_table, mob_index) + end + end + + + --MAIN LOOP + local timer = 0 minetest.register_globalstep(function(dtime) timer = timer + dtime - if timer >= 10 then - timer = 0 - for _,player in pairs(get_connected_players()) do - -- after this line each "break" means "continue" - local do_mob_spawning = true - repeat - --don't need to get these variables more than once - --they happen in a single server step - - local player_pos = player:get_pos() - local dimension = mcl_worlds.pos_to_dimension(player_pos) - - if dimension == "void" or dimension == "default" then - break -- ignore void and unloaded area - end - - local min, max = decypher_limits(player_pos.y) - - for i = 1, math_random(1,4) do - -- after this line each "break" means "continue" - local do_mob_algorithm = true - repeat - - local goal_pos = position_calculation(player_pos) - - local spawning_position_list = find_nodes_in_area_under_air(vector_new(goal_pos.x,min,goal_pos.z), vector_new(goal_pos.x,max,goal_pos.z), {"group:solid", "group:water", "group:lava"}) - - --couldn't find node - if #spawning_position_list <= 0 then - break - end - - local spawning_position = spawning_position_list[math_random(1,#spawning_position_list)] - - --Prevent strange behavior --- this is commented out: /too close to player --fixed with inner circle - if not spawning_position then -- or vector_distance(player_pos, spawning_position) < 15 - break - end - - --hard code mob limit in area to 5 for now - if count_mobs(spawning_position) >= 5 then - break - end - - local gotten_node = get_node(spawning_position).name - - if not gotten_node or gotten_node == "air" then --skip air nodes - break - end - - local gotten_biome = minetest.get_biome_data(spawning_position) - - if not gotten_biome then - break --skip if in unloaded area - end - - gotten_biome = get_biome_name(gotten_biome.biome) --makes it easier to work with - - --add this so mobs don't spawn inside nodes - spawning_position.y = spawning_position.y + 1 - - --only need to poll for node light if everything else worked - local gotten_light = get_node_light(spawning_position) - - local is_water = get_item_group(gotten_node, "water") ~= 0 - local is_lava = get_item_group(gotten_node, "lava") ~= 0 - - local mob_def = nil - - --create a disconnected clone of the spawn dictionary - --prevents memory leak - local mob_library_worker_table = table_copy(spawn_dictionary) - - --grab mob that fits into the spawning location - --randomly grab a mob, don't exclude any possibilities - local repeat_mob_search = true - repeat - - --do not infinite loop - if #mob_library_worker_table <= 0 then - --print("breaking infinite loop") - break - end - - local skip = false - - --use this for removing table elements of mobs that do not match - local temp_index = math_random(1,#mob_library_worker_table) - - local temp_def = mob_library_worker_table[temp_index] - - --skip if something ridiculous happens (nil mob def) - --something truly horrible has happened if skip gets - --activated at this point - if not temp_def then - skip = true - end - - if not skip and (spawning_position.y < temp_def.min_height or spawning_position.y > temp_def.max_height) then - skip = true - end - - --skip if not correct dimension - if not skip and (temp_def.dimension ~= dimension) then - skip = true - end - - --skip if not in correct biome - if not skip and (not biome_check(temp_def.biomes, gotten_biome)) then - skip = true - end - - --don't spawn if not in light limits - if not skip and (gotten_light < temp_def.min_light or gotten_light > temp_def.max_light) then - skip = true - end - - --skip if not in correct spawning type - if not skip and (temp_def.type_of_spawning == "ground" and is_water) then - skip = true - end - - if not skip and (temp_def.type_of_spawning == "ground" and is_lava) then - skip = true - end - - --found a mob, exit out of loop - if not skip then - --minetest.log("warning", "found mob:"..temp_def.name) - --print("found mob:"..temp_def.name) - mob_def = table_copy(temp_def) - break - else - --minetest.log("warning", "deleting temp index "..temp_index) - --print("deleting temp index") - table_remove(mob_library_worker_table, temp_index) - end - - until repeat_mob_search == false --this is needed to sort through mobs randomly - - - --catch if went through all mobs and something went horribly wrong - --could not find a valid mob to spawn that fits the environment - if not mob_def then - break - end - - --adjust the position for water and lava mobs - if mob_def.type_of_spawning == "water" or mob_def.type_of_spawning == "lava" then - spawning_position.y = spawning_position.y - 1 - end - - --print("spawning: " .. mob_def.name) - - --everything is correct, spawn mob - minetest.add_entity(spawning_position, mob_def.name) - - break - until do_mob_algorithm == false --this is a safety catch - end - - break - until do_mob_spawning == false --this is a performance catch + if timer < 10 then return end + timer = 0 + for _, player in pairs(get_connected_players()) do + local pos = player:get_pos() + local dimension = mcl_worlds.pos_to_dimension(pos) + -- ignore void and unloaded area + if dimension ~= "void" and dimension ~= "default" then + local y_min, y_max = decypher_limits(pos.y) + for i = 1, math_random(1, 4) do + spawn_a_mob(pos, dimension, y_min, y_max) + end end end end) diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index e1247d8bd..3eb0122a7 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -9,6 +9,95 @@ local S = minetest.get_translator(minetest.get_current_modname()) --################### ZOMBIE --################### +local husk_biomes = { + "Desert", + "SavannaM", + "Savanna", + "Savanna_beach", +} + +local zombie_biomes = { + "FlowerForest_underground", + "JungleEdge_underground", + "StoneBeach_underground", + "MesaBryce_underground", + "Mesa_underground", + "RoofedForest_underground", + "Jungle_underground", + "Swampland_underground", + "MushroomIsland_underground", + "BirchForest_underground", + "Plains_underground", + "MesaPlateauF_underground", + "ExtremeHills_underground", + "MegaSpruceTaiga_underground", + "BirchForestM_underground", + "SavannaM_underground", + "MesaPlateauFM_underground", + "Desert_underground", + "Savanna_underground", + "Forest_underground", + "SunflowerPlains_underground", + "ColdTaiga_underground", + "IcePlains_underground", + "IcePlainsSpikes_underground", + "MegaTaiga_underground", + "Taiga_underground", + "ExtremeHills+_underground", + "JungleM_underground", + "ExtremeHillsM_underground", + "JungleEdgeM_underground", + "Mesa", + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "Jungle", + "Savanna", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "Desert", + "ColdTaiga", + "MushroomIsland", + "IcePlainsSpikes", + "SunflowerPlains", + "IcePlains", + "RoofedForest", + "ExtremeHills+_snowtop", + "MesaPlateauFM_grasstop", + "JungleEdgeM", + "ExtremeHillsM", + "JungleM", + "BirchForestM", + "MesaPlateauF", + "MesaPlateauFM", + "MesaPlateauF_grasstop", + "MesaBryce", + "JungleEdge", + "SavannaM", + "FlowerForest_beach", + "Forest_beach", + "StoneBeach", + "ColdTaiga_beach_water", + "Taiga_beach", + "Savanna_beach", + "Plains_beach", + "ExtremeHills_beach", + "ColdTaiga_beach", + "Swampland_shore", + "MushroomIslandShore", + "JungleM_shore", + "Jungle_shore", + "MesaPlateauFM_sandlevel", + "MesaPlateauF_sandlevel", + "MesaBryce_sandlevel", + "Mesa_sandlevel", +} + local drops_common = { {name = mobs_mc.items.rotten_flesh, chance = 1, @@ -166,230 +255,36 @@ baby_husk.child = 1 mobs:register_mob("mobs_mc:baby_husk", baby_husk) - -- Spawning -mobs:spawn_specific( -"mobs_mc:zombie", -"overworld", -"ground", -{ -"FlowerForest_underground", -"JungleEdge_underground", -"StoneBeach_underground", -"MesaBryce_underground", -"Mesa_underground", -"RoofedForest_underground", -"Jungle_underground", -"Swampland_underground", -"MushroomIsland_underground", -"BirchForest_underground", -"Plains_underground", -"MesaPlateauF_underground", -"ExtremeHills_underground", -"MegaSpruceTaiga_underground", -"BirchForestM_underground", -"SavannaM_underground", -"MesaPlateauFM_underground", -"Desert_underground", -"Savanna_underground", -"Forest_underground", -"SunflowerPlains_underground", -"ColdTaiga_underground", -"IcePlains_underground", -"IcePlainsSpikes_underground", -"MegaTaiga_underground", -"Taiga_underground", -"ExtremeHills+_underground", -"JungleM_underground", -"ExtremeHillsM_underground", -"JungleEdgeM_underground", -"Mesa", -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"Jungle", -"Savanna", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"Desert", -"ColdTaiga", -"MushroomIsland", -"IcePlainsSpikes", -"SunflowerPlains", -"IcePlains", -"RoofedForest", -"ExtremeHills+_snowtop", -"MesaPlateauFM_grasstop", -"JungleEdgeM", -"ExtremeHillsM", -"JungleM", -"BirchForestM", -"MesaPlateauF", -"MesaPlateauFM", -"MesaPlateauF_grasstop", -"MesaBryce", -"JungleEdge", -"SavannaM", -"FlowerForest_beach", -"Forest_beach", -"StoneBeach", -"ColdTaiga_beach_water", -"Taiga_beach", -"Savanna_beach", -"Plains_beach", -"ExtremeHills_beach", -"ColdTaiga_beach", -"Swampland_shore", -"MushroomIslandShore", -"JungleM_shore", -"Jungle_shore", -"MesaPlateauFM_sandlevel", -"MesaPlateauF_sandlevel", -"MesaBryce_sandlevel", -"Mesa_sandlevel", -}, -0, -7, -30, -6000, -4, -mobs_mc.spawn_height.overworld_min, -mobs_mc.spawn_height.overworld_max) +mobs:spawn_setup({ + name = "mobs_mc:zombie", + biomes = zombie_biomes, + max_light = 7, + chance = 2000, +}) + -- Baby zombie is 20 times less likely than regular zombies -mobs:spawn_specific( -"mobs_mc:baby_zombie", -"overworld", -"ground", -{ -"FlowerForest_underground", -"JungleEdge_underground", -"StoneBeach_underground", -"MesaBryce_underground", -"Mesa_underground", -"RoofedForest_underground", -"Jungle_underground", -"Swampland_underground", -"MushroomIsland_underground", -"BirchForest_underground", -"Plains_underground", -"MesaPlateauF_underground", -"ExtremeHills_underground", -"MegaSpruceTaiga_underground", -"BirchForestM_underground", -"SavannaM_underground", -"MesaPlateauFM_underground", -"Desert_underground", -"Savanna_underground", -"Forest_underground", -"SunflowerPlains_underground", -"ColdTaiga_underground", -"IcePlains_underground", -"IcePlainsSpikes_underground", -"MegaTaiga_underground", -"Taiga_underground", -"ExtremeHills+_underground", -"JungleM_underground", -"ExtremeHillsM_underground", -"JungleEdgeM_underground", -"Mesa", -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"Jungle", -"Savanna", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"Desert", -"ColdTaiga", -"MushroomIsland", -"IcePlainsSpikes", -"SunflowerPlains", -"IcePlains", -"RoofedForest", -"ExtremeHills+_snowtop", -"MesaPlateauFM_grasstop", -"JungleEdgeM", -"ExtremeHillsM", -"JungleM", -"BirchForestM", -"MesaPlateauF", -"MesaPlateauFM", -"MesaPlateauF_grasstop", -"MesaBryce", -"JungleEdge", -"SavannaM", -"FlowerForest_beach", -"Forest_beach", -"StoneBeach", -"ColdTaiga_beach_water", -"Taiga_beach", -"Savanna_beach", -"Plains_beach", -"ExtremeHills_beach", -"ColdTaiga_beach", -"Swampland_shore", -"MushroomIslandShore", -"JungleM_shore", -"Jungle_shore", -"MesaPlateauFM_sandlevel", -"MesaPlateauF_sandlevel", -"MesaBryce_sandlevel", -"Mesa_sandlevel", -}, -0, -7, -30, -60000, -4, -mobs_mc.spawn_height.overworld_min, -mobs_mc.spawn_height.overworld_max) +mobs:spawn_setup({ + name = "mobs_mc:baby_zombie", + biomes = zombie_biomes, + max_lignt = 7, + chance = 100, +}) +mobs:spawn_setup({ + name = "mobs_mc:husk", + biomes = husk_biomes, + max_light = 7, + chance = 2000, +}) -mobs:spawn_specific( -"mobs_mc:husk", -"overworld", -"ground", -{ -"Desert", -"SavannaM", -"Savanna", -"Savanna_beach", -}, -0, -7, -30, -6500, -4, -mobs_mc.spawn_height.overworld_min, -mobs_mc.spawn_height.overworld_max) -mobs:spawn_specific( -"mobs_mc:baby_husk", -"overworld", -"ground", -{ -"Desert", -"SavannaM", -"Savanna", -"Savanna_beach", -}, -0, -7, -30, -65000, -4, -mobs_mc.spawn_height.overworld_min, -mobs_mc.spawn_height.overworld_max) +mobs:spawn_setup({ + name = "mobs_mc:baby_husk", + biomes = husk_biomes, + max_light = 7, + chance = 100, +}) -- Spawn eggs mobs:register_egg("mobs_mc:husk", S("Husk"), "mobs_mc_spawn_icon_husk.png", 0) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index e837ab027..37052a9b6 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -436,8 +436,7 @@ local function build_a_village(minp, maxp, pr, placer) end -- Disable natural generation in singlenode. -if mg_name ~= "singlenode" then - local mg_name = minetest.get_mapgen_setting("mg_name") +if not mcl_mapgen.singlenode then local scan_last_node = mcl_mapgen.LAST_BLOCK * mcl_mapgen.BS - 1 local scan_offset = mcl_mapgen.BS mcl_mapgen.register_mapgen(function(minp, maxp, chunkseed) From 60693b2d01e1d2a2aad3542302a5582fc51d380a Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 13 Mar 2022 07:25:02 +0400 Subject: [PATCH 320/521] #249 Switch whirlpools/bubble columns directly --- mods/ITEMS/mcl_core/nodes_liquid.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 75314cf9f..47913be71 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -388,6 +388,12 @@ end ["mcl_core:whirlpool_source"] = -BUBBLE_COLUMN_SPEED, ["mcl_core:bubble_column_source"] = BUBBLE_COLUMN_SPEED, } + local bubble_source_fast_switch_from_to = { + ["mcl_nether:soul_sand"] = "mcl_core:bubble_column_source", + ["mcl_core:bubble_column_source"] = "mcl_core:bubble_column_source", + ["mcl_nether:magma"] = "mcl_core:whirlpool_source", + ["mcl_core:whirlpool_source"] = "mcl_core:whirlpool_source", + } minetest.register_abm({ label = "Process bubble columns and whirlpools", nodenames = {"mcl_core:whirlpool_source", "mcl_core:bubble_column_source"}, @@ -399,7 +405,7 @@ end local check = nether_node_to_check[name] local below = minetest.get_node({x = x, y = y - 1, z = z}).name if below ~= name and below ~= check then - minetest.swap_node(pos, {name = "mcl_core:water_source"}) + minetest.swap_node(pos, {name = bubble_source_fast_switch_from_to[below] or "mcl_core:water_source"}) return end local upper_pos = {x = x, y = y + 1, z = z} From 7ad310a848bfbfb78f62735502e6f8f2b13d113d Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 13 Mar 2022 07:34:54 +0400 Subject: [PATCH 321/521] #249 Reduce client-side player speed smoothly in bubbles --- mods/PLAYER/mcl_playerplus/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index bdd2748b7..825bd0c3b 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -2,7 +2,6 @@ mcl_playerplus = { elytra = {}, } -local player_velocity_old = {x=0, y=0, z=0} local get_connected_players = minetest.get_connected_players local dir_to_yaw = minetest.dir_to_yaw local get_item_group = minetest.get_item_group @@ -336,9 +335,6 @@ minetest.register_globalstep(function(dtime) set_bone_position_conditional(player,"Wield_Item", vector.new(-1.5,4.9,1.8), vector.new(135,0,90)) end - player_velocity_old = player:get_velocity() or player:get_player_velocity() - - -- controls right and left arms pitch when shooting a bow or blocking if mcl_shields.is_blocking(player) == 2 then set_bone_position_conditional(player, "Arm_Right_Pitch_Control", vector.new(-3, 5.785, 0), vector.new(20, -20, 0)) @@ -466,6 +462,7 @@ minetest.register_globalstep(function(dtime) local bubble_column_head = node_head == "mcl_core:bubble_column_source" fly_pos.y = player_pos_for_bubble_columns[name].y + (bubble_column_head and time or time/10) player:set_pos(fly_pos) + player:add_velocity({x = 0, y = -player_velocity.y / 2, z = 0}) player_pos_for_bubble_columns[name] = fly_pos end else @@ -479,6 +476,7 @@ minetest.register_globalstep(function(dtime) if stands_on == "mcl_nether:magma" then fly_pos.y = math.floor(fly_pos.y) + (control.sneak and 0.51 or 0.5) player:set_pos(fly_pos) + player:add_velocity({x = 0, y = -player_velocity.y / 2, z = 0}) player_pos_for_bubble_columns[name] = fly_pos else fly_pos.y = player_pos_for_bubble_columns[name].y - (whirlpool_head and time/2 or time/5) @@ -486,9 +484,11 @@ minetest.register_globalstep(function(dtime) if will_stand_on == "mcl_nether:magma" then fly_pos.y = math.floor(fly_pos.y) + (control.sneak and 0.51 or 0.5) player:set_pos(fly_pos) + player:add_velocity({x = 0, y = -player_velocity.y / 2, z = 0}) player_pos_for_bubble_columns[name] = fly_pos elseif will_stand_on == "mcl_core:whirlpool_source" then player:set_pos(fly_pos) + player:add_velocity({x = 0, y = -player_velocity.y / 2, z = 0}) player_pos_for_bubble_columns[name] = fly_pos else player_pos_for_bubble_columns[name] = nil From 21f7738b4db922af48ea6947164d919bc1c2379c Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 13 Mar 2022 08:34:12 +0400 Subject: [PATCH 322/521] Fix mob despawn --- mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua | 12 ++++++++---- mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index cbbda43d5..ab91a0542 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -902,10 +902,14 @@ function mobs.mob_step(self, dtime) object = self.object, max_hear_distance = 5 }, true) - self.object:punch(self.object, 1.0, { - full_punch_interval = 1.0, - damage_groups = {fleshy = self.lava_damage} - }, nil) +--[[ if not mcl_burning.is_burning(self.object) then + mcl_burning.set_on_fire(self.object, 1.1) + else +]] self.object:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = self.lava_damage} + }, nil) +-- end self.lava_counter = 0 self.health = self.health - lava_damage self:teleport() diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua index a0467f4d2..454794dda 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -21,7 +21,7 @@ mobs.can_despawn = function(self) if new_distance < distance then distance = new_distance if distance < 33 then return false end - if distance < 128 and math_random(1, 200) == 19 then return true end + if distance < 128 and math_random(1, 42) ~= 11 then return false end end end end From c5b9313428d75289b6cca6b7002b38192dbc0aef Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 13 Mar 2022 16:45:24 +0400 Subject: [PATCH 323/521] Make silverfishes attack --- mods/ENTITIES/mobs_mc/silverfish.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index ac3991ad1..44b804fe0 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -2,6 +2,8 @@ --################### SILVERFISH --################### +local PLAYER_SCAN_RADIUS = 5 + local S = minetest.get_translator(minetest.get_current_modname()) mobs:register_mob("mobs_mc:silverfish", { @@ -46,6 +48,20 @@ mobs:register_mob("mobs_mc:silverfish", { view_range = 16, attack_type = "punch", damage = 1, + do_custom = function(self, dtime) + self.do_custom_time = (self.do_custom_time or 0) + dtime + if self.do_custom_time < 1.5 then return end + self.do_custom_time = 0 + local selfpos = self.object:get_pos() + local objects = minetest.get_objects_inside_radius(selfpos, PLAYER_SCAN_RADIUS) + for _, obj in pairs(objects) do + if obj:is_player() then + self.attacking = obj + mobs.group_attack_initialization(self) + return + end + end + end }) mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "mobs_mc_spawn_icon_silverfish.png", 0) From a637e4bdafb3d7158f82fd95ceb6aabf0757fb94 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 13 Mar 2022 16:50:09 +0400 Subject: [PATCH 324/521] Restore mob spawn limit of 5 per area --- mods/ENTITIES/mcl_mobs/api/spawning.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua index 2fcc83baf..d88d35b25 100644 --- a/mods/ENTITIES/mcl_mobs/api/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -389,8 +389,8 @@ if mobs_spawn then if #spawning_position_list <= 0 then return end local spawning_position = spawning_position_list[math_random(1, #spawning_position_list)] - --hard code mob limit in area to 7 for now - if count_mobs(spawning_position) >= 7 then return end + --hard code mob limit in area to 5 for now + if count_mobs(spawning_position) >= 5 then return end local gotten_node = get_node(spawning_position).name local gotten_biome = minetest.get_biome_data(spawning_position) From 89cbc1deedf203f6f72dd514f12a5d2ac2fd235f Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 13 Mar 2022 17:42:58 +0400 Subject: [PATCH 325/521] Fix crash in mcl_bows/rocket.lua:41 --- mods/ITEMS/mcl_bows/rocket.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_bows/rocket.lua b/mods/ITEMS/mcl_bows/rocket.lua index 678aba4d4..c6f6351a4 100644 --- a/mods/ITEMS/mcl_bows/rocket.lua +++ b/mods/ITEMS/mcl_bows/rocket.lua @@ -38,11 +38,14 @@ local function damage_explosion(self, damagemulitplier) for _,obj in pairs(objects) do if obj:is_player() then mcl_util.deal_damage(obj, damagemulitplier - vector.distance(self.object:get_pos(), obj:get_pos()), {type = "explosion"}) - elseif obj:get_luaentity()._cmi_is_mob then - obj:punch(self.object, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=damagemulitplier - vector.distance(self.object:get_pos(), obj:get_pos())}, - }, self.object:get_velocity()) + else + local entity = obj:get_luaentity() + if entity and entity._cmi_is_mob then + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=damagemulitplier - vector.distance(self.object:get_pos(), obj:get_pos())}, + }, self.object:get_velocity()) + end end end end From ba5474f5d4dd30cd400db360d0ba0e262f3a3b3c Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 11 Mar 2022 16:51:53 +0100 Subject: [PATCH 326/521] limit redstone distance by checking for players This should probably be implemented by having redstone signals lose strength like in mc. This just prevents redstone action further than 40 nodes from each player. --- mods/ITEMS/REDSTONE/mesecons/util.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mesecons/util.lua b/mods/ITEMS/REDSTONE/mesecons/util.lua index b6602526a..498c446cb 100644 --- a/mods/ITEMS/REDSTONE/mesecons/util.lua +++ b/mods/ITEMS/REDSTONE/mesecons/util.lua @@ -346,8 +346,16 @@ function mesecon.vm_abort() vm_cache = nil end +local function is_player_close(pos) + for k,p in pairs(minetest.get_connected_players()) do + local d=vector.distance(pos,p:get_pos()) + if d < 40 then return true end + end +end + -- Gets the cache entry covering a position, populating it if necessary. local function vm_get_or_create_entry(pos) + if not is_player_close(pos) then return end local hash = hash_blockpos(pos) local tbl = vm_cache[hash] if not tbl then @@ -364,6 +372,7 @@ end -- transaction. function mesecon.vm_get_node(pos) local tbl = vm_get_or_create_entry(pos) + if not tbl then return end local index = tbl.va:indexp(pos) local node_value = tbl.data[index] if node_value == minetest.CONTENT_IGNORE then @@ -380,6 +389,7 @@ end -- Existing param1, param2, and metadata are left alone. function mesecon.vm_swap_node(pos, name) local tbl = vm_get_or_create_entry(pos) + if not tbl then return end local index = tbl.va:indexp(pos) tbl.data[index] = minetest.get_content_id(name) tbl.dirty = true @@ -393,6 +403,7 @@ end -- -- Inside a VM transaction, the transaction’s VM cache is used. function mesecon.get_node_force(pos) + if not is_player_close(pos) then return end if vm_cache then return mesecon.vm_get_node(pos) else @@ -424,6 +435,7 @@ function mesecon.swap_node_force(pos, name) -- This serves to both ensure the mapblock is loaded and also hand us -- the old node table so we can preserve param2. local node = mesecon.get_node_force(pos) + if not node then return end node.name = name minetest.swap_node(pos, node) end From 37ff5f15bd57b6128f8216c39ff92d5658927e04 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Mar 2022 02:59:21 +0400 Subject: [PATCH 327/521] #252 Fix review issues --- mods/ENTITIES/mcl_mobs/api/spawning.lua | 1 - mods/ENTITIES/mobs_mc/silverfish.lua | 2 +- mods/ITEMS/mcl_chests/init.lua | 102 ++++++++++++------------ mods/ITEMS/mcl_mushroom/init.lua | 8 +- mods/MAPGEN/mcl_debrisgen/init.lua | 16 ++-- mods/MAPGEN/mcl_structures/init.lua | 6 +- 6 files changed, 68 insertions(+), 67 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua index d88d35b25..424989426 100644 --- a/mods/ENTITIES/mcl_mobs/api/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -302,7 +302,6 @@ function mobs:spawn_setup(def) on_spawn = on_spawn, } summary_chance = summary_chance + chance - minetest.log("warning", minetest.serialize(spawn_dictionary)) end function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_light, max_light, interval, chance, aoc, min_height, max_height, day_toggle, on_spawn) diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index 44b804fe0..70f358fb2 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -55,7 +55,7 @@ mobs:register_mob("mobs_mc:silverfish", { local selfpos = self.object:get_pos() local objects = minetest.get_objects_inside_radius(selfpos, PLAYER_SCAN_RADIUS) for _, obj in pairs(objects) do - if obj:is_player() then + if obj:is_player() and not minetest.is_creative_enabled(obj:get_player_name()) then self.attacking = obj mobs.group_attack_initialization(self) return diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 8b344d462..2ad6518a7 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -248,6 +248,51 @@ local function player_chest_close(player) open_chests[name] = nil end +local function drop_item_stack(pos, stack) + if not stack or stack:is_empty() then return end + local drop_offset = vector.new(math.random() - 0.5, 0, math.random() - 0.5) + minetest.add_item(vector.add(pos, drop_offset), stack) +end + +local function drop_items_chest(pos, oldnode, oldmetadata, digger) + if oldmetadata and oldmetadata.inventory then + -- process after_dig_node callback + local main = oldmetadata.inventory.main + if not main then return end + for _, stack in pairs(main) do + drop_item_stack(pos, stack) + end + else + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for i = 1, inv:get_size("main") do + drop_item_stack(pos, inv:get_stack("main", i)) + end + meta:from_table() + end +end + +local function on_chest_blast(pos, intensity) + local node = minetest.get_node(pos) + drop_items_chest(pos, node) + minetest.remove_node(pos) + -- drop node itself with some probability depended on explosion intensity (1 for TNT): + if math.random(1, math.floor((intensity or 1) * 2)) ~= 1 then return end + local node_def = minetest.registered_nodes[node.name] + if not node_def then return end + local node_name = node_def.drop or node_def.name + drop_item_stack(pos, ItemStack(node_name)) +end + +local function close_forms(canonical_basename, pos) + local players = minetest.get_connected_players() + for p=1, #players do + if vector.distance(players[p]:get_pos(), pos) <= 30 then + minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) + end + end +end + -- This is a helper function to register both chests and trapped chests. Trapped chests will make use of the additional parameters local function register_chest(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 @@ -295,42 +340,6 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile end end - local function drop_item_stack(pos, stack) - if not stack or stack:is_empty() then return end - local drop_offset = vector.new(math.random() - 0.5, 0, math.random() - 0.5) - minetest.add_item(vector.add(pos, drop_offset), stack) - end - - local function drop_items_chest(pos, oldnode, oldmetadata, digger) - if oldmetadata and oldmetadata.inventory then - -- process after_dig_node callback - local main = oldmetadata.inventory.main - if not main then return end - for _, stack in pairs(main) do - drop_item_stack(pos, stack) - end - else - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - for i = 1, inv:get_size("main") do - drop_item_stack(pos, inv:get_stack("main", i)) - end - meta:from_table() - end - end - - local function on_chest_blast(pos, intensity) - local node = minetest.get_node(pos) - drop_items_chest(pos, node) - minetest.remove_node(pos) - -- drop node itself with some probability depended on explosion intensity (1 for TNT): - if math.random(1, math.floor((intensity or 1) * 2)) ~= 1 then return end - local node_def = minetest.registered_nodes[node.name] - if not node_def then return end - local node_name = node_def.drop or node_def.name - drop_item_stack(pos, ItemStack(node_name)) - end - local function limit_put_list(stack, list) for _, other in ipairs(list) do stack = other:add_item(stack) @@ -380,15 +389,6 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile end, }) - local function close_forms(canonical_basename, pos) - local players = minetest.get_connected_players() - for p=1, #players do - if vector.distance(players[p]:get_pos(), pos) <= 30 then - minetest.close_formspec(players[p]:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z) - end - end - end - minetest.register_node(small_name, { description = desc, _tt_help = tt_help, @@ -1476,9 +1476,11 @@ minetest.register_node("mcl_chests:barrel", { minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name")) end, after_dig_node = drop_items_chest, - on_blast = on_blast, + on_blast = on_chest_blast, on_rightclick = barrel_open, - on_destruct = close_forms, + on_destruct = function(pos) + close_forms("barrel", pos) + end, _mcl_blast_resistance = 2.5, _mcl_hardness = 2.5, }) @@ -1497,9 +1499,11 @@ minetest.register_node("mcl_chests:barrel_open", { sounds = mcl_sounds.node_sound_wood_defaults(), groups = {handy = 1, axey = 1, container = 2, material_wood = 1, flammable = -1, deco_block = 1, not_in_creative_inventory = 1}, after_dig_node = drop_items_chest, - on_blast = on_blast, + on_blast = on_chest_blast, on_rightclick = barrel_open, - on_destruct = close_forms, + on_destruct = function(pos) + close_forms("barrel_open", pos) + end, _mcl_blast_resistance = 2.5, _mcl_hardness = 2.5, }) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index c5243c88a..a1a2f45c2 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -470,8 +470,8 @@ minetest.register_abm({ }) function generate_warped_tree(pos) - breakgrow = false - breakgrow2 = false + local breakgrow = false + local breakgrow2 = false -- Baumgenerator -- erste und zweite Etage for x = pos.x - 2,pos.x + 2 do @@ -547,8 +547,8 @@ function generate_warped_tree(pos) end function generate_crimson_tree(pos) - breakgrow = false - breakgrow2 = false + local breakgrow = false + local breakgrow2 = false -- Baumgenerator -- erste und zweite Etage for x = pos.x - 2,pos.x + 2 do diff --git a/mods/MAPGEN/mcl_debrisgen/init.lua b/mods/MAPGEN/mcl_debrisgen/init.lua index b2b630626..9d177cdbc 100644 --- a/mods/MAPGEN/mcl_debrisgen/init.lua +++ b/mods/MAPGEN/mcl_debrisgen/init.lua @@ -17,16 +17,14 @@ mcl_mapgen.register_mapgen_block(function(minp, maxp) local nodes = minetest_find_nodes_in_area(minp, maxp, debris_name) if nodes then for _, pos in pairs(nodes) do - minetest.log("warning","debris found at "..minetest.pos_to_string(pos)) local x, y, z = pos.x, pos.y, pos.z - if minetest_get_node({x = x-1, y = y, z = z}) == air_name - or minetest_get_node({x = x+1, y = y, z = z}) == air_name - or minetest_get_node({x = x, y = y-1, z = z}) == air_name - or minetest_get_node({x = x, y = y+1, z = z}) == air_name - or minetest_get_node({x = x, y = y, z = z-1}) == air_name - or minetest_get_node({x = x, y = y, z = z+1}) == air_name then - minetest_set_node(pos, netherrack_name) - minetest.log("warning","debris at "..minetest.pos_to_string(pos) .. " replaced to netherrack") + if minetest_get_node({x = x-1, y = y, z = z}).name == air_name + or minetest_get_node({x = x+1, y = y, z = z}).name == air_name + or minetest_get_node({x = x, y = y-1, z = z}).name == air_name + or minetest_get_node({x = x, y = y+1, z = z}).name == air_name + or minetest_get_node({x = x, y = y, z = z-1}).name == air_name + or minetest_get_node({x = x, y = y, z = z+1}).name == air_name then + minetest_set_node(pos, {name = netherrack_name}) end end end diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 83646179b..c99970813 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -289,9 +289,9 @@ function mcl_structures.place_schematic(def) pos = vector.new(pos), schematic = loaded_schematic, rotation = rotation, - replacements = replacements, - force_placement = force_placement, - flags = flags, + replacements = def.replacements, + force_placement = def.force_placement, + flags = def.flags, size = vector.new(size), pr = pr, on_placed = on_placed, From 6d27d5b5afa8a1280d4340d6d99801f7b6795709 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Mar 2022 03:05:32 +0400 Subject: [PATCH 328/521] #252 Reduce zombipigs spawn in portal frames rate --- mods/ITEMS/mcl_portals/portal_nether.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 883f6e4fc..7390bbb2f 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -746,7 +746,7 @@ minetest.register_abm({ return end - if lower_node_name == OBSIDIAN and pos.y >= mcl_mapgen.overworld.min and random(1, 200) == 19 then + if lower_node_name == OBSIDIAN and pos.y >= mcl_mapgen.overworld.min and random(1, 750) == 19 then local pigman_obj = minetest.add_entity(pos, "mobs_mc:pigman") if pigman_obj then teleport_cooloff(pigman_obj) From 2ea71e936776a2fa5941d4203e71dc3582c7741f Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Mar 2022 04:07:11 +0400 Subject: [PATCH 329/521] #249 Trace bubble column lift --- mods/PLAYER/mcl_playerplus/init.lua | 46 ++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 825bd0c3b..84a78baf8 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -456,14 +456,46 @@ minetest.register_globalstep(function(dtime) local bubble_column_feet = node_feet == "mcl_core:bubble_column_source" if bubble_column_feet then - if not player_pos_for_bubble_columns[name] then - player_pos_for_bubble_columns[name] = fly_pos + local bubble_column_head = node_head == "mcl_core:bubble_column_source" + if bubble_column_head then + if not player_pos_for_bubble_columns[name] then + player_pos_for_bubble_columns[name] = fly_pos + else + local head_alt_1 = fly_pos.y + 1.5 + local head_alt_2 = head_alt_1 + time + while head_alt_1 < head_alt_2 do + local next_alt = math.min(head_alt_1 + 1, head_alt_2) + local next_node_head = minetest.get_node({x = fly_pos.x, y = next_alt, z = fly_pos.z}).name + if next_node_head == "mcl_core:bubble_column_source" then + head_alt_1 = next_alt + else + local ndef = minetest.registered_nodes[next_node_head] + if (ndef.walkable == nil or ndef.walkable == true) + and (ndef.collision_box == nil or ndef.collision_box.type == "regular") + and (ndef.node_box == nil or ndef.node_box.type == "regular") + and (ndef.groups.disable_suffocation ~= 1) + and (ndef.groups.opaque == 1) + then + break + else + head_alt_1 = next_alt + break + end + end + end + local new_alt = head_alt_1 - 1.5 + local delta_y = new_alt - fly_pos.y + if delta_y > 0 then + fly_pos.y = new_alt + player:set_pos(fly_pos) + player:add_velocity({x = 0, y = -player_velocity.y / 3, z = 0}) + player_pos_for_bubble_columns[name] = fly_pos + else + player_pos_for_bubble_columns[name] = nil + end + end else - local bubble_column_head = node_head == "mcl_core:bubble_column_source" - fly_pos.y = player_pos_for_bubble_columns[name].y + (bubble_column_head and time or time/10) - player:set_pos(fly_pos) - player:add_velocity({x = 0, y = -player_velocity.y / 2, z = 0}) - player_pos_for_bubble_columns[name] = fly_pos + player_pos_for_bubble_columns[name] = nil end else local whirlpool_feet = node_feet == "mcl_core:whirlpool_source" From a392d59cab2dfef3e6e1f9da3b7c7b771981005d Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Mar 2022 04:16:35 +0400 Subject: [PATCH 330/521] #249 Make slower bubble column pull above water level --- mods/PLAYER/mcl_playerplus/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 84a78baf8..4b4e8d1a7 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -478,7 +478,8 @@ minetest.register_globalstep(function(dtime) then break else - head_alt_1 = next_alt + -- show head slightly above water level: + head_alt_1 = head_alt_1 + (next_alt - head_alt_1) * 0.26 break end end From 7ca28d8a27b5cfe1a91a1a27a918b8c8cda712e1 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Mar 2022 06:05:17 +0400 Subject: [PATCH 331/521] Make safer get_staticdata --- mods/ENTITIES/extra_mobs/glow_squid_items.lua | 3 ++- mods/ENTITIES/mcl_boats/init.lua | 5 ++++- mods/ENTITIES/mcl_falling_nodes/init.lua | 1 + mods/ENTITIES/mcl_item_entity/init.lua | 1 + mods/ENTITIES/mcl_minecarts/init.lua | 1 + mods/ENTITIES/mcl_mobs/api/api.lua | 4 +++- mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua | 2 +- mods/ENTITIES/mcl_paintings/init.lua | 1 + mods/ITEMS/mcl_banners/init.lua | 1 + mods/ITEMS/mcl_bows/arrow.lua | 1 + mods/ITEMS/mcl_bows/rocket.lua | 1 + mods/ITEMS/mcl_end/eye_of_ender.lua | 2 +- mods/ITEMS/mcl_itemframes/init.lua | 1 + mods/ITEMS/mcl_mobspawners/init.lua | 2 +- mods/ITEMS/mcl_potions/tipped_arrow.lua | 1 + mods/ITEMS/mcl_signs/init.lua | 1 + mods/ITEMS/mcl_throwing/init.lua | 1 + 17 files changed, 23 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/glow_squid_items.lua b/mods/ENTITIES/extra_mobs/glow_squid_items.lua index db4d88e89..c7f30662b 100644 --- a/mods/ENTITIES/extra_mobs/glow_squid_items.lua +++ b/mods/ENTITIES/extra_mobs/glow_squid_items.lua @@ -54,10 +54,11 @@ minetest.register_entity("extra_mobs:glow_item_frame_item",{ end end, get_staticdata = function(self) + if not self then return end if self._nodename ~= nil and self._texture ~= nil then local ret = self._nodename .. ';' .. self._texture if self._scale ~= nil then - ret = ret .. ';' .. self._scale + ret = ret .. ';' .. tostring(self._scale) end return ret end diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 9ec06d870..3a26c1b36 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -175,10 +175,13 @@ function boat.on_activate(self, staticdata, dtime_s) end function boat.get_staticdata(self) + if not self then return end + local object = self.object + local object_properties = object and object.get_properties and object:get_properties() return minetest.serialize({ v = self._v, itemstring = self._itemstring, - textures = self.object:get_properties().textures + textures = object_properties and object_properties.textures }) end diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index d527603de..769f1d4a9 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -89,6 +89,7 @@ minetest.register_entity(":__builtin:falling_node", { }) end, get_staticdata = function(self) + if not self then return end local meta = self.meta -- Workaround: Save inventory seperately from metadata. -- Because Minetest crashes when a node with inventory gets deactivated diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index b1202f4ad..e88f4dd80 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -486,6 +486,7 @@ minetest.register_entity(":__builtin:item", { end, get_staticdata = function(self) + if not self then return end local data = minetest.serialize({ itemstring = self.itemstring, always_collect = self.always_collect, diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 119a13523..4294c4630 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -503,6 +503,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o end function cart:get_staticdata() + if not self then return end return minetest.serialize({_railtype = self._railtype}) end diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index ea7589f47..c72dca0bd 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -425,7 +425,9 @@ function mobs:register_mob(name, def) end, get_staticdata = function(self) - return mobs.mob_staticdata(self) + if self and mobs then + return mobs.mob_staticdata(self) + end end, --harmed_by_heal = def.harmed_by_heal, diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua index 454794dda..d9cc4237c 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -42,7 +42,7 @@ mobs.mob_staticdata = function(self) self.following = nil if use_cmi then - self.serialized_cmi_components = cmi.serialize_components(self._cmi_components) + self.serialized_cmi_components = cmi and cmi.serialize_components(self._cmi_components) end local tmp = {} diff --git a/mods/ENTITIES/mcl_paintings/init.lua b/mods/ENTITIES/mcl_paintings/init.lua index 26bd2c61b..74e7341ca 100644 --- a/mods/ENTITIES/mcl_paintings/init.lua +++ b/mods/ENTITIES/mcl_paintings/init.lua @@ -160,6 +160,7 @@ minetest.register_entity("mcl_paintings:painting", { set_entity(self.object) end, get_staticdata = function(self) + if not self then return end local data = { _facing = self._facing, _pos = self._pos, diff --git a/mods/ITEMS/mcl_banners/init.lua b/mods/ITEMS/mcl_banners/init.lua index cc0e02e66..0be8610f0 100644 --- a/mods/ITEMS/mcl_banners/init.lua +++ b/mods/ITEMS/mcl_banners/init.lua @@ -618,6 +618,7 @@ local entity_standing = { -- pattern: name of pattern (see list above) get_staticdata = function(self) + if not self then return end local out = { _base_color = self._base_color, _layers = self._layers, _name = self._name } return minetest.serialize(out) end, diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index baa4d633a..5cbafce62 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -441,6 +441,7 @@ function ARROW_ENTITY.on_punch(self) end function ARROW_ENTITY.get_staticdata(self) + if not self then return end local out = { lastpos = self._lastpos, startpos = self._startpos, diff --git a/mods/ITEMS/mcl_bows/rocket.lua b/mods/ITEMS/mcl_bows/rocket.lua index c6f6351a4..cac466376 100644 --- a/mods/ITEMS/mcl_bows/rocket.lua +++ b/mods/ITEMS/mcl_bows/rocket.lua @@ -630,6 +630,7 @@ function ARROW_ENTITY.on_punch(self) end function ARROW_ENTITY.get_staticdata(self) + if not self then return end local out = { lastpos = self._lastpos, startpos = self._startpos, diff --git a/mods/ITEMS/mcl_end/eye_of_ender.lua b/mods/ITEMS/mcl_end/eye_of_ender.lua index 97dee9336..d2e273c8d 100644 --- a/mods/ITEMS/mcl_end/eye_of_ender.lua +++ b/mods/ITEMS/mcl_end/eye_of_ender.lua @@ -10,7 +10,7 @@ minetest.register_entity("mcl_end:ender_eye", { -- Save and restore age get_staticdata = function(self) - return tostring(self._age) or "0" + return tostring(self and self._age) or "0" end, on_activate = function(self, staticdata, dtime_s) local age = tonumber(staticdata) diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index d46a393b8..5dde560b7 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -33,6 +33,7 @@ minetest.register_entity("mcl_itemframes:item",{ end end, get_staticdata = function(self) + if not self then return end if self._nodename and self._texture then local ret = self._nodename .. ";" .. self._texture if self._scale then diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 37720e1e8..11339e1a4 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -352,7 +352,7 @@ local doll_def = { } doll_def.get_staticdata = function(self) - return self._mob + return self and self._mob end doll_def.on_activate = function(self, staticdata, dtime_s) diff --git a/mods/ITEMS/mcl_potions/tipped_arrow.lua b/mods/ITEMS/mcl_potions/tipped_arrow.lua index 1717533a8..907580aef 100644 --- a/mods/ITEMS/mcl_potions/tipped_arrow.lua +++ b/mods/ITEMS/mcl_potions/tipped_arrow.lua @@ -391,6 +391,7 @@ function mcl_potions.register_arrow(name, desc, color, def) end function ARROW_ENTITY.get_staticdata(self) + if not self then return end local out = { lastpos = self._lastpos, startpos = self._startpos, diff --git a/mods/ITEMS/mcl_signs/init.lua b/mods/ITEMS/mcl_signs/init.lua index b6bfb3fe8..c3c779356 100644 --- a/mods/ITEMS/mcl_signs/init.lua +++ b/mods/ITEMS/mcl_signs/init.lua @@ -537,6 +537,7 @@ minetest.register_entity("mcl_signs:text", { self.object:set_armor_groups({ immortal = 1 }) end, get_staticdata = function(self) + if not self then return end local out = { _signnodename = self._signnodename } return minetest.serialize(out) end, diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index c468946dd..88c69a3f3 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -57,6 +57,7 @@ end -- Staticdata handling because objects may want to be reloaded function mcl_throwing.get_staticdata(self) + if not self then return end local thrower -- Only save thrower if it's a player name if type(self._thrower) == "string" then From 2f7bb481addd2deac6e882fab9f5131926064eb4 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 14 Mar 2022 13:23:09 +0400 Subject: [PATCH 332/521] Ban silently all the list, not only first player --- mods/PLAYER/mcl_anticheat/init.lua | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/mods/PLAYER/mcl_anticheat/init.lua b/mods/PLAYER/mcl_anticheat/init.lua index bd76e2818..2e3f427a6 100644 --- a/mods/PLAYER/mcl_anticheat/init.lua +++ b/mods/PLAYER/mcl_anticheat/init.lua @@ -199,11 +199,10 @@ local function step() end end elseif #players < 26 then - if should_be_banned then - minetest.chat_send_all("Player " .. first .. " has been banned for having more than 9 connections at once") - minetest.ban_player(first) - else - for _, player_name in pairs(players) do + for _, player_name in pairs(players) do + if should_be_banned then + minetest.ban_player(player_name) + else if (player_doesnt_move[player_name] or 0) > 90/step_seconds then minetest.kick_player(player_name, "Didn't move during 1.5 minutes being connected multiple times") ban_next_time[ip] = 1 @@ -211,18 +210,18 @@ local function step() end end elseif #players <= 100 then - if should_be_banned then - minetest.ban_player(first) - minetest.chat_send_all("Player " .. first .. " has been banned for having more than 25 connections at once") - else - for _, player_name in pairs(players) do + for _, player_name in pairs(players) do + if should_be_banned then + minetest.ban_player(player_name) + else minetest.kick_player(player_name, "More than 25 connections from IP address " .. ip) + ban_next_time[ip] = 1 end - ban_next_time[ip] = 1 end else - minetest.ban_player(first) - minetest.chat_send_all("Player " .. first .. " has been banned for having more than 100 connections at once") + for _, player_name in pairs(players) do + minetest.ban_player(player_name) + end end end end From cb4bb7922424d87bbabac5a4a9e28312839def24 Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 15 Mar 2022 02:05:42 +0400 Subject: [PATCH 333/521] #249 Trace whirlpools --- mods/PLAYER/mcl_playerplus/init.lua | 65 +++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 4b4e8d1a7..85755e0de 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -478,8 +478,8 @@ minetest.register_globalstep(function(dtime) then break else - -- show head slightly above water level: - head_alt_1 = head_alt_1 + (next_alt - head_alt_1) * 0.26 + -- pull head slightly above water level: + head_alt_1 = head_alt_1 + (next_alt - head_alt_1) * 0.5 break end end @@ -489,7 +489,16 @@ minetest.register_globalstep(function(dtime) if delta_y > 0 then fly_pos.y = new_alt player:set_pos(fly_pos) - player:add_velocity({x = 0, y = -player_velocity.y / 3, z = 0}) + local velocity_y = player_velocity.y + local add_velocity_y + if velocity_y > 1 then + add_velocity_y = -velocity_y/5 + elseif velocity_y >= -1 then + add_velocity_y = -velocity_y/2.5 + else + add_velocity_y = -velocity_y/2 + end + player:add_velocity({x = 0, y = add_velocity_y, z = 0}) player_pos_for_bubble_columns[name] = fly_pos else player_pos_for_bubble_columns[name] = nil @@ -509,23 +518,43 @@ minetest.register_globalstep(function(dtime) if stands_on == "mcl_nether:magma" then fly_pos.y = math.floor(fly_pos.y) + (control.sneak and 0.51 or 0.5) player:set_pos(fly_pos) - player:add_velocity({x = 0, y = -player_velocity.y / 2, z = 0}) + local add_velocity_y + local velocity_y = player_velocity.y + if velocity_y < -1 then + add_velocity_y = -velocity_y/5 + elseif velocity_y <= 1 then + add_velocity_y = -velocity_y/2.5 + else + add_velocity_y = -velocity_y/2 + end + player:add_velocity({x = 0, y = add_velocity_y, z = 0}) + player_pos_for_bubble_columns[name] = fly_pos + elseif stands_on == "mcl_core:whirlpool_source" then + local estimated_pos_y = player_pos_for_bubble_columns[name].y - (whirlpool_head and time/2 or time/5) + local next_pos_y = fly_pos.y + while next_pos_y > estimated_pos_y do + next_pos_y = next_pos_y - math.min(1, next_pos_y - estimated_pos_y) + local will_stand_on = minetest.get_node({x = fly_pos.x, y = next_pos_y - 0.0001, z = fly_pos.z}).name + if will_stand_on ~= "mcl_core:whirlpool_source" then + next_pos_y = math.floor(next_pos_y - 0.0001) + (control.sneak and 0.51 or 0.5) + break + end + end + fly_pos.y = next_pos_y + player:set_pos(fly_pos) + local add_velocity_y + local velocity_y = player_velocity.y + if velocity_y < -1 then + add_velocity_y = -velocity_y/5 + elseif velocity_y <= 1 then + add_velocity_y = -velocity_y/2.5 + else + add_velocity_y = -velocity_y/2 + end + player:add_velocity({x = 0, y = add_velocity_y, z = 0}) player_pos_for_bubble_columns[name] = fly_pos else - fly_pos.y = player_pos_for_bubble_columns[name].y - (whirlpool_head and time/2 or time/5) - local will_stand_on = minetest.get_node({x = fly_pos.x, y = fly_pos.y - 0.0001, z = fly_pos.z}).name - if will_stand_on == "mcl_nether:magma" then - fly_pos.y = math.floor(fly_pos.y) + (control.sneak and 0.51 or 0.5) - player:set_pos(fly_pos) - player:add_velocity({x = 0, y = -player_velocity.y / 2, z = 0}) - player_pos_for_bubble_columns[name] = fly_pos - elseif will_stand_on == "mcl_core:whirlpool_source" then - player:set_pos(fly_pos) - player:add_velocity({x = 0, y = -player_velocity.y / 2, z = 0}) - player_pos_for_bubble_columns[name] = fly_pos - else - player_pos_for_bubble_columns[name] = nil - end + player_pos_for_bubble_columns[name] = nil end end elseif player_pos_for_bubble_columns[name] then From a6e4de2b6b9564ab4129988a9405466bbb2abfc3 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 17 Mar 2022 05:40:28 +0400 Subject: [PATCH 334/521] #256 Lift up clouds for valleys --- mods/CORE/mcl_mapgen/init.lua | 2 +- mods/CORE/mcl_worlds/init.lua | 20 ++++++++++++++++++++ mods/ENVIRONMENT/mcl_weather/skycolor.lua | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_mapgen/init.lua b/mods/CORE/mcl_mapgen/init.lua index 4aca65f54..fc0a98c6b 100644 --- a/mods/CORE/mcl_mapgen/init.lua +++ b/mods/CORE/mcl_mapgen/init.lua @@ -325,7 +325,7 @@ minetest.register_on_generated(function(minp, maxp, chunkseed) -- mcl_mapgen.register_mapgen_lvm(function(vm_context), order_number) -- -- -- for _, v in pairs(queue_chunks_lvm) do - vm_context = v.f(vm_context) + v.f(vm_context) end -- -- -- mcl_mapgen.register_mapgen(function(minp, maxp, chunkseed, vm_context), order_number) -- diff --git a/mods/CORE/mcl_worlds/init.lua b/mods/CORE/mcl_worlds/init.lua index eb366013e..d31913599 100644 --- a/mods/CORE/mcl_worlds/init.lua +++ b/mods/CORE/mcl_worlds/init.lua @@ -152,3 +152,23 @@ minetest.register_globalstep(function(dtime) dimtimer = 0 end end) + +function mcl_worlds.get_cloud_parameters() + if mcl_mapgen.name == "valleys" then + return { + height = 384, + speed = {x=-2, z=0}, + thickness=5, + color="#FFF0FEF", + ambient = "#201060", + } + else + -- MC-style clouds: Layer 127, thickness 4, fly to the “West” + return { + height = mcl_worlds.layer_to_y(127), + speed = {x=-2, z=0}, + thickness = 4, + color = "#FFF0FEF", + } + end +end diff --git a/mods/ENVIRONMENT/mcl_weather/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua index 6b89c33be..93e92defc 100644 --- a/mods/ENVIRONMENT/mcl_weather/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -241,7 +241,7 @@ local function initsky(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, z=0}, thickness=4, color="#FFF0FEF"}) + player:set_clouds(mcl_worlds:get_cloud_parameters() or {height=mcl_worlds.layer_to_y(127), speed={x=-2, z=0}, thickness=4, color="#FFF0FEF"}) end minetest.register_on_joinplayer(initsky) From 4f0dbec948e847089d163a6e2a9e1db6dbe47922 Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 18 Mar 2022 01:07:06 +0400 Subject: [PATCH 335/521] Use Perlin noise to initialize chorus growth --- mods/MAPGEN/mcl_biomes/init.lua | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 56a3cfe11..8ad8700f0 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -22,6 +22,10 @@ local OCEAN_MIN = -15 local DEEP_OCEAN_MAX = OCEAN_MIN - 1 local DEEP_OCEAN_MIN = -31 +local minetest_get_perlin = minetest.get_perlin +local math_floor = math.floor +local math_abs = math.abs + --[[ Special biome field: _mcl_biome_type: Rough categorization of biomes: One of "snowy", "cold", "medium" and "hot" Based off ]] @@ -3922,6 +3926,16 @@ local function register_decorations() end -- Decorations in non-Overworld dimensions + +local chorus_noise_params = { + offset = -0.012, + scale = 0.024, + spread = {x = 100, y = 100, z = 100}, + seed = 257, + octaves = 3, + persistence = 0.6, +} + local function register_dimension_decorations() --[[ NETHER ]] -- TODO: Nether @@ -3935,14 +3949,7 @@ local function register_dimension_decorations() 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 - }, + noise_params = chorus_noise_params, y_min = mcl_mapgen.end_.min, y_max = mcl_mapgen.end_.max, decoration = "mcl_end:chorus_flower", @@ -3962,6 +3969,8 @@ end -- Detect mapgen to select functions -- +local chorus_perlin_noise + if not mcl_mapgen.singlenode then if not superflat then if not mcl_mapgen.v6 then @@ -3994,8 +4003,10 @@ if not mcl_mapgen.singlenode then vm_context.gennotify = vm_context.gennotify or minetest.get_mapgen_object("gennotify") local gennotify = vm_context.gennotify for _, pos in pairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do + chorus_perlin_noise = chorus_perlin_noise or minetest_get_perlin(chorus_noise_params) local realpos = { x = pos.x, y = pos.y + 1, z = pos.z } - local pr = PseudoRandom(vm_context.blockseed) + local noise = chorus_perlin_noise:get_3d(realpos) + local pr = PseudoRandom(math_floor(math_abs(noise * 32767)) % 32768) minetest.after(1, mcl_end.grow_chorus_plant, realpos, false, pr) end return vm_context @@ -4003,4 +4014,3 @@ if not mcl_mapgen.singlenode then end end - From c2823246610b916b05811bd4e82f2da9326be132 Mon Sep 17 00:00:00 2001 From: Mark Roth Date: Sun, 20 Mar 2022 01:07:42 +0200 Subject: [PATCH 336/521] #248 move compostability rating to items groups instead of the list in the mod --- mods/ITEMS/mcl_cake/init.lua | 298 +++++++++++------------ mods/ITEMS/mcl_composters/init.lua | 107 +------- mods/ITEMS/mcl_core/craftitems.lua | 2 +- mods/ITEMS/mcl_core/nodes_base.lua | 8 +- mods/ITEMS/mcl_core/nodes_cactuscane.lua | 4 +- mods/ITEMS/mcl_core/nodes_climb.lua | 2 +- mods/ITEMS/mcl_core/nodes_trees.lua | 7 +- mods/ITEMS/mcl_dye/init.lua | 2 +- mods/ITEMS/mcl_farming/beetroot.lua | 4 +- mods/ITEMS/mcl_farming/carrots.lua | 2 +- mods/ITEMS/mcl_farming/melon.lua | 6 +- mods/ITEMS/mcl_farming/potatoes.lua | 4 +- mods/ITEMS/mcl_farming/pumpkin.lua | 8 +- mods/ITEMS/mcl_farming/sweet_berry.lua | 2 +- mods/ITEMS/mcl_farming/wheat.lua | 11 +- mods/ITEMS/mcl_flowers/init.lua | 14 +- mods/ITEMS/mcl_mushroom/init.lua | 16 +- mods/ITEMS/mcl_mushrooms/huge.lua | 4 +- mods/ITEMS/mcl_mushrooms/small.lua | 4 +- mods/ITEMS/mcl_nether/init.lua | 2 +- mods/ITEMS/mcl_nether/nether_wart.lua | 2 +- mods/ITEMS/mcl_ocean/kelp.lua | 6 +- mods/ITEMS/mcl_ocean/sea_pickle.lua | 2 +- mods/ITEMS/mcl_ocean/seagrass.lua | 2 +- 24 files changed, 214 insertions(+), 305 deletions(-) diff --git a/mods/ITEMS/mcl_cake/init.lua b/mods/ITEMS/mcl_cake/init.lua index 104071064..6a7c1f6ca 100644 --- a/mods/ITEMS/mcl_cake/init.lua +++ b/mods/ITEMS/mcl_cake/init.lua @@ -1,149 +1,149 @@ ---[[ -#!#!#!#Cake mod created by Jordan4ibanez#!#!# -#!#!#!#Released under CC Attribution-ShareAlike 3.0 Unported #!#!# -]]-- - -local CAKE_HUNGER_POINTS = 2 - -local S = minetest.get_translator(minetest.get_current_modname()) - -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} -local slice_3 = { -7/16, -8/16, -7/16, -1/16, 0/16, 7/16} -local slice_4 = { -7/16, -8/16, -7/16, 1/16, 0/16, 7/16} -local slice_5 = { -7/16, -8/16, -7/16, 3/16, 0/16, 7/16} -local slice_6 = { -7/16, -8/16, -7/16, 5/16, 0/16, 7/16} - -local full_cake = { -7/16, -8/16, -7/16, 7/16, 0/16, 7/16} - -minetest.register_craft({ - output = "mcl_cake:cake", - recipe = { - {"mcl_mobitems:milk_bucket", "mcl_mobitems:milk_bucket", "mcl_mobitems:milk_bucket"}, - {"mcl_core:sugar", "mcl_throwing:egg", "mcl_core:sugar"}, - {"mcl_farming:wheat_item", "mcl_farming:wheat_item", "mcl_farming:wheat_item"}, - }, - replacements = { - {"mcl_mobitems:milk_bucket", "mcl_buckets:bucket_empty"}, - {"mcl_mobitems:milk_bucket", "mcl_buckets:bucket_empty"}, - {"mcl_mobitems:milk_bucket", "mcl_buckets:bucket_empty"}, - }, -}) - -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"}, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - inventory_image = "cake.png", - wield_image = "cake.png", - paramtype = "light", - is_ground_content = false, - drawtype = "nodebox", - selection_box = { - type = "fixed", - fixed = full_cake - }, - node_box = { - type = "fixed", - fixed = full_cake - }, - stack_max = 1, - groups = {handy=1, cake=7, food=2,no_eat_delay=1, attached_node=1, dig_by_piston=1, comparator_signal=14}, - drop = "", - on_rightclick = function(pos, node, clicker, itemstack) - -- Cake is subject to protection - local name = clicker:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return - end - local newcake = minetest.do_item_eat(2, ItemStack("mcl_cake:cake_6"), ItemStack("mcl_cake:cake"), clicker, {type="nothing"}) - -- Check if we were allowed to eat - if newcake:get_name() ~= "mcl_cake:cake" or minetest.is_creative_enabled(clicker:get_player_name()) then - minetest.add_node(pos,{type="node",name="mcl_cake:cake_6",param2=0}) - end - end, - sounds = mcl_sounds.node_sound_leaves_defaults(), - - _food_particles = false, - _mcl_saturation = 0.4, - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, -}) - -local register_slice = function(level, nodebox, desc) - local this = "mcl_cake:cake_"..level - local after_eat = "mcl_cake:cake_"..(level-1) - local on_rightclick - if level > 1 then - on_rightclick = function(pos, node, clicker, itemstack) - local name = clicker:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return - end - 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.is_creative_enabled(clicker:get_player_name()) then - minetest.add_node(pos,{type="node",name=after_eat,param2=0}) - end - end - else - -- Last slice - on_rightclick = function(pos, node, clicker, itemstack) - local name = clicker:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return - end - 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.is_creative_enabled(clicker:get_player_name()) then - minetest.remove_node(pos) - minetest.check_for_falling(pos) - end - end - end - - minetest.register_node(this, { - description = desc, - _doc_items_create_entry = false, - tiles = cake_texture, - use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, - paramtype = "light", - is_ground_content = false, - drawtype = "nodebox", - selection_box = { - type = "fixed", - fixed = nodebox, - }, - node_box = { - type = "fixed", - fixed = nodebox, - }, - groups = {handy=1, cake=level, food=2,no_eat_delay=1,attached_node=1,not_in_creative_inventory=1,dig_by_piston=1,comparator_signal=level*2}, - drop = "", - on_rightclick = on_rightclick, - sounds = mcl_sounds.node_sound_leaves_defaults(), - - _food_particles = false, - _mcl_saturation = 0.4, - _mcl_blast_resistance = 0.5, - _mcl_hardness = 0.5, - }) - - if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_cake:cake", "nodes", "mcl_cake:cake_"..level) - end -end - -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)")) +--[[ +#!#!#!#Cake mod created by Jordan4ibanez#!#!# +#!#!#!#Released under CC Attribution-ShareAlike 3.0 Unported #!#!# +]]-- + +local CAKE_HUNGER_POINTS = 2 + +local S = minetest.get_translator(minetest.get_current_modname()) + +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} +local slice_3 = { -7/16, -8/16, -7/16, -1/16, 0/16, 7/16} +local slice_4 = { -7/16, -8/16, -7/16, 1/16, 0/16, 7/16} +local slice_5 = { -7/16, -8/16, -7/16, 3/16, 0/16, 7/16} +local slice_6 = { -7/16, -8/16, -7/16, 5/16, 0/16, 7/16} + +local full_cake = { -7/16, -8/16, -7/16, 7/16, 0/16, 7/16} + +minetest.register_craft({ + output = "mcl_cake:cake", + recipe = { + {"mcl_mobitems:milk_bucket", "mcl_mobitems:milk_bucket", "mcl_mobitems:milk_bucket"}, + {"mcl_core:sugar", "mcl_throwing:egg", "mcl_core:sugar"}, + {"mcl_farming:wheat_item", "mcl_farming:wheat_item", "mcl_farming:wheat_item"}, + }, + replacements = { + {"mcl_mobitems:milk_bucket", "mcl_buckets:bucket_empty"}, + {"mcl_mobitems:milk_bucket", "mcl_buckets:bucket_empty"}, + {"mcl_mobitems:milk_bucket", "mcl_buckets:bucket_empty"}, + }, +}) + +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"}, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + inventory_image = "cake.png", + wield_image = "cake.png", + paramtype = "light", + is_ground_content = false, + drawtype = "nodebox", + selection_box = { + type = "fixed", + fixed = full_cake + }, + node_box = { + type = "fixed", + fixed = full_cake + }, + stack_max = 1, + groups = {handy=1, cake=7, food=2, no_eat_delay=1, compostability=100, attached_node=1, dig_by_piston=1, comparator_signal=14}, + drop = "", + on_rightclick = function(pos, node, clicker, itemstack) + -- Cake is subject to protection + local name = clicker:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return + end + local newcake = minetest.do_item_eat(2, ItemStack("mcl_cake:cake_6"), ItemStack("mcl_cake:cake"), clicker, {type="nothing"}) + -- Check if we were allowed to eat + if newcake:get_name() ~= "mcl_cake:cake" or minetest.is_creative_enabled(clicker:get_player_name()) then + minetest.add_node(pos,{type="node",name="mcl_cake:cake_6",param2=0}) + end + end, + sounds = mcl_sounds.node_sound_leaves_defaults(), + + _food_particles = false, + _mcl_saturation = 0.4, + _mcl_blast_resistance = 0.5, + _mcl_hardness = 0.5, +}) + +local register_slice = function(level, nodebox, desc) + local this = "mcl_cake:cake_"..level + local after_eat = "mcl_cake:cake_"..(level-1) + local on_rightclick + if level > 1 then + on_rightclick = function(pos, node, clicker, itemstack) + local name = clicker:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return + end + 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.is_creative_enabled(clicker:get_player_name()) then + minetest.add_node(pos,{type="node",name=after_eat,param2=0}) + end + end + else + -- Last slice + on_rightclick = function(pos, node, clicker, itemstack) + local name = clicker:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return + end + 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.is_creative_enabled(clicker:get_player_name()) then + minetest.remove_node(pos) + minetest.check_for_falling(pos) + end + end + end + + minetest.register_node(this, { + description = desc, + _doc_items_create_entry = false, + tiles = cake_texture, + use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, + paramtype = "light", + is_ground_content = false, + drawtype = "nodebox", + selection_box = { + type = "fixed", + fixed = nodebox, + }, + node_box = { + type = "fixed", + fixed = nodebox, + }, + groups = {handy=1, cake=level, food=2, no_eat_delay=1, compostability=100, attached_node=1, not_in_creative_inventory=1, dig_by_piston=1, comparator_signal=level*2}, + drop = "", + on_rightclick = on_rightclick, + sounds = mcl_sounds.node_sound_leaves_defaults(), + + _food_particles = false, + _mcl_saturation = 0.4, + _mcl_blast_resistance = 0.5, + _mcl_hardness = 0.5, + }) + + if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_cake:cake", "nodes", "mcl_cake:cake_"..level) + end +end + +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_composters/init.lua b/mods/ITEMS/mcl_composters/init.lua index a3e219bb2..6c0450b2f 100644 --- a/mods/ITEMS/mcl_composters/init.lua +++ b/mods/ITEMS/mcl_composters/init.lua @@ -32,108 +32,6 @@ minetest.register_craft({ } }) -local compostability = { - ["mcl_cake:cake"] = 100, - ["mcl_farming:pumpkin_pie"] = 100, - - ["mcl_farming:potato_item_baked"] = 85, - ["mcl_farming:bread"] = 85, - ["mcl_farming:cookie"] = 85, - ["mcl_farming:hay_block"] = 85, - -- mushroom cap block have 64 variants, wtf!? - ["mcl_mushrooms:brown_mushroom_block_cap_111111"] = 85, - ["mcl_mushrooms:red_mushroom_block_cap_111111"] = 85, - ["mcl_nether:nether_wart_block"] = 85, - ["mcl_mushroom:warped_wart_block"] = 85, - - ["mcl_core:apple"] = 65, - -- missing: azalea - ["mcl_farming:beetroot_item"] = 65, - -- missing: big dripleaf - ["mcl_farming:carrot_item"] = 65, - -- what's up with cocoa beans? - ["mcl_dye:brown"] = 65, - ["mcl_flowers:fern"] = 65, - ["mcl_flowers:double_fern"] = 65, - ["mcl_flowers:allium"] = 65, - ["mcl_flowers:azure_bluet"] = 65, - ["mcl_flowers:blue_orchid"] = 65, - ["mcl_flowers:dandelion"] = 65, - ["mcl_flowers:lilac"] = 65, - ["mcl_flowers:oxeye_daisy"] = 65, - ["mcl_flowers:poppy"] = 65, - ["mcl_flowers:tulip_orange"] = 65, - ["mcl_flowers:tulip_pink"] = 65, - ["mcl_flowers:tulip_red"] = 65, - ["mcl_flowers:tulip_white"] = 65, - ["mcl_flowers:peony"] = 65, - ["mcl_flowers:rose_bush"] = 65, - ["mcl_flowers:sunflower"] = 65, - ["mcl_flowers:waterlily"] = 65, - ["mcl_farming:melon"] = 65, - ["mcl_core:moss"] = 65, - -- mushroom aliases below? - ["mcl_farming:mushroom_brown"] = 65, - ["mcl_mushrooms:mushroom_brown"] = 65, - ["mcl_farming:mushroom_red"] = 65, - ["mcl_mushrooms:mushroom_red"] = 65, - ["mcl_mushrooms:brown_mushroom_block_stem_full"] = 65, - ["mcl_mushrooms:red_mushroom_block_stem_full"] = 65, - -- nether wart - ["mcl_farming:potato_item"] = 65, - ["mcl_farming:pumpkin"] = 65, - ["mcl_farming:pumpkin_face_light"] = 65, - ["mcl_ocean:sea_pickle_"] = 65, - ["mcl_mushroom:shroomlight"] = 65, - -- missing: spore blossom - ["mcl_farming:wheat_item"] = 65, - ["mcl_mushroom:crimson_fungus"] = 65, - ["mcl_mushroom:warped_fungus"] = 65, - ["mcl_mushroom:crimson_roots"] = 65, - ["mcl_mushroom:warped_roots"] = 65, - - ["mcl_core:cactus"] = 50, - ["mcl_ocean:dried_kelp_block"] = 50, - -- missing: flowering azalea leaves - -- missing: glow lichen - ["mcl_farming:melon_item"] = 50, - ["mcl_mushroom:nether_sprouts"] = 50, - ["mcl_core:reeds"] = 50, - ["mcl_flowers:double_grass"] = 50, - ["mcl_core:vine"] = 50, - -- missing: weeping vines - ["mcl_mushroom:twisting_vines"] = 50, - - ["mcl_flowers:tallgrass"] = 30, - ["mcl_farming:beetroot_seeds"] = 30, - ["mcl_core:dirt_with_grass"] = 30, - ["mcl_core:tallgrass"] = 30, - ["mcl_ocean:dried_kelp"] = 30, - ["mcl_ocean:kelp"] = 30, - ["mcl_core:leaves"] = 30, - ["mcl_core:acacialeaves"] = 30, - ["mcl_core:birchleaves"] = 30, - ["mcl_core:darkleaves"] = 30, - ["mcl_core:jungleleaves"] = 30, - ["mcl_core:spruceleaves"] = 30, - -- - ["mcl_farming:melon_seeds"] = 30, - ["mcl_core:moss_carpet"] = 30, - ["mcl_farming:pumpkin_seeds"] = 30, - ["mcl_core:sapling"] = 30, - ["mcl_core:acaciasapling"] = 30, - ["mcl_core:birchsapling"] = 30, - ["mcl_core:darksapling"] = 30, - ["mcl_core:junglesapling"] = 30, - ["mcl_core:sprucesapling"] = 30, - ["mcl_ocean:seagrass"] = 30, - -- missing: small dripleaf - ["mcl_sweet_berry:sweet_berry"] = 30, - ["mcl_farming:sweet_berry"] = 30, - ["mcl_farming:wheat_seeds"] = 30, - -} - local function composter_add_item(pos, node, player, itemstack, pointed_thing) -- -- handler for filling the composter when rightclicked @@ -147,8 +45,9 @@ local function composter_add_item(pos, node, player, itemstack, pointed_thing) return itemstack end local itemname = itemstack:get_name() - local chance = compostability[itemname] - if chance then + local chance = minetest.get_item_group(itemname, "compostability") + + if chance > 0 then if not minetest.is_creative_enabled(player:get_player_name()) then itemstack:take_item() end diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 85a078766..26519ab7e 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -139,7 +139,7 @@ minetest.register_craftitem("mcl_core:apple", { stack_max = 64, on_place = minetest.item_eat(4), on_secondary_use = minetest.item_eat(4), - groups = { food = 2, eatable = 4 }, + groups = { food = 2, eatable = 4, compostability=65 }, _mcl_saturation = 2.4, }) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 900675688..eed6ab906 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -369,7 +369,7 @@ minetest.register_node("mcl_core:dirt_with_grass", { color = "#8EB971", 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}, + 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, compostability=30}, drop = "mcl_core:dirt", sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.1}, @@ -473,7 +473,7 @@ minetest.register_node("mcl_core:moss", { tiles = {"mcl_core_moss_block.png"}, is_ground_content = true, stack_max = 64, - groups = {handy=1, hoey=1}, + groups = {handy=1, hoey=1, compostability=65}, --sounds = TODO: add sound _mcl_blast_resistance = 0.1, _mcl_hardness = 0.1, @@ -1096,7 +1096,7 @@ minetest.register_node("mcl_core:moss", { tiles = {"mcl_core_moss_block.png"}, is_ground_content = true, stack_max = 64, - groups = {handy=1, hoey=1}, + groups = {handy=1, hoey=1, compostability=65}, --sounds = TODO: add sound _mcl_blast_resistance = 0.1, _mcl_hardness = 0.1, @@ -1153,7 +1153,7 @@ minetest.register_node("mcl_core:moss_carpet", { {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, }, }, - groups = {handy=1, hoey=1}, + groups = {handy=1, hoey=1, compostability=30}, --sounds = TODO: add sound _mcl_blast_resistance = 0.1, _mcl_hardness = 0.1, diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index e61d6df80..cea73da11 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -12,7 +12,7 @@ minetest.register_node("mcl_core:cactus", { tiles = {"mcl_core_cactus_top.png", "mcl_core_cactus_bottom.png", "mcl_core_cactus_side.png"}, is_ground_content = true, stack_max = 64, - groups = {handy=1, attached_node=1, plant=1, deco_block=1, dig_by_piston=1, enderman_takable=1}, + groups = {handy=1, attached_node=1, plant=1, deco_block=1, dig_by_piston=1, enderman_takable=1, compostability=50}, sounds = mcl_sounds.node_sound_wood_defaults(), paramtype = "light", sunlight_propagates = true, @@ -79,7 +79,7 @@ minetest.register_node("mcl_core:reeds", { }, }, stack_max = 64, - groups = {dig_immediate=3, craftitem=1, deco_block=1, plant=1, non_mycelium_plant=1, dig_by_piston=1}, + groups = {dig_immediate=3, craftitem=1, deco_block=1, plant=1, non_mycelium_plant=1, dig_by_piston=1, compostability=50}, sounds = mcl_sounds.node_sound_leaves_defaults(), node_placement_prediction = "", drop = "mcl_core:reeds", -- to prevent color inheritation diff --git a/mods/ITEMS/mcl_core/nodes_climb.lua b/mods/ITEMS/mcl_core/nodes_climb.lua index 9505bb19a..d99954e3f 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, fire_encouragement=15, fire_flammability=100}, + 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, compostability=50}, sounds = mcl_sounds.node_sound_leaves_defaults(), drop = "", _mcl_shears_drop = true, diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index a5ef7aa97..060879e17 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -162,7 +162,8 @@ local function register_leaves(subname, description, longdesc, tiles, sapling, d deco_block=1, dig_by_piston=1, fire_encouragement=30, - fire_flammability=60 + fire_flammability=60, + compostability=30 }, drop = get_drops(0), _mcl_shears_drop = true, @@ -194,7 +195,7 @@ local function register_sapling(subname, description, longdesc, tt_help, texture fixed = selbox }, stack_max = 64, - groups = {dig_immediate=3, plant=1,sapling=1,non_mycelium_plant=1,attached_node=1,dig_by_water=1,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1}, + groups = {dig_immediate=3, plant=1,sapling=1,non_mycelium_plant=1,attached_node=1,dig_by_water=1,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1, compostability=30}, sounds = mcl_sounds.node_sound_leaves_defaults(), on_construct = function(pos) local meta = minetest.get_meta(pos) @@ -275,4 +276,4 @@ register_leaves("birchleaves", S("Birch Leaves"), S("Birch leaves are grown from -- Node aliases minetest.register_alias("default:acacia_tree", "mcl_core:acaciatree") -minetest.register_alias("default:acacia_leaves", "mcl_core:acacialeaves") \ No newline at end of file +minetest.register_alias("default:acacia_leaves", "mcl_core:acacialeaves") diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index f5e282a8c..ca0ca6fe1 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -78,7 +78,7 @@ dyelocal.dyes = { {"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}}, + {"brown", "mcl_dye_brown", S("Cocoa Beans"), {dye=1, craftitem=1, basecolor_brown=1, excolor_orange=1, unicolor_dark_orange=1, compostability=65}}, {"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}}, diff --git a/mods/ITEMS/mcl_farming/beetroot.lua b/mods/ITEMS/mcl_farming/beetroot.lua index e312aa262..187f34eb4 100644 --- a/mods/ITEMS/mcl_farming/beetroot.lua +++ b/mods/ITEMS/mcl_farming/beetroot.lua @@ -5,7 +5,7 @@ minetest.register_craftitem("mcl_farming:beetroot_seeds", { _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 }, + groups = { craftitem=1, compostability=30 }, inventory_image = "mcl_farming_beetroot_seeds.png", wield_image = "mcl_farming_beetroot_seeds.png", on_place = function(itemstack, placer, pointed_thing) @@ -133,7 +133,7 @@ minetest.register_craftitem("mcl_farming:beetroot_item", { wield_image = "mcl_farming_beetroot.png", on_place = minetest.item_eat(1), on_secondary_use = minetest.item_eat(1), - groups = { food = 2, eatable = 1 }, + groups = { food = 2, eatable = 1, compostability=65 }, _mcl_saturation = 1.2, }) diff --git a/mods/ITEMS/mcl_farming/carrots.lua b/mods/ITEMS/mcl_farming/carrots.lua index 7983c58a2..bdecdefed 100644 --- a/mods/ITEMS/mcl_farming/carrots.lua +++ b/mods/ITEMS/mcl_farming/carrots.lua @@ -86,7 +86,7 @@ minetest.register_craftitem("mcl_farming:carrot_item", { _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 }, + groups = { food = 2, eatable = 3, compostability=65 }, _mcl_saturation = 3.6, on_secondary_use = minetest.item_eat(3), on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index b3e49a61f..91df5d919 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -7,7 +7,7 @@ minetest.register_craftitem("mcl_farming: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 }, + groups = { craftitem=1, compostability=30 }, inventory_image = "mcl_farming_melon_seeds.png", on_place = function(itemstack, placer, pointed_thing) return mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_farming:melontige_1") @@ -21,7 +21,7 @@ local melon_base_def = { _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}, + groups = {handy=1,axey=1, plant=1,building_block=1,enderman_takable=1,dig_by_piston=1, compostability=65}, drop = { max_items = 1, items = { @@ -134,7 +134,7 @@ minetest.register_craftitem("mcl_farming:melon_item", { inventory_image = "farming_melon.png", on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), - groups = { food = 2, eatable = 2 }, + groups = { food = 2, eatable = 2, compostability=50 }, _mcl_saturation = 1.2, }) diff --git a/mods/ITEMS/mcl_farming/potatoes.lua b/mods/ITEMS/mcl_farming/potatoes.lua index 79cd13115..a4f6a4360 100644 --- a/mods/ITEMS/mcl_farming/potatoes.lua +++ b/mods/ITEMS/mcl_farming/potatoes.lua @@ -91,7 +91,7 @@ minetest.register_craftitem("mcl_farming:potato_item", { _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 }, + groups = { food = 2, eatable = 1, compostability=65 }, _mcl_saturation = 0.6, stack_max = 64, on_secondary_use = minetest.item_eat(1), @@ -112,7 +112,7 @@ minetest.register_craftitem("mcl_farming:potato_item_baked", { inventory_image = "farming_potato_baked.png", on_place = minetest.item_eat(5), on_secondary_use = minetest.item_eat(5), - groups = { food = 2, eatable = 5 }, + groups = { food = 2, eatable = 5, compostability = 85 }, _mcl_saturation = 6.0, }) diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 0eb71ac91..72d0057dc 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", { _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 }, + groups = { craftitem=1, compostability=30 }, on_place = function(itemstack, placer, pointed_thing) return mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_farming:pumpkin_1") end @@ -99,7 +99,7 @@ local pumpkin_base_def = { stack_max = 64, paramtype2 = "facedir", 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}, + groups = {handy=1,axey=1, plant=1,building_block=1, dig_by_piston=1, enderman_takable=1, compostability=65}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = on_rotate, _mcl_blast_resistance = 1, @@ -192,7 +192,7 @@ minetest.register_node("mcl_farming:pumpkin_face_light", { paramtype2 = "facedir", 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 }, + groups = {handy=1,axey=1, building_block=1, dig_by_piston=1, compostability=65 }, sounds = mcl_sounds.node_sound_wood_defaults(), on_construct = function(pos) -- Attempt to spawn iron golem or snow golem @@ -230,7 +230,7 @@ minetest.register_craftitem("mcl_farming:pumpkin_pie", { wield_image = "mcl_farming_pumpkin_pie.png", on_place = minetest.item_eat(8), on_secondary_use = minetest.item_eat(8), - groups = { food = 2, eatable = 8 }, + groups = { food = 2, eatable = 8, compostability=100 }, _mcl_saturation = 4.8, }) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index d74739aaa..f215851e3 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -31,7 +31,7 @@ minetest.register_craftitem("mcl_farming:sweet_berry", { inventory_image = "mcl_farming_sweet_berry.png", _mcl_saturation = 0.2, stack_max = 64, - groups = { food = 2, eatable = 1 }, + groups = { food = 2, eatable = 1, compostability=30 }, on_secondary_use = minetest.item_eat(1), on_place = function(itemstack, placer, pointed_thing) local new = mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_sweet_berry:sweet_berry_bush_0") diff --git a/mods/ITEMS/mcl_farming/wheat.lua b/mods/ITEMS/mcl_farming/wheat.lua index da1b84b2d..0e81f42bf 100644 --- a/mods/ITEMS/mcl_farming/wheat.lua +++ b/mods/ITEMS/mcl_farming/wheat.lua @@ -9,7 +9,7 @@ minetest.register_craftitem("mcl_farming: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. ]]), - groups = { craftitem=1 }, + groups = { craftitem=1, compostability=30 }, inventory_image = "mcl_farming_wheat_seeds.png", on_place = function(itemstack, placer, pointed_thing) return mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_farming:wheat_1") @@ -104,7 +104,7 @@ minetest.register_craftitem("mcl_farming:wheat_item", { _doc_items_longdesc = S("Wheat is used in crafting. Some animals like 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 }, + groups = { craftitem = 1, compostability=65 }, }) minetest.register_craft({ @@ -125,7 +125,7 @@ minetest.register_craftitem("mcl_farming:cookie", { 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}, + groups = {food=2, eatable=2, compostability=85}, _mcl_saturation = 0.4, on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), @@ -136,7 +136,7 @@ minetest.register_craftitem("mcl_farming:bread", { 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}, + groups = {food=2, eatable=5, compostability=85}, _mcl_saturation = 6.0, on_place = minetest.item_eat(5), on_secondary_use = minetest.item_eat(5), @@ -156,8 +156,7 @@ minetest.register_node("mcl_farming:hay_block", { stack_max = 64, paramtype2 = "facedir", on_place = mcl_util.rotate_axis, - groups = {handy=1, hoey=1, flammable=2, fire_encouragement=60, - fire_flammability=20, building_block=1, fall_damage_add_percent=-80}, + groups = {handy=1, hoey=1, compostability=85, 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 = 0.5, diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 14e0df5cb..9c04ebcf5 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -80,7 +80,7 @@ function mcl_flowers.register_simple_flower(name, def) walkable = false, stack_max = 64, drop = def.drop, - 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}, + 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, compostability=65}, sounds = mcl_sounds.node_sound_leaves_defaults(), node_placement_prediction = "", on_place = on_place_flower, @@ -143,7 +143,7 @@ local def_tallgrass = { walkable = false, buildable_to = true, is_ground_content = true, - 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}, + 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, compostability=30}, sounds = mcl_sounds.node_sound_leaves_defaults(), drop = wheat_seed_drop, _mcl_shears_drop = true, @@ -163,6 +163,7 @@ def_fern._doc_items_longdesc = S("Ferns are small plants which occur naturally i 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" +def_fern.groups.compostability=65 def_fern.selection_box = { type = "fixed", fixed = { -6/16, -0.5, -6/16, 6/16, 5/16, 6/16 }, @@ -205,6 +206,13 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im bottom_groups.not_in_creative_inventory = 1 create_entry = false end + -- some special cases for the composter group + if name == "double_fern" or "peony" or "rose_bush" or "lilac" or "sunflower" then + bottom_groups.compostability = 65 + end + if name == "double_grass" then + bottom_groups.compostability = 50 + end -- Drop itself by default local drop_bottom, drop_top if not drop then @@ -410,7 +418,7 @@ minetest.register_node("mcl_flowers:waterlily", { liquids_pointable = true, walkable = true, sunlight_propagates = true, - groups = {dig_immediate = 3, plant=1, dig_by_water = 1,destroy_by_lava_flow=1, dig_by_piston = 1, deco_block=1, dig_by_boat=1}, + groups = {dig_immediate = 3, plant=1, dig_by_water = 1,destroy_by_lava_flow=1, dig_by_piston = 1, deco_block=1, dig_by_boat=1, compostability=65}, sounds = mcl_sounds.node_sound_leaves_defaults(), node_placement_prediction = "", node_box = { diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index a1a2f45c2..9e44fdcf3 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -32,7 +32,7 @@ minetest.register_node("mcl_mushroom:warped_fungus", { sunlight_propagates = true, paramtype = "light", walkable = false, - groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1}, + groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, compostability=65}, light_source = 1, selection_box = { @@ -67,7 +67,7 @@ minetest.register_node("mcl_mushroom:twisting_vines", { walkable = false, climbable = true, buildable_to = true, - groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1}, + groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1, compostability=50}, selection_box = { type = "fixed", fixed = { -3/16, -0.5, -3/16, 3/16, 0.5, 3/16 }, @@ -108,7 +108,7 @@ minetest.register_node("mcl_mushroom:nether_sprouts", { paramtype = "light", walkable = false, buildable_to = true, - groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1}, + groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1, compostability=50}, selection_box = { type = "fixed", fixed = { -4/16, -0.5, -4/16, 4/16, 0, 4/16 }, @@ -130,7 +130,7 @@ minetest.register_node("mcl_mushroom:warped_roots", { paramtype = "light", walkable = false, buildable_to = true, - groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1}, + groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1, compostability=65}, selection_box = { type = "fixed", fixed = { -6/16, -0.5, -6/16, 6/16, -4/16, 6/16 }, @@ -144,7 +144,7 @@ minetest.register_node("mcl_mushroom:warped_roots", { minetest.register_node("mcl_mushroom:warped_wart_block", { description = S("Warped Wart Block"), tiles = {"warped_wart_block.png"}, - groups = {handy=1,hoe=7,swordy=1, deco_block=1, }, + groups = {handy=1,hoe=7,swordy=1, compostability=85, deco_block=1, }, stack_max = 64, _mcl_hardness = 2, }) @@ -152,7 +152,7 @@ minetest.register_node("mcl_mushroom:warped_wart_block", { minetest.register_node("mcl_mushroom:shroomlight", { description = S("Shroomlight"), tiles = {"shroomlight.png"}, - groups = {handy=1,hoe=7,swordy=1, leaves=1, deco_block=1, }, + groups = {handy=1,hoe=7,swordy=1, leaves=1, deco_block=1, compostability=65, }, stack_max = 64, _mcl_hardness = 2, -- this is 15 in Minecraft @@ -305,7 +305,7 @@ minetest.register_node("mcl_mushroom:crimson_fungus", { sunlight_propagates = true, paramtype = "light", walkable = false, - groups = {dig_immediate=3,mushroom=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,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1, compostability=65}, light_source = 1, selection_box = { @@ -339,7 +339,7 @@ minetest.register_node("mcl_mushroom:crimson_roots", { paramtype = "light", walkable = false, buildable_to = true, - groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1}, + groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1, compostability=65}, selection_box = { type = "fixed", fixed = { -6/16, -0.5, -6/16, 6/16, -4/16, 6/16 }, diff --git a/mods/ITEMS/mcl_mushrooms/huge.lua b/mods/ITEMS/mcl_mushrooms/huge.lua index 617f12810..83bc6a910 100644 --- a/mods/ITEMS/mcl_mushrooms/huge.lua +++ b/mods/ITEMS/mcl_mushrooms/huge.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator(minetest.get_current_modname()) local vector = vector local template = { - groups = {handy=1,axey=1, building_block = 1, material_wood = 1, flammable = -1 }, + groups = {handy=1,axey=1, building_block = 1, material_wood = 1, flammable = -1, compostability=85 }, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = true, _mcl_blast_resistance = 0.2, @@ -51,6 +51,7 @@ local function register_mushroom(color, species_id, template, d_cap, d_stem, d_s stem_full.tiles = { "mcl_mushrooms_mushroom_block_skin_stem.png" } stem_full.groups.huge_mushroom = species_id stem_full.groups.huge_mushroom_stem = 2 + stem_full.groups.compostability=65 minetest.register_node("mcl_mushrooms:"..color.."_mushroom_block_stem_full", stem_full) -- Stem @@ -60,6 +61,7 @@ local function register_mushroom(color, species_id, template, d_cap, d_stem, d_s stem.tiles = { "mcl_mushrooms_mushroom_block_inside.png", "mcl_mushrooms_mushroom_block_inside.png", "mcl_mushrooms_mushroom_block_skin_stem.png" } stem.groups.huge_mushroom = species_id stem.groups.huge_mushroom_stem = 1 + stem.groups.compostability=65 minetest.register_node("mcl_mushrooms:"..color.."_mushroom_block_stem", stem) -- Mushroom block (cap) diff --git a/mods/ITEMS/mcl_mushrooms/small.lua b/mods/ITEMS/mcl_mushrooms/small.lua index c6d7edcdc..6fdc80c16 100644 --- a/mods/ITEMS/mcl_mushrooms/small.lua +++ b/mods/ITEMS/mcl_mushrooms/small.lua @@ -38,7 +38,7 @@ minetest.register_node("mcl_mushrooms:mushroom_brown", { sunlight_propagates = true, paramtype = "light", walkable = false, - groups = {dig_immediate=3,mushroom=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,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1, compostability=65}, sounds = mcl_sounds.node_sound_leaves_defaults(), light_source = 1, selection_box = { @@ -62,7 +62,7 @@ minetest.register_node("mcl_mushrooms:mushroom_red", { sunlight_propagates = true, paramtype = "light", walkable = false, - groups = {dig_immediate=3,mushroom=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,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1, compostability=65}, sounds = mcl_sounds.node_sound_leaves_defaults(), selection_box = { type = "fixed", diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 2d6fbcecc..35da05553 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -202,7 +202,7 @@ minetest.register_node("mcl_nether:nether_wart_block", { stack_max = 64, tiles = {"mcl_nether_nether_wart_block.png"}, is_ground_content = false, - groups = {handy=1, hoey=1, building_block=1}, + groups = {handy=1, hoey=1, building_block=1, compostability=85}, sounds = mcl_sounds.node_sound_leaves_defaults( { footstep={name="default_dirt_footstep", gain=0.7}, diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index 90af6bdd6..e7452a211 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -150,7 +150,7 @@ minetest.register_craftitem("mcl_nether:nether_wart_item", { end end end, - groups = { craftitem = 1, brewitem=1 }, + groups = { craftitem = 1, brewitem=1, compostability=30 }, }) local names = {"mcl_nether:nether_wart_0", "mcl_nether:nether_wart_1", "mcl_nether:nether_wart_2"} diff --git a/mods/ITEMS/mcl_ocean/kelp.lua b/mods/ITEMS/mcl_ocean/kelp.lua index 422f475ac..fbdb12448 100644 --- a/mods/ITEMS/mcl_ocean/kelp.lua +++ b/mods/ITEMS/mcl_ocean/kelp.lua @@ -741,7 +741,7 @@ minetest.register_craftitem("mcl_ocean:kelp", { inventory_image = "mcl_ocean_kelp_item.png", wield_image = "mcl_ocean_kelp_item.png", on_place = kelp.kelp_on_place, - groups = { deco_block = 1 }, + groups = { deco_block = 1, compostability=30 }, }) if mod_doc then @@ -756,7 +756,7 @@ minetest.register_craftitem("mcl_ocean: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 }, + groups = { food = 2, eatable = 1, compostability=30 }, on_place = minetest.item_eat(1), on_secondary_use = minetest.item_eat(1), _mcl_saturation = 0.6, @@ -773,7 +773,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, hoey = 1, building_block = 1, flammable = 2, fire_encouragement = 30, fire_flammability = 60 }, + groups = { handy = 1, hoey = 1, building_block = 1, flammable = 2, fire_encouragement = 30, fire_flammability = 60, compostability=50 }, sounds = mcl_sounds.node_sound_leaves_defaults(), paramtype2 = "facedir", on_place = mcl_util.rotate_axis, diff --git a/mods/ITEMS/mcl_ocean/sea_pickle.lua b/mods/ITEMS/mcl_ocean/sea_pickle.lua index d215fd3b3..435dc10f0 100644 --- a/mods/ITEMS/mcl_ocean/sea_pickle.lua +++ b/mods/ITEMS/mcl_ocean/sea_pickle.lua @@ -106,7 +106,7 @@ for s=1,4 do }, inventory_image = img, wield_image = img, - groups = { dig_immediate = 3, deco_block = 1, sea_pickle=1, not_in_creative_inventory=nici }, + groups = { dig_immediate = 3, deco_block = 1, sea_pickle=1, not_in_creative_inventory=nici, compostability=65 }, -- Light level: 6 at size 1, +3 for each additional stage light_source = math.min(6 + (s-1)*3, minetest.LIGHT_MAX), selection_box = { diff --git a/mods/ITEMS/mcl_ocean/seagrass.lua b/mods/ITEMS/mcl_ocean/seagrass.lua index 5fd382775..52c506f81 100644 --- a/mods/ITEMS/mcl_ocean/seagrass.lua +++ b/mods/ITEMS/mcl_ocean/seagrass.lua @@ -85,7 +85,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 }, + groups = { deco_block = 1, compostability=30 }, }) -- Seagrass nodes: seagrass on a surface node From ed656a095d3dce45b5fe4485c8b11a3d85bdc317 Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 20 Mar 2022 07:06:59 +0400 Subject: [PATCH 337/521] Restore rabbit textures --- mods/ENTITIES/mcl_mobs/api/api.lua | 1 + mods/ENTITIES/mcl_mobs/api/spawning.lua | 21 +- mods/ENTITIES/mobs_mc/rabbit.lua | 304 +++++++++++------------- mods/MISC/mcl_commands/summon.lua | 40 +++- 4 files changed, 198 insertions(+), 168 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index c72dca0bd..e4eb81b39 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -401,6 +401,7 @@ function mobs:register_mob(name, def) ignited_by_sunlight = def.ignited_by_sunlight or false, eye_height = def.eye_height or 1.5, defuse_reach = def.defuse_reach or 4, + spawn = def.spawn, -- End of MCL2 extensions on_spawn = def.on_spawn, diff --git a/mods/ENTITIES/mcl_mobs/api/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua index 424989426..7fb6983f4 100644 --- a/mods/ENTITIES/mcl_mobs/api/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -267,6 +267,8 @@ function mobs:spawn_setup(def) local day_toggle = def.day_toggle local on_spawn = def.on_spawn local check_position = def.check_position + local group_size_min = def.group_size_min or 1 + local group_size_max = def.group_size_max or 1 -- chance/spawn number override in minetest.conf for registered mob local numbers = minetest.settings:get(name) @@ -300,10 +302,23 @@ function mobs:spawn_setup(def) day_toggle = day_toggle, check_position = check_position, on_spawn = on_spawn, + group_size_min = group_size_min, + group_size_max = group_size_max, } summary_chance = summary_chance + chance end +function mobs.spawn_mob(name, pos) + local def = minetest.registered_entities[name] + if not def then return end + if def.spawn then + return def.spawn(pos) + end + return minetest.add_entity(pos, name) +end + +local spawn_mob = mobs.spawn_mob + function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_light, max_light, interval, chance, aoc, min_height, max_height, day_toggle, on_spawn) -- Do mobs spawn at all? @@ -341,6 +356,8 @@ function mobs:spawn_specific(name, dimension, type_of_spawning, biomes, min_ligh spawn_dictionary[key]["min_height"] = min_height spawn_dictionary[key]["max_height"] = max_height spawn_dictionary[key]["day_toggle"] = day_toggle + spawn_dictionary[key]["group_size_min"] = 1 + spawn_dictionary[key]["group_size_max"] = 3 summary_chance = summary_chance + chance end @@ -442,9 +459,9 @@ if mobs_spawn then and (mob_def.check_position and mob_def.check_position(spawning_position) or true) then --everything is correct, spawn mob - local object = minetest.add_entity(spawning_position, mob_def.name) + local object = spawn_mob(mob_def.name, spawning_position) if object then - return mob_def.on_spawn and mob_def.on_spawn(object, pos) + return mob_def.on_spawn and mob_def.on_spawn(object, spawning_position) end end current_summary_chance = current_summary_chance - mob_chance diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 51235a3f9..34c568a30 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -2,118 +2,27 @@ local S = minetest.get_translator(minetest.get_current_modname()) -local rabbit = { - description = S("Rabbit"), - type = "animal", - spawn_class = "passive", - passive = true, - reach = 1, - rotate = 270, - hp_min = 3, - hp_max = 3, - xp_min = 1, - xp_max = 3, - collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.49, 0.2}, +local mob_name = "mobs_mc:rabbit" - visual = "mesh", - mesh = "mobs_mc_rabbit.b3d", - textures = { +local textures = { {"mobs_mc_rabbit_brown.png"}, {"mobs_mc_rabbit_gold.png"}, {"mobs_mc_rabbit_white.png"}, {"mobs_mc_rabbit_white_splotched.png"}, {"mobs_mc_rabbit_salt.png"}, {"mobs_mc_rabbit_black.png"}, - }, - visual_size = {x=1.5, y=1.5}, - sounds = { - random = "mobs_mc_rabbit_random", - damage = "mobs_mc_rabbit_hurt", - death = "mobs_mc_rabbit_death", - attack = "mobs_mc_rabbit_attack", - eat = "mobs_mc_animal_eat_generic", - distance = 16, - }, - makes_footstep_sound = false, - walk_velocity = 1, - run_velocity = 3.7, - follow_velocity = 1.1, - floats = 1, - runaway = true, - jump = true, - drops = { - {name = mobs_mc.items.rabbit_raw, chance = 1, min = 0, max = 1, looting = "common",}, - {name = mobs_mc.items.rabbit_hide, chance = 1, min = 0, max = 1, looting = "common",}, - {name = mobs_mc.items.rabbit_foot, chance = 10, min = 0, max = 1, looting = "rare", looting_factor = 0.03,}, - }, - fear_height = 4, - animation = { - speed_normal = 25, speed_run = 50, - stand_start = 0, stand_end = 0, - walk_start = 0, walk_end = 20, - run_start = 0, run_end = 20, - }, - -- Follow (yellow) dangelions, carrots and golden carrots - follow = mobs_mc.follow.rabbit, - view_range = 8, - -- Eat carrots and reduce their growth stage by 1 - replace_rate = 10, - replace_what = mobs_mc.replace.rabbit, - on_rightclick = function(self, clicker) - -- Feed, tame protect or capture - if mobs:feed_tame(self, clicker, 1, true, true) then return end - end, - do_custom = function(self) - -- Easter egg: Change texture if rabbit is named “Toast” - if self.nametag == "Toast" and not self._has_toast_texture then - self._original_rabbit_texture = self.base_texture - self.base_texture = { "mobs_mc_rabbit_toast.png" } - self.object:set_properties({ textures = self.base_texture }) - self._has_toast_texture = true - elseif self.nametag ~= "Toast" and self._has_toast_texture then - self.base_texture = self._original_rabbit_texture - self.object:set_properties({ textures = self.base_texture }) - self._has_toast_texture = false - end - end, } -mobs:register_mob("mobs_mc:rabbit", rabbit) +local sounds = { + random = "mobs_mc_rabbit_random", + damage = "mobs_mc_rabbit_hurt", + death = "mobs_mc_rabbit_death", + attack = "mobs_mc_rabbit_attack", + eat = "mobs_mc_animal_eat_generic", + distance = 16, +} --- The killer bunny (Only with spawn egg) -local killer_bunny = table.copy(rabbit) -killer_bunny.description = S("Killer Bunny") -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 -killer_bunny.passive = false --- 8 armor points -killer_bunny.armor = 50 -killer_bunny.textures = { "mobs_mc_rabbit_caerbannog.png" } -killer_bunny.view_range = 16 -killer_bunny.replace_rate = nil -killer_bunny.replace_what = nil -killer_bunny.on_rightclick = nil -killer_bunny.run_velocity = 6 -killer_bunny.do_custom = function(self) - if not self._killer_bunny_nametag_set then - self.nametag = S("The Killer Bunny") - self._killer_bunny_nametag_set = true - end -end - -mobs:register_mob("mobs_mc:killer_bunny", killer_bunny) - --- Mob spawning rules. --- Different skins depending on spawn location <- we'll get to this when the spawning algorithm is fleshed out - -mobs:spawn_specific( -"mobs_mc:rabbit", -"overworld", -"ground", -{ +local biome_list = { "FlowerForest_beach", "Forest_beach", "StoneBeach", @@ -161,73 +70,148 @@ mobs:spawn_specific( "MesaBryce", "JungleEdge", "SavannaM", -}, -9, -minetest.LIGHT_MAX+1, -30, -15000, -8, -mobs_mc.spawn_height.overworld_min, -mobs_mc.spawn_height.overworld_max) - ---[[ -local spawn = { - name = "mobs_mc:rabbit", - neighbors = {"air"}, - chance = 15000, - active_object_count = 10, - min_light = 0, - max_light = minetest.LIGHT_MAX+1, - min_height = mobs_mc.spawn_height.overworld_min, - max_height = mobs_mc.spawn_height.overworld_max, } -local spawn_desert = table.copy(spawn) -spawn_desert.nodes = mobs_mc.spawn.desert -spawn_desert.on_spawn = function(self, pos) - local texture = "mobs_mc_rabbit_gold.png" - self.base_texture = { "mobs_mc_rabbit_gold.png" } - self.object:set_properties({textures = self.base_texture}) -end -mobs:spawn(spawn_desert) - -local spawn_snow = table.copy(spawn) -spawn_snow.nodes = mobs_mc.spawn.snow -spawn_snow.on_spawn = function(self, pos) +local function spawn_rabbit(pos) + local biome_data = minetest.get_biome_data(pos) + local biome_name = biome_data and minetest.get_biome_name(biome_data.biome) or "" + local mob = minetest.add_entity(pos, mob_name) + local self = mob:get_luaentity() local texture - local r = math.random(1, 100) - -- 80% white fur - if r <= 80 then - texture = "mobs_mc_rabbit_white.png" - -- 20% black and white fur + if biome_name:find("Desert") then + texture = "mobs_mc_rabbit_gold.png" else - texture = "mobs_mc_rabbit_white_splotched.png" + local r = math.random(1, 100) + if biome_name:find("Ice") or biome_name:find("snow") or biome_name:find("Cold") then + -- 80% white fur + if r <= 80 then + texture = "mobs_mc_rabbit_white.png" + -- 20% black and white fur + else + texture = "mobs_mc_rabbit_white_splotched.png" + end + else + -- 50% brown fur + if r <= 50 then + texture = "mobs_mc_rabbit_brown.png" + -- 40% salt fur + elseif r <= 90 then + texture = "mobs_mc_rabbit_salt.png" + -- 10% black fur + else + texture = "mobs_mc_rabbit_black.png" + end + end end - self.base_texture = { texture } - self.object:set_properties({textures = self.base_texture}) + self.base_texture = {texture} + self.object:set_properties({textures = {texture}}) end -mobs:spawn(spawn_snow) -local spawn_grass = table.copy(spawn) -spawn_grass.nodes = mobs_mc.spawn.grassland -spawn_grass.on_spawn = function(self, pos) - local texture - local r = math.random(1, 100) - -- 50% brown fur - if r <= 50 then - texture = "mobs_mc_rabbit_brown.png" - -- 40% salt fur - elseif r <= 90 then - texture = "mobs_mc_rabbit_salt.png" - -- 10% black fur - else - texture = "mobs_mc_rabbit_black.png" +local function do_custom_rabbit(self) + -- Easter egg: Change texture if rabbit is named “Toast” + if self.nametag == "Toast" and not self._has_toast_texture then + self._original_rabbit_texture = self.base_texture + self.base_texture = { "mobs_mc_rabbit_toast.png" } + self.object:set_properties({ textures = self.base_texture }) + self._has_toast_texture = true + elseif self.nametag ~= "Toast" and self._has_toast_texture then + self.base_texture = self._original_rabbit_texture + self.object:set_properties({ textures = self.base_texture }) + self._has_toast_texture = false end - self.base_texture = { texture } - self.object:set_properties({textures = self.base_texture}) end -mobs:spawn(spawn_grass) -]]-- + +local rabbit = { + description = S("Rabbit"), + type = "animal", + spawn_class = "passive", + passive = true, + reach = 1, + rotate = 270, + hp_min = 3, + hp_max = 3, + xp_min = 1, + xp_max = 3, + collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.49, 0.2}, + visual = "mesh", + mesh = "mobs_mc_rabbit.b3d", + textures = textures, + visual_size = {x=1.5, y=1.5}, + sounds = sounds, + makes_footstep_sound = false, + walk_velocity = 1, + run_velocity = 3.7, + follow_velocity = 1.1, + floats = 1, + runaway = true, + jump = true, + drops = { + {name = mobs_mc.items.rabbit_raw, chance = 1, min = 0, max = 1, looting = "common",}, + {name = mobs_mc.items.rabbit_hide, chance = 1, min = 0, max = 1, looting = "common",}, + {name = mobs_mc.items.rabbit_foot, chance = 10, min = 0, max = 1, looting = "rare", looting_factor = 0.03,}, + }, + fear_height = 4, + animation = { + speed_normal = 25, speed_run = 50, + stand_start = 0, stand_end = 0, + walk_start = 0, walk_end = 20, + run_start = 0, run_end = 20, + }, + -- Follow (yellow) dangelions, carrots and golden carrots + follow = mobs_mc.follow.rabbit, + view_range = 8, + -- Eat carrots and reduce their growth stage by 1 + replace_rate = 10, + replace_what = mobs_mc.replace.rabbit, + on_rightclick = function(self, clicker) + -- Feed, tame protect or capture + if mobs:feed_tame(self, clicker, 1, true, true) then return end + end, + do_custom = do_custom_rabbit, + spawn = spawn_rabbit +} + +mobs:register_mob(mob_name, rabbit) + +-- The killer bunny (Only with spawn egg) +local killer_bunny = table.copy(rabbit) +killer_bunny.description = S("Killer Bunny") +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 +killer_bunny.passive = false +-- 8 armor points +killer_bunny.armor = 50 +killer_bunny.textures = { "mobs_mc_rabbit_caerbannog.png" } +killer_bunny.view_range = 16 +killer_bunny.replace_rate = nil +killer_bunny.replace_what = nil +killer_bunny.on_rightclick = nil +killer_bunny.run_velocity = 6 +killer_bunny.do_custom = function(self) + if not self._killer_bunny_nametag_set then + self.nametag = S("The Killer Bunny") + self._killer_bunny_nametag_set = true + end +end + +mobs:register_mob("mobs_mc:killer_bunny", killer_bunny) + +-- Mob spawning rules. +-- Different skins depending on spawn location <- we customized spawn function + +mobs:spawn_setup({ + name = mob_name, + min_light = 9, + chance = 1000, + aoc = 8, + biomes = biome_list, + group_size_max = 1, + baby_min = 1, + baby_max = 2, +}) -- Spawn egg mobs:register_egg("mobs_mc:rabbit", S("Rabbit"), "mobs_mc_spawn_icon_rabbit.png", 0) diff --git a/mods/MISC/mcl_commands/summon.lua b/mods/MISC/mcl_commands/summon.lua index 69da0a66c..2a2792f5f 100644 --- a/mods/MISC/mcl_commands/summon.lua +++ b/mods/MISC/mcl_commands/summon.lua @@ -3,13 +3,41 @@ local S = minetest.get_translator(minetest.get_current_modname()) 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 + local params = param:split(" ") + if not params[1] or params[3] then + return false, S("Usage: /spawnentity [,,]") end + local entity_name = params[1] + local pos = params[2] + local entity_def = minetest.registered_entities[entity_name] + if not entity_def then + entity_name = "mobs_mc:" .. entity_name + entity_def = minetest.registered_entities[entity_name] + if not entity_def then + return false, S("Error: Unknown entity name") + end + end + if entity_def._cmi_is_mob then + if minetest.settings:get_bool("only_peaceful_mobs", false) and entity_def.type == "monster" then + return false, S("Only peaceful mobs allowed!") + end + mobs.spawn_mob( + entity_name, + pos + and minetest.string_to_pos(pos) + or vector.add( + minetest.get_player_by_name(name):get_pos(), + { + x = math.random()-0.5, + y = math.random(), + z = math.random()-0.5 + } + ) + ) + return true, S("Mob @1 spawned", entity_name) + end + local bool, msg = orig_func(name, param) + return bool, msg end minetest.unregister_chatcommand("spawnentity") minetest.register_chatcommand("summon", cmd) \ No newline at end of file From 6c196ae63ae5b61e1958393e2a33020018cfb242 Mon Sep 17 00:00:00 2001 From: Mark Roth Date: Sun, 20 Mar 2022 14:07:57 +0200 Subject: [PATCH 338/521] Add compostability to GROUPS.md --- GROUPS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/GROUPS.md b/GROUPS.md index 0aba2c7da..c65b2eb46 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -71,6 +71,7 @@ Please read to learn how digging times * `coral_block=X`: Coral block (1 = alive, 2 = dead) * `coral_species=X`: Specifies the species of a coral; equal X means equal species * `set_on_fire=X`: Sets any (not fire-resistant) mob or player on fire for X seconds when touching +* `compostability`: Amount from 1 to 100 that defines the percentage of likelyhood that the composter will advance a level. #### Footnotes From 6be3d2e0d4f261028dc7b67a77f20877fe5cccf7 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 21 Mar 2022 05:36:02 +0400 Subject: [PATCH 339/521] Add mcl_antispam --- mods/PLAYER/mcl_antispam/init.lua | 113 ++++++++++++++++++++++++++++++ mods/PLAYER/mcl_antispam/mod.conf | 2 + settingtypes.txt | 14 ++++ 3 files changed, 129 insertions(+) create mode 100644 mods/PLAYER/mcl_antispam/init.lua create mode 100644 mods/PLAYER/mcl_antispam/mod.conf diff --git a/mods/PLAYER/mcl_antispam/init.lua b/mods/PLAYER/mcl_antispam/init.lua new file mode 100644 index 000000000..21f550694 --- /dev/null +++ b/mods/PLAYER/mcl_antispam/init.lua @@ -0,0 +1,113 @@ +local ban_spammers = true +local kick_spammers = true +local revoke_shout_for_spammers = true +local limit_messages = 10 +local limit_message_length = 200 +local block_special_chars = true +local enable_antispam = ban_spammers or kick_spammers or revoke_shout_for_spammers + +local function update_settings() + ban_spammers = minetest.settings:get_bool("ban_spammers", true) + kick_spammers = minetest.settings:get_bool("kick_spammers", true) + revoke_shout_for_spammers = minetest.settings:get_bool("revoke_shout_for_spammers", true) + limit_messages = tonumber(minetest.settings:get("limit_messages") or 10) + limit_message_length = tonumber(minetest.settings:get("limit_message_length") or 200) + block_special_chars = minetest.settings:get_bool("block_special_chars", true) + enable_antispam = ban_spammers or kick_spammers or revoke_shout_for_spammers + minetest.after(7, update_settings) +end +update_settings() + +local last_messages = {} +local exceeders = {} +local special_users = {} + +local function ban(name) + if revoke_shout_for_spammers then + local privs = minetest.get_player_privs(name) + if privs then + privs.shoud = nil + privs.noclip = true + minetest.set_player_privs(name, privs) + end + end + if ban_spammers then + minetest.ban_player(name) + elseif kick_spammers then + minetest.kick_player(name) + end +end + +local last_char = string.char(127) + +local function on_chat_message(name, message) + if not enable_antispam then return end + local length = message:len() + if last_messages.job then + last_messages.job:cancel() + last_messages.job = nil + end + if last_messages.name and last_messages.name == name then + last_messages.count = last_messages.count + 1 + last_messages.summary_length = last_messages.summary_length + length + if last_messages.count >= limit_messages then + ban(name) + end + else + last_messages.name = name + last_messages.count = 1 + last_messages.summary_length = length + end + last_messages.job = minetest.after(300, function() + last_messages.name = nil + last_messages.job = nil + end) + if limit_message_length > 0 and message:len() > limit_message_length then + if exceeders[name] then + exceeders[name] = exceeders[name] + 1 + if exceeders[name] > limit_messages then + ban(name) + end + else + exceeders[name] = 1 + end + message = message:sub(1, limit_message_length) .. ">8 >8 >8" + minetest.chat_send_all("<" .. name .. "> " .. message) + return true + else + if exceeders[name] then + exceeders[name] = nil + end + end + if block_special_chars then + local sc = false + local msg = "" + for i = 1, #message do + local c = message:sub(i,i) + if c >= " " and c <= last_char then + msg = msg .. c + else + sc = true + end + end + if sc then + if special_users[name] then + special_users[name] = special_users[name] + 1 + if special_users[name] > limit_messages then + ban(name) + end + else + special_users[name] = 1 + end + message = msg + minetest.chat_send_all("<" .. name .. "> " .. message) + return true + else + if special_users[name] then + special_users[name] = nil + end + end + end +end + +minetest.register_on_chat_message(on_chat_message) diff --git a/mods/PLAYER/mcl_antispam/mod.conf b/mods/PLAYER/mcl_antispam/mod.conf new file mode 100644 index 000000000..ef259eab0 --- /dev/null +++ b/mods/PLAYER/mcl_antispam/mod.conf @@ -0,0 +1,2 @@ +name = mcl_antispam +author = kay27 diff --git a/settingtypes.txt b/settingtypes.txt index dca03b7e1..fc1d26c67 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -165,6 +165,20 @@ kick_cheaters (Kick Cheaters) bool false # Cheat kicking threshold kick_threshold (Cheat Kicking Threshold) int 10 +[Antispam] +# Maximum player messages in a sequence +limit_messages (Maximum player messages in a sequence) int 10 +# Maximum message length +limit_message_length (Maximum message length) int 200 +# Block special characters +block_special_chars (Block special characters) bool true +# Ban spammers +ban_spammers (Ban spammers) bool true +# Kick spammers +kick_spammers (Kick spammers) bool true +# Revoke shout priv for spammers +revoke_shout_for_spammers (Revoke shout priv for spammers) bool true + [Debugging] # If enabled, this will show the itemstring of an item in the description. mcl_item_id_debug (Item ID Debug) bool false From 44d8caf3b7bde1c920133cd7fa030cb04a56a970 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 21 Mar 2022 14:28:58 +0400 Subject: [PATCH 340/521] Fix mcl_antispam --- mods/PLAYER/mcl_antispam/init.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_antispam/init.lua b/mods/PLAYER/mcl_antispam/init.lua index 21f550694..ef568b94d 100644 --- a/mods/PLAYER/mcl_antispam/init.lua +++ b/mods/PLAYER/mcl_antispam/init.lua @@ -26,8 +26,7 @@ local function ban(name) if revoke_shout_for_spammers then local privs = minetest.get_player_privs(name) if privs then - privs.shoud = nil - privs.noclip = true + privs.shout = nil minetest.set_player_privs(name, privs) end end From a75c8d427e07430599219dd77261b1a0e3d414ef Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 21 Mar 2022 19:05:21 +0400 Subject: [PATCH 341/521] Fix rabbit crash --- mods/ENTITIES/mobs_mc/rabbit.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 34c568a30..e63c0d594 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -76,6 +76,7 @@ local function spawn_rabbit(pos) local biome_data = minetest.get_biome_data(pos) local biome_name = biome_data and minetest.get_biome_name(biome_data.biome) or "" local mob = minetest.add_entity(pos, mob_name) + if not mob then return end local self = mob:get_luaentity() local texture if biome_name:find("Desert") then From f49d7da65580a5a710edd5169eb1c5a880c90560 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 13:42:36 +0000 Subject: [PATCH 342/521] Upload Textures 1/2 --- mods/ITEMS/mcl_beds/textures/portal.png | Bin 0 -> 7075 bytes .../mcl_beds/textures/respawn_anchor_bottom.png | Bin 0 -> 6603 bytes .../mcl_beds/textures/respawn_anchor_side0.png | Bin 0 -> 6731 bytes .../mcl_beds/textures/respawn_anchor_side1.png | Bin 0 -> 6880 bytes .../mcl_beds/textures/respawn_anchor_side2.png | Bin 0 -> 6871 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_beds/textures/portal.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_bottom.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side0.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side1.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side2.png diff --git a/mods/ITEMS/mcl_beds/textures/portal.png b/mods/ITEMS/mcl_beds/textures/portal.png new file mode 100644 index 0000000000000000000000000000000000000000..160ad95f38aa07e2ce2acce31ba22b27b75cae9e GIT binary patch literal 7075 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_beds/textures/respawn_anchor_bottom.png b/mods/ITEMS/mcl_beds/textures/respawn_anchor_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d332c15cafa5701183d7b93ec0b3a95052eec4 GIT binary patch literal 6603 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 bdqUM9)8abyrp+Xns1TB!v+XhKt+D?Cw|c_C literal 0 HcmV?d00001 From 6521e1f22e2ef242ab8b536153868339d2da1a6e Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 13:43:03 +0000 Subject: [PATCH 343/521] Upload Textures 2/2 --- .../mcl_beds/textures/respawn_anchor_side3.png | Bin 0 -> 6876 bytes .../mcl_beds/textures/respawn_anchor_side4.png | Bin 0 -> 6871 bytes .../mcl_beds/textures/respawn_anchor_top_off.png | Bin 0 -> 6601 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side3.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side4.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_top_off.png diff --git a/mods/ITEMS/mcl_beds/textures/respawn_anchor_side3.png b/mods/ITEMS/mcl_beds/textures/respawn_anchor_side3.png new file mode 100644 index 0000000000000000000000000000000000000000..f0728943c2d6c10145c113f0bbb362732b9550d4 GIT binary patch literal 6876 zcmeHKc|6o>+aHQ#E2TP?G^XXK%s!);LH1>6>`_{0`3-|v%nUQANQg>DsDvbxN=O_f z9O@vYjY`%!p>oJ_h?MR5&2UQZbKdj3=ks}=|Kc;uecj*ddtLYUzOMWJ{bHOPY*Z9A z6(JCa3fb1u1^mBQ@==fn|E?OIra~a{5y5WTgf3JOl*i{XS$+Ui7{mjhfSAREK*TM% z9;`=I8&oGAuYarXLt#?qH9Nr};*|Pr-SU0#SX_RlgSTw4|4F5mW788M$)T@1lQRF% zB|kuW?%OxoybM>>?^x2$m<)KaYLrtpk}`bf{Lw$UCS5a*SB&5LWqU@ryBNKOvgg^y z70o&OKcTXYi>7Fd7q+iTgijU*h?PTmW#mdVYiE^ELd?4$?2g3F` z$)x$sf4x4Q@@Orr%Q?*PpsxS>U2^l)!+WC}g1Xf!)o$#gJ7oA?RpN*&3L%!i)h>L( zKvdqhXsSHdC8xdN;GspjRdL}F+IC&t^l0?On^pO195zR)yV}L`H{9u1Yn!-+w#NP* z0$YXdN^(7wDp=3++*`6Y@OGHXm7JaXRq%~&7v6emc0b*x1TTJ8Rn%rDI%_D*xSMwC zLt9;|e(BSmq+VZC2vv!9wPD||LXY#}un*OtF#mQ7di z1e^FwvyYBYujN9Mxbd34MbAFBu#*9SZqa?-+UJ=2`LP{YHsr-5`Wg1*|M6=0<;7giaOQM>qk|#4?Tl8lqisRptH;R?9IU3!ZmDox-8^!3$qI*c zm_3;pV$6ks!1>d~lN}SC-J`=zotlAuaDPXydQJVIdpwY07_z~eey|N zm5*h{@C&WpXO{7sO6mwsmlIT#ujQAK>h;RChiW;HADZyVo7AV$=AXUXfsctD{w-hV z#0}xi^Mbma#t-k3&*hjOd%ZiA@9Z3Qe6Uu9yU8`Vw(7jMjkJdB;^d<8U@Gwd)!u`%TZy zG`U_k!9%&~;-L4NV$lPN>Bfh)BJPqR5`!O%2-}ihB}WM^`Dic>>L5ZlKF=s~epI-` zx5HFx--~52LPIw%{W}`bds`8K*URqsA!HuuY9+gEi~wVSqbZQj-;oWd5z z4Xx7}+SW(G8umpzyA{GhJxxAU-(^)QC^EZ$^RWL5o8YlY%U^bx>SlAoLKbG&Uy40% zyLO@gZ?vRhtwMHt_d~ZxePp@k8{31|ORt->3|YuM%vLtoufek%GEB%^9MgYbth+y| z-7%1)H1+V@t~Hhq1NA=!cDPjc=RCN*=b4$!tD-x(TUBAS;UzsurKLfB4vO)Dp(UNa z#wR|f-U!J-h3Xt>C@%<@Sg(ewwb>#)hQSFP|zw7h?F zM%OqY`A1bXrE1kvq@g1>?+I9w?{as9=vm+eoRTPwUgCnq8AKJyzl zPnm6lKo+I4zz2kFlr1DWmyMt@xHJGEX7j)Y2nfW;M9iboeE}hq26(YJ#;}3X3K*2d zFot>HDJTlh0`O+p2J->eUI0O!Xf?J7Mff(3kMW_*Qfb@(p)m{w z&O>L(!CAVM7&OiXkc_4D0wDuQ1_wBBJs<#yL7@n66b6nVBIo*pvlPk~Z;oJAMNm(q zn94(<5hx^^{f&n}XchQ1-d}nM+`#8FqzfS62Jq>CRUp6-uAUo|=NBND8#6!vNKDea z{TNInn3Oc~Tpt@U#p#QWL`E+bn#l5z@y-3DiI6E;plWY z0b_s$%Y{HQprZ*y8Xk~RN%nzc=0rAzVGyXV7AHTdkjdqy#Ud4Y&%a z64}rO*iBdiECI|7gU4a9UqS8wUjUZ5gcXfKU}n;0&`H)HClxF=7Mtn?AbA`wsf%P| zNZ@inX{nO#0GXwBa5W?gK0p<6`EFdUpD|35EmT4&Z7QhIY`c)QaOqMCg!Ici?|xa`onlIR7`Euh1_nW_+QD%lCEUJJNgry72FL{tEns$pt*^1VVlg z`9Cb`f8dN}3f30%Ai$7r0jT556y2N3 z@dCi}cDC96w6p%Akf}r_-GD$x!Rbsi8jhplz(OW4uy8bns7kLAc;zD82a4-S}<%U9$&;$}151ZL-s1Z_f!v48h zBgq*=p^)b4VI(=DNMuPNx(4ugek_3htxkW|&HsX%<3C%Y|H*wWY{uJy%L@X#*jwl* z;{0v+zW~lKY+=y>j)41jsn3PX$TH_50&||RffpQjUn0L;n6p(PX{7(+&usPm7bAew z--G-keZR}~U9Nwmz&`?iudeTM{UZhb5%_y`{lCej`1O?=;DFD4BJhP8kFibxU&iHW z_BNJ~X~}PTd3FM5S;({9E`UH(%OoF}lVyA|Xj~v9Q>+%eQChlU$s&h&Xln>WHl1u~ z=0>R7nqcOw?xlV=^b9wi+Vn|CK3bsF?QT(A?-NsHuLmz*;i3?I2^ymVGdDH5yrBLN zthQlT^GO0sWudnoahcru^@-sl4RB$M*_o@!3p*bvx84{7f}7f7f=(|8eL4Qi^v44O zy(O3sSl{E)ecCD1gsHNWH+k}d{(a1*sx%#64R4^MvRi?h=F!~fY53t_{p49AS<}bQ z3RX363Lg;-Q!Qf{EuUMXACG!xSYB_@Q+uCqI9R3fkXH81b1BY{2A>rxr#et(KP*m3 z8h*X%?T;UQpBqoSjvP?_KttwwDyEZm)-2SvoS*&pyqlgbtZH42s}5u-x!Ub;o#I~B za~EgWHqRUIBMNClNwym-$CF787l(-UkAqw}sbHw&yMY#>)m28PDZ zRKI`pN}z0mj*pZvSao2`Sx(l!?U*q|4$ zyn{M`_+`3?HM(rsyv)_w6=V7-6DRWJV_^3Ntz*)y7oEyu^$m`lem616j}4t}hI;6G z+9k#&<{>+H1*j#bB`@vPC8>#U6eFKRbx|E)@?GDIYsSl}mnLb87akoTc z>rcIX?{4a(4UN5Rr#y|;)R^XsjTAG-N90NGp0L%`8X2)MS+uCD{+y8mXPg(SMf5%H ddZ9J3D3xM+G<3H`6j;6xvXz5np84MJe*v{$;S2x( literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_beds/textures/respawn_anchor_side4.png b/mods/ITEMS/mcl_beds/textures/respawn_anchor_side4.png new file mode 100644 index 0000000000000000000000000000000000000000..e9bea53717765275c6a7dd8b8c8b1843bb9f29f8 GIT binary patch literal 6871 zcmeHKdpy%^|6d7F6bd=qttp2z+iZ4fbI7pKaz0d~9lm2>n{8}J2c?vRbdFL|y346Z zk)%>R4k^bR>!F11N^V65`F%I;((k!{_w&17ujlzMUSrqidVk)Z&-K1OpX>U5_qeTb zQd8Aag+L%`G%Cdd{6AmznXLr=UHtn50|HUn8|~#M_Fzb$0wJHn4F#a$C;VhuU&Yt-zImGs zVo=sg_YfQtlk2U^;&we5H*3wfRPpB1o$jQPEusy0G3w-vt%c0dTYbrc7zG2UA`D;roOBPpedfr>& zYMZY-#(1fuwZ7A^%n*`~SY#o!yOyP(&{`Zl9O0^`0{N(B@;RY;^JU?>k?e^b3-*^i z&FnR-m7c8l;5lZvS!DNRsP?sV%d5pz=jvZ{J|&bLCEVW-@J=JeF`%jZ;Klgu3sZi# zg7-L&DHSzF0RGIBa<)*IbC0qUtK&+@U7NbOYmD_QF35D zV?|$!VV3Rex|PYd6^CMDxAa$gCA-hzRL)Gy?VzZgy$9a^2W)5Z6{&ZWl zy(<1uv-O8fqU_WU-KyL@pGmb_rM^r!g1W2g>EGk4X>w}SUbAI1!a~M7&85zor~}#T zBa3=;g|%ib53eu4!wdY8WgBhHn!WRG?$QhS)k6eV8))1-2Y$8bZc(SRBx9xc%>9$4 zBb_yw+r9L*?9_15vm7?nx`2)Pw1|_=t**Ud(DER3-B$mJlUAi`MLM1#8;O?~o19Bj z)(JJWgErPi&Ftl(w(X2eM4LY^M<uI;7-ham!u5`C z?WyakJ?79gQJKEBDVFiZgkMq6(#mUGaU$`w_pUi!HKrBVy=gt0u9i0sC@@~U>^Lc)@jsvY&M!d4GUyvFZQFTc{) z*HK@346$$30@v)f914tQQx!FOr@rQwQ4Pth>jK;d4a>JFL6n(jVaSfKj-ntH&9}w< zqUT+#Pwfqneb2MIPq;Nvo@f}enS)6E4;PQc8&CL2Ey=I<(Q+S|3K7w^+w$M6S+ug1 zoIdy_p5xR_J$-z*p4331#8=xHR%R?B5>^F_-!MA-qK^H3`zh0dWL|qJI~~bdbOS7+LsMt2=*2!6qFZ86vJ%|$A zbjJseM5&)z;Z+<~_w1ENsp*t~VSg z)QZSmF*M$8^jg=PCsOR@&;m(hLvC0yGL% zQh1P(bzC3+X_>d5>8SaL{_BDM!ddS9=9djx?sPaZ7IY1X5}U@2pAYvpHO!j1mkH#n ze0=LrI8gTN%g{Qfc&f#2j^SGV%O`VzUX|Cy_vxjoOGzJj7ghs3AU zF)A9vMhz$l|M&3=YRS5F=5!CAQh-;NK_D~Yx%T#MG<*9$ZYA(8N{>w?Q}5UsR0XcjKC^JQ zwnlh@TgHk6=kSBewJTR~&5H&%3I}vBT&jn^fnsaij>U=I$~r*-hW?6nLkf56>S&K0 zoWBHm1Z(tGhTC*^#dMY{+(=UO+?PkQb*GaTCabh{{`zdI!{RvIyQXJg=psrqN}=^# z#JqWdZ(*dG@y=6Ofe-cP4$ZzRTHQ$RQS0eHcOksnM7{8Usn#hi*M6~Gk5itDdPTTJ z`)@CfEg`2JH&NG^Q>A{Gc=V7sUb+jv!hHFQm@Dcv=_PpcLwX@yX%)y6U*87*^MpA3 z;S^iVnM<4892JdWMZccar9R$LTV)gaIqms@2i{6X_hwfg4@W4z| z=I5%**7qP27LP8iZy7BFtXv^a(Sq!&GSof*{uH9T`<68Ia%(_$S7Td8MbNtOamdS0 z!WQeVc771ZymT)3nBYfWO=R)IEEsG)6R?nm3Bbn)2!v!K6);#KfEdaIg19^~>}^>E z49aDbVZK&$Bwb(+1aqm;LclY6jTb9AghgP(Y^+sDQX)tY28bC@X;>&vM3j5V3?@ftbtZL1ml_CO<+< zhQYvj=oC3P%W{x{#;E|Zv7BBcW+Q0e00XWE1RyMtNIV>A3AZF5ru&1lbow`Mo@h!% zP)~%EAwZxkkchCbA3Q{2hsf{o{?tR{1wO4IJOB|tLdXIfA_1P*XnIgVXoP5b%m@)6 zGs*J~WpfZygd;OCn&nZ~Q-?|IkaGi(FSCh0ltR1*K8QFj>AtHlM|16XjpAcq|Lc zMx)`DOq>-QgW?e21SX0D$6y%%%ZiO;p$UX(R5YGQ%;2#A85Kxw!3B8;NWcn%v%i;TPQ=!;S0mS_Tuu`e2M7$lovM) z@Dwv-vZ1hO92$!zSm98X1UzbTeR4)0KqvysT*it*T3A}j-PtUnBgn}B%Z(ex2m%lS zUXXl3wlPF-IiR!*S$BZUayz&hqP-Aci1|VHR*0Sv0zoJj5dNssA9eG8;HLRc)#$%-pAMV!w&x3? zz%C9JyGnR}8U9azlMJi5EPyBC|5fVKA(OI9yNJM?CvD&b2i}*6Zx`lNmBAob56e@ow=a{ZL+Zz=G%z(1?&r(AzafxiX*SzZ4zxm3Tuasxc@xlaPVP|tI2 z`vks>D=}T1D3A%+Z)W-VG|-|Vpsp1`AnG?{pBaa42x*{ESxlolD8HDarK6>ht3zf( zATtlqD0W`>nt(KyU@i9ryDDmv)b0B=QDdz#z2lO#7Y8IjVb^pPEQfVbyT;;5`#tOg zMsZ#`yi1B**UhvCZ=1AlqdGWj-ZpDVu*Urynl4(a$E^Hb6~3{*%>e)9W%tDJI4&Yu zT98pg6#I1XQ)`H{Er0!?DtvDl=*uM`h4L_)G~|dPgGUt)XMgM^li5u z+>)rT=%W%r1-LCbs7bJZ>~<2fy0aAauX%GpaR z4+j?SB-gCt1SB(o31gmrw2Cdi^0Z%s*L-RmE?CuP{_J%foiStkKf7)~p*|j9HoF%p zY%?6 zB^{TPnL3nQbCGhT$d{Xm#=bj~fHc4ITgd)nam8tK60yb~bu@Oy*FX2x`!XZSc=a*` T^vy`HW+60(HI%$n8{_^53$e8L literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_beds/textures/respawn_anchor_top_off.png b/mods/ITEMS/mcl_beds/textures/respawn_anchor_top_off.png new file mode 100644 index 0000000000000000000000000000000000000000..a180e96e7deee1fd6f3f539d047f482700f62676 GIT binary patch literal 6601 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 Date: Wed, 23 Mar 2022 13:44:18 +0000 Subject: [PATCH 344/521] upload main lua script --- mods/ITEMS/mcl_beds/respawn_anchor.lua | 166 +++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 mods/ITEMS/mcl_beds/respawn_anchor.lua diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua new file mode 100644 index 000000000..882e1963a --- /dev/null +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -0,0 +1,166 @@ +--TODO: Add sounds for the respawn anchor + +--Nether ends at y -29077 +--Nether roof at y -28933 + + +minetest.register_node("mcl_beds:respawn_anchor",{ + description="respawn anchor", + tiles = { + "respawn_anchor_top_off.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side0.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, -0.47, 0.5}, -- Bottom level, -0.47 because -0.5 is so low that you can see the texture of the block below through + } + }, + on_rightclick = function(pos, node, player, itemstack) + minetest.log("tried to charge") + minetest.log(player.get_player_name(player)) + minetest.log(itemstack.get_name(itemstack)) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_1"}) + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + end + end + end, + groups = {pickaxey=1, material_stone=1}, + _mcl_hardness = 22.5 +}) +minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ + description="respawn anchor", + tiles = { + "portal.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side1.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level + } + }, + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_2"}) + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 +}) + +minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ + description="respawn anchor", + tiles = { + "portal.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side2.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level + } + }, + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_3"}) + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 +}) + +minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ + description="respawn anchor", + tiles = { + "portal.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side3.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level + } + }, + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_4"}) + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 +}) + +minetest.register_node("mcl_beds:respawn_anchor_charged_4",{ + description="respawn anchor", + tiles = { + "portal.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side4.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level + } + }, + on_rightclick = function(pos, node, player, itemstack) + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 +}) From 1dd81decd5a990e1f0edf206d407d0c07bf2e00a Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 13:45:14 +0000 Subject: [PATCH 345/521] update init.lua to load the respawn anchors --- mods/ITEMS/mcl_beds/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_beds/init.lua b/mods/ITEMS/mcl_beds/init.lua index 4c25b5390..ad9dbdded 100644 --- a/mods/ITEMS/mcl_beds/init.lua +++ b/mods/ITEMS/mcl_beds/init.lua @@ -10,3 +10,4 @@ local modpath = minetest.get_modpath("mcl_beds") dofile(modpath .. "/functions.lua") dofile(modpath .. "/api.lua") dofile(modpath .. "/beds.lua") +dofile(modpath .. "/respawn_anchor.lua") \ No newline at end of file From d97c7b29c6197055095cf77168d1f21aba45d5f0 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 13:46:11 +0000 Subject: [PATCH 346/521] update dependencies --- mods/ITEMS/mcl_beds/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/mod.conf b/mods/ITEMS/mcl_beds/mod.conf index c3378d1f0..cc3f3ff18 100644 --- a/mods/ITEMS/mcl_beds/mod.conf +++ b/mods/ITEMS/mcl_beds/mod.conf @@ -2,4 +2,4 @@ name = mcl_beds author = BlockMen description = depends = playerphysics -optional_depends = mcl_sounds, mcl_worlds, mcl_wool, mcl_dye, mcl_explosions, mcl_weather, mcl_spawn, doc +optional_depends = mcl_sounds, mcl_worlds, mcl_wool, mcl_dye, mcl_explosions, mcl_weather, mcl_spawn, doc, mcl_nether \ No newline at end of file From fb6315ea62d70c8caa74b4924780a272429ed971 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 13:51:28 +0000 Subject: [PATCH 347/521] add crafting recepie --- mods/ITEMS/mcl_beds/respawn_anchor.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua index 882e1963a..98c983b60 100644 --- a/mods/ITEMS/mcl_beds/respawn_anchor.lua +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -164,3 +164,8 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_4",{ groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, _mcl_hardness = 22.5 }) + +minetest.register_craft({ output = "mcl_beds:respawn_anchor", + recipe = { {"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"}, + {"mcl_nether:glowstone", "mcl_nether:glowstone", "mcl_nether:glowstone"}, + {"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"} } }) \ No newline at end of file From a32531c8f667d099520a1e653d21c0277f945b1c Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 13:52:53 +0000 Subject: [PATCH 348/521] update mcl_spawm to support respawn anchors --- mods/PLAYER/mcl_spawn/init.lua | 59 +++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/mods/PLAYER/mcl_spawn/init.lua b/mods/PLAYER/mcl_spawn/init.lua index de4db5094..2af279b2c 100644 --- a/mods/PLAYER/mcl_spawn/init.lua +++ b/mods/PLAYER/mcl_spawn/init.lua @@ -452,10 +452,61 @@ function mcl_spawn.get_player_spawn_pos(player) if bgroup ~= 1 and bgroup ~= 2 then -- Bed is destroyed: if player and player:is_player() then - player:get_meta():set_string("mcl_beds:spawn", "") + + local function split(s, delimiter) --this is just a common function to split strings, since it is way harder to do in lua like in python, java etc. + result = {}; + for match in (s..delimiter):gmatch("(.-)"..delimiter) do + table.insert(result, match); + end + return result; + end + minetest.log(player:get_meta():get_string("mcl_beds:spawn")) + s = split(player:get_meta():get_string("mcl_beds:spawn"), ",") + x = nil + y = nil + z = nil + for key, value in pairs(s) do + if key == 1 then + value = value:sub(2) + x = tonumber(value) + else + if key == 2 then + y = tonumber(value) + else + if key == 3 then + value = value:sub(1, -2) + z = tonumber(value) + end + end + end + end + + checkblock = {x = x, y = y, z = z} + + if minetest.get_node(checkblock).name == "mcl_beds:respawn_anchor_charged_1" then + minetest.set_node(checkblock, {name="mcl_beds:respawn_anchor"}) + player:set_pos(checkblock) + else + if minetest.get_node(checkblock).name == "mcl_beds:respawn_anchor_charged_2" then + minetest.set_node(checkblock, {name="mcl_beds:respawn_anchor_charged_1"}) + player:set_pos(checkblock) + else + if minetest.get_node(checkblock).name == "mcl_beds:respawn_anchor_charged_3" then + minetest.set_node(checkblock, {name="mcl_beds:respawn_anchor_charged_2"}) + player:set_pos(checkblock) + else + if minetest.get_node(checkblock).name == "mcl_beds:respawn_anchor_charged_4" then + minetest.set_node(checkblock, {name="mcl_beds:respawn_anchor_charged_3"}) + player:set_pos(checkblock) + else + player:get_meta():set_string("mcl_beds:spawn", "") + minetest.chat_send_player(player:get_player_name(), S("Your spawn bed was missing or blocked, and you had no charged respawn anchor")) + return mcl_spawn.get_world_spawn_pos(), false + end + end + end + end end - minetest.chat_send_player(player:get_player_name(), S("Your spawn bed was missing or blocked.")) - return mcl_spawn.get_world_spawn_pos(), false end -- Find spawning position on/near the bed free of solid or damaging blocks iterating a square spiral 15x15: @@ -531,4 +582,4 @@ minetest.after(respawn_search_initial_delay, function() storage:set_int("mcl_spawn_dir_step", dir_step) storage:set_int("mcl_spawn_dir_ind", dir_ind) end) -end) +end) \ No newline at end of file From fc59d05679a09e84ea4ed25117416ac31fbe9697 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 13:54:53 +0000 Subject: [PATCH 349/521] remove debug logging 1/2 --- mods/PLAYER/mcl_spawn/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/PLAYER/mcl_spawn/init.lua b/mods/PLAYER/mcl_spawn/init.lua index 2af279b2c..ca6aa97b1 100644 --- a/mods/PLAYER/mcl_spawn/init.lua +++ b/mods/PLAYER/mcl_spawn/init.lua @@ -460,7 +460,6 @@ function mcl_spawn.get_player_spawn_pos(player) end return result; end - minetest.log(player:get_meta():get_string("mcl_beds:spawn")) s = split(player:get_meta():get_string("mcl_beds:spawn"), ",") x = nil y = nil From 6c41b8a265550330474b9b2dffa6cc758b3b2e64 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 13:55:38 +0000 Subject: [PATCH 350/521] remove debug logging 2/2 --- mods/ITEMS/mcl_beds/respawn_anchor.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua index 98c983b60..61e32144a 100644 --- a/mods/ITEMS/mcl_beds/respawn_anchor.lua +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -23,9 +23,6 @@ minetest.register_node("mcl_beds:respawn_anchor",{ } }, on_rightclick = function(pos, node, player, itemstack) - minetest.log("tried to charge") - minetest.log(player.get_player_name(player)) - minetest.log(itemstack.get_name(itemstack)) if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_1"}) else From 1c12f3da19e1d5bb83abfbb65d0d3e015ac90ef0 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 23 Mar 2022 21:11:03 +0000 Subject: [PATCH 351/521] Charging no longer not consuming --- mods/ITEMS/mcl_beds/respawn_anchor.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua index 61e32144a..0e96ce25d 100644 --- a/mods/ITEMS/mcl_beds/respawn_anchor.lua +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -25,6 +25,7 @@ minetest.register_node("mcl_beds:respawn_anchor",{ on_rightclick = function(pos, node, player, itemstack) if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_1"}) + itemstack:take_item() else if pos.y < -29077 or pos.y > -28933 then mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) @@ -55,6 +56,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ on_rightclick = function(pos, node, player, itemstack) if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_2"}) + itemstack:take_item() else if pos.y < -29077 or pos.y > -28933 then mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) @@ -88,6 +90,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ on_rightclick = function(pos, node, player, itemstack) if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_3"}) + itemstack:take_item() else if pos.y < -29077 or pos.y > -28933 then mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) @@ -121,6 +124,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ on_rightclick = function(pos, node, player, itemstack) if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_4"}) + itemstack:take_item() else if pos.y < -29077 or pos.y > -28933 then mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) From 7ad5f7c66e1c5b97245e004700e50a0ee2532275 Mon Sep 17 00:00:00 2001 From: CableGuy67 Date: Thu, 24 Mar 2022 17:44:09 +0000 Subject: [PATCH 352/521] Incorrect fortune effect on a non-ore This Easter Egg had almost a year. Time to put it to bed. --- mods/ITEMS/mcl_nether/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 35da05553..90bdaa800 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -78,7 +78,6 @@ minetest.register_node("mcl_nether:netheriteblock", { _mcl_blast_resistance = 1200, _mcl_hardness = 50, _mcl_silk_touch_drop = true, - _mcl_fortune_drop = mcl_core.fortune_drop_ore }) -- For eternal fire on top of netherrack and magma blocks From 9e72966f91eddb5af98447a6529c8c2bc0f37bac Mon Sep 17 00:00:00 2001 From: CableGuy67 Date: Thu, 24 Mar 2022 18:42:45 +0000 Subject: [PATCH 353/521] missed the comma on the previous line When removing the last line the previous comma wasn't removed. --- mods/ITEMS/mcl_nether/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 90bdaa800..d5201e682 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -77,7 +77,7 @@ minetest.register_node("mcl_nether:netheriteblock", { sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 1200, _mcl_hardness = 50, - _mcl_silk_touch_drop = true, + _mcl_silk_touch_drop = true }) -- For eternal fire on top of netherrack and magma blocks From 86bef3e0556b5d06952528be20bc79082104a962 Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 25 Mar 2022 02:33:15 +0400 Subject: [PATCH 354/521] Merge master into testing --- mods/ITEMS/mcl_beds/init.lua | 1 + mods/ITEMS/mcl_beds/mod.conf | 2 +- mods/ITEMS/mcl_beds/respawn_anchor.lua | 172 ++++++++++++++++++ mods/ITEMS/mcl_beds/textures/portal.png | Bin 0 -> 7075 bytes .../textures/respawn_anchor_bottom.png | Bin 0 -> 6603 bytes .../textures/respawn_anchor_side0.png | Bin 0 -> 6731 bytes .../textures/respawn_anchor_side1.png | Bin 0 -> 6880 bytes .../textures/respawn_anchor_side2.png | Bin 0 -> 6871 bytes .../textures/respawn_anchor_side3.png | Bin 0 -> 6876 bytes .../textures/respawn_anchor_side4.png | Bin 0 -> 6871 bytes .../textures/respawn_anchor_top_off.png | Bin 0 -> 6601 bytes mods/ITEMS/mcl_nether/init.lua | 3 +- mods/PLAYER/mcl_spawn/init.lua | 58 +++++- 13 files changed, 229 insertions(+), 7 deletions(-) create mode 100644 mods/ITEMS/mcl_beds/respawn_anchor.lua create mode 100644 mods/ITEMS/mcl_beds/textures/portal.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_bottom.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side0.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side1.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side2.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side3.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_side4.png create mode 100644 mods/ITEMS/mcl_beds/textures/respawn_anchor_top_off.png diff --git a/mods/ITEMS/mcl_beds/init.lua b/mods/ITEMS/mcl_beds/init.lua index 4c25b5390..ad9dbdded 100644 --- a/mods/ITEMS/mcl_beds/init.lua +++ b/mods/ITEMS/mcl_beds/init.lua @@ -10,3 +10,4 @@ local modpath = minetest.get_modpath("mcl_beds") dofile(modpath .. "/functions.lua") dofile(modpath .. "/api.lua") dofile(modpath .. "/beds.lua") +dofile(modpath .. "/respawn_anchor.lua") \ No newline at end of file diff --git a/mods/ITEMS/mcl_beds/mod.conf b/mods/ITEMS/mcl_beds/mod.conf index c3378d1f0..cc3f3ff18 100644 --- a/mods/ITEMS/mcl_beds/mod.conf +++ b/mods/ITEMS/mcl_beds/mod.conf @@ -2,4 +2,4 @@ name = mcl_beds author = BlockMen description = depends = playerphysics -optional_depends = mcl_sounds, mcl_worlds, mcl_wool, mcl_dye, mcl_explosions, mcl_weather, mcl_spawn, doc +optional_depends = mcl_sounds, mcl_worlds, mcl_wool, mcl_dye, mcl_explosions, mcl_weather, mcl_spawn, doc, mcl_nether \ No newline at end of file diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua new file mode 100644 index 000000000..0e96ce25d --- /dev/null +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -0,0 +1,172 @@ +--TODO: Add sounds for the respawn anchor + +--Nether ends at y -29077 +--Nether roof at y -28933 + + +minetest.register_node("mcl_beds:respawn_anchor",{ + description="respawn anchor", + tiles = { + "respawn_anchor_top_off.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side0.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, -0.47, 0.5}, -- Bottom level, -0.47 because -0.5 is so low that you can see the texture of the block below through + } + }, + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_1"}) + itemstack:take_item() + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + end + end + end, + groups = {pickaxey=1, material_stone=1}, + _mcl_hardness = 22.5 +}) +minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ + description="respawn anchor", + tiles = { + "portal.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side1.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level + } + }, + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_2"}) + itemstack:take_item() + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 +}) + +minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ + description="respawn anchor", + tiles = { + "portal.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side2.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level + } + }, + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_3"}) + itemstack:take_item() + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 +}) + +minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ + description="respawn anchor", + tiles = { + "portal.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side3.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level + } + }, + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_4"}) + itemstack:take_item() + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 +}) + +minetest.register_node("mcl_beds:respawn_anchor_charged_4",{ + description="respawn anchor", + tiles = { + "portal.png", + "respawn_anchor_bottom.png", + "respawn_anchor_side4.png" + }, + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall + {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall + {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level + } + }, + on_rightclick = function(pos, node, player, itemstack) + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 +}) + +minetest.register_craft({ output = "mcl_beds:respawn_anchor", + recipe = { {"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"}, + {"mcl_nether:glowstone", "mcl_nether:glowstone", "mcl_nether:glowstone"}, + {"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"} } }) \ No newline at end of file diff --git a/mods/ITEMS/mcl_beds/textures/portal.png b/mods/ITEMS/mcl_beds/textures/portal.png new file mode 100644 index 0000000000000000000000000000000000000000..160ad95f38aa07e2ce2acce31ba22b27b75cae9e GIT binary patch literal 7075 zcmeHLc{tQ-`yVQ0NjW8)lxY&7*~iS7gY1kfb1b18%<>(E+00_BSu0u;(#c8Mi6c3s zjx22|ElAOFkP~H6N4AKQ?f0Fb((mm(?|ZK6J^wXx&GOvO=lHT;DW`o8v;2 zZ&e@=$U?G{od@{4SoT?<1b*wiouWb@N{6Dod_^8q36wA3FD?Y`cZy= z56w6;tYPJ0UwYTJ#K?)VF*nP0$ymp|XRTE+0jPY%JnMMp3&X*A;{Q@k*SD6)DI7;%)knEw)T^4+l*f4+Oifw@+e9WMgQ1bxNktKS2YyZ7xCw^KX6 zJMd@JmfV6Nomh$OxImzN@AmJ~vHq^7xo@jWjCw2fZ+c8qI`P{sQhwX&bv+5@ZLOG+ zB;K|1HlG`7)Z4$i(lAsb@lQ5JFTT9?!3hVg(_>~KRyS_#RL!ePuCXvY%J0&sn&TcG zC<<3Lt%E*eC$uN{Z4n(EYm3$+IPv@Siy28MkN1E6esPPY=!e#>v?_C7Yh-)6iYZ<= zmhKHrDS7VrN@>);?{Iw>B>B}gzo4MEKiCi1NjJCdx#lXmaxJA`+q`U+B1EIXjj~Nq zyFbU~n9C)U7VO#DX9d=K`KfKz3Ma2G*(6X~m8{zlhkv)U;<12s$e}?|!-z3AGvSC* z3GAEY;{|q!i_S0ga53ug$~^JYCUrCEJ|QB?@bX5Rv^ClO&KVvXvY_8*GK^quMP+wP zp=S9%g%x^)aTadJJ8_>pEj@C+!D8r%=e=sttMk7qjOc`)$Z*u@bXdU|R9g~7lltY? zky?+<^Vt-BGTX=R?CVf1|2HZ=RS&Yy2yT0yc~|P-#+nG95I^cJy-Dzlp+@=EJn~3i z(DF*3({M%GQSmu|g>0AB=V2Eh-QYHBy_a}m+yW3=AoJjBiT z>&x||ZTY>w2Q_eBZ=v=Y^7MQUR<@|=wbeJO*DNerwBYhD-)?vwFrga*<@gZd-kBIE zE=$dhDK*(``BXz+6dfwafDfeY--F_W`!7xJS#FTQR78N*0BC~pw&2MujJv=NzL;=(uGdmI)ONs5jwgVGkegw_o4d;I&N znoU9q$4|QT$6FMj7Dh&VzvFJ|f?eBd_Oy$(a#P)#e~s~_N-tcwdPG~x#_#+vMx&_S{iS zjrhg=1~q$|-B56!dgh*(n#VS)YZQ%1o`8CpLv(ZMRu_|Z5sWmaN<$Z9R_n9Iign(7 zBI2^x6j9d`gRr`qt?9yIMd|AwZI>S{JgZJgw<>Y2ymP09ZCk9_D|OakwU#UH9$0Jl za91$9$@idtX3n_+peVFy=eG#E+O+$AXq2#fwKJqj@eNmG{}E8^{{x zEBv_DWLt%){Nva)9QyJt^OChR1-?}gIpKbFt09gXqryktkc<(d(fcSc2xV#Z!?gUX zYnqF04DO2+5dB4?#ClxH)t>oJmlgV~Mq60LXA_8L;BdHJmr0}0uz7FVSQctqm->*4 zIsDRnzitLypJVFT_#{Osx=XWU?Q@%iEd(5YMVe-{t`Y$au&x36z> za;dSQKrK%x&GCB#TN%*QXq4kv-y`@QT6#THe?@?V@Wbhr>zcofD~sKW`(I>BS~iw0 zaV?8j7VCuXFoho`#***Bb%RSNt$K?hYIY3~A7pkLXV>o!o65So-Q47{hU?LsZyj;l z#R&$R+numBK5tVt7Pvp{39VAQbm)?$l>Q@YQ|Pl1gPyR7nCI_0UX?XYgh(bE*K~=W z#FG8nCt6Nd|H{xCyMiS5@|=lMt)cS|C-gk0yxmrJwU~I&R2B~zePE;E_GRWv+>fSHm5WilV^;|QU{)u>-F_o^tLP5RM+8t4pVFtwYse7q#0BiD+P4a zE{@i4aAEF881Sd_N29g6{Muhm>Q00<&=TDB^MGxvCA`J%ycVUGah;1z?idf4 z4V06$^tZgI=p0=B(k5$Oo(`s|FsgI$FTUMDCzJi|H>c9CYj`&q1>Pzz7PNO3Xa8I* zcAvZ!2J|0b0ZQR>ccPXSy2$KIC?nIr25U7=ENNL2VoqzV6GZ_ zj@Dz2>u+-ql7tRJTYOjkivpt;Z?BB$#Ca~$uA2A$QCs__F=8C#L9_Ru5|KFfrpmtR z-htk{hW1H|rq_M*)4T+wZ`g^ez)M6Z3%oe^y1J0)JPv}&;L!j?B!>@PEFci`^^trk zJq!>*X+SWGYXR%4ybOb~7#1)eQ&*HL-xdgAIYkQq&uBLzRPb{*4!N7Uw3^_PUw~qvcGX`X1IlWNCK$5`$4qOiiKw?lRA{>Q* zW6Y4V^}$(J*N@s<;Y<|4cp@XId?XryLUK5tX$VF35ufaRQA6kj-rtZOfRHB^&;k1h zfGb)(+bEwc7S6UQ76LMn+;296i3FXJTb`}sNOq-s)RBcTn8o4CHDu`7NCy2QjxQFl z{lKUc$E6I*W7t4&2?JQt2 ze@P4;oy8!@{}M3_6axV8a3+z-gyR4j0H@+`bT|%+#h{rCA_Hqmm_~6^%E8<53tY22ID|(EwgfCCdZJnnJdKVGyWK5(=9tV)6tW z3z!RwD~|j$;l<(ro+7F&XlOi+h{6!?1T2bxC8BVjKpO#p5G-;TCmMx76Xi1uI>`ZK zq=Lo9;!uMDB%d2BpOB@61TF>)ELGMUAhTQ!u7zYP0H`9Kz>CLYTfk(#LS>ZlmV%nk zGz-avN0%$g!2mX9!Qi{qJ}_K|ius3q%s0Ak1ChP74L- zqQB<(68IyN2e{V>MS>{ue^}K2!K6HpIIJ*!C+$WL<}5DFhj#}R15&8$r_zVz%l5iGzce`>k+SpRL-x#NJF2TIX?A|iWjij3ENd)JF`v(70fNu-{-F>4 z4Q`hHOwau%_1Um#ZCf5c3fz-IMD7yqUz+~{aGJq|MF+S--e0*s8!{c1S;s2q^Rx^+ zuEEnE`SJLlsd_La|Kw|?oBl}?Q0P}9e=ELU!}T>>e=7oi3;eaZzJ}{>Mc{9NzgE}( zELD$y6>cuuy6}AN(nZgy z=5?dX0^TnUh<@%lYWaHCB8YlzN04>s&t*w#@MWu9C7oOKuT}V+8)=DoG&S`{U`r+8 z3>|Up7gvO1?Ql37TYvj$*WPrF2d^9w8L)TRI+K_#+v*OQpPxChJQEl!FB{m%=`k(* z^ScydnwOcE>f`(3LlbUUw_Vcsb_Ip6b%!qx3_iT14$W-1dvJbF#E6cX=918D1=;qo zrdCZ>ItpJw&h1{gM(Udlbwk4#N$3;Jtal@$WyQY6 z^|VM*|GZj!hH|{c9ZyrP@G`09UEp8a1VdJ^}?owRzk6W}Un4M2D>|NRSyVf4s>lBP!dTW*066ZfvRP0ZT-0oJ|`M4mb z5@_-cRhn(XHOHOZ(lHs~-Fb)4;Uvkg2ExV{gsIgZyNL`?5Hm zM_GHI%J(y4(%FP?+B&prro;1xx!1 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_beds/textures/respawn_anchor_bottom.png b/mods/ITEMS/mcl_beds/textures/respawn_anchor_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d332c15cafa5701183d7b93ec0b3a95052eec4 GIT binary patch literal 6603 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 bdqUM9)8abyrp+Xns1TB!v+XhKt+D?Cw|c_C literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_beds/textures/respawn_anchor_side3.png b/mods/ITEMS/mcl_beds/textures/respawn_anchor_side3.png new file mode 100644 index 0000000000000000000000000000000000000000..f0728943c2d6c10145c113f0bbb362732b9550d4 GIT binary patch literal 6876 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_beds/textures/respawn_anchor_side4.png b/mods/ITEMS/mcl_beds/textures/respawn_anchor_side4.png new file mode 100644 index 0000000000000000000000000000000000000000..e9bea53717765275c6a7dd8b8c8b1843bb9f29f8 GIT binary patch literal 6871 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 T^vy`HW+60(HI%$n8{_^53$e8L literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_beds/textures/respawn_anchor_top_off.png b/mods/ITEMS/mcl_beds/textures/respawn_anchor_top_off.png new file mode 100644 index 0000000000000000000000000000000000000000..a180e96e7deee1fd6f3f539d047f482700f62676 GIT binary patch literal 6601 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 Date: Fri, 25 Mar 2022 11:20:07 +0700 Subject: [PATCH 355/521] Fix some formatting issues --- mods/ENTITIES/extra_mobs/dolphin.lua | 2 +- mods/ENTITIES/extra_mobs/piglin.lua | 4 +- mods/ITEMS/mcl_mushroom/init.lua | 677 ++++++++++++++------------- 3 files changed, 355 insertions(+), 328 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/dolphin.lua b/mods/ENTITIES/extra_mobs/dolphin.lua index 11cafff70..7d4ee7d2e 100644 --- a/mods/ENTITIES/extra_mobs/dolphin.lua +++ b/mods/ENTITIES/extra_mobs/dolphin.lua @@ -246,4 +246,4 @@ water-16, water) --spawn egg -mobs:register_egg("extra_mobs:dolphin", S("dolphin"), "extra_mobs_spawn_icon_dolphin.png", 0) +mobs:register_egg("extra_mobs:dolphin", S("Dolphin"), "extra_mobs_spawn_icon_dolphin.png", 0) diff --git a/mods/ENTITIES/extra_mobs/piglin.lua b/mods/ENTITIES/extra_mobs/piglin.lua index 35fa8a2f4..60eb7fb32 100644 --- a/mods/ENTITIES/extra_mobs/piglin.lua +++ b/mods/ENTITIES/extra_mobs/piglin.lua @@ -296,5 +296,5 @@ minetest.LIGHT_MAX+1, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) -- spawn eggs -mobs:register_egg("extra_mobs:piglin", S("piglin"), "extra_mobs_spawn_icon_piglin.png", 0) -mobs:register_egg("extra_mobs:piglin_brute", S("piglin Brute"), "extra_mobs_spawn_icon_piglin.png", 0) +mobs:register_egg("extra_mobs:piglin", S("Piglin"), "extra_mobs_spawn_icon_piglin.png", 0) +mobs:register_egg("extra_mobs:piglin_brute", S("Piglin Brute"), "extra_mobs_spawn_icon_piglin.png", 0) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 9e44fdcf3..1cbd318b8 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -3,7 +3,7 @@ local S = minetest.get_translator("mcl_mushroom") -- function grow() function grow_twisting_vines(pos, moreontop) local y = pos.y + 1 - while not (moreontop == 0) do + while not (moreontop == 0) do if minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "air" then minetest.set_node({x = pos.x, y = y, z = pos.z}, {name="mcl_mushroom:twisting_vines"}) moreontop = moreontop - 1 @@ -13,18 +13,18 @@ function grow_twisting_vines(pos, moreontop) else moreontop = 0 end - end + end end -- Warped fungus -- Crimson fungus ---Functions and Biomes +-- Functions and Biomes -- WARNING: The most comments are in german. Please Translate with an translater if you don't speak good german minetest.register_node("mcl_mushroom:warped_fungus", { - description = S("Warped Fungus Mushroom"), + description = S("Warped Fungus Mushroom"), drawtype = "plantlike", tiles = { "farming_warped_fungus.png" }, inventory_image = "farming_warped_fungus.png", @@ -33,7 +33,6 @@ minetest.register_node("mcl_mushroom:warped_fungus", { paramtype = "light", walkable = false, groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, compostability=65}, - light_source = 1, selection_box = { type = "fixed", @@ -43,22 +42,22 @@ minetest.register_node("mcl_mushroom:warped_fungus", { on_rightclick = function(pos, node, pointed_thing, itemstack) if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then - itemstack:take_item() - local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) - if nodepos.name == "mcl_mushroom:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then + itemstack:take_item() + local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) + if nodepos.name == "mcl_mushroom:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then local random = math.random(1, 5) if random == 1 then generate_warped_tree(pos) end - end - end - end, - _mcl_blast_resistance = 0, - stack_max = 64, + end + end + end, + _mcl_blast_resistance = 0, + stack_max = 64, }) minetest.register_node("mcl_mushroom:twisting_vines", { - description = S("Twisting Vines"), + description = S("Twisting Vines"), drawtype = "plantlike", tiles = { "twisting_vines_plant.png" }, inventory_image = "twisting_vines.png", @@ -117,12 +116,12 @@ minetest.register_node("mcl_mushroom:nether_sprouts", { drop = "", _mcl_shears_drop = true, _mcl_silk_touch_drop = false, - _mcl_blast_resistance = 0, - stack_max = 64, + _mcl_blast_resistance = 0, + stack_max = 64, }) minetest.register_node("mcl_mushroom:warped_roots", { - description = S("Warped Roots"), + description = S("Warped Roots"), drawtype = "plantlike", tiles = { "warped_roots.png" }, inventory_image = "warped_roots.png", @@ -137,26 +136,26 @@ minetest.register_node("mcl_mushroom:warped_roots", { }, node_placement_prediction = "", _mcl_silk_touch_drop = false, - _mcl_blast_resistance = 0, - stack_max = 64, + _mcl_blast_resistance = 0, + stack_max = 64, }) minetest.register_node("mcl_mushroom:warped_wart_block", { - description = S("Warped Wart Block"), - tiles = {"warped_wart_block.png"}, - groups = {handy=1,hoe=7,swordy=1, compostability=85, deco_block=1, }, - stack_max = 64, - _mcl_hardness = 2, + description = S("Warped Wart Block"), + tiles = {"warped_wart_block.png"}, + groups = {handy=1,hoe=7,swordy=1, compostability=85, deco_block=1, }, + stack_max = 64, + _mcl_hardness = 2, }) minetest.register_node("mcl_mushroom:shroomlight", { - description = S("Shroomlight"), - tiles = {"shroomlight.png"}, - groups = {handy=1,hoe=7,swordy=1, leaves=1, deco_block=1, compostability=65, }, - stack_max = 64, - _mcl_hardness = 2, - -- this is 15 in Minecraft - light_source = 14, + description = S("Shroomlight"), + tiles = {"shroomlight.png"}, + groups = {handy=1,hoe=7,swordy=1, leaves=1, deco_block=1, compostability=65, }, + stack_max = 64, + _mcl_hardness = 2, + -- this is 15 in Minecraft + light_source = 14, }) minetest.register_node("mcl_mushroom:warped_hyphae", { @@ -212,29 +211,29 @@ minetest.register_node("mcl_mushroom:warped_checknode", { }) minetest.register_node("mcl_mushroom:warped_hyphae_wood", { - description = S("Warped Hyphae Wood"), - tiles = {"warped_hyphae_wood.png"}, - groups = {handy=5,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 2, + description = S("Warped Hyphae Wood"), + tiles = {"warped_hyphae_wood.png"}, + groups = {handy=5,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, + --paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 2, }) -mcl_stairs.register_stair_and_slab_simple("warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood", S("Warped Stair"), S("Warped Slab"), S("Double Warped Slab")) +mcl_stairs.register_stair_and_slab_simple("warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood", S("Warped Stair"), S("Warped Slab"), S("Double Warped Slab"), "woodlike") minetest.register_craft({ - output = "mcl_mushroom:warped_hyphae_wood 4", - recipe = { - {"mcl_mushroom:warped_hyphae"}, - } + output = "mcl_mushroom:warped_hyphae_wood 4", + recipe = { + {"mcl_mushroom:warped_hyphae"}, + } }) minetest.register_craft({ - output = "mcl_mushroom:warped_nylium 2", - recipe = { - {"mcl_mushroom:warped_wart_block"}, - {"mcl_nether:netherrack"}, - } + output = "mcl_mushroom:warped_nylium 2", + recipe = { + {"mcl_mushroom:warped_wart_block"}, + {"mcl_nether:netherrack"}, + } }) minetest.register_abm({ @@ -245,11 +244,11 @@ minetest.register_abm({ action = function(pos) local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) if nodepos.name == "mcl_mushroom:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then - if pos.y < -28400 then - generate_warped_tree(pos) - end + if pos.y < -28400 then + generate_warped_tree(pos) + end end - end + end }) minetest.register_abm({ @@ -260,27 +259,26 @@ minetest.register_abm({ action = function(pos) local nodepos = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}) if nodepos.name == "air" then - minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_mushroom:warped_nylium" }) - local randomg = math.random(1, 400) - if randomg <= 5 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_fungus" }) - elseif randomg > 5 and randomg <= 15 then - local pos1 = { x = pos.x, y = pos.y + 1, z = pos.z } - generate_warped_tree(pos1) - elseif randomg > 15 and randomg <= 45 then - grow_twisting_vines({ x = pos.x, y = pos.y, z = pos.z } ,math.random(1, 4)) - elseif randomg > 45 and randomg <= 50 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_fungus" }) - elseif randomg > 50 and randomg <= 150 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:nether_sprouts" }) - elseif randomg > 150 and randomg <= 250 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_roots" }) - end - + minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_mushroom:warped_nylium" }) + local randomg = math.random(1, 400) + if randomg <= 5 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_fungus" }) + elseif randomg > 5 and randomg <= 15 then + local pos1 = { x = pos.x, y = pos.y + 1, z = pos.z } + generate_warped_tree(pos1) + elseif randomg > 15 and randomg <= 45 then + grow_twisting_vines({ x = pos.x, y = pos.y, z = pos.z } ,math.random(1, 4)) + elseif randomg > 45 and randomg <= 50 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_fungus" }) + elseif randomg > 50 and randomg <= 150 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:nether_sprouts" }) + elseif randomg > 150 and randomg <= 250 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_roots" }) + end else - minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_nether:netherrack" }) + minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_nether:netherrack" }) end - end + end }) @@ -297,7 +295,7 @@ minetest.register_abm({ minetest.register_node("mcl_mushroom:crimson_fungus", { - description = S("Crimson Fungus Mushroom"), + description = S("Crimson Fungus Mushroom"), drawtype = "plantlike", tiles = { "farming_crimson_fungus.png" }, inventory_image = "farming_crimson_fungus.png", @@ -306,7 +304,6 @@ minetest.register_node("mcl_mushroom:crimson_fungus", { paramtype = "light", walkable = false, groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1, compostability=65}, - light_source = 1, selection_box = { type = "fixed", @@ -315,23 +312,22 @@ minetest.register_node("mcl_mushroom:crimson_fungus", { node_placement_prediction = "", on_rightclick = function(pos, node, pointed_thing, itemstack) if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then - itemstack:take_item() - local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) - if nodepos.name == "mcl_mushroom:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then - local random = math.random(1, 5) - if random == 1 then - generate_crimson_tree(pos) - end - end + itemstack:take_item() + local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) + if nodepos.name == "mcl_mushroom:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then + local random = math.random(1, 5) + if random == 1 then + generate_crimson_tree(pos) + end + end end - end, + end, _mcl_blast_resistance = 0, - - stack_max = 64, + stack_max = 64, }) minetest.register_node("mcl_mushroom:crimson_roots", { - description = S("Crimson Roots"), + description = S("Crimson Roots"), drawtype = "plantlike", tiles = { "crimson_roots.png" }, inventory_image = "crimson_roots.png", @@ -346,87 +342,90 @@ minetest.register_node("mcl_mushroom:crimson_roots", { }, node_placement_prediction = "", _mcl_silk_touch_drop = false, - _mcl_blast_resistance = 0, - stack_max = 64, + _mcl_blast_resistance = 0, + stack_max = 64, }) minetest.register_node("mcl_mushroom:crimson_hyphae", { - description = S("Crimson Hyphae"), - tiles = {"crimson_hyphae.png", - "crimson_hyphae.png", - "crimson_hyphae_side.png", - "crimson_hyphae_side.png", - "crimson_hyphae_side.png", - "crimson_hyphae_side.png", - }, - groups = {handy=5,axey=1, bark=1, building_block=1, material_wood=1,}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 2, + description = S("Crimson Hyphae"), + tiles = { + "crimson_hyphae.png", + "crimson_hyphae.png", + "crimson_hyphae_side.png", + "crimson_hyphae_side.png", + "crimson_hyphae_side.png", + "crimson_hyphae_side.png", + }, + groups = {handy=5,axey=1, bark=1, building_block=1, material_wood=1,}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 2, }) minetest.register_node("mcl_mushroom:crimson_hyphae_wood", { - description = S("Crimson Hyphae Wood"), - tiles = {"crimson_hyphae_wood.png"}, - groups = {handy=5,axey=1, wood=1,building_block=1, material_wood=1,}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 2, + description = S("Crimson Hyphae Wood"), + tiles = {"crimson_hyphae_wood.png"}, + groups = {handy=5,axey=1, wood=1,building_block=1, material_wood=1,}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 2, }) minetest.register_node("mcl_mushroom:crimson_nylium", { - description = S("Crimson Nylium"), - tiles = {"crimson_nylium.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png^crimson_nylium_side.png", - "mcl_nether_netherrack.png^crimson_nylium_side.png", - "mcl_nether_netherrack.png^crimson_nylium_side.png", - "mcl_nether_netherrack.png^crimson_nylium_side.png", - }, - groups = {pickaxey=1, building_block=1, material_stone=1}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 0.4, - _mcl_blast_resistance = 0.4, - is_ground_content = true, - drop = "mcl_nether:netherrack", - _mcl_silk_touch_drop = true, + description = S("Crimson Nylium"), + tiles = { + "crimson_nylium.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png^crimson_nylium_side.png", + "mcl_nether_netherrack.png^crimson_nylium_side.png", + "mcl_nether_netherrack.png^crimson_nylium_side.png", + "mcl_nether_netherrack.png^crimson_nylium_side.png", + }, + groups = {pickaxey=1, building_block=1, material_stone=1}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 0.4, + _mcl_blast_resistance = 0.4, + is_ground_content = true, + drop = "mcl_nether:netherrack", + _mcl_silk_touch_drop = true, }) minetest.register_node("mcl_mushroom:crimson_checknode", { - description = S("Crimson Checknode - only to check!"), - tiles = {"mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - }, - groups = {pickaxey=1, building_block=1, material_stone=1, not_in_creative_inventory=1}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 0.4, - _mcl_blast_resistance = 0.4, - is_ground_content = true, - drop = "mcl_nether:netherrack" + description = S("Crimson Checknode - only to check!"), + tiles = { + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + }, + groups = {pickaxey=1, building_block=1, material_stone=1, not_in_creative_inventory=1}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 0.4, + _mcl_blast_resistance = 0.4, + is_ground_content = true, + drop = "mcl_nether:netherrack" }) minetest.register_craft({ - output = "mcl_mushroom:crimson_hyphae_wood 4", - recipe = { - {"mcl_mushroom:crimson_hyphae"}, - } + output = "mcl_mushroom:crimson_hyphae_wood 4", + recipe = { + {"mcl_mushroom:crimson_hyphae"}, + } }) minetest.register_craft({ - output = "mcl_mushroom:crimson_nylium 2", - recipe = { - {"mcl_nether:nether_wart"}, - {"mcl_nether:netherrack"}, - } + output = "mcl_mushroom:crimson_nylium 2", + recipe = { + {"mcl_nether:nether_wart"}, + {"mcl_nether:netherrack"}, + } }) -mcl_stairs.register_stair_and_slab_simple("crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood", "Crimson Stair", "Crimson Slab", "Double Crimson Slab") +mcl_stairs.register_stair_and_slab_simple("crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood", "Crimson Stair", "Crimson Slab", "Double Crimson Slab", "woodlike") minetest.register_abm({ label = "mcl_mushroom:crimson_fungus", @@ -436,11 +435,11 @@ minetest.register_abm({ action = function(pos) local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) if nodepos.name == "mcl_mushroom:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then - if pos.y < -28400 then - generate_crimson_tree(pos) - end + if pos.y < -28400 then + generate_crimson_tree(pos) + end end - end + end }) minetest.register_abm({ @@ -451,176 +450,204 @@ minetest.register_abm({ action = function(pos) local nodepos = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}) if nodepos.name == "air" then - minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_mushroom:crimson_nylium" }) - local randomg = math.random(1, 400) - if randomg <= 10 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_fungus" }) - elseif randomg > 10 and randomg <= 25 then - local pos1 = { x = pos.x, y = pos.y + 1, z = pos.z } - generate_crimson_tree(pos1) - elseif randomg > 25 and randomg <= 30 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_fungus" }) - elseif randomg > 30 and randomg <= 130 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_roots" }) - end + minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_mushroom:crimson_nylium" }) + local randomg = math.random(1, 400) + if randomg <= 10 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_fungus" }) + elseif randomg > 10 and randomg <= 25 then + local pos1 = { x = pos.x, y = pos.y + 1, z = pos.z } + generate_crimson_tree(pos1) + elseif randomg > 25 and randomg <= 30 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_fungus" }) + elseif randomg > 30 and randomg <= 130 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_roots" }) + end else - minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_nether:netherrack" }) + minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_nether:netherrack" }) end - end + end }) function generate_warped_tree(pos) local breakgrow = false local breakgrow2 = false - -- Baumgenerator - -- erste und zweite Etage + -- Tree generator + -- first and second floor for x = pos.x - 2,pos.x + 2 do - for y = pos.y + 3, pos.y + 4 do - for z = pos.z - 2, pos.z + 2 do - if not (minetest.get_node({x = x, y = y, z = z}).name == "air") then breakgrow = true end - end + for y = pos.y + 3, pos.y + 4 do + for z = pos.z - 2, pos.z + 2 do + if not (minetest.get_node({x = x, y = y, z = z}).name == "air") then + breakgrow = true + end end - end + end + end - -- dritte und vierte Etage + -- third and fourth floors for x = pos.x - 1,pos.x + 1 do - for y = pos.y + 5, pos.y + 6 do - for z = pos.z - 1, pos.z + 1 do - if not (minetest.get_node({x = x, y = y, z = z}).name == "air") then breakgrow = true end - end - end - end + for y = pos.y + 5, pos.y + 6 do + for z = pos.z - 1, pos.z + 1 do + if not (minetest.get_node({x = x, y = y, z = z}).name == "air") then + breakgrow = true + end + end + end + end - -- fünfte Etage - if not (minetest.get_node({x = pos.x, y = pos.y + 7, z = pos.z}).name == "air") then breakgrow = true end + -- fifth floor + if not (minetest.get_node({x = pos.x, y = pos.y + 7, z = pos.z}).name == "air") then + breakgrow = true + end - -- Holz - if not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "air") and not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "mcl_mushroom:warped_fungus") then breakgrow = true end - for y = pos.y + 1, pos.y + 4 do - if not (minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "air") then breakgrow = true end - end - if not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "air") and not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "mcl_mushroom:warped_fungus") then breakgrow2 = true end - if breakgrow == false then - -- Warzen - -- erste und zweite Etage - for x = pos.x - 2,pos.x + 2 do - for y = pos.y + 3, pos.y + 4 do - for z = pos.z - 2, pos.z + 2 do - minetest.set_node({x = x, y = y, z = z}, { name = "mcl_mushroom:warped_wart_block" }) - end - end - end + -- Wood + if not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "air") and not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "mcl_mushroom:warped_fungus") then + breakgrow = true + end + for y = pos.y + 1, pos.y + 4 do + if not (minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "air") then + breakgrow = true + end + end + if not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "air") and not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "mcl_mushroom:warped_fungus") then + breakgrow2 = true + end + if breakgrow == false then + -- Warts + -- first and second floor + for x = pos.x - 2,pos.x + 2 do + for y = pos.y + 3, pos.y + 4 do + for z = pos.z - 2, pos.z + 2 do + minetest.set_node({x = x, y = y, z = z}, { name = "mcl_mushroom:warped_wart_block" }) + end + end + end - -- dritte und vierte Etage - for x = pos.x - 1,pos.x + 1 do - for y = pos.y + 5, pos.y + 6 do - for z = pos.z - 1, pos.z + 1 do - minetest.set_node({x = x, y = y, z = z}, { name = "mcl_mushroom:warped_wart_block" }) - end - end - end + -- third and fourth floors + for x = pos.x - 1,pos.x + 1 do + for y = pos.y + 5, pos.y + 6 do + for z = pos.z - 1, pos.z + 1 do + minetest.set_node({x = x, y = y, z = z}, { name = "mcl_mushroom:warped_wart_block" }) + end + end + end - -- fünfte Etage - minetest.set_node({x = pos.x, y = pos.y + 7, z = pos.z}, { name = "mcl_mushroom:warped_wart_block" }) + -- fifth floor + minetest.set_node({x = pos.x, y = pos.y + 7, z = pos.z}, { name = "mcl_mushroom:warped_wart_block" }) - -- Pilzlich - local randomgenerate = math.random(1, 2) - if randomgenerate == 1 then - local randomx = math.random(-2, 2) - local randomz = math.random(-2, 2) - minetest.set_node({x = pos.x + randomx, y = pos.y + 3, z = pos.z + randomz}, { name = "mcl_mushroom:shroomlight" }) - end - local randomgenerate = math.random(1, 8) - if randomgenerate == 4 then - local randomx = math.random(-2, 2) - local randomz = math.random(-2, 2) - minetest.set_node({x = pos.x + randomx, y = pos.y + 3, z = pos.z + randomz}, { name = "mcl_mushroom:shroomlight" }) - end - -- Holz - for y = pos.y, pos.y + 4 do - minetest.set_node({x = pos.x, y = y, z = pos.z}, { name = "mcl_mushroom:warped_hyphae" }) - --print("Placed at " .. x .. " " .. y .. " " .. z) - end - else - if breakgrow2 == false then minetest.set_node(pos,{ name = "mcl_mushroom:warped_fungus" }) end - end + -- Fungal + local randomgenerate = math.random(1, 2) + if randomgenerate == 1 then + local randomx = math.random(-2, 2) + local randomz = math.random(-2, 2) + minetest.set_node({x = pos.x + randomx, y = pos.y + 3, z = pos.z + randomz}, { name = "mcl_mushroom:shroomlight" }) + end + local randomgenerate = math.random(1, 8) + if randomgenerate == 4 then + local randomx = math.random(-2, 2) + local randomz = math.random(-2, 2) + minetest.set_node({x = pos.x + randomx, y = pos.y + 3, z = pos.z + randomz}, { name = "mcl_mushroom:shroomlight" }) + end + -- Wood + for y = pos.y, pos.y + 4 do + minetest.set_node({x = pos.x, y = y, z = pos.z}, { name = "mcl_mushroom:warped_hyphae" }) + --print("Placed at " .. x .. " " .. y .. " " .. z) + end + else + if breakgrow2 == false then + minetest.set_node(pos,{ name = "mcl_mushroom:warped_fungus" }) + end + end end function generate_crimson_tree(pos) local breakgrow = false local breakgrow2 = false - -- Baumgenerator - -- erste und zweite Etage + -- Tree generator + -- first and second floor for x = pos.x - 2,pos.x + 2 do - for y = pos.y + 3, pos.y + 4 do - for z = pos.z - 2, pos.z + 2 do - if not (minetest.get_node({x = x, y = y, z = z}).name == "air") then breakgrow = true end - end + for y = pos.y + 3, pos.y + 4 do + for z = pos.z - 2, pos.z + 2 do + if not (minetest.get_node({x = x, y = y, z = z}).name == "air") then + breakgrow = true + end end - end + end + end - -- dritte und vierte Etage + -- third and fourth floors for x = pos.x - 1,pos.x + 1 do - for y = pos.y + 5, pos.y + 6 do - for z = pos.z - 1, pos.z + 1 do - if not (minetest.get_node({x = x, y = y, z = z}).name == "air") then breakgrow = true end - end - end - end + for y = pos.y + 5, pos.y + 6 do + for z = pos.z - 1, pos.z + 1 do + if not (minetest.get_node({x = x, y = y, z = z}).name == "air") then + breakgrow = true + end + end + end + end - -- fünfte Etage - if not (minetest.get_node({x = pos.x, y = pos.y + 7, z = pos.z}).name == "air") then breakgrow = true end + -- fifth floor + if not (minetest.get_node({x = pos.x, y = pos.y + 7, z = pos.z}).name == "air") then + breakgrow = true + end - -- Holz - if not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "air") and not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "mcl_mushroom:crimson_fungus") then breakgrow = true end - for y = pos.y + 1, pos.y + 4 do - if not (minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "air") then breakgrow = true end - end - if not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "air") and not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "mcl_mushroom:crimson_fungus") then breakgrow2 = true end - if breakgrow == false then - -- Warzen - -- erste und zweite Etage - for x = pos.x - 2,pos.x + 2 do - for y = pos.y + 3, pos.y + 4 do - for z = pos.z - 2, pos.z + 2 do - minetest.set_node({x = x, y = y, z = z}, { name = "mcl_nether:nether_wart_block" }) - end - end - end + -- Wood + if not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "air") and not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "mcl_mushroom:crimson_fungus") then + breakgrow = true + end + for y = pos.y + 1, pos.y + 4 do + if not (minetest.get_node({x = pos.x, y = y, z = pos.z}).name == "air") then + breakgrow = true + end + end + if not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "air") and not (minetest.get_node({x = pos.x, y = pos.y, z = pos.z}).name == "mcl_mushroom:crimson_fungus") then + breakgrow2 = true + end + if breakgrow == false then + -- Warts + -- first and second floor + for x = pos.x - 2,pos.x + 2 do + for y = pos.y + 3, pos.y + 4 do + for z = pos.z - 2, pos.z + 2 do + minetest.set_node({x = x, y = y, z = z}, { name = "mcl_nether:nether_wart_block" }) + end + end + end - -- dritte und vierte Etage - for x = pos.x - 1,pos.x + 1 do - for y = pos.y + 5, pos.y + 6 do - for z = pos.z - 1, pos.z + 1 do - minetest.set_node({x = x, y = y, z = z}, { name = "mcl_nether:nether_wart_block" }) - end - end - end + -- third and fourth floors + for x = pos.x - 1,pos.x + 1 do + for y = pos.y + 5, pos.y + 6 do + for z = pos.z - 1, pos.z + 1 do + minetest.set_node({x = x, y = y, z = z}, { name = "mcl_nether:nether_wart_block" }) + end + end + end - -- fünfte Etage - minetest.set_node({x = pos.x, y = pos.y + 7, z = pos.z}, { name = "mcl_nether:nether_wart_block" }) + -- fifth floor + minetest.set_node({x = pos.x, y = pos.y + 7, z = pos.z}, { name = "mcl_nether:nether_wart_block" }) - -- Pilzlich - local randomgenerate = math.random(1, 2) - if randomgenerate == 1 then - local randomx = math.random(-2, 2) - local randomz = math.random(-2, 2) - minetest.set_node({x = pos.x + randomx, y = pos.y + 3, z = pos.z + randomz}, { name = "mcl_mushroom:shroomlight" }) - end - local randomgenerate = math.random(1, 8) - if randomgenerate == 4 then - local randomx = math.random(-2, 2) - local randomz = math.random(-2, 2) - minetest.set_node({x = pos.x + randomx, y = pos.y + 3, z = pos.z + randomz}, { name = "mcl_mushroom:shroomlight" }) - end - -- Holz - for y = pos.y, pos.y + 4 do - minetest.set_node({x = pos.x, y = y, z = pos.z}, { name = "mcl_mushroom:crimson_hyphae" }) - --print("Placed at " .. x .. " " .. y .. " " .. z) - end - else - if breakgrow2 == false then minetest.set_node(pos,{ name = "mcl_mushroom:crimson_fungus" }) end - end + -- Fungal + local randomgenerate = math.random(1, 2) + if randomgenerate == 1 then + local randomx = math.random(-2, 2) + local randomz = math.random(-2, 2) + minetest.set_node({x = pos.x + randomx, y = pos.y + 3, z = pos.z + randomz}, { name = "mcl_mushroom:shroomlight" }) + end + local randomgenerate = math.random(1, 8) + if randomgenerate == 4 then + local randomx = math.random(-2, 2) + local randomz = math.random(-2, 2) + minetest.set_node({x = pos.x + randomx, y = pos.y + 3, z = pos.z + randomz}, { name = "mcl_mushroom:shroomlight" }) + end + -- Wood + for y = pos.y, pos.y + 4 do + minetest.set_node({x = pos.x, y = y, z = pos.z}, { name = "mcl_mushroom:crimson_hyphae" }) + --print("Placed at " .. x .. " " .. y .. " " .. z) + end + else + if breakgrow2 == false then + minetest.set_node(pos,{ name = "mcl_mushroom:crimson_fungus" }) + end + end end @@ -662,45 +689,45 @@ minetest.register_decoration({ }) ]] minetest.register_ore({ - ore_type = "sheet", - ore = "mcl_mushroom:warped_checknode", - -- Note: Stone is included only for v6 mapgen support. Netherrack is not generated naturally - -- in v6, but instead set with the on_generated function in mcl_mapgen_core. - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 14 * 14 * 14, - clust_size = 10, - y_min = -29065, - y_max = -28940, - noise_threshold = 0.0, - noise_params = { - offset = 0.5, - scale = 0.1, - spread = {x = 8, y = 8, z = 8}, - seed = 4996, - octaves = 1, - persist = 0.0 - }, + ore_type = "sheet", + ore = "mcl_mushroom:warped_checknode", + -- Note: Stone is included only for v6 mapgen support. Netherrack is not generated naturally + -- in v6, but instead set with the on_generated function in mcl_mapgen_core. + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 14 * 14 * 14, + clust_size = 10, + y_min = -29065, + y_max = -28940, + noise_threshold = 0.0, + noise_params = { + offset = 0.5, + scale = 0.1, + spread = {x = 8, y = 8, z = 8}, + seed = 4996, + octaves = 1, + persist = 0.0 + }, }) minetest.register_ore({ - ore_type = "sheet", - ore = "mcl_mushroom:crimson_checknode", - -- Note: Stone is included only for v6 mapgen support. Netherrack is not generated naturally - -- in v6, but instead set with the on_generated function in mcl_mapgen_core. - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 10 * 10 * 10, - clust_size = 10, - y_min = -29065, - y_max = -28940, - noise_threshold = 0.0, - noise_params = { - offset = 1, - scale = 0.5, - spread = {x = 12, y = 12, z = 12}, - seed = 12948, - octaves = 1, - persist = 0.0 - }, + ore_type = "sheet", + ore = "mcl_mushroom:crimson_checknode", + -- Note: Stone is included only for v6 mapgen support. Netherrack is not generated naturally + -- in v6, but instead set with the on_generated function in mcl_mapgen_core. + wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, + clust_scarcity = 10 * 10 * 10, + clust_size = 10, + y_min = -29065, + y_max = -28940, + noise_threshold = 0.0, + noise_params = { + offset = 1, + scale = 0.5, + spread = {x = 12, y = 12, z = 12}, + seed = 12948, + octaves = 1, + persist = 0.0 + }, }) From ddb618c2e368edd8a2c9cee3c164a80b3142032c Mon Sep 17 00:00:00 2001 From: rudzik8 Date: Sat, 26 Mar 2022 20:29:25 +0700 Subject: [PATCH 356/521] Fix comment translation in mcl_mushroom --- mods/ITEMS/mcl_mushroom/init.lua | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 1cbd318b8..ae9ba0b4b 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -472,7 +472,7 @@ function generate_warped_tree(pos) local breakgrow = false local breakgrow2 = false -- Tree generator - -- first and second floor + -- first and second layer for x = pos.x - 2,pos.x + 2 do for y = pos.y + 3, pos.y + 4 do for z = pos.z - 2, pos.z + 2 do @@ -483,7 +483,7 @@ function generate_warped_tree(pos) end end - -- third and fourth floors + -- third and fourth layers for x = pos.x - 1,pos.x + 1 do for y = pos.y + 5, pos.y + 6 do for z = pos.z - 1, pos.z + 1 do @@ -494,7 +494,7 @@ function generate_warped_tree(pos) end end - -- fifth floor + -- fifth layer if not (minetest.get_node({x = pos.x, y = pos.y + 7, z = pos.z}).name == "air") then breakgrow = true end @@ -513,7 +513,7 @@ function generate_warped_tree(pos) end if breakgrow == false then -- Warts - -- first and second floor + -- first and second layer for x = pos.x - 2,pos.x + 2 do for y = pos.y + 3, pos.y + 4 do for z = pos.z - 2, pos.z + 2 do @@ -522,7 +522,7 @@ function generate_warped_tree(pos) end end - -- third and fourth floors + -- third and fourth layers for x = pos.x - 1,pos.x + 1 do for y = pos.y + 5, pos.y + 6 do for z = pos.z - 1, pos.z + 1 do @@ -531,7 +531,7 @@ function generate_warped_tree(pos) end end - -- fifth floor + -- fifth layer minetest.set_node({x = pos.x, y = pos.y + 7, z = pos.z}, { name = "mcl_mushroom:warped_wart_block" }) -- Fungal @@ -563,7 +563,7 @@ function generate_crimson_tree(pos) local breakgrow = false local breakgrow2 = false -- Tree generator - -- first and second floor + -- first and second layer for x = pos.x - 2,pos.x + 2 do for y = pos.y + 3, pos.y + 4 do for z = pos.z - 2, pos.z + 2 do @@ -574,7 +574,7 @@ function generate_crimson_tree(pos) end end - -- third and fourth floors + -- third and fourth layers for x = pos.x - 1,pos.x + 1 do for y = pos.y + 5, pos.y + 6 do for z = pos.z - 1, pos.z + 1 do @@ -585,7 +585,7 @@ function generate_crimson_tree(pos) end end - -- fifth floor + -- fifth layer if not (minetest.get_node({x = pos.x, y = pos.y + 7, z = pos.z}).name == "air") then breakgrow = true end @@ -604,7 +604,7 @@ function generate_crimson_tree(pos) end if breakgrow == false then -- Warts - -- first and second floor + -- first and second layer for x = pos.x - 2,pos.x + 2 do for y = pos.y + 3, pos.y + 4 do for z = pos.z - 2, pos.z + 2 do @@ -613,7 +613,7 @@ function generate_crimson_tree(pos) end end - -- third and fourth floors + -- third and fourth layers for x = pos.x - 1,pos.x + 1 do for y = pos.y + 5, pos.y + 6 do for z = pos.z - 1, pos.z + 1 do @@ -622,7 +622,7 @@ function generate_crimson_tree(pos) end end - -- fifth floor + -- fifth layer minetest.set_node({x = pos.x, y = pos.y + 7, z = pos.z}, { name = "mcl_nether:nether_wart_block" }) -- Fungal From fa4a554b28fdc4dacebdb3a63022b8a6337d2e3e Mon Sep 17 00:00:00 2001 From: rudzik8 Date: Sat, 26 Mar 2022 20:40:22 +0700 Subject: [PATCH 357/521] Fix some format issues in mcl_mushroom (again) just forgot to fix something --- mods/ITEMS/mcl_mushroom/init.lua | 101 ++++++++++++++++--------------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index ae9ba0b4b..46383699a 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -91,15 +91,15 @@ minetest.register_node("mcl_mushroom:twisting_vines", { _mcl_shears_drop = true, _mcl_silk_touch_drop = true, _mcl_fortune_drop = { items = {{items = {"mcl_mushroom:twisting_vines"}, rarity = 3},}, - items = {{items = {"mcl_mushroom:twisting_vines"}, rarity = 1.8181818181818181},}, - "mcl_mushroom:twisting_vines", - "mcl_mushroom:twisting_vines"}, - _mcl_blast_resistance = 0, - stack_max = 64, + items = {{items = {"mcl_mushroom:twisting_vines"}, rarity = 1.8181818181818181},}, + "mcl_mushroom:twisting_vines", + "mcl_mushroom:twisting_vines"}, + _mcl_blast_resistance = 0, + stack_max = 64, }) minetest.register_node("mcl_mushroom:nether_sprouts", { - description = S("Nether Sprouts"), + description = S("Nether Sprouts"), drawtype = "plantlike", tiles = { "nether_sprouts.png" }, inventory_image = "nether_sprouts.png", @@ -159,55 +159,58 @@ minetest.register_node("mcl_mushroom:shroomlight", { }) minetest.register_node("mcl_mushroom:warped_hyphae", { - description = S("Warped Hyphae"), - tiles = {"warped_hyphae.png", - "warped_hyphae.png", - "warped_hyphae_side.png", - "warped_hyphae_side.png", - "warped_hyphae_side.png", - "warped_hyphae_side.png", - }, - groups = {handy=5,axey=1, bark=1, building_block=1, material_wood=1,}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 2, + description = S("Warped Hyphae"), + tiles = { + "warped_hyphae.png", + "warped_hyphae.png", + "warped_hyphae_side.png", + "warped_hyphae_side.png", + "warped_hyphae_side.png", + "warped_hyphae_side.png", + }, + groups = {handy=5,axey=1, bark=1, building_block=1, material_wood=1,}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 2, }) minetest.register_node("mcl_mushroom:warped_nylium", { - description = S("Warped Nylium"), - tiles = {"warped_nylium.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png^warped_nylium_side.png", - "mcl_nether_netherrack.png^warped_nylium_side.png", - "mcl_nether_netherrack.png^warped_nylium_side.png", - "mcl_nether_netherrack.png^warped_nylium_side.png", - }, - groups = {pickaxey=1, building_block=1, material_stone=1}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 0.4, - _mcl_blast_resistance = 0.4, - is_ground_content = true, - drop = "mcl_nether:netherrack", - _mcl_silk_touch_drop = true, + description = S("Warped Nylium"), + tiles = { + "warped_nylium.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png^warped_nylium_side.png", + "mcl_nether_netherrack.png^warped_nylium_side.png", + "mcl_nether_netherrack.png^warped_nylium_side.png", + "mcl_nether_netherrack.png^warped_nylium_side.png", + }, + groups = {pickaxey=1, building_block=1, material_stone=1}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 0.4, + _mcl_blast_resistance = 0.4, + is_ground_content = true, + drop = "mcl_nether:netherrack", + _mcl_silk_touch_drop = true, }) minetest.register_node("mcl_mushroom:warped_checknode", { - description = S("Warped Checknode - only to check!"), - tiles = {"mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - }, - groups = {pickaxey=1, building_block=1, material_stone=1, not_in_creative_inventory=1}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 0.4, - _mcl_blast_resistance = 0.4, - is_ground_content = true, - drop = "mcl_nether:netherrack" + description = S("Warped Checknode - only to check!"), + tiles = { + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + }, + groups = {pickaxey=1, building_block=1, material_stone=1, not_in_creative_inventory=1}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 0.4, + _mcl_blast_resistance = 0.4, + is_ground_content = true, + drop = "mcl_nether:netherrack" }) minetest.register_node("mcl_mushroom:warped_hyphae_wood", { From fc50c815715d64edcbb981c7d547c31415aed4e5 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Mon, 28 Mar 2022 16:06:30 +0000 Subject: [PATCH 358/521] update main lua script to add lodestone etc. --- mods/ITEMS/mcl_compass/init.lua | 143 ++++++++++++++++++++++++++++---- 1 file changed, 125 insertions(+), 18 deletions(-) diff --git a/mods/ITEMS/mcl_compass/init.lua b/mods/ITEMS/mcl_compass/init.lua index 458ee8fdb..812c2345f 100644 --- a/mods/ITEMS/mcl_compass/init.lua +++ b/mods/ITEMS/mcl_compass/init.lua @@ -1,3 +1,5 @@ +--TODO: Add advancement + local S = minetest.get_translator(minetest.get_current_modname()) mcl_compass = {} @@ -9,28 +11,58 @@ local compass_frames = 32 -- Timer for random compass spinning local random_timer = 0 -local random_timer_trigger = 0.5 -- random compass spinning tick in seconds. Increase if there are performance problems +local random_timer_trigger = 0.5 -- random compass spinning tick in seconds. Incr ease if there are performance problems local random_frame = math.random(0, compass_frames-1) -function mcl_compass.get_compass_image(pos, dir) +function mcl_compass.get_compass_image(pos, dir, x, y, z) -- Compasses do not work in certain zones - if mcl_worlds.compass_works(pos) then - local spawn = {x=0,y=0,z=0} - local ssp = minetest.setting_get_pos("static_spawnpoint") - if ssp then - spawn = ssp - if type(spawn) ~= "table" or type(spawn.x) ~= "number" or type(spawn.y) ~= "number" or type(spawn.z) ~= "number" then - spawn = {x=0,y=0,z=0} + if mcl_worlds.compass_works(pos) and x ~= nil and y ~= nil and z ~= nil then + local _, dim = mcl_worlds.y_to_layer(y) + local _, playerdim = mcl_worlds.y_to_layer(pos.y) + + if dim == playerdim then --Check if player and compass target are in the same dimension, above check is just if the diemension is valid for the non lodestone compass + local spawn = {x=x,y=y,z=z} + local ssp = minetest.setting_get_pos("static_spawnpoint") + if ssp and x == 0 and y == 0 and z == 0 then + spawn = ssp + if type(spawn) ~= "table" or type(spawn.x) ~= "number" or type(spawn.y) ~= "number" or type(spawn.z) ~= "number" then + spawn = {x=0,y=0,z=0} + end end + local angle_north = math.deg(math.atan2(spawn.x - pos.x, spawn.z - pos.z)) + if angle_north < 0 then angle_north = angle_north + 360 end + local angle_dir = -math.deg(dir) + local angle_relative = (angle_north - angle_dir + 180) % 360 + return math.floor((angle_relative/11.25) + 0.5) % compass_frames + else + return random_frame end - local angle_north = math.deg(math.atan2(spawn.x - pos.x, spawn.z - pos.z)) - if angle_north < 0 then angle_north = angle_north + 360 end - local angle_dir = -math.deg(dir) - local angle_relative = (angle_north - angle_dir + 180) % 360 - return math.floor((angle_relative/11.25) + 0.5) % compass_frames else - return random_frame + if x ~= 0 and y ~= 0 and z~= 0 and x ~= nil and y ~= nil and x~= nil then + local _, dim = mcl_worlds.y_to_layer(y) + local _, playerdim = mcl_worlds.y_to_layer(pos.y) + if dim == playerdim then --already explained that very same if statement above + local spawn = {x=x,y=y,z=z} + local ssp = minetest.setting_get_pos("static_spawnpoint") + if ssp and x == 0 and y == 0 and z == 0 then + spawn = ssp + if type(spawn) ~= "table" or type(spawn.x) ~= "number" or type(spawn.y) ~= "number" or type(spawn.z) ~= "number" then + spawn = {x=0,y=0,z=0} + end + end + local angle_north = math.deg(math.atan2(spawn.x - pos.x, spawn.z - pos.z)) + if angle_north < 0 then angle_north = angle_north + 360 end + local angle_dir = -math.deg(dir) + local angle_relative = (angle_north - angle_dir + 180) % 360 + return math.floor((angle_relative/11.25) + 0.5) % compass_frames + else + return random_frame + end + + else + return random_frame + end end end @@ -52,9 +84,39 @@ minetest.register_globalstep(function(dtime) end if has_compass(player) then local pos = player:get_pos() - local compass_image = mcl_compass.get_compass_image(pos, player:get_look_horizontal()) for j,stack in pairs(player:get_inventory():get_list("main")) do + x = stack:get_meta():get_string("x") -- i know i could write the pos in meta, but i like this method more, and it is basicly the same, since else there would be one table with 3 values, and i have 3 values on their own + y = stack:get_meta():get_string("y") + z = stack:get_meta():get_string("z") + + x = tonumber(x) + y = tonumber(y) + z = tonumber(z) + + if x == nil or y == nil or z == nil then --checking if the compass has lodestone meta + compass_image = mcl_compass.get_compass_image(pos, player:get_look_horizontal(), 0, 0, 0) --no lodestone meta + else + checkblock = {x = x, y = y, z = z} + local function get_far_node(pos) --function that tries to read node normally, and does it even if its unloaded https://dev.minetest.net/minetest.get_node + local node = minetest.get_node(pos) + if node.name == "ignore" then + minetest.get_voxel_manip():read_from_map(pos, pos) + node = minetest.get_node(pos) + end + return node + end + + if get_far_node(checkblock).name == "mcl_compass:lodestone" then --check if lodestone still exists + compass_image = mcl_compass.get_compass_image(pos, player:get_look_horizontal(), x, y, z) + compass_image = compass_image .. "_lodestone" + else -- lodestone got destroyed + compass_image = random_frame .. "_lodestone" + end + + + end + if minetest.get_item_group(stack:get_name(), "compass") ~= 0 and minetest.get_item_group(stack:get_name(), "compass")-1 ~= compass_image then local itemname = "mcl_compass:"..compass_image @@ -81,8 +143,8 @@ for i,img in ipairs(images) do inv = 0 end local use_doc, longdesc, tt - --Why is there no usage help? This should be fixed. - --local usagehelp + --Why is there no usage help? This should be fixed. + --local usagehelp use_doc = i == stereotype_frame if use_doc then tt = S("Points to the world origin") @@ -100,6 +162,18 @@ for i,img in ipairs(images) do stack_max = 64, groups = {not_in_creative_inventory=inv, compass=i, tool=1, disable_repair=1 } }) + + minetest.register_craftitem(itemstring .. "_lodestone", { + description = S("Lodestone Compass"), + _tt_help = tt, + _doc_items_create_entry = use_doc, + _doc_items_longdesc = longdesc, + --_doc_items_usagehelp = usagehelp, + inventory_image = img .. "^[colorize:purple:50", + wield_image = img .. "^[colorize:purple:50", + stack_max = 64, + groups = {not_in_creative_inventory=1, compass=i, tool=1, disable_repair=1 } + }) -- Help aliases. Makes sure the lookup tool works correctly if not use_doc and doc_mod then @@ -116,9 +190,42 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = "mcl_compass:lodestone", + recipe = { + {"mcl_core:stonebrickcarved","mcl_core:stonebrickcarved","mcl_core:stonebrickcarved"}, + {"mcl_core:stonebrickcarved", "mcl_nether:netherite_ingot", "mcl_core:stonebrickcarved"}, + {"mcl_core:stonebrickcarved", "mcl_core:stonebrickcarved", "mcl_core:stonebrickcarved"} + } +}) + minetest.register_alias("mcl_compass:compass", "mcl_compass:"..stereotype_frame) -- Export stereotype item for other mods to use mcl_compass.stereotype = "mcl_compass:"..tostring(stereotype_frame) +minetest.register_node("mcl_compass:lodestone",{ + description="Lodestone", + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack).match(itemstack.get_name(itemstack),"mcl_compass:") then + if itemstack.get_name(itemstack) ~= "mcl_compass:lodestone" then + itemstack:get_meta():set_string("x", pos.x) + itemstack:get_meta():set_string("y", pos.y) + itemstack:get_meta():set_string("z", pos.z) + end + end + end, + tiles = { + "lodestone_top.png", + "lodestone_bottom.png", + "lodestone_side1.png", + "lodestone_side2.png", + "lodestone_side3.png", + "lodestone_side4.png" + }, + groups = {pickaxey=1, material_stone=1}, + _mcl_hardness = 1.5, + _mcl_blast_resistance = 6, + sounds = mcl_sounds.node_sound_stone_defaults() +}) \ No newline at end of file From da7be430ce63b894729e7661a6db224e505bfc69 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Mon, 28 Mar 2022 16:07:10 +0000 Subject: [PATCH 359/521] update dependencies --- mods/ITEMS/mcl_compass/mod.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_compass/mod.conf b/mods/ITEMS/mcl_compass/mod.conf index 41266222b..b807d678e 100644 --- a/mods/ITEMS/mcl_compass/mod.conf +++ b/mods/ITEMS/mcl_compass/mod.conf @@ -1,4 +1,4 @@ name = mcl_compass description = A compass item which points towards the world origin. -depends = mcl_core, mcl_worlds, mesecons -optional_depends = doc +depends = mcl_core, mcl_worlds, mesecons, mcl_nether, mcl_sounds +optional_depends = doc \ No newline at end of file From dc93dd87e2e805e461226a320f50e6d6ff033b14 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Mon, 28 Mar 2022 16:07:51 +0000 Subject: [PATCH 360/521] upload textures 1/2 --- .../mcl_compass/textures/lodestone_bottom.png | Bin 0 -> 6333 bytes .../mcl_compass/textures/lodestone_side1.png | Bin 0 -> 6600 bytes .../mcl_compass/textures/lodestone_side2.png | Bin 0 -> 6583 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_compass/textures/lodestone_bottom.png create mode 100644 mods/ITEMS/mcl_compass/textures/lodestone_side1.png create mode 100644 mods/ITEMS/mcl_compass/textures/lodestone_side2.png diff --git a/mods/ITEMS/mcl_compass/textures/lodestone_bottom.png b/mods/ITEMS/mcl_compass/textures/lodestone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..64ddb76ce2135dcf8cbeba1cae22baa169a3e465 GIT binary patch literal 6333 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_compass/textures/lodestone_side2.png b/mods/ITEMS/mcl_compass/textures/lodestone_side2.png new file mode 100644 index 0000000000000000000000000000000000000000..fd9a1a2a5d6952131e7c8c7812d54eb8d96f89a7 GIT binary patch literal 6583 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 T;E(~FIt1O()1k_KTjGBM%)j|~ literal 0 HcmV?d00001 From d467060897f18bd16707870d7bb0ee7b64150545 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Mon, 28 Mar 2022 16:08:08 +0000 Subject: [PATCH 361/521] upload textures --- .../mcl_compass/textures/lodestone_side3.png | Bin 0 -> 6617 bytes .../mcl_compass/textures/lodestone_side4.png | Bin 0 -> 6589 bytes .../ITEMS/mcl_compass/textures/lodestone_top.png | Bin 0 -> 6404 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_compass/textures/lodestone_side3.png create mode 100644 mods/ITEMS/mcl_compass/textures/lodestone_side4.png create mode 100644 mods/ITEMS/mcl_compass/textures/lodestone_top.png diff --git a/mods/ITEMS/mcl_compass/textures/lodestone_side3.png b/mods/ITEMS/mcl_compass/textures/lodestone_side3.png new file mode 100644 index 0000000000000000000000000000000000000000..43224083df1a2011f4ff7281200642b88bfb3b7f GIT binary patch literal 6617 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_compass/textures/lodestone_side4.png b/mods/ITEMS/mcl_compass/textures/lodestone_side4.png new file mode 100644 index 0000000000000000000000000000000000000000..21dadc9f7db72265e79ec6a3d6b3692f45a1fdfb GIT binary patch literal 6589 zcmeHLcUV)|wht;*a2OHWSYpJ2L&!-bi3vz2LVy8OKoL%IP9TzIav&gL0Z~xF0Sh7w zO}JPQ0ShW9ioysMMn$En6dfIkVgo_%NkGLr^X5Lk_vSz03uLeTTfepTYWsXA&fV3~ zKyRuZ27@u+IN5oi{|!|i9WC_l%-#*S=0F_voTq+QXU@Q_YgRyX!P=LXN z)gN8zQ#jjHf8g;1#TXOX>S=YcCFRrBCmj_fcZRcT2cMQ?j)~pnG5)~o8!di=F;;WG zhy4s^mfn3^RO{gSBzEO`VHu~PuX$!ava;>z)PPuh-y+M)-F=R({q{z4UN-K;nMPpG zkFz`bs+wEdT%~Wf-L+}!qoq)o!Of*V@A0X3)V(pc?PUELv&2`Pt?iQ8)R2JSs~ ze;kl~&|#54qg2bItl(y&#q~}-U0VL86c=}g*%NMu4aPk_oZakLWh5+FtGR*|We8{~ zTH}4NoBHEsTTEY@{;uW0oekC&O=bY_`#CSjap6gaX(^oIa=R^|xtcL&j4#;VYtYc2 z0%WqMIHn^3v=yEdb0@*nZkjU6jO&s7}o!CsuQ0~v3) z>%wk(&~{+VkFi;8+l#IQK)(|6qIyhEo_^#!KYOv+K{?epB)fm= zq1)b``!~CNf#hF&1#A z^!b%74C;Y*Ml}bmn%iUYFm+tss#}$uJw5(8^>-E~y`kAZtHKpk z%{c+zH%ke%ycWLCId@j{lk>}87>vzyy2PL?n^%j^JILgn&+TcJ`|9;vb*`9r^L9+< z2ixWDbH_^>ilGbbW0q93#k&ROJ8RDht<&nty3$`#*IRMOa>M!UPlDsa>gRVK?JSBe zWK4*sZcY})=``*LFIaZHIrmz65p7T5Cj0!(7iq`Rx$E|ynz{a0gCm@3qr?G++_%KH zo35UT*He}pJrR>@bzB_bES;I)(NW>2sJf6e>3eab)4C9oTw_N?RlackU1?_JoPfAC zjRz_9Ebb526VDx(ZbqRuoYHkFd@kvZwy|92`hD@jg zOK}Z(m%C4&#rOLIgdJ`*^Kz_urTQ7vJK-V9`qlHqw>98`;@1W9&W@g%5nZ9_yYbF1 z+K-~CdFDCov>)wXm)V|v;JjQTy5HNiirQW$NC|nqj6{e$;C_N&v1{|C;6R50ljHdX zl^9Fs1F@pDOX3gLR_{CQ&Z{Wep?#dtz0UIC5tl#CPPE^7?X{w`Fo$h;s=%4swk5Is z^!PWTX`$8R*H?e@gpA%CP8h&=upMoi;Mu89LPHkZL%^if!utz%XWt0Bzv#|b503xU zwXB2hXsvdK*67~ply(svath+jpE;Uk*d_1UrD7MY*Gs)qkcaQ)WreSMhsjfcLQ z_liMY7utL2uuj#^z&8y>A86TQ@0*vOY4n^tsqDaeP0dGIwd}WfH!&EEO+s5+caE*? z$LWmDg?+2>sG}q232x4Nf@yK=^9QGAc6YJ6nl)_pU-T*pp5{)icDl^x z(M~PUTKUk?%4Y9IH{QR}od|*ljIyqWtG4l7?$w+X8Uv2tWx3c zX>Z~#9WgPjcwE8P^85L1;p|g@TV4GmYF;7_m z19G!WJ>#TS?GMo{P5WYg)wM94Jo=2k=pBEI&L5+$oe{5}*$~=0rpIdZGT#P&F{UUZ z=Wc^k_0e4}_mj3nF&srSo`f(^Mj)C41hM!F4FzH!`q|!JYAC$WhZcedtdNGt z`LKN`EJ0?EG%6E?C`Q^0QNSvZ+HVmgAfQgEEsxZ38QdOC=|=o8Y=WiB*g!O zlZD7dY7E3Dz#>?TI-)?CiC^Fmq2P0ZzBrF+=TDBH=05R%f&LgTwJ++pGVP@N5S3Am z9UG_emkCMvLWrsUDi9D!bSjmHM>7NCDGVBn=YbXwo(6*?02J`}R5E=86-S~#KnWjK zQK97KLX?L`hZz77rr_xiM8{L;0wSJ4A;NfoNCp9jLLpHtMpC%Rg=i;$qLE&ys34Sz z1kp$qAOpZtK&k*wp$G(c5aQAB0vZ{Hc{Bk)6VTM&sPe$HcIU8hBy-@i#9ag;0;yb# zwwF)>NtKGvTV6sj?1_M?un}oQ8bBwLi4-E$0-%yVgO{DH&lsXqQ^l)3#z&UWme14(=cu2Fo;OyUQ(%ujZ=AxRZ*&&3dnt6)Cz z_dI_E{>0>gPCEr659j=sL;VMiHB_)psIF8VKEl2yyn1LgG?GL@b*Qjd^%!7+{GsqG zz)%=crvQ!P&=x-klmx=)yd7?~k8;I-2oDJO6g-7bA>rvTMS!OQbeJk2 zLm)r~zhqZP1&9)q!`6Xl4WM~On@gQ%?EK;SGyM{;41!g~1(1knci>4DUL+EeOlFc8 zxS?zhXaAo$9&AA+69FO>&xb*@Pl}GFhq-%jGghrkkZ2!Ay>-&pbn9GLaCLe^~|}+v0z~jnE%%!T+W{ z5;ml5E0u+#Ln;VyQ%e5U{9gcv7+i#WSfY^ro$DhZLtzmRg$Qhzh@Rq_26u5aP`st9})_*->-3)fdg;H$vjs_XwPTza41D8Lf* zu~vz`FTicvm507-(Be5e+F?GZeltt+cA^qpnUjwKgBfe2`e_h|~IM(G-)#Ci63$tz%wb z!gUw-vz%vaFvt6uj5Uon{W-{RYgbFU^o=Aj>0)DZ=l#UJg20@r_T|YD?9!$#AJaYFG20GNpUtU2zHnFv;-MU(@ zC$e`mhF_EalMaSv6<_VisT fjMzM*WGl>;)@vX3+^c_p<_yEJceTs635fbPAX*eC literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_compass/textures/lodestone_top.png b/mods/ITEMS/mcl_compass/textures/lodestone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..77c2064e1f85bf9429fa4138a68a6865395c8ceb GIT binary patch literal 6404 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 literal 0 HcmV?d00001 From 1273d59995bca09aecc2dd0674ccb4a24642ae80 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Tue, 29 Mar 2022 12:16:06 -0500 Subject: [PATCH 362/521] Lightning command: Strike player by name --- mods/ENVIRONMENT/lightning/init.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 3579316e8..59e494858 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -238,8 +238,8 @@ after(5, function(dtime) end) minetest.register_chatcommand("lightning", { - params = "[ ]", - description = S("Let lightning strike at the specified position or yourself"), + params = "[ ] | | ", + description = S("Let lightning strike at the specified position or player. No parameter will strike yourself."), privs = { maphack = true }, func = function(name, param) local pos = {} @@ -247,21 +247,21 @@ minetest.register_chatcommand("lightning", { pos.x = tonumber(pos.x) pos.y = tonumber(pos.y) pos.z = tonumber(pos.z) + local player_to_strike if not (pos.x and pos.y and pos.z) then pos = nil + player_to_strike = minetest.get_player_by_name(param) + if not player_to_strike and param == "" then + player_to_strike = minetest.get_player_by_name(name) + end end - if name == "" and pos == nil then + if not player_to_strike and pos == nil then return false, "No position specified and unknown player" end if pos then lightning.strike(pos) - else - local player = minetest.get_player_by_name(name) - if player then - lightning.strike(player:get_pos()) - else - return false, S("No position specified and unknown player") - end + elseif player_to_strike then + lightning.strike(player_to_strike:get_pos()) end return true end, From c9470b826205e326265e3d8fc2523c1080771068 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 29 Mar 2022 12:49:39 -0600 Subject: [PATCH 363/521] adds new advancements and minor detail changes --- mods/ENTITIES/mcl_item_entity/init.lua | 2 ++ mods/HUD/mcl_achievements/init.lua | 36 ++++++++++++++++++++++++++ mods/ITEMS/mcl_beds/respawn_anchor.lua | 11 ++++---- mods/ITEMS/mcl_portals/portal_end.lua | 1 + 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index e88f4dd80..244c910d5 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -65,6 +65,8 @@ mcl_item_entity.register_pickup_achievement("tree", "mcl:mineWood") mcl_item_entity.register_pickup_achievement("mcl_mobitems:blaze_rod", "mcl:blazeRod") mcl_item_entity.register_pickup_achievement("mcl_mobitems:leather", "mcl:killCow") mcl_item_entity.register_pickup_achievement("mcl_core:diamond", "mcl:diamonds") +mcl_item_entity.register_pickup_achievement("mcl_core:crying_obsidian", "mcl:whosCuttingOnions") +mcl_item_entity.register_pickup_achievement("mcl_nether:ancient_debris", "mcl:hiddenInTheDepths") local function check_pickup_achievements(object, player) if has_awards then diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index c963773d1..b1c59fe54 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -101,6 +101,18 @@ awards.register_achievement("mcl:bookcase", { } }) +awards.register_achievement("mcl:buildIronPickaxe", { + title = S("Isn't It Iron Pick"), + -- TODO: This achievement should support all non-wood pickaxes + description = S("Craft a iron pickaxe using sticks and iron."), + icon = "default_tool_steelpick.png", + trigger = { + type = "craft", + item = "mcl_tools:pick_iron", + target = 1 + } +}) + -- Item pickup achievements: These are awarded when picking up a certain item. -- The achivements are manually given in the mod mcl_item_entity. awards.register_achievement("mcl:diamonds", { @@ -125,6 +137,24 @@ awards.register_achievement("mcl:mineWood", { icon = "default_tree.png", }) +awards.register_achievement("mcl:whosCuttingOnions", { + title = S("Who is Cutting Onions?"), + description = S("Pick up a crying obsidian from the floor."), + icon = "default_obsidian.png^mcl_core_crying_obsidian.png", +}) + +awards.register_achievement("mcl:hiddenInTheDepths", { + title = S("Hidden in the Depths"), + description = S("Pick up an Ancient Debris from the floor."), + icon = "mcl_nether_ancient_debris_side.png", +}) + +awards.register_achievement("mcl:notQuiteNineLives", { + title = S('Not Quite "Nine" Lives'), + description = S("Charge a Respawn Anchor to the maximum."), + icon = "respawn_anchor_side4.png", +}) + -- Smelting achivements: These are awarded when picking up an item from a furnace -- output. They are given in mcl_furnaces. awards.register_achievement("mcl:acquireIron", { @@ -163,6 +193,12 @@ awards.register_achievement("mcl:buildNetherPortal", { icon = "default_obsidian.png", }) +awards.register_achievement("mcl:enterEndPortal", { + title = S("The End?"), + description = S("Or the beginning?\nHint: Enter an end portal."), + icon = "mcl_end_end_stone.png", +}) + -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) if non_pc_achievements then diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua index 0e96ce25d..6ea0f4627 100644 --- a/mods/ITEMS/mcl_beds/respawn_anchor.lua +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -5,7 +5,7 @@ minetest.register_node("mcl_beds:respawn_anchor",{ - description="respawn anchor", + description="Respawn Anchor", tiles = { "respawn_anchor_top_off.png", "respawn_anchor_bottom.png", @@ -36,7 +36,7 @@ minetest.register_node("mcl_beds:respawn_anchor",{ _mcl_hardness = 22.5 }) minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ - description="respawn anchor", + description="Respawn Anchor", tiles = { "portal.png", "respawn_anchor_bottom.png", @@ -70,7 +70,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ }) minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ - description="respawn anchor", + description="Respawn Anchor", tiles = { "portal.png", "respawn_anchor_bottom.png", @@ -104,7 +104,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ }) minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ - description="respawn anchor", + description="Respawn Anchor", tiles = { "portal.png", "respawn_anchor_bottom.png", @@ -138,7 +138,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ }) minetest.register_node("mcl_beds:respawn_anchor_charged_4",{ - description="respawn anchor", + description="Respawn Anchor", tiles = { "portal.png", "respawn_anchor_bottom.png", @@ -160,6 +160,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_4",{ mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) else mcl_spawn.set_spawn_pos(player, pos, nil) + awards.unlock(player:get_player_name(), "mcl:notQuiteNineLives") end end, groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 9e1a67a75..803aca74c 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -235,6 +235,7 @@ function mcl_portals.end_portal_teleport(pos, node) end mcl_portals.end_teleport(obj, objpos) + awards.unlock(obj:get_player_name(), "mcl:enterEndPortal") end end From 2ea868ba79bb401ec81f6d3102e7f5fb5aa5e844 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 29 Mar 2022 13:37:45 -0600 Subject: [PATCH 364/521] fixed formating of respawn_ancher.lua file --- mods/ITEMS/mcl_beds/respawn_anchor.lua | 176 +++++++++++++------------ 1 file changed, 89 insertions(+), 87 deletions(-) diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua index 6ea0f4627..eded3d7f6 100644 --- a/mods/ITEMS/mcl_beds/respawn_anchor.lua +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -5,14 +5,14 @@ minetest.register_node("mcl_beds:respawn_anchor",{ - description="Respawn Anchor", - tiles = { + description="Respawn Anchor", + tiles = { "respawn_anchor_top_off.png", "respawn_anchor_bottom.png", "respawn_anchor_side0.png" }, - drawtype = "nodebox", - node_box= { --Reused the composter nodebox, since it is basicly the same + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same type = "fixed", fixed = { {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall @@ -22,28 +22,27 @@ minetest.register_node("mcl_beds:respawn_anchor",{ {-0.5, -0.5, -0.5, 0.5, -0.47, 0.5}, -- Bottom level, -0.47 because -0.5 is so low that you can see the texture of the block below through } }, - on_rightclick = function(pos, node, player, itemstack) - if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then - minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_1"}) - itemstack:take_item() - else - if pos.y < -29077 or pos.y > -28933 then - mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) - end - end + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_1"}) + itemstack:take_item() + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + end end, - groups = {pickaxey=1, material_stone=1}, - _mcl_hardness = 22.5 + groups = {pickaxey=1, material_stone=1}, + _mcl_hardness = 22.5 }) minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ - description="Respawn Anchor", - tiles = { + description="Respawn Anchor", + tiles = { "portal.png", "respawn_anchor_bottom.png", "respawn_anchor_side1.png" }, - drawtype = "nodebox", - node_box= { --Reused the composter nodebox, since it is basicly the same + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same type = "fixed", fixed = { {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall @@ -53,31 +52,31 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level } }, - on_rightclick = function(pos, node, player, itemstack) - if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then - minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_2"}) - itemstack:take_item() - else - if pos.y < -29077 or pos.y > -28933 then - mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) - else - mcl_spawn.set_spawn_pos(player, pos, nil) - end - end - end, - groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, - _mcl_hardness = 22.5 + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_2"}) + itemstack:take_item() + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 }) minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ - description="Respawn Anchor", - tiles = { + description="Respawn Anchor", + tiles = { "portal.png", "respawn_anchor_bottom.png", "respawn_anchor_side2.png" }, - drawtype = "nodebox", - node_box= { --Reused the composter nodebox, since it is basicly the same + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same type = "fixed", fixed = { {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall @@ -87,31 +86,31 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level } }, - on_rightclick = function(pos, node, player, itemstack) - if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then - minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_3"}) - itemstack:take_item() - else - if pos.y < -29077 or pos.y > -28933 then - mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) - else - mcl_spawn.set_spawn_pos(player, pos, nil) - end - end - end, - groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, - _mcl_hardness = 22.5 + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_3"}) + itemstack:take_item() + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 }) minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ - description="Respawn Anchor", - tiles = { + description="Respawn Anchor", + tiles = { "portal.png", "respawn_anchor_bottom.png", "respawn_anchor_side3.png" }, - drawtype = "nodebox", - node_box= { --Reused the composter nodebox, since it is basicly the same + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same type = "fixed", fixed = { {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall @@ -121,53 +120,56 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level } }, - on_rightclick = function(pos, node, player, itemstack) - if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then - minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_4"}) - itemstack:take_item() - else - if pos.y < -29077 or pos.y > -28933 then - mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) - else - mcl_spawn.set_spawn_pos(player, pos, nil) - end - end - end, - groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, - _mcl_hardness = 22.5 + on_rightclick = function(pos, node, player, itemstack) + if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then + minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_4"}) + itemstack:take_item() + else + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + end + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 }) minetest.register_node("mcl_beds:respawn_anchor_charged_4",{ - description="Respawn Anchor", - tiles = { + description="Respawn Anchor", + tiles = { "portal.png", "respawn_anchor_bottom.png", "respawn_anchor_side4.png" }, - drawtype = "nodebox", - node_box= { --Reused the composter nodebox, since it is basicly the same + drawtype = "nodebox", + node_box= { --Reused the composter nodebox, since it is basicly the same type = "fixed", fixed = { - {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall + {-0.5, -0.5, -0.5, -0.375, 0.5, 0.5}, -- Left wall { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Right wall {-0.375, -0.5, 0.375, 0.375, 0.5, 0.5}, -- Back wall {-0.375, -0.5, -0.5, 0.375, 0.5, -0.375}, -- Front wall {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Bottom level } }, - on_rightclick = function(pos, node, player, itemstack) - if pos.y < -29077 or pos.y > -28933 then - mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) - else - mcl_spawn.set_spawn_pos(player, pos, nil) - awards.unlock(player:get_player_name(), "mcl:notQuiteNineLives") - end - end, - groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, - _mcl_hardness = 22.5 + on_rightclick = function(pos, node, player, itemstack) + if pos.y < -29077 or pos.y > -28933 then + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + else + mcl_spawn.set_spawn_pos(player, pos, nil) + awards.unlock(player:get_player_name(), "mcl:notQuiteNineLives") + end + end, + groups = {pickaxey=1, material_stone=1, not_in_creative_inventory=1}, + _mcl_hardness = 22.5 }) minetest.register_craft({ output = "mcl_beds:respawn_anchor", - recipe = { {"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"}, - {"mcl_nether:glowstone", "mcl_nether:glowstone", "mcl_nether:glowstone"}, - {"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"} } }) \ No newline at end of file + recipe = { + {"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"}, + {"mcl_nether:glowstone", "mcl_nether:glowstone", "mcl_nether:glowstone"}, + {"mcl_core:crying_obsidian", "mcl_core:crying_obsidian", "mcl_core:crying_obsidian"} + } + }) From ddaa96589e1eca84f8385d3987e04d6e8aa89026 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Fri, 1 Apr 2022 07:58:26 -0500 Subject: [PATCH 365/521] Make params description sensable --- mods/ENVIRONMENT/lightning/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 59e494858..14d8f5176 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -238,7 +238,7 @@ after(5, function(dtime) end) minetest.register_chatcommand("lightning", { - params = "[ ] | | ", + params = "[ | ]", description = S("Let lightning strike at the specified position or player. No parameter will strike yourself."), privs = { maphack = true }, func = function(name, param) From b99fbe8f6976e09a537b0c6b72fccefe2962a860 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Fri, 1 Apr 2022 08:15:55 -0500 Subject: [PATCH 366/521] Fix mobs staying red after explosion --- mods/CORE/mcl_util/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 90e44cedc..c899b5148 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -417,6 +417,7 @@ function mcl_util.deal_damage(target, damage, mcl_reason) -- target:punch(puncher, 1.0, {full_punch_interval = 1.0, damage_groups = {fleshy = damage}}, vector.direction(puncher:get_pos(), target:get_pos()), damage) if luaentity.health > 0 then luaentity.health = luaentity.health - damage + luaentity.pause_timer = 0.4 end return end From 4444437f9431d5ee004dbb2b13f7a4fb045b80a9 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 2 Apr 2022 12:28:16 +0000 Subject: [PATCH 367/521] Update 'mods/ITEMS/mcl_beds/respawn_anchor.lua' --- mods/ITEMS/mcl_beds/respawn_anchor.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua index eded3d7f6..5f279abd7 100644 --- a/mods/ITEMS/mcl_beds/respawn_anchor.lua +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -25,10 +25,11 @@ minetest.register_node("mcl_beds:respawn_anchor",{ on_rightclick = function(pos, node, player, itemstack) if itemstack.get_name(itemstack) == "mcl_nether:glowstone" then minetest.set_node(pos, {name="mcl_beds:respawn_anchor_charged_1"}) - itemstack:take_item() - else + itemstack:take_item() + else if pos.y < -29077 or pos.y > -28933 then - mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + mcl_explosions.explode(pos, 5, {drop_chance = 0, fire = true}) + end end end, groups = {pickaxey=1, material_stone=1}, From be58b54104858fefd40d3a8adc181b696e150e07 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 4 Apr 2022 03:49:14 +0300 Subject: [PATCH 368/521] #278 Rename default_dbg to default_debug --- mods/HUD/mcl_info/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_info/init.lua b/mods/HUD/mcl_info/init.lua index 02af53fbc..9cf95b43a 100644 --- a/mods/HUD/mcl_info/init.lua +++ b/mods/HUD/mcl_info/init.lua @@ -89,7 +89,7 @@ minetest.register_chatcommand("debug",{ minetest.chat_send_player(name, S("Error! Possible values are integer numbers from @1 to @2", 0, 3)) return end - if dbg == default_dbg then + if dbg == default_debug then player_dbg[name] = nil else player_dbg[name] = dbg From 9e6f1c78e62098947af18a38f2174f312f4511fa Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 4 Apr 2022 04:02:10 +0300 Subject: [PATCH 369/521] #151 Bump ABM intervals to 1 second --- mods/ITEMS/mcl_cauldrons/init.lua | 3 ++- mods/ITEMS/mcl_mushroom/init.lua | 4 ++-- mods/ITEMS/mcl_portals/portal_end.lua | 3 ++- mods/ITEMS/mcl_portals/portal_gateway.lua | 3 ++- mods/ITEMS/mcl_portals/portal_nether.lua | 5 +++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_cauldrons/init.lua b/mods/ITEMS/mcl_cauldrons/init.lua index 55866f5cc..4b6fcd318 100644 --- a/mods/ITEMS/mcl_cauldrons/init.lua +++ b/mods/ITEMS/mcl_cauldrons/init.lua @@ -128,8 +128,9 @@ minetest.register_craft({ minetest.register_abm({ label = "cauldrons", nodenames = {"group:cauldron_filled"}, - interval = 0.5, + interval = 1, chance = 1, + -- TODO: Move to playerinfo/playerplus/mob api action = function(pos, node) for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.4)) do if mcl_burning.is_burning(obj) then diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 46383699a..774ea577c 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -257,7 +257,7 @@ minetest.register_abm({ minetest.register_abm({ label = "mcl_mushroom:warped_checknode", nodenames = {"mcl_mushroom:warped_checknode"}, - interval = 0.1, + interval = 1, chance = 1, action = function(pos) local nodepos = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}) @@ -448,7 +448,7 @@ minetest.register_abm({ minetest.register_abm({ label = "mcl_mushroom:crimson_checknode", nodenames = {"mcl_mushroom:crimson_checknode"}, - interval = 0.1, + interval = 1, chance = 1, action = function(pos) local nodepos = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 803aca74c..3e4f5ba12 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -244,8 +244,9 @@ end minetest.register_abm({ label = "End portal teleportation", nodenames = {"mcl_portals:portal_end"}, - interval = 0.1, + interval = 1, chance = 1, + -- TODO: Move to playerinfo/playerplus/mob api action = mcl_portals.end_portal_teleport, }) diff --git a/mods/ITEMS/mcl_portals/portal_gateway.lua b/mods/ITEMS/mcl_portals/portal_gateway.lua index 505935105..4d79dce53 100644 --- a/mods/ITEMS/mcl_portals/portal_gateway.lua +++ b/mods/ITEMS/mcl_portals/portal_gateway.lua @@ -106,9 +106,10 @@ local function teleport(pos, obj) end minetest.register_abm({ + -- TODO: Move to playerinfo/playerplus/mob api label = "End gateway portal teleportation", nodenames = {"mcl_portals:portal_gateway"}, - interval = 0.1, + interval = 1, chance = 1, action = function(pos) if preparing[minetest.pos_to_string(pos)] then return end diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 7390bbb2f..a8fdc51b2 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -729,8 +729,8 @@ mcl_structures.register_structure({name = "nether_portal", place_function = mcl_ minetest.register_abm({ label = "Nether portal teleportation and particles", nodenames = {PORTAL}, - interval = 0.8, - chance = 3, + interval = 1, + chance = 2, action = function(pos, node) -- Don't use call stack! local upper_node_name = get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name @@ -811,6 +811,7 @@ minetest.register_abm({ }) end end + -- TODO: Move to playerinfo/playerplus/mob api for _, obj in pairs(minetest.get_objects_inside_radius(pos, 1)) do --maikerumine added for objects to travel local lua_entity = obj:get_luaentity() --maikerumine added for objects to travel if (obj:is_player() or lua_entity) and prevent_portal_chatter(obj) then From d424aaa5bcaeecf5275c4c8ae0d7f2b34ee00b83 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Mon, 4 Apr 2022 07:48:05 -0500 Subject: [PATCH 370/521] Lightning mod: fix localization template --- mods/ENVIRONMENT/lightning/locale/template.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/lightning/locale/template.txt b/mods/ENVIRONMENT/lightning/locale/template.txt index 2c07393f6..897f295eb 100644 --- a/mods/ENVIRONMENT/lightning/locale/template.txt +++ b/mods/ENVIRONMENT/lightning/locale/template.txt @@ -1,4 +1,4 @@ # textdomain: lightning @1 was struck by lightning.= -Let lightning strike at the specified position or yourself= +Let lightning strike at the specified position or player. No parameter will strike yourself.= No position specified and unknown player= From ed963428c08d33779f2431da37f88a03fab770f9 Mon Sep 17 00:00:00 2001 From: kabou Date: Wed, 6 Apr 2022 23:04:01 +0200 Subject: [PATCH 371/521] Replace mcl_end_crystal_beam.png with free version. * Replace mcl_end_crystal_beam.png with unknown provenance with a version from the PixelPerfection texture pack that has a know good free licence. --- .../mcl_end/textures/mcl_end_crystal_beam.png | Bin 2065 -> 2794 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_end/textures/mcl_end_crystal_beam.png b/mods/ITEMS/mcl_end/textures/mcl_end_crystal_beam.png index 1259a5d0ec80af0c59843b46c21fda8853fa9601..94eac193a9b4d7b454ef7826e7cfe1f0540ee348 100644 GIT binary patch delta 2750 zcmV;v3PJUe5b70>NPhq!bVXQnLvm$dbZKvHAXI5>WdJfTF*Q0dFgh?dATTyMH8MIe zGQ}fwv;Y7KUr9tkRCr#kn}?3wybgqqH$6y#1VP^a>C$`e@zu~8W=K&!-rWBKw5p`2 zVp)>Up4N3O-S_X`n^)(3`0$~5>*@FJ-|J$b(`jjrsSKRy*d%7HtZo z<7PEm{;OB7Oc?PSH*O&5^y$+ln@AS<7v8*i6BMw9OQC(R{QUV7O4dJr{+Ms6`>a%8 zg|A(^W)@vsTz|ll<>kwlQzfk&@)ipqe87Rz7wO z_AptebYIC(;KN)~TE|X`Dh- z0xV4xun^J0CDy@c0v#UJ9;R>Z%a<=2Cl+7uDt~L+wop6vO4#nSptaKyC*+9)R6rF} z%Iv+M8M%PP(X=*gEuj%AQwy^2j8Imma)s7bqQj_UL5+vX*aw+x5#psaP%tweSRUp9 z!x?Wvu@Ch4?c28pVVg;fBM%d6r>}$^3NUSYB5Anr)2C12+bbU#4W9@9%+X;4A=%!({Pcm zjFrM6&HF$=p-LDGX;6T|M(YcBD1W2{JwJn2e`o^MysKBQRy9uv7PP%z4>?+UX~}|D z+r4}DE>){?0b#u3T6pc-`b%+c9#m-o8^+>5L9J(-W(s6S0znF&WI;8*-z6xktu|;z zcOcAlIDFyBX-I&dXJTpcqeqVxZ0&lKplrB9v4rj`InB$e1uT$-fu)HBCVvdy=oaju zf&;k^Ds2!Pgg<}&yxM+2cBR>$IpFbXCT2eq(zOXpG(SC=UP~h?g+2Mh%NYkeuJZs? zChwy2pb}QoHSA~~W5?rg(OBeq<(sP=Vr2kdLx~ejG4ixsdg; zc_M+brWvpRf^ZO2VN0KFZ-2#(?6rd$qOBNpTOhL1P8B|0xOi|qu1J~SPW=^y3 z@3@P#nJD`|EeNoG=t0BEg^OIYA6CF&PQb^RiD}7!kTy(Zxe`9Y^ndV;8#{g?u{K-k zNPQjHSn^37e~L>>dpG79TuJwtpVJMU$|0jsr74y_>x0ACJlKNn6T~fT?-Tl^Ex^W0 zKc(v^sHUmbCTs^2e|NxwiCZVvW5MMnY+4U;?%R8CD6DaA365I8Lf(1Z51)xIX(&#AnY}u6MN9G%L#M@tk~I5!GVy5w;B9u6i80bO|pDWL<$|ILva*3NjD0(!0=vSEv)jC^aDTAqVrMA}h5OXa7KKFun7?zQsb?xU zYl2zO6ZAhufY&NlV8Ig3gQaQC!hizY?hVbzoyY>Y;E>K=4N`$;@V*$~Bd7(r7FW8* zxp{CFor#ylYUbnY$fr>d^5iFFz?#QlG;lh9`0$~}+u_4}+^Zlje=Zw-J|G~GitO-- zrGJc%z3gOnA0}qFqVBtefSt%pdk%US1+{RFZ@_}?R^E%?PxnK9_k;5$V5Mz~C4yru zn}s>u(yR$sD6_CG-Hl4ArBzc|snP;wf&A}cW+wdCI_;3k6+bf#`5wRtjbXZc9Z%8wITS@VlGAyjTVnB)4LLk$5<8!r{Hpf5&%tNvrY!H)>e}}o!HuQt&3;+NC07*qoM6N<$ Ef>zolAOHXW delta 2015 zcmV<52O#+B6_F5-NPh>jNkl>+5Tc1^xZ_ z_=uS{4CCqc_SP7f3?blUK74$95U&@<_y0P8#RKVG#r^c{+qcv!uGbPt;X%gE&dypM zOx>s9jXijMeTBmr8^}Ui=7JwDFai}x8|9Glw=j$@&Q&=X3l(;-w#9SgvLe{_{rmSa z7s$ZkJ2Le2^nZjs7*bd;F@R08P4^Yb(F#N>;?z==pnAdSHUNa)R4?&)L-m0n(6bblJdjsg=^BPzSRyv($~farnj zLMi3aP?024B^cfbfV!dfjQ*}fwc>%a>pVb4~|$-L6p?14TGTKla z3ZwTzvQY^t83fb(cH%q$S}2B-LwYjm4S%FjSZe_QWKiV^|GCb#_D$osI}fCziGfVw z#;OcESqIZAcQln{Y)t|goDdT`L#YAdD(}iFelV4{!R9K>8J+86{%ef7FlwW)gDRa( zgY5Jh$`xNebO4GTbi(Ph(F|Muk!>#Zb^x7pAu;KI4IX64Lf@<9%@l)@AE~?DR)2_r zKOH^2@exa>twkK*MHtQ`7b*-t2+@Zstbh zX3K}E9+Y6}A^0A}?AQDl^k~uqx_fup}B<;^IS=BOx@|=z1P&UeFecJPpi{%SoP!oGH{a)J_U3SwFp8sGy7(1FYcT!suF zK#zH#dfvdTw{*Jp4<=;?m;_H!5UbNYHCx-8E`Nrc-E1s342Wy(lZeP(HxD%sF#BmZ1h0EKy{jn5Y6U4#X5^?I@E+4 Date: Fri, 8 Apr 2022 20:28:59 +0000 Subject: [PATCH 372/521] Replace proprietary texture Replace by the texture from PixelPerfection Legacy by XSSheep (CC-BY-SA) --- .../textures/mcl_nether_netheriteblock.png | Bin 425 -> 201 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_nether/textures/mcl_nether_netheriteblock.png b/mods/ITEMS/mcl_nether/textures/mcl_nether_netheriteblock.png index 60957f01794f9ecc0ad1eb8ce72749060c7d435b..5b08c3d03e0ffe0769fd45a9ae5869d3d0137c49 100644 GIT binary patch delta 185 zcmV;q07n0*1IYo97=Hu<0002(-QrRJ000tDOjJb{6cia47atuQB_bd#DkwEFFdhus zDgXcga!Eu%R0!84jWG_xFbo5^bdS~K0j8V}NXp*Y?H&W||G!cNJ#aV>1PD*G)`H{v zd1oe$!ZEl`?4sedWMi++OB$n_$OAFDk$PfxDn(L8ce delta 411 zcmV;M0c8Hk0jUF!7=H)`0000V^Z#K00004VQb$4nuFf3k0004FNklAAgaVY5pdSu!JV4~i5ySz3XSkpB5*<{#WVJwC3^ z2W;2!-KurY2PWq*&If+}dSD#KZvoSBVz?j5`Ss-)W4o4d9DjLxe`DCEM=?@@WL5$F}Jpii8behWht`@2$deim=Qdbkt=VtNfxsn1< zRYU~8!W!lx&OKkl00wI>fDFl*vN#*3QPG%^tan{{b8g!LKv=>}rs+6s64ce0TG)3z zeb-+qsvOTPW`BrA-L@cCJO!fFXvsZ;PCH2G=fG=du3Q&&Ehw~HzuC`e3TK@0jDd_&?n7c z?FBIG2l&swu#b8(R!CEroJ)Y$m*;H;Yg4bzeR&7)2^3%`%!y0L-% Date: Fri, 8 Apr 2022 20:40:45 +0000 Subject: [PATCH 373/521] README Add license info --- mods/ITEMS/mcl_nether/README.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ITEMS/mcl_nether/README.txt diff --git a/mods/ITEMS/mcl_nether/README.txt b/mods/ITEMS/mcl_nether/README.txt new file mode 100644 index 000000000..144039e1a --- /dev/null +++ b/mods/ITEMS/mcl_nether/README.txt @@ -0,0 +1,3 @@ +Mod mcl_nether : basic nether blocs + +Texture of mcl_nether_netheritebloc.png from PixelPerfection Legacy by XSSheep edited by Nova_Wostra (CC-BY-SA 4.0) \ No newline at end of file From 5f2ea5b073ebd2ca1d058208f6518c49bf02d0f3 Mon Sep 17 00:00:00 2001 From: 3raven Date: Fri, 8 Apr 2022 20:45:03 +0000 Subject: [PATCH 374/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fnether/README.txt'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_nether/README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_nether/README.txt b/mods/ITEMS/mcl_nether/README.txt index 144039e1a..8deac79a9 100644 --- a/mods/ITEMS/mcl_nether/README.txt +++ b/mods/ITEMS/mcl_nether/README.txt @@ -1,3 +1,3 @@ -Mod mcl_nether : basic nether blocs +Mod mcl_nether : basic nether blocs, forked from Mineclone 2 Texture of mcl_nether_netheritebloc.png from PixelPerfection Legacy by XSSheep edited by Nova_Wostra (CC-BY-SA 4.0) \ No newline at end of file From 86328c0822eed4cce99e4fe3e7ec97638ce67470 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Fri, 8 Apr 2022 16:13:07 -0500 Subject: [PATCH 375/521] WIP Zombies and Husks wear armor --- mods/ENTITIES/mcl_mobs/api/api.lua | 1 + .../mcl_mobs/api/mob_functions/set_up.lua | 100 ++++++++++++++++++ mods/ENTITIES/mobs_mc/zombie.lua | 2 + 3 files changed, 103 insertions(+) diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index c72dca0bd..564c59d0f 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -375,6 +375,7 @@ function mobs:register_mob(name, def) --moves the wrong way swap_y_with_x = def.swap_y_with_x or false, reverse_head_yaw = def.reverse_head_yaw or false, + _spawn_with_armor = def.spawn_with_armor, --END HEAD CODE VARIABLES diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua index d9cc4237c..f3d82b0bb 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -62,6 +62,103 @@ mobs.mob_staticdata = function(self) return minetest.serialize(tmp) end +mobs.armor_setup = function(self) + local armor = self._armor + if not armor then + armor = {} + -- Source: https://minecraft.fandom.com/wiki/Zombie + local materials = { + {name = "leather", chance = 0.3706}, + {name = "gold", chance = 0.4873}, + {name = "chain", chance = 0.129}, + {name = "iron", chance = 0.0127}, + {name = "diamond", chance = 0.0004} + } + local types = { + {name = "helmet", chance = 0.15}, + --{name = "helmet", chance = 1}, + {name = "chestplate", chance = 0.75}, + {name = "leggings", chance = 0.5625}, + {name = "boots", chance = 0.4219} + } + + local material + if type(self._spawn_with_armor) == "string" then + material = self._spawn_with_armor + else + local chance = 0 + for i, m in pairs(materials) do + chance = chance + m.chance + if math.random() <= chance then + material = m.name + break + end + end + end + for i, t in pairs(types) do + if math.random() <= t.chance then + armor[t.name] = material + else + break + end + end + self._armor = armor + end + + local t = "" + local first_image = true + for atype, material in pairs(armor) do + if not first_image then + t = t .. "^" + end + t = t .. "mcl_armor_" .. atype .. "_" .. material .. ".png" + first_image = false + end + if t == "" then + t = "mobs_mc_empty.png" + end + + -- Configure damage groups based on armor + -- Source: https://minecraft.fandom.com/wiki/Armor#Armor_points + local points = 2 + for atype, material in pairs(self._armor) do + local item_name = "mcl_armor:" .. atype .. "_" .. material + points = points + minetest.get_item_group(item_name, "mcl_armor_points") + end + local armor_strength = 100 - 4 * points * 0.8 -- We should realy be using the full damage calculation + local armor_groups = self.object:get_armor_groups() + armor_groups.undead = armor_strength + armor_groups.fleshy = armor_strength + self.object:set_armor_groups(armor_groups) + + local props = self.object:get_properties() + props.textures[1] = t + self.object:set_properties(props) + minetest.chat_send_all(dump(self._armor)) + + -- Rare chance of dropping armor on death + for atype, material in pairs(self._armor) do + local wear = math.random(1, 65535) + local item = "mcl_armor:" .. atype .. "_" .. material .. " 1 " .. wear + self.drops = table.copy(self.drops) + table.insert(self.drops, { + name = item, + chance = 1/0.085, -- 8.5% + min = 1, + max = 1, + looting = "common", + looting_factor = 0.01 / 3, + }) + end + --[[for atype, material in pairs(self._armor) do + if math.random() <= 0.085 then + local wear = math.random(1, 65535) + local item = "mcl_armor:" .. atype .. "_" .. material .. " 1 " .. wear + minetest.add_item(pos, item) + end + end]] +end + -- activate mob and reload settings mobs.mob_activate = function(self, staticdata, def, dtime) @@ -224,6 +321,9 @@ mobs.mob_activate = function(self, staticdata, def, dtime) --update_tag(self) --mobs.set_animation(self, "stand") + if self._spawn_with_armor then + mobs.armor_setup(self) + end -- run on_spawn function if found if self.on_spawn and not self.on_spawn_run then diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 3eb0122a7..27432745b 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -204,8 +204,10 @@ local zombie = { attack_type = "punch", punch_timer_cooloff = 0.5, harmed_by_heal = true, + spawn_with_armor = true, } + mobs:register_mob("mobs_mc:zombie", zombie) -- Baby zombie. From 7db8d3cd5fd38fa273998e8feb32f49a22c2594f Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 02:28:43 +0000 Subject: [PATCH 376/521] Add nether wood buttons --- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index 2812b2758..3dcf5e21e 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -223,6 +223,8 @@ local woods = { { "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") }, + { "warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood", "warped_hyphae_wood.png", S("Warped Hyphae Button") }, + { "crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood", "crimson_hyphae_wood.png", S("Crimson Hyphae Button") }, } for w=1, #woods do From b0392bbeb9542fcf53baa4da8eb000fdac69652c Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 02:39:52 +0000 Subject: [PATCH 377/521] Add blackstone button --- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index 3dcf5e21e..b324fcf6d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -216,6 +216,18 @@ mesecon.register_button( 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."), "mesecons_button_push") +mesecon.register_button( + "polished_blackstone", + S("Polished Blackstone Button"), + "mcl_blackstone_polished.png", + "mcl_blackstone:blackstone_polished", + mcl_sounds.node_sound_stone_defaults(), + {material_stone=1,handy=1,pickaxey=1}, + 1, + false, + S("A polished blackstone button is a redstone component made out of polished blackstone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second."), + "mesecons_button_push") + local woods = { { "wood", "mcl_core:wood", "default_wood.png", S("Oak Button") }, { "acaciawood", "mcl_core:acaciawood", "default_acacia_wood.png", S("Acacia Button") }, From 45c388931662f9a3b99a5980019968c3737c84c1 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 02:58:14 +0000 Subject: [PATCH 378/521] Add nether wood pressure plate --- mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index d040c8666..db08e81c7 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -164,6 +164,8 @@ local woods = { { "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") }, + { "warped_hyphae_wood", "mcl_mushrooom:warped_hyphae_wood", "warped_hyphae_wood.png", S("Warped Hyphae Pressure Plate")}, + { "crimson_hyphae_wood", "mcl_mushrooom:crimson_hyphae_wood", "crimson_hyphae_wood.png", S("Crimson Hyphae Pressure Plate")}, } for w=1, #woods do From 3129379fe97e656e37382690959600903683fd8a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 03:21:38 +0000 Subject: [PATCH 379/521] Add steel and black stone pressure plate light and heavy weighted pressure plate don't work the same as in minecraft. They dont give signal proportional to entities number. Modified heavey weighted pressure plate so it detect all entities as in minecraft wiki. --- .../REDSTONE/mesecons_pressureplates/init.lua | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index db08e81c7..b3d7a4de8 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -203,6 +203,19 @@ mesecon.register_pressure_plate( { player = true, mob = true }, 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.")) +mesecon.register_pressure_plate( + "mesecons_pressureplates:pressure_plate_polished_blackstone", + S("Polished Blackstone Pressure Plate"), + {"mcl_blackstone_polished.png"}, + {"mcl_blackstone_polished.png"}, + "default_stone.png", + nil, + {{"mcl_blackstone:blackstone_polished", "mcl_blackstone:blackstone_polished"}}, + mcl_sounds.node_sound_stone_defaults(), + {pickaxey=1, material_stone=1}, + { player = true, mob = true }, + S("A polished blackstone 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.")) + mesecon.register_pressure_plate( "mesecons_pressureplates:pressure_plate_gold", S("Light-Weighted Pressure Plate"), @@ -213,5 +226,18 @@ mesecon.register_pressure_plate( {{"mcl_core:gold_ingot", "mcl_core:gold_ingot"}}, mcl_sounds.node_sound_metal_defaults(), {pickaxey=1}, - { player = true, mob = true }, - S("A light-weighted 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.")) + nil, + S("A light-weighted 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.")) + +mesecon.register_pressure_plate( + "mesecons_pressureplates:pressure_plate_iron", + S("Heavy-Weighted Pressure Plate"), + {"default_steel_block.png"}, + {"default_steel_block.png"}, + "default_steel_block.png", + nil, + {{"mcl_core:iron_ingot", "mcl_core:iron_ingot"}}, + mcl_sounds.node_sound_metal_defaults(), + {pickaxey=1}, + nil, + S("A heavy-weighted 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.")) From 5fa14070d3a93f2611da5ab7316a6d99010f2019 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 03:50:37 +0000 Subject: [PATCH 380/521] Add target from mcl2 --- mods/ITEMS/REDSTONE/mcl_target/init.lua | 70 +++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_target/init.lua diff --git a/mods/ITEMS/REDSTONE/mcl_target/init.lua b/mods/ITEMS/REDSTONE/mcl_target/init.lua new file mode 100644 index 000000000..268c6ebe3 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_target/init.lua @@ -0,0 +1,70 @@ +local S = minetest.get_translator("mcl_target") + +local mod_farming = minetest.get_modpath("mcl_farming") + +mcl_target = {} + +function mcl_target.hit(pos, time) + minetest.set_node(pos, {name="mcl_target:target_on"}) + mesecon.receptor_on(pos, mesecon.rules.alldirs) + + local timer = minetest.get_node_timer(pos) + timer:start(time) +end + +minetest.register_node("mcl_target:target_off", { + description = S("Target"), + _doc_items_longdesc = S("A target is a block that provides a temporary redstone charge when hit by a projectile."), + _doc_items_usagehelp = S("Throw a projectile on the target to activate it."), + tiles = {"mcl_target_target_top.png", "mcl_target_target_top.png", "mcl_target_target_side.png"}, + groups = {hoey = 1}, + sounds = mcl_sounds.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.1}, + }), + mesecons = { + receptor = { + state = mesecon.state.off, + rules = mesecon.rules.alldirs, + }, + }, + _mcl_blast_resistance = 0.5, + _mcl_hardness = 0.5, +}) + +minetest.register_node("mcl_target:target_on", { + description = S("Target"), + _doc_items_create_entry = false, + tiles = {"mcl_target_target_top.png", "mcl_target_target_top.png", "mcl_target_target_side.png"}, + groups = {hoey = 1, not_in_creative_inventory = 1}, + drop = "mcl_target:target_off", + sounds = mcl_sounds.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.1}, + }), + on_timer = function(pos, elapsed) + local node = minetest.get_node(pos) + if node.name == "mcl_target:target_on" then --has not been dug + minetest.set_node(pos, {name="mcl_target:target_off"}) + mesecon.receptor_off(pos, mesecon.rules.alldirs) + end + end, + mesecons = { + receptor = { + state = mesecon.state.on, + rules = mesecon.rules.alldirs, + }, + }, + _mcl_blast_resistance = 0.5, + _mcl_hardness = 0.5, +}) + + +if mod_farming then + minetest.register_craft({ + output = "mcl_target:target_off", + recipe = { + {"", "mesecons:redstone", ""}, + {"mesecons:redstone", "mcl_farming:hay_block", "mesecons:redstone"}, + {"", "mesecons:redstone", ""}, + }, + }) +end \ No newline at end of file From 13e92cd5b314c8e2e0b9dad4d1cd1498bc698ed0 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 03:51:46 +0000 Subject: [PATCH 381/521] Add target from mcl 2 --- mods/ITEMS/REDSTONE/mcl_target/mod.conf | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_target/mod.conf diff --git a/mods/ITEMS/REDSTONE/mcl_target/mod.conf b/mods/ITEMS/REDSTONE/mcl_target/mod.conf new file mode 100644 index 000000000..16f70ed12 --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_target/mod.conf @@ -0,0 +1,3 @@ +name = mcl_target +author = AFCMS +depends = mesecons, mcl_sounds \ No newline at end of file From 5d214ae4bf9c913d4df25737f45d7f5b4b4d9bd9 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 03:53:12 +0000 Subject: [PATCH 382/521] Add target --- mods/ITEMS/REDSTONE/mcl_target/locale/template.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_target/locale/template.txt diff --git a/mods/ITEMS/REDSTONE/mcl_target/locale/template.txt b/mods/ITEMS/REDSTONE/mcl_target/locale/template.txt new file mode 100644 index 000000000..18bc7708c --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_target/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_target +Target= +A target is a block that provides a temporary redstone charge when hit by a projectile.= +Throw a projectile on the target to activate it.= \ No newline at end of file From 11a9f6baead3f95657e7580aa43028ea7e00c970 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 03:54:13 +0000 Subject: [PATCH 383/521] Add target --- mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.fr.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.fr.tr diff --git a/mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.fr.tr b/mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.fr.tr new file mode 100644 index 000000000..6c558683d --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_target/locale/mcl_target.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_target +Target=Cible +A target is a block that provides a temporary redstone charge when hit by a projectile.=La cible est un bloc qui se comporte comme une source d'énergie temporaire quand elle est frappée par un projectile. +Throw a projectile on the target to activate it.=Lancer un projectile sur la cible pour l'activer. \ No newline at end of file From 820ceceffcae2e1a5468ceb4a9d231c29d83c85a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 03:55:23 +0000 Subject: [PATCH 384/521] Add target --- .../textures/mcl_target_target_side.png | Bin 0 -> 752 bytes .../mcl_target/textures/mcl_target_target_top.png | Bin 0 -> 752 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/REDSTONE/mcl_target/textures/mcl_target_target_side.png create mode 100644 mods/ITEMS/REDSTONE/mcl_target/textures/mcl_target_target_top.png diff --git a/mods/ITEMS/REDSTONE/mcl_target/textures/mcl_target_target_side.png b/mods/ITEMS/REDSTONE/mcl_target/textures/mcl_target_target_side.png new file mode 100644 index 0000000000000000000000000000000000000000..286f7767edfb3060af8b57a0521c6930b36bbf36 GIT binary patch literal 752 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01F8K01F8L68c9z00007bV*G`2jmA2 z4>=XXM-d(X00MAHL_t(I%YBp2OVe=}$6vFr!@i&SZLWXM4&*}N_ zJnzr*KF3(wO3+wmMF^!3 zSES64H$xuKH2G3@7fS-1!i{mUB z*4Y@G0RJsQ+bLQaZ72XzW>8*y#2xTsce*&`aA2`jm4H*Rc+Ls<364yIua!hHjp>2! zdiLPuJ6ZrS4%o zv!kS9aiU?pP*ho5+vSv$Y=(3;Lpn}}M&-jU=C1Y}q48^Qxj^G;Hp|;rKQK+*^JRrl zSRQ{)@8r;bg|rum5Dn`DN2ba6TB$#4$?c%Vb&}@(PUZ&2>75(`U@sCmR?5MVY3lkr zkTR1~aB)KWP#1FpPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01F8K01F8L68c9z00007bV*G`2jmA2 z4>|)JzW0m(00MAHL_t(I%YBp2OVe=}$6vFr!@i&SZLWXM4&*}N_ zJnzr*KF3(wO3+wmMF^!3 zSES64H$xuKH2G3@7fS-1!i{mUB z*4Y@G0RJsQ+bLQaZ72XzW>8*y#2xTsce*&`aA2`jm4H*Rc+Ls<364yIua!hHjp>2! zdiLPuJ6ZrS4%o zv!kS9aiU?pP*ho5+vSv$Y=(3;Lpn}}M&-jU=C1Y}q48^Qxj^G;Hp|;rKQK+*^JRrl zSRQ{)@8r;bg|rum5Dn`DN2ba6TB$#4$?c%Vb&}@(PUZ&2>75(`U@sCmR?5MVY3lkr zkTR1~aB)KWP#1Fp Date: Sat, 9 Apr 2022 04:12:11 +0000 Subject: [PATCH 385/521] Add french translation --- mods/ITEMS/REDSTONE/mcl_bells/locale/mcl_bells.fr.tr | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mods/ITEMS/REDSTONE/mcl_bells/locale/mcl_bells.fr.tr diff --git a/mods/ITEMS/REDSTONE/mcl_bells/locale/mcl_bells.fr.tr b/mods/ITEMS/REDSTONE/mcl_bells/locale/mcl_bells.fr.tr new file mode 100644 index 000000000..a1f7a075c --- /dev/null +++ b/mods/ITEMS/REDSTONE/mcl_bells/locale/mcl_bells.fr.tr @@ -0,0 +1,2 @@ +# textdomain: mcl_observers +Bell=Cloche From 3e8e74b633e459591e36f2a0f4a517f217ffc6f7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 04:21:16 +0000 Subject: [PATCH 386/521] Update template --- mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt index 4c352b878..41d404101 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/template.txt @@ -1,6 +1,7 @@ # textdomain: mesecons_button Use the button to push it.= Stone Button= +Polished Blackstone 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= @@ -8,6 +9,8 @@ Birch Button= Dark Oak Button= Spruce Button= Jungle Button= +Warped Hyphae Button= +Crimson Hyphae 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= From 5429a259ffa8bd0ec23515dcd281f7238ff3aa16 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 04:24:09 +0000 Subject: [PATCH 387/521] Update french translation --- .../REDSTONE/mesecons_button/locale/mesecons_button.fr.tr | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.fr.tr b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.fr.tr index 96f963b4b..03d78b50d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.fr.tr +++ b/mods/ITEMS/REDSTONE/mesecons_button/locale/mesecons_button.fr.tr @@ -1,6 +1,7 @@ # textdomain: mesecons_button Use the button to push it.=Utilisez le bouton pour le pousser. Stone Button=Bouton de pierre +Polished Blackstone Button=Bouton de Pierre Noire Polie 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 @@ -8,6 +9,8 @@ Birch Button=Bouton en Bouleau Dark Oak Button=Bouton en Chêne Noir Spruce Button=Bouton en Sapin Jungle Button=Bouton en Acajou +Warped Hyphae Button=Bouton en Hyphae Tordu +Crimson Hyphae Button=Bouton en Hyphae Ecarlate 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 From c0e83aa0cd545468280f011a2cba8f3c46d70dea Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 04:41:09 +0000 Subject: [PATCH 388/521] Update template.txt --- .../REDSTONE/mesecons_pressureplates/locale/template.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt index 96eb3f922..a118f727a 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/template.txt @@ -6,9 +6,17 @@ Birch Pressure Plate= Dark Oak Pressure Plate= Spruce Pressure Plate= Jungle Pressure Plate= +Warped Hyphae Pressure Plate= +Crimson Hyphae 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.= +Polished Blackstone Pressure Plate= +A polished blackstone 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.= +Light-Weighted Pressure Plate= +A light-weighted 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.= +Heavy-Weighted Pressure Plate= +A heavy-weighted 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.= Provides redstone power when pushed= Pushable by players, mobs and objects= Pushable by players and mobs= From 69fc0228d6137e920a473186e3c851acb073bdeb Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 05:00:07 +0000 Subject: [PATCH 389/521] Update french translation --- .../locale/mesecons_pressureplates.fr.tr | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr index ef145de56..f82d3f552 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr @@ -6,10 +6,18 @@ 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 +Warped Hyphae Pressure Plate=Plaque de pression en Hyphae Tordue +Crimson Hyphae Pressure Plate=Plaque de pression en Hyphae Ecarlate 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é +Polished Blackstone Pressure Plate=Plaque de pression en pierre noire polie +A polished blackstone 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 noire polie 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. +Light-Weighted Pressure Plate=Plaque de pression pondérée légère +A light-weighted 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 pondérée légère 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. +Heavy-Weighted Pressure Plate=Plaque de pression pondérée lourde +A heavy-weighted 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 pondérée lourde 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. +Provides redstone power when pushed=Fournit une puissance de redstone lorsque 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 From e017d4a724b8a1c6e6351df808a0aedfdaee036a Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 05:33:22 +0000 Subject: [PATCH 390/521] Add translation --- mods/ITEMS/mcl_beds/respawn_anchor.lua | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua index 5f279abd7..e479ac097 100644 --- a/mods/ITEMS/mcl_beds/respawn_anchor.lua +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -2,10 +2,11 @@ --Nether ends at y -29077 --Nether roof at y -28933 - +local S = minetest.get_translator(minetest.get_current_modname()) +--local mod_doc = minetest.get_modpath("doc") -> maybe add documentation ? minetest.register_node("mcl_beds:respawn_anchor",{ - description="Respawn Anchor", + description=S("Respawn Anchor"), tiles = { "respawn_anchor_top_off.png", "respawn_anchor_bottom.png", @@ -36,7 +37,7 @@ minetest.register_node("mcl_beds:respawn_anchor",{ _mcl_hardness = 22.5 }) minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ - description="Respawn Anchor", + description=S("Respawn Anchor"), tiles = { "portal.png", "respawn_anchor_bottom.png", @@ -104,7 +105,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ }) minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ - description="Respawn Anchor", + description=S("Respawn Anchor") tiles = { "portal.png", "respawn_anchor_bottom.png", @@ -138,7 +139,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ }) minetest.register_node("mcl_beds:respawn_anchor_charged_4",{ - description="Respawn Anchor", + description=S("Respawn Anchor"), tiles = { "portal.png", "respawn_anchor_bottom.png", From 8f64a1e18c2761d98a393b0a5664291d685c1406 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 05:35:54 +0000 Subject: [PATCH 391/521] Update translation --- mods/ITEMS/mcl_beds/locale/template.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_beds/locale/template.txt b/mods/ITEMS/mcl_beds/locale/template.txt index 5525bd91b..69c493880 100644 --- a/mods/ITEMS/mcl_beds/locale/template.txt +++ b/mods/ITEMS/mcl_beds/locale/template.txt @@ -40,3 +40,4 @@ You will fall asleep when all players are in bed.= You will fall asleep when @1% of all players are in bed.= You're in bed.= Allows you to sleep= +Respawn Anchor= From b7c521bedc85ac5aa6566b53a3438bdb7c7099a6 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 05:37:39 +0000 Subject: [PATCH 392/521] Update french translation --- mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr index d85d48bf1..ba513df3a 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr @@ -39,3 +39,4 @@ 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 +Respwn Anchor=Ancre de Réapparition \ No newline at end of file From c1a7d3e504033adb2f1ed8d41643725bbf2b89ab Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 06:07:35 +0000 Subject: [PATCH 393/521] Update --- mods/ITEMS/mcl_compass/locale/template.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_compass/locale/template.txt b/mods/ITEMS/mcl_compass/locale/template.txt index 462a08bc4..67ca6e840 100644 --- a/mods/ITEMS/mcl_compass/locale/template.txt +++ b/mods/ITEMS/mcl_compass/locale/template.txt @@ -2,3 +2,4 @@ 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= +Lodestone Compass= From e4865338fcefb678a19a738c2ec58cd27ac96515 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 06:12:07 +0000 Subject: [PATCH 394/521] Update translation --- mods/ITEMS/mcl_compass/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_compass/init.lua b/mods/ITEMS/mcl_compass/init.lua index 812c2345f..dbb2e8358 100644 --- a/mods/ITEMS/mcl_compass/init.lua +++ b/mods/ITEMS/mcl_compass/init.lua @@ -206,7 +206,7 @@ mcl_compass.stereotype = "mcl_compass:"..tostring(stereotype_frame) minetest.register_node("mcl_compass:lodestone",{ - description="Lodestone", + description=S("Lodestone"), on_rightclick = function(pos, node, player, itemstack) if itemstack.get_name(itemstack).match(itemstack.get_name(itemstack),"mcl_compass:") then if itemstack.get_name(itemstack) ~= "mcl_compass:lodestone" then From 99c4fbfc389e199cfd85cfde5d2a8294c6873b78 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 06:13:17 +0000 Subject: [PATCH 395/521] Update --- mods/ITEMS/mcl_compass/locale/template.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_compass/locale/template.txt b/mods/ITEMS/mcl_compass/locale/template.txt index 67ca6e840..48157aa14 100644 --- a/mods/ITEMS/mcl_compass/locale/template.txt +++ b/mods/ITEMS/mcl_compass/locale/template.txt @@ -3,3 +3,4 @@ Compasses are tools which point to the world origin (X@=0, Z@=0) or the spawn po Compass= Points to the world origin= Lodestone Compass= +Lodestone= \ No newline at end of file From fd94fba22c08c1f438b030707d28410ea30a7b92 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 06:15:06 +0000 Subject: [PATCH 396/521] Update french translation --- mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr b/mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr index 89299fde7..8ad4bda79 100644 --- a/mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr +++ b/mods/ITEMS/mcl_compass/locale/mcl_compass.fr.tr @@ -2,3 +2,5 @@ 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 +Lodestone Compass=Boussole magnétisée +Lodestone=Magnétite From f60588cf25561486bdc155852c167347deace204 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 06:38:04 +0000 Subject: [PATCH 397/521] Update Please when you add stuff update the template.txt and not just one translation file --- mods/ITEMS/mcl_core/locale/template.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 57b15ef82..901c0a4a3 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -284,3 +284,7 @@ Slows down movement= 2×2 saplings @= large tree= Grows on sand or dirt next to water= Stackable= +Moss= +Moss Carpet= +A moss block is a natural block that can be spread to some other blocks by using bone meal.= +Moss Carpets are a thin decorative variant of the moss block.= \ No newline at end of file From 6afda0af92e3d403887a1a10d0c712355a8fb674 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 06:42:51 +0000 Subject: [PATCH 398/521] Update french translation --- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index c4c818aae..3dee12c57 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -256,3 +256,7 @@ Slows down movement=Ralentit le mouvement 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 +Moss=Mousse +Moss Carpet=Tapis de Mousse +A moss block is a natural block that can be spread to some other blocks by using bone meal.=Un bloc de mousse est un bloc naturel qui peut se propager à d'autres blocs en utilisant de la farine d'os. +Moss Carpets are a thin decorative variant of the moss block.=Les tapis de mousse sont une fine variante décorative du bloc de mousse. \ No newline at end of file From 7f34c979ff5e99ebde27c5f7404b70537a810e89 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 06:49:31 +0000 Subject: [PATCH 399/521] update --- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 3dee12c57..d51cf831a 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -92,6 +92,7 @@ Diorite=Diorite Diorite is an igneous rock.=La diorite est une roche volcanique. 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é. +Enchanted Golden Apple=Pomme Dorée Enchantée 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 ne peut être trouvé que seul, pas en filons. From 9dd85f9f7b85147e9ef95e9a8137a3bb4670398c Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 07:12:24 +0000 Subject: [PATCH 400/521] Update french translation --- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index d51cf831a..83922aa86 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -155,6 +155,8 @@ 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. +Crying Obsidian=Obsidienne Pleureuse +Crying obsidian is a luminous obsidian that can generate as part of ruined portals.=L'obsidienne pleureuse est de l'obsidienne lumineuse générée comme composant des portails en ruines. 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 @@ -203,20 +205,45 @@ 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 +Stripped Acacia Log=Bois d'Acacia +Stripped Acacia Wood=Bois Ecorché d'Acacia +Stripped Birch Log=Bois de Bouleau +Stripped Birch Wood=Bois Ecorché de Bouleau +Stripped Dark Oak Log=Bois de Chêne Noir +Stripped Dark Oak Wood=Bois Ecorché de Chêne Noir +Stripped Jungle Log=Bois d'Acajou +Stripped Jungle Wood=Bois Ecorché d'Acajou +Stripped Oak Log=Bois de Chêne +Stripped Oak Wood=Bois Ecorché de Chêne +Stripped Spruce Log=Bois de Sapin +Stripped Spruce Wood=Bois Ecorché de Sapin 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 terre, de sable, de sable rouge, de podzol ou de terre stérile. Lorsqu'une canne à sucre est cassée, toutes les cannes à sucre connectées au-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 stripped trunk of an acacia tree.=Le tronc écorché d'un acacia. +The stripped trunk of a birch tree.=Le tronc écorché d'un bouleau. +The stripped trunk of a dark oak tree.=Le tronc écorché d'un chêne noir. +The stripped trunk of a jungle tree.=Le tronc écorché d'un acajou. +The stripped trunk of an oak tree.=Le tronc écorché d'un chêne. +The stripped trunk of a spruce tree.=Le tronc écorché d'un sapin. 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. +The stripped wood of an acacia tree.=Les planches écorchée d'un acacia. +The stripped wood of a birch tree.=Les planches écorchée d'un bouleau. +The stripped wood of a dark oak tree.=Les planches écorchée d'un chêne noir. +The stripped wood of a jungle tree.=Les planches écorchée d'un acajou. +The stripped wood of an oak tree.=Les planches écorchée d'un chêne. +The stripped wood of a spruce tree.=Les planches écorchée d'un sapin. 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 decorative block.=Il s'agit d'un bloc décoratif. 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. From cc300971b3b478efb39b68db7bcbfea615417d4e Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 07:42:19 +0000 Subject: [PATCH 401/521] Update --- mods/ITEMS/mcl_furnaces/locale/template.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/ITEMS/mcl_furnaces/locale/template.txt b/mods/ITEMS/mcl_furnaces/locale/template.txt index 4f88824b0..edbc185a5 100644 --- a/mods/ITEMS/mcl_furnaces/locale/template.txt +++ b/mods/ITEMS/mcl_furnaces/locale/template.txt @@ -7,3 +7,10 @@ Burning Furnace= Recipe book= Inventory= Uses fuel to smelt or cook items= +Blast Furnace= +Blast Furnaces cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace.= +Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= +Smoker= +Uses fuel to smelt or cook items= +Smokers cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace.= +Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= From f46d0930388fb14b56c1f731386852a359c85ec6 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 07:44:09 +0000 Subject: [PATCH 402/521] remove doublon --- mods/ITEMS/mcl_furnaces/locale/template.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ITEMS/mcl_furnaces/locale/template.txt b/mods/ITEMS/mcl_furnaces/locale/template.txt index edbc185a5..ba0b31c4d 100644 --- a/mods/ITEMS/mcl_furnaces/locale/template.txt +++ b/mods/ITEMS/mcl_furnaces/locale/template.txt @@ -11,6 +11,5 @@ Blast Furnace= Blast Furnaces cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace.= Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= Smoker= -Uses fuel to smelt or cook items= Smokers cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace.= Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= From cbfac6074289f3ad7ea91449952f37d1c2ed11fd Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 07:45:41 +0000 Subject: [PATCH 403/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Ffurnaces/locale/template.txt'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_furnaces/locale/template.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ITEMS/mcl_furnaces/locale/template.txt b/mods/ITEMS/mcl_furnaces/locale/template.txt index ba0b31c4d..d48de3909 100644 --- a/mods/ITEMS/mcl_furnaces/locale/template.txt +++ b/mods/ITEMS/mcl_furnaces/locale/template.txt @@ -9,7 +9,5 @@ Inventory= Uses fuel to smelt or cook items= Blast Furnace= Blast Furnaces cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace.= -Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= Smoker= Smokers cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace.= -Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.= From 2b87fb2cd27ae46934e36a5d0a01fe27789542e6 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 07:51:40 +0000 Subject: [PATCH 404/521] Update french translation --- mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr index f7b37e537..6140504ef 100644 --- a/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr +++ b/mods/ITEMS/mcl_furnaces/locale/mcl_furnaces.fr.tr @@ -7,3 +7,7 @@ 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 +Blast Furnace=Haut Fourneau +Blast Furnaces cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace.=Un haut fourneau peut cuire ou fondre plusieurs objets, en quelque chose d'autre, en utilisant du carburant, plus vite qu'un four normal. +Smoker=Fumoir +Smokers cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace.=Le Fumoir peut cuire ou fondre plusieurs objets, en quelque chose d'autre, en utilisant du carburant, plus vite qu'un four normal. From 4c957a3e7c40498d445d098617c4090cbca201ea Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 08:01:16 +0000 Subject: [PATCH 405/521] Add Translation --- mods/ITEMS/mcl_lanterns/template.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/template.txt diff --git a/mods/ITEMS/mcl_lanterns/template.txt b/mods/ITEMS/mcl_lanterns/template.txt new file mode 100644 index 000000000..765de8747 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/template.txt @@ -0,0 +1,6 @@ +# textdomain: mcl_lanterns +Chain= +Chains are metallic decoration blocks.= +Lantern= +Lanterns are light sources which can be placed on the top or the bottom of most blocks.= +Soul Lantern= From 8cd3b63fae3b2f1278a091aa543016e41c0204ad Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 08:02:22 +0000 Subject: [PATCH 406/521] Add Translations --- mods/ITEMS/mcl_lanterns/local/template.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/local/template.txt diff --git a/mods/ITEMS/mcl_lanterns/local/template.txt b/mods/ITEMS/mcl_lanterns/local/template.txt new file mode 100644 index 000000000..765de8747 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/local/template.txt @@ -0,0 +1,6 @@ +# textdomain: mcl_lanterns +Chain= +Chains are metallic decoration blocks.= +Lantern= +Lanterns are light sources which can be placed on the top or the bottom of most blocks.= +Soul Lantern= From 700200958df57b50f23a644c7736a5dd1543c904 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 08:03:37 +0000 Subject: [PATCH 407/521] wrong place --- mods/ITEMS/mcl_lanterns/template.txt | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/template.txt diff --git a/mods/ITEMS/mcl_lanterns/template.txt b/mods/ITEMS/mcl_lanterns/template.txt deleted file mode 100644 index 765de8747..000000000 --- a/mods/ITEMS/mcl_lanterns/template.txt +++ /dev/null @@ -1,6 +0,0 @@ -# textdomain: mcl_lanterns -Chain= -Chains are metallic decoration blocks.= -Lantern= -Lanterns are light sources which can be placed on the top or the bottom of most blocks.= -Soul Lantern= From 140fd676860d60eef47e8b4d5dacdc67b53673ff Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 08:07:47 +0000 Subject: [PATCH 408/521] Add french translation --- mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr diff --git a/mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr b/mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr new file mode 100644 index 000000000..e8264e2f4 --- /dev/null +++ b/mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr @@ -0,0 +1,6 @@ +# textdomain: mcl_lanterns +Chain=Chaine +Chains are metallic decoration blocks.=Les chaines sont des blocs de décoration métalliques. +Lantern=Lanterne +Lanterns are light sources which can be placed on the top or the bottom of most blocks.=Les lanternes sont des sources de lumières qui peuvent être placées au sommet ou en-dessous de la plupart des blocs. +Soul Lantern=Lanterne de l'Ame From c3111c99b235fabc8263c1f71bc44b4c4b10611f Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 08:49:47 +0000 Subject: [PATCH 409/521] French translation --- .../ENTITIES/extra_mobs/locale/extra_mobs.fr.tr | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr diff --git a/mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr b/mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr new file mode 100644 index 000000000..87caf9592 --- /dev/null +++ b/mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr @@ -0,0 +1,17 @@ +# textdomain:extra_mobs +Hoglin=Hoglin +piglin=Piglin +piglin Brute=Piglin Barbare +Strider=Arpenteur +Fox=Renard +Cod=Poisson +Salmon=Saumon +dolphin=Dauphin +Glow Squid=Pieuvre Lumineuse +Glow Ink Sac=Sac d'Encre Lumineuse +Use it to craft the Glow Item Frame.=Utilisez le pour fabriquer le Cadre à Objet Lumineux +Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.=Utiliser le Sac d'Encre Lumineuse et le Cadre à Objet normal pour fabriquer le Cadre à Objet Lumineux. +Glow Item Frame=Cadre à Objet Lumineux +Can hold an item and glows=Peut exposer un objet et éclairer +Glow Item frames are decorative blocks in which items can be placed.=les Cadres à Objet Lumineux sont des blocs décoratifs pouvant contenir des objets. +Just place any item on the item frame. Use the item frame again to retrieve the item.=Placer n'importe quel objet sur le cadre. Récupérer l'objet en faisant un clic droit sur le cadre. \ No newline at end of file From e14545a2b82973f86f8ff70c457c9ca83aa377b7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 08:51:53 +0000 Subject: [PATCH 410/521] French translation --- mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr index 91be07c32..922f5f069 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr @@ -6,6 +6,7 @@ Boats are used to travel on the surface of water.=Les bateaux sont utilisés pou Dark Oak Boat=Bateau en Chêne Noir Jungle Boat=Bateau en Acajou Oak Boat=Bateau en Chêne +Obsidian Boat=Bateau en Obsidienne 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. Use [Sneak] to leave the boat, 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. Utilisez [Sneak] pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet. Spruce Boat=Bateau en Sapin Water vehicle=Véhicule aquatique From f828ee6a1927f1b7556122cc07c850ac9d0eb90d Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 09:28:36 +0000 Subject: [PATCH 411/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/HUD/m?= =?UTF-8?q?cl=5Fachievements/locale/template.txt'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/HUD/mcl_achievements/locale/template.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mods/HUD/mcl_achievements/locale/template.txt b/mods/HUD/mcl_achievements/locale/template.txt index eccec5225..2cb6b28b4 100644 --- a/mods/HUD/mcl_achievements/locale/template.txt +++ b/mods/HUD/mcl_achievements/locale/template.txt @@ -53,3 +53,13 @@ Hot Stuff= Put lava in a bucket.= Ice Bucket Challenge= Obtain an obsidian block.= +Isn't It Iron Pick= +Craft a iron pickaxe using sticks and iron.= +Who is Cutting Onions?= +Pick up a crying obsidian from the floor.= +Hidden in the Depths= +Pick up an Ancient Debris from the floor.= +Not Quite "Nine" Lives= +Charge a Respawn Anchor to the maximum.= +The End?= +Or the beginning?\nHint: Enter an end portal.= From 609653eaf27e05a7e00f5d31c644b0bf683a5825 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 09:44:49 +0000 Subject: [PATCH 412/521] Update french translation --- .../locale/mcl_achievements.fr.tr | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr b/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr index 0896bcf36..fc68322a1 100644 --- a/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr +++ b/mods/HUD/mcl_achievements/locale/mcl_achievements.fr.tr @@ -10,7 +10,7 @@ Craft a stone pickaxe using sticks and cobblestone.=Fabriquez une pioche en pier 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 +Dispense With This=Dispensé 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. @@ -47,3 +47,19 @@ Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Utilis 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. +Stone Age=L'Age de Pierre +Mine a stone with new pickaxe.=Miner de la roche avec une nouvelle pioche +Hot Stuff=Chaud Devant ! +Put lava in a bucket.=Remplir un Seau de lave +Ice Bucket Challenge=Le défi du seau d'eau glacée +Obtain an obsidian block.=Obtenir un bloc d'obsidienne +Isn't It Iron Pick=Bonne Pioche ! +Craft a iron pickaxe using sticks and iron.=Fabriquer une pioche de fer avec des batons et du fer +Who is Cutting Onions?=Qui épluche des oignons ? +Pick up a crying obsidian from the floor.=Ramasser une obsidienne pleureuse sur le sol. +Hidden in the Depths=Caché dans les profondeurs +Pick up an Ancient Debris from the floor.=Ramasser un Ancien Débris +Not Quite "Nine" Lives=Presque "neuf" vies +Charge a Respawn Anchor to the maximum.=Charger une Ancre de Réapparition au maximum. +The End?=L'End ? +Or the beginning?\nHint: Enter an end portal.=Ou le commencement ?\nAstuce : Entrer dans un portail de l'End. From 47ed81490a10fb6bf1f93ed4993660284fc93042 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 09:52:46 +0000 Subject: [PATCH 413/521] french translation --- mods/HUD/mcl_experience/locale/mlc_experience.fr.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_experience/locale/mlc_experience.fr.tr b/mods/HUD/mcl_experience/locale/mlc_experience.fr.tr index 0644e2596..488af5006 100644 --- a/mods/HUD/mcl_experience/locale/mlc_experience.fr.tr +++ b/mods/HUD/mcl_experience/locale/mlc_experience.fr.tr @@ -5,3 +5,4 @@ Error: Too many parameters!=Erreur: Trop de paramètres! Error: Incorrect value of XP=Erreur: Valeur incorrecte de XP Error: Player not found=Erreur: Joueur introuvable Added @1 XP to @2, total: @3, experience level: @4=Ajout de @1 XP à @2, total: @3, niveau d'expérience: @4 +Bottle o' Enchanting=Fiole d'expérience \ No newline at end of file From 3591ef1fae2a25cc8007303778157ac27506702f Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 09:59:27 +0000 Subject: [PATCH 414/521] French translation --- mods/HUD/mcl_info/locale/mcl_info.fr.tr | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 mods/HUD/mcl_info/locale/mcl_info.fr.tr diff --git a/mods/HUD/mcl_info/locale/mcl_info.fr.tr b/mods/HUD/mcl_info/locale/mcl_info.fr.tr new file mode 100644 index 000000000..fb6ecbd0d --- /dev/null +++ b/mods/HUD/mcl_info/locale/mcl_info.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_info +Set debug bit mask: 0 @= disable, 1 @= biome name, 2 @= coordinates, 3 @= all=Réglage du masque de débugage : 0 @= désactiver, 1 @= nom de biome, 2 @= coordonnées, 3 @= tout= +Error! Possible values are integer numbers from @1 to @2=Erreur ! Les valeurs autorisées sont des nombres entiers de @1 à @2 +Debug bit mask set to @1=Masque de débugage réglé à @1 \ No newline at end of file From 421c1e8d0084399d5e324af504661f7230139887 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 10:21:26 +0000 Subject: [PATCH 415/521] Ajouter 'mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr' --- mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr diff --git a/mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr b/mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr new file mode 100644 index 000000000..86b7d1b33 --- /dev/null +++ b/mods/MAPGEN/mcl_villages/locale/mcl_villages.fr.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_villages +Chiseled Stone Village Bricks=Pierre sculptée du village +Map chunk @1 to @2 is not suitable for placing villages.=La partie de la carte de @1 à @2 n'est pas propice au placement d'un village. From c55aab93608d3f00be3dff3f7e27040b6e724334 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 10:31:13 +0000 Subject: [PATCH 416/521] Update french translation --- mods/MISC/mcl_commands/locale/mcl_commands.fr.tr | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr b/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr index 1223c24ec..f9a1fa064 100644 --- a/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr +++ b/mods/MISC/mcl_commands/locale/mcl_commands.fr.tr @@ -21,6 +21,10 @@ 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és! -@1[]=@1[] +@1[]=@1[] Set game mode for player or yourself=Choisir le mode de jeu pour vous ou pour les joueurs Error: No game mode specified.=Erreur : mode de jeu non spécifié. + = +Play a sound. Arguments: : name of the sound. : Target.=Jouer un son. Arguments: : nom d'un son. : Cible. +Sound name is invalid!=Le nom du son est invalide ! +Target is invalid!!=La cible est invalide ! From f052e26e0cf91b40ca2dfd9f02c51045a7903122 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 11:43:47 +0000 Subject: [PATCH 417/521] fix --- mods/ITEMS/mcl_beds/respawn_anchor.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_beds/respawn_anchor.lua b/mods/ITEMS/mcl_beds/respawn_anchor.lua index e479ac097..19c2c67d9 100644 --- a/mods/ITEMS/mcl_beds/respawn_anchor.lua +++ b/mods/ITEMS/mcl_beds/respawn_anchor.lua @@ -71,7 +71,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_1",{ }) minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ - description="Respawn Anchor", + description=S("Respawn Anchor"), tiles = { "portal.png", "respawn_anchor_bottom.png", @@ -105,7 +105,7 @@ minetest.register_node("mcl_beds:respawn_anchor_charged_2",{ }) minetest.register_node("mcl_beds:respawn_anchor_charged_3",{ - description=S("Respawn Anchor") + description=S("Respawn Anchor"), tiles = { "portal.png", "respawn_anchor_bottom.png", From 337b4e1d050a977f69cd946b08e6a7c90c1dbe07 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 11:47:14 +0000 Subject: [PATCH 418/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Flanterns/register.lua'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_lanterns/register.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua index 7cf03d0d5..fcffbdcb8 100644 --- a/mods/ITEMS/mcl_lanterns/register.lua +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator("mcl_lanterns") +local S = minetest.get_translator(minetest.get_current_modname()) mcl_lanterns.register_lantern("lantern", { description = S("Lantern"), From 1e431814bc3964d5eda87061b905c92ae899a052 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 11:48:43 +0000 Subject: [PATCH 419/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Flanterns/init.lua'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_lanterns/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua index e6707b075..8f99ea151 100644 --- a/mods/ITEMS/mcl_lanterns/init.lua +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -1,5 +1,5 @@ -local S = minetest.get_translator("mcl_lanterns") -local modpath = minetest.get_modpath("mcl_lanterns") +local S = minetest.get_translator(minetest.get_current_modname()) +local modpath = minetest.get_modpath(minetest.get_current_modname()) mcl_lanterns = {} From 07d564b5a26480aab06348a6d54fa2f64e0004e9 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 12:05:00 +0000 Subject: [PATCH 420/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fbeds/init.lua'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_beds/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_beds/init.lua b/mods/ITEMS/mcl_beds/init.lua index ad9dbdded..b07b591dd 100644 --- a/mods/ITEMS/mcl_beds/init.lua +++ b/mods/ITEMS/mcl_beds/init.lua @@ -4,6 +4,7 @@ mcl_beds.pos = {} mcl_beds.bed_pos = {} local modpath = minetest.get_modpath("mcl_beds") +local S = minetest.get_translator(minetest.get_current_modname()) -- Load files From 44d32b5d17833fa9170a78127955770070442bea Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 12:12:07 +0000 Subject: [PATCH 421/521] fix --- mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr index ba513df3a..1c10627e3 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.fr.tr @@ -39,4 +39,4 @@ 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 -Respwn Anchor=Ancre de Réapparition \ No newline at end of file +Respawn Anchor=Ancre de Réapparition \ No newline at end of file From 0184925890b3cc17cf70b0a2daababfaf4fb26b2 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 19:26:04 +0000 Subject: [PATCH 422/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Flanterns/local/mcl=5Flanterns.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr b/mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr index e8264e2f4..c653a8faf 100644 --- a/mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr +++ b/mods/ITEMS/mcl_lanterns/local/mcl_lanterns.fr.tr @@ -3,4 +3,4 @@ Chain=Chaine Chains are metallic decoration blocks.=Les chaines sont des blocs de décoration métalliques. Lantern=Lanterne Lanterns are light sources which can be placed on the top or the bottom of most blocks.=Les lanternes sont des sources de lumières qui peuvent être placées au sommet ou en-dessous de la plupart des blocs. -Soul Lantern=Lanterne de l'Ame +Soul Lantern=Lanterne des âmes From c72c960e8a305f570cdd5c1dd99c9e5c1f2dc7c5 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 19:29:52 +0000 Subject: [PATCH 423/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Flanterns/init.lua'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_lanterns/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua index 8f99ea151..72df287ca 100644 --- a/mods/ITEMS/mcl_lanterns/init.lua +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -1,5 +1,5 @@ -local S = minetest.get_translator(minetest.get_current_modname()) -local modpath = minetest.get_modpath(minetest.get_current_modname()) +local S = minetest.get_translator(mcl_lanterns) +local modpath = minetest.get_modpath(mcl_lanterns) mcl_lanterns = {} From a1ca0c3431af9edfc4adcdc9efc8232862c4f4f5 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 19:31:56 +0000 Subject: [PATCH 424/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Flanterns/register.lua'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_lanterns/register.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua index fcffbdcb8..6f3372b0a 100644 --- a/mods/ITEMS/mcl_lanterns/register.lua +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator(minetest.get_current_modname()) +local S = minetest.get_translator(mcl_lanterns) mcl_lanterns.register_lantern("lantern", { description = S("Lantern"), From a47e0d2f1736555e0463f142d0a6085edb5c336d Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 19:49:23 +0000 Subject: [PATCH 425/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Flanterns/init.lua'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_lanterns/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_lanterns/init.lua b/mods/ITEMS/mcl_lanterns/init.lua index 72df287ca..8f99ea151 100644 --- a/mods/ITEMS/mcl_lanterns/init.lua +++ b/mods/ITEMS/mcl_lanterns/init.lua @@ -1,5 +1,5 @@ -local S = minetest.get_translator(mcl_lanterns) -local modpath = minetest.get_modpath(mcl_lanterns) +local S = minetest.get_translator(minetest.get_current_modname()) +local modpath = minetest.get_modpath(minetest.get_current_modname()) mcl_lanterns = {} From c6f09e30a5e1a6ed1523ff375a4e5f2128f9b0a1 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 9 Apr 2022 19:49:59 +0000 Subject: [PATCH 426/521] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Flanterns/register.lua'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_lanterns/register.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua index 6f3372b0a..fcffbdcb8 100644 --- a/mods/ITEMS/mcl_lanterns/register.lua +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -1,4 +1,4 @@ -local S = minetest.get_translator(mcl_lanterns) +local S = minetest.get_translator(minetest.get_current_modname()) mcl_lanterns.register_lantern("lantern", { description = S("Lantern"), From 1d315c569f1f1ef51d519f1c137f5fa852525c28 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Sun, 10 Apr 2022 14:05:15 -0500 Subject: [PATCH 427/521] Bonus: Mobs Redo bug fix --- mods/ENTITIES/mcl_mobs/api.txt | 5 + .../mcl_mobs/api/mob_functions/set_up.lua | 121 +++++++++--------- mods/ENTITIES/mobs_mc/zombie.lua | 1 - 3 files changed, 66 insertions(+), 61 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index 2d8cef5b0..6c61855aa 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -227,6 +227,11 @@ functions needed for the mob to work properly which contains the following: older mobs. 'pushable' Allows players, & other mobs to push the mob. + 'spawn_with_armor' If set to true, the mob has a small chance of spawning with + random matched armor. If set to a string, the string represents + the material type of the armor. Any materials used by + mcl_armor will work. Example: "gold" + It is assumed that the first texture is for armor. MineClone 2 extensions: diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua index f3d82b0bb..cebf28e58 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -13,8 +13,13 @@ mobs.can_despawn = function(self) if self.tamed or self.bred or self.nametag then return false end local mob_pos = self.object:get_pos() if not mob_pos then return true end + local players = minetest_get_connected_players() + if #players == 0 then return false end + -- If no players, probably this is being called from get_staticdata() at server shutdown time + -- Minetest is to buggy (as of 5.5) to delete entities at server shutdown time anyway + local distance = 999 - for _, player in pairs(minetest_get_connected_players()) do + for _, player in pairs(players) do if player and player:get_hp() > 0 then local player_pos = player:get_pos() local new_distance = vector_distance(player_pos, mob_pos) @@ -63,9 +68,8 @@ mobs.mob_staticdata = function(self) end mobs.armor_setup = function(self) - local armor = self._armor - if not armor then - armor = {} + if not self._armor_items then + local armor = {} -- Source: https://minecraft.fandom.com/wiki/Zombie local materials = { {name = "leather", chance = 0.3706}, @@ -76,12 +80,11 @@ mobs.armor_setup = function(self) } local types = { {name = "helmet", chance = 0.15}, - --{name = "helmet", chance = 1}, {name = "chestplate", chance = 0.75}, - {name = "leggings", chance = 0.5625}, - {name = "boots", chance = 0.4219} + {name = "leggings", chance = 0.75}, + {name = "boots", chance = 0.75} } - + local material if type(self._spawn_with_armor) == "string" then material = self._spawn_with_armor @@ -95,6 +98,7 @@ mobs.armor_setup = function(self) end end end + for i, t in pairs(types) do if math.random() <= t.chance then armor[t.name] = material @@ -102,61 +106,56 @@ mobs.armor_setup = function(self) break end end - self._armor = armor - end - local t = "" - local first_image = true - for atype, material in pairs(armor) do - if not first_image then - t = t .. "^" + -- Setup table containing the armor items + self._armor_items = {} + for atype, material in pairs(armor) do + local item = "mcl_armor:" .. atype .. "_" .. material + table.insert(self._armor_items, item) end - t = t .. "mcl_armor_" .. atype .. "_" .. material .. ".png" - first_image = false - end - if t == "" then - t = "mobs_mc_empty.png" - end - -- Configure damage groups based on armor - -- Source: https://minecraft.fandom.com/wiki/Armor#Armor_points - local points = 2 - for atype, material in pairs(self._armor) do - local item_name = "mcl_armor:" .. atype .. "_" .. material - points = points + minetest.get_item_group(item_name, "mcl_armor_points") - end - local armor_strength = 100 - 4 * points * 0.8 -- We should realy be using the full damage calculation - local armor_groups = self.object:get_armor_groups() - armor_groups.undead = armor_strength - armor_groups.fleshy = armor_strength - self.object:set_armor_groups(armor_groups) - - local props = self.object:get_properties() - props.textures[1] = t - self.object:set_properties(props) - minetest.chat_send_all(dump(self._armor)) - - -- Rare chance of dropping armor on death - for atype, material in pairs(self._armor) do - local wear = math.random(1, 65535) - local item = "mcl_armor:" .. atype .. "_" .. material .. " 1 " .. wear - self.drops = table.copy(self.drops) - table.insert(self.drops, { - name = item, - chance = 1/0.085, -- 8.5% - min = 1, - max = 1, - looting = "common", - looting_factor = 0.01 / 3, - }) - end - --[[for atype, material in pairs(self._armor) do - if math.random() <= 0.085 then + -- Setup armor drops + for atype, material in pairs(armor) do local wear = math.random(1, 65535) local item = "mcl_armor:" .. atype .. "_" .. material .. " 1 " .. wear - minetest.add_item(pos, item) + self.drops = table.copy(self.drops) + table.insert(self.drops, { + name = item, + chance = 1/0.085, -- 8.5% + min = 1, + max = 1, + looting = "rare", + looting_factor = 0.01 / 3, + }) end - end]] + + -- Configure textures + local t = "" + local first_image = true + for atype, material in pairs(armor) do + if not first_image then + t = t .. "^" + end + t = t .. "mcl_armor_" .. atype .. "_" .. material .. ".png" + first_image = false + end + if t ~= "" then + self.base_texture = table.copy(self.base_texture) + self.base_texture[1] = t + end + + -- Configure damage groups based on armor + -- Source: https://minecraft.fandom.com/wiki/Armor#Armor_points + local points = 2 + for atype, material in pairs(armor) do + local item_name = "mcl_armor:" .. atype .. "_" .. material + points = points + minetest.get_item_group(item_name, "mcl_armor_points") + end + local armor_strength = 100 - 4 * points + local armor_groups = self.object:get_armor_groups() + armor_groups.fleshy = armor_strength + self.armor = armor_groups + end end @@ -201,6 +200,11 @@ mobs.mob_activate = function(self, staticdata, def, dtime) self.base_colbox = self.collisionbox self.base_selbox = self.selectionbox end + + -- Setup armor on mobs + if self._spawn_with_armor then + mobs.armor_setup(self) + end -- for current mobs that dont have this set if not self.base_selbox then @@ -321,9 +325,6 @@ mobs.mob_activate = function(self, staticdata, def, dtime) --update_tag(self) --mobs.set_animation(self, "stand") - if self._spawn_with_armor then - mobs.armor_setup(self) - end -- run on_spawn function if found if self.on_spawn and not self.on_spawn_run then diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 27432745b..7a5682d8f 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -207,7 +207,6 @@ local zombie = { spawn_with_armor = true, } - mobs:register_mob("mobs_mc:zombie", zombie) -- Baby zombie. From 9b04b285b74aa5c96192d82700bf9d08d0e4dbbe Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 12 Apr 2022 22:08:33 +0000 Subject: [PATCH 428/521] Make the shield drop at death --- mods/PLAYER/mcl_death_drop/init.lua | 113 ++++++++++++++-------------- 1 file changed, 57 insertions(+), 56 deletions(-) diff --git a/mods/PLAYER/mcl_death_drop/init.lua b/mods/PLAYER/mcl_death_drop/init.lua index bfeee0c3e..5ea548ecc 100644 --- a/mods/PLAYER/mcl_death_drop/init.lua +++ b/mods/PLAYER/mcl_death_drop/init.lua @@ -1,56 +1,57 @@ -local random = math.random - -local ipairs = ipairs - -mcl_death_drop = {} - -mcl_death_drop.registered_dropped_lists = {} - -function mcl_death_drop.register_dropped_list(inv, listname, drop) - table.insert(mcl_death_drop.registered_dropped_lists, {inv = inv, listname = listname, drop = drop}) -end - -mcl_death_drop.register_dropped_list("PLAYER", "main", true) -mcl_death_drop.register_dropped_list("PLAYER", "craft", true) -mcl_death_drop.register_dropped_list("PLAYER", "armor", true) - -minetest.register_on_dieplayer(function(player) - local keep = minetest.settings:get_bool("mcl_keepInventory", false) - if keep == false then - -- Drop inventory, crafting grid and armor - local playerinv = player:get_inventory() - local pos = player:get_pos() - -- No item drop if in deep void - local _, void_deadly = mcl_worlds.is_in_void(pos) - - for l=1,#mcl_death_drop.registered_dropped_lists do - local inv = mcl_death_drop.registered_dropped_lists[l].inv - if inv == "PLAYER" then - inv = playerinv - elseif type(inv) == "function" then - inv = inv(player) - end - local listname = mcl_death_drop.registered_dropped_lists[l].listname - local drop = mcl_death_drop.registered_dropped_lists[l].drop - if inv then - for i, stack in ipairs(inv:get_list(listname)) do - local x = random(0, 9)/3 - local z = random(0, 9)/3 - pos.x = pos.x + x - pos.z = pos.z + z - if not void_deadly and drop and not mcl_enchanting.has_enchantment(stack, "curse_of_vanishing") then - local def = minetest.registered_items[stack:get_name()] - if def and def.on_drop then - stack = def.on_drop(stack, player, pos) - end - minetest.add_item(pos, stack) - end - pos.x = pos.x - x - pos.z = pos.z - z - end - inv:set_list(listname, {}) - end - end - mcl_armor.update(player) - end -end) +local random = math.random + +local ipairs = ipairs + +mcl_death_drop = {} + +mcl_death_drop.registered_dropped_lists = {} + +function mcl_death_drop.register_dropped_list(inv, listname, drop) + table.insert(mcl_death_drop.registered_dropped_lists, {inv = inv, listname = listname, drop = drop}) +end + +mcl_death_drop.register_dropped_list("PLAYER", "main", true) +mcl_death_drop.register_dropped_list("PLAYER", "craft", true) +mcl_death_drop.register_dropped_list("PLAYER", "armor", true) +mcl_death_drop.register_dropped_list("PLAYER", "offhand", true) + +minetest.register_on_dieplayer(function(player) + local keep = minetest.settings:get_bool("mcl_keepInventory", false) + if keep == false then + -- Drop inventory, crafting grid and armor + local playerinv = player:get_inventory() + local pos = player:get_pos() + -- No item drop if in deep void + local _, void_deadly = mcl_worlds.is_in_void(pos) + + for l=1,#mcl_death_drop.registered_dropped_lists do + local inv = mcl_death_drop.registered_dropped_lists[l].inv + if inv == "PLAYER" then + inv = playerinv + elseif type(inv) == "function" then + inv = inv(player) + end + local listname = mcl_death_drop.registered_dropped_lists[l].listname + local drop = mcl_death_drop.registered_dropped_lists[l].drop + if inv then + for i, stack in ipairs(inv:get_list(listname)) do + local x = random(0, 9)/3 + local z = random(0, 9)/3 + pos.x = pos.x + x + pos.z = pos.z + z + if not void_deadly and drop and not mcl_enchanting.has_enchantment(stack, "curse_of_vanishing") then + local def = minetest.registered_items[stack:get_name()] + if def and def.on_drop then + stack = def.on_drop(stack, player, pos) + end + minetest.add_item(pos, stack) + end + pos.x = pos.x - x + pos.z = pos.z - z + end + inv:set_list(listname, {}) + end + end + mcl_armor.update(player) + end +end) From b7f3b8edd56ec9e3a5c36a5366f5894f77abb3b9 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Wed, 13 Apr 2022 12:52:39 -0500 Subject: [PATCH 429/521] No sun damage wearing helment --- mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua index cebf28e58..971750293 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -107,11 +107,11 @@ mobs.armor_setup = function(self) end end - -- Setup table containing the armor items + -- Save armor items in lua entity self._armor_items = {} for atype, material in pairs(armor) do local item = "mcl_armor:" .. atype .. "_" .. material - table.insert(self._armor_items, item) + self._armor_items[atype] = item end -- Setup armor drops @@ -155,6 +155,11 @@ mobs.armor_setup = function(self) local armor_groups = self.object:get_armor_groups() armor_groups.fleshy = armor_strength self.armor = armor_groups + + -- Helmet protects mob from sun damage + if armor.helmet then + self.ignited_by_sunlight = false + end end end From f0b8e8ea1192511585974cb049769060b8647974 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Fri, 15 Apr 2022 13:56:49 -0500 Subject: [PATCH 430/521] Lava produce sparks --- mods/ITEMS/mcl_core/README.txt | 8 ++ mods/ITEMS/mcl_core/functions.lua | 89 ++++++++++++++++++ .../mcl_core/textures/mcl_core_lava_spark.png | Bin 0 -> 1520 bytes 3 files changed, 97 insertions(+) create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_lava_spark.png diff --git a/mods/ITEMS/mcl_core/README.txt b/mods/ITEMS/mcl_core/README.txt index 6c48d74fd..88da2f88d 100644 --- a/mods/ITEMS/mcl_core/README.txt +++ b/mods/ITEMS/mcl_core/README.txt @@ -21,6 +21,14 @@ MIT License. The textures are taken from the Minecraft resource pack “Faithful 1.11” by Vattic and xMrVizzy and contributers. + +CC BY-SA 4.0 + +mcl_core_lava_spark.png is based on the Pixel Perfection resource pack for Minecraft 1.11, +authored by XSSheep. +Source: +License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/) + Sounds ====== All sounds included in this mod are under the MIT License. diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 20978e26f..43ddbcce5 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -54,6 +54,95 @@ minetest.register_abm({ end, }) +-- Production of sparks from lava +minetest.register_abm({ + label = "Lava produce sparks", + nodenames = {"group:lava"}, + neighbors = {"air"}, + interval = 1, + chance = 100, + action = function(pos, node) + local above = minetest.get_node(vector.new(pos.x, pos.y + 1, pos.z)) + if above.name ~= "air" then return end + + local pos_addend = vector.new( + (math.random() - 0.5) * 0.8, + (math.random() - 0.5) * 0.8, + (math.random() - 0.5) * 0.8 + ) + local spark_pos = vector.add(pos, pos_addend) + local spark = minetest.add_entity(spark_pos, "mcl_core:lava_spark") + if not spark then return end + + local velocity = vector.new( + (math.random() - 0.5) * 3, + (math.random() + 2) * 2, + (math.random() - 0.5) * 3 + ) + spark:set_velocity(velocity) + + spark:set_acceleration(vector.new(0, -9, 0)) + + -- Set a random size + local size = 0.2 + math.random() * 0.2 + local props = spark:get_properties() + if not props then return end + props.visual_size = vector.new(size, size, size) + spark:set_properties(props) + + local luaentity = spark:get_luaentity() + if not luaentity then return end + luaentity._life_timer = 0.4 + math.random() + end +}) + +minetest.register_entity("mcl_core:lava_spark", { + physical = true, + visual = "sprite", + collide_with_objects = true, + textures = {"mcl_core_lava_spark.png"}, + glow = 10, + static_save = false, + _smoke_timer = 0.1, + _life_timer = 1, + on_step = function(self, dtime) + if not self or not self.object then return end + + self._life_timer = self._life_timer - dtime + if self._life_timer <= 0 then + self.object:remove() + return + end + + + self._smoke_timer = self._smoke_timer - dtime + if self._smoke_timer > 0 then return end + self._smoke_timer = math.random() * 0.4 + + local pos = self.object:get_pos() + + -- Add smoke + minetest.add_particlespawner({ + amount = 3, + time = 0.001, + minpos = pos, + maxpos = pos, + minvel = vector.new(-0.1, 1, -0.1), + maxvel = vector.new(0.1, 1.5, 0.1), + minexptime = 0.1, + maxexptime = 0.6, + minsize = 0.5, + maxsize = 1.5, + texture = "mcl_particles_smoke_anim.png", + animation = { + type = "vertical_frames", + aspect_w = 8, + aspect_h = 8, + } + }) + end +}) + -- -- Papyrus and cactus growing -- diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_lava_spark.png b/mods/ITEMS/mcl_core/textures/mcl_core_lava_spark.png new file mode 100644 index 0000000000000000000000000000000000000000..079f7730ec909c78b339f81d57748a5a7ed576da GIT binary patch literal 1520 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGlI$i7hTmC5mVhKKVmVx^vV$x?Kj3zEdpeVu zp7WB_vC9^gu_XQv=r;YYKZp4P2U~H*`KTd-=n;s{!0V8idA8e8&=E*@`{{T#>G&XrhtiLW>k;+{ zetmWkVlR;nn`apwrjT%q;!sYFg(Wg>9%q`}dEMiT{( z3UUHBpS94+n`S;FQ)F(0o=gY^#?Pm@I^I2>0*x`JIg!;Zr;%gKxiDA z`lT1+tMj z5aP19dhFU$ z&jWL9$Z*4tFyhdWMn0(>RG+C`$$d_Z4r;tW&3^Gt4el6kA!u$Veli0wb_C*a62OG! z$;>J_$CKP-W)q7M@r)|{gwtpe13}k`{h*WGo!mciGf?-t-1rqaGtvDDa%Q4?Aor2m z3u-N|?N%0`xeB2vc1XeULx--JHP7Frx2$>h!{34a(}70rn7V8<4;AUz-Coo@EtleY zv#Y6Ax<9C-f3W82c*{yJ=9bCUkNKx3_~qwY$?PyQmRtFVBLSZz=kTH6IjA zVFyZp+Vm9A@3K`pzhrAp0crOP((XNb)MMD$joRubb(w!5{N?)0>&f^1`pl1(>qEWf zq2M3MWPZMj?6S;N$9KyzzhZa%9q9iVXyCt4!mRxp)0f;<|0||u0004nX+uL$Nkc;* zaB^>EX>4Tx0C=2zkv&MmKpe$iQ>7vm2aAX}WT;LS#EJ+mQpF-zC~bvS9ZW9$f+h_~ zii@M*T5#}VvFhOBtgC~oAP9bdI5|2gx=4xtOA0MwJUH&hyL*qjcYx5SFxBju094H~ zQt_CW&8>=oR|pt{AG3%`%+wR<#SA>h*FAiEy^HWH?{j~SJ|%B5z$X&VG2O6;H;AV< zEuHf|afp>9h4`F!+@K2*KXP4m`HgeYVS#6cj7(~tI7BQKJ6P^uRx(uLDdMoAYLqWz zT~;`6aaJoe*19KuVKA?)q`6LW1aT}Ofh0u8sG*DsEJSG4NHLM3{g{V;*zqUHC6lWR zMvetkp+a)};D7MDTeA?Ibd!QHp!>zPKSqJTF3_yo_V=-EH%|cnGjOG~{nZ9A^GSNW zt%Z+({%zpmx~<83z~v4w^rTCMpV2qvfPq_}cg^jswU5&WAVXa(-v9@P zz*v#8*FE0d)7jgy{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jl`60TnYR%Q6uF002ZuL_t&-(_>(uD)_z8>Hn`D zkN?PGOvsW Date: Tue, 19 Apr 2022 08:01:56 -0500 Subject: [PATCH 431/521] Lava sparks: performance improvement --- mods/ITEMS/mcl_core/functions.lua | 118 ++++++++++++++++++++---------- settingtypes.txt | 4 + 2 files changed, 84 insertions(+), 38 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 43ddbcce5..407766d08 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -54,47 +54,89 @@ minetest.register_abm({ end, }) + +-- -- Production of sparks from lava -minetest.register_abm({ - label = "Lava produce sparks", - nodenames = {"group:lava"}, - neighbors = {"air"}, - interval = 1, - chance = 100, - action = function(pos, node) - local above = minetest.get_node(vector.new(pos.x, pos.y + 1, pos.z)) - if above.name ~= "air" then return end +-- + +local LAVA_SPARK_ABM_INTERVAL = 5 +local lava_spark_limit = minetest.settings:get("mcl_core_lava_spark_limit") +if lava_spark_limit == nil then + lava_spark_limit = 10 +else + lava_spark_limit = tonumber(lava_spark_limit) +end +local lava_spark_chance = 0 +local lava_spark_abm_census = 0 +local lava_spark_census = 0 + +function mcl_core.lava_spark_set_chance() + lava_spark_chance = lava_spark_limit / lava_spark_abm_census + minetest.after(LAVA_SPARK_ABM_INTERVAL, mcl_core.lava_spark_set_chance) + lava_spark_abm_census = 0 + lava_spark_census = 0 +end + +if lava_spark_limit > 0 then + mcl_core.lava_spark_set_chance() + + minetest.register_abm({ + label = "Lava produce sparks", + nodenames = {"group:lava"}, + neighbors = {"air"}, + interval = LAVA_SPARK_ABM_INTERVAL, + chance = 18, + action = function(pos, node) + local above = minetest.get_node(vector.new(pos.x, pos.y + 1, pos.z)) + if above.name ~= "air" then return end - local pos_addend = vector.new( - (math.random() - 0.5) * 0.8, - (math.random() - 0.5) * 0.8, - (math.random() - 0.5) * 0.8 - ) - local spark_pos = vector.add(pos, pos_addend) - local spark = minetest.add_entity(spark_pos, "mcl_core:lava_spark") - if not spark then return end + lava_spark_abm_census = lava_spark_abm_census + 1 - local velocity = vector.new( - (math.random() - 0.5) * 3, - (math.random() + 2) * 2, - (math.random() - 0.5) * 3 - ) - spark:set_velocity(velocity) + if lava_spark_census >= lava_spark_limit then return end + if math.random() > lava_spark_chance then return end - spark:set_acceleration(vector.new(0, -9, 0)) - - -- Set a random size - local size = 0.2 + math.random() * 0.2 - local props = spark:get_properties() - if not props then return end - props.visual_size = vector.new(size, size, size) - spark:set_properties(props) - - local luaentity = spark:get_luaentity() - if not luaentity then return end - luaentity._life_timer = 0.4 + math.random() - end -}) + lava_spark_census = lava_spark_census + 1 + minetest.after(math.random() * LAVA_SPARK_ABM_INTERVAL, mcl_core.lava_spark_add, pos) + end + }) +end + +function mcl_core.lava_spark_add(pos) + local node = minetest.get_node(pos) + if minetest.get_node_group(node.name, "lava") == 0 then return end + + local above = minetest.get_node(vector.new(pos.x, pos.y + 1, pos.z)) + if above.name ~= "air" then return end + + local pos_addend = vector.new( + (math.random() - 0.5) * 0.8, + (math.random() - 0.5) * 0.8, + (math.random() - 0.5) * 0.8 + ) + local spark_pos = vector.add(pos, pos_addend) + local spark = minetest.add_entity(spark_pos, "mcl_core:lava_spark") + if not spark then return end + + local velocity = vector.new( + (math.random() - 0.5) * 3, + (math.random() + 2) * 2, + (math.random() - 0.5) * 3 + ) + spark:set_velocity(velocity) + + spark:set_acceleration(vector.new(0, -9, 0)) + + -- Set a random size + local size = 0.2 + math.random() * 0.2 + local props = spark:get_properties() + if not props then return end + props.visual_size = vector.new(size, size, size) + spark:set_properties(props) + + local luaentity = spark:get_luaentity() + if not luaentity then return end + luaentity._life_timer = 0.4 + math.random() +end minetest.register_entity("mcl_core:lava_spark", { physical = true, @@ -117,7 +159,7 @@ minetest.register_entity("mcl_core:lava_spark", { self._smoke_timer = self._smoke_timer - dtime if self._smoke_timer > 0 then return end - self._smoke_timer = math.random() * 0.4 + self._smoke_timer = 0.2 + math.random() * 0.3 local pos = self.object:get_pos() diff --git a/settingtypes.txt b/settingtypes.txt index dca03b7e1..fd3f6114a 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -51,6 +51,10 @@ mcl_showDeathMessages (Show death messages) bool true # If disabled, all recipes will be shown. mcl_craftguide_progressive_mode (Learn crafting recipes progressively) bool true +# Limit the number of sparks produced by lava per 5 seconds to this number. +# 0 will disable lava sparks altogeter with no ABM being registered. +mcl_core_lava_spark_limit (Number of sparks lava can produce per 5 seconds) int 10 + [Mobs] # If enabled, mobs will spawn naturally. This does not affect # affect mob spawners. From 81534872905cea04089d7f22e9196a15401795c7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 19 Apr 2022 21:11:01 +0000 Subject: [PATCH 432/521] Add texture files for stripped stem Add texture files for stripped stem --- .../textures/stripped_crimson_stem_side.png | Bin 0 -> 193 bytes .../textures/stripped_crimson_stem_top.png | Bin 0 -> 231 bytes .../textures/stripped_warped_stem_side.png | Bin 0 -> 200 bytes .../textures/stripped_warped_stem_top.png | Bin 0 -> 239 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_mushroom/textures/stripped_crimson_stem_side.png create mode 100644 mods/ITEMS/mcl_mushroom/textures/stripped_crimson_stem_top.png create mode 100644 mods/ITEMS/mcl_mushroom/textures/stripped_warped_stem_side.png create mode 100644 mods/ITEMS/mcl_mushroom/textures/stripped_warped_stem_top.png diff --git a/mods/ITEMS/mcl_mushroom/textures/stripped_crimson_stem_side.png b/mods/ITEMS/mcl_mushroom/textures/stripped_crimson_stem_side.png new file mode 100644 index 0000000000000000000000000000000000000000..ad6a41a2ed679bb4aeba43bb934944d4abb9606c GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bjnyzp(=aO1G^$e9Z_zZE z*!$=*P%78c#W95AI&bem!6OPhN6dV<6y&%Lw6XEsVfgkf{_@Am&dLv$R^AAjB4Ype z`o|o}i+-+_)ohy=$^J@W(w+H=eFC==>%K1%SGZcDXO&F(u;dnRk(%v3?rmrDFDxrK pdv)Qp9e3V&OHB>0vv8L9#s2-OsL-oROdvNgc)I$ztaD0e0sukTN5237 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mushroom/textures/stripped_crimson_stem_top.png b/mods/ITEMS/mcl_mushroom/textures/stripped_crimson_stem_top.png new file mode 100644 index 0000000000000000000000000000000000000000..21696b098b5138b428e35702de9a589d34010c68 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aP17(c(ln}4*Kg4@=(BZM z>g2k|-Tg+4_lxS#?*=d9fXdoET^vI=uJfKTsO-HHwJNC*h4-GEOi&M* zIG5XMVd$b1v(Q$qhsWXJ8P3q c&DP|rudmSwXID!#0Xm7n)78&qol`;+0JS7o0{{R3 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mushroom/textures/stripped_warped_stem_side.png b/mods/ITEMS/mcl_mushroom/textures/stripped_warped_stem_side.png new file mode 100644 index 0000000000000000000000000000000000000000..db93c05cb449ae364df6f0653b72382c070aa62d GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VWwJ`THv-GjD337CZa&=1d zaZ6wQ&%zrhTj=TH7{YO#_v}H@!wNhs7jqe{H4j{SoTqZx!GTvH_y5|K+jIUs@cz7E zp+#`b-u-RKr=&|`f2_ILT)9y1SAy7;lvV4QZYo}BvbK$T)hd*id8wdH{i@lCd0%#v x-!Qqqp!DI3#g1!>cD$V)qV@LRLAgT}|6&qk```DsaR4o6@O1TaS?83{1OR&;P*wl{ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mushroom/textures/stripped_warped_stem_top.png b/mods/ITEMS/mcl_mushroom/textures/stripped_warped_stem_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8f14800e6a14771a73a98efe5712a89a97963e GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYwKVs(vkGvvi*U7%4suBi zaw`aS%a8S~$qAX56VX!_yDn|g>NcR_PEQxd5RU7-XKeYJ97J3np609g$D*sKwuy1+ zwXV31*9^(;Qmjm#?LDKnCM{*^rMb_nPb|3;v-Ff=w%V@s3v4b+)HNwjp7~W@L~-IR z{~Kqkl1rFh9huy3w!rjP%6z`H#`(YAZ74n6R_OBZar2zzt=Wt7I-_DYEKp8yJoTGv l)BMYuC0Qa>+q Date: Tue, 19 Apr 2022 22:35:18 +0000 Subject: [PATCH 433/521] Add warped hyphae stripped and bark --- mods/ITEMS/mcl_mushroom/init.lua | 66 ++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 46383699a..532d7f98d 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -213,6 +213,72 @@ minetest.register_node("mcl_mushroom:warped_checknode", { drop = "mcl_nether:netherrack" }) +--Stem bark, stripped stem and bark + +minetest.register_node("mcl_mushroom:warped_hyphae_bark", { + description = S("Warped Hyphae"), + _doc_items_longdesc = S("This is a decorative block surrounded by the bark of an hyphae."), + tiles = {"warped_hyphae_side.png"}, + 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, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + is_ground_content = false, + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + _mcl_stripped_variant = "mcl_mushroom:stripped_warped_hyphae_bark", + }) + +minetest.register_craft({ + output = "mcl_mushroom:warped_hyphae_bark 3", + recipe = { + { "mcl_mushroom:warped_hyphae", "mcl_mushroom:warped_hyphae" }, + { "mcl_mushroom:warped_hyphae", "mcl_mushroom:warped_hyphae" }, + } + }) + +minetest.register_node("mcl_mushroom:stripped_warped_hyphae", { + description = description_stripped_trunk, + _doc_items_longdesc = longdesc, + _doc_items_hidden = false, + tiles = {tile_stripped_inner, tile_stripped_inner, tile_stripped_bark}, + 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, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + }) + +minetest.register_node("mcl_mushroom:stripped_warped_hyphae_bark", { + description = description_stripped_bark, + _doc_items_longdesc = longdesc_wood, + tiles = {tile_stripped_bark}, + 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, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + is_ground_content = false, + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + }) + +minetest.register_craft({ + output = "mcl_mushroom:stripped_warped_hyphae_bark 3", + recipe = { + { "mcl_mushroom:stripped_warped_hyphae", "mcl_mushroom:stripped_warped_hyphae" }, + { "mcl_mushroom:stripped_warped_hyphae", "mcl_mushroom:stripped_warped_hyphae" }, + } + }) + +--Wood + minetest.register_node("mcl_mushroom:warped_hyphae_wood", { description = S("Warped Hyphae Wood"), tiles = {"warped_hyphae_wood.png"}, From 9010305df42868dc78e6279943093d6bafb78427 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 19 Apr 2022 22:55:48 +0000 Subject: [PATCH 434/521] Add stripped warped stuff --- mods/ITEMS/mcl_mushroom/init.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 532d7f98d..a712740c8 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -240,10 +240,10 @@ minetest.register_craft({ }) minetest.register_node("mcl_mushroom:stripped_warped_hyphae", { - description = description_stripped_trunk, - _doc_items_longdesc = longdesc, + description = S("Stripped Warped Hyphae"), + _doc_items_longdesc = S("The stripped stem of a warped hyphae"), _doc_items_hidden = false, - tiles = {tile_stripped_inner, tile_stripped_inner, tile_stripped_bark}, + tiles = {"stripped_warped_stem_top.png", "stripped_warped_stem_top.png", "stripped_warped_stem_side.png"}, paramtype2 = "facedir", on_place = mcl_util.rotate_axis, stack_max = 64, @@ -255,9 +255,9 @@ minetest.register_node("mcl_mushroom:stripped_warped_hyphae", { }) minetest.register_node("mcl_mushroom:stripped_warped_hyphae_bark", { - description = description_stripped_bark, - _doc_items_longdesc = longdesc_wood, - tiles = {tile_stripped_bark}, + description = S("Stripped Warped Hyphae Bark"), + _doc_items_longdesc = S("The stripped wood of a warped hyphae"), + tiles = {"stripped_warped_stem_side.png"}, paramtype2 = "facedir", on_place = mcl_util.rotate_axis, stack_max = 64, From 1d331313d7fcec210f39d67ce2867110884fa57f Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 19 Apr 2022 23:25:21 +0000 Subject: [PATCH 435/521] Same for crimson hyphae --- mods/ITEMS/mcl_mushroom/init.lua | 66 ++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index a712740c8..042a7b805 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -431,6 +431,72 @@ minetest.register_node("mcl_mushroom:crimson_hyphae", { _mcl_hardness = 2, }) +--Stem bark, stripped stem and bark + +minetest.register_node("mcl_mushroom:crimson_hyphae_bark", { + description = S("Crimson Hyphae"), + _doc_items_longdesc = S("This is a decorative block surrounded by the bark of an hyphae."), + tiles = {"crimson_hyphae_side.png"}, + 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, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + is_ground_content = false, + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + _mcl_stripped_variant = "mcl_mushroom:stripped_crimson_hyphae_bark", + }) + +minetest.register_craft({ + output = "mcl_mushroom:crimson_hyphae_bark 3", + recipe = { + { "mcl_mushroom:crimson_hyphae", "mcl_mushroom:crimson_hyphae" }, + { "mcl_mushroom:crimson_hyphae", "mcl_mushroom:crimson_hyphae" }, + } + }) + +minetest.register_node("mcl_mushroom:stripped_crimson_hyphae", { + description = S("Stripped Crimson Hyphae"), + _doc_items_longdesc = S("The stripped stem of a crimson hyphae"), + _doc_items_hidden = false, + tiles = {"stripped_crimson_stem_top.png", "stripped_crimson_stem_top.png", "stripped_crimson_stem_side.png"}, + 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, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + }) + +minetest.register_node("mcl_mushroom:stripped_crimson_hyphae_bark", { + description = S("Stripped Crimson Hyphae Bark"), + _doc_items_longdesc = S("The stripped wood of a crimson hyphae"), + tiles = {"stripped_crimson_stem_side.png"}, + 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, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + is_ground_content = false, + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + }) + +minetest.register_craft({ + output = "mcl_mushroom:stripped_crimson_hyphae_bark 3", + recipe = { + { "mcl_mushroom:stripped_crimson_hyphae", "mcl_mushroom:stripped_crimson_hyphae" }, + { "mcl_mushroom:stripped_crimson_hyphae", "mcl_mushroom:stripped_crimson_hyphae" }, + } + }) + +--Wood + minetest.register_node("mcl_mushroom:crimson_hyphae_wood", { description = S("Crimson Hyphae Wood"), tiles = {"crimson_hyphae_wood.png"}, From 4850b914a489ce4c1d34742249052e25a3e0ca62 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 00:29:44 +0000 Subject: [PATCH 436/521] Non flammable/modify by similiraty with trees --- mods/ITEMS/mcl_mushroom/init.lua | 42 +++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 042a7b805..923adcffa 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -160,6 +160,8 @@ minetest.register_node("mcl_mushroom:shroomlight", { minetest.register_node("mcl_mushroom:warped_hyphae", { description = S("Warped Hyphae"), + _doc_items_longdesc = S("The stem of a warped hyphae"), + _doc_items_hidden = false, tiles = { "warped_hyphae.png", "warped_hyphae.png", @@ -168,10 +170,15 @@ minetest.register_node("mcl_mushroom:warped_hyphae", { "warped_hyphae_side.png", "warped_hyphae_side.png", }, - groups = {handy=5,axey=1, bark=1, building_block=1, material_wood=1,}, paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + groups = {handy=1,axey=1, tree=1, building_block=1, material_wood=1}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, + _mcl_blast_resistance = 2, stack_max = 64, _mcl_hardness = 2, + _mcl_stripped_variant = stripped_variant, }) minetest.register_node("mcl_mushroom:warped_nylium", { @@ -222,7 +229,7 @@ minetest.register_node("mcl_mushroom:warped_hyphae_bark", { 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, fire_encouragement=5, fire_flammability=5}, + groups = {handy=1,axey=1, bark=1, building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = false, on_rotate = on_rotate, @@ -247,7 +254,7 @@ minetest.register_node("mcl_mushroom:stripped_warped_hyphae", { 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, fire_encouragement=5, fire_flammability=5}, + groups = {handy=1, axey=1, tree=1, building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = on_rotate, _mcl_blast_resistance = 2, @@ -261,7 +268,7 @@ minetest.register_node("mcl_mushroom:stripped_warped_hyphae_bark", { 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, fire_encouragement=5, fire_flammability=5}, + groups = {handy=1, axey=1, bark=1, building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = false, on_rotate = on_rotate, @@ -282,7 +289,7 @@ minetest.register_craft({ minetest.register_node("mcl_mushroom:warped_hyphae_wood", { description = S("Warped Hyphae Wood"), tiles = {"warped_hyphae_wood.png"}, - groups = {handy=5,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, + groups = {handy=5,axey=1, wood=1,building_block=1, material_wood=1}, --paramtype2 = "facedir", stack_max = 64, _mcl_hardness = 2, @@ -417,18 +424,25 @@ minetest.register_node("mcl_mushroom:crimson_roots", { minetest.register_node("mcl_mushroom:crimson_hyphae", { description = S("Crimson Hyphae"), + _doc_items_longdesc = S("The stem of a crimson hyphae"), + _doc_items_hidden = false, tiles = { "crimson_hyphae.png", - "crimson_hyphae.png", - "crimson_hyphae_side.png", - "crimson_hyphae_side.png", - "crimson_hyphae_side.png", - "crimson_hyphae_side.png", + "crimson_hyphae.png", + "crimson_hyphae_side.png", + "crimson_hyphae_side.png", + "crimson_hyphae_side.png", + "crimson_hyphae_side.png", }, - groups = {handy=5,axey=1, bark=1, building_block=1, material_wood=1,}, paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + groups = {handy=1,axey=1, tree=1, building_block=1, material_wood=1}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, + _mcl_blast_resistance = 2, stack_max = 64, _mcl_hardness = 2, + _mcl_stripped_variant = stripped_variant, }) --Stem bark, stripped stem and bark @@ -440,7 +454,7 @@ minetest.register_node("mcl_mushroom:crimson_hyphae_bark", { 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, fire_encouragement=5, fire_flammability=5}, + groups = {handy=1,axey=1, bark=1, building_block=1, material_wood=1,}, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = false, on_rotate = on_rotate, @@ -465,7 +479,7 @@ minetest.register_node("mcl_mushroom:stripped_crimson_hyphae", { 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, fire_encouragement=5, fire_flammability=5}, + groups = {handy=1, axey=1, tree=1, building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = on_rotate, _mcl_blast_resistance = 2, @@ -479,7 +493,7 @@ minetest.register_node("mcl_mushroom:stripped_crimson_hyphae_bark", { 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, fire_encouragement=5, fire_flammability=5}, + groups = {handy=1, axey=1, bark=1, building_block=1, material_wood=1}, sounds = mcl_sounds.node_sound_wood_defaults(), is_ground_content = false, on_rotate = on_rotate, From 44c2c26265446f30a9d64215f48ed5dde8297b96 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 01:35:48 +0000 Subject: [PATCH 437/521] make nether woods doors unflammable --- mods/ITEMS/mcl_doors/register.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index 8c8b7613f..f79d68e0a 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -149,7 +149,7 @@ mcl_doors:register_door("mcl_doors:crimson_door", { _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_crimson.png", - groups = {handy=1,axey=1, material_wood=1, flammable=-1}, + groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 3, tiles_bottom = {"mcl_doors_door_crimson_lower.png", "mcl_doors_door_crimson_side_lower.png"}, @@ -172,7 +172,7 @@ mcl_doors:register_door("mcl_doors:warped_door", { _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, inventory_image = "mcl_doors_door_warped.png", - groups = {handy=1,axey=1, material_wood=1, flammable=-1}, + groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 3, tiles_bottom = {"mcl_doors_door_warped_lower.png", "mcl_doors_door_warped_side_lower.png"}, From 04c62e475ee6391f4f9b30ecbf8b6f83465f63b7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 01:42:50 +0000 Subject: [PATCH 438/521] makes nether wood trapdoors unflammable --- mods/ITEMS/mcl_doors/register.lua | 39 +++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index f79d68e0a..32601ee14 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -270,8 +270,6 @@ local woods = { { "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" }, - { "crimson_trapdoor", S("Crimson Trapdoor"), "mcl_doors_trapdoor_crimson.png", "mcl_doors_trapdoor_crimson_side.png", "mcl_mushroom:crimson_hyphae_wood" }, - { "warped_trapdoor", S("Warped Trapdoor"), "mcl_doors_trapdoor_warped.png", "mcl_doors_trapdoor_warped_side.png", "mcl_mushroom:warped_hyphae_wood" }, } for w=1, #woods do @@ -303,6 +301,43 @@ for w=1, #woods do }) end +local woods_nether = { + -- id, desc, texture, craftitem + { "crimson_trapdoor", S("Crimson Trapdoor"), "mcl_doors_trapdoor_crimson.png", "mcl_doors_trapdoor_crimson_side.png", "mcl_mushroom:crimson_hyphae_wood" }, + { "warped_trapdoor", S("Warped Trapdoor"), "mcl_doors_trapdoor_warped.png", "mcl_doors_trapdoor_warped_side.png", "mcl_mushroom:warped_hyphae_wood" }, +} + +for w=1, #woods_nether do + mcl_doors:register_trapdoor("mcl_doors:"..woods[w][1], { + description = woods[w][2], + _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], + groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + sounds = mcl_sounds.node_sound_wood_defaults(), + }) + + minetest.register_craft({ + output = "mcl_doors:"..woods[w][1].." 2", + recipe = { + {woods[w][5], woods[w][5], woods[w][5]}, + {woods[w][5], woods[w][5], woods[w][5]}, + } + }) + + minetest.register_craft({ + type = "fuel", + recipe = "mcl_doors:"..woods[w][1], + burntime = 15, + }) +end + +--Iron Trapdoor-- + mcl_doors:register_trapdoor("mcl_doors:iron_trapdoor", { 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."), From df8dab3fac34fec143359f4247dba98c7f56c1bc Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 01:47:39 +0000 Subject: [PATCH 439/521] Makes nether wood fences unflammable --- mods/ITEMS/mclx_fences/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mclx_fences/init.lua b/mods/ITEMS/mclx_fences/init.lua index 53aab68b2..a4fa0b169 100644 --- a/mods/ITEMS/mclx_fences/init.lua +++ b/mods/ITEMS/mclx_fences/init.lua @@ -30,7 +30,7 @@ mcl_fences.register_fence_and_fence_gate( "crimson_wood_fence", S("Crimson Hyphae Wood Fence"), S("Crimson Hyphae Wood Fence Gate"), "mcl_fences_fence_crimson.png", - {handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20}, + {handy=1,axey=1, fence_wood=1}, minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, {"group:fence_wood"}, @@ -43,7 +43,7 @@ mcl_fences.register_fence_and_fence_gate( "warped_wood_fence", S("Warped Hyphae Wood Fence"), S("Warped Hyphae Wood Fence Gate"), "mcl_fences_fence_warped.png", - {handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20}, + {handy=1,axey=1, fence_wood=1}, minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, {"group:fence_wood"}, From c3ef5e93af5ea8030c3ff0544422c226273b5e94 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 03:37:28 +0000 Subject: [PATCH 440/521] Put door registration into a loop to have less lines of code --- mods/ITEMS/mcl_doors/register.lua | 290 ++++++++---------------------- 1 file changed, 75 insertions(+), 215 deletions(-) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index 32601ee14..6dd9dc1d2 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -5,232 +5,87 @@ local S = minetest.get_translator(minetest.get_current_modname()) 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 = S("Oak 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, flammable=-1}, - _mcl_hardness = 3, - _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(), -}) +--Register flammable doors-- -minetest.register_craft({ - output = "mcl_doors:wooden_door 3", - recipe = { - {"mcl_core:wood", "mcl_core:wood"}, - {"mcl_core:wood", "mcl_core:wood"}, - {"mcl_core:wood", "mcl_core:wood"} - } -}) +local woods = { + --id, desc, textures, craftitem + {"wooden_door",S("Oak Door"),"doors_item_wood.png",{"mcl_doors_door_wood_lower.png", "mcl_doors_door_wood_side_lower.png"},{"mcl_doors_door_wood_upper.png", "mcl_doors_door_wood_side_upper.png"},"mcl_core:wood"}, + {"acacia_door",S("Acacia Door"),"mcl_doors_door_acacia.png",{"mcl_doors_door_acacia_lower.png", "mcl_doors_door_acacia_side_lower.png"},{"mcl_doors_door_acacia_upper.png", "mcl_doors_door_acacia_side_upper.png"},"mcl_core:acaciawood"}, + {"birch_door",S("Birch Door"),"mcl_doors_door_birch.png",{"mcl_doors_door_birch_lower.png", "mcl_doors_door_birch_side_lower.png"},{"mcl_doors_door_birch_upper.png", "mcl_doors_door_birch_side_upper.png"},"mcl_core:birchwood"}, + {"dark_oak_door",S("Dark Oak Door"),"mcl_doors_door_dark_oak.png",{"mcl_doors_door_dark_oak_lower.png", "mcl_doors_door_dark_oak_side_lower.png"},{"mcl_doors_door_dark_oak_upper.png", "mcl_doors_door_dark_oak_side_upper.png"},"mcl_core:darkwood"}, + {"jungle_door",S("Jungle Door"),"mcl_doors_door_jungle.png",{"mcl_doors_door_jungle_lower.png", "mcl_doors_door_jungle_side_lower.png"},{"mcl_doors_door_jungle_upper.png", "mcl_doors_door_jungle_side_upper.png"},"mcl_core:junglewood"}, + {"spruce_door",S("Spruce Door"),"mcl_doors_door_spruce.png",{"mcl_doors_door_spruce_lower.png", "mcl_doors_door_spruce_side_lower.png"},{"mcl_doors_door_spruce_upper.png", "mcl_doors_door_spruce_side_upper.png"},"mcl_core:sprucewood"}, +} ---- Acacia Door -- -mcl_doors:register_door("mcl_doors:acacia_door", { - description = S("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, flammable=-1}, - _mcl_hardness = 3, - _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(), -}) +for w=1 #woods do + mcl_doors:register_door("mcl_doors:"..woods[w][1], { + description = woods[w][2], + _doc_items_longdesc = wood_longdesc, + _doc_items_usagehelp = wood_usagehelp, + inventory_image = woods[w][3], + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + tiles_bottom = woods[w][4], + tiles_top = woods[w][5], + sounds = mcl_sounds.node_sound_wood_defaults(), + }) -minetest.register_craft({ - output = "mcl_doors:acacia_door 3", - recipe = { - {"mcl_core:acaciawood", "mcl_core:acaciawood"}, - {"mcl_core:acaciawood", "mcl_core:acaciawood"}, - {"mcl_core:acaciawood", "mcl_core:acaciawood"} - } -}) + minetest.register_craft({ + output = "mcl_doors:"..woods[w][1].." 3", + recipe = { + {woods[w][6], woods[w][6]}, + {woods[w][6], woods[w][6]}, + {woods[w][6], woods[w][6]} + } + }) ---- Birch Door -- -mcl_doors:register_door("mcl_doors:birch_door", { - description = S("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, flammable=-1}, - _mcl_hardness = 3, - _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(), -}) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_doors:"..woods[w][1], + burntime = 10, + }) -minetest.register_craft({ - output = "mcl_doors:birch_door 3", - recipe = { - {"mcl_core:birchwood", "mcl_core:birchwood"}, - {"mcl_core:birchwood", "mcl_core:birchwood"}, - {"mcl_core:birchwood", "mcl_core:birchwood"}, - } -}) +end ---- Dark Oak Door -- -mcl_doors:register_door("mcl_doors: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", - groups = {handy=1,axey=1, material_wood=1, flammable=-1}, - _mcl_hardness = 3, - _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(), -}) +--Register non-flammable doors-- -minetest.register_craft({ - output = "mcl_doors:dark_oak_door 3", - recipe = { - {"mcl_core:darkwood", "mcl_core:darkwood"}, - {"mcl_core:darkwood", "mcl_core:darkwood"}, - {"mcl_core:darkwood", "mcl_core:darkwood"}, - } -}) +local woods_nether = { + --id, desc, textures, craftitem + {"crimson_door",S("Crimson Door"),"mcl_doors_door_crimson.png",{"mcl_doors_door_crimson_lower.png", "mcl_doors_door_crimson_side_lower.png"},{"mcl_doors_door_crimson_upper.png", "mcl_doors_door_crimson_side_upper.png"},"mcl_mushroom:crimson_hyphae_wood"}, + {"warped_door",S("Warped Door"),"mcl_doors_door_warped.png",{"mcl_doors_door_warped_lower.png", "mcl_doors_door_warped_side_lower.png"},{"mcl_doors_door_warped_upper.png", "mcl_doors_door_warped_side_upper.png"},"mcl_mushroom:warped_hyphae_wood"}, +} ---- Jungle Door -- -mcl_doors:register_door("mcl_doors:jungle_door", { - description = S("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, flammable=-1}, - _mcl_hardness = 3, - _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(), -}) +for w=1 #woods_nether do + mcl_doors:register_door("mcl_doors:"..woods[w][1], { + description = woods[w][2], + _doc_items_longdesc = wood_longdesc, + _doc_items_usagehelp = wood_usagehelp, + inventory_image = woods[w][3], + groups = {handy=1,axey=1, material_wood=1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + tiles_bottom = woods[w][4], + tiles_top = woods[w][5], + sounds = mcl_sounds.node_sound_wood_defaults(), + }) -minetest.register_craft({ - output = "mcl_doors:jungle_door 3", - recipe = { - {"mcl_core:junglewood", "mcl_core:junglewood"}, - {"mcl_core:junglewood", "mcl_core:junglewood"}, - {"mcl_core:junglewood", "mcl_core:junglewood"} - } -}) + minetest.register_craft({ + output = "mcl_doors:"..woods[w][1].." 3", + recipe = { + {woods[w][6], woods[w][6]}, + {woods[w][6], woods[w][6]}, + {woods[w][6], woods[w][6]} + } + }) ---- Spruce Door -- -mcl_doors:register_door("mcl_doors:spruce_door", { - description = S("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, flammable=-1}, - _mcl_hardness = 3, - _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(), -}) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_doors:"..woods[w][1], + burntime = 10, + }) -minetest.register_craft({ - output = "mcl_doors:spruce_door 3", - recipe = { - {"mcl_core:sprucewood", "mcl_core:sprucewood"}, - {"mcl_core:sprucewood", "mcl_core:sprucewood"}, - {"mcl_core:sprucewood", "mcl_core:sprucewood"} - } -}) - ---- Crimson Door -- -mcl_doors:register_door("mcl_doors:crimson_door", { - description = S("Crimson Door"), - _doc_items_longdesc = wood_longdesc, - _doc_items_usagehelp = wood_usagehelp, - inventory_image = "mcl_doors_door_crimson.png", - groups = {handy=1,axey=1, material_wood=1}, - _mcl_hardness = 3, - _mcl_blast_resistance = 3, - tiles_bottom = {"mcl_doors_door_crimson_lower.png", "mcl_doors_door_crimson_side_lower.png"}, - tiles_top = {"mcl_doors_door_crimson_upper.png", "mcl_doors_door_crimson_side_upper.png"}, - sounds = mcl_sounds.node_sound_wood_defaults(), -}) - -minetest.register_craft({ - output = "mcl_doors:crimson_door 3", - recipe = { - {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"}, - {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"}, - {"mcl_mushroom:crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood"} - } -}) - ---- Warped Door -- -mcl_doors:register_door("mcl_doors:warped_door", { - description = S("Warped Door"), - _doc_items_longdesc = wood_longdesc, - _doc_items_usagehelp = wood_usagehelp, - inventory_image = "mcl_doors_door_warped.png", - groups = {handy=1,axey=1, material_wood=1}, - _mcl_hardness = 3, - _mcl_blast_resistance = 3, - tiles_bottom = {"mcl_doors_door_warped_lower.png", "mcl_doors_door_warped_side_lower.png"}, - tiles_top = {"mcl_doors_door_warped_upper.png", "mcl_doors_door_warped_side_upper.png"}, - sounds = mcl_sounds.node_sound_wood_defaults(), -}) - -minetest.register_craft({ - output = "mcl_doors:warped_door 3", - recipe = { - {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"}, - {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"}, - {"mcl_mushroom:warped_hyphae_wood", "mcl_mushroom:warped_hyphae_wood"} - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:wooden_door", - burntime = 10, -}) -minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:jungle_door", - burntime = 10, -}) -minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:dark_oak_door", - burntime = 10, -}) -minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:birch_door", - burntime = 10, -}) -minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:acacia_door", - burntime = 10, -}) -minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:spruce_door", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:crimson_door", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:warped_door", - burntime = 10, -}) +end --- Iron Door --- mcl_doors:register_door("mcl_doors:iron_door", { @@ -262,6 +117,9 @@ minetest.register_craft({ --[[ Trapdoors ]] + +--Register flammable trapdoors-- + local woods = { -- id, desc, texture, craftitem { "trapdoor", S("Oak Trapdoor"), "doors_trapdoor.png", "doors_trapdoor_side.png", "mcl_core:wood" }, @@ -301,6 +159,8 @@ for w=1, #woods do }) end +--Register non-flammable trapdoors-- + local woods_nether = { -- id, desc, texture, craftitem { "crimson_trapdoor", S("Crimson Trapdoor"), "mcl_doors_trapdoor_crimson.png", "mcl_doors_trapdoor_crimson_side.png", "mcl_mushroom:crimson_hyphae_wood" }, From f57135259c5ca5aa7fecf2153f02615b0aa1e519 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 03:42:54 +0000 Subject: [PATCH 441/521] fix --- mods/ITEMS/mcl_doors/register.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index 6dd9dc1d2..f4ea6abe1 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -17,7 +17,7 @@ local woods = { {"spruce_door",S("Spruce Door"),"mcl_doors_door_spruce.png",{"mcl_doors_door_spruce_lower.png", "mcl_doors_door_spruce_side_lower.png"},{"mcl_doors_door_spruce_upper.png", "mcl_doors_door_spruce_side_upper.png"},"mcl_core:sprucewood"}, } -for w=1 #woods do +for w=1, #woods do mcl_doors:register_door("mcl_doors:"..woods[w][1], { description = woods[w][2], _doc_items_longdesc = wood_longdesc, @@ -56,7 +56,7 @@ local woods_nether = { {"warped_door",S("Warped Door"),"mcl_doors_door_warped.png",{"mcl_doors_door_warped_lower.png", "mcl_doors_door_warped_side_lower.png"},{"mcl_doors_door_warped_upper.png", "mcl_doors_door_warped_side_upper.png"},"mcl_mushroom:warped_hyphae_wood"}, } -for w=1 #woods_nether do +for w=1, #woods_nether do mcl_doors:register_door("mcl_doors:"..woods[w][1], { description = woods[w][2], _doc_items_longdesc = wood_longdesc, From ed29cd687bea3c3c467bc814a2fd89814128cd0d Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 04:07:22 +0000 Subject: [PATCH 442/521] fix --- mods/ITEMS/mcl_doors/register.lua | 38 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index f4ea6abe1..4d30fcc31 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -57,31 +57,31 @@ local woods_nether = { } for w=1, #woods_nether do - mcl_doors:register_door("mcl_doors:"..woods[w][1], { - description = woods[w][2], + mcl_doors:register_door("mcl_doors:"..woods_nether[w][1], { + description = woods_nether[w][2], _doc_items_longdesc = wood_longdesc, _doc_items_usagehelp = wood_usagehelp, - inventory_image = woods[w][3], + inventory_image = woods_nether[w][3], groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 3, - tiles_bottom = woods[w][4], - tiles_top = woods[w][5], + tiles_bottom = woods_nether[w][4], + tiles_top = woods_nether[w][5], sounds = mcl_sounds.node_sound_wood_defaults(), }) minetest.register_craft({ - output = "mcl_doors:"..woods[w][1].." 3", + output = "mcl_doors:"..woods_nether[w][1].." 3", recipe = { - {woods[w][6], woods[w][6]}, - {woods[w][6], woods[w][6]}, - {woods[w][6], woods[w][6]} + {woods_nether[w][6], woods_nether[w][6]}, + {woods_nether[w][6], woods_nether[w][6]}, + {woods_nether[w][6], woods_nether[w][6]} } }) minetest.register_craft({ type = "fuel", - recipe = "mcl_doors:"..woods[w][1], + recipe = "mcl_doors:"..woods_nether[w][1], burntime = 10, }) @@ -168,13 +168,13 @@ local woods_nether = { } for w=1, #woods_nether do - mcl_doors:register_trapdoor("mcl_doors:"..woods[w][1], { - description = woods[w][2], + mcl_doors:register_trapdoor("mcl_doors:"..woods_nether[w][1], { + description = woods_nether[w][2], _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], + tile_front = woods_nether[w][3], + tile_side = woods_nether[w][4], + wield_image = woods_nether[w][3], groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 3, @@ -182,16 +182,16 @@ for w=1, #woods_nether do }) minetest.register_craft({ - output = "mcl_doors:"..woods[w][1].." 2", + output = "mcl_doors:"..woods_nether[w][1].." 2", recipe = { - {woods[w][5], woods[w][5], woods[w][5]}, - {woods[w][5], woods[w][5], woods[w][5]}, + {woods_nether[w][5], woods_nether[w][5], woods_nether[w][5]}, + {woods_nether[w][5], woods_nether[w][5], woods_nether[w][5]}, } }) minetest.register_craft({ type = "fuel", - recipe = "mcl_doors:"..woods[w][1], + recipe = "mcl_doors:"..woods_nether[w][1], burntime = 15, }) end From 3dcb969d7543c4ea73bad3c6fbc350974d8f1058 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 04:32:13 +0000 Subject: [PATCH 443/521] fix --- mods/ITEMS/mcl_mushroom/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 923adcffa..8757d1e94 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -178,7 +178,7 @@ minetest.register_node("mcl_mushroom:warped_hyphae", { _mcl_blast_resistance = 2, stack_max = 64, _mcl_hardness = 2, - _mcl_stripped_variant = stripped_variant, + _mcl_stripped_variant = "mcl_mushroom:stripped_warped_hyphae", }) minetest.register_node("mcl_mushroom:warped_nylium", { @@ -442,7 +442,7 @@ minetest.register_node("mcl_mushroom:crimson_hyphae", { _mcl_blast_resistance = 2, stack_max = 64, _mcl_hardness = 2, - _mcl_stripped_variant = stripped_variant, + _mcl_stripped_variant = "mcl_mushroom:stripped_crimson_hyphae", }) --Stem bark, stripped stem and bark From 9367c74e71e00edbaafb7387bf676997e480f60a Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 05:06:07 +0000 Subject: [PATCH 444/521] Add bark stairs and slab --- mods/ITEMS/mcl_mushroom/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 8757d1e94..684582b80 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -246,6 +246,8 @@ minetest.register_craft({ } }) +mcl_stairs.register_stair_and_slab_simple("warped_hyphae_bark", "mcl_mushroom:warped_hyphae_bark", S("Warped Bark Stair"), S("Warped Bark Slab"), S("Double Warped Bark Slab"), "woodlike") + minetest.register_node("mcl_mushroom:stripped_warped_hyphae", { description = S("Stripped Warped Hyphae"), _doc_items_longdesc = S("The stripped stem of a warped hyphae"), @@ -471,6 +473,8 @@ minetest.register_craft({ } }) +mcl_stairs.register_stair_and_slab_simple("crimson_hyphae_bark", "mcl_mushroom:crimson_hyphae_bark", S("Crimson Bark Stair"), S("Crimson Bark Slab"), S("Double Crimson Bark Slab"), "woodlike") + minetest.register_node("mcl_mushroom:stripped_crimson_hyphae", { description = S("Stripped Crimson Hyphae"), _doc_items_longdesc = S("The stripped stem of a crimson hyphae"), From c5ad0d5f33388340055e1776599bf51d11de1a12 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Wed, 20 Apr 2022 16:56:17 -0500 Subject: [PATCH 445/521] Remove image stack wieldview --- mods/PLAYER/mcl_player/init.lua | 4 - mods/PLAYER/mcl_playerplus/init.lua | 12 ++- mods/PLAYER/mcl_wieldview/README.txt | 13 +-- mods/PLAYER/mcl_wieldview/init.lua | 150 ++++++--------------------- mods/PLAYER/mcl_wieldview/mod.conf | 1 - 5 files changed, 41 insertions(+), 139 deletions(-) diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index 9d910a89a..f3e5ad0c3 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -109,10 +109,6 @@ function mcl_player.player_set_armor(player, texture, preview) set_preview(player, "armor", preview) end -function mcl_player.player_set_wielditem(player, texture) - set_texture(player, 3, texture) -end - function mcl_player.player_get_preview(player) local preview = player:get_meta():get_string("mcl_player:skin_preview") if preview == "" then diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 85755e0de..85be89aa0 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -324,15 +324,17 @@ minetest.register_globalstep(function(dtime) end if wielded_def and wielded_def._mcl_toollike_wield then - set_bone_position_conditional(player,"Wield_Item", vector.new(0,3.9,1.3), vector.new(90,0,0)) + set_bone_position_conditional(player,"Wield_Item", vector.new(0,4.7,3.1), vector.new(90,-45,90)) elseif string.find(wielded:get_name(), "mcl_bows:bow") then - set_bone_position_conditional(player,"Wield_Item", vector.new(.5,4.5,-1.6), vector.new(90,0,20)) + set_bone_position_conditional(player,"Wield_Item", vector.new(1,4,0), vector.new(90,130,115)) elseif string.find(wielded:get_name(), "mcl_bows:crossbow_loaded") then - set_bone_position_conditional(player,"Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(64,90,0)) + set_bone_position_conditional(player,"Wield_Item", vector.new(0,5.2,1.2), vector.new(0,180,73)) elseif string.find(wielded:get_name(), "mcl_bows:crossbow") then - set_bone_position_conditional(player,"Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(90,90,0)) + set_bone_position_conditional(player,"Wield_Item", vector.new(0,5.2,1.2), vector.new(0,180,45)) + elseif wielded_def.inventory_image == "" then + set_bone_position_conditional(player,"Wield_Item", vector.new(0,6,2), vector.new(180,-45,0)) else - set_bone_position_conditional(player,"Wield_Item", vector.new(-1.5,4.9,1.8), vector.new(135,0,90)) + set_bone_position_conditional(player,"Wield_Item", vector.new(0,5.3,2), vector.new(90,0,0)) end -- controls right and left arms pitch when shooting a bow or blocking diff --git a/mods/PLAYER/mcl_wieldview/README.txt b/mods/PLAYER/mcl_wieldview/README.txt index 183e8c6d5..b118d9ba6 100644 --- a/mods/PLAYER/mcl_wieldview/README.txt +++ b/mods/PLAYER/mcl_wieldview/README.txt @@ -3,19 +3,8 @@ Makes hand wielded items visible to other players. -default settings: [minetest.conf] - -# Set number of seconds between visible wielded item updates. -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. +Add items to the "no_wieldview" group with a raiting of 1 and it will not be shown by the wieldview. diff --git a/mods/PLAYER/mcl_wieldview/init.lua b/mods/PLAYER/mcl_wieldview/init.lua index 92175a17e..660f5edb3 100644 --- a/mods/PLAYER/mcl_wieldview/init.lua +++ b/mods/PLAYER/mcl_wieldview/init.lua @@ -1,131 +1,47 @@ -local get_connected_players = minetest.get_connected_players local get_item_group = minetest.get_item_group -mcl_wieldview = { - players = {} -} - -function mcl_wieldview.get_item_texture(itemname) - if itemname == "" or minetest.get_item_group(itemname, "no_wieldview") ~= 0 then - return - end - - local def = minetest.registered_items[itemname] - if not def then - return - end - - local inv_image = def.inventory_image - if inv_image == "" then - return - end - - local texture = inv_image - - local transform = get_item_group(itemname, "wieldview_transform") - 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" .. transform - end - - return texture -end - -function mcl_wieldview.update_wielded_item(player) - if not player then - return - end - local itemstack = player:get_wielded_item() - local itemname = itemstack:get_name() - - local def = mcl_wieldview.players[player] - - if def and (def.item == itemname) then - return - end - - local texture = mcl_wieldview.get_item_texture(itemname) or "blank.png" - - local new_def = { - item = itemname, - texture = texture, - } - mcl_wieldview.players[player] = new_def - - mcl_player.player_set_wielditem(player, texture) -end - minetest.register_on_joinplayer(function(player) - mcl_wieldview.players[player] = {item = "", texture = "blank.png"} - - minetest.after(0, function() - if not player:is_player() then - return - end - - mcl_wieldview.update_wielded_item(player) - - local itementity = minetest.add_entity(player:get_pos(), "mcl_wieldview:wieldnode") - itementity:set_attach(player, "Hand_Right", vector.new(0, 1, 0), vector.new(90, 0, 45)) - itementity:get_luaentity().wielder = player - end) -end) - -minetest.register_on_leaveplayer(function(player) - mcl_wieldview.players[player] = nil -end) - -minetest.register_globalstep(function() - local players = get_connected_players() - for i = 1, #players do - mcl_wieldview.update_wielded_item(players[i]) + if not player or not player:is_player() then + return end + local itementity = minetest.add_entity(player:get_pos(), "mcl_wieldview:wieldnode") + if not itementity then return end + itementity:set_attach(player, "Wield_Item", vector.new(0, 0, 0), vector.new(0, 0, 0)) + --itementity:set_attach(player, "Hand_Right", vector.new(0, 1, 0), vector.new(90, 45, 90)) + itementity:get_luaentity()._wielder = player end) minetest.register_entity("mcl_wieldview:wieldnode", { - initial_properties = { - hp_max = 1, - visual = "wielditem", - physical = false, - textures = {""}, - automatic_rotate = 1.5, - is_visible = true, - pointable = false, - collide_with_objects = false, - static_save = false, - collisionbox = {-0.21, -0.21, -0.21, 0.21, 0.21, 0.21}, - selectionbox = {-0.21, -0.21, -0.21, 0.21, 0.21, 0.21}, - visual_size = {x = 0.21, y = 0.21}, - }, + visual = "wielditem", + physical = false, + pointable = false, + collide_with_objects = false, + static_save = false, + visual_size = {x = 0.21, y = 0.21}, - itemstring = "", + _item = "", on_step = function(self) - if self.wielder:is_player() then - local def = mcl_wieldview.players[self.wielder] - local itemstring = def.item - - if self.itemstring ~= itemstring then - local itemdef = minetest.registered_items[itemstring] - self.object:set_properties({glow = itemdef and itemdef.light_source or 0}) - - -- wield item as cubic - if def.texture == "blank.png" then - self.object:set_properties({textures = {itemstring}}) - -- wield item as flat - else - self.object:set_properties({textures = {""}}) - end - - if minetest.get_item_group(itemstring, "no_wieldview") ~= 0 then - self.object:set_properties({textures = {""}}) - end - - self.itemstring = itemstring - end - else + if not self._wielder or not self._wielder:is_player() then self.object:remove() end + local player = self._wielder + + local item = player:get_wielded_item():get_name() + + if item == self._item then return end + + self._item = item + + if get_item_group(item, "no_wieldview") ~= 0 then + item = "" + end + + local item_def = minetest.registered_items[item] + self.object:set_properties({ + glow = item_def and item_def.light_source or 0, + wield_item = item, + is_visible = item ~= "" + }) end, }) diff --git a/mods/PLAYER/mcl_wieldview/mod.conf b/mods/PLAYER/mcl_wieldview/mod.conf index 4b3097876..62dda432f 100644 --- a/mods/PLAYER/mcl_wieldview/mod.conf +++ b/mods/PLAYER/mcl_wieldview/mod.conf @@ -1,4 +1,3 @@ name = mcl_wieldview author = stujones11 description = Makes hand wielded items visible to other players. -depends = mcl_player From fec258cb9959ea03af4101a7ede9108a79ae2c08 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 22:05:57 +0000 Subject: [PATCH 446/521] Wrong recipe --- mods/ITEMS/mcl_mushroom/init.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index 684582b80..b818efceb 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -246,7 +246,6 @@ minetest.register_craft({ } }) -mcl_stairs.register_stair_and_slab_simple("warped_hyphae_bark", "mcl_mushroom:warped_hyphae_bark", S("Warped Bark Stair"), S("Warped Bark Slab"), S("Double Warped Bark Slab"), "woodlike") minetest.register_node("mcl_mushroom:stripped_warped_hyphae", { description = S("Stripped Warped Hyphae"), @@ -473,7 +472,6 @@ minetest.register_craft({ } }) -mcl_stairs.register_stair_and_slab_simple("crimson_hyphae_bark", "mcl_mushroom:crimson_hyphae_bark", S("Crimson Bark Stair"), S("Crimson Bark Slab"), S("Double Crimson Bark Slab"), "woodlike") minetest.register_node("mcl_mushroom:stripped_crimson_hyphae", { description = S("Stripped Crimson Hyphae"), From 01737dd551bacc4d3583fbabd5a31d47a1fb40cc Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 22:15:01 +0000 Subject: [PATCH 447/521] Add Bark stairs and slab --- mods/ITEMS/mcl_mushroom/init.lua | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index b818efceb..bf909b9dc 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -904,3 +904,31 @@ minetest.register_decoration({ y_min = -29065, decoration = "mcl_mushroom:crimson_fungus", }) + +--Hyphae Stairs and slabs + +local barks = { + { "warped", S("Warped Bark Stairs"), S("Warped Bark Slab"), S("Double Warped Bark Slab") }, + { "crimson", S("Crimson Bark Stairs"), S("Crimson Oak Bark Slab"), S("Double Crimson Bark Slab") }, +} + +for b=1, #barks do + local bark = barks[b] + local sub = bark[1].."hyphae_bark" + local id = "mcl_mushroom:hyphae" + if bark[1] ~= "" then + id = "mcl_mushroom:"..bark[1].."hyphae" + end + mcl_stairs.register_stair(sub, id, + {handy=1,axey=1, bark_stairs=1, material_wood=1}, + {minetest.registered_nodes[id].tiles[3]}, + bark[2], + mcl_sounds.node_sound_wood_defaults(), 3, 2, + "woodlike") + mcl_stairs.register_slab(sub, id, + {handy=1,axey=1, bark_slab=1, material_wood=1}, + {minetest.registered_nodes[id].tiles[3]}, + bark[3], + mcl_sounds.node_sound_wood_defaults(), 3, 2, + bark[4]) +end \ No newline at end of file From 85a6f216f09c2fb3288ecfd69e326b2a1f450709 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 22:32:07 +0000 Subject: [PATCH 448/521] fix --- mods/ITEMS/mcl_mushroom/init.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index bf909b9dc..cbf84dd50 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -914,11 +914,9 @@ local barks = { for b=1, #barks do local bark = barks[b] - local sub = bark[1].."hyphae_bark" - local id = "mcl_mushroom:hyphae" - if bark[1] ~= "" then - id = "mcl_mushroom:"..bark[1].."hyphae" - end + local sub = bark[1].."_hyphae_bark" + local id = "mcl_mushroom:"..bark[1].."_hyphae" + mcl_stairs.register_stair(sub, id, {handy=1,axey=1, bark_stairs=1, material_wood=1}, {minetest.registered_nodes[id].tiles[3]}, From 84320db3b7bf20ff96e3f440531fe5bd2ffa6882 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 22:50:40 +0000 Subject: [PATCH 449/521] Rangement --- mods/ITEMS/mcl_mushroom/init.lua | 336 ++++++++++++++++--------------- 1 file changed, 170 insertions(+), 166 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index cbf84dd50..acfbae62d 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -19,6 +19,7 @@ end -- Warped fungus -- Crimson fungus +-- Nether woods -- Functions and Biomes -- WARNING: The most comments are in german. Please Translate with an translater if you don't speak good german @@ -158,29 +159,6 @@ minetest.register_node("mcl_mushroom:shroomlight", { light_source = 14, }) -minetest.register_node("mcl_mushroom:warped_hyphae", { - description = S("Warped Hyphae"), - _doc_items_longdesc = S("The stem of a warped hyphae"), - _doc_items_hidden = false, - tiles = { - "warped_hyphae.png", - "warped_hyphae.png", - "warped_hyphae_side.png", - "warped_hyphae_side.png", - "warped_hyphae_side.png", - "warped_hyphae_side.png", - }, - paramtype2 = "facedir", - on_place = mcl_util.rotate_axis, - groups = {handy=1,axey=1, tree=1, building_block=1, material_wood=1}, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_rotate = on_rotate, - _mcl_blast_resistance = 2, - stack_max = 64, - _mcl_hardness = 2, - _mcl_stripped_variant = "mcl_mushroom:stripped_warped_hyphae", -}) - minetest.register_node("mcl_mushroom:warped_nylium", { description = S("Warped Nylium"), tiles = { @@ -220,6 +198,149 @@ minetest.register_node("mcl_mushroom:warped_checknode", { drop = "mcl_nether:netherrack" }) + + +minetest.register_craft({ + output = "mcl_mushroom:warped_nylium 2", + recipe = { + {"mcl_mushroom:warped_wart_block"}, + {"mcl_nether:netherrack"}, + } +}) + +minetest.register_abm({ + label = "mcl_mushroom:warped_fungus", + nodenames = {"mcl_mushroom:warped_fungus"}, + interval = 11, + chance = 128, + action = function(pos) + local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) + if nodepos.name == "mcl_mushroom:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then + if pos.y < -28400 then + generate_warped_tree(pos) + end + end + end +}) + +minetest.register_abm({ + label = "mcl_mushroom:warped_checknode", + nodenames = {"mcl_mushroom:warped_checknode"}, + interval = 0.1, + chance = 1, + action = function(pos) + local nodepos = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}) + if nodepos.name == "air" then + minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_mushroom:warped_nylium" }) + local randomg = math.random(1, 400) + if randomg <= 5 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_fungus" }) + elseif randomg > 5 and randomg <= 15 then + local pos1 = { x = pos.x, y = pos.y + 1, z = pos.z } + generate_warped_tree(pos1) + elseif randomg > 15 and randomg <= 45 then + grow_twisting_vines({ x = pos.x, y = pos.y, z = pos.z } ,math.random(1, 4)) + elseif randomg > 45 and randomg <= 50 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_fungus" }) + elseif randomg > 50 and randomg <= 150 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:nether_sprouts" }) + elseif randomg > 150 and randomg <= 250 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_roots" }) + end + else + minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_nether:netherrack" }) + end + end +}) + + +--[[ FIXME mobs:spawn({ + name = "mobs_mc:enderman", + nodes = {"mcl_mushroom:warped_nylium"}, + --min_light = 14, + interval = 5, + chance = 10, + --min_height = 3, + --max_height = 200, +})]] + + +minetest.register_node("mcl_mushroom:crimson_fungus", { + description = S("Crimson Fungus Mushroom"), + drawtype = "plantlike", + tiles = { "farming_crimson_fungus.png" }, + inventory_image = "farming_crimson_fungus.png", + wield_image = "farming_crimson_fungus.png", + sunlight_propagates = true, + paramtype = "light", + walkable = false, + groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1, compostability=65}, + light_source = 1, + selection_box = { + type = "fixed", + fixed = { -3/16, -0.5, -3/16, 3/16, -2/16, 3/16 }, + }, + node_placement_prediction = "", + on_rightclick = function(pos, node, pointed_thing, itemstack) + if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then + itemstack:take_item() + local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) + if nodepos.name == "mcl_mushroom:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then + local random = math.random(1, 5) + if random == 1 then + generate_crimson_tree(pos) + end + end + end + end, + _mcl_blast_resistance = 0, + stack_max = 64, +}) + +minetest.register_node("mcl_mushroom:crimson_roots", { + description = S("Crimson Roots"), + drawtype = "plantlike", + tiles = { "crimson_roots.png" }, + inventory_image = "crimson_roots.png", + sunlight_propagates = true, + paramtype = "light", + walkable = false, + buildable_to = true, + groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1, compostability=65}, + selection_box = { + type = "fixed", + fixed = { -6/16, -0.5, -6/16, 6/16, -4/16, 6/16 }, + }, + node_placement_prediction = "", + _mcl_silk_touch_drop = false, + _mcl_blast_resistance = 0, + stack_max = 64, +}) + +---Nether Woods + +minetest.register_node("mcl_mushroom:warped_hyphae", { + description = S("Warped Hyphae"), + _doc_items_longdesc = S("The stem of a warped hyphae"), + _doc_items_hidden = false, + tiles = { + "warped_hyphae.png", + "warped_hyphae.png", + "warped_hyphae_side.png", + "warped_hyphae_side.png", + "warped_hyphae_side.png", + "warped_hyphae_side.png", + }, + paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + groups = {handy=1,axey=1, tree=1, building_block=1, material_wood=1}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + stack_max = 64, + _mcl_hardness = 2, + _mcl_stripped_variant = "mcl_mushroom:stripped_warped_hyphae", +}) --Stem bark, stripped stem and bark minetest.register_node("mcl_mushroom:warped_hyphae_bark", { @@ -305,124 +426,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "mcl_mushroom:warped_nylium 2", - recipe = { - {"mcl_mushroom:warped_wart_block"}, - {"mcl_nether:netherrack"}, - } -}) - -minetest.register_abm({ - label = "mcl_mushroom:warped_fungus", - nodenames = {"mcl_mushroom:warped_fungus"}, - interval = 11, - chance = 128, - action = function(pos) - local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) - if nodepos.name == "mcl_mushroom:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then - if pos.y < -28400 then - generate_warped_tree(pos) - end - end - end -}) - -minetest.register_abm({ - label = "mcl_mushroom:warped_checknode", - nodenames = {"mcl_mushroom:warped_checknode"}, - interval = 0.1, - chance = 1, - action = function(pos) - local nodepos = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}) - if nodepos.name == "air" then - minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_mushroom:warped_nylium" }) - local randomg = math.random(1, 400) - if randomg <= 5 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_fungus" }) - elseif randomg > 5 and randomg <= 15 then - local pos1 = { x = pos.x, y = pos.y + 1, z = pos.z } - generate_warped_tree(pos1) - elseif randomg > 15 and randomg <= 45 then - grow_twisting_vines({ x = pos.x, y = pos.y, z = pos.z } ,math.random(1, 4)) - elseif randomg > 45 and randomg <= 50 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_fungus" }) - elseif randomg > 50 and randomg <= 150 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:nether_sprouts" }) - elseif randomg > 150 and randomg <= 250 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_roots" }) - end - else - minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_nether:netherrack" }) - end - end -}) - - ---[[ FIXME mobs:spawn({ - name = "mobs_mc:enderman", - nodes = {"mcl_mushroom:warped_nylium"}, - --min_light = 14, - interval = 5, - chance = 10, - --min_height = 3, - --max_height = 200, -})]] - - - -minetest.register_node("mcl_mushroom:crimson_fungus", { - description = S("Crimson Fungus Mushroom"), - drawtype = "plantlike", - tiles = { "farming_crimson_fungus.png" }, - inventory_image = "farming_crimson_fungus.png", - wield_image = "farming_crimson_fungus.png", - sunlight_propagates = true, - paramtype = "light", - walkable = false, - groups = {dig_immediate=3,mushroom=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,enderman_takable=1,deco_block=1, compostability=65}, - light_source = 1, - selection_box = { - type = "fixed", - fixed = { -3/16, -0.5, -3/16, 3/16, -2/16, 3/16 }, - }, - node_placement_prediction = "", - on_rightclick = function(pos, node, pointed_thing, itemstack) - if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then - itemstack:take_item() - local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) - if nodepos.name == "mcl_mushroom:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then - local random = math.random(1, 5) - if random == 1 then - generate_crimson_tree(pos) - end - end - end - end, - _mcl_blast_resistance = 0, - stack_max = 64, -}) - -minetest.register_node("mcl_mushroom:crimson_roots", { - description = S("Crimson Roots"), - drawtype = "plantlike", - tiles = { "crimson_roots.png" }, - inventory_image = "crimson_roots.png", - sunlight_propagates = true, - paramtype = "light", - walkable = false, - buildable_to = true, - groups = {dig_immediate=3,vines=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1,deco_block=1, shearsy = 1, compostability=65}, - selection_box = { - type = "fixed", - fixed = { -6/16, -0.5, -6/16, 6/16, -4/16, 6/16 }, - }, - node_placement_prediction = "", - _mcl_silk_touch_drop = false, - _mcl_blast_resistance = 0, - stack_max = 64, -}) - minetest.register_node("mcl_mushroom:crimson_hyphae", { description = S("Crimson Hyphae"), _doc_items_longdesc = S("The stem of a crimson hyphae"), @@ -522,6 +525,32 @@ minetest.register_node("mcl_mushroom:crimson_hyphae_wood", { _mcl_hardness = 2, }) +--Hyphae Stairs and slabs + +local barks = { + { "warped", S("Warped Bark Stairs"), S("Warped Bark Slab"), S("Double Warped Bark Slab") }, + { "crimson", S("Crimson Bark Stairs"), S("Crimson Oak Bark Slab"), S("Double Crimson Bark Slab") }, +} + +for b=1, #barks do + local bark = barks[b] + local sub = bark[1].."_hyphae_bark" + local id = "mcl_mushroom:"..bark[1].."_hyphae" + + mcl_stairs.register_stair(sub, id, + {handy=1,axey=1, bark_stairs=1, material_wood=1}, + {minetest.registered_nodes[id].tiles[3]}, + bark[2], + mcl_sounds.node_sound_wood_defaults(), 3, 2, + "woodlike") + mcl_stairs.register_slab(sub, id, + {handy=1,axey=1, bark_slab=1, material_wood=1}, + {minetest.registered_nodes[id].tiles[3]}, + bark[3], + mcl_sounds.node_sound_wood_defaults(), 3, 2, + bark[4]) +end + minetest.register_node("mcl_mushroom:crimson_nylium", { description = S("Crimson Nylium"), tiles = { @@ -905,28 +934,3 @@ minetest.register_decoration({ decoration = "mcl_mushroom:crimson_fungus", }) ---Hyphae Stairs and slabs - -local barks = { - { "warped", S("Warped Bark Stairs"), S("Warped Bark Slab"), S("Double Warped Bark Slab") }, - { "crimson", S("Crimson Bark Stairs"), S("Crimson Oak Bark Slab"), S("Double Crimson Bark Slab") }, -} - -for b=1, #barks do - local bark = barks[b] - local sub = bark[1].."_hyphae_bark" - local id = "mcl_mushroom:"..bark[1].."_hyphae" - - mcl_stairs.register_stair(sub, id, - {handy=1,axey=1, bark_stairs=1, material_wood=1}, - {minetest.registered_nodes[id].tiles[3]}, - bark[2], - mcl_sounds.node_sound_wood_defaults(), 3, 2, - "woodlike") - mcl_stairs.register_slab(sub, id, - {handy=1,axey=1, bark_slab=1, material_wood=1}, - {minetest.registered_nodes[id].tiles[3]}, - bark[3], - mcl_sounds.node_sound_wood_defaults(), 3, 2, - bark[4]) -end \ No newline at end of file From a8be87f88d7c7f6f3c6f70c18c3300b87a94a939 Mon Sep 17 00:00:00 2001 From: 3raven Date: Wed, 20 Apr 2022 22:57:27 +0000 Subject: [PATCH 450/521] Rangement --- mods/ITEMS/mcl_mushroom/init.lua | 199 ++++++++++++++++--------------- 1 file changed, 102 insertions(+), 97 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index acfbae62d..db74e1027 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -24,6 +24,7 @@ end -- WARNING: The most comments are in german. Please Translate with an translater if you don't speak good german +---Warped fungus minetest.register_node("mcl_mushroom:warped_fungus", { description = S("Warped Fungus Mushroom"), drawtype = "plantlike", @@ -264,7 +265,7 @@ minetest.register_abm({ --max_height = 200, })]] - +--- Crimson Fungus minetest.register_node("mcl_mushroom:crimson_fungus", { description = S("Crimson Fungus Mushroom"), drawtype = "plantlike", @@ -317,6 +318,96 @@ minetest.register_node("mcl_mushroom:crimson_roots", { stack_max = 64, }) +minetest.register_node("mcl_mushroom:crimson_nylium", { + description = S("Crimson Nylium"), + tiles = { + "crimson_nylium.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png^crimson_nylium_side.png", + "mcl_nether_netherrack.png^crimson_nylium_side.png", + "mcl_nether_netherrack.png^crimson_nylium_side.png", + "mcl_nether_netherrack.png^crimson_nylium_side.png", + }, + groups = {pickaxey=1, building_block=1, material_stone=1}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 0.4, + _mcl_blast_resistance = 0.4, + is_ground_content = true, + drop = "mcl_nether:netherrack", + _mcl_silk_touch_drop = true, +}) + +minetest.register_node("mcl_mushroom:crimson_checknode", { + description = S("Crimson Checknode - only to check!"), + tiles = { + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + "mcl_nether_netherrack.png", + }, + groups = {pickaxey=1, building_block=1, material_stone=1, not_in_creative_inventory=1}, + paramtype2 = "facedir", + stack_max = 64, + _mcl_hardness = 0.4, + _mcl_blast_resistance = 0.4, + is_ground_content = true, + drop = "mcl_nether:netherrack" +}) + + +minetest.register_craft({ + output = "mcl_mushroom:crimson_nylium 2", + recipe = { + {"mcl_nether:nether_wart"}, + {"mcl_nether:netherrack"}, + } +}) + +minetest.register_abm({ + label = "mcl_mushroom:crimson_fungus", + nodenames = {"mcl_mushroom:crimson_fungus"}, + interval = 11, + chance = 128, + action = function(pos) + local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) + if nodepos.name == "mcl_mushroom:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then + if pos.y < -28400 then + generate_crimson_tree(pos) + end + end + end +}) + +minetest.register_abm({ + label = "mcl_mushroom:crimson_checknode", + nodenames = {"mcl_mushroom:crimson_checknode"}, + interval = 0.1, + chance = 1, + action = function(pos) + local nodepos = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}) + if nodepos.name == "air" then + minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_mushroom:crimson_nylium" }) + local randomg = math.random(1, 400) + if randomg <= 10 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_fungus" }) + elseif randomg > 10 and randomg <= 25 then + local pos1 = { x = pos.x, y = pos.y + 1, z = pos.z } + generate_crimson_tree(pos1) + elseif randomg > 25 and randomg <= 30 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_fungus" }) + elseif randomg > 30 and randomg <= 130 then + minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_roots" }) + end + else + minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_nether:netherrack" }) + end + end +}) + + ---Nether Woods minetest.register_node("mcl_mushroom:warped_hyphae", { @@ -525,6 +616,15 @@ minetest.register_node("mcl_mushroom:crimson_hyphae_wood", { _mcl_hardness = 2, }) +minetest.register_craft({ + output = "mcl_mushroom:crimson_hyphae_wood 4", + recipe = { + {"mcl_mushroom:crimson_hyphae"}, + } +}) + +mcl_stairs.register_stair_and_slab_simple("crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood", "Crimson Stair", "Crimson Slab", "Double Crimson Slab", "woodlike") + --Hyphae Stairs and slabs local barks = { @@ -551,102 +651,7 @@ for b=1, #barks do bark[4]) end -minetest.register_node("mcl_mushroom:crimson_nylium", { - description = S("Crimson Nylium"), - tiles = { - "crimson_nylium.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png^crimson_nylium_side.png", - "mcl_nether_netherrack.png^crimson_nylium_side.png", - "mcl_nether_netherrack.png^crimson_nylium_side.png", - "mcl_nether_netherrack.png^crimson_nylium_side.png", - }, - groups = {pickaxey=1, building_block=1, material_stone=1}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 0.4, - _mcl_blast_resistance = 0.4, - is_ground_content = true, - drop = "mcl_nether:netherrack", - _mcl_silk_touch_drop = true, -}) - -minetest.register_node("mcl_mushroom:crimson_checknode", { - description = S("Crimson Checknode - only to check!"), - tiles = { - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - "mcl_nether_netherrack.png", - }, - groups = {pickaxey=1, building_block=1, material_stone=1, not_in_creative_inventory=1}, - paramtype2 = "facedir", - stack_max = 64, - _mcl_hardness = 0.4, - _mcl_blast_resistance = 0.4, - is_ground_content = true, - drop = "mcl_nether:netherrack" -}) - -minetest.register_craft({ - output = "mcl_mushroom:crimson_hyphae_wood 4", - recipe = { - {"mcl_mushroom:crimson_hyphae"}, - } -}) - -minetest.register_craft({ - output = "mcl_mushroom:crimson_nylium 2", - recipe = { - {"mcl_nether:nether_wart"}, - {"mcl_nether:netherrack"}, - } -}) - -mcl_stairs.register_stair_and_slab_simple("crimson_hyphae_wood", "mcl_mushroom:crimson_hyphae_wood", "Crimson Stair", "Crimson Slab", "Double Crimson Slab", "woodlike") - -minetest.register_abm({ - label = "mcl_mushroom:crimson_fungus", - nodenames = {"mcl_mushroom:crimson_fungus"}, - interval = 11, - chance = 128, - action = function(pos) - local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) - if nodepos.name == "mcl_mushroom:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then - if pos.y < -28400 then - generate_crimson_tree(pos) - end - end - end -}) - -minetest.register_abm({ - label = "mcl_mushroom:crimson_checknode", - nodenames = {"mcl_mushroom:crimson_checknode"}, - interval = 0.1, - chance = 1, - action = function(pos) - local nodepos = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}) - if nodepos.name == "air" then - minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_mushroom:crimson_nylium" }) - local randomg = math.random(1, 400) - if randomg <= 10 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_fungus" }) - elseif randomg > 10 and randomg <= 25 then - local pos1 = { x = pos.x, y = pos.y + 1, z = pos.z } - generate_crimson_tree(pos1) - elseif randomg > 25 and randomg <= 30 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:warped_fungus" }) - elseif randomg > 30 and randomg <= 130 then - minetest.set_node({ x = pos.x, y = pos.y + 1, z = pos.z }, { name = "mcl_mushroom:crimson_roots" }) - end - else - minetest.swap_node({ x = pos.x, y = pos.y, z = pos.z }, { name = "mcl_nether:netherrack" }) - end - end -}) +---Mapgen and fungus tree function generate_warped_tree(pos) local breakgrow = false From 5432c6bd9247bb0cce94be1a8c494f43780b68fb Mon Sep 17 00:00:00 2001 From: CableGuy67 Date: Fri, 22 Apr 2022 13:51:17 +0000 Subject: [PATCH 451/521] /spawnstruct placed schematics one block lower than player is standing Because the position of the player is -0.5 from the block (when not flying) /spawnstruct would place the schematic a block lower than the player's feet. --- mods/MAPGEN/mcl_structures/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index c99970813..13609be59 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -75,6 +75,7 @@ local function spawnstruct_function(name, param) local pos = player:get_pos() if not pos then return end + pos.y = math.floor(pos.y) + 1 local pr = PseudoRandom(math.floor(pos.x * 333 + pos.y * 19 - pos.z + 4)) pos = vector.round(pos) local dir = minetest.yaw_to_dir(player:get_look_horizontal()) From 033573ad631186e6f6f3f2e67bdf114cbcb1b860 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sat, 16 Apr 2022 00:35:46 +0200 Subject: [PATCH 452/521] Shuffle pixels in mcl_end_crystal_beam.png MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A user claimed that this texture was a texture from Minecraft 1.8.9 – see for further details. I have not verified that but I noticed that in commit 152e55245804bd2b4790ee31454986948237d2a8 the file was replaced with a file containing the exact same pixels. A visual inspection confirms that the file contains noise, so it is not clear if it is even copyrightable. However, to ensure that it could not be identical to a file from Minecraft, To get noise of the same quality, I have shuffled all its pixels with the following POSIX sh shell script: LANG=C PREFIX=mcl_end_crystal_beam convert $PREFIX.png $PREFIX.pnm <$PREFIX.pnm >$PREFIX.plainpnm pnmtoplainpnm <$PREFIX.plainpnm >$PREFIX.seed tr '1234567890 ' ' 1356902468' ( <$PREFIX.plainpnm head -n+3 <$PREFIX.plainpnm tail -n+4 \ |tr ' ' '\n' \ |shuf --random-source $PREFIX.seed ) >$PREFIX.shuffled.plainpnm I then opened mcl_end_crystal_beam.shuffled.plainpnm using GIMP, converted the color black to tranparency and saved the image as a paletted PNG (which yields a smaller filesize than a grayscale PNG). --- .../mcl_end/textures/mcl_end_crystal_beam.png | Bin 2794 -> 635 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_end/textures/mcl_end_crystal_beam.png b/mods/ITEMS/mcl_end/textures/mcl_end_crystal_beam.png index 94eac193a9b4d7b454ef7826e7cfe1f0540ee348..a671de7ac406fed4f9df08e76219704ead7ed3dc 100644 GIT binary patch delta 622 zcmV-!0+Idd75fB`7=Hl+0001hoMa6E000J1OjJbx00960|E1ZV-2eap0d!JMQvg8b z*k%9#0wYO8K~yNu9g;n36hRorf3r7tOx7gK#WQSBWHu&n5tPeek-}mV&yaMhCq z`kqmT1l$1Q$tv7)tjwdv0cca6LGuQee+7(*slVr+Cv|*{(VA7m_&Y};8RMa1=vd?{ z%7csP(qE)p3BS}svW!SHWB41~Q%#!y){3q{7ibsm?J4dZJ43u2T+p$WA5}`v)D?;c zXhS>VvxHniS$`5wX+XmZbVN_$MdSn2HS*n{U={9+L^G#?S6wVTw_sXWji45vVApBR zN*Ye&9g^?BT`EvhB!+0fsiE8@6|z|D@jBzMVB;-wfy9R8aG!FMOJ8sX?~yk2p_(xh zQHyA0JccuPrP&<72i79Y21SGC7cP>&Tg7?0DsW{MO@GlfC=)KlG&|>9U@NSzF|&tB z(APQ2m}p@aC ztRpU{Z_$;3W^hc_2~qPS%wiabtI#{6n}%k(9?Q_tp$VzyO~OaWn@m0loAAkpLXJ-` zIpa3@JZEi7S>wJ&HBbfpK7S0RM)MAOg3>b7^$TZHo0;ezfCpz54i7ax1TWKmjD0&07*qo IM6N<$f*VX3?*IS* literal 2794 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 From 3a7363f11d76d83f71e2f2648c47d3dbcf319966 Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 22 Apr 2022 23:14:39 +0300 Subject: [PATCH 453/521] Decrease spam activity reset interval from 300 to 30 s --- mods/PLAYER/mcl_antispam/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_antispam/init.lua b/mods/PLAYER/mcl_antispam/init.lua index ef568b94d..11431d5ba 100644 --- a/mods/PLAYER/mcl_antispam/init.lua +++ b/mods/PLAYER/mcl_antispam/init.lua @@ -57,7 +57,7 @@ local function on_chat_message(name, message) last_messages.count = 1 last_messages.summary_length = length end - last_messages.job = minetest.after(300, function() + last_messages.job = minetest.after(30, function() last_messages.name = nil last_messages.job = nil end) From 663c2bedbb477432310da327c341cb733e893713 Mon Sep 17 00:00:00 2001 From: River River Date: Sat, 23 Apr 2022 23:17:14 +0900 Subject: [PATCH 454/521] Fix boat initialization failure --- mods/ENTITIES/mcl_boats/init.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 3a26c1b36..c848a858e 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -166,11 +166,13 @@ function boat.on_activate(self, staticdata, dtime_s) self._last_v = self._v self._itemstring = data.itemstring - while #data.textures < 5 do - table.insert(data.textures, data.textures[1]) - end + if data.textures then + while #data.textures < 5 do + table.insert(data.textures, data.textures[1]) + end - self.object:set_properties({textures = data.textures}) + self.object:set_properties({textures = data.textures}) + end end end From b80e511caeec19ab656f08dd053045fe28adbfbf Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Sat, 23 Apr 2022 11:52:32 -0500 Subject: [PATCH 455/521] Fix tools backwards in wieldview --- mods/ITEMS/mcl_fishing/init.lua | 2 +- .../textures/mcl_fishing_fishing_rod.png | Bin 2397 -> 6308 bytes mods/ITEMS/mcl_mobitems/init.lua | 2 +- .../mcl_mobitems_carrot_on_a_stick.png | Bin 536 -> 6393 bytes mods/PLAYER/mcl_playerplus/init.lua | 2 +- mods/PLAYER/mcl_wieldview/mod.conf | 1 + 6 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 788e591dc..d779a2a98 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -385,7 +385,7 @@ 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, fishing_rod=1, enchantability=1 }, inventory_image = "mcl_fishing_fishing_rod.png", - wield_image = "mcl_fishing_fishing_rod.png^[transformR270", + wield_image = "mcl_fishing_fishing_rod.png^[transformFY^[transformR90", wield_scale = { x = 1.5, y = 1.5, z = 1 }, stack_max = 1, on_place = fish, diff --git a/mods/ITEMS/mcl_fishing/textures/mcl_fishing_fishing_rod.png b/mods/ITEMS/mcl_fishing/textures/mcl_fishing_fishing_rod.png index 2fbcc73445a20508c2283c2365f16e23f681663f..d1cd9dd0308ea121b4aa177e45e9ca003f54e87e 100644 GIT binary patch literal 6308 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 delta 511 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0j)_yK~y+TWBmXBKLfd7SB@P66O_#m=Vkjp$kFUSBO@aNu^0rv z2An*w`oFrVHG`NCKSQ8{DM?OZN-DEp;N$0KFxHZ0xb^rs$$y4`UGVASM+VP`JjV8} zdInh?V+I8&A%<8_8=?#W8vt?v2v|6VF$M)VF+6zojzL6_n;|{Og`go|10LSG$pDHC z5Y{qsXH3h8We`>|VBq3lCTIxLysi@rg5nZTE(CzQfJ|%3~dfZunRzjWFEcD z_~qeGhA*!_f)(Nd`%hnG1f^IWPIfRKYyb#=3<=+SobmqY2T&1+7&g4`)D^}>+YW Date: Sat, 23 Apr 2022 22:01:51 +0300 Subject: [PATCH 456/521] Create MCL5 own mcl_end_crystal_beam texture --- .../mcl_end/textures/mcl_end_crystal_beam.png | Bin 635 -> 939 bytes tools/create_texture__mcl_end_crystal_beam.py | 28 ++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 tools/create_texture__mcl_end_crystal_beam.py diff --git a/mods/ITEMS/mcl_end/textures/mcl_end_crystal_beam.png b/mods/ITEMS/mcl_end/textures/mcl_end_crystal_beam.png index a671de7ac406fed4f9df08e76219704ead7ed3dc..42b05a17f02a11d03d4adca72b689bbbe590c2b1 100644 GIT binary patch delta 929 zcmV;S177_51gi&-7=Ho-0002TJRaQu000b7OjJbx00960aQ}ecfdAk5?RGW*000DZ zQchC<%*@Q*yB}u&00T-%L_t(|oF!B}Z&XJVJ@bJX$Kz%2Zn1??2CpMoBE^_ZL1BsU zItnOSq%9~wX|)s*zi;UIhe`(9<0@yE5;a#zgqj(+ui6if@CaPB8rqr~O2>mlgh)~d#qy#rBcC9A zS7q z`kqmT1l$1Q$tv7)tjwdv0cca6LGuQee+7(*slVr+Cv|*{(VA7m_&Y};8RMa1=vd?{ z%7csP(qE)p3BS}svW!SHWB41~Q%#!y){3q{7ibsm?J4dZJ43u2T+p$WA5}`v)D?;c zXhS>VvxHniS$`5wX+XmZbVN_$MdSn2HS*n{U={9+L^G#?S6wVTw_sXWji45vVApBR zN*Ye&9g^?BT`EvhB!+0fsiE8@6|z|D@jBzMVB;-wfy9R8aG!FMOJ8sX?~yk2p_(xh zQHyA0JccuPrP&<72i79Y21SGC7cP>&Tg7?0DsW{MO@GlfC=)KlG&|>9U@NSzF|&tB z(APQ2m}p@aC ztRpU{Z_$;3W^hc_2~qPS%wiabtI#{6n}%k(9?Q_tp$VzyO~OaWn@m0loAAkpLXJ-` zIpa3@JZEi7S>wJ&HBbfpK7S0RM)MAOg3>b7^$TZHo0;ezfCpz54i7ax1TWKmjD0&07*qo IM6N<$f?zcnq5uE@ diff --git a/tools/create_texture__mcl_end_crystal_beam.py b/tools/create_texture__mcl_end_crystal_beam.py new file mode 100644 index 000000000..ab2166714 --- /dev/null +++ b/tools/create_texture__mcl_end_crystal_beam.py @@ -0,0 +1,28 @@ +import png +from random import randrange + +w, h = 16, 256; + +s = [[int(0) for c in range(w)] for c in range(h)] + +def drawpixel(x, y, t): + if (x >= 0) and (x < w) and (y >= 0) and (y < h): + s[y][x] = t + +# R, G, B, Alpha (0xFF = opaque): +palette=[ + (0x00,0x00,0x00,0x00), + (0xFF,0xFF,0x70,0xCC), + (0xFF,0x80,0xDF,0xCC), + (0x80,0xFF,0xDF,0xCC) +] + +for x in range(w): + for y in range(h): + n = randrange(4) + if n == 1: + drawpixel(x, y, randrange(3) + 1) + +w = png.Writer(len(s[0]), len(s), palette=palette, bitdepth=2) +f = open('mcl_end_crystal_beam.png', 'wb') +w.write(f, s) From 2f0351fe6d64e4c8be962a5c5c275f604928caca Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 24 Apr 2022 16:16:33 +0000 Subject: [PATCH 457/521] Correct name --- mods/ITEMS/mcl_mushroom/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_mushroom/init.lua b/mods/ITEMS/mcl_mushroom/init.lua index db74e1027..d6b6b97ba 100644 --- a/mods/ITEMS/mcl_mushroom/init.lua +++ b/mods/ITEMS/mcl_mushroom/init.lua @@ -435,7 +435,7 @@ minetest.register_node("mcl_mushroom:warped_hyphae", { --Stem bark, stripped stem and bark minetest.register_node("mcl_mushroom:warped_hyphae_bark", { - description = S("Warped Hyphae"), + description = S("Warped Hyphae Bark"), _doc_items_longdesc = S("This is a decorative block surrounded by the bark of an hyphae."), tiles = {"warped_hyphae_side.png"}, paramtype2 = "facedir", @@ -543,7 +543,7 @@ minetest.register_node("mcl_mushroom:crimson_hyphae", { --Stem bark, stripped stem and bark minetest.register_node("mcl_mushroom:crimson_hyphae_bark", { - description = S("Crimson Hyphae"), + description = S("Crimson Hyphae Bark"), _doc_items_longdesc = S("This is a decorative block surrounded by the bark of an hyphae."), tiles = {"crimson_hyphae_side.png"}, paramtype2 = "facedir", From 6ffa01cac6a7900ee4642479af060b2907f081f4 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 24 Apr 2022 16:17:18 +0000 Subject: [PATCH 458/521] Update translation list - TO-DO: complete translations --- mods/ITEMS/mcl_mushroom/locale/template.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_mushroom/locale/template.txt b/mods/ITEMS/mcl_mushroom/locale/template.txt index 67d53d790..3df53c94c 100644 --- a/mods/ITEMS/mcl_mushroom/locale/template.txt +++ b/mods/ITEMS/mcl_mushroom/locale/template.txt @@ -7,6 +7,12 @@ Warped Roots= Warped Wart Block= Shroomlight= Warped Hyphae= +Warped Hyphae Bark= +Stripped Warped Hyphae= +Stripped Warped Hyphae Bark= +Warped Hyphae Wood= +Warped Bark Slab= +Double Warped Bark Slab= Warped Nylium= Warped Checknode - only to check!= Warped Hyphae Wood= @@ -15,9 +21,14 @@ Warped Slab= Crimson Fungus Mushroom= Crimson Roots= Crimson Hyphae= +Crimson Hyphae Bark= +Stripped Crimson Hyphae= +Stripped Crimson Hyphae Bark= +Crimson Oak Bark Slab= +Double Crimson Bark Slab= Crimson Hyphae Wood= Crimson Stair= Crimson Slab= Double Crimson Slab= Crimson Nylium= -Crimson Checknode - only to check!= +Crimson Checknode - only to check!= \ No newline at end of file From 010ffd695f09bb32bbbb21dd971d9e4143d571bd Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 24 Apr 2022 16:49:20 +0000 Subject: [PATCH 459/521] Update translation template - TODO complete translation --- mods/ITEMS/mcl_mushroom/locale/template.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/ITEMS/mcl_mushroom/locale/template.txt b/mods/ITEMS/mcl_mushroom/locale/template.txt index 3df53c94c..85613b033 100644 --- a/mods/ITEMS/mcl_mushroom/locale/template.txt +++ b/mods/ITEMS/mcl_mushroom/locale/template.txt @@ -7,9 +7,13 @@ Warped Roots= Warped Wart Block= Shroomlight= Warped Hyphae= +The stem of a warped hyphae= Warped Hyphae Bark= +This is a decorative block surrounded by the bark of an hyphae.= Stripped Warped Hyphae= +The stripped stem of a warped hyphae= Stripped Warped Hyphae Bark= +The stripped wood of a warped hyphae= Warped Hyphae Wood= Warped Bark Slab= Double Warped Bark Slab= @@ -21,9 +25,12 @@ Warped Slab= Crimson Fungus Mushroom= Crimson Roots= Crimson Hyphae= +The stem of a crimson hyphae= Crimson Hyphae Bark= Stripped Crimson Hyphae= +The stripped stem of a crimson hyphae= Stripped Crimson Hyphae Bark= +The stripped wood of a warped hyphae= Crimson Oak Bark Slab= Double Crimson Bark Slab= Crimson Hyphae Wood= From 49acbfed8e900b7d02588f6eb35268c248561d21 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sat, 30 Apr 2022 22:08:08 +0000 Subject: [PATCH 460/521] Fix from mcl2 blackstone by cora Changes taken from https://git.minetest.land/MineClone2/MineClone2/commit/af5e3d84d4363cad61390be6fe5264c7ff07a29f Fire is briefly yellow upon ignition before becoming blue --- mods/ITEMS/mcl_blackstone/init.lua | 47 ++++++++++++------------------ mods/ITEMS/mcl_blackstone/mod.conf | 2 +- 2 files changed, 20 insertions(+), 29 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index e1592d72c..1855e8ed5 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -4,36 +4,11 @@ local LIGHT_TORCH = 10 stairs = {} -local fire_enabled = minetest.settings:get_bool("enable_fire", true) - -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 - -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."), - N("@1 felt the burn."), - N("@1 died in the flames."), - N("@1 died in a fire."), -} --nodes - - - local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate if mod_screwdriver then @@ -194,7 +169,7 @@ minetest.register_node("mcl_blackstone:soul_soil", { minetest.register_node("mcl_blackstone:soul_fire", { description = S("Eternal Soul Fire"), - _doc_items_longdesc = eternal_fire_help, + _doc_items_longdesc = minetest.registered_nodes["mcl_fire:eternal_fire"]._doc_items_longdesc , drawtype = "firelike", tiles = { { @@ -214,7 +189,7 @@ minetest.register_node("mcl_blackstone:soul_fire", { buildable_to = true, sunlight_propagates = true, damage_per_second = 2, - _mcl_node_death_message = fire_death_messages, + _mcl_node_death_message = minetest.registered_nodes["mcl_fire:fire"]._mcl_node_death_message, groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston = 1, destroys_items = 1, set_on_fire=8}, floodable = true, on_flood = function(pos, oldnode, newnode) @@ -222,7 +197,23 @@ minetest.register_node("mcl_blackstone:soul_fire", { minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true) end end, + on_construct=function(pos) + local under = minetest.get_node(vector.offset(pos,0,-1,0)).name + if under ~= "mcl_nether:soul_sand" and under ~= "mcl_blackstone:soul_soil" then + minetest.swap_node(pos, {name = "air"}) + end + end }) + +local old_onconstruct=minetest.registered_nodes["mcl_fire:fire"].on_construct +minetest.registered_nodes["mcl_fire:fire"].on_construct=function(pos) + local under = minetest.get_node(vector.offset(pos,0,-1,0)).name + if under == "mcl_nether:soul_sand" or under == "mcl_blackstone:soul_soil" then + minetest.swap_node(pos, {name = "mcl_blackstone:soul_fire"}) + end + old_onconstruct(pos) +end + --[[ minetest.register_node("mcl_blackstone:chain", { description = S("Chain"), @@ -823,4 +814,4 @@ minetest.register_craft({ { "mcl_nether:soul_sand" }, { "mcl_core:stick" }, } -}) \ No newline at end of file +}) diff --git a/mods/ITEMS/mcl_blackstone/mod.conf b/mods/ITEMS/mcl_blackstone/mod.conf index 99c247024..a46b4b35d 100644 --- a/mods/ITEMS/mcl_blackstone/mod.conf +++ b/mods/ITEMS/mcl_blackstone/mod.conf @@ -1,2 +1,2 @@ name = mcl_blackstone -depends = mcl_core,screwdriver,mcl_stairs,mclx_stairs,mcl_walls,mclx_fences,mcl_torches \ No newline at end of file +depends = mcl_core,screwdriver,mcl_stairs,mclx_stairs,mcl_walls,mclx_fences,mcl_torches, mcl_fire From d17a50ecbad68fcf1ffcd3ecf540c629382fd09c Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 2 May 2022 20:38:02 +0000 Subject: [PATCH 461/521] Remove possibility to get soul fire in inventory by digging+minor fixes --- mods/ITEMS/mcl_blackstone/init.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 1855e8ed5..665c96309 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -188,7 +188,7 @@ minetest.register_node("mcl_blackstone:soul_fire", { walkable = false, buildable_to = true, sunlight_propagates = true, - damage_per_second = 2, + damage_per_second = 1, _mcl_node_death_message = minetest.registered_nodes["mcl_fire:fire"]._mcl_node_death_message, groups = {fire = 1, dig_immediate = 3, not_in_creative_inventory = 1, dig_by_piston = 1, destroys_items = 1, set_on_fire=8}, floodable = true, @@ -202,7 +202,9 @@ minetest.register_node("mcl_blackstone:soul_fire", { if under ~= "mcl_nether:soul_sand" and under ~= "mcl_blackstone:soul_soil" then minetest.swap_node(pos, {name = "air"}) end - end + end, + drop="", + _mcl_blast_resistance = 0, }) local old_onconstruct=minetest.registered_nodes["mcl_fire:fire"].on_construct From 00e54944fad9efb0e13cd2aeee3b71945c0e6404 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Tue, 3 May 2022 09:48:50 -0500 Subject: [PATCH 462/521] Fix mcl_maps on Windows --- mods/ITEMS/mcl_maps/init.lua | 10 +++++++--- mods/PLAYER/mcl_wieldview/README.txt | 4 +++- mods/PLAYER/mcl_wieldview/init.lua | 7 ++++++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index 413e7382a..640147bc5 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -55,7 +55,7 @@ function mcl_maps.create_map(pos) local map_y_start = 64 * dx local map_y_limit = 127 * dx - local pixels = {} + local pixels = "" local last_heightmap for x = 1, 128 do local map_x = x + offset @@ -125,13 +125,15 @@ function mcl_maps.create_map(pos) height = map_y - map_z heightmap[z] = height or minp.y - pixels[#pixels + 1] = color and {r = color[1], g = color[2], b = color[3]} or {r = 0, g = 0, b = 0} + + if not color then color = {0, 0, 0} end + pixels = pixels .. minetest.colorspec_to_bytes({r = color[1], g = color[2], b = color[3]}) end last_heightmap = heightmap end local png = minetest.encode_png(128, 128, pixels) - local f = io.open(map_textures_path .. "mcl_maps_map_texture_" .. id .. ".png", "w") + local f = io.open(map_textures_path .. "mcl_maps_map_texture_" .. id .. ".png", "wb") if not f then return end f:write(png) f:close() @@ -219,6 +221,8 @@ filled_wield_def.drawtype = "mesh" filled_wield_def.node_placement_prediction = "" filled_wield_def.range = minetest.registered_items[""].range filled_wield_def.on_place = mcl_util.call_on_rightclick +filled_wield_def.groups.no_wieldview = 1 +filled_wield_def._wieldview_item = "mcl_maps:empty_map" for _, texture in pairs(mcl_skins.list) do local def = table.copy(filled_wield_def) diff --git a/mods/PLAYER/mcl_wieldview/README.txt b/mods/PLAYER/mcl_wieldview/README.txt index b118d9ba6..660974f9b 100644 --- a/mods/PLAYER/mcl_wieldview/README.txt +++ b/mods/PLAYER/mcl_wieldview/README.txt @@ -7,4 +7,6 @@ Makes hand wielded items visible to other players. Info for modders ################ -Add items to the "no_wieldview" group with a raiting of 1 and it will not be shown by the wieldview. +Add an item to the "no_wieldview" group with a rating of 1 and it will not be shown by the wieldview. +If an item has the "no_wieldview" group rating of 1, the item definition can specify the property "_wieldview_item". +"_wieldview_item" should be set to an item name that will be shown by the wieldview instead of the item. diff --git a/mods/PLAYER/mcl_wieldview/init.lua b/mods/PLAYER/mcl_wieldview/init.lua index 660f5edb3..878d60b23 100644 --- a/mods/PLAYER/mcl_wieldview/init.lua +++ b/mods/PLAYER/mcl_wieldview/init.lua @@ -34,7 +34,12 @@ minetest.register_entity("mcl_wieldview:wieldnode", { self._item = item if get_item_group(item, "no_wieldview") ~= 0 then - item = "" + local def = player:get_wielded_item():get_definition() + if def and def._wieldview_item then + item = def._wieldview_item + else + item = "" + end end local item_def = minetest.registered_items[item] From 6ef292e80e0963af7f47c5ade7a73ad45c2bb18f Mon Sep 17 00:00:00 2001 From: balazsszalab Date: Tue, 3 May 2022 21:13:52 +0000 Subject: [PATCH 463/521] Use baby_size to scale chick size on hatching instead of dividing by 2 --- mods/ITEMS/mcl_throwing/register.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_throwing/register.lua b/mods/ITEMS/mcl_throwing/register.lua index 605ee1386..e261840ef 100644 --- a/mods/ITEMS/mcl_throwing/register.lua +++ b/mods/ITEMS/mcl_throwing/register.lua @@ -142,14 +142,14 @@ local function egg_on_step(self, dtime) if not object then return end local ent = object:get_luaentity() object:set_properties({ - visual_size = { x = ent.base_size.x/2, y = ent.base_size.y/2 }, + visual_size = { x = ent.base_size.x*ent.baby_size, y = ent.base_size.y*ent.baby_size }, collisionbox = { - ent.base_colbox[1]/2, - ent.base_colbox[2]/2, - ent.base_colbox[3]/2, - ent.base_colbox[4]/2, - ent.base_colbox[5]/2, - ent.base_colbox[6]/2, + ent.base_colbox[1]*ent.baby_size, + ent.base_colbox[2]*ent.baby_size, + ent.base_colbox[3]*ent.baby_size, + ent.base_colbox[4]*ent.baby_size, + ent.base_colbox[5]*ent.baby_size, + ent.base_colbox[6]*ent.baby_size, } }) ent.child = true From ff31e5d480639c93c69aabaf4324afa2e07225b2 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Mon, 16 May 2022 12:38:25 -0500 Subject: [PATCH 464/521] Fix mcl_wieldview showing unknown item after login --- mods/PLAYER/mcl_wieldview/init.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/mods/PLAYER/mcl_wieldview/init.lua b/mods/PLAYER/mcl_wieldview/init.lua index 878d60b23..947c2fdce 100644 --- a/mods/PLAYER/mcl_wieldview/init.lua +++ b/mods/PLAYER/mcl_wieldview/init.lua @@ -18,9 +18,6 @@ minetest.register_entity("mcl_wieldview:wieldnode", { collide_with_objects = false, static_save = false, visual_size = {x = 0.21, y = 0.21}, - - _item = "", - on_step = function(self) if not self._wielder or not self._wielder:is_player() then self.object:remove() From ee969531a883f4373363c138d9a696b48e24c902 Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 16 May 2022 13:28:36 +0200 Subject: [PATCH 465/521] make bell diggable by pickaxe --- mods/ITEMS/REDSTONE/mcl_bells/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/REDSTONE/mcl_bells/init.lua b/mods/ITEMS/REDSTONE/mcl_bells/init.lua index 9a69e4353..4ce591d7d 100644 --- a/mods/ITEMS/REDSTONE/mcl_bells/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_bells/init.lua @@ -17,6 +17,7 @@ minetest.register_node("mcl_bells:bell", { 4/16, 7/16, 4/16, }, }, + groups = { pickaxey = 1 } }) if has_mcl_wip then From 8ccf1ae3a9541b26164761691d8cecf8cf68c3d5 Mon Sep 17 00:00:00 2001 From: 3raven Date: Sun, 29 May 2022 09:28:29 +0000 Subject: [PATCH 466/521] Attempt to get clock and map working in glowing itemframes --- mods/ENTITIES/extra_mobs/glow_squid_items.lua | 102 ++++++++++++------ mods/ENTITIES/extra_mobs/mod.conf | 2 +- 2 files changed, 71 insertions(+), 33 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/glow_squid_items.lua b/mods/ENTITIES/extra_mobs/glow_squid_items.lua index c7f30662b..6895ee5ec 100644 --- a/mods/ENTITIES/extra_mobs/glow_squid_items.lua +++ b/mods/ENTITIES/extra_mobs/glow_squid_items.lua @@ -46,7 +46,7 @@ minetest.register_entity("extra_mobs:glow_item_frame_item",{ end end end - if self._texture ~= nil then + if self._texture then self.object:set_properties({ textures={self._texture}, visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, @@ -55,9 +55,9 @@ minetest.register_entity("extra_mobs:glow_item_frame_item",{ end, get_staticdata = function(self) if not self then return end - if self._nodename ~= nil and self._texture ~= nil then + if self._nodename and self._texture then local ret = self._nodename .. ';' .. self._texture - if self._scale ~= nil then + if self._scale then ret = ret .. ';' .. tostring(self._scale) end return ret @@ -66,7 +66,7 @@ minetest.register_entity("extra_mobs:glow_item_frame_item",{ end, _update_texture = function(self) - if self._texture ~= nil then + if self._texture then self.object:set_properties({ textures={self._texture}, visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, @@ -75,6 +75,23 @@ minetest.register_entity("extra_mobs:glow_item_frame_item",{ end, }) +minetest.register_entity("extra_mobs:glow_item_frame_map", { + initial_properties = { + visual = "upright_sprite", + visual_size = {x = 1, y = 1}, + pointable = false, + physical = false, + collide_with_objects = false, + textures = {"blank.png"}, + }, + on_activate = function(self, staticdata) + self.id = staticdata + self.object:set_properties({textures = {mcl_maps.load_map(self.id)}}) + end, + get_staticdata = function(self) + return self.id + end, +}) local facedir = {} facedir[0] = {x=0,y=0,z=1} @@ -83,19 +100,17 @@ facedir[2] = {x=0,y=0,z=-1} facedir[3] = {x=-1,y=0,z=0} local remove_item_entity = function(pos, node) - local objs = nil if node.name == "extra_mobs:glow_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 == "extra_mobs:glow_item_frame_item" then + for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local entity = obj:get_luaentity() + if entity and (entity.name == "extra_mobs:glow_item_frame_item" or entity.name == "extra_mobs:glow_item_frame_map") then obj:remove() end end end end + local update_item_entity = function(pos, node, param2) remove_item_entity(pos, node) local meta = minetest.get_meta(pos) @@ -111,27 +126,29 @@ local update_item_entity = function(pos, node, param2) pos.y = pos.y + posad.y*6.5/16 pos.z = pos.z + posad.z*6.5/16 end - local e = minetest.add_entity(pos, "extra_mobs:glow_item_frame_item") - local lua = e:get_luaentity() - lua._nodename = node.name - local itemname = item:get_name() - if itemname == "" or itemname == nil then - lua._texture = "blank.png" - lua._scale = 1 - else - lua._texture = itemname - local def = minetest.registered_items[itemname] - if def and def.wield_scale then - lua._scale = def.wield_scale.x - else - lua._scale = 1 - end - end - lua:_update_texture() - if node.name == "extra_mobs:glow_item_frame" then - local yaw = math.pi*2 - param2 * math.pi/2 - e:set_yaw(yaw) - end + local yaw = math.pi*2 - param2 * math.pi/2 + local map_id = item:get_meta():get_string("mcl_maps:id") + if map_id == "" then + local e = minetest.add_entity(pos, "extra_mobs:glow_item_frame_item") + local lua = e:get_luaentity() + lua._nodename = node.name + local itemname = item:get_name() + if itemname == "" or itemname == nil then + lua._texture = "blank.png" + lua._scale = 1 + else + lua._texture = itemname + local def = minetest.registered_items[itemname] + lua._scale = def and def.wield_scale and def.wield_scale.x or 1 + end + lua:_update_texture() + if node.name == "extra_mobs:glow_item_frame" then + e:set_yaw(yaw) + end + else + local e = minetest.add_entity(pos, "extra_mobs:glow_item_frame_map", map_id) + e:set_yaw(yaw) + end end end @@ -174,6 +191,21 @@ minetest.register_node("extra_mobs:glow_item_frame",{ groups = { dig_immediate=3,deco_block=1,dig_by_piston=1,container=7,attached_node_facedir=1 }, sounds = mcl_sounds.node_sound_defaults(), node_placement_prediction = "", + on_timer = function(pos) + local inv = minetest.get_meta(pos):get_inventory() + local stack = inv:get_stack("main", 1) + local itemname = stack:get_name() + if minetest.get_item_group(itemname, "clock") > 0 then + local new_name = "mcl_clock:clock_" .. (mcl_worlds.clock_works(pos) and mcl_clock.old_time or mcl_clock.random_frame) + if itemname ~= new_name then + stack:set_name(new_name) + inv:set_stack("main", 1, stack) + local node = minetest.get_node(pos) + update_item_entity(pos, node, node.param2) + end + minetest.get_node_timer(pos):start(1.0) + end + end, on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then return itemstack @@ -214,6 +246,12 @@ minetest.register_node("extra_mobs:glow_item_frame",{ end local put_itemstack = ItemStack(itemstack) put_itemstack:set_count(1) + if minetest.get_item_group(itemname, "compass") > 0 then + put_itemstack:set_name("mcl_compass:" .. mcl_compass.get_compass_image(pos, minetest.dir_to_yaw(minetest.facedir_to_dir(node.param2)))) + end + if minetest.get_item_group(itemname, "clock") > 0 then + minetest.get_node_timer(pos):start(1.0) + end inv:set_stack("main", 1, put_itemstack) update_item_entity(pos, node) -- Add node infotext when item has been named @@ -327,4 +365,4 @@ minetest.register_lbm({ minetest.register_alias("extra_mobs:glow_frame", "extra_mobs:glow_item_frame") --------------------- \ No newline at end of file +-------------------- diff --git a/mods/ENTITIES/extra_mobs/mod.conf b/mods/ENTITIES/extra_mobs/mod.conf index 06298dd4d..5cbcb17ae 100644 --- a/mods/ENTITIES/extra_mobs/mod.conf +++ b/mods/ENTITIES/extra_mobs/mod.conf @@ -1,3 +1,3 @@ name = extra_mobs -depends = mcl_mobs, mobs_mc +depends = mcl_mobs, mobs_mc, mcl_compass, mcl_core, mcl_maps optional_depends = mc_warped_fungus_stick, mc_sweet_berry From f57cbcb0a0b4d801cb2b70047dbed8aa2803576b Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Sun, 29 May 2022 17:32:47 -0600 Subject: [PATCH 467/521] Postmortal Advancement --- mods/HUD/mcl_achievements/init.lua | 7 +++++++ mods/ITEMS/mcl_totems/init.lua | 1 + 2 files changed, 8 insertions(+) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index b1c59fe54..c6aa0e38d 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -199,6 +199,13 @@ awards.register_achievement("mcl:enterEndPortal", { icon = "mcl_end_end_stone.png", }) +-- Triggered in mcl_totems +awards.register_achievement("mcl:postMortal", { + title = S("Postmortal"), + description = S("Use a Totem of Undying to cheat death."), + icon = "mcl_totems_totem.png", +}) + -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) if non_pc_achievements then diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 7a45ea58f..6b6fce7f1 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -43,6 +43,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) obj:set_wielded_item(wield) end end + awards.unlock(obj:get_player_name(), "mcl:postMortal") -- Effects minetest.sound_play({name = "mcl_totems_totem", gain = 1}, {pos=ppos, max_hear_distance = 16}, true) From 80416fef712fbee5a765f1c882c126c682223d3c Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Sun, 29 May 2022 18:28:34 -0600 Subject: [PATCH 468/521] Cartography Table --- mods/ITEMS/mcl_cartography_table/README.md | 13 +++++++++ mods/ITEMS/mcl_cartography_table/init.lua | 27 ++++++++++++++++++ mods/ITEMS/mcl_cartography_table/mod.conf | 3 ++ .../textures/cartography_table_side1.png | Bin 0 -> 610 bytes .../textures/cartography_table_side2.png | Bin 0 -> 680 bytes .../textures/cartography_table_side3.png | Bin 0 -> 466 bytes .../textures/cartography_table_top.png | Bin 0 -> 499 bytes 7 files changed, 43 insertions(+) create mode 100644 mods/ITEMS/mcl_cartography_table/README.md create mode 100644 mods/ITEMS/mcl_cartography_table/init.lua create mode 100644 mods/ITEMS/mcl_cartography_table/mod.conf create mode 100644 mods/ITEMS/mcl_cartography_table/textures/cartography_table_side1.png create mode 100644 mods/ITEMS/mcl_cartography_table/textures/cartography_table_side2.png create mode 100644 mods/ITEMS/mcl_cartography_table/textures/cartography_table_side3.png create mode 100644 mods/ITEMS/mcl_cartography_table/textures/cartography_table_top.png diff --git a/mods/ITEMS/mcl_cartography_table/README.md b/mods/ITEMS/mcl_cartography_table/README.md new file mode 100644 index 000000000..4818b6784 --- /dev/null +++ b/mods/ITEMS/mcl_cartography_table/README.md @@ -0,0 +1,13 @@ +mcl_cartography_table +------------------- +Cartography Tables, by PrairieWind + +Adds Cartography Tables to MineClone 2/5. + +License of source code +---------------------- +LGPLv2.1 + +License of media +---------------- +See the main MineClone 2 README.md file. \ No newline at end of file diff --git a/mods/ITEMS/mcl_cartography_table/init.lua b/mods/ITEMS/mcl_cartography_table/init.lua new file mode 100644 index 000000000..a7c66b4e2 --- /dev/null +++ b/mods/ITEMS/mcl_cartography_table/init.lua @@ -0,0 +1,27 @@ +local S = minetest.get_translator(minetest.get_current_modname()) +-- Cartography Table Code. Used to create and copy maps. Needs a GUI still. + +minetest.register_node("mcl_cartography_table:cartography_table", { + description = S("Cartography Table"), + _tt_help = S("Used to create or copy maps"), + _doc_items_longdesc = S("Is used to create or copy maps for use.."), + tiles = { + "cartography_table_top.png", "cartography_table_side3.png", + "cartography_table_side3.png", "cartography_table_side2.png", + "cartography_table_side3.png", "cartography_table_side1.png" + }, + paramtype2 = "facedir", + groups = { axey = 2, handy = 1, deco_block = 1, material_wood = 1, flammable = 1 }, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5 + }) + + +minetest.register_craft({ + output = "mcl_cartography_table:cartography_table", + recipe = { + { "mcl_core:paper", "mcl_core:paper", "" }, + { "group:wood", "group:wood", "" }, + { "group:wood", "group:wood", "" }, + } +}) \ No newline at end of file diff --git a/mods/ITEMS/mcl_cartography_table/mod.conf b/mods/ITEMS/mcl_cartography_table/mod.conf new file mode 100644 index 000000000..ebea16197 --- /dev/null +++ b/mods/ITEMS/mcl_cartography_table/mod.conf @@ -0,0 +1,3 @@ +name = mcl_cartography_table +author = PrairieWind +description = Adds the cartography table villager workstation to MineClone 2/5. Used to copy and create maps. \ No newline at end of file diff --git a/mods/ITEMS/mcl_cartography_table/textures/cartography_table_side1.png b/mods/ITEMS/mcl_cartography_table/textures/cartography_table_side1.png new file mode 100644 index 0000000000000000000000000000000000000000..7573d6b9893166260bf52f252d20d333010b2c41 GIT binary patch literal 610 zcmV-o0-gPdP)*$Jg$spk{@=g2aEC85i1=ei=5Myq+2ycdudl@TJ z{cTV-`~R7l)#fzwWG3*aqN*sk~~z1!$|`qp&|)Yx4uvjcoHo~Ovm1yexPHpG&SSc z8))_eo1Q0wspeThRyb_a?s-CKC77J}Lvm?EM{m;(R_-P2BKM5lV2J!Y@kO^e8G{ywGvFzklE$gu#IUNGCA>?U7j8P3qAVM w)O_1vGtUb0(z3CRyle8UU#B=}v0yRlQ zK~y-)g_6H()LEbB5y7>o)i<=;hQV>@= zI13JfOF@)s9V%EwTTHK)Cb{Izn{$Xs@2KE+N*>Z`j-``HMVKh!kz|xBqEsT) zxLK?b|1JSA>OsfS`4=*&@Lj>KDJYX1fHKJ$y0;jnpaV!Xrq{NKvWnFd+7wBYm1I(( zyRAk=ndFp7UJ*<#Sf-$3>Fmd&LxQxxG6l2FD&6E+L!!H_%0lh2MwqB+LdPIVCE9Dj z+JiQJ{~a4|zi{_)iD8-Ii0@j_2r!K*o1kZ73XPTfDM4==Q@ETzrK4TFaCY2r%xXa@ zWKr@z)TFj4DhqZ?;Jbn_Q4Hdom7CY`Je!5SO}Jk$hzqV=InB#gA9?;_jbrT=zAK2b z^03Cb0f4y~4}cRVJM_Ga_01u-?>u5YXdh`w2N=Y86XZcE8N>yC&*0PNJuJ^+p>Ol_ z$vw_px{NH!shcrOLnr83&2aZ`sP8ui%*}Z0{EP_q3m#4=m{hD!4ti~yOjZ?oo{ir# znha_MHEPA$^3vis=vqiMWt5myPd3 zqEyoNohn@4W&P{k)cfWV2XW5UguLxAAxb5gR77ck-4bkvNpso&A@Bzmm-z0hlRfnS O0000Y? zD0jZgw<^t88^$Ax33N5&Js@~w~HyWNb&md!}I+TfUGo# z-@=eq4JsHBhl0vjbZ*H?L%Fl0g~8aCMCbdM+2`KZTeew=FUGRH5T%>by#NHJg;(z3b#UbyGVfW`aI%C4gH%WMpJ(V_s-zXuMNJg>E)-d2X9=TZDdh zvW97%i+Gcch^m)>&Xy;l0(zET=qwCcV`=)d>z-u(RX+{}I200001VoOIv0Eh)0NB{r; z32;bRa{vGf6951U69E94oEQKA00(qQO+^Re2L%;0E7XC6f&c&jxk*GpR2b7OPr<4K zAq>pPLZp~r7qv?%lwLfUgDeD>{{Lq+>3ee!8E3{BsM%3#Wkb#cduAg3v38*ZJDulo z&>zX1AjR`~8Hh0=`e};e@)-7ByLb{*KE@bk=~IQ6fHQG2f1mTVx@TYr!Mw6`>68GJ ze&{#-sOlSGw Date: Sun, 29 May 2022 18:29:33 -0600 Subject: [PATCH 469/521] Fletching Table --- mods/ITEMS/mcl_fletching_table/README.md | 13 +++++++++ mods/ITEMS/mcl_fletching_table/init.lua | 25 ++++++++++++++++++ mods/ITEMS/mcl_fletching_table/mod.conf | 3 +++ .../textures/fletching_table_front.png | Bin 0 -> 720 bytes .../textures/fletching_table_side.png | Bin 0 -> 745 bytes .../textures/fletching_table_top.png | Bin 0 -> 630 bytes 6 files changed, 41 insertions(+) create mode 100644 mods/ITEMS/mcl_fletching_table/README.md create mode 100644 mods/ITEMS/mcl_fletching_table/init.lua create mode 100644 mods/ITEMS/mcl_fletching_table/mod.conf create mode 100644 mods/ITEMS/mcl_fletching_table/textures/fletching_table_front.png create mode 100644 mods/ITEMS/mcl_fletching_table/textures/fletching_table_side.png create mode 100644 mods/ITEMS/mcl_fletching_table/textures/fletching_table_top.png diff --git a/mods/ITEMS/mcl_fletching_table/README.md b/mods/ITEMS/mcl_fletching_table/README.md new file mode 100644 index 000000000..af0b88185 --- /dev/null +++ b/mods/ITEMS/mcl_fletching_table/README.md @@ -0,0 +1,13 @@ +mcl_fletching_table +------------------- +Fletching Tables, by PrairieWind + +Adds Fletching Tables to MineClone 2/5. + +License of source code +---------------------- +LGPLv2.1 + +License of media +---------------- +See the main MineClone 2 README.md file. \ No newline at end of file diff --git a/mods/ITEMS/mcl_fletching_table/init.lua b/mods/ITEMS/mcl_fletching_table/init.lua new file mode 100644 index 000000000..5fc7556b8 --- /dev/null +++ b/mods/ITEMS/mcl_fletching_table/init.lua @@ -0,0 +1,25 @@ +local S = minetest.get_translator(minetest.get_current_modname()) +-- Fletching Table Code. No use as of current Minecraft Updates. Basically a decor block. As of now, this is complete. +minetest.register_node("mcl_fletching_table:fletching_table", { + description = S("Fletching Table"), + _tt_help = S("A fletching table"), + _doc_items_longdesc = S("This is the fletcher villager's work station. It currently has no use beyond decoration."), + tiles = { + "fletching_table_top.png", "fletching_table_top.png", + "fletching_table_side.png", "fletching_table_side.png", + "fletching_table_front.png", "fletching_table_front.png" + }, + paramtype2 = "facedir", + groups = { axey = 2, handy = 1, deco_block = 1, material_wood = 1, flammable = 1 }, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5 + }) + +minetest.register_craft({ + output = "mcl_fletching_table:fletching_table", + recipe = { + { "mcl_core:flint", "mcl_core:flint", "" }, + { "group:wood", "group:wood", "" }, + { "group:wood", "group:wood", "" }, + } +}) \ No newline at end of file diff --git a/mods/ITEMS/mcl_fletching_table/mod.conf b/mods/ITEMS/mcl_fletching_table/mod.conf new file mode 100644 index 000000000..5a4e9a900 --- /dev/null +++ b/mods/ITEMS/mcl_fletching_table/mod.conf @@ -0,0 +1,3 @@ +name = mcl_fletching_table +author = PrairieWind +description = Adds the fletching table villager workstation to MineClone 2/5. diff --git a/mods/ITEMS/mcl_fletching_table/textures/fletching_table_front.png b/mods/ITEMS/mcl_fletching_table/textures/fletching_table_front.png new file mode 100644 index 0000000000000000000000000000000000000000..da2eb35193f1d423dd04bb0b9c2a0b4b12baf65b GIT binary patch literal 720 zcmV;>0x$iEP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jU9_ z5Cj;!a4#qT00K}+L_t(I%Z-xDPZLoT#(xZ@orlnIn83ueCC>O*m?$B!F~P79qV7-@ z%7TqMH?sF1aO1*-OBXIAF|ZJfF>DNpBxoWr5+WuL+VW@!g(*<5Gt zpXO57*Lv6~dUV};Al6z;!8B#gojpT$hfORIXK3`jK!97x^EG*O^d-NHRPa4fK~Uaj zVPd%A{>V##>#oPwcdr3hm>8zymvP;Ih!Uo5Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jU9_ z5DE}1D2kK-00L=AL_t(I%WacgNK;`LfFJd+?VRN{=4?yW#GfmJ=q4!eCbEm@56v6J z2=6jsU5FCH{)C1p!=i$^ux=#i#t{97!tszj4%f{{4Es4DWp za+qKwPS4{PEG&m{IxPIzhFX^u$t)|FOh*7{aMzX z2f!>VNF^C2vx2+rDpR*SxQ;mlpwo9B@4zEmKv(M}+B$A%L`o&QE$3U9@r-iil~=Qa z`Mx1Mz6ZP+8O35$$S!`N&RK)1hKmmLvX1%&t47jP=WXWuhBP(*^c;~;2>5>5~Vb-to7^hg4ED z{#;FAF)E}py8x(ap5u-}5l|ea5M9F~Oxzt1FE!blIOpx>neR0K$xK$vOX&y#u(-U+ zxPO+R;Sm8aS6Aclz9g1N0Wk4?ik|Lv&hCpBf5B!m&{$W4RKClnna>z>g3GB!J7DKR zYcBu~?>%AV`$utKq>Wrw>|keS2Y~o`K{MI__WA~5OF=^47TDe{psINq>vWWxWd&6& zHm5VYLXuH7Xx7(BKa&&B0a%Hu0Q^oQDf7A8_ey{t;o@)@4f=zNli$K<(38n;iP{OL bQ;7TvjnM`J?k&@Q00000NkvXXu0mjfB@|2; literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_fletching_table/textures/fletching_table_top.png b/mods/ITEMS/mcl_fletching_table/textures/fletching_table_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0ecead69655c753c1cd50f4d624a174e937379bf GIT binary patch literal 630 zcmV-+0*U>JP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jU9_ z5DhM(2m$y200H(%L_t(I%axN)YZFlv#eZ$mWbRDEz{E6Rh>3p!BSA}$x(MRJjfh}Z zZd{663GUtb1>EUU{QxeCP!M-!F*ah!s!~aiXdGIj(ICl84Mi96O)?EGJiGVqyXW5X z&bp4;=WvBIo$*<-i|>0e^HDc_?~pE|yEDCIkRUNw6Y`X@>Rh4orc)Z$C*& zVoCt8wqE1W{ks4R{UDNPhz5Z7^*dKDo(stqVZx?x>&`ujg-Q9cV^el)4AEG1@)Qde zrXdkYi|VkpUZd04LbEcMqK6d~2L1?B^vGQ(L4C@8*CSi%;Wk?sqOr5_T-NKWdX^WpJA<216gW*$O4N+igrkFhrwx`6fkR@Ab1OLD263&}nQ@ zc5HTbJ<5&^fVS6VA(7b zl+IUgUa+)un$E|5SXnu-S${{vb$R~y;ruT6qeD!AYNf<@+~z{%ROHc<4VPs}QdscF z{+&YQMqF7kJB_oGW{S?TB)NX+EMNLR<`ylk?3taeqquS9JV3Z?2Qr<5KQ+X_jeU#* Q*8l(j07*qoM6N<$f*PI_wg3PC literal 0 HcmV?d00001 From 2a08c60602759b940f8198d2b54a49734fe4ccee Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Sun, 29 May 2022 18:30:27 -0600 Subject: [PATCH 470/521] Loom --- mods/ITEMS/mcl_loom/README.md | 13 +++++++++ mods/ITEMS/mcl_loom/init.lua | 27 ++++++++++++++++++ mods/ITEMS/mcl_loom/mod.conf | 3 ++ mods/ITEMS/mcl_loom/textures/loom_bottom.png | Bin 0 -> 315 bytes mods/ITEMS/mcl_loom/textures/loom_bottom1.png | Bin 0 -> 395 bytes mods/ITEMS/mcl_loom/textures/loom_front.png | Bin 0 -> 339 bytes mods/ITEMS/mcl_loom/textures/loom_front1.png | Bin 0 -> 615 bytes mods/ITEMS/mcl_loom/textures/loom_side.png | Bin 0 -> 360 bytes mods/ITEMS/mcl_loom/textures/loom_side1.png | Bin 0 -> 639 bytes mods/ITEMS/mcl_loom/textures/loom_top.png | Bin 0 -> 358 bytes mods/ITEMS/mcl_loom/textures/loom_top1.png | Bin 0 -> 468 bytes 11 files changed, 43 insertions(+) create mode 100644 mods/ITEMS/mcl_loom/README.md create mode 100644 mods/ITEMS/mcl_loom/init.lua create mode 100644 mods/ITEMS/mcl_loom/mod.conf create mode 100644 mods/ITEMS/mcl_loom/textures/loom_bottom.png create mode 100644 mods/ITEMS/mcl_loom/textures/loom_bottom1.png create mode 100644 mods/ITEMS/mcl_loom/textures/loom_front.png create mode 100644 mods/ITEMS/mcl_loom/textures/loom_front1.png create mode 100644 mods/ITEMS/mcl_loom/textures/loom_side.png create mode 100644 mods/ITEMS/mcl_loom/textures/loom_side1.png create mode 100644 mods/ITEMS/mcl_loom/textures/loom_top.png create mode 100644 mods/ITEMS/mcl_loom/textures/loom_top1.png diff --git a/mods/ITEMS/mcl_loom/README.md b/mods/ITEMS/mcl_loom/README.md new file mode 100644 index 000000000..08ee0dea3 --- /dev/null +++ b/mods/ITEMS/mcl_loom/README.md @@ -0,0 +1,13 @@ +mcl_loom +-------- +Looms, by PrairieWind + +Adds Looms to MineClone 2/5. Used to add patterns to banners. + +License of source code +---------------------- +LGPLv2.1 + +License of media +---------------- +See the main MineClone 2 README.md file. \ No newline at end of file diff --git a/mods/ITEMS/mcl_loom/init.lua b/mods/ITEMS/mcl_loom/init.lua new file mode 100644 index 000000000..89960e133 --- /dev/null +++ b/mods/ITEMS/mcl_loom/init.lua @@ -0,0 +1,27 @@ +local S = minetest.get_translator(minetest.get_current_modname()) +-- Loom Code. Used to craft banner designs easier. Still needs a GUI. https://minecraft.fandom.com/wiki/Loom + +minetest.register_node("mcl_loom:loom", { + description = S("Loom"), + _tt_help = S("Used to create banner designs"), + _doc_items_longdesc = S("This is the shepherd villager's work station. It is used to create banner designs."), + tiles = { + "loom_top.png", "loom_bottom.png", + "loom_side.png", "loom_side.png", + "loom_front.png", "loom_front.png" + }, + paramtype2 = "facedir", + groups = { axey = 2, handy = 1, deco_block = 1, material_wood = 1, flammable = 1 }, + _mcl_blast_resistance = 2.5, + _mcl_hardness = 2.5 + }) + + +minetest.register_craft({ + output = "mcl_loom:loom", + recipe = { + { "", "", "" }, + { "mcl_mobitems:string", "mcl_mobitems:string", "" }, + { "group:wood", "group:wood", "" }, + } +}) diff --git a/mods/ITEMS/mcl_loom/mod.conf b/mods/ITEMS/mcl_loom/mod.conf new file mode 100644 index 000000000..9ebb10ff3 --- /dev/null +++ b/mods/ITEMS/mcl_loom/mod.conf @@ -0,0 +1,3 @@ +name = mcl_loom +author = PrairieWind +description = Adds the loom villager workstation to MineClone 2/5. Used to add patterns to banners. \ No newline at end of file diff --git a/mods/ITEMS/mcl_loom/textures/loom_bottom.png b/mods/ITEMS/mcl_loom/textures/loom_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..835d36fca7aa16e68498091a669d81d146a57bef GIT binary patch literal 315 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 Z=np@M?QWykI+y?e002ovPDHLkV1hJO9kKub literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_loom/textures/loom_top.png b/mods/ITEMS/mcl_loom/textures/loom_top.png new file mode 100644 index 0000000000000000000000000000000000000000..af980f3c197345ab395ecc23d813aa969294820c GIT binary patch literal 358 zcmV-s0h#`ZP)ZNoW>YUE#sn-A+5G?`ZnME%<#|u z<_&{>PhVb~>ifG}XAb&3En-y=O+EnloPGmXUB_4z2!P$Dq*|q}BQQ4rczk+Y;D1Z3 z+E_MRb%6j#^8#0vMgpL_*J2Y|gP_$QRmobG=c=>@WA#NHQBN};TQ^td+H3CEuL%(P(&}>kS7rGWkr$fbC?T2!j9xNy`(Qywv%uPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jc_- z4>AQUcP(K600C4fF~b7^o9B=eU`p~c=amc z#Y3S&O-aNAC$>fEA)RqIX~DTnvYYwlo9~-6X4A@8E)y*xQ9`4Z} zkMQ-8V)6VaC1?S_y4U~!+NTEONV7zqXZp+;W0~XtfMH~DA{SlL!S=fV0L=o#X{-R` z2*b!~jRHskXRKL^dV?TKtcy(vAe7o#PNZ;RZC|0j8fye;Rm`x|U z`6AKv6n~F}bYCVphLJ_fKk!4W6^DGL{@%3Yuli5-fh>^u)8H4V-=_Xy7F+570000< KMNUMnLSTXd7{@{Y literal 0 HcmV?d00001 From d4828f89934c83247d9566aea32decc1b00c7164 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Sun, 29 May 2022 19:11:21 -0600 Subject: [PATCH 471/521] Sweet Dreams Advancement --- mods/HUD/mcl_achievements/init.lua | 7 +++++++ mods/ITEMS/mcl_beds/functions.lua | 1 + 2 files changed, 8 insertions(+) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index c6aa0e38d..998ce42a7 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -206,6 +206,13 @@ awards.register_achievement("mcl:postMortal", { icon = "mcl_totems_totem.png", }) +-- Triggered in mcl_beds +awards.register_achievement("mcl:sweetDreams", { + title = S("Sweet Dreams"), + description = S("Sleep in a bed to change your respawn point."), + icon = "mcl_beds_bed_red.png", +}) + -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) if non_pc_achievements then diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index b8478fc1f..1909c7cb2 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -76,6 +76,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- save respawn position when entering bed if spawn_mod and mcl_spawn.set_spawn_pos(player, bed_pos, nil) then minetest.chat_send_player(name, S("New respawn position set!")) + awards.unlock(player:get_player_name(), "mcl:sweetDreams") end -- No sleeping if too far away From 3a12b9f6c6186b3a073e037323c2ed64edad35b4 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Sun, 29 May 2022 21:06:48 -0600 Subject: [PATCH 472/521] Serious Dedication Advancement --- mods/HUD/mcl_achievements/init.lua | 7 +++++++ mods/ITEMS/mcl_smithing_table/init.lua | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 998ce42a7..580644b6d 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -213,6 +213,13 @@ awards.register_achievement("mcl:sweetDreams", { icon = "mcl_beds_bed_red.png", }) +-- Triggered in mcl_smithing_table +awards.register_achievement("mcl:seriousDedication", { + title = S("Serious Dedication"), + description = S("Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices"), + icon = "farming_tool_netheritehoe.png", +}) + -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) if non_pc_achievements then diff --git a/mods/ITEMS/mcl_smithing_table/init.lua b/mods/ITEMS/mcl_smithing_table/init.lua index 5e0610f44..1f2e2fbc6 100644 --- a/mods/ITEMS/mcl_smithing_table/init.lua +++ b/mods/ITEMS/mcl_smithing_table/init.lua @@ -125,6 +125,11 @@ minetest.register_node("mcl_smithing_table:table", { -- ToDo: make epic sound minetest.sound_play("mcl_smithing_table_upgrade", {pos = pos, max_hear_distance = 16}) end + if listname == "upgraded_item" then + if stack:get_name() == "mcl_farming:hoe_netherite" then + awards.unlock(player:get_player_name(), "mcl:seriousDedication") + end + end reset_upgraded_item(pos) end, @@ -133,6 +138,7 @@ minetest.register_node("mcl_smithing_table:table", { _mcl_hardness = 2.5 }) + minetest.register_craft({ output = "mcl_smithing_table:table", recipe = { From 8d79e5f7f7804d79432dfb5ae89620d0a388184b Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 30 May 2022 13:59:49 +0000 Subject: [PATCH 473/521] Attempt to fix map on itemframe by using EliasFleckenstein changes from mcl2 --- mods/ITEMS/mcl_maps/init.lua | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index 640147bc5..b33e83d78 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -8,6 +8,8 @@ local map_textures_path = worldpath .. "/mcl_maps/" local math_min = math.min local math_max = math.max +local dynamic_add_media = minetest.dynamic_add_media + minetest.mkdir(map_textures_path) local function load_json_file(name) @@ -144,7 +146,7 @@ end local loading_maps = {} -function mcl_maps.load_map(id) +function mcl_maps.load_map(id, callback) if id == "" or creating_maps[id] or loading_maps[id] then return end @@ -153,14 +155,28 @@ function mcl_maps.load_map(id) if not loaded_maps[id] then loading_maps[id] = true - minetest.dynamic_add_media({filepath = map_textures_path .. texture, ephemeral = true}, function(player_name) - loaded_maps[id] = true - loading_maps[id] = nil - end) - return + if not minetest.features.dynamic_add_media_table then + -- minetest.dynamic_add_media() blocks in + -- Minetest 5.3 and 5.4 until media loads + dynamic_add_media(map_textures_path .. texture, function(player_name) end) + loaded_maps[id] = true + if callback then callback(texture) end + loading_maps[id] = nil + else + -- minetest.dynamic_add_media() never blocks + -- in Minetest 5.5, callback runs after load + dynamic_add_media(map_textures_path .. texture, function(player_name) + loaded_maps[id] = true + if callback then callback(texture) end + loading_maps[id] = nil + end) + end end - return texture + if loaded_maps[id] then + if callback then callback(texture) end + return texture + end end function mcl_maps.load_map_item(itemstack) From 50cbde6380a13d3f28da3740d6744ad699a3e88f Mon Sep 17 00:00:00 2001 From: 3raven Date: Mon, 30 May 2022 14:02:06 +0000 Subject: [PATCH 474/521] Atteempt to fix map on itemframe by using EliasFlickenstein in mcl2 --- mods/ITEMS/mcl_itemframes/init.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index 5dde560b7..5937a16cf 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -65,7 +65,10 @@ minetest.register_entity("mcl_itemframes:map", { }, on_activate = function(self, staticdata) self.id = staticdata - self.object:set_properties({textures = {mcl_maps.load_map(self.id)}}) + mcl_maps.load_map(self.id, function(texture) + -- will not crash even if self.object is invalid by now + self.object:set_properties({textures = {texture}}) + end) end, get_staticdata = function(self) return self.id From cc81b51128753de2f5ad0455c7871522a50104a8 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 12:17:52 +0000 Subject: [PATCH 476/521] fix map in itemframes Fix the map in iteframes problem in newly created worlds but might not work in older ones+ add tga dependancy --- mods/ITEMS/mcl_maps/init.lua | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/mods/ITEMS/mcl_maps/init.lua b/mods/ITEMS/mcl_maps/init.lua index b33e83d78..0c88fc1d6 100644 --- a/mods/ITEMS/mcl_maps/init.lua +++ b/mods/ITEMS/mcl_maps/init.lua @@ -57,7 +57,8 @@ function mcl_maps.create_map(pos) local map_y_start = 64 * dx local map_y_limit = 127 * dx - local pixels = "" + --local pixels = "" + local pixels = {} local last_heightmap for x = 1, 128 do local map_x = x + offset @@ -127,48 +128,51 @@ function mcl_maps.create_map(pos) height = map_y - map_z heightmap[z] = height or minp.y - - if not color then color = {0, 0, 0} end - pixels = pixels .. minetest.colorspec_to_bytes({r = color[1], g = color[2], b = color[3]}) + pixels[z] = pixels[z] or {} + pixels[z][x] = color or {0, 0, 0} + --if not color then color = {0, 0, 0} end + --pixels = pixels .. minetest.colorspec_to_bytes({r = color[1], g = color[2], b = color[3]}) end last_heightmap = heightmap end - local png = minetest.encode_png(128, 128, pixels) - local f = io.open(map_textures_path .. "mcl_maps_map_texture_" .. id .. ".png", "wb") - if not f then return end - f:write(png) - f:close() - creating_maps[id] = nil + --local png = minetest.encode_png(128, 128, pixels) + --local f = io.open(map_textures_path .. "mcl_maps_map_texture_" .. id .. ".png", "wb") + --if not f then return end + --f:write(png) + --f:close() + tga_encoder.image(pixels):save(map_textures_path .. "mcl_maps_map_texture_" .. id .. ".tga") + creating_maps[id] = nil end) return itemstack end -local loading_maps = {} +--local loading_maps = {} function mcl_maps.load_map(id, callback) - if id == "" or creating_maps[id] or loading_maps[id] then + if id == "" or creating_maps[id] then--or loading_maps[id] then return end - local texture = "mcl_maps_map_texture_" .. id .. ".png" + --local texture = "mcl_maps_map_texture_" .. id .. ".png" + local texture = "mcl_maps_map_texture_" .. id .. ".tga" if not loaded_maps[id] then - loading_maps[id] = true + --loading_maps[id] = true if not minetest.features.dynamic_add_media_table then -- minetest.dynamic_add_media() blocks in -- Minetest 5.3 and 5.4 until media loads dynamic_add_media(map_textures_path .. texture, function(player_name) end) loaded_maps[id] = true if callback then callback(texture) end - loading_maps[id] = nil + --loading_maps[id] = nil else -- minetest.dynamic_add_media() never blocks -- in Minetest 5.5, callback runs after load dynamic_add_media(map_textures_path .. texture, function(player_name) loaded_maps[id] = true if callback then callback(texture) end - loading_maps[id] = nil + --loading_maps[id] = nil end) end end From fa9a06a6d585b3e25ddc9c126600682c659a58a0 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 12:22:19 +0000 Subject: [PATCH 477/521] Add tga_encoder dependancy --- mods/ITEMS/mcl_maps/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_maps/mod.conf b/mods/ITEMS/mcl_maps/mod.conf index efe1708dd..9134296b9 100644 --- a/mods/ITEMS/mcl_maps/mod.conf +++ b/mods/ITEMS/mcl_maps/mod.conf @@ -1,2 +1,2 @@ name = mcl_maps -depends = mcl_core, mcl_flowers, tt, mcl_colors, mcl_skins, mcl_util, mcl_time +depends = mcl_core, mcl_flowers, tt, mcl_colors, mcl_skins, mcl_util, mcl_time, tga_encoder From 0e1b4d8fea8d6e387c5be2c1a0b13de8c1ea120d Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 12:24:41 +0000 Subject: [PATCH 478/521] Adding tga_encoder (fleckenstein's) Adding tga_encoder for displaying maps (from here https://content.minetest.net/packages/erlehmann/tga_encoder/) --- mods/CORE/tga_encoder/LICENSE | 674 +++++++++++++++++++++++++++++ mods/CORE/tga_encoder/README.md | 87 ++++ mods/CORE/tga_encoder/examples.lua | 150 +++++++ mods/CORE/tga_encoder/init.lua | 594 +++++++++++++++++++++++++ mods/CORE/tga_encoder/mod.conf | 2 + 5 files changed, 1507 insertions(+) create mode 100644 mods/CORE/tga_encoder/LICENSE create mode 100644 mods/CORE/tga_encoder/README.md create mode 100644 mods/CORE/tga_encoder/examples.lua create mode 100644 mods/CORE/tga_encoder/init.lua create mode 100644 mods/CORE/tga_encoder/mod.conf diff --git a/mods/CORE/tga_encoder/LICENSE b/mods/CORE/tga_encoder/LICENSE new file mode 100644 index 000000000..f288702d2 --- /dev/null +++ b/mods/CORE/tga_encoder/LICENSE @@ -0,0 +1,674 @@ + 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. + + + Copyright (C) + + 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: + + Copyright (C) + 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/CORE/tga_encoder/README.md b/mods/CORE/tga_encoder/README.md new file mode 100644 index 000000000..1ad978a22 --- /dev/null +++ b/mods/CORE/tga_encoder/README.md @@ -0,0 +1,87 @@ +# tga_encoder +A TGA Encoder written in Lua without the use of external Libraries. + +Created by fleckenstein for MineClone2, then improved by erlehmann. + +May be used as a Minetest mod. + +See `examples.lua` for example code and usage hints. + +## Use Cases for `tga_encoder` + +### Encoding Textures for Editing + +TGA images of types 1/2/3 consist of header data followed by a pixel array. + +This makes it trivial to parse TGA files – and even edit pixels in-place. + +No checksums need to be updated on any kind of in-place texture editing. + +**Tip**: When storing an editable image in item meta, use zlib compression. + +### Legacy Minetest Texture Encoding + +Minetest 5.4 did not include `minetest.encode_png()` (or any equvivalent). + +Since `tga_encoder` is written in pure Lua, it does not need engine support. + +**Tip:** Look at `examples.lua` and the Minetest mod `mcl_maps` for guidance. + +### Advanced Texture Format Control + +The function `minetest.encode_png()` always encodes images as 32bpp RGBA. + +`tga_encoder` allows saving images as grayscale, 16bpp RGBA and 24bpp RGB. + +For generating maps from terrain, color-mapped formats can be more useful. + +### Encoding Very Small Textures + +Images of size 8×8 or below are often smaller than an equivalent PNG file. + +Note that on many filesystems files use at least 4096 bytes (i.e. 64×64). + +Therefore, saving bytes on files up to a few 100 bytes is often useless. + +### Encoding Reference Textures + +TGA is a simple format, which makes it easy to create reference textures. + +Using a hex editor, one can trivially see how all the pixels are stored. + +## Supported Image Types + +For all types, images are encoded in a fast single pass (i.e. append-only). + +### Color-Mapped Images (Type 1) + +These images contain a palette, followed by pixel data. + +* `A1R5G5B5` (8bpp RGB) +* `B8G8R8` (8bpp RGB) +* `B8G8R8A8` (8bpp RGBA) + +### True-Color Images (Type 2) + +These images contain uncompressed RGB(A) pixel data. + +* `A1R5G5B5` (16bpp RGBA) +* `B8G8R8` (24bpp RGB) +* `B8G8R8A8` (32bpp RGBA) + +### Grayscale Images (Type 3) + +* `Y8` (8bpp grayscale) + +### Run-Length Encoded (RLE), True-Color Images (Type 10) + +These images contain compressed RGB(A) pixel data. + +* `A1R5G5B5` (16bpp RGBA) +* `B8G8R8` (24bpp RGB) +* `B8G8R8A8` (32bpp RGBA) + +## TODO + +* Actually support `R8G8B8A8` input for `A1R5G5B5` output +* Add both zoomable and explorable maps to `mcl_maps`. diff --git a/mods/CORE/tga_encoder/examples.lua b/mods/CORE/tga_encoder/examples.lua new file mode 100644 index 000000000..7642281aa --- /dev/null +++ b/mods/CORE/tga_encoder/examples.lua @@ -0,0 +1,150 @@ +dofile("init.lua") + +-- encode a bitmap +local _ = { 0, 0, 0 } +local R = { 255, 127, 127 } +local pixels = { + { _, _, _, _, _, _, _ }, + { _, _, _, R, _, _, _ }, + { _, _, R, R, R, _, _ }, + { _, R, R, R, R, R, _ }, + { _, R, R, R, R, R, _ }, + { _, _, R, _, R, _, _ }, + { _, _, _, _, _, _, _ }, +} +tga_encoder.image(pixels):save("bitmap_small.tga") + +-- change a single pixel, then rescale the bitmap +local pixels_orig = pixels +pixels_orig[4][4] = { 255, 255, 255 } +local pixels = {} +for x = 1,56,1 do + local x_orig = math.ceil(x/8) + for z = 1,56,1 do + local z_orig = math.ceil(z/8) + local color = pixels_orig[z_orig][x_orig] + pixels[z] = pixels[z] or {} + pixels[z][x] = color + end +end +tga_encoder.image(pixels):save("bitmap_large.tga") + +-- note that the uncompressed grayscale TGA file written in this +-- example is 80 bytes – but an optimized PNG file is 81 bytes … +local pixels = {} +for x = 1,6,1 do -- left to right + for z = 1,6,1 do -- bottom to top + local color = { math.min(x * z * 4 - 1, 255) } + pixels[z] = pixels[z] or {} + pixels[z][x] = color + end +end +tga_encoder.image(pixels):save("gradient_8bpp_raw.tga", {color_format="Y8", compression="RAW"}) + +local pixels = {} +for x = 1,16,1 do -- left to right + for z = 1,16,1 do -- bottom to top + local r = math.min(x * 32 - 1, 255) + local g = math.min(z * 32 - 1, 255) + local b = 0 + -- blue rectangle in top right corner + if x > 8 and z > 8 then + r = 0 + g = 0 + b = math.min(z * 16 - 1, 255) + end + local color = { r, g, b } + pixels[z] = pixels[z] or {} + pixels[z][x] = color + end +end +local gradients = tga_encoder.image(pixels) +gradients:save("gradients_8bpp_raw.tga", {color_format="Y8", compression="RAW"}) +gradients:save("gradients_16bpp_raw.tga", {color_format="A1R5G5B5", compression="RAW"}) +gradients:save("gradients_16bpp_rle.tga", {color_format="A1R5G5B5", compression="RLE"}) +gradients:save("gradients_24bpp_raw.tga", {color_format="B8G8R8", compression="RAW"}) +gradients:save("gradients_24bpp_rle.tga", {color_format="B8G8R8", compression="RLE"}) + +for x = 1,16,1 do -- left to right + for z = 1,16,1 do -- bottom to top + local color = pixels[z][x] + color[#color+1] = ((x * x) + (z * z)) % 256 + pixels[z][x] = color + end +end +gradients:save("gradients_32bpp_raw.tga", {color_format="B8G8R8A8", compression="RAW"}) +-- the RLE-compressed file is larger than just dumping pixels because +-- the gradients in this picture can not be compressed well using RLE +gradients:save("gradients_32bpp_rle.tga", {color_format="B8G8R8A8", compression="RLE"}) + +local pixels = {} +for x = 1,512,1 do -- left to right + for z = 1,512,1 do -- bottom to top + local oz = (z - 256) / 256 + 0.75 + local ox = (x - 256) / 256 + local px, pz, i = 0, 0, 0 + while (px * px) + (pz * pz) <= 4 and i < 128 do + px = (px * px) - (pz * pz) + oz + pz = (2 * px * pz) + ox + i = i + 1 + end + local color = { + math.max(0, math.min(255, math.floor(px * 64))), + math.max(0, math.min(255, math.floor(pz * 64))), + math.max(0, math.min(255, math.floor(i))), + } + pixels[z] = pixels[z] or {} + pixels[z][x] = color + end +end +tga_encoder.image(pixels):save("fractal_8bpp.tga", {color_format="Y8"}) +tga_encoder.image(pixels):save("fractal_16bpp.tga", {color_format="A1R5G5B5"}) +tga_encoder.image(pixels):save("fractal_24bpp.tga", {color_format="B8G8R8"}) + +-- encode a colormapped bitmap +local K = { 0 } +local B = { 1 } +local R = { 2 } +local G = { 3 } +local W = { 4 } +local colormap = { + { 1, 2, 3 }, -- K + { 0, 0, 255 }, -- B + { 255, 0, 0 }, -- R + { 0, 255, 0 }, -- G + { 253, 254, 255 }, -- W +} +local pixels = { + { W, K, W, K, W, K, W }, + { R, G, B, R, G, B, K }, + { K, W, K, W, K, W, K }, + { G, B, R, G, B, R, W }, + { W, W, W, K, K, K, W }, + { B, R, G, B, R, G, K }, + { B, R, G, B, R, G, W }, +} +-- note that the uncompressed colormapped TGA file written in this +-- example is 108 bytes – but an optimized PNG file is 121 bytes … +tga_encoder.image(pixels):save("colormapped_B8G8R8.tga", {colormap=colormap}) +-- encoding as A1R5G5B5 saves 1 byte per palette entry → 103 bytes +tga_encoder.image(pixels):save("colormapped_A1R5G5B5.tga", {colormap=colormap, color_format="A1R5G5B5"}) + +-- encode a colormapped bitmap with transparency +local _ = { 0 } +local K = { 1 } +local W = { 2 } +local colormap = { + { 0, 0, 0, 0 }, + { 0, 0, 0, 255 }, + { 255, 255, 255, 255 }, +} +local pixels = { + { _, K, K, K, K, K, _ }, + { _, K, W, W, W, K, _ }, + { K, K, W, W, W, K, K }, + { K, W, W, W, W, W, K }, + { _, K, W, W, W, K, _ }, + { _, _, K, W, K, _, _ }, + { _, _, _, K, _, _, _ }, +} +tga_encoder.image(pixels):save("colormapped_B8G8R8A8.tga", {colormap=colormap}) diff --git a/mods/CORE/tga_encoder/init.lua b/mods/CORE/tga_encoder/init.lua new file mode 100644 index 000000000..ed387eec0 --- /dev/null +++ b/mods/CORE/tga_encoder/init.lua @@ -0,0 +1,594 @@ +tga_encoder = {} + +local image = setmetatable({}, { + __call = function(self, ...) + local t = setmetatable({}, {__index = self}) + t:constructor(...) + return t + end, +}) + +function image:constructor(pixels) + self.pixels = pixels + self.width = #pixels[1] + self.height = #pixels +end + +local pixel_depth_by_color_format = { + ["Y8"] = 8, + ["A1R5G5B5"] = 16, + ["B8G8R8"] = 24, + ["B8G8R8A8"] = 32, +} + +function image:encode_colormap_spec(properties) + local colormap = properties.colormap + local colormap_pixel_depth = 0 + if 0 ~= #colormap then + colormap_pixel_depth = pixel_depth_by_color_format[ + properties.color_format + ] + end + local colormap_spec = + string.char(0, 0) .. -- first entry index + string.char(#colormap % 256, math.floor(#colormap / 256)) .. -- number of entries + string.char(colormap_pixel_depth) -- bits per pixel + self.data = self.data .. colormap_spec +end + +function image:encode_image_spec(properties) + local color_format = properties.color_format + assert( + "Y8" == color_format or -- (8 bit grayscale = 1 byte = 8 bits) + "A1R5G5B5" == color_format or -- (A1R5G5B5 = 2 bytes = 16 bits) + "B8G8R8" == color_format or -- (B8G8R8 = 3 bytes = 24 bits) + "B8G8R8A8" == color_format -- (B8G8R8A8 = 4 bytes = 32 bits) + ) + local pixel_depth + if 0 ~= #properties.colormap then + pixel_depth = self.pixel_depth + else + pixel_depth = pixel_depth_by_color_format[color_format] + end + assert( nil ~= pixel_depth) + self.data = self.data + .. string.char(0, 0) -- X-origin + .. string.char(0, 0) -- Y-origin + .. string.char(self.width % 256, math.floor(self.width / 256)) -- width + .. string.char(self.height % 256, math.floor(self.height / 256)) -- height + .. string.char(pixel_depth) + .. string.char(0) -- image descriptor +end + +function image:encode_colormap(properties) + local colormap = properties.colormap + if 0 == #colormap then + return + end + local color_format = properties.color_format + assert ( + "A1R5G5B5" == color_format or + "B8G8R8" == color_format or + "B8G8R8A8" == color_format + ) + local colors = {} + if "A1R5G5B5" == color_format then + -- Sample depth rescaling is done according to the algorithm presented in: + -- + local max_sample_in = math.pow(2, 8) - 1 + local max_sample_out = math.pow(2, 5) - 1 + for i = 1,#colormap,1 do + local color = colormap[i] + local colorword = 32768 + + ((math.floor((color[1] * max_sample_out / max_sample_in) + 0.5)) * 1024) + + ((math.floor((color[2] * max_sample_out / max_sample_in) + 0.5)) * 32) + + ((math.floor((color[3] * max_sample_out / max_sample_in) + 0.5)) * 1) + local color_bytes = string.char( + colorword % 256, + math.floor(colorword / 256) + ) + colors[#colors + 1] = color_bytes + end + elseif "B8G8R8" == color_format then + for i = 1,#colormap,1 do + local color = colormap[i] + local color_bytes = string.char( + color[3], -- B + color[2], -- G + color[1] -- R + ) + colors[#colors + 1] = color_bytes + end + elseif "B8G8R8A8" == color_format then + for i = 1,#colormap,1 do + local color = colormap[i] + local color_bytes = string.char( + color[3], -- B + color[2], -- G + color[1], -- R + color[4] -- A + ) + colors[#colors + 1] = color_bytes + end + end + assert( 0 ~= #colors ) + self.data = self.data .. table.concat(colors) +end + +function image:encode_header(properties) + local color_format = properties.color_format + local colormap = properties.colormap + local compression = properties.compression + local colormap_type + local image_type + if "Y8" == color_format and "RAW" == compression then + colormap_type = 0 + image_type = 3 -- grayscale + elseif ( + "A1R5G5B5" == color_format or + "B8G8R8" == color_format or + "B8G8R8A8" == color_format + ) then + if "RAW" == compression then + if 0 ~= #colormap then + colormap_type = 1 + image_type = 1 -- colormapped RGB(A) + else + colormap_type = 0 + image_type = 2 -- RAW RGB(A) + end + elseif "RLE" == compression then + colormap_type = 0 + image_type = 10 -- RLE RGB + end + end + assert( nil ~= colormap_type ) + assert( nil ~= image_type ) + self.data = self.data + .. string.char(0) -- image id + .. string.char(colormap_type) + .. string.char(image_type) + self:encode_colormap_spec(properties) -- color map specification + self:encode_image_spec(properties) -- image specification + self:encode_colormap(properties) +end + +function image:encode_data(properties) + local color_format = properties.color_format + local colormap = properties.colormap + local compression = properties.compression + + local data_length_before = #self.data + if "Y8" == color_format and "RAW" == compression then + if 8 == self.pixel_depth then + self:encode_data_Y8_as_Y8_raw() + elseif 24 == self.pixel_depth then + self:encode_data_R8G8B8_as_Y8_raw() + end + elseif "A1R5G5B5" == color_format then + if 0 ~= #colormap then + if "RAW" == compression then + if 8 == self.pixel_depth then + self:encode_data_Y8_as_Y8_raw() + end + end + else + if "RAW" == compression then + self:encode_data_R8G8B8_as_A1R5G5B5_raw() + elseif "RLE" == compression then + self:encode_data_R8G8B8_as_A1R5G5B5_rle() + end + end + elseif "B8G8R8" == color_format then + if 0 ~= #colormap then + if "RAW" == compression then + if 8 == self.pixel_depth then + self:encode_data_Y8_as_Y8_raw() + end + end + else + if "RAW" == compression then + self:encode_data_R8G8B8_as_B8G8R8_raw() + elseif "RLE" == compression then + self:encode_data_R8G8B8_as_B8G8R8_rle() + end + end + elseif "B8G8R8A8" == color_format then + if 0 ~= #colormap then + if "RAW" == compression then + if 8 == self.pixel_depth then + self:encode_data_Y8_as_Y8_raw() + end + end + else + if "RAW" == compression then + self:encode_data_R8G8B8A8_as_B8G8R8A8_raw() + elseif "RLE" == compression then + self:encode_data_R8G8B8A8_as_B8G8R8A8_rle() + end + end + end + local data_length_after = #self.data + assert( + data_length_after ~= data_length_before, + "No data encoded for color format: " .. color_format + ) +end + +function image:encode_data_Y8_as_Y8_raw() + assert(8 == self.pixel_depth) + local raw_pixels = {} + for _, row in ipairs(self.pixels) do + for _, pixel in ipairs(row) do + local raw_pixel = string.char(pixel[1]) + raw_pixels[#raw_pixels + 1] = raw_pixel + end + end + self.data = self.data .. table.concat(raw_pixels) +end + +function image:encode_data_R8G8B8_as_Y8_raw() + assert(24 == self.pixel_depth) + local raw_pixels = {} + for _, row in ipairs(self.pixels) do + for _, pixel in ipairs(row) do + -- the HSP RGB to brightness formula is + -- sqrt( 0.299 r² + .587 g² + .114 b² ) + -- see + local gray = math.floor( + math.sqrt( + 0.299 * pixel[1]^2 + + 0.587 * pixel[2]^2 + + 0.114 * pixel[3]^2 + ) + 0.5 + ) + local raw_pixel = string.char(gray) + raw_pixels[#raw_pixels + 1] = raw_pixel + end + end + self.data = self.data .. table.concat(raw_pixels) +end + +function image:encode_data_R8G8B8_as_A1R5G5B5_raw() + assert(24 == self.pixel_depth) + local raw_pixels = {} + -- Sample depth rescaling is done according to the algorithm presented in: + -- + local max_sample_in = math.pow(2, 8) - 1 + local max_sample_out = math.pow(2, 5) - 1 + for _, row in ipairs(self.pixels) do + for _, pixel in ipairs(row) do + local colorword = 32768 + + ((math.floor((pixel[1] * max_sample_out / max_sample_in) + 0.5)) * 1024) + + ((math.floor((pixel[2] * max_sample_out / max_sample_in) + 0.5)) * 32) + + ((math.floor((pixel[3] * max_sample_out / max_sample_in) + 0.5)) * 1) + local raw_pixel = string.char(colorword % 256, math.floor(colorword / 256)) + raw_pixels[#raw_pixels + 1] = raw_pixel + end + end + self.data = self.data .. table.concat(raw_pixels) +end + +function image:encode_data_R8G8B8_as_A1R5G5B5_rle() + assert(24 == self.pixel_depth) + local colorword = nil + local previous_r = nil + local previous_g = nil + local previous_b = nil + local raw_pixel = '' + local raw_pixels = {} + local count = 1 + local packets = {} + local raw_packet = '' + local rle_packet = '' + -- Sample depth rescaling is done according to the algorithm presented in: + -- + local max_sample_in = math.pow(2, 8) - 1 + local max_sample_out = math.pow(2, 5) - 1 + for _, row in ipairs(self.pixels) do + for _, pixel in ipairs(row) do + if pixel[1] ~= previous_r or pixel[2] ~= previous_g or pixel[3] ~= previous_b or count == 128 then + if nil ~= previous_r then + colorword = 32768 + + ((math.floor((previous_r * max_sample_out / max_sample_in) + 0.5)) * 1024) + + ((math.floor((previous_g * max_sample_out / max_sample_in) + 0.5)) * 32) + + ((math.floor((previous_b * max_sample_out / max_sample_in) + 0.5)) * 1) + if 1 == count then + -- remember pixel verbatim for raw encoding + raw_pixel = string.char(colorword % 256, math.floor(colorword / 256)) + raw_pixels[#raw_pixels + 1] = raw_pixel + if 128 == #raw_pixels then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + else + -- encode raw pixels, if any + if #raw_pixels > 0 then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + -- RLE encoding + rle_packet = string.char(128 + count - 1, colorword % 256, math.floor(colorword / 256)) + packets[#packets +1] = rle_packet + end + end + count = 1 + previous_r = pixel[1] + previous_g = pixel[2] + previous_b = pixel[3] + else + count = count + 1 + end + end + end + colorword = 32768 + + ((math.floor((previous_r * max_sample_out / max_sample_in) + 0.5)) * 1024) + + ((math.floor((previous_g * max_sample_out / max_sample_in) + 0.5)) * 32) + + ((math.floor((previous_b * max_sample_out / max_sample_in) + 0.5)) * 1) + if 1 == count then + raw_pixel = string.char(colorword % 256, math.floor(colorword / 256)) + raw_pixels[#raw_pixels + 1] = raw_pixel + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + else + -- encode raw pixels, if any + if #raw_pixels > 0 then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + -- RLE encoding + rle_packet = string.char(128 + count - 1, colorword % 256, math.floor(colorword / 256)) + packets[#packets +1] = rle_packet + end + self.data = self.data .. table.concat(packets) +end + +function image:encode_data_R8G8B8_as_B8G8R8_raw() + assert(24 == self.pixel_depth) + local raw_pixels = {} + for _, row in ipairs(self.pixels) do + for _, pixel in ipairs(row) do + local raw_pixel = string.char(pixel[3], pixel[2], pixel[1]) + raw_pixels[#raw_pixels + 1] = raw_pixel + end + end + self.data = self.data .. table.concat(raw_pixels) +end + +function image:encode_data_R8G8B8_as_B8G8R8_rle() + assert(24 == self.pixel_depth) + local previous_r = nil + local previous_g = nil + local previous_b = nil + local raw_pixel = '' + local raw_pixels = {} + local count = 1 + local packets = {} + local raw_packet = '' + local rle_packet = '' + for _, row in ipairs(self.pixels) do + for _, pixel in ipairs(row) do + if pixel[1] ~= previous_r or pixel[2] ~= previous_g or pixel[3] ~= previous_b or count == 128 then + if nil ~= previous_r then + if 1 == count then + -- remember pixel verbatim for raw encoding + raw_pixel = string.char(previous_b, previous_g, previous_r) + raw_pixels[#raw_pixels + 1] = raw_pixel + if 128 == #raw_pixels then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + else + -- encode raw pixels, if any + if #raw_pixels > 0 then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + -- RLE encoding + rle_packet = string.char(128 + count - 1, previous_b, previous_g, previous_r) + packets[#packets +1] = rle_packet + end + end + count = 1 + previous_r = pixel[1] + previous_g = pixel[2] + previous_b = pixel[3] + else + count = count + 1 + end + end + end + if 1 == count then + raw_pixel = string.char(previous_b, previous_g, previous_r) + raw_pixels[#raw_pixels + 1] = raw_pixel + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + else + -- encode raw pixels, if any + if #raw_pixels > 0 then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + -- RLE encoding + rle_packet = string.char(128 + count - 1, previous_b, previous_g, previous_r) + packets[#packets +1] = rle_packet + end + self.data = self.data .. table.concat(packets) +end + +function image:encode_data_R8G8B8A8_as_B8G8R8A8_raw() + assert(32 == self.pixel_depth) + local raw_pixels = {} + for _, row in ipairs(self.pixels) do + for _, pixel in ipairs(row) do + local raw_pixel = string.char(pixel[3], pixel[2], pixel[1], pixel[4]) + raw_pixels[#raw_pixels + 1] = raw_pixel + end + end + self.data = self.data .. table.concat(raw_pixels) +end + +function image:encode_data_R8G8B8A8_as_B8G8R8A8_rle() + assert(32 == self.pixel_depth) + local previous_r = nil + local previous_g = nil + local previous_b = nil + local previous_a = nil + local raw_pixel = '' + local raw_pixels = {} + local count = 1 + local packets = {} + local raw_packet = '' + local rle_packet = '' + for _, row in ipairs(self.pixels) do + for _, pixel in ipairs(row) do + if pixel[1] ~= previous_r or pixel[2] ~= previous_g or pixel[3] ~= previous_b or pixel[4] ~= previous_a or count == 128 then + if nil ~= previous_r then + if 1 == count then + -- remember pixel verbatim for raw encoding + raw_pixel = string.char(previous_b, previous_g, previous_r, previous_a) + raw_pixels[#raw_pixels + 1] = raw_pixel + if 128 == #raw_pixels then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + else + -- encode raw pixels, if any + if #raw_pixels > 0 then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + -- RLE encoding + rle_packet = string.char(128 + count - 1, previous_b, previous_g, previous_r, previous_a) + packets[#packets +1] = rle_packet + end + end + count = 1 + previous_r = pixel[1] + previous_g = pixel[2] + previous_b = pixel[3] + previous_a = pixel[4] + else + count = count + 1 + end + end + end + if 1 == count then + raw_pixel = string.char(previous_b, previous_g, previous_r, previous_a) + raw_pixels[#raw_pixels + 1] = raw_pixel + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + else + -- encode raw pixels, if any + if #raw_pixels > 0 then + raw_packet = string.char(#raw_pixels - 1) + packets[#packets + 1] = raw_packet + for i=1, #raw_pixels do + packets[#packets +1] = raw_pixels[i] + end + raw_pixels = {} + end + -- RLE encoding + rle_packet = string.char(128 + count - 1, previous_b, previous_g, previous_r, previous_a) + packets[#packets +1] = rle_packet + end + self.data = self.data .. table.concat(packets) +end + +function image:encode_footer() + self.data = self.data + .. string.char(0, 0, 0, 0) -- extension area offset + .. string.char(0, 0, 0, 0) -- developer area offset + .. "TRUEVISION-XFILE" + .. "." + .. string.char(0) +end + +function image:encode(properties) + self.data = "" + self:encode_header(properties) -- header + -- no color map and image id data + self:encode_data(properties) -- encode data + -- no extension or developer area + self:encode_footer() -- footer +end + +function image:save(filename, properties) + local properties = properties or {} + properties.colormap = properties.colormap or {} + properties.compression = properties.compression or "RAW" + + self.pixel_depth = #self.pixels[1][1] * 8 + + local color_format_defaults_by_pixel_depth = { + [8] = "Y8", + [24] = "B8G8R8", + [32] = "B8G8R8A8", + } + if nil == properties.color_format then + if 0 ~= #properties.colormap then + properties.color_format = + color_format_defaults_by_pixel_depth[ + #properties.colormap[1] * 8 + ] + else + properties.color_format = + color_format_defaults_by_pixel_depth[ + self.pixel_depth + ] + end + end + assert( nil ~= properties.color_format ) + + self:encode(properties) + + local f = assert(io.open(filename, "wb")) + f:write(self.data) + f:close() +end + +tga_encoder.image = image diff --git a/mods/CORE/tga_encoder/mod.conf b/mods/CORE/tga_encoder/mod.conf new file mode 100644 index 000000000..d65aca884 --- /dev/null +++ b/mods/CORE/tga_encoder/mod.conf @@ -0,0 +1,2 @@ +name = tga_encoder +description = A TGA Encoder written in Lua without the use of external Libraries. From 6df9027971b9bdc71041b497d6027f50034da68f Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 12:54:31 +0000 Subject: [PATCH 479/521] Fleckenstein's fix for mcl2 --- mods/ENTITIES/extra_mobs/glow_squid_items.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/extra_mobs/glow_squid_items.lua b/mods/ENTITIES/extra_mobs/glow_squid_items.lua index 6895ee5ec..78370d9a8 100644 --- a/mods/ENTITIES/extra_mobs/glow_squid_items.lua +++ b/mods/ENTITIES/extra_mobs/glow_squid_items.lua @@ -86,7 +86,10 @@ minetest.register_entity("extra_mobs:glow_item_frame_map", { }, on_activate = function(self, staticdata) self.id = staticdata - self.object:set_properties({textures = {mcl_maps.load_map(self.id)}}) + mcl_maps.load_map(self.id, function(texture) + -- will not crash even if self.object is invalid by now + self.object:set_properties({textures = {texture}}) + end) end, get_staticdata = function(self) return self.id From 80a7ab971af8ce6cdb7d5381940f09d268e71f6b Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 21:59:41 +0000 Subject: [PATCH 480/521] Move glowing itemframe to itemframe and glowing ink sac to glow_squid --- mods/ENTITIES/extra_mobs/glow_squid_items.lua | 371 ------------------ 1 file changed, 371 deletions(-) delete mode 100644 mods/ENTITIES/extra_mobs/glow_squid_items.lua diff --git a/mods/ENTITIES/extra_mobs/glow_squid_items.lua b/mods/ENTITIES/extra_mobs/glow_squid_items.lua deleted file mode 100644 index 78370d9a8..000000000 --- a/mods/ENTITIES/extra_mobs/glow_squid_items.lua +++ /dev/null @@ -1,371 +0,0 @@ -local S = minetest.get_translator("extra_mobs") - -minetest.register_craftitem("extra_mobs:glow_ink_sac", { - description = S("Glow Ink Sac"), - _doc_items_longdesc = S("Use it to craft the Glow Item Frame."), - _doc_items_usagehelp = S("Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame."), - inventory_image = "extra_mobs_glow_ink_sac.png", - groups = { craftitem = 1 }, -}) - - --------------------- - ---[[This mod is originally by Zeg9, but heavily modified for MineClone 2. - -Model created by 22i, licensed under the -GNU GPLv3 . - -Source: -]] - - -local VISUAL_SIZE = 0.3 - -minetest.register_entity("extra_mobs:glow_item_frame_item",{ - hp_max = 1, - visual = "wielditem", - visual_size = {x=VISUAL_SIZE, y=VISUAL_SIZE}, - physical = false, - pointable = false, - textures = { "blank.png" }, - _texture = "blank.png", - _scale = 1, - glow = minetest.LIGHT_MAX, - - on_activate = function(self, staticdata) - if staticdata ~= nil and staticdata ~= "" then - local data = staticdata:split(';') - if data and data[1] and data[2] then - self._nodename = data[1] - self._texture = data[2] - if data[3] then - self._scale = data[3] - else - self._scale = 1 - end - end - end - if self._texture then - self.object:set_properties({ - textures={self._texture}, - visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, - }) - end - end, - get_staticdata = function(self) - if not self then return end - if self._nodename and self._texture then - local ret = self._nodename .. ';' .. self._texture - if self._scale then - ret = ret .. ';' .. tostring(self._scale) - end - return ret - end - return "" - end, - - _update_texture = function(self) - if self._texture then - self.object:set_properties({ - textures={self._texture}, - visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, - }) - end - end, -}) - -minetest.register_entity("extra_mobs:glow_item_frame_map", { - initial_properties = { - visual = "upright_sprite", - visual_size = {x = 1, y = 1}, - pointable = false, - physical = false, - collide_with_objects = false, - textures = {"blank.png"}, - }, - on_activate = function(self, staticdata) - self.id = staticdata - mcl_maps.load_map(self.id, function(texture) - -- will not crash even if self.object is invalid by now - self.object:set_properties({textures = {texture}}) - end) - end, - get_staticdata = function(self) - return self.id - end, -}) - -local facedir = {} -facedir[0] = {x=0,y=0,z=1} -facedir[1] = {x=1,y=0,z=0} -facedir[2] = {x=0,y=0,z=-1} -facedir[3] = {x=-1,y=0,z=0} - -local remove_item_entity = function(pos, node) - if node.name == "extra_mobs:glow_item_frame" then - for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do - local entity = obj:get_luaentity() - if entity and (entity.name == "extra_mobs:glow_item_frame_item" or entity.name == "extra_mobs:glow_item_frame_map") then - obj:remove() - end - end - end -end - - -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 == "extra_mobs:glow_item_frame" then - 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 - end - local yaw = math.pi*2 - param2 * math.pi/2 - local map_id = item:get_meta():get_string("mcl_maps:id") - if map_id == "" then - local e = minetest.add_entity(pos, "extra_mobs:glow_item_frame_item") - local lua = e:get_luaentity() - lua._nodename = node.name - local itemname = item:get_name() - if itemname == "" or itemname == nil then - lua._texture = "blank.png" - lua._scale = 1 - else - lua._texture = itemname - local def = minetest.registered_items[itemname] - lua._scale = def and def.wield_scale and def.wield_scale.x or 1 - end - lua:_update_texture() - if node.name == "extra_mobs:glow_item_frame" then - e:set_yaw(yaw) - end - else - local e = minetest.add_entity(pos, "extra_mobs:glow_item_frame_map", map_id) - e:set_yaw(yaw) - end - end -end - -local drop_item = function(pos, node, meta, clicker) - local cname = "" - if clicker and clicker:is_player() then - cname = clicker:get_player_name() - end - if node.name == "extra_mobs:glow_item_frame" and not minetest.is_creative_enabled(cname) then - local inv = meta:get_inventory() - local item = inv:get_stack("main", 1) - if not item:is_empty() then - minetest.add_item(pos, item) - end - end - meta:set_string("infotext", "") - remove_item_entity(pos, node) -end - -minetest.register_node("extra_mobs:glow_item_frame",{ - description = S("Glow Item Frame"), - _tt_help = S("Can hold an item and glows"), - _doc_items_longdesc = S("Glow 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", - is_ground_content = false, - mesh = "extra_mobs_glow_item_frame.obj", - selection_box = { type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5} }, - collision_box = { type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5} }, - tiles = {"extra_mobs_glow_item_frame_border.png", "extra_mobs_glow_item_frame_border.png", "extra_mobs_glow_item_frame_border.png", "extra_mobs_glow_item_frame_border.png", "extra_mobs_glow_item_frame_border.png", "extra_mobs_glow_item_frame_border.png"}, - inventory_image = "extra_mobs_glow_item_frame_item.png", - wield_image = "extra_mobs_glow_item_frame.png", - paramtype = "light", - paramtype2 = "facedir", - - --FIXME: should only be glowing, no light source. How is that possible with a node? - light_source = 1, - - sunlight_propagates = true, - groups = { dig_immediate=3,deco_block=1,dig_by_piston=1,container=7,attached_node_facedir=1 }, - sounds = mcl_sounds.node_sound_defaults(), - node_placement_prediction = "", - on_timer = function(pos) - local inv = minetest.get_meta(pos):get_inventory() - local stack = inv:get_stack("main", 1) - local itemname = stack:get_name() - if minetest.get_item_group(itemname, "clock") > 0 then - local new_name = "mcl_clock:clock_" .. (mcl_worlds.clock_works(pos) and mcl_clock.old_time or mcl_clock.random_frame) - if itemname ~= new_name then - stack:set_name(new_name) - inv:set_stack("main", 1, stack) - local node = minetest.get_node(pos) - update_item_entity(pos, node, node.param2) - end - minetest.get_node_timer(pos):start(1.0) - end - end, - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then - return itemstack - end - - -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - 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(pointed_thing.under, node, placer, itemstack) or itemstack - end - end - - return minetest.item_place(itemstack, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) - end, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - inv:set_size("main", 1) - end, - on_rightclick = function(pos, node, clicker, itemstack) - if not itemstack then - return - end - local pname = clicker:get_player_name() - if minetest.is_protected(pos, pname) then - minetest.record_protection_violation(pos, pname) - return - end - local meta = minetest.get_meta(pos) - drop_item(pos, node, meta, clicker) - local inv = meta:get_inventory() - if itemstack:is_empty() then - remove_item_entity(pos, node) - meta:set_string("infotext", "") - inv:set_stack("main", 1, "") - return itemstack - end - local put_itemstack = ItemStack(itemstack) - put_itemstack:set_count(1) - if minetest.get_item_group(itemname, "compass") > 0 then - put_itemstack:set_name("mcl_compass:" .. mcl_compass.get_compass_image(pos, minetest.dir_to_yaw(minetest.facedir_to_dir(node.param2)))) - end - if minetest.get_item_group(itemname, "clock") > 0 then - minetest.get_node_timer(pos):start(1.0) - end - inv:set_stack("main", 1, put_itemstack) - update_item_entity(pos, node) - -- Add node infotext when item has been named - local imeta = itemstack:get_meta() - local iname = imeta:get_string("name") - if iname then - meta:set_string("infotext", iname) - end - - if not minetest.is_creative_enabled(clicker:get_player_name()) then - itemstack:take_item() - end - return itemstack - 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, - on_destruct = function(pos) - local meta = minetest.get_meta(pos) - local node = minetest.get_node(pos) - drop_item(pos, node, meta) - end, - 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 == "extra_mobs:glow_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 == "extra_mobs:glow_item_frame_item" then - update_item_entity(pos, node, (node.param2+1) % 4) - break - end - end - end - return - elseif mode == screwdriver.ROTATE_AXIS then - return false - end - end, - -}) - -minetest.register_craft({ - type = "shapeless", - output = 'extra_mobs:glow_item_frame', - recipe = {'mcl_itemframes:item_frame', 'extra_mobs:glow_ink_sac'}, -}) - -minetest.register_lbm({ - label = "Update legacy item frames", - name = "extra_mobs:update_legacy_glow_item_frames", - nodenames = {"extra_mobs:glow_frame"}, - action = function(pos, node) - -- Swap legacy node, then respawn entity - node.name = "extra_mobs:glow_item_frame" - local meta = minetest.get_meta(pos) - local item = meta:get_string("item") - minetest.swap_node(pos, node) - if item ~= "" then - local itemstack = ItemStack(minetest.deserialize(meta:get_string("itemdata"))) - local inv = meta:get_inventory() - inv:set_size("main", 1) - if not itemstack:is_empty() then - inv:set_stack("main", 1, itemstack) - end - end - update_item_entity(pos, node) - end, -}) - --- FIXME: Item entities can get destroyed by /clearobjects -minetest.register_lbm({ - label = "Respawn item frame item entities", - name = "extra_mobs:respawn_entities", - nodenames = {"extra_mobs:glow_item_frame"}, - run_at_every_load = true, - action = function(pos, node) - update_item_entity(pos, node) - end, -}) - -minetest.register_alias("extra_mobs:glow_frame", "extra_mobs:glow_item_frame") - --------------------- From 7f1c09de594d63c7979ea4d28b6eb4b4aec2e731 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:00:52 +0000 Subject: [PATCH 481/521] Move glowing itemframes --- mods/ENTITIES/extra_mobs/init.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/init.lua b/mods/ENTITIES/extra_mobs/init.lua index 28fab0eeb..af35e1c3f 100644 --- a/mods/ENTITIES/extra_mobs/init.lua +++ b/mods/ENTITIES/extra_mobs/init.lua @@ -21,8 +21,3 @@ dofile(path .. "/cod.lua") dofile(path .. "/salmon.lua") dofile(path .. "/dolphin.lua") dofile(path .. "/glow_squid.lua") - ---Items -dofile(path .. "/glow_squid_items.lua") - - From 7b5cc25c6c97a77b01ff54121bd661a73095a84e Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:02:13 +0000 Subject: [PATCH 482/521] Move glowing ink --- mods/ENTITIES/extra_mobs/glow_squid.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mods/ENTITIES/extra_mobs/glow_squid.lua b/mods/ENTITIES/extra_mobs/glow_squid.lua index 2169e1ddb..41c530e63 100644 --- a/mods/ENTITIES/extra_mobs/glow_squid.lua +++ b/mods/ENTITIES/extra_mobs/glow_squid.lua @@ -231,3 +231,13 @@ water) -- spawn egg mobs:register_egg("extra_mobs:glow_squid", S("Glow Squid"), "extra_mobs_spawn_icon_glow_squid.png", 0) + +-- dropped item (used to craft glowing itemframe) + +minetest.register_craftitem("extra_mobs:glow_ink_sac", { + description = S("Glow Ink Sac"), + _doc_items_longdesc = S("Use it to craft the Glow Item Frame."), + _doc_items_usagehelp = S("Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame."), + inventory_image = "extra_mobs_glow_ink_sac.png", + groups = { craftitem = 1 }, +}) From a97d6ec20d33e3e2f45a9dfdeb709245961667dd Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:04:15 +0000 Subject: [PATCH 483/521] Move glowing itemframes --- mods/ITEMS/mcl_itemframes/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_itemframes/mod.conf b/mods/ITEMS/mcl_itemframes/mod.conf index ff09c3bcc..c8f25009c 100644 --- a/mods/ITEMS/mcl_itemframes/mod.conf +++ b/mods/ITEMS/mcl_itemframes/mod.conf @@ -1,3 +1,3 @@ name = mcl_itemframes -depends = mcl_core, mcl_sounds, mcl_compass, mcl_maps +depends = mcl_core, mcl_sounds, mcl_compass, mcl_maps, extra_mobs optional_depends = screwdriver From 3ce000918135c13507207f7727c4b703dd797d63 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:05:49 +0000 Subject: [PATCH 484/521] Move glowing itemframes --- mods/ENTITIES/extra_mobs/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/extra_mobs/mod.conf b/mods/ENTITIES/extra_mobs/mod.conf index 5cbcb17ae..06298dd4d 100644 --- a/mods/ENTITIES/extra_mobs/mod.conf +++ b/mods/ENTITIES/extra_mobs/mod.conf @@ -1,3 +1,3 @@ name = extra_mobs -depends = mcl_mobs, mobs_mc, mcl_compass, mcl_core, mcl_maps +depends = mcl_mobs, mobs_mc optional_depends = mc_warped_fungus_stick, mc_sweet_berry From 493fb95e52f63457f429162d78427d59bf72a41d Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:07:30 +0000 Subject: [PATCH 485/521] Move glowing itemframe --- .../models/extra_mobs_glow_item_frame.obj | 156 ------------------ 1 file changed, 156 deletions(-) delete mode 100644 mods/ENTITIES/extra_mobs/models/extra_mobs_glow_item_frame.obj diff --git a/mods/ENTITIES/extra_mobs/models/extra_mobs_glow_item_frame.obj b/mods/ENTITIES/extra_mobs/models/extra_mobs_glow_item_frame.obj deleted file mode 100644 index d0a5b0c5f..000000000 --- a/mods/ENTITIES/extra_mobs/models/extra_mobs_glow_item_frame.obj +++ /dev/null @@ -1,156 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'itemframe1facedir.blend' -# www.blender.org -mtllib itemframe1facedir.mtl -o right.frame_Cube.005 -v -0.313413 -0.313413 0.435326 -v -0.313413 0.313413 0.435326 -v -0.313413 -0.313413 0.498008 -v -0.313413 0.313413 0.498008 -v -0.376095 -0.313413 0.435326 -v -0.376095 0.313413 0.435326 -v -0.376095 -0.313413 0.498008 -v -0.376095 0.313413 0.498008 -vt 0.875000 0.812500 -vt 0.812500 0.812500 -vt 0.812500 0.187500 -vt 0.875000 0.187500 -vt 1.000000 0.812500 -vt 0.937500 0.812500 -vt 0.937500 0.187500 -vt 1.000000 0.187500 -vt -0.000000 0.937500 -vt 0.062500 0.937500 -vt 0.062500 1.000000 -vt -0.000000 1.000000 -vn 1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn -1.000000 0.000000 0.000000 -vn -0.000000 0.000000 -1.000000 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 1.000000 0.000000 -usemtl None -s off -f 2/1/1 4/2/1 3/3/1 1/4/1 -f 4/1/2 8/2/2 7/3/2 3/4/2 -f 8/5/3 6/6/3 5/7/3 7/8/3 -f 6/1/4 2/2/4 1/3/4 5/4/4 -f 1/9/5 3/10/5 7/11/5 5/12/5 -f 6/9/6 8/10/6 4/11/6 2/12/6 -o left.frame_Cube.004 -v 0.376095 -0.313413 0.435326 -v 0.376095 0.313413 0.435326 -v 0.376095 -0.313413 0.498008 -v 0.376095 0.313413 0.498008 -v 0.313413 -0.313413 0.435326 -v 0.313413 0.313413 0.435326 -v 0.313413 -0.313413 0.498008 -v 0.313413 0.313413 0.498008 -vt 0.875000 0.812500 -vt 0.812500 0.812500 -vt 0.812500 0.187500 -vt 0.875000 0.187500 -vt 1.000000 0.812500 -vt 0.937500 0.812500 -vt 0.937500 0.187500 -vt 1.000000 0.187500 -vt -0.000000 0.937500 -vt 0.062500 0.937500 -vt 0.062500 1.000000 -vt -0.000000 1.000000 -vn 1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 1.000000 0.000000 -usemtl None -s off -f 10/13/7 12/14/7 11/15/7 9/16/7 -f 12/13/8 16/14/8 15/15/8 11/16/8 -f 16/17/9 14/18/9 13/19/9 15/20/9 -f 14/13/10 10/14/10 9/15/10 13/16/10 -f 9/21/11 11/22/11 15/23/11 13/24/11 -f 14/21/12 16/22/12 12/23/12 10/24/12 -o lower.frame_Cube.003 -v 0.376095 -0.376095 0.435326 -v 0.376095 -0.313413 0.435326 -v 0.376095 -0.376095 0.498008 -v 0.376095 -0.313413 0.498008 -v -0.376095 -0.376095 0.435326 -v -0.376095 -0.313413 0.435326 -v -0.376095 -0.376095 0.498008 -v -0.376095 -0.313413 0.498008 -vt 0.187500 0.187500 -vt 0.125000 0.187500 -vt 0.125000 0.125000 -vt 0.187500 0.125000 -vt 0.875000 0.187500 -vt 0.875000 0.125000 -vt 0.812500 0.187500 -vt 0.812500 0.125000 -vt 0.875000 0.937500 -vt 0.875000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 0.937500 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn -1.000000 0.000000 0.000000 -vn -0.000000 0.000000 -1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -usemtl None -s off -f 18/25/13 20/26/13 19/27/13 17/28/13 -f 20/29/14 24/26/14 23/27/14 19/30/14 -f 24/29/15 22/31/15 21/32/15 23/30/15 -f 22/29/16 18/26/16 17/27/16 21/30/16 -f 17/33/17 19/34/17 23/35/17 21/36/17 -f 22/30/18 24/29/18 20/26/18 18/27/18 -o upper.frame_Cube.002 -v 0.376095 0.313413 0.435326 -v 0.376095 0.376095 0.435326 -v 0.376095 0.313413 0.498008 -v 0.376095 0.376095 0.498008 -v -0.376095 0.313413 0.435326 -v -0.376095 0.376095 0.435326 -v -0.376095 0.313413 0.498008 -v -0.376095 0.376095 0.498008 -vt 0.187500 0.875000 -vt 0.125000 0.875000 -vt 0.125000 0.812500 -vt 0.187500 0.812500 -vt 0.875000 0.875000 -vt 0.875000 0.812500 -vt 0.812500 0.875000 -vt 0.812500 0.812500 -vt 0.875000 0.937500 -vt 0.875000 1.000000 -vt 0.125000 1.000000 -vt 0.125000 0.937500 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn -1.000000 0.000000 0.000000 -vn -0.000000 0.000000 -1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -usemtl None -s off -f 26/37/19 28/38/19 27/39/19 25/40/19 -f 28/41/20 32/38/20 31/39/20 27/42/20 -f 32/41/21 30/43/21 29/44/21 31/42/21 -f 30/41/22 26/38/22 25/39/22 29/42/22 -f 25/45/23 27/46/23 31/47/23 29/48/23 -f 30/48/24 32/38/24 28/41/24 26/45/24 -o background_Plane -v 0.313413 -0.313413 0.466667 -v -0.313413 -0.313413 0.466667 -v 0.313413 0.313413 0.466667 -v -0.313413 0.313413 0.466667 -vt 0.187500 0.187500 -vt 0.812500 0.187500 -vt 0.812500 0.812500 -vt 0.187500 0.812500 -vn -0.000000 0.000000 -1.000000 -usemtl None -s off -f 33/49/25 34/50/25 36/51/25 35/52/25 From 36de9f53b74df306413b5aa18f426e8541895f10 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:08:12 +0000 Subject: [PATCH 486/521] Move glowing itemframe --- .../textures/extra_mobs_glow_item_frame.png | Bin 6285 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame.png diff --git a/mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame.png b/mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame.png deleted file mode 100644 index e83b4e0608b452b5b3033bbb4c1bd0a7c594b753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6285 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 Ay#N3J From ddcb7f141f520e3db9f481ce02aa1b12405e2def Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:08:41 +0000 Subject: [PATCH 487/521] Move glowing itemframe --- .../extra_mobs_glow_item_frame_border.png | Bin 6285 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame_border.png diff --git a/mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame_border.png b/mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame_border.png deleted file mode 100644 index e83b4e0608b452b5b3033bbb4c1bd0a7c594b753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6285 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 Ay#N3J From b084071954881c8a58eacb12b8c4b3a2ffd734b3 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:09:13 +0000 Subject: [PATCH 488/521] Move glowing itemframe --- .../textures/extra_mobs_glow_item_frame_item.png | Bin 6285 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame_item.png diff --git a/mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame_item.png b/mods/ENTITIES/extra_mobs/textures/extra_mobs_glow_item_frame_item.png deleted file mode 100644 index e83b4e0608b452b5b3033bbb4c1bd0a7c594b753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6285 zcmeHLdpwls9v>v-Qp%;mY8rIejJcQ@Gn2{6h{3qaU1r{Shl#m(XEX>!6j~CkO|dDJ zlvI>NHk+ag(uKkzRvWtMuqma^J42nik z&UPBAda4KnLW5yXcZYv9WuI9y;qS#G?^y_h^3fPiABj6liWEUYE-xHJN}@#|5{%+; z5s0Xc6W+X>(WUBdZ?1r5TwWSs&^88bHL$wE-q~4m=+VQlo%}|Wsuu%$Y+^*}y}37} zr0sfij;2k^tMdZ~8Ou|GE)w=1>WY0fH%{AdsI@)VRr$tZFU zw`K^plX%3pOwR>qQVecjUSFy`%f)k#TUzJ z<$&)y3mZq$D(TiW%DcS-CG}p*vlP(z23`(#i<_he6jPcBby4~r-`zc`bz|vX_E|+2 zLBL&&t*19Aztw38a|?4eB|J(OSFK4*U3s8r$-=@V%0$D>eKBE2$CgB+&_yS=+)$sV zSRX8~yrq`pY9;9}+Pd@cJN*lO*ny&b%4$wjj8^-dwzigC`E-BDXw=D5$kI+kK+<_y zZKkpkHS-T``*NJq3@g=F46JcIHQQPtTKKK2UI-sSVb}kZ<>81>mkeQq$ z?Mlc#yk+jHgl$>px}%?O4Z*A)*A5r`vR#w>egBX5%Yd5+xyeS$PWN4Q)YNsGZ(^&3 z&MMrw1lqk2aM(lm1-dklG-m~v&EMGmD3jutLD9KdRN3daJb?a#k2|q-U4N?Hx8B94 zkF3>j-%$EmSI>fX`tY3M$j-nqn&jDSz-3w3A>9)$_r^+Y{jxXLDLo^$Y}wi*5(2t5>b9mr~EaVLeN*c=+r4 zz9xglV(YH`!Oj{(-Pp0lPPMk7`~0+u4S2#O5!uT>X))Er=vCcMqZ9rU8*A-sDo*c< zJWuxTZE64Mn6_zqG}QgmR;OaZG1tBME!gU#j{D!d>DqHc(~(623jzCH= zpZ&V__^5wvXLQQd!ee(I9vjk(&me^=4%A;47A(9!@sg+UeaTpN-QIKCPbXHxpInxNk1^qXd7H%otp?XrqWr{3683F$!7v$@y4d4PX$z-@4?MLFlr!CT)9a^jGi zM;*h9H;Gub{uf_`Mly~+zOA&dgJkJ!7_V{7o?U(jd9$kIh`aNZoD0WVUV64>*>-eh zd!??#drHBAo`l=|O5-~pv}(lplhU4%jrpb+&7K~U<3%QC@)vCwbQb=)zINUE-gk-> zz z9@pL@eXwB0K;-ToYvW6c_Qld}r(JalpF5kM``vAakj8PH?o%VXH#ijA1-V^0cQz?a zOm&_CJ<(?O*8H(c<>uJa!zC5iiXX3Z=si5=UO;T)tIadBvRIHO%!x_6(8GJm)qcO& zpsugDK~-(vL#|_#l3&f5xOQ!$r*7jj$4mXZnud7kn~p!Jsw$|f8B{s07kp!m;n7D{ zo;4GmYVq-o<{g>akYHXs+;yT|8`er6n$+8{j{j9a!27ceW%q`bKFTU?&>W^c_K z#DO60-d3DKXcd1c;I<+=@Q13Pd0SHAzh7c(ej}ww_s;N%lbeQ)RP7ixegCu7aqlKy z^;!0p#f?~gpGIFUv-80P7t^wXCG+=d?c67^?z1ahX?QWhtkQJY>6X*7N2#{#;+A>` z{qlpw^IWvHdohb*m;846di0L+b){v$(_X9DP~uFkMEcdGux3XXBdx7J#E zB^&44#l5vDwX!x#4luz&rUi-`Wsg zfbYofZI%s#N|{G|(LD&2?X{r^W%uH`ySi4N+q`M-$Qy;w8mMq*{zVXhn48Cg4^bbc z6BQ8h%~%{E8#IgJi{L{Rfv~iS60v|VP=aKGAv^&M^}PBb3d!TpP~Jo)mMO9ULwWWw z5aSgr zgU6#`1X>&|kg%fA0dVv>UniUEixlJJBAq>Pir7Dh^FC=@)7oFa!u0oy3JbIO6N zEvFYtI2Z=pAi(p10T?_MOGabyXgmco-5wrgGCx`i#8WE5dSaqjA`H$9i{bM>vk*&c zH-7T>mlk4A_+AF%4vK}55CGb41O*bK=}txAk>cq-BgLSsOCEPPhl_!Ol6#(RW5-~+ zezcLv7{cR=8hFkVpXAoNZ1*li6%Gnm{(kqsitRJeo)`Cv))t znPPzjrct;+Jh&2A;nSm%QE^}@0-4O=u*v3de&Ef~1R@cOW|IK|+MG*b;W-=%g=9V% zjcgsL)~*a13U7v$lgoQt!&wrp5aPq-#S?IZQt_uDPaYrikg#O3;Yc_fjzq$eC- zJ*k1a;cC=`8Ggh0h98JSsOu)dTMtosr9@ z@^8iGcxfmoOD-%PhsNU2c&sOmLd9B82^7@iYQxJd+hIS<)>5_yF`3lqdRWT#C@Mpi zh#rw5Q8*8TKG*3(-uxTfH2bL>{ZHo8VUyN2LQyna#i0@xso-zj{{?W8!HEZe0{&=z3g33Qva*LU+^HgAFl|*HDrnDF!SOaNhyOoUKr`spp5z-RvT4qB-)Saa^r?qR zN`9;_%d;0LbmVQR7O7;^>QpM3pf$Wx+)dI=v`j7DB?Ox&YrizBcKr4MBWEKwq`UdT zi`vCFg{aEv*H5hGAd>DN5a7zncW)2(y?htZxAM`Q5xqrfh`kl%S)l0|m-02@3VpiRA|SX=taJ% zAv@H!0H^Q7`x*{3q!AOYg)U8#C~R@>_jwXO>&ba^<+a~^yK;x)S8XQh+{{b#<$CK< zeezoa$r|Ar0ip97Rx9r)D1I3efXeqx4SanBxN4y2(HiUZIO2SN5uruLm|;&_KVp8r0cwko Ay#N3J From 3b2483ff4f2d65f584bd4552070b0feafe20e716 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:13:27 +0000 Subject: [PATCH 489/521] Move glowing itemframe --- .../textures/extra_mobs_glow_item_frame.png | Bin 0 -> 6285 bytes .../extra_mobs_glow_item_frame_border.png | Bin 0 -> 6285 bytes .../textures/extra_mobs_glow_item_frame_item.png | Bin 0 -> 6285 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame.png create mode 100644 mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame_border.png create mode 100644 mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame_item.png diff --git a/mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame.png b/mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..e83b4e0608b452b5b3033bbb4c1bd0a7c594b753 GIT binary patch literal 6285 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 Ay#N3J literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame_border.png b/mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame_border.png new file mode 100644 index 0000000000000000000000000000000000000000..e83b4e0608b452b5b3033bbb4c1bd0a7c594b753 GIT binary patch literal 6285 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 Ay#N3J literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame_item.png b/mods/ITEMS/mcl_itemframes/textures/extra_mobs_glow_item_frame_item.png new file mode 100644 index 0000000000000000000000000000000000000000..e83b4e0608b452b5b3033bbb4c1bd0a7c594b753 GIT binary patch literal 6285 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 Ay#N3J literal 0 HcmV?d00001 From 1b9c5e6e233e0c39e6a3e36ab2398381a3d02b39 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:14:17 +0000 Subject: [PATCH 490/521] Move glowing itemframes --- .../models/extra_mobs_glow_item_frame.obj | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 mods/ITEMS/mcl_itemframes/models/extra_mobs_glow_item_frame.obj diff --git a/mods/ITEMS/mcl_itemframes/models/extra_mobs_glow_item_frame.obj b/mods/ITEMS/mcl_itemframes/models/extra_mobs_glow_item_frame.obj new file mode 100644 index 000000000..d0a5b0c5f --- /dev/null +++ b/mods/ITEMS/mcl_itemframes/models/extra_mobs_glow_item_frame.obj @@ -0,0 +1,156 @@ +# Blender v2.76 (sub 0) OBJ File: 'itemframe1facedir.blend' +# www.blender.org +mtllib itemframe1facedir.mtl +o right.frame_Cube.005 +v -0.313413 -0.313413 0.435326 +v -0.313413 0.313413 0.435326 +v -0.313413 -0.313413 0.498008 +v -0.313413 0.313413 0.498008 +v -0.376095 -0.313413 0.435326 +v -0.376095 0.313413 0.435326 +v -0.376095 -0.313413 0.498008 +v -0.376095 0.313413 0.498008 +vt 0.875000 0.812500 +vt 0.812500 0.812500 +vt 0.812500 0.187500 +vt 0.875000 0.187500 +vt 1.000000 0.812500 +vt 0.937500 0.812500 +vt 0.937500 0.187500 +vt 1.000000 0.187500 +vt -0.000000 0.937500 +vt 0.062500 0.937500 +vt 0.062500 1.000000 +vt -0.000000 1.000000 +vn 1.000000 0.000000 -0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +usemtl None +s off +f 2/1/1 4/2/1 3/3/1 1/4/1 +f 4/1/2 8/2/2 7/3/2 3/4/2 +f 8/5/3 6/6/3 5/7/3 7/8/3 +f 6/1/4 2/2/4 1/3/4 5/4/4 +f 1/9/5 3/10/5 7/11/5 5/12/5 +f 6/9/6 8/10/6 4/11/6 2/12/6 +o left.frame_Cube.004 +v 0.376095 -0.313413 0.435326 +v 0.376095 0.313413 0.435326 +v 0.376095 -0.313413 0.498008 +v 0.376095 0.313413 0.498008 +v 0.313413 -0.313413 0.435326 +v 0.313413 0.313413 0.435326 +v 0.313413 -0.313413 0.498008 +v 0.313413 0.313413 0.498008 +vt 0.875000 0.812500 +vt 0.812500 0.812500 +vt 0.812500 0.187500 +vt 0.875000 0.187500 +vt 1.000000 0.812500 +vt 0.937500 0.812500 +vt 0.937500 0.187500 +vt 1.000000 0.187500 +vt -0.000000 0.937500 +vt 0.062500 0.937500 +vt 0.062500 1.000000 +vt -0.000000 1.000000 +vn 1.000000 0.000000 -0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +usemtl None +s off +f 10/13/7 12/14/7 11/15/7 9/16/7 +f 12/13/8 16/14/8 15/15/8 11/16/8 +f 16/17/9 14/18/9 13/19/9 15/20/9 +f 14/13/10 10/14/10 9/15/10 13/16/10 +f 9/21/11 11/22/11 15/23/11 13/24/11 +f 14/21/12 16/22/12 12/23/12 10/24/12 +o lower.frame_Cube.003 +v 0.376095 -0.376095 0.435326 +v 0.376095 -0.313413 0.435326 +v 0.376095 -0.376095 0.498008 +v 0.376095 -0.313413 0.498008 +v -0.376095 -0.376095 0.435326 +v -0.376095 -0.313413 0.435326 +v -0.376095 -0.376095 0.498008 +v -0.376095 -0.313413 0.498008 +vt 0.187500 0.187500 +vt 0.125000 0.187500 +vt 0.125000 0.125000 +vt 0.187500 0.125000 +vt 0.875000 0.187500 +vt 0.875000 0.125000 +vt 0.812500 0.187500 +vt 0.812500 0.125000 +vt 0.875000 0.937500 +vt 0.875000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 0.937500 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +usemtl None +s off +f 18/25/13 20/26/13 19/27/13 17/28/13 +f 20/29/14 24/26/14 23/27/14 19/30/14 +f 24/29/15 22/31/15 21/32/15 23/30/15 +f 22/29/16 18/26/16 17/27/16 21/30/16 +f 17/33/17 19/34/17 23/35/17 21/36/17 +f 22/30/18 24/29/18 20/26/18 18/27/18 +o upper.frame_Cube.002 +v 0.376095 0.313413 0.435326 +v 0.376095 0.376095 0.435326 +v 0.376095 0.313413 0.498008 +v 0.376095 0.376095 0.498008 +v -0.376095 0.313413 0.435326 +v -0.376095 0.376095 0.435326 +v -0.376095 0.313413 0.498008 +v -0.376095 0.376095 0.498008 +vt 0.187500 0.875000 +vt 0.125000 0.875000 +vt 0.125000 0.812500 +vt 0.187500 0.812500 +vt 0.875000 0.875000 +vt 0.875000 0.812500 +vt 0.812500 0.875000 +vt 0.812500 0.812500 +vt 0.875000 0.937500 +vt 0.875000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 0.937500 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +usemtl None +s off +f 26/37/19 28/38/19 27/39/19 25/40/19 +f 28/41/20 32/38/20 31/39/20 27/42/20 +f 32/41/21 30/43/21 29/44/21 31/42/21 +f 30/41/22 26/38/22 25/39/22 29/42/22 +f 25/45/23 27/46/23 31/47/23 29/48/23 +f 30/48/24 32/38/24 28/41/24 26/45/24 +o background_Plane +v 0.313413 -0.313413 0.466667 +v -0.313413 -0.313413 0.466667 +v 0.313413 0.313413 0.466667 +v -0.313413 0.313413 0.466667 +vt 0.187500 0.187500 +vt 0.812500 0.187500 +vt 0.812500 0.812500 +vt 0.187500 0.812500 +vn -0.000000 0.000000 -1.000000 +usemtl None +s off +f 33/49/25 34/50/25 36/51/25 35/52/25 From 5a3c1bb3d838f628c2fce1e56c558469b8a414c7 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:15:36 +0000 Subject: [PATCH 491/521] Move glowing itemframes --- mods/ITEMS/mcl_itemframes/init.lua | 667 +++++++++++++++-------------- 1 file changed, 344 insertions(+), 323 deletions(-) diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index 5937a16cf..e6a5f0772 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -2,306 +2,351 @@ local S = minetest.get_translator(minetest.get_current_modname()) local VISUAL_SIZE = 0.3 -minetest.register_entity("mcl_itemframes:item",{ - hp_max = 1, - visual = "wielditem", - visual_size = {x=VISUAL_SIZE, y=VISUAL_SIZE}, - physical = false, - pointable = false, - textures = { "blank.png" }, - _texture = "blank.png", - _scale = 1, +local vari = {{ "mcl_itemframes:item", "mcl_itemframes:map", "mcl_itemframes:item_frame", S("Item Frame"), S("Can hold an item"), S("Item frames are decorative blocks in which items can be placed."), "mcl_itemframes_itemframe1facedir.obj", "mcl_itemframes_itemframe_background.png", "default_wood.png", "mcl_itemframes_item_frame.png", "mcl_itemframes_item_frame.png", {"itemframes:frame"}}, +{ "mcl_itemframes:glow_item", "mcl_itemframes:glow_map", "mcl_itemframes:glow_item_frame", S("Glow Item Frame"), S("Can hold an item and glows"), S("Glow Item frames are decorative blocks in which items can be placed."), "extra_mobs_glow_item_frame.obj", "extra_mobs_glow_item_frame_border.png", "extra_mobs_glow_item_frame_border.png", "extra_mobs_glow_item_frame_item.png", "extra_mobs_glow_item_frame.png", {"extra_mobs:glow_frame", "extra_mobs:glow_item_frame"}}, +} - on_activate = function(self, staticdata) - if staticdata and staticdata ~= "" then - local data = staticdata:split(";") - if data and data[1] and data[2] then - self._nodename = data[1] - self._texture = data[2] - if data[3] then - self._scale = data[3] - else - self._scale = 1 - end - end - end - if self._texture then - self.object:set_properties({ - textures={self._texture}, - visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, - }) - end - end, - get_staticdata = function(self) - if not self then return end - if self._nodename and self._texture then - local ret = self._nodename .. ";" .. self._texture - if self._scale then - ret = ret .. ";" .. self._scale - end - return ret - end - return "" - end, +for v=1, #vari do + local var = vari[v] + minetest.register_entity(var[1],{ + hp_max = 1, + visual = "wielditem", + visual_size = {x=VISUAL_SIZE, y=VISUAL_SIZE}, + physical = false, + pointable = false, + textures = { "blank.png" }, + _texture = "blank.png", + _scale = 1, + glow = (v-1)*minetest.LIGHT_MAX, - _update_texture = function(self) - if self._texture then - self.object:set_properties({ - textures={self._texture}, - visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, - }) - end - end, -}) + on_activate = function(self, staticdata) + if staticdata and staticdata ~= "" then + local data = staticdata:split(";") + if data and data[1] and data[2] then + self._nodename = data[1] + self._texture = data[2] + if data[3] then + self._scale = data[3] + else + self._scale = 1 + end + end + end + if self._texture then + self.object:set_properties({ + textures={self._texture}, + visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, + }) + end + end, + get_staticdata = function(self) + if not self then return end + if self._nodename and self._texture then + local ret = self._nodename .. ";" .. self._texture + if self._scale then + ret = ret .. ";" .. self._scale + end + return ret + end + return "" + end, + + _update_texture = function(self) + if self._texture then + self.object:set_properties({ + textures={self._texture}, + visual_size={x=VISUAL_SIZE/self._scale, y=VISUAL_SIZE/self._scale}, + }) + end + end, + }) -minetest.register_entity("mcl_itemframes:map", { - initial_properties = { - visual = "upright_sprite", - visual_size = {x = 1, y = 1}, - pointable = false, - physical = false, - collide_with_objects = false, - textures = {"blank.png"}, - }, - on_activate = function(self, staticdata) - self.id = staticdata - mcl_maps.load_map(self.id, function(texture) - -- will not crash even if self.object is invalid by now - self.object:set_properties({textures = {texture}}) - end) - end, - get_staticdata = function(self) - return self.id - end, -}) + minetest.register_entity(var[2], { + initial_properties = { + visual = "upright_sprite", + visual_size = {x = 1, y = 1}, + pointable = false, + physical = false, + collide_with_objects = false, + textures = {"blank.png"}, + }, + on_activate = function(self, staticdata) + self.id = staticdata + mcl_maps.load_map(self.id, function(texture) + -- will not crash even if self.object is invalid by now + self.object:set_properties({textures = {texture}}) + end) + end, + get_staticdata = function(self) + return self.id + end, + }) -local facedir = {} -facedir[0] = {x=0,y=0,z=1} -facedir[1] = {x=1,y=0,z=0} -facedir[2] = {x=0,y=0,z=-1} -facedir[3] = {x=-1,y=0,z=0} + local facedir = {} + facedir[0] = {x=0,y=0,z=1} + facedir[1] = {x=1,y=0,z=0} + facedir[2] = {x=0,y=0,z=-1} + facedir[3] = {x=-1,y=0,z=0} -local remove_item_entity = function(pos, node) - if node.name == "mcl_itemframes:item_frame" then - for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do - local entity = obj:get_luaentity() - if entity and (entity.name == "mcl_itemframes:item" or entity.name == "mcl_itemframes:map") then - obj:remove() - end - end - end + local remove_item_entity = function(pos, node) + if node.name == var[3] then + for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local entity = obj:get_luaentity() + if entity and (entity.name == var[1] or entity.name == var[2]) then + obj:remove() + end + end + end + end + + 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 == var[3] then + 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 + end + local yaw = math.pi*2 - param2 * math.pi/2 + local map_id = item:get_meta():get_string("mcl_maps:id") + if map_id == "" then + local e = minetest.add_entity(pos, var[1]) + local lua = e:get_luaentity() + lua._nodename = node.name + local itemname = item:get_name() + if itemname == "" or itemname == nil then + lua._texture = "blank.png" + lua._scale = 1 + else + lua._texture = itemname + local def = minetest.registered_items[itemname] + lua._scale = def and def.wield_scale and def.wield_scale.x or 1 + end + lua:_update_texture() + if node.name == var[3] then + e:set_yaw(yaw) + end + else + local e = minetest.add_entity(pos, var[2], map_id) + e:set_yaw(yaw) + end + end + end + + local drop_item = function(pos, node, meta, clicker) + local cname = "" + if clicker and clicker:is_player() then + cname = clicker:get_player_name() + end + if node.name == var[3] and not minetest.is_creative_enabled(cname) then + local inv = meta:get_inventory() + local item = inv:get_stack("main", 1) + if not item:is_empty() then + minetest.add_item(pos, item) + end + end + meta:set_string("infotext", "") + remove_item_entity(pos, node) + end + + minetest.register_node(var[3],{ + description = var[4], + _tt_help = var[5], + _doc_items_longdesc = var[6], + _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 = var[7], + selection_box = { type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5} }, + collision_box = { type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5} }, + tiles = {var[8], var[8], var[8], var[8], var[9], var[8]}, + inventory_image = var[10], + wield_image = var[11], + paramtype = "light", + paramtype2 = "facedir", + + --FIXME: should only be glowing, no light source. How is that possible with a node? + light_source = 1, + + sunlight_propagates = true, + groups = { dig_immediate=3,deco_block=1,dig_by_piston=1,container=7,attached_node_facedir=1 }, + sounds = mcl_sounds.node_sound_defaults(), + node_placement_prediction = "", + on_timer = function(pos) + local inv = minetest.get_meta(pos):get_inventory() + local stack = inv:get_stack("main", 1) + local itemname = stack:get_name() + if minetest.get_item_group(itemname, "clock") > 0 then + local new_name = "mcl_clock:clock_" .. (mcl_worlds.clock_works(pos) and mcl_clock.old_time or mcl_clock.random_frame) + if itemname ~= new_name then + stack:set_name(new_name) + inv:set_stack("main", 1, stack) + local node = minetest.get_node(pos) + update_item_entity(pos, node, node.param2) + end + minetest.get_node_timer(pos):start(1.0) + end + end, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + -- Use pointed node's on_rightclick function first, if present + local node = minetest.get_node(pointed_thing.under) + 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(pointed_thing.under, node, placer, itemstack) or itemstack + end + end + + return minetest.item_place(itemstack, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) + end, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("main", 1) + end, + on_rightclick = function(pos, node, clicker, itemstack) + if not itemstack then + return + end + local pname = clicker:get_player_name() + if minetest.is_protected(pos, pname) then + minetest.record_protection_violation(pos, pname) + return + end + local meta = minetest.get_meta(pos) + drop_item(pos, node, meta, clicker) + local inv = meta:get_inventory() + if itemstack:is_empty() then + remove_item_entity(pos, node) + meta:set_string("infotext", "") + inv:set_stack("main", 1, "") + return itemstack + end + local put_itemstack = ItemStack(itemstack) + put_itemstack:set_count(1) + local itemname = put_itemstack:get_name() + if minetest.get_item_group(itemname, "compass") > 0 then + put_itemstack:set_name("mcl_compass:" .. mcl_compass.get_compass_image(pos, minetest.dir_to_yaw(minetest.facedir_to_dir(node.param2)))) + end + if minetest.get_item_group(itemname, "clock") > 0 then + minetest.get_node_timer(pos):start(1.0) + end + inv:set_stack("main", 1, put_itemstack) + update_item_entity(pos, node) + -- Add node infotext when item has been named + local imeta = itemstack:get_meta() + local iname = imeta:get_string("name") + if iname then + meta:set_string("infotext", iname) + end + + if not minetest.is_creative_enabled(clicker:get_player_name()) then + itemstack:take_item() + end + return itemstack + 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, + on_destruct = function(pos) + local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) + drop_item(pos, node, meta) + end, + 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 == var[3] then + objs = minetest.get_objects_inside_radius(pos, 0.5) + end + if objs then + for _, obj in ipairs(objs) do + if obj and obj:get_luaentity() and obj:get_luaentity().name == var[1] then + update_item_entity(pos, node, (node.param2+1) % 4) + break + end + end + end + return + elseif mode == screwdriver.ROTATE_AXIS then + return false + end + end, + }) + + minetest.register_lbm({ + label = "Update legacy item frames", + name = "mcl_itemframes:update_legacy_item_frames", + nodenames = var[12], + action = function(pos, node) + -- Swap legacy node, then respawn entity + node.name = var[3] + local meta = minetest.get_meta(pos) + local item = meta:get_string("item") + minetest.swap_node(pos, node) + if item ~= "" then + local itemstack = ItemStack(minetest.deserialize(meta:get_string("itemdata"))) + local inv = meta:get_inventory() + inv:set_size("main", 1) + if not itemstack:is_empty() then + inv:set_stack("main", 1, itemstack) + end + end + update_item_entity(pos, node) + end, + }) + + -- FIXME: Item entities can get destroyed by /clearobjects + minetest.register_lbm({ + label = "Respawn item frame item entities", + name = "mcl_itemframes:respawn_entities", + nodenames = {var[3]}, + run_at_every_load = true, + action = function(pos, node) + update_item_entity(pos, node) + end, + }) end -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[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 - end - local yaw = math.pi*2 - param2 * math.pi/2 - local map_id = item:get_meta():get_string("mcl_maps:id") - if map_id == "" then - local e = minetest.add_entity(pos, "mcl_itemframes:item") - local lua = e:get_luaentity() - lua._nodename = node.name - local itemname = item:get_name() - if itemname == "" or itemname == nil then - lua._texture = "blank.png" - lua._scale = 1 - else - lua._texture = itemname - local def = minetest.registered_items[itemname] - lua._scale = def and def.wield_scale and def.wield_scale.x or 1 - end - lua:_update_texture() - if node.name == "mcl_itemframes:item_frame" then - e:set_yaw(yaw) - end - else - local e = minetest.add_entity(pos, "mcl_itemframes:map", map_id) - e:set_yaw(yaw) - end - end -end - -local drop_item = function(pos, node, meta, clicker) - local cname = "" - if clicker and clicker:is_player() then - cname = clicker:get_player_name() - end - if node.name == "mcl_itemframes:item_frame" and not minetest.is_creative_enabled(cname) then - local inv = meta:get_inventory() - local item = inv:get_stack("main", 1) - if not item:is_empty() then - minetest.add_item(pos, item) - end - end - meta:set_string("infotext", "") - remove_item_entity(pos, node) -end - -minetest.register_node("mcl_itemframes:item_frame",{ - description = S("Item Frame"), - _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", - is_ground_content = false, - mesh = "mcl_itemframes_itemframe1facedir.obj", - selection_box = { type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5} }, - collision_box = { type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5} }, - tiles = {"mcl_itemframes_itemframe_background.png", "mcl_itemframes_itemframe_background.png", "mcl_itemframes_itemframe_background.png", "mcl_itemframes_itemframe_background.png", "default_wood.png", "mcl_itemframes_itemframe_background.png"}, - inventory_image = "mcl_itemframes_item_frame.png", - wield_image = "mcl_itemframes_item_frame.png", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - groups = { dig_immediate=3,deco_block=1,dig_by_piston=1,container=7,attached_node_facedir=1 }, - sounds = mcl_sounds.node_sound_defaults(), - node_placement_prediction = "", - on_timer = function(pos) - local inv = minetest.get_meta(pos):get_inventory() - local stack = inv:get_stack("main", 1) - local itemname = stack:get_name() - if minetest.get_item_group(itemname, "clock") > 0 then - local new_name = "mcl_clock:clock_" .. (mcl_worlds.clock_works(pos) and mcl_clock.old_time or mcl_clock.random_frame) - if itemname ~= new_name then - stack:set_name(new_name) - inv:set_stack("main", 1, stack) - local node = minetest.get_node(pos) - update_item_entity(pos, node, node.param2) - end - minetest.get_node_timer(pos):start(1.0) - end - end, - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then - return itemstack - end - - -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - 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(pointed_thing.under, node, placer, itemstack) or itemstack - end - end - - return minetest.item_place(itemstack, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) - end, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - inv:set_size("main", 1) - end, - on_rightclick = function(pos, node, clicker, itemstack) - if not itemstack then - return - end - local pname = clicker:get_player_name() - if minetest.is_protected(pos, pname) then - minetest.record_protection_violation(pos, pname) - return - end - local meta = minetest.get_meta(pos) - drop_item(pos, node, meta, clicker) - local inv = meta:get_inventory() - if itemstack:is_empty() then - remove_item_entity(pos, node) - meta:set_string("infotext", "") - inv:set_stack("main", 1, "") - return itemstack - end - local put_itemstack = ItemStack(itemstack) - put_itemstack:set_count(1) - local itemname = put_itemstack:get_name() - if minetest.get_item_group(itemname, "compass") > 0 then - put_itemstack:set_name("mcl_compass:" .. mcl_compass.get_compass_image(pos, minetest.dir_to_yaw(minetest.facedir_to_dir(node.param2)))) - end - if minetest.get_item_group(itemname, "clock") > 0 then - minetest.get_node_timer(pos):start(1.0) - end - inv:set_stack("main", 1, put_itemstack) - update_item_entity(pos, node) - -- Add node infotext when item has been named - local imeta = itemstack:get_meta() - local iname = imeta:get_string("name") - if iname then - meta:set_string("infotext", iname) - end - - if not minetest.is_creative_enabled(clicker:get_player_name()) then - itemstack:take_item() - end - return itemstack - 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, - on_destruct = function(pos) - local meta = minetest.get_meta(pos) - local node = minetest.get_node(pos) - drop_item(pos, node, meta) - end, - 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, 0.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 - return false - end - end, -}) - minetest.register_craft({ output = "mcl_itemframes:item_frame", recipe = { @@ -311,37 +356,13 @@ minetest.register_craft({ } }) -minetest.register_lbm({ - label = "Update legacy item frames", - name = "mcl_itemframes:update_legacy_item_frames", - nodenames = {"itemframes:frame"}, - action = function(pos, node) - -- Swap legacy node, then respawn entity - node.name = "mcl_itemframes:item_frame" - local meta = minetest.get_meta(pos) - local item = meta:get_string("item") - minetest.swap_node(pos, node) - if item ~= "" then - local itemstack = ItemStack(minetest.deserialize(meta:get_string("itemdata"))) - local inv = meta:get_inventory() - inv:set_size("main", 1) - if not itemstack:is_empty() then - inv:set_stack("main", 1, itemstack) - end - end - update_item_entity(pos, node) - end, -}) - --- FIXME: Item entities can get destroyed by /clearobjects -minetest.register_lbm({ - label = "Respawn item frame item entities", - name = "mcl_itemframes:respawn_entities", - nodenames = {"mcl_itemframes:item_frame"}, - run_at_every_load = true, - action = function(pos, node) - update_item_entity(pos, node) - end, +minetest.register_craft({ + type = "shapeless", + output = 'mcl_itemframes:glow_item_frame', + recipe = {'mcl_itemframes:item_frame', 'extra_mobs:glow_ink_sac'}, }) minetest.register_alias("itemframes:frame", "mcl_itemframes:item_frame") +minetest.register_alias("extra_mobs:glow_item_frame","mcl_itemframes:glow_item_frame") +minetest.register_alias("extra_mobs:glow_frame","mcl_itemframes:glow_item_frame") +minetest.register_alias("extra_mobs:glow_item_frame_item","mcl_itemframes:glow_item") From 36e671f4394a9765ffce6d6344af7b0b951d6474 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 31 May 2022 22:43:21 +0000 Subject: [PATCH 492/521] Adjust light --- mods/ITEMS/mcl_itemframes/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_itemframes/init.lua b/mods/ITEMS/mcl_itemframes/init.lua index e6a5f0772..eb20719b4 100644 --- a/mods/ITEMS/mcl_itemframes/init.lua +++ b/mods/ITEMS/mcl_itemframes/init.lua @@ -174,7 +174,7 @@ for v=1, #vari do paramtype2 = "facedir", --FIXME: should only be glowing, no light source. How is that possible with a node? - light_source = 1, + light_source = v-1, sunlight_propagates = true, groups = { dig_immediate=3,deco_block=1,dig_by_piston=1,container=7,attached_node_facedir=1 }, From 4abc8181f77055fdbee96f5fd531f296b231e8b3 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 31 May 2022 19:46:04 -0600 Subject: [PATCH 493/521] What A Deal! Advancement --- mods/ENTITIES/mobs_mc/villager.lua | 5 +++++ mods/HUD/mcl_achievements/init.lua | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 423f6c392..f038fc751 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -712,6 +712,11 @@ local trade_inventory = { elseif listname == "output" then if not trader_exists(player:get_player_name()) then return 0 + -- Begin Award Code + -- May need to be moved if award gets unlocked in the wrong cases. + elseif trader_exists(player:get_player_name()) then + awards.unlock(player:get_player_name(), "mcl:whatAdeal") + -- End Award Code end -- Only allow taking full stack local count = stack:get_count() diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 580644b6d..42ff2387c 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -216,10 +216,17 @@ awards.register_achievement("mcl:sweetDreams", { -- Triggered in mcl_smithing_table awards.register_achievement("mcl:seriousDedication", { title = S("Serious Dedication"), - description = S("Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices"), + description = S("Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices."), icon = "farming_tool_netheritehoe.png", }) +-- Triggered in mobs_mc +awards.register_achievement("mcl:whatAdeal", { + title = S("What A Deal!"), + description = S("Successfully trade with a Villager."), + icon = "mcl_core_emerald.png", +}) + -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) if non_pc_achievements then From 6c9fc8c96333f4370866529496e41af2a55196ed Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Wed, 1 Jun 2022 10:22:10 -0600 Subject: [PATCH 494/521] Fishy Business Advancement --- mods/HUD/mcl_achievements/init.lua | 7 +++++++ mods/ITEMS/mcl_fishing/init.lua | 1 + 2 files changed, 8 insertions(+) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 42ff2387c..72d6aa47f 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -227,6 +227,13 @@ awards.register_achievement("mcl:whatAdeal", { icon = "mcl_core_emerald.png", }) +-- Triggered in mcl_fishing +awards.register_achievement("mcl:fishyBusiness", { + title = S("Fishy Business"), + description = S("Catch a fish. \nHint: Catch a fish, salmon, clownfish, or pufferfish."), + icon = "mcl_fishing_fishing_rod.png", +}) + -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) if non_pc_achievements then diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index d779a2a98..2c2ba6982 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -75,6 +75,7 @@ local fish = function(itemstack, player, pointed_thing) stacks_min = 1, stacks_max = 1, }, pr) + awards.unlock(player:get_player_name(), "mcl:fishyBusiness") elseif r <= junk_value then -- Junk items = mcl_loot.get_loot({ From cd75d6ffd21089403d0e8d3879373f7a43df86bd Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Fri, 3 Jun 2022 10:38:51 -0600 Subject: [PATCH 495/521] Armor Advancement Definitions (Commented out, but ready for me to use later) --- mods/HUD/mcl_achievements/init.lua | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 72d6aa47f..2c8c62139 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -234,6 +234,25 @@ awards.register_achievement("mcl:fishyBusiness", { icon = "mcl_fishing_fishing_rod.png", }) +-- Armor Advancements +--[[awards.register_achievement("mcl:suitUp", { + title = S("Suit Up"), + description = S("Protect yourself with a piece of iron armor."), + icon = "mcl_armor_inv_chestplate_iron.png", +})]]-- + +--[[awards.register_achievement("mcl:coverMeDiamonds", { + title = S("Cover Me with Diamonds"), + description = S("Diamond armor saves lives."), + icon = "mcl_armor_inv_chestplate_diamond.png", +})]]-- + +--[[awards.register_achievement("mcl:coverMeDebris", { + title = S("Cover Me in Debris"), + description = S("Get a full suit of Netherite armor."), + icon = "mcl_armor_inv_chestplate_netherite.png", +})]]-- + -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) if non_pc_achievements then From 836ef83bd1b27e6e7ce4d90a78301b27b98520f9 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Mon, 6 Jun 2022 13:06:36 -0500 Subject: [PATCH 496/521] Basic Pillagers --- mods/ENTITIES/mobs_mc/init.lua | 1 + mods/ENTITIES/mobs_mc/locale/template.txt | 1 + .../mobs_mc/models/mobs_mc_pillager.b3d | Bin 0 -> 97989 bytes .../mobs_mc/models/mobs_mc_pillager.blend | Bin 0 -> 658552 bytes mods/ENTITIES/mobs_mc/pillager.lua | 159 ++++++++++++++++++ .../sounds/mobs_mc_pillager_grunt1.ogg | Bin 0 -> 10280 bytes .../sounds/mobs_mc_pillager_grunt2.ogg | Bin 0 -> 6913 bytes .../mobs_mc/sounds/mobs_mc_pillager_ow1.ogg | Bin 0 -> 7995 bytes .../mobs_mc/sounds/mobs_mc_pillager_ow2.ogg | Bin 0 -> 9176 bytes .../mobs_mc/textures/mobs_mc_pillager.png | Bin 0 -> 12953 bytes .../textures/mobs_mc_spawn_icon_pillager.png | Bin 0 -> 477 bytes 11 files changed, 161 insertions(+) create mode 100644 mods/ENTITIES/mobs_mc/models/mobs_mc_pillager.b3d create mode 100644 mods/ENTITIES/mobs_mc/models/mobs_mc_pillager.blend create mode 100644 mods/ENTITIES/mobs_mc/pillager.lua create mode 100644 mods/ENTITIES/mobs_mc/sounds/mobs_mc_pillager_grunt1.ogg create mode 100644 mods/ENTITIES/mobs_mc/sounds/mobs_mc_pillager_grunt2.ogg create mode 100644 mods/ENTITIES/mobs_mc/sounds/mobs_mc_pillager_ow1.ogg create mode 100644 mods/ENTITIES/mobs_mc/sounds/mobs_mc_pillager_ow2.ogg create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_pillager.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_pillager.png diff --git a/mods/ENTITIES/mobs_mc/init.lua b/mods/ENTITIES/mobs_mc/init.lua index d7600e927..1e3481b93 100644 --- a/mods/ENTITIES/mobs_mc/init.lua +++ b/mods/ENTITIES/mobs_mc/init.lua @@ -61,6 +61,7 @@ dofile(path .. "/villager.lua") -- KrupnoPavel Mesh and animation by toby109tt --dofile(path .. "/agent.lua") -- Mesh and animation by toby109tt / https://github.com/22i -- Illagers and witch +dofile(path .. "/pillager.lua") -- Mesh by KrupnoPavel and MrRar, animation by MrRar dofile(path .. "/villager_evoker.lua") -- Mesh and animation by toby109tt / https://github.com/22i dofile(path .. "/villager_vindicator.lua") -- Mesh and animation by toby109tt / https://github.com/22i dofile(path .. "/villager_zombie.lua") -- Mesh and animation by toby109tt / https://github.com/22i diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt index 7b55c1b89..d42f7ba08 100644 --- a/mods/ENTITIES/mobs_mc/locale/template.txt +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -74,3 +74,4 @@ Tool Smith= Cleric= Nitwit= Protects you from death while wielding it= +Pillager= diff --git a/mods/ENTITIES/mobs_mc/models/mobs_mc_pillager.b3d b/mods/ENTITIES/mobs_mc/models/mobs_mc_pillager.b3d new file mode 100644 index 0000000000000000000000000000000000000000..14d7919893e6c47b4cf9aa4f365ea617aed93fc2 GIT binary patch literal 97989 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 GX8j+=<=Z9z literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/models/mobs_mc_pillager.blend b/mods/ENTITIES/mobs_mc/models/mobs_mc_pillager.blend new file mode 100644 index 0000000000000000000000000000000000000000..57ef98221bbfd49f378a97e5e9bfc2d68747a0f5 GIT binary patch literal 658552 zcmeEv2Vfo5mG;PTd6;54#xzlFnsEhpbzAPX9y~gAZ*mM(; z&`dA{T!17>AS{~#4k=&o!laqoa!5Qcv@PWVw0v`x`An<{}2Lc}md?4_Fzy|^!2z(&$fxrg>9|(LP z@PWVw0v`x`An<{}2M$Ib2=&aWJo|(`H(k*Gu=_@y-uIEhfk!?&?V^4=W)C^$Z9a#c ze&ln<^|e|~I>K6aYQL=8a*oM*;DQsg9v^l}*7KuI&)PZRtgN4&d2H6#4@TV_3YgA1 zzRwK{MjY4ScTT_P@Q(a*dL%rD49NQSp`fdS5#xC$hHhIh;&`$@pYeW>iv7prWPR^o z)XkxQX;A;e?v2_Xet__}j#TVF{;VGVdMN1XK*rdoPoK)uPe1)83ai{W2Ay=+-TwAJ zzGM2u$@~AjvwQrqXO^|p%{Pd5ule#NLxwyyb=tI!apT8-Clm_t)|w@Jo^wJdvS1{& zcbs}GP<_CRi;w6iIJZYf;knrz#RGeFOd8a?WAX)kI;LI_qQ2pa^*Yd-y;!Ox6B5$M)V3*uQ((|FFJ&mlsc*^cJ^y*nM_sX-8>USx4ENIdsnL zn4fpCtL;ba?)HgP+CPsYf&IIW{j;;Pm(Wa&YRycZ$6*%Iu;aN zn$QPQvH!r64!bk3fA_Kf;7cyq#C<-ud$v8dceXp*eEx!k9SasN>{z&Hk#jCsu%Kf> z$@q>1mkuC5I5Ex_=F1Cs~O)8n(F?q_=jww^8kq<=sfYLHG z-)9>~=YDMS`Oer-Mt0{p0*@6uUzj~(ddK{+105fjKm6FFeL(TRzApv#-+%TWH0bNx$y1zufY$z;zJTuqc~0Qi*0FKa z)|{`-na&#Fbm}{J44FQqq+{-7rzdUyGY9u;5A471?SJHvM>UTfJ8t)c+`JC*fsTTL zB3j=qc6?ysq!R517!%kR;14`LL{IV&xyH{4c>Lgb#N;VcI%bZ)IH~-*%l7-f&~Y32(mTHYdF8j=P-j&b#h$!n^Oe zPlfkNDCxWIxmU{F?S!`r-M!bZb<*FcJj)56UOFHqe5&%yzjFNth#r@atT-K+S?&Yr zr1ib5*`;%zT~XIyH#9ccP0cIq)|G1uvTex85Fia=vrk!sTwI@-?6^gesbCQHrwBQ zelvXbXNULdk=@;O$Uf?_{gUo3ub+IQ$Bf-jS-IS%_HS3$)Y>a*8|?aqCcE*f7Q4A+ zmEF2ZeBtVK_BHD^*y}csKTzM$#y)Y~4fb{97uVhJW&3)ZH&UEWq@9q<&`D*lz5WJ= z?%M0Fx3Ax@-rjuW=otHdd)Ybm(S3UK@{_ka<-6_A{?MIdOGTD*&pmI(!i87--{LEl z*yZJwcE!@LU0Jo>Exq~DtFaYSJ}_k4x#fBeV%kgb|@A3_h*>{ zz5O3^%&`M!%qacaoH_IDdGi+93l=Q47cTmet$bmr_66=2mRGM3f2gKdtkAfKSI zqLKZgsfEUjR=cHjC7s+~thQHDpW*hAHCMBrTthy>e!~4o)Ca!4bfnmyeL(raX-D@u zVt?8;)w&PV_TQ^l?>-a8=l@{plo|H)>9g#aGfM5*v*+5SW%KMga~Ih2=U+~~aE0Rw zUn(bGsHn0lE0?J;f_&l16?Jwk%@^vqZy-NlA82mjd4sb3>NRVrZ@609T-%%afOR-G zwAqh0727Y=4kf$u3HuMRS5G?a_U58fZ?4Z9@a1bJpMFq^pl4(vqFl*Kvo96}d7hG;%zPQ}6e^t2JuA%z_o)2Etq}u#y$L{Nu&B?Aj zx9532&;M_bQ{4;j{GaCibp5t<4P@uxt`qi0nA{H*jXbd#81`p)ptgUv&Q3b9|D>^_ zC;WGQUXe2%l(>9g?%ahoj{$sd!1lkA+CJYGa+~M*KHmfKecp{XMV$Nko9P~(PkpZ+ zx!JjP!LhC=gu6O6% z_tX2|w5{E$2SSzCXi* zq5VUDeGlt<>d?VM-yAb)oXvhvR5;O@7qSm5T)5a?N^1jb|5Y@{yWz_bvh}_8*S`Ls z{m|xzo%3s7|GItOSHDVraF2bG(K#w9}15V`?C*Z?guH29@4qsG`{M~}1fCgeGN!K|6HX&hK=FI!gatO@d%e&1I& z+K)fE#W^3`w8_42<3{_AyY8a3-dkw=zmewpZL}UlYeQ?-(0$${du#or&iMj`%Kq>J zmoFq87u4L~{zZen1DW?{crdkp=&@I?UZIOGyy&s{~6N`&z&1f3kACys_z;lBy(fvUMtrsq}msVD)v#QFjp!l`R%E;!U#Qy99I1~AS z%ndx}2g?3Wga?1n!!iHJ0S?bN?bHQ%<3@j+J9e}^cGRWzsFB0$5yLLA zFC8(|9!q)o`8+-p+f%1bv1yOEP5VJ?+Vf?Xl5bp7KFxl?u|3-#C+v?fGe7ud^^iaA zZ~Gt2?cePKC!KJ7;pj_;|9SLfBOJSr7&_PCw|I=l+Nv?Cl>q?RV6X z7m>~1<95&Oe>mBF=p`3BKEQr3gyO@84Y4n~bfi7IaE$#--Pow@;R76|V0qzHeTugqT`hrWy4{}FdVn0zm%6_qN zOw6hK0r*13eh}>o2A^{HX^?Gyg@;P}hknmE>6i=W7hm>;;{!vfA8>p?^#zv>y_oiL z6x%OeHI{78XRHr!Iz2y#-YH~(5 z{n-aDapnQHEy=gHUo%75pM3zQhcBe<2YT%wIwlkhIyP^A*xg;{q1OHx`xAA=uWw&B z%f7p^$R2m;P{;o37UbF6*UhAp?LW?ScE%5IkHDe3FHk-(<>C`&yKS+rDK2nY>7kiKBn(32|mwav}? z4#oB#S#a4sJJ!#(;R9P&O?P|&_Ww@P1o44R`a#SbG2RE}jySo|w8y?oAFA!YY4XJz z*#2%G;J!eeGwts*=h-hdk?r|(`hxWQAa-tmJ^&&7;8Od_+|%0jrM)B%338^aWQ>Ir~m8o9wH+L$&?S8hO?{xBX2Y*w$L8?H~06 z8WU3K4-7wu=?e@Wh?EW5w6ARKSI?o?{wEGTEzh*S+Xr4=SxolNl~eTtsri9>ju>4# z*c!8LfN@}yefPqPzU^n1eUX2tw*N8b_P=1q`cfMI`Bd`&gghsFW%VSQ1Cags^!0;8 z^8@jNBz?hyONP9$FYKJCjzh8ipFiN}RBeSqyh*_i|KJTN^!z`Y`e$$j9-n?+06IsGsNiMc=sr{6LKdkA_Ele*1!p z{(AGA3wEz8Is49T@Cg>YAN`FPUQo>eh}Li zMEe0X9yAu6eN%U}JIlrPrgI6-?kwxRl#Tl6UN1Hm{FCjEGn2mHhSCc+?n}8dsSCE3 z@Q`W$iF8HXfc35V+~2;`QmE~p+z;aK74Nxx$Tt(!v%jyA&4cz&w)V2a=J1%;U!rxu z^n5_>6J%cS;L?#hym)t~yrBJi+yDOZOP_JzTolYquwQ3^Wo`Z`#V2q|NeHl zb>XnhFSQog>LlB1KZwo=^!(8C9wFC$x_0b`GNtU6_GkYK+P}9CTswR4-BJ6qABYcl z_<`Tt@VSQZf9=lp58A)C?YUhv6c4=qrPg9;|L6x?eh@b|bgvhvwW6&}xu4O!MDP9G z&nK!sX#d_muxRvIE!*fhAfNGm;2sZR=LKe8aQ5+ik4~ij{dp~D|K7G|o6Na1XBq78 z?E}&mIQ@XX4-7f2-x>SU#>wgq+P}9C%p7+5f^91&Qv2sq^#k61;O+~eb3^n4W6nA5 zl4Lg6U)O{7?`?aw$E3lhOp4k+)(;Yo2eCd-biqk^`^&zm)El&aZy(4#|D;jdR!yR| z&nN63?F&-%fhmIr%t*x!`=dIU`T6PSqCsx?Iryy=~8SIQ`hej!^b5v15H8emqFz z0}DsxwC-!Wrc+ zumRcsvzN8)GxLE(qt9Fge%&z)+P}XKd}n3J|GrFnfji>^3rC;X(jD#2G6n75-}bDZ z7h5NNiU{?OBp zIb&e|Bac6&U#Ra+Z6A#Pf$f9# zANW8p{vWzN;MM*)kH>}}JY@8+glrw0fer#62z(&$fxrg>9|(LP@PWVw0v`x`An<{} z2Lc}md?4_Fzy|^!2z(&$fxrg>9|(LP@PWVw0v`x`An<{}2Lc}md?4_Fzy|^!2z(&$ zfxrg>9|(LP@PWVw0v`x`An<{}2Lc}md?4_Fzy|^!2z(&$fxrg>9|(LP@PTgR1CyrB zESS~Pvi|l;`OOzumerqL|K&G;b8?0aJ;6y)f{w`QQ(n1(E<|=-`!t8`v-`iwp+1hb zdT{*qUwvsQhZQ3)4G&vZ5ng&(#b{0!j#)gnIo#B|xUjmlsj_-{xT>ZiXG%kLMSXp^ zd2vy=c|}V@Of-thfB-DChc?XL~x=bEp7!m`GOITGlwLtN7Oi)bDT)D_^CdSZLka82Q0J zRDPx!S0o&iqso>1J;%u(RMY0r?fFQhL5FZb)jLitDWw*|10d|Aj$?OKXwB5u`+HRjodlP$V zU=o>MRuo=V(OR2IpJvj!(_VI40Erv_wP{ z{>Pr5DLD|LBSvF)zlZR zCz5O4{)Ny_U$~w~uKl4ew9`a#b)~+xNWX^APhYs6 zNUnXUFFo&-d9I%K{!`|?G9LyWg!9WL(POimX${M3Dv_5-i1z2EO=W5}Nano=BXYlj z(9JJd+&wSg_QvZ2;OjT<4Xsr7E1lH>*Ox=}LGEPpUdW~GCU(+x`?J_h>`AO+j`?NN z8+dUbXHHW^<%-PjHNEV%CZ;CuMEn1#bsdD;#BK<^sl0P}tr7?92EKlFi!>{{byf?o z8{|%AH^`;!CU(+x`-|93>;$_3M@a06G{X61 z^J=QX4V^ZfS3h|TDoGG-`CQh&CHzFzbr2>Xjl0Cp2XMe{;O}R*k~(F#&T0X6gWSpN z2D!=#>ACR9(fvR_BLH5y1TKVSg=LlD`mohPyK=0Gnv560z3N&=m9(F7iu0Ts^&xC; zSL<;|hej*?l~k(``RRq8&;491qSqlWhlslh>S(0raWA^}Rh_@M-*`TM{Px?<^TXl8 zhfm<=h+li)WG6hPM~=0qpL<1DvxF5B!axIo1`a6=oIy8S zM;ua!1F(Sx;x!PvN6Q>j+a^SxqxQDcy{;Ntc}(VUwqRQEjH2Sw^5Wuo#l`XLog6jq z^10~BK3L~nmt5ik8AJmO1R6NBG|BSI39E6O{U9T6N%~E%)y|NABSBA99ZROzp2%*AMl-YCMbHGa?)K^tBsilVG)%lc&w`FJ7T{=r|3X1m$ z5k_Vi?-v>bV}5*GE>2z>~_r*nPF zacaJ`Wo+!ci(&Htxlj&rndSNZxN=QpZRR`Soa*$S$N(iz=&V?|U<$~Ea*(U~*x2&y zdlePs%@uWxT_&3rk|K}?d5{ZoK(3Orm0XaQ<+TmX&8h4J0rJd3=nHZ{E^vdqESEB3d1Wmbv%IFhs-}syfTLg+hmZ??ZpwxB z5cT`=%GRcpUFH71XjraUGl}Wet$iIl?mZ^V zBJ?k@_0T;;8{_BG>-ZfF96S#2(Zia>f6%q5%ryV@v3k)z%Nl0!Q$hV?FgG^cW~8kQ z(-5wt05P%?kAE63z~KGN&@T1fysLb!8fR3=Z0qPY(np-S_&)n=I^X`@8fQG`_zBNn z>l)jm9Nn=q-HCk|SMPnwNKL-$uKF7lU*|NN$@*o#$<8(QR|ft1w&%xl-Y@(8kj}|@ zT*iHb-ck3D+|H`$0@~I0D9-eesr?+k-13WoP6+*jN6F99^Ur@L|1|q*=Ee0#s6z02 zh2mU4pE#m%;ExZLeE#bpd)`qv!1K@!S$|${-`Q1F zZA^#LC~kd7e#d^_CYxGNjzi1J%Xb2gKk!S`x3~Oq&wmE}VO0I;`z7?3ieGM~ir`o5 zmu}yJ--Yg1{ueo1?V}96x6GLzMn07AEft3TBw@bvr~f0@UsUv=6BT`AiJD(VZjt;f zl@H93C2D*R%@aPYDjgZA%CR3Vp~9F?@1nT!U2yOYBX7pG6E4Mcezd=*cH+JW{|BGF z<^Q1{2L8{sQAhgz5B;U$|4XP6+>gCZaX(*BvZ%i$-%rnv{=k0Z8tCCi;Ip^nXX*>tEK~wt zsO|{%^f)R~dP-{z>l~ti{@53kuA{y{m$l7J+m_Hpte1Y3<_0`oV2Tj&xsT>D(S!Yz zkN6Pd7x>&yj1_N`RV%=XHY*FhhUWwDHFtf{IC#W|QipH9v!x>#N0iNAH`bwfMoSE}b&%DTX2xsP8V_wD)d_v;&(PWBf*PjU7GbDv>tcv+_& zC6-Skrd@Ebo>*SU2YJC7IGT9#0WvcP%S$sL@*rV(xevj5_j@&wk9%-k|$M>93-)dBs#8 zqORaM=^qE3m{&bg?EygOMeEKR_4DYnDDG<^|Ba$2$PJqJtoJP1VXKeOu-JE2-Pd#> zim)A+Klp(^^n`lfv)+&8Z#-*E#vlB^A2Oic_pF^+ZXS5|7UkU6kjEj*-$o(yI^V~S zrqNFWl!Y^IH9R)D_W@K<8gnO#>LYZ+2hO+oSgt(Eg+JZoBUk($Mm1aBDE^2L_`w(X zetbjAW9@G_@0MyYb;Qk=+au)R2c}-_Q4>mJQt9-H=9X|%PGLhWf0ZwTZhO3dyr2gnmRheixGDv;O(s8vMuk=n49t#^3IxGVqJ*eEh(yc3PR^u`O$A!{(*5 z(q1;CE-k}@$NIcH;hEcGkn#~utGOfZv2z`Hr%u$nBqW>5DthMSeF%T=iw9WlsBazP zJVQgs{!>jDkZ$(zhce!@miecB)CLHen<=}n(sJ_o?@Y2#ga$?I6?vHQSl?!U%Vpii z%z}z0`Xq5{Q`j0ZWT^W}dU3aHAzNDl7NHaFc!9rl5Yc;;ybIH3Cc5-6$Io<`NB+=D zJ=?D``(f61bY~Om<1;#Ab`+&sSr?Yi%b1t@KETZ+F2BuvRmIJ|z)W)~cb+?LUQ--n z%O}e-`K8OVOX%A~N)G9Ccyb&^n=6mv&Ou>Y?uLz*}eZj3r;6 z@YtxZ)5qTU_IbI*V@})g;Ag*e)^h5@f6e>qgm-t&u)mSV^sYA9GfUlRXTMK;vS`M~ z*Yd1h)Jw5EZk$LXq=H>=gi4P%q}TQ^KA^ulN5+THD0Q#f1u9O!qAi!}Z=;Smbo4yu z{)m4-f_)%#yhSem(=6xjFfj zOLI`6uo8rs_ui_i38_4{WsGOeeJu$hrKp-3ty-5FHrehD$i}vYCdlH z3x^Z!wZf0Goc!H)^v(13b*9>vM^qotTGPtYcxY<4;~OvCoZGVTDSn?}pN^NGj5|Qa zOKFF?U5=7=DeX0CgV-3i%g#P$aktCJ=XN(E7`~Lffzr1Al3!kgGE9K;j_=4Ky^35B$53!andt%3?)ffFD-6U&pMasPuU6Ua<`u~ zz*%FZGDCKpHDLQ}%5$!_HE%s>`Ng?bRw;eAqAmC2TYo!l_UG5^xcayOGEcUiW!jl1 ztaIjfFa3T)?y`S;IPMIRi|NUC9X_;0p-Wx_kB4&LYOGIXG{OKFE_myS=- zpOCayq|I%=Un}i0Nxh~V{^@ADik9I#oK9|=y5?6_U1bq@e){&3 z&z^1j-KJ+a_s>uLeE_$?*Q8zMneCFwoJj3*g0xFDzuigm+HpL$rK4>qwaMI9g?|1k z{f2*^+BN6#Rk!cD`v|_ae~!dDipu0&&W(rTt9L$^dq&piecmoN4(w-69ze$%vWuz%ltZR-$&y!XA&wRfiuRHG{G4WjPQHneA?+keeAJb+% zt|!mpJ#+lsroQh#>g*#=P7y89wV#{aoX4E?ehK+4h=(c9v9s*2!#)Zw>po@{6w+^N zHC0&7-@zI0neg(JYuyzY@%G=x{)UBdStoffTX#G{Lyvd%O}J%C{aO zEopGRiTHp0*Nvb4rSHD_)vMHV%Mok8cXg6PJ0_kWzVOybMMRYe@-%wBsr;g8)ISlzf3Z7 znsG4}k-zQxci)^__wSo_W-qv6my*-Lz}u^x7U6vwXm8~T&_?W(TgccAgnAX!k zGd__|ci~}-Pcj}oOf@+EDK+`+>zi3HtERS=eqgDob0WFx0;lT`@dzWoOKp7e;_Ja~ zpJ#=t2JF@GY0p2^wFkS%{Sj>?+ApfQ6r<>O;=-XIoI@;9f$i#6RZGw|Rrwr#)eDCb%dykl7KOcP_jZDw- z@QHam(g<0c&L5$_2ICWd`wQ)lHR{#3@i@lIENGwZa(rz8WuR~Py6}idU%_Sh=#ss6 z#0T|(Kk6GK^+Ap<*;C}I5ByPI`)8^TgdCmTE5S;l1Ngun^;JuKkfTeU0lVr0f7BO} z`XEP_Jlk^B2mYvUi;O9dqpQ~Jp-=EfeHgZ41}0Xdxd%9qk_BrmI| z?8Iv{jL%sEk-jWC$3)+WnmO!z|Jj*2<^Z=SosMtLV-}2`*SatV;UDDm>cdzY$I*!+ zA8(8xql-e+9k=$<$-T#AGb}5Im`AeScIHTZDb97ZuaAF+!wsdZba+wDJo=h*&cxQ* zTKARo;=tvmy561eiGT83e`k)^{|iF zI$wn-mukrRc$Vr637?Y$Py1(?@k_Pd&X&Wwx|#7gf?B|}nUQu=D%cTrgB>HEi+_lH z9r1V87AY9-<~w1|-(u5AFt$nGquw)Q+IHfDFgoVUwnv^`&FwN<|vm8~rg>7JB%f?Rkw zTSab{^f3}jwuS4GjeysW^ZHVuEPA{DSW5IJj*pN<9|0jsQkck&Tx>U;+`pMemQ_sL zdeL6!ENc^eP5xjxU`N;ub__{B4f{HH9XmelvSVJJwd5g6fAl)5`gl>w8qwb)l7=07 z7}q6;^jm80?F5 zcM1LM$nqt!BhNj6LB-jw-S-F`eN@~Uw3oDO$1T*DQ2yssNFlqG+egeXrPz+kyS;bY z4w{+KsgA>cGR@hmR`l0@oiO~lA8+6G&}@fh;;Ne5JElyWaP~znJJ%nXv+&g?&J5>X zF#dPWUO3R7`IClS#4nfWndVt4$Ja&>uiJ^9X*m5d@nv2Y3jKugqWs~jzqPaZ-Jj<% z{qqn0$ArPBOyAM+)a)H3!;aQP8*=~l^7ke@H1cJZVZvQo>t4Ni?eB6wDEZxXk^%ec ztTUgk%_kZ1tNylQLVe5J+`N}3QvIb{nD|AXX>4F6tZ>+8?IyF34v z5A}Ne5C7b>^VgR)6`c0*&v%Xfb#}qYJvWmK!LdIz@ZW=PcKpOGL#lb~KW@78<88T% zCtQ|0>Xi?-|K+WFw`c$PkK5U&z-Po$YsMgs5MQf9I#EA`G8}UI{g8Sl-1mGyd8zbF z(K04h{=Kwm6MDGjGCV$dKO+P!Lbqg@$D^__k1VUF6$;(!usfoFZKJ-KwYJEpAv-&} z*GWe^U&)BdgP-#uOyj@yz{wN%cO0|mcN~*E*fLljoXKSkP2uL2!Qs`Ne7<|2YG-Lh zb4_LW&_h=N>UR?Pw+)>$YDcI2n0=t6`5L#u)PBd2c`nHvg5Lvk@l<@67u`-dJgF#O zH%`7De_$OJ>#kUb4PC9)fv`SnQkIqG*VoWTiufC3neVvs?qhE-EAvQK%lhl;XVtpk zwr5mW@}z_}t997+S5)Z1LT7bm9Tsw6eRGhkr)uU#gvXg2%0oHOg=BpZ{6L1eH0V$c zbc0@0c)<^J<~l6Ofv&&k4g5goUWd)0Oq2s%iO_)`=n6%NkQ3!Vw@2&)eo?yUx-Zv< za-iEH>)PNKrQ7WcZ>SIDKvymL1V7Mi=o3qaa-i!k^?@JgEbCS$iuzCvbQ@tm2|-ub zJC+XRKo=4}20zd}+as0^{K(|}$4t}6} zwnr=-%7JdR(19Q53VTm=W=7B_%7G5$zz^vSeWG-{&X0DFb@qt(8OozQ^%psi&-F4r z%7cD^(1S1N%=QI(ln4DFp$A|1t=V2ckMf}3B65Q79-nptdXxwKC-R&GeBsA_@}oTH zw|qnS2l#>>a+vxX#7h0(vy*Q6BXDg${f{4?CLlC=dEQ zPs#XU)bA%h%7cEJ(1S1N%ytU-;W;ULBBxg!58g3Wb{j@ALT(mNa(>A z^nUtBdC-5dMd=TGLGLF&%7eaL=)o8L4fJT*59L9>QRu-J{f=M#C=dE-p$A{kLk_ck zln4DNp$A{I8?zsS{!t$EA)yCf=-rPVO#CPh z`qe@YzM%7yALT)h`5X8`?|%M^@}P%&;0ynQ9dVuY&(B#)WS)rUtdVW8^TqxczoZ|A zKH~aQn*U&~_CAfIJ!vgrT-I)9Il^lVBC<~A*AliDsOK*w6Ek}*%6RxWEBIg?Ia1`s zZ&#txgFK(J9x~Fzj7B@WCq>)qwJb_!Ssib1`a*JW{_Zs&uSs};gm^xOG_I@C`Y+%2=UqqNA(rQJJ$nR2xu91)%n?l7apWDSA={BV8T8k`As`xP0#MZbACQNM&A!;OHhUmp zy*T@nWW2=q8G1>LpBPuG<^C4)H_T@-uDV$l$Qr^elzGGvmc{qZERUB@M&AFiv(GMc zmwJaWR3hW&bg%KwU5j@d?G=2`UfU;U#?QN!uFv(-P3pC%@iX=E-M=L42)n_Kk*Ug# zuY@sjPchG0}bQB;h_P3PmK@Op+08y&hD{6rI62hA3|Bs z^RFq6Yg`ic;JEvcEwnm|`S5%V^E1rX+GW0mbq{mB3hOsm_W(oO5B!3JnL;;jydPj( zR+H~~N9aA7uOXbN#^d%`na!`zuY`mT`W0_}|DgLTKDuJP<3ZxZ>m3qy@p{Kl(j)8B zJP!8t4%iKL1b*08rSB)*|3k(H&f#^dZ@$5?!Q_Yhu?XHryg(Yr#S-E^8S7T_C7;K_RCu>_M2q?1CM(c=P>S-ysXwKFdpLh5S|y{xeL}S!16h|jpKES+b9F?Q{A0? zXExiwYt9%tP2Q)HFjA_Uj;*^87_Y&-u&U*#j&-;}1VOy4%GQ@nphH{o<83 zXAhzSAdCAK=lw>p8|>IVU)d4%RZ#jBT6q)SjKb^rOh9)oNmJF+d$pbpLZJ)AG-s(PQwUHO3?haF)z*b)6S z+NHvIHoX_O#AU~5`cW#dl}@(PJ)-wV6p{W_SWdgI%Vh)}cHC;+oBgPDT^e@eF^bP8 ziL19AdBi$+*PCEB*b&NweUa`iVWRe!$c}esuhd@Qj&~ParW~Oo(tMvv$|riC>ap58 zxy{5Jryd#mKGl@>JNG`-dp}k0QxzNUQ;kgWKGkDOit-!Qd~4??{~CRt>c39dvwg_c z==)TIUoD?7AUFCx)dfY@=6+>P?E6%Qy`_A?szIMrk-yJ)Z zbg=P-!rIo?UwV6Ye)ZRTz5cV0H|_k>gr{5k#Xbd|e?B$a`Tjl99CrGBD!K1DSl_3*(@~cDeX7q2-TI?=@IIBH zkYvf=eX8JnD!fa@Vbouo{?CrFbmT<$}cu5s4;+y34Zi;Q&Q8W|@a&N{`;3yGH2DG++DQ#{*a0BIwgbqeMWeR{1^C~j(?K1H0S5!bDE!TqCIl> zp0o$#a~jthj=g>ipVl>Zmsqn3Cow%ASE_*j_T(M++!*>Bf_@5-GPV18;@(h%DIv?@ z?0=DY80KYoKOFNl%*XJ)5uOKPe&&{y{ryI&h}Tznzw)y^Hu8^Ac#c_-pQ-&X2t!pe z?$&tCqujN4$1x6o5BiVxum``qD~)+r_nnuqJ|8lTM=Chz=Vf9y*fFwP*%9_tUT_)p z`|f#J38hbY)7wMh=Vd>jf;C)&7?rG%stn*7s<)YCX#PjRPzT*Rx65 z1*hEybHuz%#obpA+&J1J>;^lQNc;9|m)!tvB0DA*?;xI+iQQmF=mPeoxz{ess-}K5 z^t!r+v}%vFcvwR2#eg?Sa`S)j!_ z7~TiRJ}bPRj{U|ckNuR>vZMR0#%2AhGl%r@`A|REZ-sD$8b>4b9`hnpk|0FC9uhw2 z587)pVogq##&8lBYkQ1n zdB2r}@#~oMrM)Rx{hc$Oub&;=?Sk8ed8l=hgZTT^(w<>Q;D>#Y?k-^}cJ$h(!+jkN zcN}@$EewUy+}|PPvA<)CePo`A>8a=D#pQi1KX!jdN!E1d+q1vE?~>fP>mS)3dVHYs zTxj^jF}eTt&rK8Vn{(<8=DTCm&{r=V8O|N{@o(w-vzE2!yl-v);@3O3Z#-uX$gc@b1p(_BZmFe%KFR&s{Pxvg040 z4ctL8?AZC(JGu8=_~qQKkDZ!JGUWdI18=^1>*&0^Q0?!w6OZj}C*mLCnF^9#$jKqKH>H6^y*PCDf07O ze|>M$&RzqLE9m!ad)EiypXC2?&}Nb$IQFLoesb)9JhT2(^Vok(+Vs+Gx&M7)N$!kC z{&)LDp+(!X&wiTPgjyqJKG}aCW9;wvTYeTMa8i-#r()&E>Ju*o&x=0nNq0Xo&+4-M z9WHsg!S`}4_x=ubPnOyK4*m{s@V#8+N5TG%V1LJfy1xV8%fb?`- z(KUO_veLqay2gg)nwFaS<<|0yKbb4H7BTE^j7fPX`s2H9kE`$V?S4$Y^Z2j|Bi~i; zLq%?h{r;I3H`-R7_QB&t4pBi4eCKn|6RLhchM+?^&}|bs@B=-*!3H{%16@Suzz=lh z_i|AVbPI$I{6J@ZFBj!NH%REf4|F4XH#kwqiE^O(MC=59pxe+VmJa1W*DiG62f7ix zW4{ZFa-iENbl?X%dh+799OOhf&{Yc^_kMf}3CiLJ7{C@JIJm@1r55Db! z-%oy&2mJz}2j7iC4;-fbP#*MygdTiB4>?SFln4DMk0||tFZ|Yz9_2ybF7)6FddOkc zkMf}3DD>bvO7NTgChU*$psyBs@C^w)_?Y#hJm^OWJ@|rtkB|SNJm^D055A!H^FNda z{caiGz!!2ukEZ-65Be=a55B11PyZ+ndhiF|_5}Lp{RtR{v2GsvO6+)y`hg$q$<*ga z>enz9))QaepD;D6f#xdw%jA$M8isx<`xE5-@sdVaH*d{sotyoMdvfr>I$fwKGk#G? z_ioHfH>uaCR$Wss-~CI%j<6f-*xsz{2>b3UB)mUC9j=7}WVyo5+4120o*L{1J4U2^ z!@e#Rc8h4|?0E3*Pk`NEM;HtCrFFkuYTxMbud8cj8Wib;!S~eC)0baq?pK%4_=s_L z8pY|q6-n|vnFDoyf}b9`Dj)k3Scm#Z@I5u?+5Daw?4fx`#9RVr`#JkbWqyYFTDzn% zkHb9e6Pfqnz6bL*)PwmN@0I1}fc*XVsafCh{jN;=8d-0Wuw<1QkK5N~How9+4?gHu zLTkME8Q+g@bDocr4R(Y+U|*Hy_80wryuIP^ z!Y_7Iy~)=mP+OZR?G4`nnks307Z2_6ZjXH=#Dbqm=3Pe}VD$U(Q?u^L=96oPJ^bv5 z_Q?HP4{DR<;pXO!o8=C)G`B|{*wJ7Ah5(5A6GHJ&QNr@w<)Vo#+4tiyUSj+#c~!p4 zCgZ5NUW0WPtb+jek>rcRWi9s^5`w>5Fp$=gSspK+425K$poEcYgj4R(VaOQfHMeU(1wJ8U~^-;C;p($=;&IQ=M{_%7SEqQ6I^ zAm%}w=Jz#lT`nVV=0UOF*V}4cm-VRC=wT1P_Q+!tpWKGM?a0gy-gPV34R(ZbVPB-X zOXz1u^s9b$9GHE-_6m2ryWleA2=z>J->#I$zTGRrzmMCyIQX-wJhPtex^MS_-Vf!@ zntzwxxBJt_p3MDL|2y=)-GLi6y;_+)UGLlN`SVkD47=`|df)EJC%-Y_*-zh@(Dq+% z(!SlDFEl*;;%kF{{rvdQnQgRh_lV&?rG2}1(!Sk3v~PD8?c4q3dB+vJ`7L|b|D%1o z-wO8anr^bs(>Hwg-Z=kFHE(b1+jW1J?SEEn9TTgN&7S*q7f-k>choB%ZvV?$_ioSr z^B$mSyEd6BbkSMGa0pliCLa+Ncq(K4}ngDu)$Ondnz@cvdD-C*Bt$h~j($8Wzq z-m)^=x68i-5bWDkmJRmp2K#mo)P1|$@A2~*tS@1`3Hx2K4u$&{zqu0+;<`@QR$NDDs=NrC64>sknq8Lx_z<-zdU|Voez9J z{`;|Mbl6q**C|Hy9zfdQxv_cp&8N8>^!cOcV57+uH?>aT%~=;c zpdzp%>;^kVri#CaeY+c|M0R9Z-;#D=%B`Nb9mMMtVmH_k?Hl%0`WRkFzi#>lbYt7Y z>30B*f0NUX(#h)-e9V?DPA{mW{=Od4xGt9wn9pmh-o&xA2cIYs4gKucM!y%#?a|MU ziW{#}u)JQJqjeleF|pS^u?Z`=`fQMGd4s z)*-Ja!A|v*<^$_ZoQ_`Sc{QJ(P2}^>v$u`!`~Goxyxv4_?(rW|bz85}9u2+n(y${F zZlHSn?8qFs3?J^e$~kcVvK{ZFJ_zIPUkHlFuo4H5hVgxNuzfpQnfcuh-XC=I2^Ge@ zY+LSApPpOvmv%GhNc^S%JzJ~qk zn4eYq>_ca|!=2`$)>nH|AI9&Luv}h!UE~`de&Y(dh_HQ@8h6|0d(5LCRDuxw2l$}> zh?Hi=FF{pZddW*SsaJ6DJ_m%|V8@a<;veECj*fO_(>TBfp8FLVX?4}_FZ|V+U+*j+ zTAE)Y^qgNGLC*mBj6V|DF{U1aRB==DYj4g5!2yy)dxYI!$Iv`wN7&ba)AoEJjg)Uh zp-t84wCB*U{erU`N_o&&n$sn^^+OLD(jeSUP_^am2tqZ^A8o~C2IM^(%f zFK*`S{BQY8^0fyZpl58B#q=DH<-=EkBhWygfj|R+1_BKP8VEEHXduu)pn*UGfd&E% z1R4l55NIIKK%jv`Q3Jfn7_1i_ik1&B2O0=85NIIKK%jv@1Aztt4FnnpG!SSY&_JMp zKm&mW0u2Nj$V>z2ttXn_Q;>a+N9Q?}b4qezgu(9+;dh7nQXwuES}EVPyIO@YM3g8i zEebEIXsvBAFQl3FlIhC{c(j+Uc!A%uSuMY((7s9iF2+U)2R*3Lq1WX5e>cVc?m;~3 zEPAgos+-WTvtD8TIF8dKq?yYzSSH`LXN|UhRI4qE{Yn*X-*n+C5jyY#U2U&eIZ+OD3xp2* zqI9wKp&aN22_5)F>DnDD0UyeN?i29`@B`h3KCyHt2Rir@_<@ezPNjFhvMkhxa-c&w z@I$(`SCo!_7YKfe-}R^#IZ+<^G5vt+WqOnc{V2o#K@a}|U(lmG=tDvezRao`5*X#evjDAtRLk;zeVW57xn@UlOE+kzgpj$vcL14br~1%erV*n*zp0lp?}!Jv}YZ?3(dca zb2TvnVF5625PC59Y@GFJD^f`hxqO$dga=cpdtI==Z1I^A(d{ zvUJJCN50B@xBM|DW93dts|%UkP0zq!b-AQrWS6Pil7D(g{26A&EjFXFtO3 z0pALZ{jGxs!p|z5IjgvI&g9~<@>z4r>nm2)EU##(X{aw>TG50uiNYD0BBvlVig<1h z|DSEM@03$JN2p49wcvPq&Ve7pZ{f!%4gXf@e-v7IleHhel=Y9o(5_?Otj;QV;{#IK z9#I_pxR0dqy^B8>*HMRrjvrsA{FuLsL4Ld^>-sD{sXcET@3d#SY*Cj@FY^nP5p1La z=-<8kn7N4-0;BltxxCV3Qpb4x{Cqj@=LdV08}qN<{$B5A<{1>T`~4D61Oi^Kk3OF)ZD8o%Jx z`2QgIMK36iFp8gkoV}&Iv8kal+}xac`=3QrIkVEGLhUO2C<*=tVvBpGG=9OW@&8`% zi(X9PDE^B2mYRy%nu;{Q6SI7xx;Q^=vKTS0Bm6x6&v)f=`^Rw~A_+o`U+`-DzZ3kT z7n4O4e_ex`zt^^=GYKf8MpGNE%9-v^=Mb5cs2fi6a1nVlQ@chX~l|kfD5C7jHqIz`1U_l z`;X0y+W+h31&_4GFL*Wn4+X#I#U!1cKc~2Ka{e^F1CSe_^12F|)KFh&mfc(F$7ue; z{oi@UxR3g-LnJ|{@e5v!zeDhgUQ8Bl{8cr}mbEsg=LAI=(3mn@D*pc^;{w`$#K`wb zYW#v%r@(U@nhIJx zs7&X!DMpOvJ?!ru|8I#Y?VZs01+T{cOTjOCF{$17>uQ>s8q%5k5VPqS(3mnDA^6=3 zuWtOengkwcjbHF;{2vH@(Thpy#^2nW*3yT=s;qTsb8FMGipp?KS!G2F4;(449YB`1 zW&Gn`@WSE7e;YCrgc`r#)%brQ_(d-!ix~Xe0IJLqiPL2n(3l)|3;w?u7tsE1H}bub z8o%Jx_;(9_(Thpz#^2D$cL3@6z|0J2Od0A0|0tLJxeV~%VG?+xHGaXX@xL$lMK30) z8$aIxG^{d9Bu;bxpDvBb@hQRoOXC9Y-)ZD~B{hD*tMR`l_(d-!Ez`N@ezln_f|yLx zOy5iEzvJl{j^FyXIWO>Hukj0BjsNF@U-V+q0)Jyucx6pEP2&@@SsBu~<#>YTzl{HF zccv@8&K38IYW#v%G z(4pfMKw3X&sR^eydMIg11ivX8`oC+<3m$2WU+`-D|0?)JFDB{ynWfW;+#TSmhNjvo zv((;A^YcGm_vQW%p}WSb+zFq!#xHm^{&xkx=*1*2E}mChT&}esb2+n=f4WRf{`?E1 zaAmCEUqNNP*1uDkl56~eSL6Q|!7q9-#nH&Q_it=yYALU(X>P2oNcCoBo{;4fr9~Da z#@U!C#WBnG=9OW@&8!x zi(XJ3p~j!#1fZ+Ne_sFa8~;;zD5voYUXA~4!7q9NZiE_thW+0BF6b_QFY8|qK`0|^ zHPT*5jbHF;{BH?<(Tho|@mJI>tqIq+ls8mX*0%CC0JEfbI$x3H%uJ6ghS}|c-#!23 z`(GR@5lIkg{DN2G|B>Jqy_hUC{&4-unx=+&+5^#2UR$%gx+S&y_~Iy8&a~9YV#L7u zryu@QX5|{c;MMqlDELJ$F%?rnKd9G$$!#&cp|)Bm-+v{8|y!)%HuUAT+*S&FL*Wn?+Jd&3D01Zp8q;9}0w>Q(t=Kqx`RIc$0UXA|^!7q9-Sw-!AawneBj4*zc7lwDqP!AQJ$_AikK>=b6Nm? zmeFhe>nFQAU*i{h1Apjs(U=0A-4Clp8M zE|JP!M2%nYYW%wdzv#uym*Y|Vl?}DE)bP_>0WZvmDprbqf}eA}>|Y&Q+%u)|3to-? zp6k_nCZZRUIEuffo_4_1SEe@Y(`+VZM5W1{$e(Eb1KbGt0>;0Z*y5fkjbHF;{C5j} z(ThnO#V`Ax8fik4MiY>IPqWgaij^We3I0@WMKpfFtMT6@_(dptMq73)6(#r~U# zDdRVvcepp=gzgYL5<(7*U-E$;*Zsmc{N+m!K?AVBKSowW*t%ddgfPN+fcb8)drwvemT?9po*1ZO%nXe zVvBpGG=9OW@xLtiMK30C6u+MTmD5X5O%*9BK+pejiqoKqmEuuZ|BB6x+W$)Pf=628 z7rYw(Ho-4?F-fENmp3)EHl~O=%4JeUR8e}4P4!s+bC=-fBFPSoU+`-DFA09pi^(U7 zzpAydwuZLwq`dU$uqw)kDprb*Wc|av{^u@{${nf3FL*Wn?+AX;i<>XUnU3%N!*z}6 zO?-q=afWnmIr#mzn`zv4um8EPFLft;;u^o;)%af&{Gu0=JZgX1{o73KzNWq7GaXDe^i)4d!#jf!K?9a75t(XlN9#Xd!NJ2soZXvY&w-rhJRiP+%jesjN@U%%kyq45h|jsFS3 zFM4s)a2)tsSC;e3&#mdM;Le?wGrc1HVKYXIAItp@?{i@M=6;98F{Ql|8o%Jx`0o__ zq8F1I_{INe5vZXl9TyP)r)8k@=-hIQN`n6icVVBn#xHm^{#yjU=*1)le%`@LFMgzL z$%(x4x04=le3JE#FPTDnq&0rQtMT6~_(d-!De%|xt53D*SYC0Oks+O14($Kne$IXW zhcdh_f+KXB;E@pd8o%TNKd$?Q2LAGj)|Q6y=DLQ4mehv9d@7$)mU?+FIe?$%e~h0) zzW-0>(D=pPz#qC*^d){_@&tbA{K}gf$)U|c3DR>^rjAlOc>VHObZaI1;+5fZ9UDzkC@e5v!|0{xD^kR|&zgqoC|4r^m z;fA_!OVgU1qRd|c|67vvpK?=ZkF>@wcs2fS3VzXxNg9h^_J5{f(ymzl;`cw$?;&J4 zvHr8f6xt)L@e5v!|7pQ5dWpR7mzeJuY5eLtF69+zKL7L(CG9N#`M>k!GHZGY95sHy ztMNZ4_~8f7dE;+h5v~olq`K=VDo|O5bWskL^?jNDe@K~Ze-72bUpTd_87h(Ruf{KU zHU4J=zvw0MZEyTb8|uU9-~Cut0nv5t?#HrL$o&7Sgpl!bs1AjH7Lo}jlZ#aO>+jl z*Q6%;kY`3uPNI_hQ`$ej=fn2r(0%_uIa<^=rtu42jsID}FM2TVRBc^SXC-a9d-w0A<|7rYw(BZ6P_Vp41T6|Ge@scf_{802S0 z7Q^K(-|`Sr+~jXbn!~Ty0_y5z7ks#Fg z1+T{cl;9V=m@K0Bc?F+V!0RiP(~?$ws$+q(@J|ciX_Cc=v61|r-~TcX;Gbk(@JMU? zf>-0;aH{it-jL|UB-QwvYv@C6HOtbv`6Fg!nUTea@k4q3|4Ub{yZ@i+%J++E{DN2G zUoZGYFD5D#yFwN%p6 zGNg0!Zj<>BfB%cyzxf@o@$SMtagAT_YW!CVe$k6b4*bgQYRpU zITLHbnZ7rU=by(5etzEL_J95`IF8UYf=5E+Yy6TA{J8EH#^W!i2ii?3KM2lGr?8I@ z!2bYUXZv%Q?xFFEy@5ZpR`ex)Ve*Z|Z(dEFF6@H-qL=tT+nw=q=sqU66FzZ`U+`-D zYXraO#Uzi#U*24?EKIlm;Z(Q(S!G0!lb;5GDFCIP@mT+7|Ht^3??Gc`Y5am$<6kZK zMK4}-PXF)Nk$%0Pas}^!sjn)psiT>ISv)RXpb2s&GeIVu=q*X`7sS;XpP}&!UX8z1 z@QYqdO2htXF9UYP`rl6l|9d1H`@i|Ut2~#`p;dxsr3!IL7rYvOv)~uKn2dnGu7SROT0=|OW`QK>=^4_w+2Z-%7&0{5pF{UC z)}8Q)Yy5&&<8KoDq8F1~egAh_{zCO581&(n^mH(d3FrY>MvKQH%v@UkHktIYF4e&wKxHtMNAoe$k7`!N9+gK4+8`8Xo`CA}|G@ z^pzg?-TnU<4;nK|;}^Udf4$%ry_j@!iWkh8Tk1Rk!4~k0_Q9Hb(@Eb+^M7vtX1@m> zgAqv(YW#v%*P0mE+&&RA#%}k z^rMdze%lBCNTa-0QsWoA8h?%87rmIY>id80ui&B^+;_hM@F!XS;NLdo`5%Yw<05y$ zC$8}eUX8z6@QYqdayRl!J^|Mi-+%ixjem^$k0cyIx186z6FzZ`U+`-D%LTva#Uzin ze|n#Q?27L{&XngrSBm{PbRRdk6FzZ`U+`-D%LKpZ#Uzi%zp|mWwJzm8U|w3K&DvG^ z!X(eXZuBOL$<_D;uf`u1{Gyi_B1**Lrzhb2?Y9&sb@bpnjnZcAD*X=i|Lpgp#r_<+ zk1x9uK5>m-@M`>3f?xDvlDpeKPk#9mpk|pw>8@D+8YcMpJ8!H999aLk2^k4OjbHF; z{FQ=V^kTAbOMYy9Q0 ziJvz>rPHBzMgRY2!9PgwbC~X-@e5v!|4X7T(TmA94u3^$V|9gD%0Hc-UU5%G z?H=R5d;KF7b!hy8SK}8y3HkUz9R4)#0=we=?=cVjtSI#V^wR)I4~<{&0zU{tq8FqQ z#^FzM{iAa$A4&?ee@?mEKk#Qm*aV@*FZ~_xhb|ZYmwwS?;liKxyU)z4Q!hS?FpK5> zkCR^bhe)|ZfyOU*HU33{U-V+~aN~D90y2yFrn_SPvp9+W^Smh8q45h|jenuw7rmH# zW|b@~n_TGp{&_`Jm3ejFqzh#Jvz@AA`*Y|%E^sG&;u^o;)%X_(e$k6bK5ugI{Me^I zW{JdUp8w}`@*&6*f*mR=%+q>I8WIZ1d3PbY+&s-JalEyFBHU4?A>A1!(c!3`U zLOyHm4}HTQoUx{ssX37@#e zFL*Wn*@9p6Vv?Kq)BPEYuK4|n!vsIehW_7u|8tBfv`1Rw7rYw(EWs~&F-cAQOKTe% zQu*E-_!OjB9(3;TKRo8YZv4l(3;V=1e!;8p&lLQk7n9t?U&Z^G%Nv%J(`KMl_A__I z{^wmD_*qWe{~Tuu?UB~_1+T_GL-31UOi~knv;IBP^5#^2&$KIk|MbBm_>VV*_DE~| zf>-08F8D<+CTSf0%BFC*UVR3qyeYga*(cGy(|6h=5c`uH0li)wmi^#~+_yw=VKUwgL zUJSB0{OajfOH)mX@4&0)UtHdQj%3zpreBx)-v*ig;X2y?NywluG*$3SQ6VmA{Bm96 zH_D+rLeu_H{Hgs4QWSsYzW{Wq%zxeUKlcB04vk;%0zY^_Z%89dfM5M2W)icy@T;G~ zOi~{8x*w_QhW$|n z{@))N2|{gu!K?9468xeUlZA=Dx}qkvj!zhsq*>mqpVR*-_&JXLpX0!PGAEK88o%Jx z_$LZ}(TmB(#GjJWyO?C`^e!IXOM-uZtE^vC;}^Udf3e^fy_obS{&ar^tt)>2?BOK% zPcen|NNfCpSK}`d{Gu0=)WpB6rZ%1Fzcn$<@@D;anjM%w#UQ)?DTlAgq`euZ;pWkL(q3zOhK4FwZ~8o%Jx_zMKT=*46awSQ(WKzGIa z&m%qXyXU_HO`$!~8o%Jx`11w7=*1+B;$KD+|K^r8wW*DJ;4?8JDp0HNm?Zcgj4ke& z()b0h#=qe-_5Qo)#Uzg6cOHMG{Q-ckc>n(|NuK{aWD4z(*7yal#($0A7rmIIg$oO( z6_=Gq)sW@_SXZon&6E3|T_hZj|K|FadoCPWFL>6e5O_3xxvudWFaGk1s*1*z znw3eKL%x*i%og~yN$&q3Yobu&7rej^8t4sago*I47$b1&+(*+&D8h>ug1Sd@QYqzsc8R#+5e?^ z1Jo7wKYvUz{+($G?UB~_1+T`xTJVcrOwu^~X-V*c~}B>2xVh4x5m{DN2GUnTfO zFD7Xm{xlZ=yJG$CktF!fHih;`Yy5&&<6kNGMK3049R4(KfV$%TXT1l0mJ|KoIi}Da zX^mg-YW%H&U-V*<#^FzM0jMk1e-{U)kEUGTB_$q~&x$xSl@!$6o=@d=7MYlKIbJUKJa88o%Jx_!|Yk=*1wj zfM5UmpIIPDTL1oEl5&YI{~<~H@0*BNu4(*&SL1IG{Gu0=74X-n?>LvQNb@_+UGe?r zH(9jlW*-i(X7p;I9g2_9N~^8Pd7s*yMrVz5aECyRc7O;}^Udf1ThL zy_n=0e@$~EZG1E@Crx+7`(Iak;OB}l{vDZA3iUf)d#GGU@M`?Ef?xDvvI720-u+@; zU9tapeiHmgnL>M{wfzOJ#=k=Fi(X7pjX%R5Fm!(Zp)f;Y5hmIA-`f=0BdzfZUXA}s z!7q9-NqPU{@FL#-S5e8UUF9te4YlR?Ezsmsp?rrbXAV)BtW!=uDEq&7%K?x7=GFsa zI^fAy;}^Udf3@Hjy_m#N{0zLgyutZB%hbPsGn3W`$@(VSw9?PY`2Rzqa?gLk#J&GB zR3msKL>Y}=@_`@M{ldif%acwEyJG$a{Ew56jGx1F4~<{!4g8_yqA&3alkfbQrBlmh zoliE()(SUnu;Z@{bbJ_c+r2WeRYzENWgh zrw~T3bX^SifCu>YWGQ^WjT)yHmz6NWmFgF#Gir0pi*3i_Bd-yqvQ9?DGCF_{cz|zE zAB7LN!5sK#KbiclbjA?(s@)(j@Bt6-RreD6i5*cM_*z%e3**h@D{1#cbGb^ONXj9% zyS>@=SPVLA(4p5=8NLZA( z5*MIQ&;T|`o0LAFKrID=0&QpmuTq+RX)D340T-UQu&9`#d{#h>;(`hq`LMg6PXR^$ z3K12HxCA%&KJhas(*HU4p5M%U=gqu%FKJ2=X4;o~&%NiId(Sy{IdkXE9mofHAYZQD z$_Kf#|NN@?{-ra%@RIjPK7ANeZY<@>U3JIp7f|DXe2@q7`O+>SH!6kqx@m}^^BhMt zJ(&Ji&O10Ldn6&`gFKKgS8MGDxxrht&k^=K%Z=@~yZRsGfqeODD<9<6^4Wo9gdIFa2<3r4%4?AFP>-;@`Sd0xYEgcu%L9Lu zm;Z;A7xf6s8`t8G!BF^L$^FOSmyFWjr|@WdbXdxX%Pd{V&$*hRoPaZt_k>>W=KZQUFXq1W5&nIGSa)YOpPYxnYcrygN`MXYE} zDo#TRm-9h#jK3DKaKao}LYC3nqntMjz;%3wup{gSJLcbR?FjoCDSAKG>TRC49TM%_ zNpSDCwlRDLDJE-_<9RD31RlcEOXrgvy_T!!rlgAQNXT!fokASDs?MMvID}y-J6=Ng zhtZAcH4%1Xj(q3CSx6&u{Boed(I6Rp(zu%dBhYEt(^bKkE3SW*m9>@|CYY?)*#W(^9L?Kb^8#SJ18Y z@#oX?h1KWJJ!8=+i%yw)*7==1^pI`wWnCAoK3~2(u=@Pb)HJ0{HIQmx{AnQU=ZjY@ zU$KI|71w>#sDK~$i+>c&vL%-XGz(Y9n-Mvjc8vbZQq=O~=>x}S$ zf1O(!#qWdUU-KpF7QJ6Cgl%T*UzU@vSMi@E|3$R4Zh`4^M7a8|B_fV?C%%Y zI|(28up{gSJLXpxwiAngW2@)AZX0Mlk6>B12-CvYYo)PZ|0v+-b&bONB)VIob&J>0 zDg*yQo`?k<4+&1l<;*3R`-Q%k8(We4Xx{sKke&UG*zp>%<7an`9doa?cFg~#Ogrv3 zIy=H{up|06>>CI?P9kyrk^4OV;_PTw5W|&Lm^yclwc|Juui|Q;Kf-RXBN)NHw4$@w z^WGiw$3H%C)tq-8xiILD$JP=C{rI^d`dc%>eBoIlVB~Y&j-BgH*|~Gwy1gEHIeqp$ zGsmn=QD>Y^{jrufM)gIe^I|&W>&P&r?8qEpyPs8u{jp)w*w`^E{jgz2dHvBpc;x+Y z2?>UIcRs~g&iq?{S8|-DX?#Lnxy@Ia`ERT$A9)7n!YMU+p$q*dv&zn2=s&rYQGN-} zIef*1Hg{xy?R>_xSohn@co6dJLotmT2N{j~5Bqui)0gEojmo%EXH94rc7)wv$NUQM zOT@lb$Qk0Y?E?RD$8E%mpNmPj8~sZjAzc5G$BT)6!H%#S?C4)=?Fjo?IZdD06v`aJ zPtm>BDD}a8z2z!m!q3I%BL9+mPi6hFQon=?8fCqi#dChaj<6f-m|1S^2>aTKhIZ5N zc(EfCTH3$l=bNGR!WgJ0UI;tFZm?tS5^G1;*Gkq!{^hi-kaFivhNm0&H* zDtw}JzU`0H6~pJ$PkOH)uCGvh7%VkEa(-z$`qblJ;BD~iNtTnzj<6f-$hzPQ_O(#& zY=mbo+Hdpi2UfK_*g19MX~$kC{*TR#`@4et558{P1&S+WNBB8W_wBs4WoyCfFZ%{@ zq)mj7<>NK1k2|&J{+Oi?jNrcD50uZ@Sf|7N1N>Rodx{9`=U!IyT$AZ}ZPFIw6ecv( zhviNX2~W=E*iGx#H*vU3;vA+|s)1AksRmLFq#8&ykZK^+K&pXM1E~g54Wt@KHIQl` z)j+C&R0F97c$G0-FHGA(s)1AksRmLFq#8&ykZK^+K&pXM1E~g54Wt@KHIQl`)j+C& zR0HK|pwxQe<~bzCy0Hmbo?Ik zrQ1SDKigX6bs6}L)JRU1hVs`Cp&)ij>HLU&?Wa~fL0qvP-enfIANpmr;d_%aBO0#d z#_zv+-Y>mRyDZ0bynWq==e?R=a*DZNN7xN^%q@}k6C(R%471&s9A`&Vf!|MvvZHi0=vPE&wEw2#WWW7&-vc)Z(F^sk8Zna@40O+`qW9STmIkUtp`v8 z=f1#a2%tZ{lp8%=I9C9$&BuF}|2*0A{(17B-!w35uZQ+;*~?IvnZa;;g1A=FADNuX ziL;~2ZA5oP&CH`=KypF~nypQk~!gYruytjb)6ZW27g6DY5^0(XbQT$`=`Lz5V zcJ^N%SMSI4Hm`lpduGqN`hBgLjW0CsT_E)Dw(mb9JS*ElAM`kbzT~o~yR&obC1yKi zsTkDf&lGpSG`Jcr@Hk)Ok0&R3Rp06U_-u&;qzUf4zlrEW)_$96RE$F}Z4Hrk(lJm+kcjs?46 z9s-Q~fRBk-JKjXJd>#P3S4r<5?_a&GihqTer6Aam`vsq|tS{yUb{AD0iKsUOJKiF8 zlu*-G3OBsU+OgqR<=L@+pOM>f0ZD^?{%fjeAY6$`N2sU-_H&<=Y1-SI`-IT{i2eSA zx4N_btfgyLtXi{c>R9jX%Z#jBw8y-KbQHGuJ6YX}$0H^t~TL-M)enQylCxl->wF&uK z>8Sk1!vp=8eCIu91K()-?}4z7oIi9R>=(e(41bJ22YReAvPY0F_6y+sRKE15AYb}Z z084udVAiM0U)o!cFa0Tir9B0()kj#r7bRZ1l%{6YS15?kBRdz z>*Rb)+&|!aOyG0K@7do)g|MH?&d`cIo;5xZk97VLb>Hv`D_8#QFEQ;ccb=>lE{MKw zsM{&$Vm@KR+(vtU!!q&3^02=NKJYj5=SJ{rnWOF#*hl0Gp@l~FSKl}A_dHnlR{xr3 z+A$LxV-y@?BhoS^FbvA!j7;T?3h_3{oL)ByQsfZx2fN zpMr?9=@zQ|fRBxE-&WscIjicSD*h=<25F5W?&5NONx!K6$lR*ryDY!)PBfhPPxdCU z<9e|p!e#P(;zc&h%J-&*{%-A(ohIM!lTg>mpJnan|GYdq_79ERjzd(qFZJaUU|24H zsjauJ7hwH;<-`w)gHXcJeqWr=?3+htu^dX3{e_292J$Zv`9&|f3@v|0H+`*mEiFlxY1i3; zU%#k}zObsfC&MiN7wP-r-2RV?vA?||D9tO7U*rwsUo7&AUNo0d@-Hr9FxVCS|3xBy zx2~MPSU-%(HpzkfB5xr7g(AP`Mf1?|q+>rbVEe!R89V+D#`J%48mlQS{!bvk$Q#Iip2#nH(Hx@W zzr1t#CD}5)nsW{A$Th(7-}O%`|6mEi00S^kg8{CAp?AGpv1;HWT=U*rwsKUd@zy=Yo3|Jt`zHjtftPG$JIe3t)F zng6cSnF8~=RMHj5FY*TRpCj^%UNj#qKl=aTu2pN6cdbkm&h-B?%fr=WGtBb;MaKXC zi9(>Xm}#*9JCI-G4dg#t+ZN*QxwAU41WCr zgI}0c7R2(mk^R3#;Y~5)Ure_s;2+2@@&@wDeY-DuDIg-CwEP!!uT7W)+ekyy|Lf;4 z<_Mesmj4bK|5^Sx|2IZ01)>DVG+b88}e86l+vtB9n#dz&6wDkv`4xRD3yJO|*i@Uln z(R)})^#LtpX9%eWPdyTID9lhQd z@3?}#8JY|pP~y-MT_W7rnS; za6FX%B9h>e?yj{fmn~j?8GWr>V@AVs0;>8`n5yEzkJ#S$4{Lw71Xuowp4W=Jf&BAC ze$k6t2FFAB$>P@kUEI~ZymKW6bxok)!2hj3vjVC@CTk+(XAIaM`&|mD3ZcON6L|yq zPZs$_FNIXD{GDr-W*2uXUei_4dr4$S-=)grWVHcCB2~*|Vm?8-N9s-7e_j4SZaL{G0*%?;lB3m>9?}@&@v^iTt9M zLMqq(GXL>{bp>;vS+5@DB>3iGYyaCE-_NaQMf-I`-a!6Vkze%U^5uAFe@Fh+)cN1G zysV+j$Ul2!$BHXfmq(y0K=6R{|6V7L$3I*Z?bi``1NrBO{Gu1|MCi!Rga0a|mm8i# z_sX3;_4ct{SsE+mJfH4=dH(M$&N3;qoRfG3?O)^#T;h~ zjdmTE>+_(j|E!}p%a04=A2p5O@|#5-36T-VFX@mU`Eg;A{EIu*uIak0vpdconoZfX zVIwv_u3R@A@^c#Gcl{q1H!dE?FZPD~zN}mN(k?Xpxo0js?W_f}TjwrbuxRmR9TmTn zd~R3wrK?wUEG^Sr)WsXPm7dqI+<&DXWAaTed1%HAU$*g#8(cvOlRK@e1UZ_Fg2v^b5^M_kX)rt=!Si^LEAf zhxPC8Q{`OwQCC-f|3qp35&|cXU(&Vwz|&!A`IC2S2KPUjaRo5s|18n4{2W$#vHbkJ z7SCs<6Cc)FgL-aq&M4RGQ4aW`96S#~`TShCQW;!)lmosf2RJBywCitN&K;yEJnzHv zzr4JUh3A5{T>c*M`1n3?-1{2*yq|w@&;RWEQ{nfCxsC8I{|Wp25Bf#upCJ8BLZp`) z`cv)u8rgRho_i5T@Bg&$`JaEr4-3|-lLw3YndCn(O(i#fzq>s9vrhubmQE!r`7 zp?w1$FJaPqfOxM`*B9?ta{A3Ri%4>A#Wdc1D!Lt;%u)Pl|HLfwK3Kzdqn~@{A1q8C z`kiXW_Y}U5$?sJ0v-($2o&IgBZfeKvxS!H}!T%Yha`uNG>*4(Y1=scGzPhC#fq)NB z>D@$klJv9J-anbYkz)r9uG{q8#t+|<{lxGa8Q$`@eP;c~#%DHuV9kYwZ_m>oxU=OG z7dAiqyJwm>|D88}yLnZ^wVS{9nOANhe$CT~eiPCBd*{`6Qg-ha;&lnpHxUiP%ZTsQ z#A}D8@7@1_hnl~B{X;DeOq)KN={Migv+4Suo%o%X-Zsp2xaYWk?KSIlGd{oR&+9JS zM0MD-;1%z`^WU@fZ@Kq>pV>%t*tlusoz06nXKi`p%YW>CG+6r_8>mt!B<+ zha5ZSh}sP;TnGE3+S1kD*|X_w%ZA^0%Xilr`n$hT;z%~x+RFK{~r@HqAL^{ZyJU0?T|Q@8oer+?|(<|-#2QSQGx z=*G>L_q-pb493fx_9t_$5%6>v^3v~O*U!HHzWGhnxEVD3rWTw}67m8q!Z2qvv9NB; zg?A76{&j}ov^i{>`|rDN7VX|>Q)SfD)a-H4baUiOSf6Thx`XGDOtWrUe{fSRjdfMW zPzmlLhhp@60crD5=jt^_b@r6M{bEw7=Aw?(%a<-b=J~4t&!fIHKlp{lHT_4Ap8|6p z_rdwI@MD;Nh5a_^T(4coPQ$c7)wv$J}YMA6D#ZB&z?qjQMg7p?8;pOUwOvd9cAgu(#tj zqNVex5lS28EIz-kmX<^J^7{8U!u&Y3@G50TE{CU>b0azgbL2UVr=RcEgy#?za-Vn* z>rp9bw<`CRv;v*@paUCmVi^d$HMceK{Js<*b#Pv9U&9!YvENgj!td++}Zt`9zNjkmQ^op-1NxiJz9WYD(shW z_07A$r!Hm3QvI=ikFfOb)s)1AksRmLFJdZTMtBmP-;q%Dgsi>(2QVpaUNHvgZAk{#sfm8#j22u^A8b~#e zY9Q4>s)1AksRl-=fl}*TjzZ575O>;IQm|*cQGtd_B~$LVv-n= zln{kt*hiZ=+3tVFKH6NHg$s~3AJ%4Jyr1w{1s7l!0Y}I_+VbB|XrQ+V_*Z9Xr>ZvUBIUb)Z>}NJ1FbAIq~Nb$YVnWV$e}!fvo5WQ2V! z+)H-ki^Cf>dETBao_F*nulFGy6BDlt^)kMq#>u@NdO4jJV&CnrvR}@k_b@Xx7gqDn z(z$<2+3^iDw#M~Gm)nf$$u&Q2pr(oUgZP_dZcD|v5b$SV?*m+=7R7s;=@q1+tEVVs zEE1}`sIpPg3m>qt()9=Sa~DQ5-Ga)Tbq0-!WGMe_hnjPL_M$l3Ew|djxgHx95D{?J z!g=%o0s11yCCit3N6naVj7BIEcH0O@u12IpIQ*$PQ{SPRY&d}M6Bf?A-+qtB|LZFg zzi(gaowc|s@VHe^nW)F!qPM)%D~S$xpz9Ml@B{ri9`flzdB6i*R_MUbV)Ne@(0pj$V!kPdjD^MwxlK<9b(RA@ZhORzTK~WYeZSCyFX-ds2R`U~gdTiR zF67YV10VDmp$FeOsW;kzrUyRg>x3SBL63T9dfvC&t7-E(eV|n=8NbtdZM&|M;ep}=|Radt$1WJJ^>AfgC! z1nkC;iBM&kdryn6f0zpd%MZ^DuytHgPkMw9=wfJJa@cfyV`4aP|FEHj+_>J&C zFppwhbvYj)H>y0|Pos~e@x2q*C#p^6et5q*Pujok0CWGFUoG?J%BcCyEhRdR{t7rk>#wSmAW5@Q4V0k) zZm(uNQT$Q(r`X>DzZK8%@LUgmD*RRy#cSmAX#9qM$}P6KwuFEBBKthfmoVQc{>Oz8 z{v--15n?_BAB>~^vXSvCQPeKYiW^7ED`fJ1M+0_)9Wxh6`;c~G^wawvh4&RLy@has z602%0g1OHyv~-_=F!Da5y7mxi)s@_5xcwsPKErae_ZiWg6NDJ2+31h38|;`{V(kd~ z+Um1Edh+&Alzm%wuCp-wQ+hAKdoB5xe8C^Z^Eigxe1jDJvHmH+u7CQvnrpp7gkOjn zeJ{=VY)AgRf#!I=|JGNP_j}5nyx(7d-C)POjMK2M)yHw9Wk!P*|EAdylZje<3%oA4}T!yJxq;6FpsO|JEww=@0`~C<8|~c!NThYm)=m6 z*0o>Fe+gDEh4QoS4oSKbM18X?E-fzIVP~Szcq6F4!??Hk$KBtV?If7!&L1o;PTTqP zHjPJW;ISpWoc=?67uK7wzJ&EAVB)zb_N`(6I@X=A4h4J;+i2jydJ~TmbE`_MH{CD$*AQM{ z??W?h8QJ;}?r(kJ1AjW2-&3u&-q`=m`%n22*aESCSx&y}{_oEaEv-}ZN*LG#-}~hK z-*aiVHvfvRIDeWkq0gv^%W|{p6w#cE%bEx&up{gSJEHEeuZ3?U-9NPzc^>a0mU9?p zl8sn@ybgiqE3g~ZDF7os;A0}TZ{0-CPVD>p)94(Axm6cd^REz-p(H!T-50ss+<0*b z6Dx)7xPbKUOaJ~gRbRSINkM8#=8pf&{IzyJ?yjzBy|*vxZ(qZAk9iBhpY_apX;AJ7 zgv5GgME*S>^-nlq2Ml5*jFXuSWtm*~s?4|)C}?@0q6;aLk$?^?6GYi0eS z?vACGE?;>GGAaz&Hu}oxga|l?_rgAI-_INRm<@-ovtjPf_C4s_ug3O$Xw(DmskTeK zBC2eXxZTxL40xbx5IXQP$n*#Akbw?(pc}r?$_sv=v+qOO^_Y4}1Rm(}LI-}Jv+qNP zbie~$pU{CH=sa(MiK3ps16@|=zz=lmrWVox4|I(}2Y#TVH}%ZWi1L63I$!9(4|MCM z7SaI^bc52Kzz=lGY6|Iq2fBWt1HX`t-%k$p2|UpC2p#x=&hze|Sv7p09eAM22p#x= zZr#*EI^cn>PUyf7bZt`#?EpN`0T28Dw@nGlh?qn+w@&UR#a;DbIV z^x&HpyT;K2AN1`)558zes0ZqW@_`Tf2B8OE(4!uj9{8Xi{;2d%;ggm6>wbswfe-q; z(1S19<*@M4^#}<@0_S_&r#^$UR=@ z|6tsN{-6gv9x`9}9%oXV-@ognxtjg8sC&EIy>|T~C;oNrJXyb3G`jT*@WFj={@juA zV|jMR6{VZ<%hh)V&g3fXP^DEEjF*7!mCHBw;=_?MK`{NQCS26F- zr#SuhF#pEUrSIQGYi7D6vkrr+#QS&9bJ6>E;s*shBtpyP1y|s&iGK!vE&oedx03ZM z_-XK$;JWUZv&- z=<}_GBnD!R+~fGshmA)dO~54B5q5(e{WGl{VP7j+J=yWet)Z9%_x^qx!`ISp14rmu z!b+m+(>4h9Qv$xPpwkJGeQw)w6?L3&KjjAR{wn?jI6+@bGr2Nf_}+%{AZyZTkN^tt{n#x>=<>9H)*SxenobiTOFj<6f-m^;nd5%#sMlJ}{v+-~Fim+ZQExdVqe97F%Z^IwMf z`S1XDhN8=kt9<_yp5MN~`*zI+@ADD(adzB5^!$snqrC&>h8EGuDRrV==#Q`)?1=dm z_On;&nVfcn-C#!&)LgKyg?edR<%_~zZ?o6i(&F{L zY?IgWV;&O|uUZ=O_=+0MqTh$D-D7Sw|16#Rw^V<;mCA{;qsz^WySyi2ocrSjYMStW z|A&Mqr=^xY|Gc+3ibv0GQBdi%!-;Z!d&E>ypgp#mc`sD%lW^aZc~tJ38ZC3x(Za$NU^=AJR^Yj`Vw>OWxCFbywbg%R{K0@@3x( zWmw#%Z(##yoLUq6}}fL_;@eW^FCB`FZ7e`-)+%y_ItgX=st>m z_FDVUt@qd%uS@7FIqkunhi@T%M4OBoRSwb5wzMOw|2(u>wT-TKX)^X33f!{NlpA-XgL@AMLWpv#C^}hM8q>r(p3sazZc59+vTq znmrDh?(IcM;n-1ao&3`*%TnTf}SUCT;(XBUu5B%x;KO^|{ z{-D*?8|xD1RkTjQJ}zHoox-ef&^iS|$M*`K(=Vehq4Tf!iu0!#lgnX!My*p=Zg!m_ znsaek6Cov7rx3frj{eiujAwwxg3#U*IM3Y020KCs*cWgZ_U@$nx^?uEFwBXI9VK>+8YkU* zNcqk>-8mjr{blnj<``$kV$8yn@aga58&@}wNWS>L6aP7V>6yu+a8eD;_4!u$?@8~HXj_}fe|_dA^CyA;cb^YQ>Cj6}8ZFxT_$m44x-aooLc z+7QWEQ%npPc7)wvNB>XK&kOn`+s)nIJW=gv@0%v09bq@vG4r^!BkXHiCE0D9?{7x$ zDcv7=z@2=48o%cYyTOh*nQviVtDn;Qn|b`?`=WPBi1`rd3?rYs0K%f5+TZNFvqPPx zcj~(cE9xpWu5vkXcC;MrL>Jb~hH({kgB?+8*w@0eui0E2Hf;91Y>Vf8qRHz$ zj_0<-t3}@9ikk1D@0(htEcf_Ve3i0eF?N{Z-Zw>a4sj<^jP1zxP4I&!{(VzusVF`j!w?@iGnl6O*7{ClC9ZhP(< zLjSkoPwlWF_?8=DJOLk!Cz;_(ZajfLZzNqty@zJG*|r+Zxwx!}kODixZm?rc+6C-8-eifhV|n%5)4Ug29`3}z zf*oNu*b%jdeJ#v=XU=xynZ6|Ng}#RR+DX#iV&41oUR^q0-~ZBcij%75R==9J-QcxyKA@7bZAu{>@Icoubl`{b+C=%NC-6Ym zBXr;gI=V+SO$T(q16@Ywzz=k7Qwr&T2f8|;13%C`Q(Z_0JkSkE`vX7FwN0rjumkWw zhxQA8pj$V!kPdjD10MJRex^FKLjxtEU*LSacBv=uVGpzqq_bX`9{8YdQ2lLC^rhP$ z=z$OV;SbyP1HQ0NUbiPHANZip3qAOPJ{v<1e9-p^J@~@T(1VsA_@K`UJ@|qideHR1 z2YsW^gD=_(Bv^n)Lg{wsXyV)_^C2Yk@?3qAOPK2CqY2Yrvw zgYS^Er?~b9e9&iv9(+L`*ZzPH`Z}QpU(iDitv}#{en{pQ@I}9jYk$B8{eaMeFX-d+ z2Yk@ygdTiBk9MHz4}8#Legt2%o4ED|e9(hG_zp_@$w%}*ex8YW829D59fk8T=%Ihu zL)#O6E0=!|ji~m%ysm~Pfhb=$-(~%mAbiB$KWBasbsx=KOJCd{%(;xh2loN~ucG+v z!u#^xPt!dG-IpUQ+6T(t2O0T&`LpEhvp)4T+3(9?H`o#FA}{vU`gpG4s5V}HohI*n zIqU{ILMO1Vg+E7qD7-IUx#n}NXDmI{+^4(u<^PsDU)-m^P?%wz4EZQSLVI6MYld>} zmbou~w)&(h?pykbv!gq{MU~@nbK{!-M1y%;CB=Cdr_=j#YeCkF*$*W1CFalkklfeG z{VnEw_yO=EFt4LMaGT=uz^)`+|ANMQey?p_&0FHnJG?^9?T|3{b34!FeiAj`p_KR# z^C$SAzvdqr8Nc|Fc5O~ve=V<+$$M@G>;^mf4@&!xc4G9S&+XX!rZ%g$^7eI|EPjc3 zKGDmx><390=?BfDcVYNfe8t((?H4z(GpR1i&F<@p=Bx-N2#Ed&yTOi`pISS@zE&LG zM{=^6F9DCY@42%b`L{p)czn}WmG^zJ?&LkU19pQQF;2t2Rv+~J_TG;;cI5B5A7bEJ z3E@uq@jj6&NQZpgVuN6R9>Z?FWFs(s5WnRcon)4UyXSK+ z?QDL{tlt)#h4JA3>)JwV<;`=6o@wqNJjOqsczuNEnTFwS6JO@_TA{yfN!#qME55vW z_{TqMVfwG%{JW<6u6y~WM>f1^6V+kU+BdIjp7E8NoAx~F+gyjH>+ihmp0khpX7iQJ zzuic6Fm+4{BEUtM!{^NjmXrt(+c_2gMsZoK8Zr)NF2-}Gj$H+TF) z*@L&g@4Z*IzH-mcZ_7P1Z)?r#4{rOSlgL|9xx7fK&fyenj+vg<25$bb0;>Ic9BV@m5M=h;e%6-qnltEKb;uYd(S;znP z-0j}Mf08dyaMh&eb`J1$^5O8@>f)xMnZKBB2lD7iE8t>9f<>3VNp*5AH{?;i6OfW!AhN6ATk0w=leK%f z0CR}TJ`Vt7`GwHPVE0T_=I3Ppomw0A>x!f~JnE$@ad)r4h?|~1-OFtjMucb;^mLq<_P{MixH%ux0x8P%eIkZ{cex zaf4*ENWTm5Z0sYY^LahL=nTu*)z^CAQ@xO5k{#oo5!$hR54{9pACz z=;jx-4c~ZBoB!%%ZJ&GSgw`WJ_5k^($rr}eC_6`-89-|q&s5K@=3g=IQg-BW;_T>h zbK}J&Oso{{k9{P!FZ1o=RDJf3k}jIYOI*{uT9d1vV3iiFZ5qqQ=VY zHFKHuukjA3W_8xWv(KrYyKK36*;8j$07vzWYs#P>zDC~ZlyL9^79PmiF!M9n6Z`AJ zcT1vJ%Mx!?R%{yg^LolfJ@5`*Ug{G^2s+?_u21N|5A^z7PvC(rD|FxoI?sDC4H;Fz zyPm)UU8B%}AL!OiEu;e;=zO6AKhQl;Q%DCq&;bwp06!o%;H(#33x*x>Zc)G375Jdn z^#(ogLEj_v;EQ?VME%pOg=IP%o6n;g6(k@HZu=P$%U! z#^Xhl&yksS&0V~nfH1#R?qmMBkGW5G`IZxBeVTW>gb(~Ne@n!DZaEBh6Hb(F$}f8I z?oEf?V8_g}wq2l|7#(e{v3_-M#^@Ram)0cOt6i^HO|-mTAz|ct#RIf2oqxqwDLWRF zqev|`yIv8^SrJSS5d9H$gB^3vSUbYLR-E(cK4{g}P&9&<^loSPUi$q~GOBBBC zogOgqB^!ac&%G*qw~Njk{iRn^%RiumVVoVGqI(3kBio+GH+@-de4oqpjpD2+CI$>U z!fvo*UdCzI*GOa5E3DnDbf?jJMX?>LBJ{`jKd?kzOn$_A#V@_;+I#6Igia7=N1(*n z(XLla-ggXOH`o#SfPF0-o^g2b#Yb(LIrE|Bi!c80rkUTE(gOTaA@>!&c115JWyil! zIdOJ;syZy)joX?{+`rr(v#$>QrazDs)6T|26&Y* zT`zn-Sv-|B)j+C&R0F97QVpaUNHvgZAk{#sfm8#j22u^A8b~#eY9Q6X=rmB-dg2D& zPwZT>?{RvINn=P-931C-2zgHi@67-yc#loJFBA73&W~wNIo=uLedYYd=vPa;H{*B9 zHysc@E&J*JcXaQ~_`(PKf;0aZ89(S@tiw|Kf|JXhyzkAxZm?tS@6tZRzD74i-*mXN z&FT#2ew5bWSL8h}``!%G@_RE9M!q-mReEQJf5lgv9o>ErbylL~X5X8M=3HFXL`VtV zw-CF*j`_b?JHozJmU?<`=1bc`xd`5T(RPO2^C7Mgdwp6E@!kwz=&01osxa3-n=h}FdA$3r?MRvP_d}j zbQ;&A=95KTT`N|PqIzgAXdh@VzRU;c|F#JJcEr0)`vAOilZ9`k1bjPU8rh4lTWnDD z?Fi&cHUiUL^tU5kPC3iE|MK@+?)up9=6nC~>CKOydhYE1J8I+R_P74AOusa@)oLBjuJ%I;0v?uTb-J+U8I^cm0c;E+k-PBM%J~s>P6z4YeNV^4oK1RQ+AEpOB=rgMQ zLr=OLfgbpvuM>Lkg}!vV06p+QKlDC1#|`~2#$KQYKIjL89(QKIj{T9(-ZP-|{iU7kE=l~LATvz{kdBPb zj`Zb>vhJ>RspA)h9bq@v(U<-W`;IpWMrX&#d%id920OxTurIA;Zt=XUT0L+2R-30` zP*fJ~*tzbMojcd9v*&wf=A3HDtEbb6`0{urlHus=7|C)%CvtyWLh~c$-T4%!|DK=l z9Tu9#(W>H(|#ZPHkT>;YnM^NRGQj+n&^6`e$p%#NA(?lg`BG`Vdil=ALn+A%)i3? z06rL3a(@^ZKUc1?j7RCF{PHI6ejC^gcFg}y{55GOMn}Duw^?0bf6bE$F0D!2U)X&x zOiTN1JcRtb!9H`~?~v7c)9CvTy;Bb{zhb_n?1+Bx{$euWX7}4L_sMdhKf-RXqyJm! z=i{_rma=2AZ6@#erm!3AnE8#hBkXH+^F{L4zPK&a6P-8QyV=0*dBeRjVc~pX?3)6N z{E&}{@w3jBt7>?@o9glR1^K+;E35dYFbRya<88DU&HeFe!r^&JUzQur8;;_vDJBMt z{s_Clj+k#@Upg;(JN;-ZoJ!$T3N<`Jd3#Sf*`wc=zI((Qyan6lSuV*>2IB0<^tTc@ z+c3(Gb|r%hUEm$rQYZ3X*b#Pv9U&9!YvH$3e>4}(YkU>L-0!#_aew2G^~o2~8AiV6 z)iaM~@0~YfD4b*OpYn6w$^`bR^}XAs#PygYJI3`#m!lg;p%XP^JMy<6;RioPf)JQ^ zh3iL&sN)I&vdu68^tJ%rRh49Yn)PS7f5H6>o=@UF2lp{p|HgVe*45qmoJDiZo;1Gj z{@Q8^7u6h4&Gn9I%lWt3`1h-i7=xrD|C)_(9J+H=mo;wwrwz=A$s7BTNyZq^Tu<_skO33iPw=tZj-_PmC(+zTiI%S}@2LPy%~Da}7<2_Pfd+ zeOLMC-ao7OSBS|_DLZmGFPDCyDJ?f%f9Co|an=+Q1BM-8H`p;J{TucjZ_>osk^3V5 z;_Nut_k+W3up{gS`_j7e7Q6nuVKco!(PH!2f8uoG3k7}>_ebuRZ7XT>r`Q-ccRbW8&<{V?rrAx*Xj&%Acqq_eY=fj`{Xc5`@6SOH7oA zH(n6@jr+=XyQt<p>|niF_CvrQ z8x~maGdP>ZEWUq-U&iaqudR*u%W})DUxqOMkezq^A4U05s8xK3c>sJce)tcLj9+|7 zyEZ3o{3x%K$-B-ByTOi`pNd~5?ZoJ3^YMlL^pf`#!U;-zO|3;R{UMtkr4bq!kB!s&b$}RGwwR`vsL$c&qnZzvm?(@{CmFo z*RUJxi1`-wrRQv9zbDCVS5tU(Yu6Kl+v(Sq-+cOZ`pNhjS~x0(aTWK&1}A=%&HGKFt~fhJ;ks$z&c_(WF7gD5vmJSz8UF8MRQGZuoapP! zt7M%y?*3?`COr2{&trXNvi82>%Vp~G+%wPZ>Rz#Iq{RkwQMUUK<1 zbipkAu0i0moQ3pMgV6m;4>ao_TZt+2 z_0O?z9G^K0XD?gkWsjOMZlsq zwSV-}U+nw+7O=F~=)Z+{7T>1P`bx{EW~IM;%CAk=ZdZoVyZEcI91Zf%*U>-fQ$^C*LFs|!8(IWV{_8KsRmLFq#7utfhy1J+;4t4A=T2IblkNUWt>L8i!Z*o*`9xa z@urtx%psueZ9V`|C)_&l_2%L+I6#p3!oXZc(fKJ+v|Qz=^nhzj{Q`B-L`jfHz#38%!*Qn3G&qYA=5xSQhiKd5t|zr|(pRUBH=aCtU=pNHPP>Gj{) zI*Y@jD9nH40C}EdF`nOlL)*D_jM53)hwp))zX38%*bM?ZG#&oFOT{)V&3ip`E42^4 zkWU-u;LnQx3V$|tn)PSl=UTe(@0^8mR&-tDjl!L^E_-1+viv_17E?*g$eFu0^=HGj z!|H>r(YBE0!aA*&#yjrqyZ++)fnv_6i>+(w&+dA?ryNraq#78{8Za}V__N_mu4`P% zpC#M^e~-uhIDeMc!(uMx5&X*VXHA)7>CYbUmG3q2kNsD~S+oMx*phy({Ec6%W&pvePD%0NR)vM-f zx2}!#XW_rXpY>;pKO3`7%l_=zZjaVyk1MWRc`2s()I{L&8QmkejGX!Jr~Yi%hFFVk z-_&uyzzf@6>d%I{ux-(Wb-Y-AmL~n1Y9Q4>s)2GeF#7e`aI8mp@%}80@5RdsmQ4Hw z15CR0S@;K0{w%Z>>XFBJzQR!ZvwD3tllrq(Wr5!GTnSw|XcUD%3;o6Uvt_T(ivJ3K zHn-NkhXFsguykJ6ZC%lE#n`ORUZ)Ey4>oPj&!_&Z?SE)DZm8pcS-~6+f2ltk>cTcZ z7uNA&{aKpyZ>oV*1E~he(LllaZ0v@?U9~$Bp&!k_gowf-#DX>|>(KU;s+n(pPRR(m7bL~EK) z*oMLqt`DP?#7w`+{CDclhJGolkJ}JJ9S7{@+cuZ_vsMqq`g79}FV>$?dHN^SK&pXM z17&HTz@Lq!*j4^4zfT!+@q7{d;`ST-`Av=3>uTngUE$Aexcm&6t8C4%e-?WTcEx@J z_y$4}4Rv9g zp$qGHvHmPg`Zv`;s)1Akag+&)PW*`(?wrj%fd^_y$C6=v_H%KeW-Q#T*aaGXMfxA)s4r#XI1mVe_OX{uW#LaPbT$e zouVSQHo zFqBt%zX7mR=<*mB`we#G`Yil|D1SEGf5GEBU&W#JXN&gFekk2PYjp?x>A4a*4Y4=| ze>N}ri}Pp8eIE?|EBx8q-!HzMzte$r+QQP=pFMf`iWNGwA~<%x!HpHM36M=2%)Qb2 zv(qC^ISnvJ5qZ8mFHiO7_CszkF0A8G`J-rLDQT*KR0Gd54e$cItI}5BwzmMWR*77 zpZ$a`tUTEC!~BV3zdl=B9oWgX|8)Osv4)WHe7PThylI$fAk{#sfn*Js>2SCCvwOx@ zi09GZHy-xSvY*dBt-Sw5dlKw?JCgUo;2%W!v*DftJCECPSWzJy<1tv?I@75;2)hpf-aI<2k&`LioJ)~xAVd30;n$~D~`tJhTQ)W-U= zeY&vnVB^pFC#3#tVY>|?eES%TfF-G6JU9Sr(4>tWO^M=%)4Sg+E z9JeEcIu6*)x9u+VXRRKJ_2;G|UaUW(^7K!tfm8#j2FlWa^=D6G+}?PC(*7)uNA4Bx z&+g%(6~>uI@EZr~vsjOn_1UnpBUzt?e=t`5Z2p7k{@Kt%m>+c*Vju>87Wx~lKMVgA z{%r1ES)Y}4T9k`$&cahxUQ8>rowVh^gcUE(da>)XH=&TqLerOX$EW^m>d)%_Gg_D% zVksU``IR-^6g$;Gs)6UT2AuWT+Oc1sjW59qd|9%_I9Q);q59aLv)_PyTehn@jy!rxVA`nGT9X;m<;UqxEOuzrvsOx5)aetkdcm%vm_UPkttt4jrHvibvpH2N) z_?f#Z8n%*=__Od2qWsyAGmrIr z6^C|Ro7aPFe$n}}sXuE~Bl?M+Hysp-!k_g;e{ue7+2_xS{|bNBf35Xr;pgfa%vpGP z$LdRUYDKW|XTvk!LfV_dXeBYz1~W5Kf3~;{u^KD$$I|s#S6`LuuabtF;-(r%HSm1b zz<#8F-FIHs{#07b9@>KS*(j^1H7GOhvY)5YqezR=UP>wW>CBOx*QNI!SgzP_0RJG$ zpAG9@?8jOzz0KO6<@0CV^Sbiar2A(>JGyhI8xJuMgFg%X#rd;kpFb=9EBx79y{ylQ zpNn!4l0Un=$IAj7Nf^66`=2A>X7{jrxua5lHuPOtk#67AalpU}+g$3;hPtrL(S>!q zSbvr#{hMka)j+C&ax@TrPoc#2S+CUlU^8dVlyyav7ymw3=(_sV;?9{4ibUbhLVt1oY}xCx;=jV5 z^1tv?I@75;2)Z&{xeKUdda&cZX+F1w_2Ox_3EpbIMxHvX*t+SH#-{aN&zT@`Wz zEX6A-zr049Vx<~LHIQn+v&a4Hw(lwI9j|hpM}yyFJFg4=L6kph7TAnlc&z8EIMnO2 z`g^y2>d#u$1^SDcHysp-!k>ly;{4fi_Zz@}g+J?8$@;9U)9M<`S-4>N%B9((Pw%*7 zQqNnornd%J07pu?hlR6F^Cs;?%3@&Xd(Xgw=2%;f`2ep{%rmO z>HgWUwd;8jaEO5z{8{L4wEisoSNOBJyAHSK8^}5>%0)P5;li#pbo{J0k}us_Cb9nP zEhwb2(DbX^5vf0$`m^XayDH>{Sc+Fver1g}#ZEPlYT)^-0qf72?LRw zdW_#cyAM!`!*S-%_R<~%GxqM1?(9b}g+J@x zZv9#Kxw-~(7M``VyJJ=7(F-~|E?qs6<=Ob}Dcq_HD-SmQZ2pz0KO6d9tT=8{2z4B= zn{V4-x;|_5P^>>U9r0rQ8I`AhQVpaUNHtKF26pfIEc?YV*Ld@1sXq1$T4#OMq>bdf zF8Bvy<+fMphy({Ec7>8e-{2L{Mp zCTu!z)N_y9%4DF>jNj(JBK2oee^&RO(Zbx)O7V!wSFJMzQw^jVNHq|vf!*uRCY)~& z__Vuo|Llg#&oFa1R5TXnb-_P~@@GR|gvWZmio?YHv#CF8RTtaR#^(EApVftx2b(sSdD+s)2Ge zFrATP|7<*dsr?4w90L0I{RTXT84nt$Vd(mlY zL(c9z$*Cc%{aJlpS3Z~SpDom5XuojI3^5RcKMVcE`LpGo*9HF-{%r1pvOX*8v?v!L z`?FnLYqBHSX<(U{?iAIhK8Hdo3r#=F)sMYDTU;&IW~o10te-HYs=6lP-0ktIKh%rs zk9brVl^@ES#!?NW8b~!zS_AI-Y&<4^1A+J0vM)z#r?U#jCC~Lm2`k>8jhc6*ROS)< zcIWyml^bzhR}0m}{&s~w3;!U>pAB`=D|##rwLh!RH^`;_tTZDISbtGJ2SuXrXQ971 zf41!N4a9$iKkHv9>$9>>t7}01?8=TyJL@xDU6+o~r!~zdY(rrQpAVyz#7rB^za;f% z!#2d~bNi%@0|s8$_R{s)P#3lly0DHH>(A1pe^U*l8b~!zjt0z3*evgZ#S)ZSpAE-) zkjMM8F91q$$n$9Md+z<&UHd*5{DZObXEUik>$E66PXcyOBnp2P`Wvl33;z}VY;NsU zw_iXHC9qDbYe4>N*Tri(SB}N`2K~CQ@?hi7`Y#@Pe>UB3P@X}eu+sI}D6OPvsRmLF zJij%t`}Z3Z&tt{{W*!w=OuGFB@DHN=*|7bw-^EvPsMlxpegi-CXRYc2{lSNILkC5o z@ModFIDfX>{RZ$~;m`V)T7MRPuC4+3vuiI})7`Ojjm{|>HaDbEed-HkvnW6`Z7_4_ z*!!~ur5d2nR_XrPVhtfB^=F}pG)y&+Y9Q5s)j)OneK1x;#D0TtZrv684d5S)l|P%m zI^91T_UX`e;WJ}SE56{*LVu(6XW_rXpUo|i^;ub`)is#2a8YN^C=NFue#V~--zf}B z_+l8XBxdxKJ2={(&Ch(9IZw9|hEcc^%O7J2(0-E{9{j;e*>oi@=k2-WvBnp2vC;E%?XUpC{EB-6|S(FGr7cfHd zXR~WByJ&=4XAKwQ&ze7AD&g%4E)z8UFn>_AKU*e`L^Sqii!aw+>HA>C`Uz7e*8KqN z%JoM)DvZhxWlm$M22u^A8Yry+GZUKqv({&d#xCX05{2uF5*Y8#PK##GsmvqzO}hQF z;vYo$v!O4-V?1BQVUj60w4LnM}5J^-?E>P1Ng`XJ}M19{t1?U>uk@PK^@RP#y;OToDidQ33`OB zvs*hZ>+J6E%-^GCjP&zvQDuD@g_ISVkwM&fa&mUW43?cYBk}&aVWjey* zA6*!KEadzpJicP{Z8rTKc**-_tzZANjAx#A!(Q)ie*K3(AHV_PB#E3p*YkR&P&-;? z`w>6zi?Xd2_w>07makaRaY<*l&Z!KJD(fpHSonXq;vU}DA9v-XKlUyA;hl`_)FEsr#*J4BD>u|__ox$Vuopf;(Ih;sWHPxAaub`j4 za(7wzU3nPCg~xlGZNk42z8s4*DX+Q+`;C>oSb<}~yOjO%opxRvZMo&veKh@>`&d*x zd8Leh>}Tk!oeJ#XLh0h*ZS)(Y2)S?GRS&+R`9IG)wQ0ta?JfSN_H8+C>AL2gcel6H zc=a@YO_8~)+Oy|j5WzUU*bm|-6&T04sw}U+{eClU=e}!0#^Z+=80Ue<`e6NX{sR=p1TATLQ53W7&0g_|gs>e=3887(Q+7o|3a@aJhE2J&l`;efF z?6vbZk<11Ua=g{1H8CFahcYa!Ef;uP2IK`lOKbIaFWKYM>kn=||FMINeOb>)d&kB; zlg4`f5#imq{@_g(&(;}f7BAqp=_bKLoe7WAni&suMjG=&{is|+Yw;|<_NV7JZzCPJ zdO@12zm_A84Rnffk><+#(!-Ap?16HTX7Q~4&ZTmHN_Mm57N)tj+)U>q|L~c<=9&M# zJ&!Z(^EWpw`qp4jMwrI-u(WIs!fUp8mNrbYc0=3viQq97+Qtt|8QfkhKW;-7 z&$c1kr{_0Yyg`GzD*ckSOc7PAEoj5vek?SmfsJFKaVe*hB7z};|uyFr(t|S z{Wy)s7fWk(%H{I-V#}~;TrS2JE|u%@kq3vHA6a;R(+i$xYq|2xp0|z;0q3+MH%x1G z(_VIVuIX4x`^jP7Xa*jq4H2!I_VYb^oBvE{S1))?fX8Xa5v`l{k z$DZ(i0Y6TgL9}k#jJxk@ejTOFde_APKTi84(Yk5NpZ!(yiwW=P!M8WF?)b-Pev~$W<5%2kG|+NEx_ZnI-+&c4jw$r)bBO-4+Zs`^Qvv8+!MaHIH(J!asAvhragwz zT-s$zPc^#wf8LUS-#edvvC;i6m%KdS$7x(YH;rjo4wv?WCv`UeiPFB@FgM`${;$5m z*zJd3JS^bHX>4CNjcK_ZxU|2$>u*hL-&@-H0)B6PXisCer>}ZLz>m||zHS=Ra+`E% zn?HDTpnJ5_?$(2hY^-NDjrqB0Ov~+x?FPJ^kKWY$FxBs@$5#im_3wIO<8LYL>p8z5 zjoXl$#b<^JY)<2p4d*EkJ3+i&m zDX(n$1L6HPw>gl5(^yw-8q;z=cWL|Y`?is-|0h)ezx~eWZ~g`Gn>+Kef;5)RO=DV? z!=-)GOKVzwO|<`RYzk;Ojdky)t=wayso&;1J{#1T(|CMw)Bd#f!)AQx=-D^G>pS$= zmd6NhQ`5dd8Jxy-x!Xx&T5f+XE%(9S6YcO*_XqsA|Ne^74u8wSfFGx^uG}=H<^JZ< z@|ehdn%gP*Igh7@QQDWNjk{@R_ef(}9xP~;0Od%;){C3Qz5vEV z;4P&z)-#WZNaJ~x>&J7Hn}#_LX*}1mufp@2n|3hKx@kNP@pykLji&N~d(%d#gD;&MNRN&6ZNORjR(%d$QG`Bqy zr*)KW_@RFwjrp;SxGx}$`Jvq-&GnzT&OBGU{xi~C|JhA*`##gU{xk4g{~2kn|Lmr@ zI%R&Y{|r3We@2??Kf7t}c*Xo&{~36$|BN)(e|FQ{v7Pz3{xic!ga3>)*MD}?;6EeH z^`B9$>p#0`@Sl<9`p-yn{b!`P{pug}^`DXE`p<3}{AZ-O{xi~C{~2kn z|Lms0e@2??KO@ccpONPJ&u$w0XQa9QGt%6?iZr)RyJ_%&k>>i(NJBrz{Kk6bG)>EW zm3=+TQH>i(ZW{b&q`CgH zo96m@tOM772A=CbyJ_&Bk>>i(NOS#Xq`CgHn+E?GX|Df_G}nLT`tr~9pWQV0&q#Cq zXQa9QGspvsS^`G4|_|Hgl{b!`P{xi~C|JhB0|BN)(e@2??Kf7u0 zpONPJ&q#CqXQa9QGtylD*-eB0j5Lf*>@y(E^*4~l{NP6*%^jPN=8ls{bNy#G4gNFI zT>lwquK$cQ*MD}?;6EeH^`DXE`p-yn{bx4~{xi~C|JhB0|BN)(e|FR0KO@ccpWQV0 z&q#CqXEzQ0GtylD*-eB0j5ODOcGKWLBhB@n-8A^mNOS#XHx2$X(p>-9O@sf8G=A>Y zdmue0lzkbelK;%lz5H|Sz7Kw8$X9!3Aw0aa5FS$Spn~%X9#C+M^9mkNaKD246r59VkAkxbZdY(d!Ho)TP;i}seFYD9 zDESpUsNlSU2Nc||;64TC6x^fWtb*GWoKbM2f*TZEr(j>f!%LL>3LaE&Ucmzj?pJW1 zf^!P)QE*nl?F!B)xKY6k3a(SIui)XuN`3_oDmbs;0R{IfxKF`31@|a8tKfD8XB6D1 z;06WPDcD!=@P$f#1rI7Xuiya%_ba$h!8rx@C^)O&b_Hh?+^FCN1=lIqSMcx!N`3_o zDmbs;0R{IfxKF`31@|a8tKfD8XB6D1;06WPDcD!=@cBx91rI7Xuiya%_ba$h!8rx@ zC^)O&b_Hh?+^FCN1=lIqSMcy#l>7=FRB&Fw0}Ad}aG!#63hq&GR>AEG&M3H1!3_$o zQ?Re#;WsP!6+Ecmyn+W5+^^t11?Lppqu{K9+ZCKqaHE176kMlZU%|uYDftyVsNlSU z2Nc||;64TC6x^fWtb*GWoKbM2f*TZEr(j>f!|h6b1rI7Xuiya%_ba$h!8rx@C^)O& zb_Hh?+^FCN1=lIqSMad9KNwQ*pn~%X9#C+Y8E{R%&?@_hy86@G)tQ0!5M|0*Yc?R22HQvtb&Jz3+2r#xL?6J z1!onUQE-ETeFYEwLzS=Keg)?goK$d%tb#KNZcwnV;Gw^( z@)g{#;GBZ93eG6FLBYO)hn`a9E4W|5IR$4GoKbLtf_()K{Y{mx;C=H9(qERui$(;QprXNbkA56&4C*%(#WV^7|9=`&7Q1gA%m=Tta?N zLVh+Ozda#8laSw-kl&DyU#Ifvh=IcXpO8N+&n;koO+S>7KbVl8Pskrg$nQ_c?@P$f zCFJ)cWV^7|9=`x5eV3Hdz<`Pqd0 z_JsUQLVjaHenUcjT|&N}kUuQXEo1GUkUyA^pHIjiNXYL`$nQ(Y&n4vdB;;ok^4k;g zGYR>P3Hc2P`E?2TenS4RJhzRte?tCXLVi9We;^^hKOw&_AwQRp-;C? zHzwpaB;?m6N0#C4f;?SO3F4$SP~tlMoa&`ZOE6h3@1OG39g|CyAlF)3GVQZCn|T!KltV3TrI zlXA6kAE8hGnUt$BDOYV$F4v@7f=RhxlX6y*a&LO5g?^{GJ=^ z&pmcCt>4P`-o#URc<+QirGvGy11(s$B@sFTwRctYmN=AB*Q>w+Es=!BNd9n2M@fu# zBGAva&=F`EL4QX|Jd{$%fgenNnGcL>;KL8D_2WPb_EWmPQxItBM|c1cWMEqliQ7`@ zde=*!wg%1e@FnZ%Lzwdh5FSDVJ-z5Jt^uQ7qa}v@tUrQql;q=`9moUuVe~gdVt-1Z z7ks=|XOP6OtCPeX6^ydjZ+Leh%Rtn%h90Q-82*J$$h4Cf@55jWpY)e})YrBDG*GKY zxa4=Cw5P;q!@d%uUTg#E%QAt4Q3sTZw&ONM8!<**A&0-HE5{6c!tL9EFzO5$*vl9k zZWq|X?b4Mn`y6eGIwLRI1hxX>GX_^53ACVo+%9Mn_yRJBS=1SLApPaGfG=4de&BXT z401c7PRN72{`8kIVv}Xy8;&2;7e0bKe87CPJL(TU;*r}FZO8m(3Lk#pb|k2`Bl;P) zBVwNW6ylKOQCH?eKYWLB;ZJT;lm*{`5C7mA@L2jAC-HbnCrBKl;BkamCYmtb9frK% zBM&h6EQ7qb20rw$Jj!AWdCm(y@<4t8{aq;WX-c1xIFr&Gi4!SJl6W7b`z3yv(pMyY zhSFyxhMuz$Z=!Uw#9JucD)D(rFGxIx(s>e}p!7kBlPR4c@qLuuFY$|%{#4>LN|#9N zq?Gl;{w&EarnE%jiIh%}80Dr)oJ}d$_Xy#;B>xslZF7aea*`A$*cS-(iN>e0uQd%kTK}ruv{1~N=OPo$A>s(8Co#fw5 z>Aey|{z-{fQCcAJOiH<|?S!i&-%hDR;@2qsrG^Jurcydh^3y5JkQnv7Q{pm8*GRmP zQp5q`%|?G&C(4~g1bz+ueOO||;2DX*KPB-!lyY5Q&+8h0pydflxn36ub6X&;7iltq zmPaZ5vBZdF#1_hhovS5=uZ~Lm3Z*}j_-RTJ-)w)p#E4(SBKVN`iNuII#1r_B(BB_P zTuv$byOqOXF#jsEVC7&hcdTtO+9l~1@(@)3843FJjAzoFrQ zTAxNtgP%Zu*#^WB;u!ox^q1>`K6eCc;>XipyTmAWt;8EB-7GO|SS2xha!_KF|4R)I z)XJSI`Nt?lyh1->@KuQsUx-EU6Y1{^iH}iwzrA&;*FO46iR1He3`EQS<2vj z!6*av|Be2l4#3Tc*G%%?AL%)$^;M(zChkz z(_iQX4kjM*1OJo${sWNkm-P1wiBbN$689$AUQ+&d#QSf_znOTb5AqJCbdbdHl-eZz zoUTGIWNso}Tge|m=_rXI>yY>=N&Z{PU!oM{A#V@5-d)Q4ia2je{s)x4FY#X~MR|}P zO0uXYa7#+tNQ`#wAn}`Y6}lkv3H`kUNO&w=kCrl%DMieI4<6nv3=G>tB!=yFiT{VL zB3>aAN4!|cM~omw!EZ%8*aSS1QuqRR9;Jv^V8m&H#BUJ?wt|nCLR;oS@h>+>LlWB_Dkkc7Sgs z9?Ap$hW-jb!f1cQ95CV({S){-`iruG5vPb7VAziS42&@beF+$S4zUP~evI;f+f&*} zV)R{<4L-&L_yQPx6y*UU216wu@r4)yALBR1Q(#=jcnXZVqW=SmOKw?W_L_n=-R+=8xj#^rjB)VWC+MfF_wb&21n z+?xd3*CU)fh29fCIb(U&$hlc1Wmy&Vh*121>_ddg){yk{? zlJASgeZza2uWfMzC%8(R>4wu|U3|#sn0S7Wqr*lxSYkZ#s+eVvsyI~2e@^l$W|?Ee z2jNI}!!E9IT{|b4XsOd#2REa4ugDzKl^9=AbfO#(4o-m~!$&&dH|04n%RT0XS;j(q zt_v{x#7RC@u}h|z0=rAO~tAVW7TGhA`h&}FiwZ>ee_?* zaJ|$z0&`x?uTqa1OUQSO2nR6Re_rt|uuDd5cUL<)Q3f4O%4=XFo}G#wi=rQx>j)Xf zmx#~t^SK+YkYz!Jv07iXUTS?+Kd3q_q>sx2W}T2>oKE-{5e~x-F6`nOzUT93X{Uwq z8QAa%ZlBVnjH(m)xh&R&6f*ijI=PK(ZrD#Lm+@nY4C=*sfmIpCok<7Fz=tYUWf((G zg)A4?De)yY%rZ8*o=(?r0Pm9+WvQ5DpojCSI^R_E1G9{iFwSv2=7#;GZICgr(H7vd z{gyh|kojEEsrm|-bwY-*%?$@j8=zmsEbou&vc2IG6{k}k9FSoQJ)Bq7=_DPjADCs} zbIuF>D&8mcLq^BMdsFhAZdlhze8%aNmu&`S{WIM#%cx~RhRapuA>-0h@{i4N`#={ChclpU7j)IJz>bt9#X5dmx>|Jd=-DtvL+Vi zut&xJB0lniuVV1xJ4fjCWegpjFyx>4X1t~!GM=z11N`~F67~8rMqW=C@`FWtU7j)I zJz>c2|Mv)8o-yRT;WKYJ$HNcE>j@(-^MOnLu|e1G39B-|Q(8Q$`_mJ4mx)<4Q*U3! zknx7;=~mb82_vt{PyA=TZa-tlc*5|>2Q822`WZvs6F%LnR*$Rwgk5FRx}btp8C>t% zp-k8B39B-+szUyE#WOJML)*Dymihc&DY`r`%e!Ni@A0qYx{NzkWf(v6jYHS(j=3!G z8Bb|(QTGop>v6{{KUj3t^^YOUd=;xQh)34xjyW&*jL%Z+tC;hGuVR)tI`Y^A=Bs#M z$gv45qvEuy1NE|iIj=kByz!l9>ON8NHsZ64iWC1?s_O)18F$R(-rBla*YA!wFZhi2 z|2tgQ53KT4%=#bh+F94{j#(aj#zv=DXvRUCXrb1oECR!nR%L!O>n_dz&1ppVhA^(V zV^s#%Ba^1-`aNM)2KejUc76P0jJkWmkRQ2wwq9RPSd{@@erp$9-V;`3fZyCRT9@~P z-DOtY-%OkDU^8RLc*2k=`Nuk4KV!&y!jQiZ@Uret#*p`hw?A}1o9~d<6GmQ@KVffk z-5$n}@rHNqEYamXVdP~#@SK4sbo)JFRpzPW-{>)>;seA-eGq#p2G2TZyRM%xbb7+g zlK!RZamUC5{ope$x-Ur^H^6ttstn^p$J4Yi1oFUavpZ(_nENN_GQcWd#jGb`=1+9n z+_5Ud_`wq$bp0xRn)s|=#b)L>RmOe3gHEct#eKemJ>c7ax=@?%;Gg7|7HV^xJ62^r zexRRjr#t34g3s7-GD>gXD#Bbx6{|9@9b2X6b;q0+e8&ABD%bS`t9%u+J>4D{sq1&g zEDt{8xr_d+`v+L%tC;m;-S~V*T8EeG)eiD2){R?HinVz777c>6`9VZ2iLh=ygs3Y~ z08t20AklE5AR_4SBSK!Rvj-FPC7MRmpD39KI>75hG=S(Pq9~%aMBo9BB?>1ROf;Hk z3{eD8PofS)lZl`Q^2j%n$V!wT&!Gc)VOu+*fke0tIjqSKBZ4l}r3=vvqV7bkiNc6b zw@4z?8D+!vP$KvOw#^|zP%b2bkLD9$AW0({Nz{gDgrrfD2VcNe_%4O$W}@ewcOnt&KzS$^w!shZ2YimQQ4aJ$FX}p!$WGLc2tI;up}P+e>fDPch6v^24>pzUxCaWI7lKAB2{JhO@58`J?dPa=X%IQ)sw=7);Atn%Ch>yuc z@CAH{GT|G<2J%J{p)R-vf5Y!+Thz-zgnGbU*o`(sJyBn@>qH{N5ZVTHZAAnbTtm!E zC&J-Rgu20xkbzCehqgdF+KJF^h)w8$KG+XCVee=n_yE2{8>3BOH|$3}5Hsi((1AEb z*~o`Fq238Z(2X{L9_WM5p#yC=iwHVk6Ji9{{D_i?5cBW>Y(d<>W?X}B5p!s3_#Qs$ zLIm4j%Sa-`C+deh&<%gVH)u=P2%n-oZzci{zQ+N-!H@72`~llhH`E#1NNYf-HG5!)B%2h4%h|^-ZUcA13cIbU!k6;FX9ui2isDJ;3xPCzJYIXZ7LDk z)t?9l>_28)jXncL<@+}*6>{b5$fts1U=Aa zBZ?tfLBrxC#?i-{03bBSz32Z$U*w-DKhJ|sdJ4-lcPHV{oB zdX8u^k&_59Tt<{Y^xs7A!CoTx@^vD#-FrldM9Ybii0&mqEUhA%LG&rnOrnECh`l$7 zW)p28g0FWIp)M~aqKAmGh)RfZiQXp4Bicl?g6Kse*!(l1 ze4=-V3W@$mR6w+g2tN2N5o~#xsF;2 zdZJf}))DO>g0DUzLfd^zgu202*tnl)Bhh6dClSitN`yMV_pcFE5`njk=r2UuiS`h| zSG7ba<1M0UqSHiZt5Za%8}jZXdW8siULZnj{DSCKBG`Nj(JzVE$FS*th)~y;h;Ac7 zT@Dcaoahds4~PyC!KQ;mmxvA%p)Pk3!AD1kenWI85p>*5be!lY(Hlhf5aHUrM6mrB z(Pu>W6QOPHBRWZhJijA)fan6zLqtCzdXNZhdV=UYQ4JAnLfia_2zehTf-hj(BSet- z5z+fZj}pO#9}|K17!iE+BoXTH1kryHK?i&e-)0a!MFbz5A^J1XS)v@Gr-@(_YrU!tE96%rwKQ8(0i1rgc;x?U#AB6@`gKKdCE zY`;hZAERy86TM3Gdm^+M>iQZH+T?YjcZtvjpAez#ZzY;Qlu9(7XaUhUqD4e8M01JW zB*K1_wUa&`ILS@DfafD zEml(cA*BVBqA&iN=wqVcbp8>gUlLs+!d@-J0`?63H>Hax{e)8NdqG{XzX!g>KAul0 z#r~YnDE${vEfMy&AhxlW2Ql(F(I1K8=^Vbt9xJpdCX>sQU|-H(D78}x+5VLNl~U}h z`GV4pl)^Ubqxp)`=9K=8Qta9Jn$p&k{+&|DULnH1HQ0i^KL4Z?dvX3jX&R;9P?|?6 z>W=+YS1B!~R8YEpS!1p7F;DdA`l#TsfZHWAduumz62tL6+ zBJ9UXB|_UQA;O-Zaw6CiK!m!%X0&B4QD-9FuQg9%*xr>eY`{LE#YEVrR78X_u=fqV zSwrMUG>ZszgD$k?7$V4EuN`7(ArWE%w!+tQiLhU6DiP`cn_(OF(FGEf5~1zk`yfhJ z5Dg-NO@oOtiG~o(AqpmfF0_3X(J&(T1~G=Z!*{TK6cO@-5G^1YDJhiFd?M`IiXy^3 zLbMUux{xS>XgU#mj<$r%WFpitkqEH|o5m51C&Iq15+dx~g6-e|!xyj(F}$1z`_Z7= zMg$+n6J-z~CQ&EE0(?7>2(dPW($z#L8@`xCgqTgB6m^3y5u4K}#WmQBy1+)10pG$l z#QrLxBqG=_lL#@3HiQpm6CpNJC@mwJLxj4`BZBYHcIXR;G1!LZ+VnQmwsL<|3%d3m z@qaje@WB619!N>udv&?>;Mu92bE+y+FO+BWKX`U#WKPwyr5DOimhQb8(f;7s;+{EG zsXJ_oax~0{@vlnj4saiPcLiylHd#`@l=lqp_biDjZ$L!+Dk=c=L|3ue!x67%D zPPkCsGGXu4-}&cM&02AxJZi<>s}(mNJR8&F;Mv~==Tv=NaH0H@g1uMoyy@WC)!lNc zrlwse4@}#8HNE4(vpIcos(zVuq5Q{Ld#`>LxA*FMEf1bu(>AB7kL^PFnvHv}zB~Wm z*5sam)3Liw3ld#@gDbMWlT9doKaopqr+n9A=$_C097P+nr+do^&u-m7VC51tL` zl2etq;6nMAAqUUCGBu}af5nCJofUhpe%|`v*{vONsx~BFD4(9Z_i9aAWZR3~&R=QX z?(!>@X~mVDr;~q3rnG%dm1Fva@~7Kge#N<n0Uf{%BHU+uz-E{>tfAmtQ&B{`{4rB$GG2xbm*)k!|0}h-~|A&+}IvZ-4of z$1{p6pR`h%T3q>YYGm8(ozGu6(DwY57L+f_R$RHl7TNX}8zbA6uR4F_i?qwHT-;b( zd4Br&E02X;e&x3n#g(-ck!|g>BisJ7T>jPG*!mHjJonmTz;iRS#f2TGUBawh<``Ebm2$q-*-(+U_-0S7X|DGaqWtPsH1ErEJ1HoaN?Ix@V=M6(w^wjy z1$R@hpMv`;*k8dx3JzBA2nB~KI6}eE3LdXun}R1QI6=XQ3ZALpISQVy;Kd3~S8%3+ z(U$C=d<7RNxJB0zY6|b!Cxu(ih{pUFgjsN zI!9evD%h&v_6o)`6U*Z{fHCg<8RHp>vA=@xe8GG?GcX>ZU_9S2KSIHHZec#2Q5f44 zjQe}$<2l2HTWHS|z&P;yz%qDNU_4*Jixr%%;7kSQDmY)kMG7ucaD{?5DA=jsZ3?bd z@E!&4Q}6)=A6D?)3O=Ub2NYbR;71hvn1W9$_-O?{r{MDneo4U>75til-&F8B3XY#m zjYH?vnSHeR0neZG-{%oOJELS(M%n6;EK6u;m``!90-nmkx|p}a`c2Z4n8*0I_~s_< z`!<|1-#xv!uFZ35KK;7Yh44HIwX9m3x9EiR;(45}>3IoMPv}!eZ}rG(n*Ckuq>}2b18MA2AWVuy!Myvw0>KMsho5s z41!%YN>zE6U%CD0Vx2?fJJI$Y4%hogopgok$Mt1l_5+1Jh@7nP)PUQH+d`@$-GBO!oU+UEQcG`|1HqM{6BS&IxJLhTFHT_(U z2Yk*sIXx!x?I$b*kn^urhzoDrVJ86obq$$lNtOnwguV*!s3ZxMd$wHrGw zu>alTkt@;E<3etntG$DLj0-HscDc(p)wodIz<#32*Vj*swudLL9T#{$;c<}b$Mt3Z zvmcsjTzId6^;PA)*Vj`&F?g=JYJSk(%ZqV=#{nJ}s=tx<1M2EqsJx_Vg?c1~D1xlU3mv+61@td&A_K@d)@+6(p;cCA+=l23h`wjeD3SuHBXhd`HOb`3h~#r`Ah8hhy;og`fSVohluLksi%+0`&F(l*N^K9 zSsd(#rWzM28dzUd9`${f>iZ(q>3OOr>_fVa>Uy}aAQI<4r)zOk*Nw9N;CUJscpTty zAz_p2`GCiZ+Am!3!Ot7eqaGL+O7e1YuXkYhz%?$!VO+@m?YN<&J5G)Z1f6lepY!O^ zynw(6O8a44`11J9hjC6R$4KcwA^^NvC^_YsZB*=zigi8-2eZ{qG)+T z{v7+nRoA%CtoM#^#E|>_0@si0%l>CSG}XA^_jbd^K~U;A?l(f$(3OFHQKJ{$Dl zN_cp<4SIwaaJrACi}se0u4mH2pZvzPMnO{k5m!kj=h$KGegS&!B|Spywb6J$OH${< zZ%SWHHo4Xpj@EyhNG#+h1!o@?OpR;{o?}5v0d)+ zO*Jm$Hn5+l^5`djf6F%E%}>|H-S*$}wV3+Vr)$rhaIAc4-N+@{`4Qrmj9l`<+h3Gw z{RlCL7;?W~;QDcWHRsbG_Cr&R3r{z&zN$Rx`%kLxom8i{sh+SA=|-ySlSvucxS(C5 zx~`G+hm5CjfyV(J7a)g&$BW$0>y8V&zR4-Zg~r@3487;IbJU09FfO26;F-to)7q@p zp5KiJ@9d{_)*AJ5y8fKS9}=zud0j{w7c~6(Ya?vXbLP{{=gxjAXv{DU8VfYvLBAi# z^xCtW#vqpsNO@e?Q~7e-`KG(RAo&BjcE_@a9&)BbG)@imv{@Mf2AoUa466Aj9 z_pj3b?(xX-O+GHX>T2)cuY8OPQjYC%mv5?Z!TPI)&7Z0~{CeMkE8|7?4d?EEaMTO% z*}uDQh+A|2A5ULQAFZ|9apJ$4KKg}}aTQv;P#=l->U3s=`~3pfkL%0+ua$mis&Qd{ z1M92GqrQ(&eYLvwaQ!v{)jjSFs_XBsent1Zw7^F7MP0$;I(QlvxPQBk3!JC=O;>#I z_`!Tm*W_j8H)i3H`kdA`NuLusyPVv2ZpqV~Pd|E}Wx_PqxDZZ#I_@dz*L3-GZ;f|_ z`nR^$5Z=ijxm*X23m6N47eBp^`tJzset}k$pS&W(6D~<-7~OkN9ArF%^Lfv92+#HZ z`bpd~;GFfmMtNQRn)boI(}Voz8W)ymdS9E6m{L5!I_Iz2*oA!89`%n2(C2GhVE?z>ll7apB_ww%DUn z&b-hfb%oZ}0mN^ay5iiq;3L}g+y3^4*t;j6KAnAQKO5SI$7ik|*O&dzerT$3;YtJR ztIDIkC;z!E_T5>_;uik(6|FuGwM&dGUj10?TkpE++u{$!aqW*Ee<8i>@#j&8n=I$U zPVD$&?0*T&na;SRc-P+E>X%M zc#IecfA8$^bE$+c*J|rwevi8LBOx!=4wz7$7Y5+U5Dz^I0dCsiwJq zbJ@iyUvsyMuY0o#@|k(1MfvoTo~yD7=ySoWvfRSP%uH;F=M?_RrAr)lK@>l1v*#R5 z$#soO?@@squjPczl%G5&B{w58tHeLKFf*&HBrB`oW_b;A?WWqKK5NQj+CB@HH85t* zbs6JcT+7s8$ER=J@36j5sp+>q=SnYDb#v`klqvF=@t3=Pv*)e4o0T*thj_b$_LlX+ zcU53N*Uy`l^rf$#`1@x1UWL}`@biq-WksvYk}}G&O7b%Dz2$S~v%J46yZdFI=XSDo zgC=#g6ASgvpB{41H~5I!6J4~^w_Aw5&Epd)chE$Ovzk(1 z91$`l=&W^EYylHBc0GU4?#HO1*+2M>kJj$i`u&u$x+I&1!g@5X>bGun(J8`>ld~z!Me zzk1d6H=Cug`PrTp7F(0ITlU}wzO{DadNefUcH?&9c4Ix=^ zPo7U%p66LU=QMq#`+Pblt77V^jGPAcSuKk{<<+*lvUc-nczQGW?j0fL(`FW)OOaN$ zbj=T(UTp3GOgZ&<4XwfiD#yzBcF-Ym%aeE5r#x*wzdTSWBj&!>rBIbZzqi~FhU zckQ(UK9}Rj37OJ&@@pr(_-Feb{oGqUxPP->-21n;eAnB1SYKoFv!15z-|#ElQ8;S< zr~dZm^1rK;`#0NZrhgx!{>^dE?d%@^?)7mL=3mbssjF#hepb}nGO@Yn)ZAjtav#U9 zuLSg+uR6W!xcDE?&e&hfcCPm_j&nce_T=_u|8cwXIj8aYMY$P#avf=7^BYClT1^IYUIgF$ zxL#h}GN84&yK3!R)vxAZtO>y`Nt!&{`2*kO(;xisALR#*Z7r7F*5F+gasSJ!v#$Ps z?I_?bubyN4k0u5`pW`=5JZa$jd%mCNd4Zq5d7T~lY^0CZ`)?);ef~r^{I$RM(~N$P zt{45LjPZGce#rxXUVLFjmG@+)hpb*%-8;9p4IR+a=~dtcUT}mDKDS`fXfY=~R0I#` z@vYi0&k-h;OpO#vr$vb+)5nUrj&Lz&`owcnCdS`TJEDdTI5%U$NU>;2xX4HxBUUb& zCQ33>MDDyPVs*{}v42;kn3X*3hS*>qJy?*>#mv|dV!@;^k)AwWl&@GQcC61ARqIxW zt>szb_U+~3p`*8nt((@In>{0`N$dz4+;?+g%m@)Z%wISnT;-?4hlnLJY{FTdD-Pef zS=@VYySQWbdU2?FjW}^fm3Xq|h^V>$ZZRWidZTQ}n>|6yv4x7bQ9)wDsDWZy%rLF~ zN#lo$v{@6yuF6vJ;L%&e=~GnRJ-3J>w{8?i_ihxY?%gX+J#bXqdFXbrGB4-cz`#J8 zr2$85*uc%J=ERD5_HdCfW|){96)dKWMcE_84D$cvs39UdZI(E=XM;F(e4jXX<^l2a zqesQP2eyg*RpsK&JsZXScOMW3Zo5_F<>rWz;vx|h73nl%f-`ffD4J&zX;Y%a%<-c{ zQVf+jex#UV4;877P%$$uL@b{_UF_IYB#s~4CQjY6M?CYRBjW5MN5p-HcZgk^3Mm$H z#s1w}#X%~6)vA0kb!vi`JbAM4_xC?XHrTw`;mk}BWsB@0cjkDpBq2)7nh+{x#g3x> z6(-Wq-x6a)LB?!RwXr}PJ5(i3QrRc(+97^?Y`6H)y}QLdw{51fb41R9>7t@AN9?NF zB6d`57b{n;6mfBJqIK)mg35*s9*?z4CW+OH90I;yI(3Yg9UCg<+DD7Dgh-J&BSsW0 zP1a)l_#HdM>63@WlMmi5P9EMWPTaOm+_!J7IJ~1&Y%NXK`o{cev0}yYCBnIBqu9E2 zi^$AeE`|>uj`Bg*90PiFv29+SAU0%75ykW4Mf$X8krEds=1&aQ#+enVHnF)dO^dNJ zKe|i&^qB|66Zh{G5A0hfj%>*hhc+!2w{OT2+lm&7m2+)k-o(*j`h?M9-s~A-OQln+ zTens?91bqu=59bh@2~mnBAvqD7O%EgM%-Y~LczJ$1i$ zn%eus!Afytd!e{(%_6a0bXS(ZSBWR0q^Q zpW1&m#oe^A!)dGw7b{ZY#E!Cbaqn%LsN9|6#NjG&2etK%(j{VReyZ4#n=H2GQlFr* zL0faCiSjhN$V`qF7_UoK<%wO@)gmu1&ujUU#{@ffREsnb=aWK&(!iEXtQm7VFZdh|Sb@(0)7fU4C%+U;_CsOcbxk z7Q1&=i^75eujOaW7<+D8&UCHqmrjimDGBkSqIi|Kb^Atf&wlD_M|X*b@7^Wu*}Fk( zD_$%LX^eoM;O7!*uXX8@#WwN*>VS3xE??}>;-ENpnO1&TX{qSiwJU76#{V>*okRQ= z&Wjg?%NL2tjqAm}TXu?j@4Q_+dg4xT_SBu?N5^j!ckZeX>+|M`oSEauzhgCDt(-GK ztX^yvm0458?o~6yzT#P$9ne=aFHV$YFA}?VY!mC&t`+_J_ec5X+}oe}__;M{lSFy; zLa}Yrda-BsE^+9oJfc8NzGzE3=V=9GBmiHF2P$L`R^)y?GvV#U(AVwQc3m^@~L$V^)x)|ajl zTUM{se6XirCY3*1YX`*QhOC)l>zYFH!FI8E^Cpp;oP16BD^n(j%#_Ju>*ft&XY~%U zbDp^MmR;gh&3)pDM;{WW9y%_L-F;XbCZFsjyS8ts6r0ws6_qr;Ra3q8?AoQ}+gM&K z%Bj9+hdo3)S0;?E-+ccG|UTc(Z28#b&*8`L>)FO`-;{fBgI+qzXaH&fi*b%&@q zaj$sb_}${*{(WN8#tovdut00aEtQqpn6iD_HX7e5#ae3H%*;$Ndh}@M7E_`Ii?vH= zj;46ro|~xkl@*I-h}Fe~nhk2+S}2l}lEjc9L$q>Hwn_b- z)R;LxrxfQE4jLF}n?A+vJh)@6xaXF&qUP>>;>107(EZ#kV*T0*v2fu65gHn5raYE0 zRj#{11O5BjlE{uV#VgO)P*eF~*g8tB+ZJt9$l1`m{UX_^$R@ zTL1jEW82sLXrJYFM@{FC$qpRGK1=JW4;^{lH=4X4FdY>iQ zEqn0sZ>`<99t};o-MF2&-B=H|C!cfL*nN_X&Chl;^*$`E-5%WMsQwSwzkz+0Y^Rxh zSeK}O^8Cs3Df`hX=UG1I^!u{UvTJ(%`z)`)G+>HA7*>$iU zfAND8hpGR5H~TER?fL7AUym)M@@woryYhQEju`tayY2ZET~GHpzHt9$|G4*WZfEzj zvHK(&o1g7z>i!MC(p!z}x&I;ko9#5yzcK%E+;cm-$3Od()9c&C$hqk~HI3Y-$(ova zpC$TE=5wz)68;0)8T%~RPG9>hxjngk*?-*be9mcO_enN3KifgebWOU?678Ek_*qBr ze@OeXoj&(j%6aLBeU{ofCDtnItXsOy`I=K+*P@K^5Ar|kXGK8V;CMjnF}eTNffkR~ z{Ar4Pmi&C~b)ThNALILZo)`G}TQ2+SzZ=f${q^m$oI`JkwGKaO>h~9Lzp3rBROB1G z?%1xSAfbK=BvnF)y^KX#JH8gCb7!k{cAHnN zS|ye&St8QY(`ldHR#8FwD;C7ZQQb$0*;MZIk)dMZu#sZg2-*iabc7f+a)g)^9w{;? z9wYkttK~CxnlS+TMMjPssqJ^j$jA^C6&0e8_DW6*4-(Ty^%s+e2aAbRo`Wcn+F=gG zo_$1!R=#~ym{?445oY+G%jWbP*N;wG2oLZVkpTmRW5fV4Glur4RFuOY>!pB6J-WKD30_<_M(j<@uhHo(3g)W1uYE@EKUwjw&HKb0FK z;)92an4rO8BFY~ZB8sRz7A4ORlZS?nG5>?C3a(!OpPXIl9q`->U0cWO$AEA}`BA!8dhLWEMx+Nl5MOqeL9 z29Fdpw{cmXQm1lA2|Adjl#SH562_r^n z^-rSl&qh8PIw(kt9y(OaqVYI>(69!VKW5ArC-yJF|AF0mint-e>XeUIm>Cf$=0!wl zF^_Q%;{Z~O13?4&iy{90WYZ`S7Zlv!@+VA~a1MJ{Zfe_B1a?^qzC%E5Xy2twDOT} zSg*cX`SIj~DCz^ldiNHwL%P$LYm|@qfB85&`GfZ2Q~6<3e&paG)c@l|;)pQOqJib3 z-iUqV8_}nqh^CkuPHESh+KVUvJ^pv9s>OR?VsWz|JCJcyAhCgT;bK+Vf8J#{JI%8voEArqLLb zld+8UQmzwgX+Lf2`pZYVxF6tA{hNyxZh7h5+oET?mSSY@b`+Q0C=U9I*|dLqUSzn| z7hnV8Ak8sZ6l7(Koitx#uVxbMe}qmiq?T{C{?;``;`k4(~6f&^=cw zwSD#kyU2^3D6(-+hCVTw_V?!GYV*Y2y?e#t#fvrHx|M-4`LGeFQ&xTFh|z9sZxX}( z`e<`7;sM0>M2n+b^T3K(bHt|dHRAB0J49JonV>ylY8fb#4<`ZjnkfuB`gZ6fVh0Y< z#-T;j4!9rA9`6t<<0gq5^2Y+|uS;mITwPEo)~%_~=5@pwm1iU3!%4tYnW|i;)@?*s zU)sA#V=?YSXHh>uETB*7zQ9-!6DO9%+Qo9ZcZ3~zbWhi}Z(kefazAXuI7j5umhLyT z6VWs_VEo5@2=2qDhee3A88gKy>Ia!gbpJr*X3+g`*7$h3FN+oNgNH%4nZrgxP9m>% zV17gW2Y2fs#sv)#i)W|My+MVz_10U(?YG}f`=Gaq!rVNOLiY(#0RzpJOGVZ>Y;@)% zLVmBdbnn(p#K*^r+}vETlkSc7?b|0xX$CF1+rh`a61OVoKBRZ- zT=V<4$S3G<`PubX)lRsj+qs25A7y^cuj=jx#rlqoE;8TSx)E%hK>w_j$Ln1;;x^IO zjTCuU+_{Zav~Sf~?*o`yu=gAU+^2gF(YsrBjet9l?0{Z$U*YGc=OHyZ#xv)rQKLj8 z-CF?D{jf&B;Hk2}kplunME?NMhn^KM7q)KRLL*@Ro4aV&qDTf56EH}`1P&76{r%}) zs>L=2nnyX!n`_ss(Vj`!2Haa=j>WSd)*@{5 ztT2M+;!$+JHZgdFc0Yvq2lq#yRrE}RH5<$mesn*_dN>`>yAO@uvqjFL#q_x6C=j&!|tIe}ZX|A11Hq42P7U^-(A|r0BNTuiDc~my$ zoh5WnFpHiM=8+6&Dm|xlv)-iZ;qqIzZY4s84HIMOx!XQ&oJPQ5!-tCyS`Qd8c(7>W z`i`QO7j+2oA0UPX1&QJGygngvh`4{}6mekvco8zx#T!C#5Jb-df%Ltmf%I$w^6%SM zwD916+(V!q8FU|&P4^AUCeZf`Y0g}Td+SJgzNht_{+*2Pb>RMR0CWbq;w>s-qqp@B36*Er$^H|!dUu_ zT=ZD6koY#b=k3y=t?oC}p=HaKqE)L_q80fL=g|>EMD(bxEmt-_0w?Um+$=bcoKao9lINY&qWYqs`(b#E9)1O3CNZqKv)|wVL`Nt^aB5IhbM) zV*v=5?k$?kCOr3Iov*yST>CyIzE84y_ik<754`;ReC@t<^XARMN#g>(3)Ix*XJut+ z_vl-;xXRu`YdpZ~*RR*^rPk0GgmpmJfbzZh@p}32K@_c_m6Vid^~RbfzPq+z!v?Kf ztii$-o6V-RN7uG3L>Hn?ZCr$NPzQ>YjzoQ^PX~1BqNTutyL1-=I^L{3FZi|VAObpf z5lFkzcr<|eHfU%-p!S_;)DeVxNcbN<2jLk8a|G%*C8Rg4$@CHNBYM&LV{h$z65$E- zoNgc1m&UuXB7>gM=hHa7fCyvZLP{|X&ZcL!rF3sTgT_Xzmw*ql)7U*CXpkOfm=~}f zN#Co{2pDCfj`Qg|mW!rDh{g0B?1l8Z2Ptv%U36QB#-9~GTEv9Yx)6;Y7)PV&yMJS7 zZ4xwYG@TO<*RW8n_V=QPeeQ%DQORgysZG-RBflz+8j#d#BL;A*(-na-66&oQ& zMUN7p(V=1t;h6CeOSdPo#B$WLg&iO(#4>xi*Q`@KVShpsBQuzcM>VY@{~d zLG2IPym2Faw~U^d=-xha`EoIo);Zc(TZuvROgA`rrWi6ORSZd?`H7x)2FddgSRWiU zTBOjrDEy0g5A!8RTd$`w=Z=fj*3c5^`3cW!pcz<0n7=?2XJ(0VdUh$#T|vJiktOHD z`68X>!yuYZT2ib8Or9bF6Q+v5q-3Hb!U_8Mkg3z?JKEz!Nlp%}qlUYl3rYVxdKR1s zUqp=&rS$s)$@E<**poJf)((gk&^(GcXgNL0XW8g87NX^`4v{h5F6Kv%*XAP3LoM33 z7Xj0$+~iqe(A@cAQ0hDpME(dO9|X;rD~8QT5(%_chH-pa=m3!#GfGsfSV_Nyku7G^ zcc-U^`HR`(hKWQ<6GH>YM-;zA(`kJxiP~mf_*mUvOKBdQL-RTOIEmK7&}UkZ4Q+b& z6`g{Iia@ICz=?J-WKdrb6yPV?_w6IB{RfEN9b1c@?OTfA-kn71#4+0U{Wq1Q>*={Yl47+-ySn!- zZ7Ej$CruK8aTCPgezb1v*MZiL>aM%__wFv{O|xn7lSlQRJ7t21862#wFJg@|!hc|$ z`$)w1&2(>xwYTY`Bg6)Jro~vm-=D>GmD-@h4dXDZfe=8j!xw3Nqz?5vj~v8-tOJ$-j>z{LAbBLJ#WYM?L@~8 z?KBJ?*789Edv($5$9?SJzOH-XE;R1lO!sje=^5T#x0!Q%E`-mBKsglWtMXTh#Hka- ztQpg^xeD_cK2N}JOh6WdbI31TxKJBs@VtzB6Eo$hGN^kc-5XcaZwFwWz`Sta!0lpv zCEY)7TSw~;^qpjCH(cLApBZA_0v$YfkmL@~Z$7LO7+Z0Fr0VsB<+>4muS48%2Yv69 zbU|-QN{aT~%X0c`q@Zw>m@;LGNJ~o-yXd>$_}mVk9o~88o#OcM;~L#|+ilwSR9T;| za&aBsEyZ_>VKeSOjvYHDYHDi4U3cB3#pkwd+q5!JNBCni#q7QJ-mA&nci(;Do_p>Q zCr_Rf4?p~{=7+GbFi&fOUj2b~>eZ{4Xw#;RHU@9nv`N#6y1<`k57ZUwKbW&|9p@+) zYcgnyqeqWw_ToD3x6IUAmBD8tIENjWhv8@ZehEIeK%HUBE%X^J?i&!3Abh5T&-HNM z0J*7Cr;4%kS(U1{u^9J=DEEN}9?%FeiFn6%;^)nqr(xV*p)YWM;JLK1Wh4Li@#D2M zFSPH86DKr(qkR0X2y6hxeHGedBh9DigYSZ_u=;ImuT?*J^)`a6E- z2A`>-P2jJ_)_ZD_#d4_?t$)aU+e1hp)&=gM_3><170;DP@e9=O!AI4uQwSa-1@s^Stv=qyTm6)>YHN*WFXj@1DXw&??(xEoFO= z!k_N)D0gfOt>Z`%pFb!5{ZX-IFY}PHeVn@M;d3q*KBYZ3njP#*oU`1GN`L;d3*yI* zoDfJS4eL((%Wl>PJe=RCa^3Z!Je2J%?%m~^`g~^O0Ij|#AAO;z^?TFD_2qKab6}MZ z>`l-0^0~hwee}^s>-2rL1$@TWTaK@M?)7v(_m#h~*SY>&PsD(ydLvFi+)wx%eFcPZ z1AQ4OWA}6Q8nCBv##?>3T%>A$WxhH-@z}#WH8ndvy4%6^G9uwOUG-I|1N^z~R4q1{R+|OAzm&LwTZE(M)=JAHP`~X_t1O?J>s|6$_YFIr- ze$;{Wpj@?VzQ%ST#dXXBNco&o&dcSy*Vp}= zA?NTf>j6fcRceT??~5$_$aO-BbF@DQZKhrac0X@yJy0gc2IKJ5{u=Mgztn2Bu^lXj zl&P`hLl5Q!){XrwYzOamQDwMX&eK%oLm$cov2M1B%V$1P#@AE+2OoUUk@NAh3YVp} zFKpp+^*S)0Ll5a|vPU`gJ?lsL{7ePRcHgL!{m=eY%jaQ_1>kK~o zU&W2BKh_1X$Bx$@@Y`-`FyVR;@p#>0u-kPyt@nVgKf0|W*PFr1MSVS7zAui~!&#iy z$@!eqsY$Dr=P#w#f|o8`E?*F?t%mb;vnlHFmRmi}n8>WHhtrZc{hvB#Qc}udHpf^b zXHH!M*W?vMMJ!&Nld&qRbn)V(yn-x8eqljYVcXTay@*__j5hG_PbgSUnbYXW$Nzq_mbrO|`>2~cQIUyUMy`wP&GE|>LxSLJiL!vlH?5Z<=}nnZh>K{whDX3HPk zuP5!b>M6#L9H`NfX|&Iri2ZlHY22tm^gf|M;`Xvsjj*=^RFyYfBfMt_^nEFx?MsOp zMSCwt>2^1?{#`LwXbuC-r}s^PUi<0e z8ttWb@PP0>FA&EA*UN1BU6-%DgADH>lZ1B!fw=z3^ji&}jJ%3VwxIPU{zw7eZ zUbch#^G1447iedGvPSG5PR9%j5FpNf?umN^h|e3Eeplslx!8LN;&>0GeefXm2e@ZK*F-XRC#`&#w`&zob12MCba z`v*fz z^7Zv_x&GjFJzTC^d{^t?@eYgSb6T&kMi0>T6;7qa3#?!GI^rD}C95*ZR+nUjgocL2 zFE7h0EFgr}KQ-v6Q)CoVSYLL%zp47UPOg2BPq|X}ELO?4KI!>7%g>OzGSOZY z#ALnw{ofJF1CluXM3uDBI_;f z@@dZl*V@D7aM?&}OxnZcvprU658LU}o@2i4!QR^nllE}=Y)|#G(m(8{)AhH%^_jZA zZ;#)S=7ar%^8}OjaQSSHRocULR{OH&3E%d>E?dFLobqiC+N*Yp zxp?OC*&eI3hwZfbvgd)i_VlE(JKf*m93@)+;x>EQq&-|d+f)6t^bgzR%bt}N>-;_k z?BN5pFjbqhhs$SstkNE~)2DypueIkloqn#5Kd=YwHQ%H?Tt3@VeOCI1{p4eOwZ?DJ z_VKe%`Vjam^<~{2<_DX!hs$SstkNE~v)YF})lXe(&#G0e>evGxU8yt|&s;v+Q+-DI zhyCQk9_y)V?U}K2$prWXcHlsJT{LMAm(TWCr9Et?ulcZg`pb3V8Sl^IgJT)zhfUhU z<+DB2a$aUTec5A;zt)~(p@DV!JM79eX%Cmr_HfG>G}zx^w-~yd;PVTbs*wTGqt(?EdHr$aH+%&*Dd4>Z18iS3j_=yO8q!{S{MtH< zcIlwwEn7S5*o-}s+jnyq?bSoaUo1DU89g2ER^@x@dY=8#Pse8T_=OF082%Zq_$Q=+ z{s~k35UJxWTcdSs#-2?ZVifyhb-ZP3ypGN2!F_%(3G(v*@*vKO3QMy>meEF?(nW#! zSvev3S=nWQX(1(rWf^$XTAH;wKdXe~kY5`|tC+ z@D1cm55|$l2EC)z#bOE4F~$*t?^_SX5kvk%9b+6Z_;vJn9Y+kQkM+7>95MI?@>Va5 zBZgE92e%i-kq;ZtUKmG=cIlvFj3Wl$D9M{W7)K1L9y-Q2V(<;*O%KKqL#n5aF^(8~ z19{Vfam0`suJ|XUf&K|o{1B;Qj3W*455^J0o>(1Y95MI?@>VY%NBB7&Ij(CQk3)J;xhbJjVg9f8WNVHGey!+(#JWNbMVcQ20j8y!pp3>`!)XBa7t=9oN3`4;>p? zJp0FW-*?q+v`Y&IV~j_P&FH~+WVBZY2e%i-qlUEC_ia4d{U1n(* z<62S6J03GMxR5t{{x6SfMtgl>=k~(5X4cQ}oL|^gMZSfD^I}|MtoquMpV3|z*Npb+ z;NbScxYm&N`aX_phMxl*>}QN?X8i;I?eQC;$Pd>s#x=8gTz(Ey{2ZzHIl4i9Zt8K3 zKMzD*uWMYBpYz>_ajkXFzv|-}V~lHzVKX1z;v3`IOYfD2yX0zgjB(B2vlj375g6Ah zyKI*BT+uPcHG}V4&;R9d&1jb|?2Iw4F*dy8-Om`;jCN_^V2p8%u^BxW*Nk@Qpks_{ z2H()+Eq=a_3<&7V5i!)|Z3a~$+x-IsA{YM72)*Ia+S`RmllSo_DZ zo#b<0qJrlu*wExn5B+kNB44E2keXU--@1GBbA|@*_Tb8?lO=ZXxoaPU#Zso=4GK22 zdADbaB44HB)YRQNHnez;%Tp)!*y?`Nb35-hu~=T!acb)8IyR%{)X6t>8!VQ0bbRXMyE-5c_r+t-jTR6DwPMvJ2V{>|1EAmzypE}uA$L933a|FEBQm$WhP;h4j8=Abwb63Zt zuiHsIJ#-sVQ+qg0zs-KDUk|R*c<3<3jh+hbrQrJYU|hCX`Y7`KbbRXM0391z>g!*D z4rAOHq~p}oVLCRW=hVqjihQJkqZMpu^6uwxiv9GG0ey^(SFmqA{P_&;OG6I#`HXhd zhSazIpv`A;znMCp4g2uKGcF5)?2Iv=F*dC8?sv>*>pMLx=bJvlv@D1e69?WNkKi|KOBx!8ee1J(unO z7+5Xi`3oImJ~Q~f^0eluJKtv<})L=fxOv+`OJv7o(k@zVBdN$pBZ}k=@|2w!S}5vH8s#- z^!GtJ#(ZY*ee1z|X2?e>I9kEJ^;j(96#HWp9Is&CdU!tLea*;mUGtgTudL2zzk9g1 ze69+zGsb+z*s#v~IE(pg$Mo(}Poje7E7;KFEuQdvX6Px>ZNPkX*xpC#uU`+Y;`!`1 z?_HFiHnIV5h!Otn! zw;qe-Mf-35_=>dWqFxuwXS{#i(Biq>aUJuSA^)n5F`pTHLzB05$9!h^^Bo;yJ~Q~f z^nbF?|=@|2w!S}5P^O+$Z zso-b@`__Z`%&(g&tnsHZ0)#E$E*XXH$8q~xr%&|Zo|dB#rBkSU zT}1Pl{9X~(8yVNWv0lfjE^qeK%&b)8X+D!W{p0rN*o>Y_=l9zGHEFRvpD~{Q<0A^+ z(B$2oqxQDL)1;pJbX@z!!#Xy!)aU0%?UP=Kl6ubQxa_lMbZkb?9>3@8&z#yK^_;i= zdC?IK?;G$_`?MK9l6*sxr+VRP(WRFZe;RY@?|)`sLyPx%^^NvCzm|R0u=#b5-<$S< z=YA&be@Dmr2K<+f&Dc|P={==h#+-`%*Bnb`^x%6OhP*MqV*ji_$+|=op{F8GPUN;Bz>`eq(-p_REINuanz*o?oB+vSIV<5c@)C4<>acsDb@wuSEH#B*V=P-vcjz#MD z*)OAXY-sWBpULf`9mY5o6nQ+& z_w{}62J=0CpVV!>ce-rQ=6emx`Cjr}SMk@I-!b1my70lrU6P49#(Zz^ee1z|Z^&!& zy%V`G-_P&9y+QN+mm6Bkep_Z|jQO6iVU72CVZJxyt8|R{-ryUWy!i+7eZ`6|*X_`dbj%sguUbq8K&zR&I)J!?F2VZLA7_qhh_-+k2HxqqTu4>+S^%=ZT0w>_Be z7iaC1^*XO(%=ZT0w;s&*hCeUr81ucs_pJx>y&?aqjxpaGeBXL7-@jSR@$-(3G2a_} z-+D0L8|8keW6bvk-?tvj_lEq(I>vl&@O|sSd~e9t>KOCA!8fDlvi*X_-6EUQ_Ah3 zW6bvru?O?LA>UKSnC}g~Z+kG`8}j{hjQQT+`__Z`-Wab2=@|39!S}5P^Sv>S4R`Q3 zhWWlB;~4e<8RJ!?jxpaGeBbt9zBk6J7#(B2H~7BwV7@o}8LMN=_Xgj$9-i;{cO8)9 zdggony#}}WUK-H2=lfBAS}5n6L_1^5_l%8N*4O`Y^=Eo|>eDgido@2}Z~Yd}_bh|w zd&ZdW8LO!`J(%wexhfrFzBl*=@}>v#{afdDOaC0wG3I-N?^_S%`;9rjc)=xkpMApz zJBL(2F(81ucsH;^|ynD47TcwM`f!u}@4nC}@I zT0Hw%>z_2=8*;{H!1er2gC_3&`wE!v4L!!^!43U>HRgLmkMVgh=6i#0An*RUY`=8R z9{IWH7dpm#Z}5HV!F+E>8J`DZzBl*=@@5a_dqc|jJQ(x6!8ee1J?$Kq?)bU>c`#$l z_lylK-rN2AwqF*X_y+RkAI$g0cr{4JnC}g~Z#|grjd5(agU2z<_YE1x zFy9;FRiutF-y3}2_F%p@#<3U&k7Jncjob$E#%ymnnFIf(>on z^jIug6!|J0mCAK0h<;k5zEIg6rt<`1>X3Z$Tu+zYB&O?)_~|URHkQwLfArA9>N&__w~?`kE8E z*4H#F z`f<+Z*hvDVilCI#~FrU!k^u>Ych|D<5n;@uvLrM1J*(^J8{6l_LM zA4R^Oj?vc){l4|czUFjEYJE+^vadni?w^N;LnQeNw85^H@;Vp1RvZ+g(z4Etjh z9Is&3qS;e#U*q4rLk^RDO`8|Bz9xUi&aJP>!W%cQ{WdK=#-*stZr}|Hmc>xw-B()_ z`6?ZwuNgXh>-j#;Yli(7mAd>%!M^K-zGmp@so-7;HlwGHBHvHP=xc_4-+I1}^O|9Q ztWuYF1=p!py?u>;&k;Eq(%0~t()^pq36v3e-G2j^e{-6DTN!2G;NN|7oi+Y1=2`7G zuH|pqvOWBpvTP^+Rx$r3FP98^wC^V{qme1w!{xI*{2Q+9C;rV~{%u??R{y>PGa8w) zJzPH9!@mj2cJgn{@^7kgv9Jf97xH;yQ?`f8XM0#L+sVJB%D-(&w^G`n-EXmQ6QmQ9 z$f6U zc?D(k>xVfdg{zA!)(U!8cMOl{8)yuRrJ3k}GQa~>~T@(df8Rc1-7R{XetO83J z{fc5fKw(i>GWhw0WSon4 zt!Q3BW>y6Z(NwrZUA$o>1sPOGS*}rVsVp^$O4UoV6qUfTvb-$UeY{XQgJD9Iutm&;`7>Y}A(g-cf#WEL(hT3wpU z?2K&kq{1%EDlNtDORioG)ruX%3d^%fO7b$ZmQr~o86|5i!wP9IKtaQb)-KH}C@sq% zM_F*5otK}bIa_Ohu+Y)e1mL0Si(IF}iZaNtXv~b|E3-0j)j}RGB1P~Xl?5|2HhEG# zU4s_N#UHfs|6}aU;Ve6@G{2ibfkZbsJ!lQ5g^^kkB($he;=G*v|T*{&e6DCc_gV`ocnlx$Bq)Bs3n)-j=IdPZF1b#vx-;FpoZrr#L zC(a%bx(<)}i^K7#r(U5I^OeVt&)+(6xY}(&N{%W}R)cKta!?HzoMWR)f3zMhN8{+n z8#h0szXvP+#;>;(*ts5Vg*3XH^w)lZEUnsB)77$~_H}<%kz>r~{mpT;nW?9Q+?fKy zhr6|Kb$_&;@}#q4{Z^Z!<>~SGyqeQaRma|+ZsrZOb3LAcp(pgtayy=l=amNL#Hb&r ztv9XfH*qM#S+(CE(X*hFYSlxV?fUauROa;b^*DNgQE?Ac`+DpCWWAj0EqX}3bhF}A z2k?v+9x_+Jvjs>uS?b&e7kFP&b3bOra5-OT)IBJhYN5iLDt`C*NWObBp3U^V!-~|f zn!ECiTC*9CkE_XYxZCtb)5N0*_`VX5iN;htWYTQLi_LOfl|4`^Pu*&y^}Wl%FTm5Pujvkk_Tsba zZ2hebMD(gDpI<&&pZ12!^@3>w(uis@+5&FZ)4m{?9gSB^!OXbF8O$WID!$O@&RVeT zS+(kKHcZ_$G*j)@2Qo&!ju#`Ol*Oi6uD3_aUVP?g-9OD?)p+%wg&w%xIha13P@^yB z)z2UFM$3tYfl0BP&=(bRRj^8b1BlBUinl4xPo{x)pZ^4k4%r$ntC|*WhGVdEvW84A z)^Vj(9)M~CI1siPo)2f$@|dYMV^U4Wr@iqxiRQrqRTr&#d zw06nX3Om+(>-OVWV3}`seKK=-Jw1;H}srVBLv8fYN#*Oi)qIF2yMXu~VUJ?6o7x;Wg#9O!wLsps{+O)qIm zA9`~#hK$oU!3LDvL?JOi4f(B6DGpH|E}_mVW}tr;<3k7S1LYvii zDA0Vmb`ej`D9c$-+$aUc^XXRkqyBoND|lO;v8?6S_2&cKqux@SBn-qiNxGy;jF`&0 zGS#Lw>W`MEO1&O0c77WPKnuZ)7E1KR;l#9!BYEu|?cl^h;23$& z(i;#^)0W7@zg%ENF<>{%|>vY@Zz?*(NJ@6X0co-HaJ!i5&(D0zu|C zIx#8)Zllhj$3{O$dZ3e^ogeldRs78Q!`-647B45a9BvWfH%=!V&}N_2)~( z;%Wg$-EE`&CyU#5ALw^JK0|SUeDUa938A>u2lqs)=Ne#ineRJ!vw}I9 z4sKj%h{$feMhUAm0g>Qm2nmKXzO(92B&VIN$Ez{I)OlW!BSBf@*)cNl+Kh40hr^p~ z+z4q4^5U_FK*Oyi^&rHGEJ2QRX?Qm>VF1o_@pyR}1Y!ynS-Kz9A~XILQ@hR4=v1=l z==9LP1OJNE!D-ir=k9l?44lX^90}J~fwVXDgZ#K0GiexohCb2=gqcE2LsI~65`_?* z`*3>Zlv*+#IqQ_hYOtHcTc8@spq6bCXWU|er15ce9_6CngCsDdkyI1w)OnM9jiRG8DCON-l&HG?}gY!N*c!La{nC zG^%P+@RocqGydvwX9Gi~lS+0A+c-AC5ozyf*3irG{C+SvDZ;1+7JX4)Hj+z`{g=n% z-uiIRSDQh=S)G|r&+2rltx+1BMjCS2NUCHa3gme-<>Ru~>THt1I`3I%d80gFxlfSn z$*iH|>IVv-B}qls_m)T#A_%3#YIHFv=?&o z3R*>QGv~H zF$q9^m0ybR2Zht$k!-zD^Z>@mwNUvHvkV+@lTQEw(03rhrOdOGFvG%-`CRWd#~tVLFL z_Xqtg(o#sqCu5O1k*+>sK$QleqZ`%H&1!O^n(%uIEs(i3hQmpu!@5vGGtdZkQtbF{ zx@__z3=Bh!7T?oDUsx@+o1K48Xv}6g+r{Ms#RiFb7nc(&w>$r0-8x=C`gVCekx0Kq zY^7_l1Xv;{IqVY{PR=T5`l33mj!;?GgXpzL4aO%3s|}_ZY_2dzqV<})H9ha zPnik`@8$-cK+@ne0qIzwxf#^v2oU>IXg*daD$%wI=9fis640Z0DKRp!CdOL^ALSb4B7XE4)k@J*8z#`Ku9-OqJIp1QC-MB zOPL*frCXo~H`F~`Z|3!eg#J(g0$%4s-a$n22hvr2^hVjc**+<%2E_h^$;DoR?U5G5q zH7GE^{kf~#pZgtg*@5}aYi{q)=|y^DE)iT*B(rWW{h)^Kk22>6=m|_kbWrw(lPB(# zFd0sqUio+CU;4upadq`vvwfu8K(20~D5Q(T(Ys{wR9;hq{EK+z<;X3)o!7|0;swd{v9O6J3+2RyaF9JV~=*srIQK*x}K`M`(;v1E9^l( z`VmU2jA&LeA$R+uQ%#htEQpmJq9J0=%Plio7%d#UzOT&Yhu42t?L%47(W(<9=?|*$ z$QDzz9VHZ-q@G0~7$TCQ9Y{@6N<+s*IDn|CD)T}oNn&SaLW_{x$EUNC8MPjcb!9f{ z5}ZLP$-BlNmGF>e<-O#5+QF3&C$P|nOQv#|h zj8{^pE}7o!PHf+4bgu%~B82jEAsT^NFC`H~d!NK-?oN71rHf5+e>}e%CZ4=PpTf2& zv^ZnN#y~PwGI)k{!P2!*35!M#A5-#3i3QL%Xei7PVGk-A33Ck@)AmDtQZgke#yEs5 z5@Fdi4acw+0!=>PSrNm-H#Ab1Te!tWK*N~s^*sh=b?)I05lU~|i07t&2N6WUW;#kf z&9R$J=b0*_DcPbmxG{0Isgh&FU<9WNR1dICY4kkOC!Vn>3SrbiWF3pDGl6Znp&b^Y z>EFZksu@Z&4-CxnUU>uq;9R%F5GRCX&V8gjh!QM)V{#19 zID-c9>xq?QsTZ(1XN^_#ss|f{)K+s5Hd%5-c;kwEfYnsp7*E4m8Hg=uuVTw8ePDdl6*W@ZSN88UV}ucT^& z2b?cdg%jdBbK*NgeuXCj})bVx_0aj4Em=b$FTE5e4~5C+q# zi$JrrRX_c1G8=E1(3SYo1`pF}s}wCXV2Zi{rcba8BGGHAASdq5UPdxpcg_2b$K%yK zxj;fbGZ%^EvlSdOl27fGg4R4Skr0WwZEg`#O!6DEJ7`!E3KJAjW#|WzUQiUobtc+H zYPe=1UW7#_+04)+dnbpoYs#PP)&gMp4$jcWwU4Sh((r?f7e=}1HS%i*{WvG*ki z4Ript&v*rG-=ZFe1b7OTAb%s+OYXC}g_F5=iZPOol{T&pkW%$Wc}gzCNC4b-;rX_MOFQf-Kpa8%*sql z#;dIU8xTp$RsjrQPJNG)s3V%vSrDJ-FY8VAbB1rYhw}(iU8;U%N@?_Md7@IJR7M{Z z$)1(SWNhR8IpGwuhvfA7p_&$E!udB($4;$m@>rT%K=TQc*)xY(k0DReb-5?{>0? z9}&zD6Qq`KLP8-z1?PJ_0~Oz3KVHc$7X}ZR15b(3vQ^L*41ocZvVT(|rF5j7e=+@$ zKDEsWnHu{bhQiZow5vuZ6`D5l0K2LPB9S~La)uBFnIJ#3F%wzTF(FdM+~Lc?k;a)B zf=X!DzK2mXDY6S>_?lFyP4BBsA&u*Ujm05P=|&EWTmyvI2qTPyI7g*c8lb|N)V+{T zMRA4X0Xba3<6TUtfaS>bH&9$G$QEkl)qy1jUxjgk%@XgCn1q}?Vx(XS1c~UqsIV5G z)OM?#TyH3IQ$M%#BU26WOHwxwxnFs^_SEygs`MbeFHdUy9BHH-+Akk?-*bs6klM6g~IK{44gYo7`&cFo? zhEBv$6|IM3NCaLcaep(dk_BUw4m(Tl8l6!PE~V0mH-hYXx{$vOnRBUDT1kZ@`GH6+ z2aOQ!FKU!Byg)@fS5gMwl-8M|GCH|+wmMnkqgy53I_(a33ZJ^o__OeO3h8cup(TFpake zg$!x3p{v;YKc-VPB{liDXoT!t^haoX*3u@2N)<@>u9hXohLzSLz=hB$1K6s zwv`Ali;o4473^Y{x9^2)+J^WO^=Th|jtD$kh9!fxq;?A=?BuebX$D!so!Al#6&Q{k zbRjIq&}9Ki*sYKb{{&ZjjpSQRmKprJBuv zxU>S+7&>yrx=*BNZ+zrrJ^p2+q9646$n<<60U13>h^?fC|M;|a?*Da|ZKnUJ4G!DPXg!f|en1rveaC@z%Q zW+{QhNu&76AM?3GZQHy&G!;|~swAXFnhkP*bGBg5iOLSfVvdTG868hE!nB~+@F>6s zV*HaxODwOzToW+g5MDy;Z>5AaeiYdeQV}}4QQ`5b-3&kljYYb8ATaPWrXOyg2%o}Oo=foZ#w|%bjxp?>|VbZp_6 zGJ@CT4etHS<>ed>r@uJ2DJ`^4<}J;6X1H94HvhOE^q7#> z>03sdy_xp!bUwe?Dc`T($_vtgf)7ZWw5W~bzD zJI;90Uq4WkpYPgO$al#Kqg4^Z)#fDz*660psHaH&W5$0YYb#{Joa>;lqc-qGgzbSQ zw(WEacA!~OXnnX`Cgsy`y`T%25D@`}BDY31SRd-gQ4~uC0VR<5C6sKY4(@N6>}N~I zz409OV;*KieNA4tA<(DlBU_@R_LmuK6(Wh&fy`D95XlvXF)&)bQ7!hx}}O{y=o}K4gL5t<%y^qtiR*+wtc4czs}+z^%lG)5mfq5W;+t55Y|2 z^BdX}V$$tw)!&V#OJsa*5v)5JFD2s(J@QUBhYHxbr^OqXZ3uaBC4qHNQzBD@79e_W zP_u)y2BC;z(?~PtWHMik52cLCin4}WVVdv@l;-i0jI3Z{_Xy>lh$6&7^^lf@(J|OAZ_0hD(j?rKA4`=5q zqHZ*g;e(7R6EU-MLn#fvskt>cyUy_>+GC8_$JJ(<_+^GRGlVC?M>BKSpA&KRi`C62 zuS8&lcu6L$*S5mAtr9SF5g%S!UIXMN41AwsKv(#nBwvXryAUeWQy3BC_DY3+b2@$f znzdt4w*pZdi&ufAO6E#Jcf~lLXdS}Q#4Qf-XEz8|vhoswRq)wZlb{<8J$DH?*9S9G zxMBcO&|rM4m6{RcYM~ax6^*Hy(La`8f3|@sp6f^9?(!VTJBZdhjj@q&Q^HD^ctk_3 zp!`JN$Fc|4KC$(MfIyK>Lsb3ypA-I-=D4uNNUoRCcZO@SI@eD=*|Va1*xw-m!G#qG zeHaE@@O+CI(QoGiFoKIMML#-a)QD6JgVP0*ol#h$>6vqU5OL8qkgcY}ToA@wLh$e} z1CE0Y;W2VMjm76b`7x5|Oh&(jY z$$3wf1;&hs{w}~zgHJX5Ff{%KAZ{qv5)wsuwg#1_9SK+mZAORfV5iu>FrwEt2&VOsfso>cCjflMT^K zaUEi_iVKWTkj)r(heM1Dod|!s{6%ngOD7~hKN4nK+HK0 zVh{84LJI{hpms*_B%~r#h{-TGr8bLVulgENFG9lKrghW`ki61(Y^9CB8#aFOCT9bDoJZSIuf1hm+R~OJuvm= zt!NQ;fwHP%<1PqFlbu%Xc7STAr7#J-sZ@uRD60@^$}a~^NQm@3LTAjJ8Az@Dl89o{ zRZtF*XUQs-Pl!h+emi_oCOR#Qh?YtAE5Wy-R|$1oZBWrJ2qsY!l|r*(6=e>z`W^Z7 zFl<|OPH$;4TG&xS^WA_}u5+&tDot`0OuB5H4(dvXk}8)zY#$6BjUZh6r+M9-q`_Rl z+X*8@L+RQkABCEH*oGpXAqWAAU=xQGn10B~UZqvvoG8K&ne)VZ!LwO-ApS(`SGl&x zRhCFeP4!Lj;lg+p5|EOMCT%LY6IS%udtTo^xp@&Hj@~UJ!)QQIA2g3Zxw@hnRF6bm zchlIOXzNw*>|e#khiihArDkF(rPJ{0=*PnG<+@!lpb)YWH4v{!{6w|cLMqZOUNWZd zKrKH8;ycs|HZQ?M(ZHS!4v9-<0EJPCIn7+j_)yWp8xr);xLBJfca7ICV`HV&EvUy! zR5_=XQnGrrvW%+V7_EVkRU{SDRD7HLRPMq&AU%yyaM5&J%kO~z9i8Gov~nI3pZjqS2-7O{Ow(~|F53a*)QhDk=O4TB_iZPB$Y!b^(t;{0$-hc~2G zv$nVkt}@pcX#Dm{+1>6`iV%9&FL#*g!?+ug&K8fUnNQ$@II%&!h;mdu?z8}e;T&mA zR7y1F?Oqv*uqzusl$AB1Xc&AL4Z>8+G~Xb_iV#bi?*K6uv6wWNbh~h&asSrAP@t!`;B{_m(&hl-@7iv+fPnBuR*qouP@*-~lgCI?pI9 z@}UCPyC1Y(6r!Uh2*6f#4Sd^Yv0Pdnln&!&4cahl<+jqlu&CN%zMIXuezDTFy41_2 z1ZfDda-otU%^)f&&kixHA%;F;91AmwymQI0TL7`^R#u8~$VV+;Y3L=8N7$=rMO#|8 z17#wdtp!d@DfJz0+eqSEN@Gsru=TDJ0|>p=kQ39R9*=AzxU$~{LB|$*gqo4PcpHBe zPr9V|PAc8brvR4KI0A1@ge?Y|Q0Q_HJFrml3g#DT74tyInEF5ha!I3G&z2vWP3doG zWkP>y1F&pH9GK)H2m>)8ezy5GLgxrXse`?6`5_7hd8zgxlMZKx8ru-Ts;>=mTmDEX zfS4?l!{tK=0Ccn_!d^Y|0hXN!A$ao5hZ&Jc92}zIRwlyQs6tB@J)>i(owW$t_n`3F zLtav1>SVVwa$cxY7_CZGS5^st6MXGN2P|M*Q zeQmQ_8if=xXFEV0rGYNhO1l_TzuuI{4g0BA|8cJx6H*Lyacl%e1M9-|5D`EL>7)bH z2YPEa*Mun`VuB;3q;kzYJ%@n-5qG#`+O?`$4zlWeyv}Q%5;jg!Q6;VL;9iR;WkFc! zxGybeb^=x<$qQSI$8dYZsBRRSUV_%J;1ST?YX25ZOF?Le?3&GWHhi^B7HX!rbd^!a zwLZo@QKCHfGL{GGmsJ6|qLtihXoUiH^kw+F{p(@#OVzr z)wK&_o-0}y!O^xD*6+c6!uk+9$(m&LNEl==N?=1S=7Q`6Fc1A9nO4)9ru`BPwLt@m z#oI+2aJSl=GTuDL1mR{A^_!BUSDi^Z)ayI|WdU~xphm(J+nr{Dy8&_A8b)~{L~<~Y z9XmjxqzWJ;D~m)c+Qm7wZ>j@k#D#P znt*mPYo1J2ZzgOChT3hM@G6ysR~h5^KAgUuFY|_zcIl@DGH!;GUp`W~Ut2IoL$v{( znQZ`6S4M2TvVONFpCbQ=+X~}(4q6#5vCi0+NQRL*msNQ%ThP`9WH}YMVDsb&H@P2V#v9iONxN7SRJ40F8GAK4PB^6<=E5n$ZJh^#paZimT_A0~|%sYgJ zc+%x&jdHdU5wBlu<;2BGx~RQaCAN1+h<-dK5`?tJA#eP;VP-Bv|g8X)p=iOz^r+KE-3y@3MG!ObTg)^C8ZhtMG+;aY|>cD ziia$~3N_C=H_5W#;SrmOsEf3d4ZHM(2}5?3lynu;kVyh9$}F=mE=RduwqS!Jg7zy9 zTB1U{#|mA12MaQJgK+PrybE3v;ZUkYh|>`NcpujtQu{5EXsGFBXJ$d@a0-ZBw14K!P?|!h1skL zS!QL^in*fomfWkM$KD@9uk2GQKRlRDQGU9>46jTp4#FpalgAqZl#Cls4H4)7x zR|H>BOplZ|NI+egaB21DVq16fj)L9``%l@PMFBY|WHwk5OT`KWmXQRi(|pV|B_H-|2}--U$WFu_ zJAvjSPZ%J!>0--{NV3irD3HI2b5mE2n@U=;kl}T4C{$5F_+O;h4naE1Xs3Q_|Lxd{nh8q!S6AuCnhsWAOB(K39_?TjS1g;rFt*tP4lk zAZvd%{T39ODPDjCD<9JZCO(aYJyoS|B>Bt6N z21aQWhP)J!V=I(Q7&)CjW0Ndlsxyp|8WV+_jHQ^#9VLW%&3&B^Lv)50=_-M}T+2OU zP4viElQ;6>ToxTNu$2HpRLH4o@jIL=bp!5 z2G%Vr4$D5mO~C||QiKYCt3~a`wja0h?&4hungg0ygrt^X4_y z90@vV;hjx)N#}A$JQyHMb8Vcs>UQnL*E_E)Ae*fB$BtR)WNTBxY`BnGQW~a5)pTYn z1&Q;LcwG{qTpUeREYhtersmT^9Wi69nN%-WzU} zd{T;57J)|vq&9?5SaNI%U}I^?m)WI~Effhtrb3Zw-dXbb&Q>egWceqz2|%u7qLURq+V{a^nrCfJlgB`@ ziQ1qac0drQiWi8ZLc0KbldS@d9cu#`R$uC9UYL{ICYWSBnA)|c;&LF>-0CiC>L5^1 zoA9MBSR^9H0Cpa!3D&r6o3K#{b<`ssnrWPMVkOmlKcF7BNP2^{NZRieNe@{h&5DF4 zvcaK#yGHfXkEKyb9|Y-e+c!Pcz*5Jea~fDie{^7C?-*0nX-z@1HNU+Dv%=afht?@? zP!||R6Tv`(scUw^ZaYD-Y3i=6Budn>kQa&w5{tu>vaIJ#ft16=ZAxvKq^6(d$~Fd? zoCb?*@-gCyzbOQ_nFtD1x7;et*&B{E3^pft!$CWM7HVIBOA^($YTL;Y5OK?+n&h=5 z=LAHbCX(6YXmcxv)uojaBWY!eU!ZU!Sps?kt?qZ%JL|Jx^cLsp&%aQrhS$YI?f~Q1 zl7XjTJnczSXD{5V$w8XaY89&Fv1n;C9L+2@Dy+ebkHO;RSAg~AE5Pv(dudD2XSYB-z;0hngFC}@BqVu%ugC)URF@j2mhpa)oNyUB_=F%h}broi(6{-`@;yT%F zoMZ*#=QnXQJai*7PZJ}*ckUZ~=TI_Vv(g!&=qJv7zO>_YUirl%A?_VL8EG&Q!klxOo zdp!n@VN96g!~QVxVS}-YOxt+aZ=^vBkB&}Eb2}WYk0}R(7BSYh(#$OfysZlEhYuWn z%q!(LiiKK?O`Qo}arl&U6j=I>ZR4*CX($QE$mdt*>^Q}y5ScZ>sB_aBA2zovA6QXl zrp4J}riF4qV5YkSkrPG1R|+!6j*4L;w^7vBYUv*gMmwUzNW5CF8V%UK1~V^f7c?%X zM`L!-L)uCU8Ffq}LdHgGOvVn6_vI$Ma2Ne4dF(@-Vh#p7Su5XEDDB*I$BLD{w%u?Ow}uCJBIwC6L5^sMaT!P zBFlCX8nn*RG8MK+%*~kh>cG7l-Rw<&kkC!|;kn`|tR~5LuB$tg1XMvPsrSk$8Ri~~ zST!heJv3x{>fwBos#VEyr0Jda?NO#3#svxLwb~Aa|k&e)amM7PbNZ<9GHn1 z!bXKhj_6gauf&w`j)5Jq6JQPCloC9A+^WOZG;lX=X@ZBJ(*DCH%g$#CD0FC7gd=G9 z#LK~>CcvnUE!wOQ88YPZWI*WVe2k!1kxc8J2U?RM?~rWY;S)V?atjI>VURqm`O7QB zx~4iZ%PqIn2{pun%{5PC316jxhH-*se4Dxqf8!zN{$O5a5mm-lu|`wszR}w{Y#oQ( z(}t-q2VWVRU^g3Q{dQZwOz$#$M$3Cz`65e(k1$rX(e;cmu5s1y6HS@4$~s1pxxHaQ z-I7LS$g|9cEFtXm!FA1TFF&f$l|k2GPYJG%?9m3PyvRa~cStdSW&0Ypi(oKh^jdL1 zF68;WJk+-C*v(6LaF8K;;9;&hm*H?`8*?x|#xtX;*q~)qI4niOw^0O z=fv5nJvwOI%|&@opBWOE)b379)#1TP!Ps?c^X*BWiqTe zqkLJ3R%VM}BL88gZ9~oOOgyw>P&zHjD!@8l9o@c@ zY^^xI4buc0gg3ZbxQW)Kd|CA%4i{Z=Rx%@sH+e7k?_qzN`s9V zlOrL~?oi|xG_Q#CW@Q;CXV8T>JZ<)L{FziRCnT;pfdC?B=~(k1!ZR$1$S;ex9r;5y zbcJp)CyxrK#~$$x*2*HZ5&uJ&W$H3Q&5G5n2uuphmSv?jQxZ%Q(bW;DKo%s>@Z&UR z&_z!pavba-sspq?;XBxonVt0a*-AeH9B^f`m8?h3mi$_pRJ-epOYwt;mk!6<%P)(1 zrEv$KPI453ytb6B19UwGY7+5Sl_P&7#Ko4G`4Jw1A+CZED8+%Q^^5J1NQpG;Cox$J zPkF>?gc@Qdnty8f^Rg?N%_OPFr6HjEBzV0J-6L`ER2rdru1 z$L33N^;#!MS^Foq`1^p!8a$Hn(io}S!R?Gpp9Y3=$jKa%99J-l^~T=SDiGD36bwfz z!7L+-NE6e;!q)Mj1OYFq!E~d=KxNzFvywPhc$-di)!6!ES1rMT%EpV`2Ahh7_B9eF z9rf~0R^<9D7=0VP&zfYA|xR4#8qubi1RGhe{!L4E?DnAW?KBLzY$CKr7k0p=H$h1(EbZ2!Ij5X;Iol zL6|@+q{o31I(Oix$RiZTWSM!c-J=Xvz}x3HVBbbBYgF1ivKUX5OvMK=i1iH>5KedI zsF;n;it%RjAy;Wr5i>1_g08h9uqF1w?=s+|AGb;fEkY)7M+!i}?gLul z)sKXai;1I0_H}5Rf(dg?r58ltpoYtOmDs+{fN&jZDmCabCu#}JAmHKyy5TE6W}Pi+ ze}x+BZJ$CF;pkgNimeE|A|_5C#iCaBd6WDQGcsC7NE&8m?XKxa)v$pg;1iR;#L%{& zk>5@LNfZtvWD#A zOgkqv&R&7>Rc&jokCI+Kz{nQS0+Osw2sItfI}HfVUI2HK$fS_k(js#-mp%b zff&>2=z;E~)lFFVfn?-TfL_(AFEkw?N@E$>NTH zBVvLbN>r7i52W}==fxQ&@*u*Xok75Tj=sTTjFlUQl75*2ak42fc$w8HsBF&8t{eI$ zy~;fgMvAkusURTTQJ;irICDjf#v61>*v2O@AJjQ?`K}M9& z%($u3YneH*Um^Q#$I|IqW@xg#6RYI0*C5nPttV)auO^a?AIw{vp&TsRA{g>zIr_b` z&{kF%NIk7Si^Nt;XTJ;rw1J_Pw8b`IagvB_*P7evg@EO%#RwqcY0D|W$lNU^g^r0A z2i0@h+eBCU;TsuexT4*njX&p98cvn27ba_(g=xX)0a(=;COoG>OA&|xoYbOdn zNmSfycEi7%=_F(B>gPJ$Zp?XZ{N6+chDtn!aJzl<9b&1H6igV( zl7QnwNiwiRf1t#Un17L1$aCa50uTmixrB&QryUQiR4@>w9M8^zOd|G8mj#QIV5HsG z+L@oj-DHZRLT@XqHJlko2?AojG93N|bcg>6J)u zGTd99bWRz^oe~-Z!M6j9HJnXuGl}OgT)XT*hZ0i{c+4Er#tI{u%CxvGJF)K5>?d>@ z`RC~5(uu@-bO2dVyG&i_rkWnRHGS;|AL0O-0_Pjcq!>OVCnW$n;n8twKl^n0W}EkC(68Vrc4a$q>u!? zCepD)60vJCQ9P(_Ophf8Ne-DFgDSZ_$&}qz7n$}cl`PJb{Ab z`~Idlt1mcwPyk+p-7lA~_}gLeSd?OsfB*~uk-4E*VApU?E%YX*1U(Wp{ks@-QW~r`yeqh;&3;`)9spr4xiV#WIQRvHhfvXd>yWES&llX%jhk zchMh*%6KtJx4GdWMs<|8&}$udKOcd}YJ)%D?>2^#X9Q}J(uPIeAKTrbMJg6-WGRge zd5a}O8$fXa3`IY`g$IXdlZYc`R!3rt%Sfj_2`7XKn$fvk7z1234x_jjl-9_`B4O@5 z^AQrqXEQGUAY20F$yMKN-^lX zEU5^69edWCy*>~zeJV@cd6VRDYu0Y~*Bka^iqVQxI*FhMV}^%~(o2dpl3E1IKKc^a za~o`}kUsM$fEpTp6H>44h_Qh|aJIRq0Bgj|f-tv3`q*p~2|x=hasPd$pP%dJpEw)i zGyZv9?h`73gQ)9*s@# zl|`yNt9G&qXk{K6;`~NlC9NrcE3Y4Lh$Z^BTvrYara!#xv{{9=0hA`dq+g%tCoE@i ze09mOp*XeyObekp=h-}nzovbuPus%eeN#}4v>yu>RJ`TfU4acQu7X5=ZI^L%Hz1Yg zHft&-D~q~B-^^ENmrw2f&-nX`rBSJv$H-2t;!aCrcgYTqc2uLrOTdD@rSe>_l@s!6 zu~pudUbe4}a^GCnLT4{A&>rsBb*d$+vBl;i&vF(Rt3nzhAEQwh;M`vh^H{C<*^Kzv z@l$Jnk$|#ABFyWy%0{f7lzZ0jIQ9%xk;#O%<-Ll;vO}j8%8ck&x~mTB(KJMQt#2?v z>ok-ae(l9B>Ori3THT=|dD;9Kw?b@10=ribjLW|13tQR!gaM;zEGX$nhx zebA0XU_{>>$)F?1_vzRw+w=+|oGE!rTow>Gf|>)Ux3@S<89~o%i&GESuvTiiHKrM6 zTXvh}e4~(csZyf2Xht{nFU$3{_9{oxXf?Y)-XO+RW^oN5qW z9Y~Q@-|c&PXz+R;{73{7v_gzBUlqHeN_f3x1%DA?(s zue4R@m3T`AQ@qTWH;iXQiVX-rO;bsXp<0~QjV7rLPvIq^?6?>)d}QPC$NaL|FrPVy zv6aTYh1M965R-ANsCOfU*z=tZPLkVC<_({8=hOfbhL;KE+qM3>op(u^gv<#|^@@0@ zf!Kgc1_{KHSh0f2PU52+V?ixPb%ZF2zq{EL*KC+ql^8lP-mq%dwj(H>I=_VClx(r; zdWiteZp7^38f=4_vj=UJ&8@Fxpp7lDM^gvMz|3MRF?E=>PQC;v2d{e5CWt=_9NLS@ zgb_wkMH9wkBbtQ*OMJZxw+C$9?w}RvJ7&oH1tc?h^nVNw@rn}a)G48l*YpNSK&B2mAAQ~JJKkBi}w;$_Poy}FjPUpg0r*o~l(^;Owx^Ma@?_Abxw^wV4w-id6 zsu(Prvt%%WR@Rvyhvn8e)UCdi#2ix}=S;A1M-;8Id7Dw7|M@ocwbzr^cC#Mt0M{%_ z22O!GeGBVY)*5e90qqT;4RMSxHlBfcvA<;Cna8mvRYiacAHGXiO%Fv#-x1kD_??TD z0dXgkGlPTn@(ga#xG9^c4{O#cM3+fO%}AnlA2y*wSR?E0I;6HjXxMwP-n+$F^ugn} zk#928+j*a>3TIu9N5}|YZ-b}JAKj+h$~OcgM-Rn-CX-A(5WQ7#<>q<4Nu_LU*CMaQ zb&4WtCw=Bqy}9_rCRi9nwp9jM@1)DeWt@lA!_K}o(idaGq+u_HtQA`#laPW(OWR65 z2S!sK+b8mW>~pRCx8SNcJe)$*)aq0uvmLJdeJ`e*&TTv|UnK7ibRo99h&7G$Yx}U$ z+;TGYaqYNVzR}Z04 zWL;o(r-QCWVtqC+pc9ddY0DGd1va-J4k{cxvl%z>TQS7)+2x(aoEm71GN>H(gm?+# zEV-Bh`8qEfR=|0@-PsuR=urcr*IEFJeyx1?Rfwf;)%Ef!^)^~JX zc4GD(QN8$l4s||cGkUR-kGMjeE}8{%tYah!P{AWPI0aN#9R~q}aS9B{!QfmGw)hL2 zO;*5i!jUY9ZkIk+7*n4(Ebgt%J@8BB(oI?1WYOY8OSudEDBHMVi5!;G4r4NRVYxSt zU#eZQBstl{nW*4&c1z1nWiWdn*M{PF#)@f7N*{>cd2>K)Iio}3R4_LwZt#tCfsRqf z209O^(K(1k2LHre<%^(^ElcaOYb#r8mkHsW@v%)1G?Y?8_f5hCYok zMEueQ^?})CEXynn4rUbXf_M{gCq6|*vpLE!SFnmVMBE}%S5`B~6HEsSBc@8Jzz$d^ zk$H7+BZDCJ2r4*Ri?{;1Ipt0k?7%vu*@XMTc83;@YrC;?)nM#nrGj+9SY!Png=l3c zfXOb_Vdasc%ork@BwP((vqGP;>JytJ$$h};E-Eurx=tj3SP#b*%B)AnhEB?YgN=_m zbi^54&%Ye_N}2;;`SqTVbd!W48Pw=EPGLl97Co9DeXn!AcN{$CrTxe2SYXMb-&2}al7OQABq#bdPEi< za{7CnA7Et$ebRZsyIN`QR0f~YsR_}D*T- zQ}n(O8RCfX&zsCh7D>TIh8Bw^qJ|0-^E1rO9sm$N-{2ykpbYx-EPh`1mQ$$Q+Efmh z{oy%9BTXtPUt{px6)CWb-+0QkNV zdY^hKlQo?Ag)NAio|cIJdYF;%8DNSH^_x^6=adIDniI*zfH7bMo19aw&#Aih%%L0$ zDVT$(N+>g{=J-m1V39tv5*ow3$U-M9ql!7keT>pf6v^Gq1DS_&9v;bKtxK5EoW^q` z(9Jd|D0bZNUOz6PR2qAUt+6R6uUX!NMY5l|SjsFwAZmZ44aSni*(32i18Pw-vJ>_t1Al&l z9mX7e5F(PMvs_;3F!WKd82#}EW0XJ`9^F(Zgj58Z&_(XBsap(;5#OFF6i6|;ABt8g zM!-HiB^0`C8h;KMck8ot7 zX)x>wZ-%6MQx3H7%*M>~M}bn1QH5{IKp2i$bRA}t1B(VHN3EROfH*`H0Gw(^V1d4u zq;ELkGe2ukv^QV3!u+E<9zX1p$7P=*5u|WL{>M;Q?GOF@22<_iko5?M)f&5F2DNeI zNK#!$mTgn2lm6FPy$O)qr5M5%$lLg74B<(RTELi_pWf(C4t8@h??Tb5yC+kb7EgTm{!)nuH@({>UI%fe0ddfpkrthYOxa z3^ak$E>+MjA9k2~$-}M9q6#4`+4_4R!1DXDMZ2~)l+Y{MT;$Hp5xs{p$h<5`re%pi zE6Q3lF1@(D5Tvb_dZh*vTs$VvBq`72;tz3&oOR`$Crj;VH)IV~%u2B^9bWjr$j0*y zxuIX9+th2}Uk`CR-{a2DvO>hx-7ZC0*UF$8i7g2ExB~;D7H_N) zq`Q?Yy-h_Da=f)hl#k>-JC15T;(8>*%MM<}mEPpTp&p+d!ZvB!^PphNYE=g$=tt8R(LMTn zO)g~drMC38zwvN2i4S4MU|rcn5efX7D4}3#acW5Bd^d-}`Ma6!!55+~>j@E-u8>9X zJTYf(Sk_1nLT$lTlQD;d;iDAeq+Fz1|H1)S0CMP>9M~oqEVH_$ ztn{E5TWfDfoajaS8#tol>@y*1Eo+kF&+6OmsEaVhno75HTm7uRw&WZdS27mn#D#{O z>J+;S?zfVqSen|3)>)XjkI-WU!BiomBB#-Zb;o(w@>cY_m5bLIl@KQj^Y$1S67iKG zRJmw8#n^giyS-nmgw1dq*2#FOdaXG8)IMakax8lmVAE3kc9ylw-~0v!6xlg#l%hSM zPt^|_>+^OEtd2H5SlKd`R6no>y@z-k+j{JK)p(<87u_IpQhYP%nGjgP!o3v^I3y5h zbhIm0#(MXIV8hKS5tg2?RUH%?_0UpboUz92@Rn=2O=rn9P0rf|bK_hzdC`zl5D*Z* zeCZ)VMuKA*wY%7QQqDNj3?@dXpSEG@FbV)vG}C1GVtZc2*kdC=j!?|C*651J;YPxU zC+bqKyxo@&gU%a{A~K-16nuf%U)A&x+cYX9CuCz(#zsh}mDc=gEihxX(k4Bzc|K=d zUfRvMY{#(S-%6r3TKA6-BA(Fr_#k_b0 zNUR2pc~Va|9i)=yO&#I9$$HbSBQW@~qps~0s<4&aHV0&<2kE5Tj| z!@GPVGjcHtUr=X*)e$henT0(B6Eh*H2# zb7pL z9sq-;Fzh&Hj^S3;dQ$|~@rgRg9TvnKAjuj83{iAYAZ-Mj2@TQFL-&-}=#-&`D^(>>&nP_WbRw1lv9bJTSQ+kk)A!!q! zzI?^Kz9M}&F@W8e;U*@lfeK+gW13%F0kUZvZ|`Sr@EZEsxsN5Imp97)BYv~Z7y4k z4G}$Q@R^+B?t~iz+-TNVH;VB|B5|=nYZ+JYc@T)?siHNxN{m=?#Ddabrxsz=Ny-oU zk#AB&eySBJR2vhtX1bjxwy%?a4g127!YF{k77E1Zj!Fd_Z&Iz^7sjk^=yw#ETE`bG zR<0SDTu@Uv(ae;-HxZbKTfPXwA6fSf(rGFdCCkSr#1U>N@_Lp_QJkC%ohff35`*Sy z5mOb*qg;nNEjYqR!)l)UrbLG4(y-omtiT0<(;T5>Zf}T;ij-tj7s})PaW8XUeg@_X zmU^Sq3DS~17KI{&Zba)P?ong-NrmnMc8ySn+qLbH6;WYGHl9VWSY*y zpF|h%5KZg?!mZpqA^AB62)!mqNf?W@zt@|-#VGZbb+#5i?{Gg?CkwxhRBW?WvnAP z$-yvM6#+L>n}4J>*VUR{*16E`H;YjX+4gs)gQuty7r`LFRbcGFa(!J<`YJG`v2I^c zxC=eL_$u~V>b~R{)u&z0aSyG!RWFj3jF4Rjw#YVQ#qu*k*O|xJ-R+whQhddoGS@qG zA%n0xu7ka$!MN{#tiCUFE_~J{=XqQ*vY@5_B9P)|O@PY%2*=B%HrB``@A8sRE(0Rt zaXY{2%dcQ*@iN$R?uz0|(Xq1CdpBkYaIj z#`XCtHI`<%-p?mku9ZcW;KlAjvVql_vO49bGM#DDnv;>@9U$F`QFVBT$0Qn}k~iM> zkw6h&>#kLQt~d%8+l4KQ(ce*tF(8czsx&Y{>UIvEtMuU=L{`gy1MBx*E(8@~Mzzo) zl((JK?t=&eax#5sx<6c^wTMF$k!7+2T0FGyB9S@8eq|_5DOM&6)6ep4^L{t@O&Qz9v#b7a#>Zz zJ;U?rCQ4C|9%$DsVsULFiQ1TN(9ST_fxo5}SQOY;hgB0SYxiJCUc#oNA;X4;{g62q z?evCsgiEk{%^C)$uJVgVn1lAWizF%qX5cij7|5 zqF)j_?j4u~&Ev$tjCKyeQuD1(zr+nE0~$TGVcER(n$mFzX1sm6pI!<=>N&(UEe-ZT zXHL8SId{>!KvBZYf*RA~c`9&pM!&4Jh$@mE>I35FbkwAb`h)qfY_0QQ_?2a&4#c3# zS{a%i>raX?v#kH>yuAP~w4#8oYE8LUzR9z@0J8@=uue~ug7l;|H!RswS#(f=x+Al_ zPNTBBHn1U6S|rP?LDj}AC%kYuX1bjh=ut#dv~UrDmBrQ3A_%iGA(3V#uov|OY-|){ z*juXg6wZ`j7^++FCI>YNhC&=eU4jq^klwE@KG-tLygb&fFyZ1kdYYB+Q*= zxabI~$l zO36{3vBkGG9F9;zLpO}tm2Wi8@b82-)a^{U6W=(7n$CkAP0dpl%ut+1SSFTI!?rkdI1^?5uVmq6kGY5 zHvjIgFqWi1U}LIuY4VV-)UY9H+peM++7-l91WoKJ_IHXroDf^1#1p5)A4OPow5|hl ziO2C4L-7gOyZ*H3bm2EoJLZDW^Bv*HG7^R_OfD6VrVP7IiYU}+@DWRCpcXO>80T+P zJZmc(Njq1Atr#_vTn8ApDhy|bHQ}{GZF)NlKKuoT4-;?FdisFfggg~Y)CqU7GctpF zd_!U#=5V^rv=|&lPqz?TK3lk!1go` zljG8E7SSvREI4EWNr-Aqwv5y9{5Jd5a^oIh8dmt*kgy6g5EflsD07~cgQm>uOJ!bn z%BbbtcLk*VEc~^d86Yi?rf;5N0>JklG$GJ8jPQt!e%B{N^d_@Ir zLn)mRB-*ViYAt~J!2+n?TL7K6wt<%(jW;3$z&tgM;hktEbKFs>tMBL;&HgESht9AR zHRapTeFgk#Vl?vrX)aIss(v};|5W}-Nay!*M4_0xBZMd-0=Ga~8V}lQ|7!GBQGC%C z!pyvty24P;hYEV8)wSeBCwfcbG<}SY*S!*!lWREmNGf#I3VaIhbP&XFA|bBD@@nfn z=yXsy!7_!8M9yn~LW5Hez(nJ)ao=kcW8G`zcrIQqcuBEk!WO4pSs-NMoBIB8xP|{H z93^%UV~I3!inavZm2K2_7h8tPf+-4Fj^bLUbR*M; z{Z&Z{e6sPt{Q=$(v5z67&{qleMy9 zuS^rL%u%gyUajhG<(uAU${db~s^226G$6D358l@a#3>33f~OxFOxYB!xU*9F3iq4h zZ`zB>a+fhIYYLJ88_<$?fF*Ma>13c1zL|~+h^Dfql)sYqPa~zyG)_|M%)rC zTcW*t=Q`UhjK}uq=4OnoTD{j*^BPITR^S!O0%GQespepp5>cAsNPHu&SAxlk2kJ$h z(4r8;9^k}l*O0EfE=+5Ii-RBwM;O+{#?rIiT-MTzk5QAg4U&Oi#a0LM=tYK(4Es3k zPq(*Z?_p~4{1Ty%*e#h&%8IVskxf3YS~TU1)%`_V(8xFt+n(p$Hq6H}VS`NYfZq z67t=}>O%R$e4*pOkY>G&PWyfCi01yeDsU)HbXareweGY&vh-m2Xv{LOl~w_h`fx#b zLjxO|sKd5L50lJ^_K>jIJ9APqaJUxZ2(lg#SsWfaa)wk~URU_44P>@Bh`CmG}`mRQT8H`dO}^ z<^AFi5KQ>g&cBn{5|jUExdRb&@5dkXh^H-y6Rq2NLTI>u?kO7X3A5skJ!a$KO<}%bjQ76dyEx!U+dB zW=p|mwi*l9zOl&VJ3uZ2U%+*xp5zOv2XGuW<2mxhc%*FgJj|kxeX#q(=byYxz5VfO zdC!p-)iWC#Dgbvqs&}4Cy{hhvU%y1TrV8#AkxC8j=l@$Dz6_3FB#hfk|lO zwBxbrPmM3XHF^-9r>FFh`l-5m$9?A~?%)ru+~4;ykkn)FG-ul2V_4Wr*sUHczTo@mVN#~jBTD%F z2i_0i?%ju;mipZ4z$+ZI$%xy;%!!sBSO=+|J|~(i>W|+~Ud5Gush&Pi5X{q;zQpg- zSF#N}y^oordV0@huz;xi9pKR#K1{J~@hUAA7NvjsKs2RH-0JD$MJsb4tNvkgGwS|y z>@CCn)&sP0-igYysUAWJJV;L!!~LL$P;OS8i`KswOChSBW-I(%O*+bCzLSYh%sWpU z&H6OO-}tP+Dh+1`&KSr()qy>MMdLf{zydYfHQv!q=bbY8x(?vB;<`GJr_=SCdDE^( zEkBU5(ShF4Cv+fg0X;6!x_Y36P@UU`++*M1>7t&6hB1t%UC4bR=;h$7p&F$b$kVCt zlUKY<_U{h#9-C+)1a*rZ*i_glcb8G@06s+x>;P`dCyoEG1AK&x+W{ObCu}S^>h|JY zt*`GCGotcIB0+zk?@S{@N!W(0|6y`5-MLOo|6Q|C=aZsvM*=hY)q zrvuREV&CPx2WU8+_G~LIA49hy<_zeV5q+AScL`@Q&4}65Dg7LYMPW7vtVbTtzvWg{ zNe6?Fz z$KOpS7l267r=4QYh8O$PkjlR?#-FlBLFbtuQLi4F^tGp9x$$&*cI5+1hA=gE?%va3 z9n)bDw{~^y8+ZGQlm4dewDzq#+N!0#^8z(t(?x8N(asw|J%n1H{?>s%>1zse@2bg| z+p3?8Kc316bMZ1Bx@ zZhR~eVs>e~)R2SmFE6*n5Q~3Ky|BrlI-q5D(7K&456pRcMT_rYZzIfpbyNjXj7QOi zPP39pn4>FQ4Wg!p7_m5VL(B=GrFya)1vd&wvz7)Lj@#3hh;hxU%^JfDQ;p)Z5539l`q8m2V^OtVaeXUI|nWxB41&%mT9o$jxBI=cw z_L$QhJg@KFA?Vys$D3Qp z!m3}Qr96!g36qH$1)O^cXRzpMO2DW|{dkTo6B|pB*(Kc;#iCGm7x&u=L^Gr=7HCs_ za*~OMtElpZD(^}b@MwtJ@BpswcQo`;RTuCt6ue=@#}g>e%jozO}{dFviX zsCehNb^rdW`}YyLIp3ztGIXbhv2{!pR0yi`tXV-7LnM7Us-x`~Yd!f@>%&Jf@zv8P z@YeX&o^d`iD4tK9>%NVct`njo(`pdtY_qkA)44EcoiCPNjWI5BH7;eX?pQ1O0^GdU zs_y2!P)=OLT8&e8WLb3TnKoaz^W-tkeGEhB2a<05jCCZJc_^w_zci{sK_1-03~*q_ zykQ@69<37)=!!otT38=wn>_RiNL@TB)haXsMB31BK;}LN$NIi$xPEMPIGu;>fL=Gu zM$sr}1(lI?^^Y)7uy<{L9`~fWbsH=Qg|)aN8yV?Z-!%Dju82_5`{To;qe)TY4pi>h zWRsM`r|Q}o;BrtL{GzCHLiA54iX~zaxvqwvjowYIN5&Y&~&wKviT9 zv~H`0J(tx#b1!vb?IUxKdEJVPO}a=t2HCF-L-&=UMeBNAP~!FGnp_dK~st4^7Ft!S2)o(P&?WBFHu; z;APQjz_4mT-R&2iY86ulM8?77-qN6p`sr$Qk*ny1*t9#aZj5sQdnt?dZVE@i1|Oii z^t_HUqf%@_+>=o(E~PXOq`WIB2_@4krFQ83^=k)e?F%7F+z5nmoj@M?kS{&p?#XYg zAI`i>pUxlZs4{)n>0GwEJF#e5T^ZGwegvD8D!;PD$f=m@g5C89Dpga&%0-Mtm`NO% zVTgodrijYc^PSOBXw=Sv*Fd^#-x`4ohX@apt!Zeh6_so=Ym!k>T1O(!C*L;HCq5v}5-8bfOOU4vXmF zB5Ke@jkhLzm+S(c>QJQYz)o%TBQLSc&--1~Y6}`fGc1RLqL7=b1*nlHJ#jE{>Z)dtykoh|q9~R!9feUNBPO>G zAS?)}d8d;p*5qpN_-7{gBsf!y!{b7{4H4RNJ^*#SEm$dBzd$sXK|ol#0#pr}+bbpx*kKf|1hQDQo517(|8j35834J%#MhJm)j=_Ug(Sl*w-&-ouD`3HSg6S)K-C zXd2G^)^RWwzOm>L{~*hGyXLz(QmtFq==N;VF6FOLd|n&)TweP&fTllDpjR74?_PpM zFJ35!BzQ&1+S1ytGd}!Mf229z)}eOsm`{)>q_Q@=`6yYM+IM19%A_wy9F)^CN07=$ zY7sh$r38)xr%m0Rw~*&l+)vIEehR}i|ATipCicb0x1(ecYAmwWCGYEy1n1&SuXJJ? zV*MqUt-_a}Y2dm9e`Q1CCGd-fcd|9Dx2Y45rS-KBkl#|!lJCac$;3KIFiNhOpvqo= z`}sSVrH(=@R1s|VmNS*Uk5O;6K_kNwt-MPGCv;KRNL}?kF_k)Z$GeH+>Fz+`3kP_} z>Z-(Jo1ATH-vEkFciFo~SPJ`2zC2xi_VZ0iy0;@I$~$I;vKj~~l%o-^I zSZ7T+;CpSrVl#u@*O2Fm&~`bE;X1r7P5WXn+YQ6qSNbYGE3HvTcg+=;(A%!dWCQdpJi`8~s7Pg#{t89?Kh>j%T zWNOp3l5TT?OIO>pZy4zw9lSz@vAx52GU6i=z{(qnZz^VKV>!bP6?>`5h%X&YvXEpT zrSIVLE_r7>00olfC-b8Ms~=ARp}_C$kO0CoQWtS$2hShbYSsG2G}0Hdg&J|`u1yYV zVwwS#^LxXPdsp^RV=TP4ak3VV8jwth_dx!Le^7=6G_;BZ z0T{V_Hvvu~IB655;;M8#2KjEpE3|JK;(IfPSD8NOsmQjA8ls{jESvQk5<4tHh6#oe zj)2HJg+u1FfgW6SBRr^A-Fd0tzAJBFOt}hfW=KOSHbO6!A)}2y=UG->Z&_oVY=#0k!r8HXGXS~UHPt;OxUZQ32OD=EGCO7 za%5^WxcB1IG|Yv}FV5O|%Ay9(dE7;vvRA<@7hP3xBQSL+A(LMRCv7&WmS*0;)rEWZ2fE=mH#ERf8Z2Oob$7en9tY%27j1(F?eD zThWV5Ms0*r7rCuy^=~g?_O5kf-(IZyGO0hZSt=|eG4LDS`E4aHzxvxse{%~G)to@_|;`DzxC>J-S-9Y{)UgdaP#sTE)?iieOJCdYy(;h z^9?V!vdHDvTv@F9vX`laeZz|`-M;*iOGUabz+@Un`+UP2F5kcWipyml=Aw>znqX3t zJ@c^Xu}eh=er0pI;PiE4E|of%E_N~~z!Qg#ZvU1VG23dNmkXnLsmkZLHm3`hy3s<; zZ!3q3^P8J^Cs!IlUu3t$9`Vg(Urtv<--v8~OCd#H9%{p}vWWSc>yx*fZdQTKx73Kh zJ60sb_FKx_ycfd!w-$jx#bIFIQY!U@vN2%Y_{)fNw~y%J5EufUiI5#khe1{>CEXqj zZ?j_rBG@BBc$s|<#T?{uHiHSLw&hW2uaUJN>D!=vi9u-|u|wVt^I*Eg6;|YyMi!e$;GjVq8i-1iWJoy9D>${4brL&?C2LOto}FOS3)xYo zhL{>kA!>V7fYMb0G`UzhrX&MbcOeEa;w)RIXNoH6J@Z|o-d(~d` z2LG<*zqc#>tEzXZclo2d#J}r%pHc3e>ccm9#I5_HI{S{&`cLiD z-?i!oyy+u;)ovcG{#gB|J$+rZr>Enqlvm5&rPN2&S@q7|uW9-3sxSEaJ#YOLt$)Pz z>$iVjeOMjsUElkC^;_; zxW*r4&Zy_B>bjr!Ghh2B{=TgKnSWnWN^gFz`g8U5-dERD`ggSHkJXoN|B*g^kG5Xl zqrd5ms``w7*C~I!`W?Bd`cIU8kJkRF`qSP!^wF>RQhFHJzi?My9RGd4`f%?zJo_Fa z^r1_A#karr)<^GrL>tuZ-@pAC_rBtpf1&=*+%~mOqxqbAzM`V{lzvmSzE}PF&DEQ4 z@BNA=-{JiqRjco-b!XMrZ{{n3zEl12+V$#d0PoYT=X=qjxA(vc+Vej5Y5m)0+*g^S zAAb3R>p!69-}wDoAMxI6)t5YRy*i`(S9@Pn?_PVCp1Dq4?^M5e^Ne;}|LC*o-8YYT z@7H|OS9^SszvVi=zrFPyeH?9mpZuTPtmo9A|IT>k9iIA)bMN_AnE8(IaPJ+;|2^;f z;>}<0Rc~GQ-S7LW_3hy68;mnO^5?xj@39(`5&V)e>Xk2e<44r|F8@fAd&f_I!SAo= znQQtUYWQcK`%t~b)4$=1-laXy{qJplKLe`VyY#{lHGE0yKdb)M|M+5$(yyy`-hRaM z@AKUib^Vdw=0DBaYn0?mt_j;!(+~K4x4K6Q{uaz<#=P~;Ti4&>JM~4?dz5;Qe|rB9 z_@xKm{KK1XU;FKwzkjp3_PaNK$2I=+eZRZ*5zoBOm%k0RJiqpcdIh-#{QJB?v+)r% ze+@SMEww)3{nfRp(xF zPaiS2-r@Jr9bKRqdq;c1SK-rddGhzX{deHn*Zczy>Hn|Z{OGOcdtdu~ z@AAT36K=mtdw)>jfh zsPAvM_n-U8cewM{q*Uv_p@;vHKh4BFet*DUJW;vyyZrt;%KaDo{gS@xZ@z z&2Loy6_Ed$zyF56_bB(@^7r5I#CQ0s_*1?AJ@5QG%B$@EKuzD_>HiVf|KvK<*MD36 zkh}X_|C%qU_}e4>@2UCk$^FkRca0L)s{e(*|G?k-{N3R1CV#hR{|D6jBcAy&&;Eqx z{(|&}wCblk|G)D0zXAK-Y2p7t`Tvvp{xAMMqP6PN+x*=jf0w^|r0??u54ipZ@@n%# zzTi9N*Kbshf&Bx2Kj80gxc4)@=-=|EFWcj*p72#q>DiC@dq$a3{yFJ?g)*u7LfLk@=2C=kGnnYo6Nx*Qjq9vG2L=>i?_kEWq2ywT7)3J9cY3PEtsj z(>CQTGegSE%#d=*%*@eaAex%hO2EafV1cM1P1cp*O(*B3R zaP%7iBRzVC;5G_I(@I>RK%=#cp|y;qwTz>+jK_ZhOazfT$%w0~$+V&<)b$kHB>kx{ z4gMs}>5=lY8TaZ8+-Jfpm<@Aid2u4k)GV*LMjX4EhyQ$701IIeEQTep6qdnqSYecV zkXlJgUxhBKDYG@?U@e4`=XJF3_2eUfn%jU*8(|Y{hAo8I3fo{i>>%x(nDy}61#P+B z4SQfO1afy+j5{PJ<&#V8<1Vp++%0n7N_)x8U1J3WnsNV#o7_ctam(uomrw2Ij*@=r z033uvaF{#H4hl5<*JBgCBJewcd6YUy?rA5vxC@VQ-yJ8vC%8jTVxB_B({P6Ha=%Ol z>E+I1o+JKw>=z83-0C9t@+Gb>!xgxS|24Qy*c)hZ6K=t6?({pj--Uy45AGBG0qH%2 zNAv=Z=>>`s?+HAGXYiah@dDSEgntFE;SIcnckmuQfV91j@CiP{7u*sO|0{fh@9+bD z;-@sb(m)3bSV8&(A50tAAqqqV2ROk6zTgHw@P`112GJn~#DqYI1+gIx#D#be9}+-9 zNCb%?2_%JN5Cq8~1*C*vNCl}OjaH0%{;ztc#l0@&SIfw`uF`2bcBRtOfHHuL0WuOV zlUAG_+U)l-6DJE~CG2ER`DDYMU9&REm2$SKoLuLE+{DkLIaOZ5=Y#yX6@Y?J2*1L( z6@j8qjO!3BgmHffRYEIDJN5Q&c2yGpQcxPoKv^gU<)H#pG~(J-CG3@<3RHz^P#tPO zO{fL6p$^nVhk8&S8bCv61dX8yNSl@CL{q{xgXYizLdj=KXhoRT&<5JVR`M;++F$oG zeJ$bJqg$9JeOF1I(gS)ShKpH=lH%-`E_AKdyvKj;qwU?2>F z!7v1d!Y~*PBaqLLXEl;C$c+6wX?y$1QTUIBF)$YYaWEbxz(m4Mg2~vY;6D|n!JjZ4 z_Zhg)gjq(J>1sB1DXTg7&xLs~pZqPrTnLL`F)V?lu*@i5Df6oclVnz-B5YQnF9wWJ~S9*(&V*5kGTHo_*-4#C_ETVN|}gYB>bb|SYo?83eqa}VJ| z8GEMst=y$f>yh5?WiI#NUf2iwVG{laFb~2ZI1CZUlDr>5Cn<-c5UzRKle8ndI)>YE zH~}Z&6r3iG)W;cQoW*`luHgb)q+Bj(ZgrWmxT00ynJD+0jJITzBV(<^>Z(?W(Mu&< zEAb4dtga!`J9Y|1t~utVuj9XrU9XeQ4Y&!n;5OWWxcJ@0yr)%Ryyd;G-ReH+KY)iu z9hYZTuZ(v8m~@`NQ?4_@GvdmJ4sh;T>cpUPUy2 zkNE*U!YB9)U*IcYzQK3+!SzpwU<@dEQMy--PCT9Pro2!_d4Zrn#?ew1nlAp*Zmdez zt;(WHy|c=MyARmF4pAT~avk8*y<<&g8@T%t&#hMz3CfRa#2Muf!Dv$E3f^+|CvJdV zLxucShS79Jn0kzmWj< zgpdd~Zypk3PeRzFkPO{|AUULf2;_AmUP|HwLn=rOX&^16gY=LA{vf_QZ!%(Lg3KUe z&MbN@l@(dp^a?6Fe3c!lR_O; zOs}It4Ea`7T(8TVsh%o4;7%IURzbt8>-5B zBUJ_es!$Drk&`*H{C_X&#;UsBMAguns+xK;RZDNKYU?dj9X(Xl)my51dMj05=bI8b z=S6frm8I8HjrDe_iQZl{g=WwkT0kf|RUj8FF%u^jGGNh_3Dj-)H)5W#Hcm%Rm{ zym@9$LEIUhJkBIgATdS%KGd(Io0jx`rQOq$r(XDRZ*Xt^dJgo)uNP(C$0)m5$enG- zBM4>)Gb_<;j^W;qd1pTa_ajapHCOMg=IMRaeEg)%NPB5XoKSj!1=O*d{|l+V1-LDO z#jpgH!ZKJ6D_x5N<8^QEFqR z*I$L}Mb$d`q4mhv02|R~6KvK8qPO_#Y6~octsphG4RbqTLrHN5vUci&7^_NH8Ba<& zcD0KzQXe7ABLC{gyvXAh%Iwngv#UMS?OwxOSNlkRzdkfF-T~5TM7q+x<^DOS52KXK z^bV2cVTgbu$T$ke3|V${962Z8B*>ij6z-?>;Ycv^b;d}KXRYCGSLcv%ULQf*5`Vk8 zV8k0qUu0fi8@Pk8Q4WW2}k1AHXhC(QeppAFek=2rDZpF}%1%iycwFX=MJ(kIgwdD5j+zY;Gi z_emdgy6=e}gV}wc5$50W6{NmL%9QrP^Bp-qL0Qb_n}(@_1+3r$Hj9kYWyL_!r#In2 z9tF1$P1+#yIPCZJX_4(j+NA?GDK8oK%8HK@IW9w{jEAkt*TQq1Yd^xpViiI&WKUe}Ep8RVGDpQEd?3UkZfwjrmbogfWghE25~r1lXJKUr5W9fNNJH(i(m1BE%j6?%Oc#ZDmA3BERMW4Bwz7C?(ek7 zNoQF?&9HWd{hhYduy5u%gJqeg9?W}G>gNy2Ov)pam643d%|x8cn9?t0u`E?tk(G_> z?2rR8;GYw6L2k$cc`Z(r&$66(jp(~V}G2pfD8iq!YqQi}$`Qj%G6Nly)Td z;dAP{DDsNIAaWmqSsY4GCMBViWtAt-R#n=Nr>ipfm&NZDD>r8QSE?M>GCgv%Z5=WlNB%Lj0m-622bP$KIQ^c7`+?U=L&!$!t>_NlVg~HmX!Z{2CE{Gx=_e*#w$; z;x@x<4hQjTfqN*lq)esUTA@>GuG>Ic%cjUapdJ40Aq?JAt{w3Ign69&OMQzz9W9$# z#StC0s7{uxsxx7`Kv%+c1G(3_Ll5W)y`VSrfxhqr8DZQr{jm3k0mK~$gV1#_41u9A z3?xli4;zlYBM7q}UHXupk@$tOf@b!w|K2~0q8>&Qb_|TQ$h~UzQM-^c&LiKvr?;zs z$Z}=wN_w*XF@ZP}(Qy(?hAG6EiXPJ}Mb)3kp3e0Qu4iJ-f{v`_nK~&oo9j8mnG5r< z&xZw&9R2^79LaZgedljFS=B<)SwxzP|EC_zjR~{V$b+nF?eg@&yVWww9<>}fvi=;Z z_IjSv@?136SXZE550Lbw{Yl$diL6zYeUbh6YLEXK%n()-&Hi25l~t`pb~voF93ZB& z5xZJX{0)Q+Gs@oE{~x5?Gv6lcCj2GLMC$pQr=4vk{1ymih0?sIn1>T~+kXu!b$d{4 zw;cBL6|AiyV<+Vx&;DJ+m9^yEn1fW1+JoO-%5xv)ey9o?^@zy&lQNKUI)M8@I0T0w z0#?#C>R}#%aAY1u<}o-9C*UORxmi6mpK-iRNB7h4jq*4{zjxNqN%D8pbN`#|^7s4r zoDoLuRjI3Eo<7VRo1DkZd`^mtk-g88^@ zFzQ9dIVU3f!uz`PVcv0*ZnRx_zRDWOZQ>l2et^|qvyM-xJIK8Y_aL0r;QN>lEN9T! zsveR~8jv-pN5p*$Pb_EYJI|=6xIZIoC@aNgJ)c+4sguh1FQBZfp13bCyO5f!iR~io zQ0nEre!){FVmI5X^lh>x@KU?TI;MC1fj4-xD+|2zl<6zX*YJk4-@-e14-U z&+rAl!Z-MCNuhpNyz@Yr+sWASlKM$~zSb^tA6!PO%kbFWPP zSy$#QwuI}*O1Rxv4ZljbAf@9j`9&T4n8jGHQODPn57#!ZTUm1^OjPXM(ZgYtHJkX# zY2_WbwVv{|-cWAv!|rdrsRFFJiUw~fTX|n(zE6s&qFZmN7`V&&MoiHKVnJ-=#^Jqo z9(0L|84uz^0;}Zzwn}KdtrA)9sKi!zXLUm*vEEflt@l(iu7j*@l^jw)N(hEjkQ&k; zTgHWHt>zj~I<93sB0c$$xo!qbS^N0|Gb6|vP$o=SbIOdF1+qdm$PPI`#$q`!b3tz8 z~pD;(%8!&vn-UuP1Xv_V^+Xj z*4p~go+@Im1eI~Gf?1V3R)gwL18Q3Dt6J6vsf%<<`bgEcK2{Bo+t8Xx zH6mVPXaY^48DW}Ruc{VSS?{~X2;m9+*%LH+VziAsq%C=td%+xoN_+E;L9HqjU8Fu+ zBHzz)U&;Gd~M$|(1R;Xa+TW`OjMf%J4U2{Vhb zo^74Y8u4tx%{Icxb8HUb=E6Lf4+~%+EHctF#_-h{as zw!l`{2HRl=?1WvgoA7%GyBBjG*Zbjs$U>Jbq;UxIFn$qm1YM4DeGJ;5({aL{fRk_v z|I=^=&cZo34;SDfT(Z7XmkDFx`rgR*UD|&Z z-jd$K?LK;iQGU`+A0YD~JR^`!mev@B;fwcm=PC`v%^^J7mZ@{d?>m@cRg# z;4|)DFu%e#qrc*P9&SJ2CvMV-YCg;h!GhfiGCuI(+6H!?_v|5(xeRkbt{vb67x;o3 z{P6e34Dk8D?uFm`Q|YhG_ZiXfj}9>)CImt(hz)Tdu8%xl&GpQ9T*rq5kPs3ZigzHHDvtZ8(*+AAovSa3eoRAB0LmtRW_%KcOcYNlaWA6s~=Z6AN z5dT7+yvP`$FkwTqFZ5~h*7XZ*L++pQs))#j7O8LZArG37tGCtqv z3%(KSnyXNs10?%7;mV;s;$ALO0wiLnY`AlE)sT-xI%HAZua0x$XmfeWI&=KFq8MH-Kw-XEl&?2Ekw$LinMW z!|)#tBVZ(q!fiB+ATL_EL?-A~cvERpBg1OYEgj(jKvyv|>y}B&BFJ=PwdjA}3J zgJnF+_Y?mBek;*3lwAZi;`MxF3cHABT1Xo%SH(C{#wL zW5_xVC*Y)y>_L&Wn;><{$EC5C3EfQHPh*}T&RNWJnCIaFT=WT2mwbFF3kmC{jLbOl zZ0xQ1{dO(-`v2`Z;BVK_G}gh9W8QPJujGtRbo5}fjN28s3NqJ{{#@1@uAzgxXS$9a zH+*7f^4?+(I!gLC@w-L%+tkG!xQncNJ~4@D-uEKsukZXysQW&FT0-K=+Q9?j%ez;Z zCp^Ud$dJpk2m2H3PcffiKF53kFR{PEd`+5f;4Qp^_qct)?<3|X_zYigm-nS#v44Z_ zKC!ePKC$U5c=q6D%n59)^@9!v(b-~So&!E$13N^4sJ1vpJjqWzaNyn zX4oHyJuxJKr1&SpJqUYpNC7D!7*auM{L)~ig><$UT6$YdErTtp_J_@>Wh8DU$V`|l z_-BP|kR5VBPRIqhArIt*e2^asKtU)3g`o%(g<=o_#i0b0gi=r%%0O8t2j!sxR3z<6 zn3bUllcuWZQw^%y0<{{p*ji1>w-(p6@t>oOQgv+cXlLvf;kq8wC%)8I1MCf<5p=Y~ zm$s}LBTw356U@r&)DgF)$Z7`7p@l7>+-E8jdrN2qt)UI!+ajkOw1;4J_k`IJYqD2T zj6EX7uUU^5A=n8&>sfCKo~@r!7v2-P#A`NIOYf# z38P>%jDfK*4#vX-myKN)ih=2Vylf7+60(_scW&BSjO%(f-vi9#Q4=$VYNFvk^h zxi;FnH3z%lykjKkb3dqgwj64{&8-&Lg0zJ;c{iI}TZDXh{x2q82ofc(?1i|f$yg_a zwuE-Ql(5Te3AE)lx+d+jT7is}u*#N9TaDiuSPS8>4%XXJY8#NZ5!ssvx0yQLVw3r* z>@SS3Z6(Y$+jX@acG$en_Cji>Em+%Sllhlh?Y2Esdu*w+y|&nDAK~{?w+E=RgXH^= zEwz@OydS0m{@h>1NAVnJ+(192f9 z#D@fs5E4ORhWknEfABnFj7(f`NC%lZw7851|*FAYg|ACniGJ)jjG4dCZ zR%Ud}0$JfBy2&1xY{btFIUpzGg4~dYxOpKTVe{Li4YRI+dqF6KTVW^yMeWk3WYCI{ z@Aa%=Ct&28PLsXK(Nu^%nko(@2v-tHL1`$1+_F#(%0mUH2r_=DgjpG?Kvk#))rnJs zvZx8QNWV7JfnatFnr%9hX8YGN&PqS~Z{@F4UF3wTY-s#%VKQs=(4jswfQHZr8WXQ0 zV|$s~H$kta(99lRHMcue3ww4g=6{vvR-yJBT1#ZKvgg!VBTw?)2D2@0?VvsK!Z15P zN8CFhx3fJLZOiQE!f8ug?721n|C&x7tt)Y54BicSGVkn8S@ytQ9l4?Grd-c1O6R}I zka%X_7|M>zu68Mld|Ir34KM!QeK}@%^(1~T(ZQ2`AIv?p$-bEV3>~Cx<=6US-$C96 z*b8Vr?BpECwfGN$!7#*LNRyKWL$MEo;V=TZBQZz8Xyk3>4Z|4Bu`mwC!vw-i#9#Km z%lu!;c@l01xPK<&{+9Vr7}rx^D%aEOg|!&}nm@Upc`l*LbbAqPhTW}Z!Yq4HZMHqV zHV5X~i)r(aH6IqhLRe%E(Gvfw%#3QWUG{MnrwmGHON@Js_bHL($TJuFGFXm&GKXJ* zxe^LyOquhXCG0skZ!hy-+G=U-0&-=~!$rbMJ}%j1M=u97K{NKr zmeVfdC*zwdm{;xPwM74#Pif2X)ir2sv>S7dcb#}LZ}9Ftle$?-8@OSYaYIRU6aQQ2 zeH&Bun%+UDyC5eH?%`I5u=nj1vN@udQ zN}H9oX7(|1U%$ow9mp99*`pz4{hsR&g!@Q2d?HQRqc8nW65N*>ZL=DwRHGcKQ4T!! z3HJrQ!Z*StWVf}0H01g_{D7ap=0~N04wfi9`@ttl4W8vS5L3gD6^ppGDD2jTC=it} z4#GRZ1-{@0Kk$bDhz8L)=9Q4$-E#6M2KJZ`2(chG#DTb=xCi4AK0b02M5(38DX)aM zCxXO~1d>8B2!iC00#Xt_7_%cg$5|p!sj#PpG=^IpEhA~CjZ#xf2k9XL`~evu6J&-g zkQK5)cE|xaAs6I^JdhXiL4I^Afb4>#TL^s%V=n?lp%{cfF2*9o@h^eBB$R^EPzK6E zIVcYmpdwU)%1{NWLN%xkHJ~PPYDKB5-63z1ui8)tXa=e-rj%hlkbKvN2G9^1L1SnF zO`#byhZYbDEuj^(hBnX^+C{0YwZ{yD4$u)gL1*X!U7;IvhaS)qdO>gK1AU<%^oId3 z5C*|u7y?6K7z~FIFcL<=Xcz-yVH}Ky2`~{R!DN^MQ(+qX3DaQ)%!FAm8|J`VmA4McEC>91-oGn?1g=> z9}d7lI0T0w0*=5@I0nbz1e}CZa2n3QSvUvh;R0NQOK=&kz*V>g*Wm`-gj;YM?!aBR z2lwFtJcLK^7@ojWcm~hm1-yh;@S67a2Jnu^=|Yfw&M4;zI&R2#Fvu zB!Q%m41ypzq=1wV45=VBq=B@M4$?yg_yaORCddr3hMWa6D`bQ0QR^|TVw{h?8+qnhCGlL@t)rrw&P@fssa;s50+rh&~N*YiPKYC7kG^tc@7UH^RM<;a(1R9v7;7RJW=S zwJ~uT7nQY%;a-XB%7$$EBqLr^p1_SYajzP+S!9@MTvtc88kik9fg}3{ zWNciM>snFmylZ8h22<%RG+CpmgS{@)gZj__8b&qCFF7Z7coL~b#8uXo#`wH3cF9X} zPV>n7i6*2qk&dq^=44EnlX=Ig&2VcTwY3qi1@S^5Ij4W75JpbV6#xm}68Bcn8rncx zXb0^f3_3tZ=medi3v`8U$nTD>J)kG_g5J2xT)PiuU;O)F_J;v55C*|u!VST1C=7$) zFak!B_feRmVGQ=MFb>9ZJpmq4Y!iuJp84n`WK4!BTu-I`roo>u9cI8xm<6+84q@gJ zb{?jjO`MO+1zazLMX(r_;I}ktb8Q)Z%dyM&DjVZ~75J@$Rj?Y?z*-1LpLMXF@EZuf z5w}gS8MeSy*aqA2+W|Xa7wm>T#M?`}ec1OC<^UXoL%1D=2si>q;TU0$<97m1a(xOj zEBTkT$kW6>17~qR2j`=Ps0)}E;S%nb;R;-ZYj7QIAnzvrw~%ui?!aBR2lwFtJcLJt zeGIa`_XP7PJR|ONc!B>*u3trMp}mgUQhO7%mG+i)_AY8DWA3)x^D^dktM`=s2lxod z?6P)m&XGP5|1qJd+#+|f6*`*N( zv~uEh(OizM%(v)^@pC&^(*b`7fM^gMVjw#v{vn>c1#%q=V&fMFo#Q&(DxRYg<-#jJZLYc++7&E!vhI=r&utA4&i+xDHua=51sXE_2Q00kX` zNY||jL18EYMWGl-`XP?NT5;M=3C9qvBzl&jK1w?VqSH|3K8!t)Q5MQUdHjQEyA>Qc zR7J-ytrB6&FlVZazEvC!RTckg@Yz0`avYBC!_i&NFpuDxKA&(kpr%81QJZtvT3qj; zPp<74Wwfz6T-SAsrhe$}9rX9m05`K;j*%v>8uDkjUF5PBgkG{=w=rfDXo_Dm=x7@EXPFc82ZoVdbDGbHiyC5T*qYU+OFoI*C*;} zKIO2$F@?T~HBsCa!D3iKoTaeLG1YkHFUM^Ktb|pt8ozgx`5Mf%j%ly=-0Y~Jwh(43Y{Pv!>;RcB??jfgu}bu1Dd-L| zYH~`IbD#Lvv&>=~F^e*qWwa&P|1DvqP3%V29?E8~qoB6WF`ITiOAFUWYx{|Jz%d6I za$Q0lbj3}EyKf=i9 zZV&VCbLep%E`W{pe-WM9P&TsH>k@94;R;-ZYj7Q8-*|iSa0B~IxMk#*_Z`^ppxa%z z2lwFtJcLK^7@mkp+D|bbU_K-6b9h1AT-IgUONZvNA-b7o zM{?4(%rbjTTGGe9ambp~3hK%Hj>lVvoK6_e`n5dI<(#dYv306PJ{agUq#>j&h@ zJ^K+pNg9-!td)H>^6g~DuTy>Dew6oFUmYuvFS`R)qI-}k&WUCVFyrLG@KuidPSP&cH zKwS7lS<1IB;*nN-NPwORA(3+peURi+zK7ygiJd96Bu;texK&d8lR4LFL4h`TdCFe)j!L|Sttjxm$p1+1*iy>pfXf}s!$F7|LSuS zb+?JSbE@jj%~}oYH7S?%JXz&=Qj0pQjawb^D}87PWmwmvyPW^6M|$Bqa|`om(hBao? z@}^poOe#WgLeFHYr!(MlRegXv|i}g+tB;hdxma2kNP0Lu(q8t+)27S(SIlU zZ`1lZWeg$vuSGxedGsafF8ZupgxN(Hb1$Lz^>glKJhvP7-MGs>Ztt^zxhL`mfb46P zHZl-B1{t#Hv#<|w?xBm=L)<;Y4N^l1>!6PuhOXw>LQ~do!oDLEXH6()c~2pIj9GRg zD94dbZ`^&1>&4FAG9$mb8jU%|kQ=1NVva-Bctak06fh^^FYk}!T){wXKXoth8PDTB z2_}Q|&r>j`LInAkhX0>19cDNW7=5;sh4hOfod>yBMFwLRm<4kFD-;}-Ly>+Gem45d zX8DTn2-#w^2#Cv9S;p>xDYR8*1xgloxKuI~JMNT=bMP zc#@`r=jcJc{9xwO%zFg&EaOgj&dww3e50*-W!+W_jC4;#>QaF43k|oEzqxtyc*>Km z_dFTzJSevU^c4lIrx|De%Hv|vSwebC;jd*XdY++ON!TD&lyLGblVyZk4l7_Ktb*0B z2G&BjQCHG`o~2HHrSn)jN89yYi=K?@4E@h*u?=@gkMDO7e*^9tVH0eIEwB}~!FG`P z-$7bCVHfO%J+K${!G1UZ2jLJLc3$wLEom^eVyqfr=y{QQj%Odp872of;Rtb#8vZgC zx%7VsbNT-e<_fJ_@^9)O&)CuQBGRs<4TbXM4yl*Q=r<5|IcF$m3y+~oEzFuAZRa@g z4{}0;9S6)SSSL2x33~%^KSe#sK8DlI>y*9to9!)>FMQbkaxGz{{3ZNNjZ@LeJon>0 z?{f=XZlTpJ`h;J7$r<99-}T|F0p)X+_{I5RNFcDvY=kxQ!?+Ru^F}`-ZCCazn&-Qv zeP2M%MYsf)LC#XiJFP3&uab{zaGgFS*m{S)iB1xK^PVvKwj0R43Af-j+=08q2~~Hs zc);ukUG8f4oYF@zN5U@_HJd6jFN`gT^U!%udxT$nbb3tMPk0tR#r+vP$NdFFP{v1z zdyKMtNm;*g-ql_^?`v+J_GM15aUXyle^7;WjA}0HO@+KqxP3-1Q#bP*G#hc$7u>$WH~0=e(Ca6< z9wiMvPNFmy<2|row}Ow$scf$3$_`N=DsB#Nf{T}GzTkE}()@_y4*{-n^eSM2F^#ljXd6eC!DzA^wTbGcobZa(SvHL8qkX$@vj28Tko<=EbALyA8Lim!6%!TDmxypW!0)}5 z#r0mx3fUk#emNkg>m&V@%&FO%&vkCd19@Ga40+-watDF5hXm*!%2#s4?LYg;*KXL$ zPrCVCUzt1oT2Cs;x?lmyydc!a{W|Tk5NXLd{=%3=aGyvEC`#N22mARc^AOiJ=B~WY z#J>bssAt*hTM~O8;>))LN)i4bU+R(dfzr5_L5{eG@Z}ykFIN^fSwo4&SA67In#< z$a&s&nC)?Al@gu*x?V6E|1kXJ+aw(*s~CK($V$FCqEjd6OuP`jUL^6l5Kg|0(G{~B z?(z)&wGQWE8#Ct&h|>fAp3n<=Lm!tf`ZEpV8N}Ww?Cf=+Eo^egmyb%RzOK@$pUYqO z;Y&yh7*F>n&Hxw)gIocmE$*@phkdN*I0W~hn6ln8%+MnmWh-H#N6HwE{|Lg#y2waZ z40QXu42ds!h^bpV>B`7Bl&>jyuSXfOV@1jwh0M`lVeB-<6+1HASlmXr;zWiU$Mtxa z025ttBg4sglTg0CWVVC&l(X5VO(NW6Bdr9~t?0>Em1~**OeGIlY2jTM+sJr&4bK4c z+k5hzz2a&basQOCT0)Q9M20!tm6&$M*p~P+VHV+LW6puOFpul`umBdqB3SH7V${=g zJiu-C^7<||OV%249B3}h@Z83!4=PO$}%ck?`_xXTwQmlI}%D>*Va%Ybb8 zUcf3>3Zw3y8}^ijo~vBJhPm36%J7r1Om6Ntvy9T<#@G;j*SgY@2IE8Q>yW)3nHw-e z`P!7Ut&P~j+4&>=h1rLh{p%)I2FihRCX8L>J))es+Kh}Xuobqs((Bt{2khi}7wmSG zU=78bo7BSGLt1-zp6rAD$U8uogK!8ALj-O928*meD;dk38 zj~|Rjz0X$O+v9c@e>rm&;V7Z*(TDike<~^8`>sNU8O!)em+W;j&&5x|FO)BKr9{^U z#Fsr)50UW*9>WuO3eU**b9iB-%lQcGui!P;vKQ|SI=uzi)BcX|@3DV?kJvxKXZXUk z)XP`w-{3p^!0jh+c$vdhJSjOek%aRd7T*%e3O>H&mCe_tH892vf9Q7Hw!4a`D85Bh zRNNiDi!`UNyyps0F5gVLFY(>JtW|(N@`8E49!`0@L&rWwS;;m2miPb5BK<(2}ma)B!a$-8x!N61bb3Q20@SJ7x~Zi9HwOhCGlL^5LEz3P3?9 zgj-?EB2W~2G0YIm;!pxgaxLd#N?|VzWw?Gxos`8a2j!sxRD?>t8THD(nT`8W%0sj4BbI(23GXVqm5t_ERh z`ex%brrA%L^IzV#)Bo1OuQt?yhO}21pYughqu=;!Z%>NZ^t$-fgZj`w!ujUV8u@0| z8~bv8p4nOxUQ9NHX3!j3_~xLGleIwFIJ{%j)0rGd9~bJI)5xdz-DSMe5`A026FnF1 zL8`THZaog+8naKU4episf}M<0+LCTNXz!bsn5-vZ?*JVM(+N657bAQ=o^$y~EgyN1 zd6D@|RdYUM>eJO%zJ!;bF!?=UM$ozc_@#GE5Sj-ai z+v70DBXa_>Ct{xjlhIYqhD^ae6{f)n#!!D^PKOyV6J~+D2axvz^6Z?=^&Ie?cb|)W z9?XXY$X^JHU@{)k=DUg&xUGa$uo~9DTJ)569Oob$`#R*VN7v+(b+`dH;TH04 z!yWqKyKoP;`|yB1`Ju0T^MHM@n2&vf)Dw8>E9;N)O@#aE8D;bwU0(5S`UPeu`jVG& zP5d_K{TlNPyhZLiU#EKSyMl8>E4b@d@cb&IfAB4!f8_ou>hzwkFQR|)Euw$+%7|fNyby=rKqyCIq_W z+aW7dEcZ-RlpamqmCAYk*!aZ(=~qf~Eo~w$*YeHHc$o1a0VIS(kQkCcQjl)}B*P4X z{h3L3+qQKK>vd8L?-A%;=s45zTkdh*TVO9h{DQC;9SUIVIxh@5zp$u*v`D%LrbDPH3bpX1 z&|1i-ZKPL{VTX4tDWT-~M42K-zO^S~mO99*3-zEraYD2b`g*=JDr+AN+@%Rwn!dWU z@l0w+7- zM&A4LY;u<+FXfH#duQTzaaYj00;Nv66%3ub;ojYoRu6Z1!dE0u74ffV);$)vo#?D-Lck zp&#M;!vNd{qKoWr7)02?Fa-CZFbqHW_Qr7hM_>=pDxqf;o@-7u(!E|A1*6^N^fBUx zu49Qi4!i7g8&8}G$fysUuunAN7uP4bZQ5jaReg%PnlWBT%^KQn`i=?YO~$?5j6B}> z?Yl#Au3p-VsmoO4O@lvSI&x<~pMU7hyv;4&#^Ied)TfV}Mfyc(d$T1D`JY3ax#*DD zUWGhWXWgPYAp%rXe&%fkV` zg^_Pq{=M$adNA9ldp#n0-bu^1osJp#Y5KQ%{cE1O0-7^j)yq-J1M`>U+>-uO}_}{)wy!hVsSV z^?V^Zis5hSu#a&2LCQ(`8Z(T1L0V*(x*l*#ymr*1Dfb}Z55YmBeVcL)6V^;e`c$u+ z_ULHJkv$pGS40@H!l+-9vRMUiu^Yi^mYo*SDXL-cw{JCk;-&&_p#)!I>=s62B=E&lf8ia=9M46dF3}ikH$=xxBuuR@3>^&ENi%aybl7It3?AFb~{9Y zsKAmg<;iL_rtEnN;p^cpzd_W{AY=_f)&SiX*>1nV^o@gY8;qNrA7G5^C+Tq3i?{*U zqj_XS_ZyW;gWgtj8l>e7~Yv0zcWi>>aBO=YAQE{NczS!Fr*rHORedmV?|2 zPiU`OFb~m>nC~G+8uxTUbVvk=LGFh@zIZNc4AS0{_%Tk0WcZo;21grl%y&mJ&NP3E z;FC56_t9LL-=Yd4ju~bwWudF&I_gHg3lL6Rxd+qxO(x7_ zie$1;{;`OYfiQo7v=b?x>U@1Y3iX^3w@j3GX1}R=7SgJY-xK;PGyl`jmwq%--w}EY z%A1p2$dx@UQ}`tWd9RyNmEkMy*$5}!=Bh63jAy5`yS7wrcG8gNe-6xKn14{#GDgcu zdb#}m)Z_B?cTRjE)2(v*$@^uu%0s;ea}UW}Q0g)-VdZ<`zrSz(>w9L#q?AQ|(lF02 zJ5>RX-XYqbdO`9y)-j#(o=#fRJ!wgKvMzv*vG|I-6PUr{XO?dv;-^PuVUYR~-E&|s z0!961(gx*=^D_-u#Yi_keY3GI2YYeimN4RZ!^<3F7Iiv{IJ1c3l_%?TX;|Mjzuj1p ze3$Z@u9v1<%3v=G<@`qI^aEx)*tKsK6AA4ca^BQNQBHo^af&`^~3Kc*8Qrrk-lxF7t4C$5MrGHT@PC=~TwO z7EGm1%<7T1`p|&#TF!Gi z2YO3=G$c-=NF8M_4l8w*!n*9?6&)Jm-vne0wkf9U)s%Fafy@Wbu|6vA6`FJ10z#oB zw1U>q2HHY9Xb)lN(7|spI>}n%7=BM|wCd=$gf+1xdMDaVXTOK43q1B^|CnD=)eX8s z59kTKpf~h^zR(Z)!vM;BAaV!!ncv+Q;a0#BH|K{)t13FK;(9f#fwhDQhjp+XHjw5V9j zBTv?To?t$OXCUi4&x!j2UJ~XNyoNXM7XNqf9zOVm@bv=r7UTX2KEoIIO1y8F-!Xp> z?k9GB)>3KyvlR_21H1oNo}toC-@*kcklgwAOrJxid!`8j;IuT}KNCM{B3A67ltYzWY zkNjRA>lcgzlKL;BAChw+zs{8;Bds9+<@7r&B7(*U>5V<9O76eH=x&V%X z37bpm0{7gw=YhPq<-<+ZQG;+$|UKVn2E%`2oS)S|Eybq{=9t~OBuZUR*_sY0e@i+Ge$v*R{ z{_Bi!LpA(15;u@vB5@hNMzY?M_8Pr9el^HTD8E!v2D_visLXesHL;iW-=N1f;1SM z!OUN4{MtZUXor7$|229T_72!PLMM>@ADuC~Kv(?2*tfo&UsjQK?J}m4vg!uisnZ_* zo0*4g=2^GdlV>x`M8-Hhxu1LaZ_;}c*3@;25vGs-R_3Q$iL;e!X(LiTQdd^hm$3by zKMe5SMm@`~9&96=RSm?=+#4_9x6{juUb-4Y{sT#GFzLxV@F7NduVS3PK_BWLt`Ecg zmo6Li;pDlr-+Fxn?jw;o3P$^H(Z~32*T?$r&@=GMFr5A*&E0$(aVI^*Lp9D{o^9Um z%<`Nf4H<`*=e@IxH7B6MM3@AVktb`_DHuyk!9Eqdd-|vO^WA>pPRDHq$n$9?+Qa?C!AHxk%a!YcpW?6KOVR+G0i=&}~Pdx#(U?V+5+ zPx?_)$8h8*+Oh^Z$a8ZYZt{#kuk58w$z4pBYn{o{I3#U z%39vP$a{xt=+lrf-*wCza1(C9ZMZ|&Fzq1eJm$S$kh<$1r0yX@WO~!NPnZV~fy{@* zc?6H)2|R^o@El&iOLzsZ;SIcnckmuQz(@E5pWzF9g>Ud3e!x%Q<7r9*J%G7=z#+=| z5M_PHQ`Tl1v<5J@4=~rhZ2^p?AqqsrEku*DJghqcB4`H@#El@X%rlwm;~&f~rpo-z zMR=L#`eMp>&`p|t;2*&6SO>_jD;**3k;rsqPq@tgWz503mMD|(k32(f=`~NQgoJT+QmmoWK!0&0C|A+2o7?FSBZ@P<{R|fA3 zkrg-Kq9?v7^9Oy3?531EERo_4`_(i2|RCdE(6 zJxqJ_Kl~p@rk~W%=Sk#sGUNJb)uTG~72b!7tH>16|g7_$fQ)Cywlk@NEC zA>qnnR)C7gE3BDo+Vb7gO1OD`qeH7qf1Sbko^qC*zVFfNgI)!YiB2#(fviHi+ zN7eylKevqYSbquVOSry->+4yIWnM+N1X4D9AEUP>Yt3Ku)a)X+0<%@}Cu`p_F8D?r zeZ%dWQAe@(wbaxqYB5$XZ8V%zk`6o9~A+M`Ik0ELoQw zfcrog1cPA+425A($j%xM<_H)GqXKk`O(ivc16}HVG--~3u@It?Fh(-(zj4Tx_1E#3 z6JR1tg2{xNf{dv!4gN&m>F6{gz+#bp!|XfEwqyS0?kM9t>`dx%7V-DEES4sAi)9C< z%q8SrmwmLe1EQ-r0o_>tl<$+u*pKha1O%yh=sX`5knTc|?^!S6dNHzy%Z!WlAkod~ zgWb+*v;2Oj&Eg+s8UR LMG7I{AOHRzKF8fH literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/pillager.lua b/mods/ENTITIES/mobs_mc/pillager.lua new file mode 100644 index 000000000..a465c92b7 --- /dev/null +++ b/mods/ENTITIES/mobs_mc/pillager.lua @@ -0,0 +1,159 @@ +local S = minetest.get_translator("mobs_mc") + +local function reload(self) + if not self or not self.object then return end + minetest.sound_play("mcl_bows_crossbow_drawback_1", {object = self.object, max_hear_distance=16}, true) + local props = self.object:get_properties() + if not props then return end + props.textures[2] = "mcl_bows_crossbow_3.png^[resize:16x16" + self.object:set_properties(props) +end + +local function reset_animation(self, animation) + if not self or not self.object or self.current_animation ~= animation then return end + self.current_animation = "stand_reload" -- Mobs Redo won't set the animation unless we do this + mobs.set_mob_animation(self, animation) +end + +pillager = { + description = S("Pillager"), + type = "monster", + spawn_class = "hostile", + hostile = true, + rotate = 270, + hp_min = 24, + hp_max = 24, + xp_min = 6, + xp_max = 6, + breath_max = -1, + eye_height = 1.5, + projectile_cooldown = 3, -- Useless + shoot_interval = 3, -- Useless + shoot_offset = 1.5, + dogshoot_switch = 1, + dogshoot_count_max = 1.8, + projectile_cooldown_min = 3, + projectile_cooldown_max = 2.5, + armor = {fleshy = 100}, + collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3}, + pathfinding = 1, + group_attack = true, + visual = "mesh", + mesh = "mobs_mc_pillager.b3d", + + --head code + has_head = false, + head_bone = "head", + + swap_y_with_x = true, + reverse_head_yaw = true, + + head_bone_pos_y = 2.4, + head_bone_pos_z = 0, + + head_height_offset = 1.1, + head_direction_offset = 0, + head_pitch_modifier = 0, + --end head code + + visual_size = {x=2.75, y=2.75}, + makes_footstep_sound = true, + walk_velocity = 1.2, + run_velocity = 4, + damage = 2, + reach = 8, + view_range = 16, + fear_height = 4, + attack_type = "projectile", + arrow = "mcl_bows:arrow_entity", + sounds = { + random = "mobs_mc_pillager_grunt2", + war_cry = "mobs_mc_pillager_grunt1", + death = "mobs_mc_pillager_ow2", + damage = "mobs_mc_pillager_ow1", + distance = 16, + }, + textures = { + { + "mobs_mc_pillager.png", -- Skin + "mcl_bows_crossbow_0.png^[resize:16x16", -- Wielded item + } + }, + drops = { + { + name = "mcl_bows:arrow", + chance = 1, + min = 0, + max = 2, + looting = "common", + }, + { + name = "mcl_bows:crossbow", + chance = 100 / 8.5, + min = 1, + max = 1, + looting = "rare", + }, + }, + animation = { + unloaded_walk_start = 1, + unloaded_walk_end = 40, + unloaded_stand_start = 41, + unloaded_stand_end = 60, + + reload_stand_speed = 20, + reload_stand_start = 61, + reload_stand_end = 100, + + stand_speed = 6, + stand_start = 101, + stand_end = 109, + + walk_speed = 25, + walk_start = 111, + walk_end = 150, + run_speed = 40, + run_start = 111, + run_end = 150, + + reload_run_speed = 20, + reload_run_start = 151, + reload_run_end = 190, + + die_speed = 15, + die_start = 191, + die_end = 192, + die_loop = false, + + stand_unloaded_start = 40, + stand_unloaded_end = 59, + }, + shoot_arrow = function(self, pos, dir) + minetest.sound_play("mcl_bows_crossbow_shoot", {object = self.object, max_hear_distance=16}, true) + local props = self.object:get_properties() + props.textures[2] = "mcl_bows_crossbow_0.png^[resize:16x16" + self.object:set_properties(props) + local old_anim = self.current_animation + if old_anim == "run" then + mobs.set_mob_animation(self, "reload_run") + end + if old_anim == "stand" then + mobs.set_mob_animation(self, "reload_stand") + end + self.current_animation = old_anim -- Mobs Redo will imediately reset the animation otherwise + minetest.after(1, reload, self) + minetest.after(2, reset_animation, self, old_anim) + mobs.shoot_projectile_handling( + "mcl_bows:arrow", pos, dir, self.object:get_yaw(), + self.object, 30, math.random(3,4)) + + -- While we are at it, change the sounds since there is no way to do this in Mobs Redo + if self.sounds and self.sounds.random then + self.sounds = table.copy(self.sounds) + self.sounds.random = "mobs_mc_pillager_grunt" .. math.random(2) + end + end, +} + +mobs:register_mob("mobs_mc:pillager", pillager) +mobs:register_egg("mobs_mc:pillager", S("Pillager"), "mobs_mc_spawn_icon_pillager.png", 0) diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_pillager_grunt1.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_pillager_grunt1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..38ef59445662cbff89b33e899ba661d898093ec5 GIT binary patch literal 10280 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 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_pillager_ow1.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_pillager_ow1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..37e7620ef6e0d77ae9dc00d2437884298e388c2c GIT binary patch literal 7995 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 VN-pz7mF+0|ub%7j*_CRHsV$C?umhh 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 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_pillager.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_pillager.png new file mode 100644 index 0000000000000000000000000000000000000000..67dbfe418d6716aca243ce0faa6ef2c3d5a89fc6 GIT binary patch literal 477 zcmV<30V4j1P)d{~*E zt1N7M7#L#!m`ELhAg}=U>(@_A&&=)}D)1zHHSjzStu?(~k287SPe8`;&iLil-P@!Qa3B;#2)|NbrR{*MIU)Rif0y;dw%oR${R0hpedwawOgDq$z*jC@7pD{Q@nlM2<3 zzq0O>)?gG_!VZzI&|2qwUv-61cM1a4&0$6cxUlg%J0 Date: Tue, 7 Jun 2022 07:48:42 -0500 Subject: [PATCH 497/521] Pillagers: spawn with loaded crossbow --- mods/ENTITIES/mobs_mc/pillager.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/pillager.lua b/mods/ENTITIES/mobs_mc/pillager.lua index a465c92b7..ca416d30a 100644 --- a/mods/ENTITIES/mobs_mc/pillager.lua +++ b/mods/ENTITIES/mobs_mc/pillager.lua @@ -76,7 +76,7 @@ pillager = { textures = { { "mobs_mc_pillager.png", -- Skin - "mcl_bows_crossbow_0.png^[resize:16x16", -- Wielded item + "mcl_bows_crossbow_3.png^[resize:16x16", -- Wielded item } }, drops = { From c5655a40cdd9c44ef847a8047cd3e793c90bd1ce Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 7 Jun 2022 16:34:31 +0000 Subject: [PATCH 498/521] Update translation template-TODO update translations --- mods/ITEMS/mcl_itemframes/locale/template.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_itemframes/locale/template.txt b/mods/ITEMS/mcl_itemframes/locale/template.txt index bacbfaa69..179738682 100644 --- a/mods/ITEMS/mcl_itemframes/locale/template.txt +++ b/mods/ITEMS/mcl_itemframes/locale/template.txt @@ -3,3 +3,9 @@ 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= +Use it to craft the Glow Item Frame.= +Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.= +Glow Item Frame= +Can hold an item and glows= +Glow 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.= \ No newline at end of file From 6e9448c0b58d710e55f269cbb37aa77f373841d0 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 7 Jun 2022 16:35:22 +0000 Subject: [PATCH 499/521] Update translation template --- mods/ENTITIES/extra_mobs/locale/template.txt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/locale/template.txt b/mods/ENTITIES/extra_mobs/locale/template.txt index 1eaf2a4ed..25b625c52 100644 --- a/mods/ENTITIES/extra_mobs/locale/template.txt +++ b/mods/ENTITIES/extra_mobs/locale/template.txt @@ -8,10 +8,4 @@ Cod= Salmon= dolphin= Glow Squid= -Glow Ink Sac= -Use it to craft the Glow Item Frame.= -Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.= -Glow Item Frame= -Can hold an item and glows= -Glow 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.= \ No newline at end of file +Glow Ink Sac= \ No newline at end of file From b79017d86e1ec05a75648ffdcc0a05a53c02e763 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 7 Jun 2022 16:38:02 +0000 Subject: [PATCH 500/521] Update translation --- mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr index 180c5555f..e519db90b 100644 --- a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.fr.tr @@ -3,3 +3,9 @@ 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 +Use it to craft the Glow Item Frame.=Utilisez le pour fabriquer le Cadre à Objet Lumineux +Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.=Utiliser le Sac d'Encre Lumineuse et le Cadre à Objet normal pour fabriquer le Cadre à Objet Lumineux. +Glow Item Frame=Cadre à Objet Lumineux +Can hold an item and glows=Peut exposer un objet et éclairer +Glow Item frames are decorative blocks in which items can be placed.=les Cadres à Objet Lumineux sont des blocs décoratifs pouvant contenir des objets. +Just place any item on the item frame. Use the item frame again to retrieve the item.=Placer n'importe quel objet sur le cadre. Récupérer l'objet en faisant un clic droit sur le cadre. \ No newline at end of file From 7cab3b67e1f8429c199b650cb513bb70b805934d Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 7 Jun 2022 16:38:36 +0000 Subject: [PATCH 501/521] Update translation --- mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr b/mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr index 87caf9592..6c4f60309 100644 --- a/mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr +++ b/mods/ENTITIES/extra_mobs/locale/extra_mobs.fr.tr @@ -8,10 +8,4 @@ Cod=Poisson Salmon=Saumon dolphin=Dauphin Glow Squid=Pieuvre Lumineuse -Glow Ink Sac=Sac d'Encre Lumineuse -Use it to craft the Glow Item Frame.=Utilisez le pour fabriquer le Cadre à Objet Lumineux -Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.=Utiliser le Sac d'Encre Lumineuse et le Cadre à Objet normal pour fabriquer le Cadre à Objet Lumineux. -Glow Item Frame=Cadre à Objet Lumineux -Can hold an item and glows=Peut exposer un objet et éclairer -Glow Item frames are decorative blocks in which items can be placed.=les Cadres à Objet Lumineux sont des blocs décoratifs pouvant contenir des objets. -Just place any item on the item frame. Use the item frame again to retrieve the item.=Placer n'importe quel objet sur le cadre. Récupérer l'objet en faisant un clic droit sur le cadre. \ No newline at end of file +Glow Ink Sac=Sac d'Encre Lumineuse \ No newline at end of file From f968d76caa0103a6cdab1ac740e27a2a92bf2d98 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 7 Jun 2022 16:40:43 +0000 Subject: [PATCH 502/521] Update translation --- mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr index 81902e716..e82bf24aa 100644 --- a/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr +++ b/mods/ITEMS/mcl_itemframes/locale/mcl_itemframes.ru.tr @@ -3,3 +3,9 @@ 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=Может хранить предмет +Use it to craft the Glow Item Frame.=Используется для крафта светящейся рамки. +Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.=Используйте светящийся чернильный мешок и обычную рамку для крафта светящейся рамки. +Glow Item Frame=Светящаяся рамка +Can hold an item and glows=Светится и может хранить предмет +Glow 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.=Просто используйте любой предмет на рамке. Используйте рамку снова, чтобы забрать предмет. \ No newline at end of file From 7808c576a5584723a8f1e2aa9e18567bcb0847d9 Mon Sep 17 00:00:00 2001 From: 3raven Date: Tue, 7 Jun 2022 16:41:44 +0000 Subject: [PATCH 503/521] Update --- mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr b/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr index 6ebba543e..c4c81f1bb 100644 --- a/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr +++ b/mods/ENTITIES/extra_mobs/locale/extra_mobs.ru.tr @@ -8,10 +8,4 @@ Cod=Треска Salmon=Лосось dolphin=Дельфин Glow Squid=Светящийся спрут -Glow Ink Sac=Светящийся чернильный мешок -Use it to craft the Glow Item Frame.=Используется для крафта светящейся рамки. -Use the Glow Ink Sac and the normal Item Frame to craft the Glow Item Frame.=Используйте светящийся чернильный мешок и обычную рамку для крафта светящейся рамки. -Glow Item Frame=Светящаяся рамка -Can hold an item and glows=Светится и может хранить предмет -Glow 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.=Просто используйте любой предмет на рамке. Используйте рамку снова, чтобы забрать предмет. \ No newline at end of file +Glow Ink Sac=Светящийся чернильный мешок \ No newline at end of file From 6ff27c02475aa04038ab6857ef523044d5212c07 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Tue, 7 Jun 2022 16:01:12 -0600 Subject: [PATCH 504/521] Fixed formatting in advancement definitions and in the award unlock code in the mcl_totem mod --- mods/HUD/mcl_achievements/init.lua | 48 +++++++++++++++--------------- mods/ITEMS/mcl_totems/init.lua | 2 +- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 2c8c62139..7b3b2fc1c 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -201,56 +201,56 @@ awards.register_achievement("mcl:enterEndPortal", { -- Triggered in mcl_totems awards.register_achievement("mcl:postMortal", { - title = S("Postmortal"), - description = S("Use a Totem of Undying to cheat death."), - icon = "mcl_totems_totem.png", + title = S("Postmortal"), + description = S("Use a Totem of Undying to cheat death."), + icon = "mcl_totems_totem.png", }) -- Triggered in mcl_beds awards.register_achievement("mcl:sweetDreams", { - title = S("Sweet Dreams"), - description = S("Sleep in a bed to change your respawn point."), - icon = "mcl_beds_bed_red.png", + title = S("Sweet Dreams"), + description = S("Sleep in a bed to change your respawn point."), + icon = "mcl_beds_bed_red.png", }) -- Triggered in mcl_smithing_table awards.register_achievement("mcl:seriousDedication", { - title = S("Serious Dedication"), - description = S("Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices."), - icon = "farming_tool_netheritehoe.png", + title = S("Serious Dedication"), + description = S("Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices."), + icon = "farming_tool_netheritehoe.png", }) -- Triggered in mobs_mc awards.register_achievement("mcl:whatAdeal", { - title = S("What A Deal!"), - description = S("Successfully trade with a Villager."), - icon = "mcl_core_emerald.png", + title = S("What A Deal!"), + description = S("Successfully trade with a Villager."), + icon = "mcl_core_emerald.png", }) -- Triggered in mcl_fishing awards.register_achievement("mcl:fishyBusiness", { - title = S("Fishy Business"), - description = S("Catch a fish. \nHint: Catch a fish, salmon, clownfish, or pufferfish."), - icon = "mcl_fishing_fishing_rod.png", + title = S("Fishy Business"), + description = S("Catch a fish. \nHint: Catch a fish, salmon, clownfish, or pufferfish."), + icon = "mcl_fishing_fishing_rod.png", }) -- Armor Advancements --[[awards.register_achievement("mcl:suitUp", { - title = S("Suit Up"), - description = S("Protect yourself with a piece of iron armor."), - icon = "mcl_armor_inv_chestplate_iron.png", + title = S("Suit Up"), + description = S("Protect yourself with a piece of iron armor."), + icon = "mcl_armor_inv_chestplate_iron.png", })]]-- --[[awards.register_achievement("mcl:coverMeDiamonds", { - title = S("Cover Me with Diamonds"), - description = S("Diamond armor saves lives."), - icon = "mcl_armor_inv_chestplate_diamond.png", + title = S("Cover Me with Diamonds"), + description = S("Diamond armor saves lives."), + icon = "mcl_armor_inv_chestplate_diamond.png", })]]-- --[[awards.register_achievement("mcl:coverMeDebris", { - title = S("Cover Me in Debris"), - description = S("Get a full suit of Netherite armor."), - icon = "mcl_armor_inv_chestplate_netherite.png", + title = S("Cover Me in Debris"), + description = S("Get a full suit of Netherite armor."), + icon = "mcl_armor_inv_chestplate_netherite.png", })]]-- -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 6b6fce7f1..5cf5f27a3 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -43,7 +43,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) obj:set_wielded_item(wield) end end - awards.unlock(obj:get_player_name(), "mcl:postMortal") + awards.unlock(obj:get_player_name(), "mcl:postMortal") -- Effects minetest.sound_play({name = "mcl_totems_totem", gain = 1}, {pos=ppos, max_hear_distance = 16}, true) From 6cca004dbe7e55f78f77f759dce32bc2eea99c00 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Wed, 8 Jun 2022 10:54:36 -0600 Subject: [PATCH 505/521] Fixed whitespace in Sweet Dreams activation point --- 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 1909c7cb2..820c3c4d0 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -76,7 +76,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- save respawn position when entering bed if spawn_mod and mcl_spawn.set_spawn_pos(player, bed_pos, nil) then minetest.chat_send_player(name, S("New respawn position set!")) - awards.unlock(player:get_player_name(), "mcl:sweetDreams") + awards.unlock(player:get_player_name(), "mcl:sweetDreams") end -- No sleeping if too far away From ebcadc415d2b9fabf2df16ad5c62acac412a1791 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Wed, 8 Jun 2022 13:07:01 -0600 Subject: [PATCH 506/521] Buckets of Fish --- mods/ENTITIES/extra_mobs/cod.lua | 9 ++++++- mods/ENTITIES/extra_mobs/salmon.lua | 7 ++++++ .../{cod_bucket.png => cod_bucket1.png} | Bin mods/HUD/mcl_achievements/init.lua | 7 ++++++ mods/ITEMS/mcl_fishing/init.lua | 22 ++++++++++++++++++ .../ITEMS/mcl_fishing/textures/cod_bucket.png | Bin 0 -> 14810 bytes .../textures/pufferfish_bucket.png | Bin 0 -> 14766 bytes .../mcl_fishing/textures/salmon_bucket.png | Bin 0 -> 14792 bytes .../textures/tropical_fish_bucket.png | Bin 0 -> 14788 bytes 9 files changed, 44 insertions(+), 1 deletion(-) rename mods/ENTITIES/extra_mobs/textures/{cod_bucket.png => cod_bucket1.png} (100%) create mode 100644 mods/ITEMS/mcl_fishing/textures/cod_bucket.png create mode 100644 mods/ITEMS/mcl_fishing/textures/pufferfish_bucket.png create mode 100644 mods/ITEMS/mcl_fishing/textures/salmon_bucket.png create mode 100644 mods/ITEMS/mcl_fishing/textures/tropical_fish_bucket.png diff --git a/mods/ENTITIES/extra_mobs/cod.lua b/mods/ENTITIES/extra_mobs/cod.lua index fd0a40621..b9c5bf5e3 100644 --- a/mods/ENTITIES/extra_mobs/cod.lua +++ b/mods/ENTITIES/extra_mobs/cod.lua @@ -95,7 +95,14 @@ local cod = { self.object:set_rotation({x=0,y=(atan(vec.z / vec.x) + 3 * pi / 2) - self.rotate,z=0}) end end - end + end, + on_rightclick = function(self, clicker) + if clicker:get_wielded_item():get_name() == "mcl_buckets:bucket_water" then + self.object:remove() + clicker:set_wielded_item("mcl_fishing:bucket_cod") + awards.unlock(clicker:get_player_name(), "mcl:tacticalFishing") + end + end } mobs:register_mob("extra_mobs:cod", cod) diff --git a/mods/ENTITIES/extra_mobs/salmon.lua b/mods/ENTITIES/extra_mobs/salmon.lua index ba3503b60..fba81e4db 100644 --- a/mods/ENTITIES/extra_mobs/salmon.lua +++ b/mods/ENTITIES/extra_mobs/salmon.lua @@ -55,6 +55,13 @@ local salmon = { view_range = 16, runaway = true, fear_height = 4, + on_rightclick = function(self, clicker) + if clicker:get_wielded_item():get_name() == "mcl_buckets:bucket_water" then + self.object:remove() + clicker:set_wielded_item("mcl_fishing:bucket_salmon") + awards.unlock(clicker:get_player_name(), "mcl:tacticalFishing") + end + end } mobs:register_mob("extra_mobs:salmon", salmon) diff --git a/mods/ENTITIES/extra_mobs/textures/cod_bucket.png b/mods/ENTITIES/extra_mobs/textures/cod_bucket1.png similarity index 100% rename from mods/ENTITIES/extra_mobs/textures/cod_bucket.png rename to mods/ENTITIES/extra_mobs/textures/cod_bucket1.png diff --git a/mods/HUD/mcl_achievements/init.lua b/mods/HUD/mcl_achievements/init.lua index 7b3b2fc1c..761888d16 100644 --- a/mods/HUD/mcl_achievements/init.lua +++ b/mods/HUD/mcl_achievements/init.lua @@ -253,6 +253,13 @@ awards.register_achievement("mcl:fishyBusiness", { icon = "mcl_armor_inv_chestplate_netherite.png", })]]-- +-- Triggered in extra_mobs +awards.register_achievement("mcl:tacticalFishing", { + title = S("Tactical Fishing"), + description = S("Catch a fish... without a fishing rod!"), + icon = "pufferfish_bucket.png", +}) + -- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.) if non_pc_achievements then diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 2c2ba6982..39919dbd3 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -512,3 +512,25 @@ minetest.register_on_item_eat(function (hp_change, replace_with_item, itemstack, end end ) + +-- Fish Buckets +fish_names = {"cod", "salmon"} + +for _, fish in ipairs(fish_names) do + mcl_buckets.register_liquid({ + bucketname = "mcl_fishing:bucket_" .. fish, + source_place = function(pos) + minetest.add_entity(pos, "extra_mobs:" .. fish) + return "mcl_core:water_source" + end, + source_take = {"extra_mobs:" .. fish}, + inventory_image = fish .. "_bucket.png", + name = S("Bucket of " .. fish), + longdesc = S("This bucket is filled with water and " .. fish .. "."), + usagehelp = S("Place it to empty the bucket and place a " .. fish .. ". Obtain by right clicking on a " .. fish .. " fish with a bucket of water."), + tt_help = S("Places a water source and " .. fish .. "."), + extra_check = function(pos, placer) + return true, true + end, + }) +end diff --git a/mods/ITEMS/mcl_fishing/textures/cod_bucket.png b/mods/ITEMS/mcl_fishing/textures/cod_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..582207cb0d10d0c223942037ab66da32163b06b7 GIT binary patch literal 14810 zcmeI3e{2(F7{_mbFou|ssWS%TQdGp)-d($H?RhPZb)$QS;U0|1BxLeIufGz;}5}M0>c0y5Pu~^G-?!rQ9=S@7BmX@UfZ>AyN(wOf4-Og zc>2EI=Xvfv&-1>$e{NIT;)TQ_&NK}>mvM`nhdTqC~8`b z^{$}a+;Ja8c^*{49cD*p5ie;8hbU_i;7BKuP)$+7{B%;3)&P@^fKEmA*)AS9XrmR` zXItS8v7uxWh$+Ed9W3o#9F}_5NM6}C-(Mx9c^Du8Op#6};;O-?eYQ+o9@^G0W1}+? zbB)i|XeFdOLTz-DrUTmTsJBZT$I%U52j}*?UVm87X?Ds9CTBU+c~v)Qaf`6G8-iDW*JYUJ2KicDHeGMs~D$~nnW-Y40m$1|rU zOALsE1W-)_`f+9bk}=KHjF>h~%KY@WiD6Abp?vPL=bK2BO>LOX-4H-=M zJ212^T>{PB@KWZKyLwZJ7K&38$(kAW+(B9y$IY6_x@B4+TOk2nE8nC8(bV*?rp5i) zE^8Y_NH;ZQx{7{eg`&z@%9tlGr7nef7ovfHXaYa%M~~fV#)dHLM>og2ESqOpBuG|S z5+kI^O0=gqh9~S~dA5$PbE7d3WoZn!eq_-UZz>9^MdHX3AJz1PX!@0e*a?`V+9@!F zK}4DFD!xgJYdSnF;CBg3xnaaB(`kIGYM7!bf!2T@4mcD==A-TgZv=Qec2|_GvqxNY zF1uJ?=e5_@JLPDDC`a7hx(vin2z4J5I-p5i)@sRxmTxgM;yxzy5?z5ioft;-sUVx|V1z>FCyWX|e4teVEVGWrH5 z3lI3$2alX9I$i3z^2V;{bg65>bD64`erGOQ$uQz&?Y!A-VJW;x0RDQn+vOIR(&18% zHYE+>9RUTdU&HE3u0H2eI#Jef<#>+BM9wi=D&+4xQ_1Woyjg(vDNO!GrMSrXg>ajV z!WG@-z-Ty<1f_ws2`(%mR6uZ{G_W?og++u42riTc)+V^Hh)@B+h0?&<1Q!+&Dj>K} z8d#g)!XiQi1Q$vJYZF{pM5ut^LTO-af(wfX6%bq~4XjOYVG*GMf(xaAwFxdPB2++d zp){~I!G%SH3J5Ng2G%CHu!v9r!G+Sm+5{IC5h@_KP#Rd9;KCw81q2sL18WmpSVX9R z;6iC&ZGsDn2o(@qC=IMlaA6Ul0)h*rfwc)PEFx4uaG^A?Ho=8OgbD~Qlm^x&xUh&& z0l|gRz}h#&RaJQO52)~YzZ871@9in=r{F_@v=nR)QB?0k6xFwZqW-=PzkjEwE|#Ls zuc9b^8%5P>Tb@7CLQxfLYoIZl{{Ee>5B6_h@1An$N~ec^^1>PO*~_)^j3M*4GwHVE zfMd9El08_P+NW;4Hnmx;+gNt+5f7o|+p=al2`1)$k#2GVczPT%QYWUpL zJI`F6B&dhZPVQeeS^IS3@>%coEuZz-xqCOyhLbbrA3ipCcxd%Ud!M?re|Tv1FZO+D zzq;*?Z3E2le@@&3UxHfw3jEo9=wxi*$fKV}wvKGwK5(^iWY>-fBfBotj=cE8!@HJ! zJ9ll%Tk{5XKYqIU{h@2M=bJVOKYmy7bnW1tilfJC=q0I(69@Y_Hoo)K!M>iE-Q0?+ uOIGdg=bkuttm^c@AHR04yMFXbYQY2VZsb1x>kI4Y%hu+_fxQb>t^W_;Lo%KK literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_fishing/textures/pufferfish_bucket.png b/mods/ITEMS/mcl_fishing/textures/pufferfish_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..2c88bac3531fadc761233627591552f5e9280b88 GIT binary patch literal 14766 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_fishing/textures/tropical_fish_bucket.png b/mods/ITEMS/mcl_fishing/textures/tropical_fish_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..edf7dd2447e9a8c7ef57b45e5921ba24f519219f GIT binary patch literal 14788 zcmeI3e{2(F7{?DZ1GW%}kbvm)C>Vv%-d#(#_R@BYcDMyQno(gW3BBFDTMyb^?Oka% zkiZr-U}Ay^Y6Q(d0?|ZNh?+9XCEnF5~ zEw(%tSqF%|9LG@!$^u8m&s&o8HY_v^>BjQ?dEtpXSZ9i!m9Ts3@K|(=nL~f z#^VH#E~nI_p=t@%j4O3%X~S!=n2Cy4;lAR@VxojzV23GkSt-d0HlC~Iq{u~|WI7eg zElrU*6hm>8Fm&uERP{?nHAB;*+9WB9(~~B~H39c$)-=FI$_R)1}LeVn%Vh>m8QmS_;8VX1T^5K4TS*;bkG8!^2e@241;N6WbEHAthwg7VzN#o2n|JgXbHShDKy{^A6eC zEiG%Xc6ITR)zPK!c2}2MaW%Md5Q9PJJ|T2KlhfvIDTG#TGc<6Y5PEe=#V4H<0~&Mn zx0|9$mESAe zD?LJL7R5RPD&D`k*_A>=!KZSfs^j{}9Kl4vF<&b1b)KtaeiT0};O7*s_@Gi=ljjwXRLh&IJVL<9vC7on3(_Fk6c-T@6i{4{2GORth=`zo;(|1YHpN9m1O*fq zq(QVPE+Qf*ptv9nqD^rT5kUdP1!)j%ii?N{3Mei}gJ@G+L_|q$sK>@`D zX%Ow3;;JpZ`iBzueZLHTvG1?XmcN2u3S{Nhjv&MIJ0=~90CGlNI!4-NBsHtv}7Ky7G-ZR>ODU}V?3U(RSf z^;64RzGb5e4(}W}*5kUqR-CzN+x{1)ouAsg;p)IQ%Z1SeU!B<7e(&jL?+Z) zvGw_1`d+|4tZleu@uA`9zM-0-!`}~x_4ll8JC(li!{~Q4Z`%jz_VmAbq`q(HKzvge zjn-^f{Ovon{66d8lH>nO+57q3M}NMseUanLm1|>DFCFK1Hk~|HCp^+rcjd_+?_w@| W_(uN@7e8XYXW7=$9yq!p(*GaK^Ce0E literal 0 HcmV?d00001 From f17f51cce3665f85d33621f102655e6ec5ea79a5 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Wed, 8 Jun 2022 16:37:38 -0600 Subject: [PATCH 507/521] Fixed formatting whitespace issues on cod.lua and salmon.lua --- mods/ENTITIES/extra_mobs/cod.lua | 94 ++++++++++++++--------------- mods/ENTITIES/extra_mobs/salmon.lua | 66 ++++++++++---------- 2 files changed, 80 insertions(+), 80 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/cod.lua b/mods/ENTITIES/extra_mobs/cod.lua index b9c5bf5e3..b9f52fbaa 100644 --- a/mods/ENTITIES/extra_mobs/cod.lua +++ b/mods/ENTITIES/extra_mobs/cod.lua @@ -30,26 +30,26 @@ local S = minetest.get_translator("extra_mobs") --################### local cod = { - type = "animal", - spawn_class = "water", - can_despawn = true, - passive = true, - hp_min = 3, - hp_max = 3, - xp_min = 1, - xp_max = 3, - armor = 100, + type = "animal", + spawn_class = "water", + can_despawn = true, + passive = true, + hp_min = 3, + hp_max = 3, + xp_min = 1, + xp_max = 3, + armor = 100, rotate = 270, - tilt_swim = true, - collisionbox = {-0.3, 0.0, -0.3, 0.3, 0.79, 0.3}, - visual = "mesh", - mesh = "extra_mobs_cod.b3d", - textures = { - {"extra_mobs_cod.png"} - }, - sounds = { - }, - animation = { + tilt_swim = true, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 0.79, 0.3}, + visual = "mesh", + mesh = "extra_mobs_cod.b3d", + textures = { + {"extra_mobs_cod.png"} + }, + sounds = { + }, + animation = { stand_start = 1, stand_end = 20, walk_start = 1, @@ -57,44 +57,44 @@ local cod = { run_start = 1, run_end = 20, }, - drops = { + drops = { {name = "mcl_fishing:fish_raw", chance = 1, min = 1, max = 1,}, - {name = "mcl_dye:white", + {name = "mcl_dye:white", chance = 20, min = 1, max = 1,}, }, - visual_size = {x=3, y=3}, - makes_footstep_sound = false, - swim = true, - breathes_in_water = true, - jump = false, - view_range = 16, - runaway = true, - fear_height = 4, - do_custom = function(self) - self.object:set_bone_position("body", vector.new(0,1,0), vector.new(degrees(dir_to_pitch(self.object:get_velocity())) * -1 + 90,0,0)) - if minetest.get_item_group(self.standing_in, "water") ~= 0 then + visual_size = {x=3, y=3}, + makes_footstep_sound = false, + swim = true, + breathes_in_water = true, + jump = false, + view_range = 16, + runaway = true, + fear_height = 4, + do_custom = function(self) + self.object:set_bone_position("body", vector.new(0,1,0), vector.new(degrees(dir_to_pitch(self.object:get_velocity())) * -1 + 90,0,0)) + if minetest.get_item_group(self.standing_in, "water") ~= 0 then if self.object:get_velocity().y < 2.5 then - self.object:add_velocity({ x = 0 , y = math.random(-.002, .002) , z = 0 }) + self.object:add_velocity({ x = 0 , y = math.random(-.002, .002) , z = 0 }) end - end - for _,object in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 10)) do - local lp = object:get_pos() - local s = self.object:get_pos() - local vec = { - x = lp.x - s.x, - y = lp.y - s.y, - z = lp.z - s.z - } - if object and not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "extra_mobs:cod" then - self.state = "runaway" - self.object:set_rotation({x=0,y=(atan(vec.z / vec.x) + 3 * pi / 2) - self.rotate,z=0}) - end - end + end + for _,object in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 10)) do + local lp = object:get_pos() + local s = self.object:get_pos() + local vec = { + x = lp.x - s.x, + y = lp.y - s.y, + z = lp.z - s.z + } + if object and not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "extra_mobs:cod" then + self.state = "runaway" + self.object:set_rotation({x=0,y=(atan(vec.z / vec.x) + 3 * pi / 2) - self.rotate,z=0}) + end + end end, on_rightclick = function(self, clicker) if clicker:get_wielded_item():get_name() == "mcl_buckets:bucket_water" then diff --git a/mods/ENTITIES/extra_mobs/salmon.lua b/mods/ENTITIES/extra_mobs/salmon.lua index fba81e4db..7ef9a8d36 100644 --- a/mods/ENTITIES/extra_mobs/salmon.lua +++ b/mods/ENTITIES/extra_mobs/salmon.lua @@ -10,26 +10,26 @@ local S = minetest.get_translator("extra_mobs") --################### local salmon = { - type = "animal", - spawn_class = "water", - can_despawn = true, - passive = true, - hp_min = 3, - hp_max = 3, - xp_min = 1, - xp_max = 3, - armor = 100, - rotate = 270, - tilt_swim = true, - collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.79, 0.4}, - visual = "mesh", - mesh = "extra_mobs_salmon.b3d", - textures = { - {"extra_mobs_salmon.png"} - }, - sounds = { - }, - animation = { + type = "animal", + spawn_class = "water", + can_despawn = true, + passive = true, + hp_min = 3, + hp_max = 3, + xp_min = 1, + xp_max = 3, + armor = 100, + rotate = 270, + tilt_swim = true, + collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.79, 0.4}, + visual = "mesh", + mesh = "extra_mobs_salmon.b3d", + textures = { + {"extra_mobs_salmon.png"} + }, + sounds = { + }, + animation = { stand_start = 1, stand_end = 20, walk_start = 1, @@ -37,29 +37,29 @@ local salmon = { run_start = 1, run_end = 20, }, - drops = { + drops = { {name = "mcl_fishing:salmon_raw", chance = 1, min = 1, max = 1,}, - {name = "mcl_dye:white", + {name = "mcl_dye:white", chance = 20, min = 1, max = 1,}, }, - visual_size = {x=3, y=3}, - makes_footstep_sound = false, - swim = true, - breathes_in_water = true, - jump = false, - view_range = 16, - runaway = true, - fear_height = 4, + visual_size = {x=3, y=3}, + makes_footstep_sound = false, + swim = true, + breathes_in_water = true, + jump = false, + view_range = 16, + runaway = true, + fear_height = 4, on_rightclick = function(self, clicker) if clicker:get_wielded_item():get_name() == "mcl_buckets:bucket_water" then - self.object:remove() - clicker:set_wielded_item("mcl_fishing:bucket_salmon") - awards.unlock(clicker:get_player_name(), "mcl:tacticalFishing") + self.object:remove() + clicker:set_wielded_item("mcl_fishing:bucket_salmon") + awards.unlock(clicker:get_player_name(), "mcl:tacticalFishing") end end } From 43e73e2856ea1e10a7c1f8edf285f7e6678f813a Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Thu, 9 Jun 2022 09:47:24 -0600 Subject: [PATCH 508/521] Updated Translate Template and fixed the fish bucket definitions to work with the translation --- mods/ITEMS/mcl_fishing/init.lua | 8 ++++---- mods/ITEMS/mcl_fishing/locale/template.txt | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 39919dbd3..7a5c7d701 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -525,10 +525,10 @@ for _, fish in ipairs(fish_names) do end, source_take = {"extra_mobs:" .. fish}, inventory_image = fish .. "_bucket.png", - name = S("Bucket of " .. fish), - longdesc = S("This bucket is filled with water and " .. fish .. "."), - usagehelp = S("Place it to empty the bucket and place a " .. fish .. ". Obtain by right clicking on a " .. fish .. " fish with a bucket of water."), - tt_help = S("Places a water source and " .. fish .. "."), + name = S("Bucket of @1", S(fish)), + longdesc = S("This bucket is filled with water and @1.", S(fish)), + usagehelp = S("Place it to empty the bucket and place a @1. Obtain by right clicking on a @2 fish with a bucket of water.", S(fish), S(fish)), + tt_help = S("Places a water source and a @1 fish.", S(fish)), extra_check = function(pos, placer) return true, true end, diff --git a/mods/ITEMS/mcl_fishing/locale/template.txt b/mods/ITEMS/mcl_fishing/locale/template.txt index a1544666b..200f5e145 100644 --- a/mods/ITEMS/mcl_fishing/locale/template.txt +++ b/mods/ITEMS/mcl_fishing/locale/template.txt @@ -16,3 +16,9 @@ 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= +cod= +salmon= +Bucket of @1= +This bucket is filled with water and @1.= +Place it to empty the bucket and place a @1. Obtain by right clicking on a @2 fish with a bucket of water.= +Places a water source and a @1 fish.= From 977a77f871d35e105ede4af90beca0a73e2e0594 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Thu, 9 Jun 2022 13:04:36 -0600 Subject: [PATCH 509/521] Fixed some more white space formating in cod.lua --- mods/ENTITIES/extra_mobs/cod.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/extra_mobs/cod.lua b/mods/ENTITIES/extra_mobs/cod.lua index b9f52fbaa..9813d67e7 100644 --- a/mods/ENTITIES/extra_mobs/cod.lua +++ b/mods/ENTITIES/extra_mobs/cod.lua @@ -78,10 +78,10 @@ local cod = { do_custom = function(self) self.object:set_bone_position("body", vector.new(0,1,0), vector.new(degrees(dir_to_pitch(self.object:get_velocity())) * -1 + 90,0,0)) if minetest.get_item_group(self.standing_in, "water") ~= 0 then - if self.object:get_velocity().y < 2.5 then - self.object:add_velocity({ x = 0 , y = math.random(-.002, .002) , z = 0 }) - end - end + if self.object:get_velocity().y < 2.5 then + self.object:add_velocity({ x = 0 , y = math.random(-.002, .002) , z = 0 }) + end + end for _,object in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 10)) do local lp = object:get_pos() local s = self.object:get_pos() From de29e05a6f249e3827e02aea66f08b0f72aebf86 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Fri, 10 Jun 2022 13:18:02 -0600 Subject: [PATCH 510/521] Fixed Blast Furnaces and Smokers so they use groups to smelt, and put them into individual mods like in Mineclone2 --- GROUPS.md | 2 + mods/ITEMS/mcl_blast_furnace/README.md | 13 + .../init.lua} | 58 +- .../mcl_blast_furnace/locale/template.txt | 5 + mods/ITEMS/mcl_blast_furnace/mod.conf | 3 + .../textures/blast_furnace_front.png | Bin .../textures/blast_furnace_front_on.png | Bin .../textures/blast_furnace_front_on_e.png | Bin .../textures/blast_furnace_front_on_e_s.png | Bin .../textures/blast_furnace_side.png | Bin .../textures/blast_furnace_top.png | Bin mods/ITEMS/mcl_copper/items.lua | 2 +- mods/ITEMS/mcl_copper/nodes.lua | 2 +- mods/ITEMS/mcl_core/nodes_base.lua | 14 +- mods/ITEMS/mcl_deepslate/init.lua | 2 +- mods/ITEMS/mcl_fishing/init.lua | 4 +- mods/ITEMS/mcl_furnaces/furnace.lua | 558 ----------------- mods/ITEMS/mcl_furnaces/init.lua | 562 +++++++++++++++++- mods/ITEMS/mcl_mobitems/init.lua | 10 +- mods/ITEMS/mcl_raw_ores/init.lua | 2 +- mods/ITEMS/mcl_smoker/README.md | 13 + .../smoker.lua => mcl_smoker/init.lua} | 60 +- mods/ITEMS/mcl_smoker/locale/template.txt | 5 + mods/ITEMS/mcl_smoker/mod.conf | 3 + .../textures/smoker_bottom.png | Bin .../textures/smoker_front.png | Bin .../textures/smoker_front_on.png | Bin .../textures/smoker_front_on_e.png | Bin .../textures/smoker_front_on_e_s.png | Bin .../textures/smoker_side.png | Bin .../textures/smoker_top.png | Bin 31 files changed, 660 insertions(+), 658 deletions(-) create mode 100644 mods/ITEMS/mcl_blast_furnace/README.md rename mods/ITEMS/{mcl_furnaces/blast_furnace.lua => mcl_blast_furnace/init.lua} (89%) create mode 100644 mods/ITEMS/mcl_blast_furnace/locale/template.txt create mode 100644 mods/ITEMS/mcl_blast_furnace/mod.conf rename mods/ITEMS/{mcl_furnaces => mcl_blast_furnace}/textures/blast_furnace_front.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_blast_furnace}/textures/blast_furnace_front_on.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_blast_furnace}/textures/blast_furnace_front_on_e.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_blast_furnace}/textures/blast_furnace_front_on_e_s.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_blast_furnace}/textures/blast_furnace_side.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_blast_furnace}/textures/blast_furnace_top.png (100%) delete mode 100644 mods/ITEMS/mcl_furnaces/furnace.lua create mode 100644 mods/ITEMS/mcl_smoker/README.md rename mods/ITEMS/{mcl_furnaces/smoker.lua => mcl_smoker/init.lua} (89%) create mode 100644 mods/ITEMS/mcl_smoker/locale/template.txt create mode 100644 mods/ITEMS/mcl_smoker/mod.conf rename mods/ITEMS/{mcl_furnaces => mcl_smoker}/textures/smoker_bottom.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_smoker}/textures/smoker_front.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_smoker}/textures/smoker_front_on.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_smoker}/textures/smoker_front_on_e.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_smoker}/textures/smoker_front_on_e_s.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_smoker}/textures/smoker_side.png (100%) rename mods/ITEMS/{mcl_furnaces => mcl_smoker}/textures/smoker_top.png (100%) diff --git a/GROUPS.md b/GROUPS.md index c65b2eb46..a6d63d82d 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -201,6 +201,8 @@ These groups are used mostly for informational purposes * `building_block=1`: Block is a building block * `deco_block=1`: Block is a decorational block +* `blast_furnace_smeltable=1` : Item or node is smeltable by a blast furnace +* `smoker_cookable=1` : Food is cookable by a smoker. ## Fake item groups These groups put similar items together which should all be treated by the gameplay or the GUI as a single item. diff --git a/mods/ITEMS/mcl_blast_furnace/README.md b/mods/ITEMS/mcl_blast_furnace/README.md new file mode 100644 index 000000000..e96c21942 --- /dev/null +++ b/mods/ITEMS/mcl_blast_furnace/README.md @@ -0,0 +1,13 @@ +Blast Furnaces for MineClone 2. +Heavily based on Minetest Game (default/furnace.lua) and the MineClone 2 Furnaces. + +License of source code +---------------------- +LGPLv2.1 +Based on code from Minetest Game. +Modified by Wuzzy. +MCl 2 Furances modified by PrairieWind. + +License of media +---------------- +See the main MineClone 2 README.md file. diff --git a/mods/ITEMS/mcl_furnaces/blast_furnace.lua b/mods/ITEMS/mcl_blast_furnace/init.lua similarity index 89% rename from mods/ITEMS/mcl_furnaces/blast_furnace.lua rename to mods/ITEMS/mcl_blast_furnace/init.lua index 4e14d9305..a23a211d9 100644 --- a/mods/ITEMS/mcl_furnaces/blast_furnace.lua +++ b/mods/ITEMS/mcl_blast_furnace/init.lua @@ -198,7 +198,7 @@ local function swap_node(pos, name) end node.name = name minetest.swap_node(pos, node) - if name == "mcl_furnaces:blast_furnace_active" then + if name == "mcl_blast_furnace:blast_furnace_active" then spawn_flames(pos, node.param2) else mcl_particles.delete_node_particlespawners(pos) @@ -244,16 +244,7 @@ local function furnace_node_timer(pos, elapsed) -- Check if we have cookable content: cookable local aftercooked cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - cookable = false - cookableItems = {"mcl_raw_ores:raw_iron", "mcl_raw_ores:raw_gold", "mcl_copper:raw_copper", "mcl_nether:ancient_debris"} - cookable = false - --for _, item in ipairs(cookableItems) do - for _,item in ipairs(cookableItems) do - local stack = inv:get_stack("src",1) - if stack:get_name() == item then - cookable = true - end - end + cookable = minetest.get_item_group(inv:get_stack("src", 1):get_name(), "blast_furnace_smeltable") == 1 if cookable then -- Successful cooking requires space in dst slot and time if not inv:room_for_item("dst", cooked.item) then @@ -289,13 +280,13 @@ local function furnace_node_timer(pos, elapsed) elseif active then el = math.min(el, fuel_totaltime - fuel_time) -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + el + fuel_time = (fuel_time + el)*2 end -- If there is a cookable item then check if it is ready yet if cookable and active then - -- in the src_time variable, the *1.5 is the multiplication that makes the blast furnace work faster than a normal furnace. I (PrairieWind) have it at 1.5 times faster, but it can be OP and 2 times faster, or 1.2 times faster. All are good numbers. - src_time = (src_time + el)*1.5 + -- in the src_time variable, the *2 is the multiplication that makes the blast furnace work faster than a normal furnace. + src_time = (src_time + el)*2 -- Place result in dst list if done if src_time >= cooked.time then inv:add_item("dst", cooked.item) @@ -335,11 +326,11 @@ local function furnace_node_timer(pos, elapsed) fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) end formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "mcl_furnaces:blast_furnace_active") + swap_node(pos, "mcl_blast_furnace:blast_furnace_active") -- make sure timer restarts automatically result = true else - swap_node(pos, "mcl_furnaces:blast_furnace") + swap_node(pos, "mcl_blast_furnace:blast_furnace") -- stop timer on the inactive furnace minetest.get_node_timer(pos):stop() end @@ -366,17 +357,17 @@ if minetest.get_modpath("screwdriver") then after_rotate_active = function(pos) local node = minetest.get_node(pos) mcl_particles.delete_node_particlespawners(pos) - if node.name == "mcl_furnaces:blast_furnace" then + if node.name == "mcl_blast_furnace:blast_furnace" then return end spawn_flames(pos, node.param2) end end -minetest.register_node("mcl_furnaces:blast_furnace", { +minetest.register_node("mcl_blast_furnace:blast_furnace", { description = S("Blast Furnace"), - _tt_help = S("Uses fuel to smelt or cook items"), - _doc_items_longdesc = S("Blast Furnaces cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace."), + _tt_help = S("Smelts ores faster than furnace"), + _doc_items_longdesc = S("Blast Furnaces smelt several items, mainly ores and armor, using a furnace fuel, into something else."), _doc_items_usagehelp = S([[ Use the furnace to open the furnace menu. @@ -456,7 +447,7 @@ minetest.register_node("mcl_furnaces:blast_furnace", { on_rotate = on_rotate, }) -minetest.register_node("mcl_furnaces:blast_furnace_active", { +minetest.register_node("mcl_blast_furnace:blast_furnace_active", { description = S("Active Blast Furnace"), _doc_items_create_entry = false, tiles = { @@ -468,7 +459,7 @@ minetest.register_node("mcl_furnaces:blast_furnace_active", { paramtype2 = "facedir", paramtype = "light", light_source = LIGHT_ACTIVE_FURNACE, - drop = "mcl_furnaces:blast_furnace", + drop = "mcl_blast_furnace:blast_furnace", groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1}, is_ground_content = false, sounds = mcl_sounds.node_sound_stone_defaults(), @@ -511,7 +502,7 @@ minetest.register_node("mcl_furnaces:blast_furnace_active", { }) minetest.register_craft({ - output = "mcl_furnaces:blast_furnace", + output = "mcl_blast_furnace:blast_furnace", recipe = { { "mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot" }, { "mcl_core:iron_ingot", "mcl_furnaces:furnace", "mcl_core:iron_ingot" }, @@ -519,30 +510,21 @@ minetest.register_craft({ } }) +minetest.register_alias("mcl_blast_furnace:blast_furnace", "mcl_furnaces:blast_furnace") +minetest.register_alias("mcl_blast_furnace:blast_furnace_active", "mcl_furnaces:blast_furnace_active") + -- Add entry alias for the Help if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_furnaces:blast_furnace", "nodes", "mcl_furnaces:blast_furnace_active") + doc.add_entry_alias("nodes", "mcl_blast_furnace:blast_furnace", "nodes", "mcl_blast_furnace:blast_furnace_active") end minetest.register_lbm({ label = "Active furnace flame particles", - name = "mcl_furnaces:flames", - nodenames = {"mcl_furnaces:blast_furnace_active"}, + name = "mcl_blast_furnace:flames", + nodenames = {"mcl_blast_furnace:blast_furnace_active"}, run_at_every_load = true, action = function(pos, node) spawn_flames(pos, node.param2) 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:blast_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_blast_furnace/locale/template.txt b/mods/ITEMS/mcl_blast_furnace/locale/template.txt new file mode 100644 index 000000000..ffdd9bfb2 --- /dev/null +++ b/mods/ITEMS/mcl_blast_furnace/locale/template.txt @@ -0,0 +1,5 @@ +Inventory= +Blast Furnace= +Smelts ores faster than furnace= +Blast Furnaces smelt several items, mainly ores and armor, using a furnace fuel, into something else.= +Active Blast Furnace= \ No newline at end of file diff --git a/mods/ITEMS/mcl_blast_furnace/mod.conf b/mods/ITEMS/mcl_blast_furnace/mod.conf new file mode 100644 index 000000000..e330e80e4 --- /dev/null +++ b/mods/ITEMS/mcl_blast_furnace/mod.conf @@ -0,0 +1,3 @@ +name = mcl_blast_furnace +depends = mcl_init, mcl_formspec, mcl_core, mcl_furnaces, mcl_sounds, mcl_craftguide, mcl_achievements, mcl_particles +optional_depends = doc, screwdriver diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front.png b/mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_front.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/blast_furnace_front.png rename to mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_front.png diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on.png b/mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_front_on.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on.png rename to mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_front_on.png diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e.png b/mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_front_on_e.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e.png rename to mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_front_on_e.png diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e_s.png b/mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_front_on_e_s.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e_s.png rename to mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_front_on_e_s.png diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_side.png b/mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_side.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/blast_furnace_side.png rename to mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_side.png diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_top.png b/mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_top.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/blast_furnace_top.png rename to mods/ITEMS/mcl_blast_furnace/textures/blast_furnace_top.png diff --git a/mods/ITEMS/mcl_copper/items.lua b/mods/ITEMS/mcl_copper/items.lua index 92889e455..41faae79b 100644 --- a/mods/ITEMS/mcl_copper/items.lua +++ b/mods/ITEMS/mcl_copper/items.lua @@ -12,5 +12,5 @@ minetest.register_craftitem("mcl_copper:raw_copper", { _doc_items_longdesc = S("Raw Copper. Mine a Copper Ore to get it."), inventory_image = "mcl_copper_raw.png", stack_max = 64, - groups = { craftitem=1 }, + groups = { craftitem=1, blast_furnace_smeltable=1 }, }) \ No newline at end of file diff --git a/mods/ITEMS/mcl_copper/nodes.lua b/mods/ITEMS/mcl_copper/nodes.lua index 2f8709eae..427306c91 100644 --- a/mods/ITEMS/mcl_copper/nodes.lua +++ b/mods/ITEMS/mcl_copper/nodes.lua @@ -6,7 +6,7 @@ minetest.register_node("mcl_copper:stone_with_copper", { tiles = {"default_stone.png^mcl_copper_ore.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=3, building_block=1, material_stone=1}, + groups = {pickaxey=3, building_block=1, material_stone=1, blast_furnace_smeltable=1}, drop = "mcl_copper:raw_copper", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index eed6ab906..87aa101ac 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -48,7 +48,7 @@ minetest.register_node("mcl_core:stone_with_coal", { tiles = {"mcl_core_coal_ore.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=1, building_block=1, material_stone=1, xp=1}, + groups = {pickaxey=1, building_block=1, material_stone=1, xp=1, blast_furnace_smeltable=1}, drop = "mcl_core:coal_lump", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, @@ -63,7 +63,7 @@ minetest.register_node("mcl_core:stone_with_iron", { tiles = {"mcl_core_iron_ore.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=3, building_block=1, material_stone=1}, + groups = {pickaxey=3, building_block=1, material_stone=1, blast_furnace_smeltable=1}, drop = "mcl_core:stone_with_iron", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, @@ -78,7 +78,7 @@ minetest.register_node("mcl_core:stone_with_gold", { tiles = {"mcl_core_gold_ore.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=4, building_block=1, material_stone=1}, + groups = {pickaxey=4, building_block=1, material_stone=1, blast_furnace_smeltable=1}, drop = "mcl_core:stone_with_gold", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, @@ -98,7 +98,7 @@ minetest.register_node("mcl_core:stone_with_redstone", { tiles = {"mcl_core_redstone_ore.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=4, building_block=1, material_stone=1, xp=7}, + groups = {pickaxey=4, building_block=1, material_stone=1, xp=7, blast_furnace_smeltable=1}, drop = { items = { max_items = 1, @@ -176,7 +176,7 @@ minetest.register_node("mcl_core:stone_with_lapis", { tiles = {"mcl_core_lapis_ore.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=3, building_block=1, material_stone=1, xp=6}, + groups = {pickaxey=3, building_block=1, material_stone=1, xp=6, blast_furnace_smeltable=1}, drop = { max_items = 1, items = { @@ -200,7 +200,7 @@ minetest.register_node("mcl_core:stone_with_emerald", { tiles = {"mcl_core_emerald_ore.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=4, building_block=1, material_stone=1, xp=6}, + groups = {pickaxey=4, building_block=1, material_stone=1, xp=6, blast_furnace_smeltable=1}, drop = "mcl_core:emerald", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, @@ -215,7 +215,7 @@ minetest.register_node("mcl_core:stone_with_diamond", { tiles = {"mcl_core_diamond_ore.png"}, is_ground_content = true, stack_max = 64, - groups = {pickaxey=4, building_block=1, material_stone=1, xp=4}, + groups = {pickaxey=4, building_block=1, material_stone=1, xp=4, blast_furnace_smeltable=1}, drop = "mcl_core:diamond", sounds = mcl_sounds.node_sound_stone_defaults(), _mcl_blast_resistance = 3, diff --git a/mods/ITEMS/mcl_deepslate/init.lua b/mods/ITEMS/mcl_deepslate/init.lua index 7984ba89a..b9770b14b 100644 --- a/mods/ITEMS/mcl_deepslate/init.lua +++ b/mods/ITEMS/mcl_deepslate/init.lua @@ -144,7 +144,7 @@ minetest.register_node("mcl_deepslate:deepslate_with_redstone_lit", { light_source = 9, is_ground_content = true, stack_max = 64, - groups = { pickaxey = 4, not_in_creative_inventory = 1, material_stone = 1, xp = 7}, + groups = { pickaxey = 4, not_in_creative_inventory = 1, material_stone = 1, xp = 7 }, drop = { items = { max_items = 1, diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 7a5c7d701..172b07ac3 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -427,7 +427,7 @@ minetest.register_craftitem("mcl_fishing:fish_raw", { on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), stack_max = 64, - groups = { food=2, eatable = 2 }, + groups = { food=2, eatable = 2, smoker_cookable = 1 }, _mcl_saturation = 0.4, }) @@ -457,7 +457,7 @@ minetest.register_craftitem("mcl_fishing:salmon_raw", { on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), stack_max = 64, - groups = { food=2, eatable = 2 }, + groups = { food=2, eatable = 2, smoker_cookable = 1 }, _mcl_saturation = 0.4, }) diff --git a/mods/ITEMS/mcl_furnaces/furnace.lua b/mods/ITEMS/mcl_furnaces/furnace.lua deleted file mode 100644 index 81bef41f7..000000000 --- a/mods/ITEMS/mcl_furnaces/furnace.lua +++ /dev/null @@ -1,558 +0,0 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -local LIGHT_ACTIVE_FURNACE = 13 - --- --- Formspecs --- - -local function active_formspec(fuel_percent, item_percent) - return "size[9,8.75]".. - "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[context;src;2.75,0.5;1,1;]".. - mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. - "list[context;fuel;2.75,2.5;1,1;]".. - mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. - "list[context;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^[lowpart:".. - (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]".. - -- 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[context;dst]".. - "listring[current_player;main]".. - "listring[context;src]".. - "listring[current_player;main]".. - "listring[context;fuel]".. - "listring[current_player;main]" -end - -local inactive_formspec = "size[9,8.75]".. - "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[context;src;2.75,0.5;1,1;]".. - mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. - "list[context;fuel;2.75,2.5;1,1;]".. - mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. - "list[context;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]".. - -- 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[context;dst]".. - "listring[current_player;main]".. - "listring[context;src]".. - "listring[current_player;main]".. - "listring[context;fuel]".. - "listring[current_player;main]" - -local receive_fields = function(pos, formname, fields, sender) - if fields.craftguide then - mcl_craftguide.show(sender:get_player_name()) - end -end - -local function give_xp(pos, player) - local meta = minetest.get_meta(pos) - local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95) - local xp = meta:get_int("xp") - if xp > 0 then - if player then - mcl_experience.add_xp(player, xp) - else - mcl_experience.throw_xp(vector.add(pos, dir), xp) - end - meta:set_int("xp", 0) - end -end - --- --- Node callback functions that are the same for active and inactive furnace --- - -local function allow_metadata_inventory_put(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 - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - if listname == "fuel" then - -- Special case: empty bucket (not a fuel, but used for sponge drying) - if stack:get_name() == "mcl_buckets:bucket_empty" then - if inv:get_stack(listname, index):get_count() == 0 then - return 1 - else - return 0 - end - end - - -- Test stack with size 1 because we burn one fuel at a time - local teststack = ItemStack(stack) - teststack:set_count(1) - local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}}) - if output.time ~= 0 then - -- Only allow to place 1 item if fuel get replaced by recipe. - -- This is the case for lava buckets. - local replace_item = decremented_input.items[1] - if replace_item:is_empty() then - -- For most fuels, just allow to place everything - return stack:get_count() - else - if inv:get_stack(listname, index):get_count() == 0 then - return 1 - else - return 0 - end - end - else - return 0 - end - elseif listname == "src" then - return stack:get_count() - elseif listname == "dst" then - return 0 - end -end - -local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local stack = inv:get_stack(from_list, from_index) - return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) -end - -local function allow_metadata_inventory_take(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 - return stack:get_count() -end - -local function on_metadata_inventory_take(pos, listname, index, stack, player) - -- Award smelting achievements - if listname == "dst" then - if stack:get_name() == "mcl_core:iron_ingot" then - awards.unlock(player:get_player_name(), "mcl:acquireIron") - elseif stack:get_name() == "mcl_fishing:fish_cooked" then - awards.unlock(player:get_player_name(), "mcl:cookFish") - end - give_xp(pos, player) - end -end - -local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - if from_list == "dst" then - give_xp(pos, player) - end -end - -local function spawn_flames(pos, param2) - local minrelpos, maxrelpos - local dir = minetest.facedir_to_dir(param2) - if dir.x > 0 then - minrelpos = { x = -0.6, y = -0.05, z = -0.25 } - maxrelpos = { x = -0.55, y = -0.45, z = 0.25 } - elseif dir.x < 0 then - minrelpos = { x = 0.55, y = -0.05, z = -0.25 } - maxrelpos = { x = 0.6, y = -0.45, z = 0.25 } - elseif dir.z > 0 then - minrelpos = { x = -0.25, y = -0.05, z = -0.6 } - maxrelpos = { x = 0.25, y = -0.45, z = -0.55 } - elseif dir.z < 0 then - minrelpos = { x = -0.25, y = -0.05, z = 0.55 } - maxrelpos = { x = 0.25, y = -0.45, z = 0.6 } - else - return - end - mcl_particles.add_node_particlespawner(pos, { - amount = 4, - time = 0, - minpos = vector.add(pos, minrelpos), - maxpos = vector.add(pos, maxrelpos), - minvel = { x = -0.01, y = 0, z = -0.01 }, - maxvel = { x = 0.01, y = 0.1, z = 0.01 }, - minexptime = 0.3, - maxexptime = 0.6, - minsize = 0.4, - maxsize = 0.8, - texture = "mcl_particles_flame.png", - glow = LIGHT_ACTIVE_FURNACE, - }, "low") -end - -local function swap_node(pos, name) - local node = minetest.get_node(pos) - if node.name == name then - return - end - node.name = name - minetest.swap_node(pos, node) - if name == "mcl_furnaces:furnace_active" then - spawn_flames(pos, node.param2) - else - mcl_particles.delete_node_particlespawners(pos) - end -end - -local function furnace_node_timer(pos, elapsed) - -- - -- Inizialize metadata - -- - local meta = minetest.get_meta(pos) - local fuel_time = meta:get_float("fuel_time") or 0 - local src_time = meta:get_float("src_time") or 0 - local src_item = meta:get_string("src_item") or "" - local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - - local inv = meta:get_inventory() - local srclist, fuellist - - local cookable, cooked - local active = true - local fuel - - srclist = inv:get_list("src") - fuellist = inv:get_list("fuel") - - -- Check if src item has been changed - if srclist[1]:get_name() ~= src_item then - -- Reset cooking progress in this case - src_time = 0 - src_item = srclist[1]:get_name() - end - - local update = true - local elapsed_game_time = mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) or elapsed - while elapsed_game_time > 0.00001 and update do - -- - -- Cooking - -- - - local el = elapsed_game_time - - -- Check if we have cookable content: cookable - local aftercooked - cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - cookable = cooked.time ~= 0 - if cookable then - -- Successful cooking requires space in dst slot and time - if not inv:room_for_item("dst", cooked.item) then - cookable = false - end - end - - if cookable then -- fuel lasts long enough, adjust el to cooking duration - el = math.min(el, cooked.time - src_time) - end - - -- Check if we have enough fuel to burn - active = fuel_time < fuel_totaltime - if cookable and not active then - -- We need to get new fuel - local afterfuel - fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - - if fuel.time == 0 then - -- No valid fuel in fuel list -- stop - fuel_totaltime = 0 - src_time = 0 - update = false - else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) - fuel_time = 0 - fuel_totaltime = fuel.time - el = math.min(el, fuel_totaltime) - active = true - fuellist = inv:get_list("fuel") - end - elseif active then - el = math.min(el, fuel_totaltime - fuel_time) - -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + el - end - - -- If there is a cookable item then check if it is ready yet - if cookable and active then - src_time = src_time + el - -- Place result in dst list if done - if src_time >= cooked.time then - inv:add_item("dst", cooked.item) - inv:set_stack("src", 1, aftercooked.items[1]) - - -- Unique recipe: Pour water into empty bucket after cooking wet sponge successfully - if inv:get_stack("fuel", 1):get_name() == "mcl_buckets:bucket_empty" then - if srclist[1]:get_name() == "mcl_sponges:sponge_wet" then - inv:set_stack("fuel", 1, "mcl_buckets:bucket_water") - fuellist = inv:get_list("fuel") - -- Also for river water - elseif srclist[1]:get_name() == "mcl_sponges:sponge_wet_river_water" then - inv:set_stack("fuel", 1, "mcl_buckets:bucket_river_water") - fuellist = inv:get_list("fuel") - end - end - - srclist = inv:get_list("src") - src_time = 0 - - meta:set_int("xp", meta:get_int("xp") + 1) -- ToDo give each recipe an idividial XP count - end - end - - elapsed_game_time = elapsed_game_time - el - end - - if fuel and fuel_totaltime > fuel.time then - fuel_totaltime = fuel.time - end - if srclist and srclist[1]:is_empty() then - src_time = 0 - end - - -- - -- Update formspec and node - -- - local formspec = inactive_formspec - local item_percent = 0 - if cookable then - item_percent = math.floor(src_time / cooked.time * 100) - end - - local result = false - - if active then - local fuel_percent = 0 - if fuel_totaltime > 0 then - fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - end - formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "mcl_furnaces:furnace_active") - -- make sure timer restarts automatically - result = true - else - swap_node(pos, "mcl_furnaces:furnace") - -- stop timer on the inactive furnace - minetest.get_node_timer(pos):stop() - end - - -- - -- Set meta values - -- - meta:set_float("fuel_totaltime", fuel_totaltime) - meta:set_float("fuel_time", fuel_time) - meta:set_float("src_time", src_time) - if srclist then - meta:set_string("src_item", src_item) - else - meta:set_string("src_item", "") - end - meta:set_string("formspec", formspec) - - return result -end - -local on_rotate, after_rotate_active -if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.rotate_simple - after_rotate_active = function(pos) - local node = minetest.get_node(pos) - mcl_particles.delete_node_particlespawners(pos) - if node.name == "mcl_furnaces:furnace" then - return - end - spawn_flames(pos, node.param2) - end -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".. - 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", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_front.png" - }, - paramtype2 = "facedir", - groups = {pickaxey=1, container=4, deco_block=1, material_stone=1}, - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - - on_timer = furnace_node_timer, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.get_meta(pos) - local meta2 = meta:to_table() - meta:from_table(oldmetadata) - local inv = meta:get_inventory() - for _, listname in ipairs({"src", "dst", "fuel"}) do - local stack = inv:get_stack(listname, 1) - 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) - end, - - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", inactive_formspec) - local inv = meta:get_inventory() - inv:set_size("src", 1) - inv:set_size("fuel", 1) - inv:set_size("dst", 1) - end, - on_destruct = function(pos) - mcl_particles.delete_node_particlespawners(pos) - give_xp(pos) - end, - - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - -- Reset accumulated game time when player works with furnace: - mcl_time.touch(pos) - minetest.get_node_timer(pos):start(1.0) - - on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - end, - on_metadata_inventory_put = function(pos) - -- Reset accumulated game time when player works with furnace: - mcl_time.touch(pos) - -- start timer function, it will sort out whether furnace can burn or not. - minetest.get_node_timer(pos):start(1.0) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - -- Reset accumulated game time when player works with furnace: - mcl_time.touch(pos) - -- start timer function, it will helpful if player clears dst slot - minetest.get_node_timer(pos):start(1.0) - - on_metadata_inventory_take(pos, listname, index, stack, player) - end, - - allow_metadata_inventory_put = allow_metadata_inventory_put, - allow_metadata_inventory_move = allow_metadata_inventory_move, - allow_metadata_inventory_take = allow_metadata_inventory_take, - on_receive_fields = receive_fields, - _mcl_blast_resistance = 3.5, - _mcl_hardness = 3.5, - on_rotate = on_rotate, -}) - -minetest.register_node("mcl_furnaces:furnace_active", { - description = S("Burning Furnace"), - _doc_items_create_entry = false, - tiles = { - "default_furnace_top.png", "default_furnace_bottom.png", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_front_active.png", - }, - paramtype2 = "facedir", - paramtype = "light", - light_source = LIGHT_ACTIVE_FURNACE, - drop = "mcl_furnaces:furnace", - groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1}, - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - on_timer = furnace_node_timer, - - 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 _, listname in ipairs({"src", "dst", "fuel"}) do - local stack = inv:get_stack(listname, 1) - 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, - - on_construct = function(pos) - local node = minetest.get_node(pos) - spawn_flames(pos, node.param2) - end, - on_destruct = function(pos) - mcl_particles.delete_node_particlespawners(pos) - give_xp(pos) - end, - - allow_metadata_inventory_put = allow_metadata_inventory_put, - allow_metadata_inventory_move = allow_metadata_inventory_move, - allow_metadata_inventory_take = allow_metadata_inventory_take, - on_metadata_inventory_move = on_metadata_inventory_move, - on_metadata_inventory_take = on_metadata_inventory_take, - on_receive_fields = receive_fields, - _mcl_blast_resistance = 3.5, - _mcl_hardness = 3.5, - on_rotate = on_rotate, - after_rotate = after_rotate_active, -}) - -minetest.register_craft({ - output = "mcl_furnaces:furnace", - recipe = { - { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, - { "mcl_core:cobble", "", "mcl_core:cobble" }, - { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, - } -}) - --- Add entry alias for the Help -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_furnaces:furnace", "nodes", "mcl_furnaces:furnace_active") -end - -minetest.register_lbm({ - label = "Active furnace flame particles", - name = "mcl_furnaces:flames", - nodenames = {"mcl_furnaces:furnace_active"}, - run_at_every_load = true, - action = function(pos, node) - spawn_flames(pos, node.param2) - 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_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index adf8210cc..81bef41f7 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -1,6 +1,558 @@ --- Load files -local modpath = minetest.get_modpath(minetest.get_current_modname()) +local S = minetest.get_translator(minetest.get_current_modname()) -dofile(modpath.."/blast_furnace.lua") -- Load Blast Furnaces -dofile(modpath.."/furnace.lua") -- Load Furnaces -dofile(modpath.."/smoker.lua") -- Load Smokers \ No newline at end of file +local LIGHT_ACTIVE_FURNACE = 13 + +-- +-- Formspecs +-- + +local function active_formspec(fuel_percent, item_percent) + return "size[9,8.75]".. + "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[context;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. + "list[context;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^[lowpart:".. + (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]".. + -- 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[context;dst]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + "listring[context;fuel]".. + "listring[current_player;main]" +end + +local inactive_formspec = "size[9,8.75]".. + "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[context;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. + "list[context;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]".. + -- 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[context;dst]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + "listring[context;fuel]".. + "listring[current_player;main]" + +local receive_fields = function(pos, formname, fields, sender) + if fields.craftguide then + mcl_craftguide.show(sender:get_player_name()) + end +end + +local function give_xp(pos, player) + local meta = minetest.get_meta(pos) + local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95) + local xp = meta:get_int("xp") + if xp > 0 then + if player then + mcl_experience.add_xp(player, xp) + else + mcl_experience.throw_xp(vector.add(pos, dir), xp) + end + meta:set_int("xp", 0) + end +end + +-- +-- Node callback functions that are the same for active and inactive furnace +-- + +local function allow_metadata_inventory_put(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 + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if listname == "fuel" then + -- Special case: empty bucket (not a fuel, but used for sponge drying) + if stack:get_name() == "mcl_buckets:bucket_empty" then + if inv:get_stack(listname, index):get_count() == 0 then + return 1 + else + return 0 + end + end + + -- Test stack with size 1 because we burn one fuel at a time + local teststack = ItemStack(stack) + teststack:set_count(1) + local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}}) + if output.time ~= 0 then + -- Only allow to place 1 item if fuel get replaced by recipe. + -- This is the case for lava buckets. + local replace_item = decremented_input.items[1] + if replace_item:is_empty() then + -- For most fuels, just allow to place everything + return stack:get_count() + else + if inv:get_stack(listname, index):get_count() == 0 then + return 1 + else + return 0 + end + end + else + return 0 + end + elseif listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end +end + +local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end + +local function allow_metadata_inventory_take(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 + return stack:get_count() +end + +local function on_metadata_inventory_take(pos, listname, index, stack, player) + -- Award smelting achievements + if listname == "dst" then + if stack:get_name() == "mcl_core:iron_ingot" then + awards.unlock(player:get_player_name(), "mcl:acquireIron") + elseif stack:get_name() == "mcl_fishing:fish_cooked" then + awards.unlock(player:get_player_name(), "mcl:cookFish") + end + give_xp(pos, player) + end +end + +local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + if from_list == "dst" then + give_xp(pos, player) + end +end + +local function spawn_flames(pos, param2) + local minrelpos, maxrelpos + local dir = minetest.facedir_to_dir(param2) + if dir.x > 0 then + minrelpos = { x = -0.6, y = -0.05, z = -0.25 } + maxrelpos = { x = -0.55, y = -0.45, z = 0.25 } + elseif dir.x < 0 then + minrelpos = { x = 0.55, y = -0.05, z = -0.25 } + maxrelpos = { x = 0.6, y = -0.45, z = 0.25 } + elseif dir.z > 0 then + minrelpos = { x = -0.25, y = -0.05, z = -0.6 } + maxrelpos = { x = 0.25, y = -0.45, z = -0.55 } + elseif dir.z < 0 then + minrelpos = { x = -0.25, y = -0.05, z = 0.55 } + maxrelpos = { x = 0.25, y = -0.45, z = 0.6 } + else + return + end + mcl_particles.add_node_particlespawner(pos, { + amount = 4, + time = 0, + minpos = vector.add(pos, minrelpos), + maxpos = vector.add(pos, maxrelpos), + minvel = { x = -0.01, y = 0, z = -0.01 }, + maxvel = { x = 0.01, y = 0.1, z = 0.01 }, + minexptime = 0.3, + maxexptime = 0.6, + minsize = 0.4, + maxsize = 0.8, + texture = "mcl_particles_flame.png", + glow = LIGHT_ACTIVE_FURNACE, + }, "low") +end + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) + if name == "mcl_furnaces:furnace_active" then + spawn_flames(pos, node.param2) + else + mcl_particles.delete_node_particlespawners(pos) + end +end + +local function furnace_node_timer(pos, elapsed) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local src_item = meta:get_string("src_item") or "" + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + local inv = meta:get_inventory() + local srclist, fuellist + + local cookable, cooked + local active = true + local fuel + + srclist = inv:get_list("src") + fuellist = inv:get_list("fuel") + + -- Check if src item has been changed + if srclist[1]:get_name() ~= src_item then + -- Reset cooking progress in this case + src_time = 0 + src_item = srclist[1]:get_name() + end + + local update = true + local elapsed_game_time = mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) or elapsed + while elapsed_game_time > 0.00001 and update do + -- + -- Cooking + -- + + local el = elapsed_game_time + + -- Check if we have cookable content: cookable + local aftercooked + cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + cookable = cooked.time ~= 0 + if cookable then + -- Successful cooking requires space in dst slot and time + if not inv:room_for_item("dst", cooked.item) then + cookable = false + end + end + + if cookable then -- fuel lasts long enough, adjust el to cooking duration + el = math.min(el, cooked.time - src_time) + end + + -- Check if we have enough fuel to burn + active = fuel_time < fuel_totaltime + if cookable and not active then + -- We need to get new fuel + local afterfuel + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list -- stop + fuel_totaltime = 0 + src_time = 0 + update = false + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + fuel_time = 0 + fuel_totaltime = fuel.time + el = math.min(el, fuel_totaltime) + active = true + fuellist = inv:get_list("fuel") + end + elseif active then + el = math.min(el, fuel_totaltime - fuel_time) + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + el + end + + -- If there is a cookable item then check if it is ready yet + if cookable and active then + src_time = src_time + el + -- Place result in dst list if done + if src_time >= cooked.time then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + + -- Unique recipe: Pour water into empty bucket after cooking wet sponge successfully + if inv:get_stack("fuel", 1):get_name() == "mcl_buckets:bucket_empty" then + if srclist[1]:get_name() == "mcl_sponges:sponge_wet" then + inv:set_stack("fuel", 1, "mcl_buckets:bucket_water") + fuellist = inv:get_list("fuel") + -- Also for river water + elseif srclist[1]:get_name() == "mcl_sponges:sponge_wet_river_water" then + inv:set_stack("fuel", 1, "mcl_buckets:bucket_river_water") + fuellist = inv:get_list("fuel") + end + end + + srclist = inv:get_list("src") + src_time = 0 + + meta:set_int("xp", meta:get_int("xp") + 1) -- ToDo give each recipe an idividial XP count + end + end + + elapsed_game_time = elapsed_game_time - el + end + + if fuel and fuel_totaltime > fuel.time then + fuel_totaltime = fuel.time + end + if srclist and srclist[1]:is_empty() then + src_time = 0 + end + + -- + -- Update formspec and node + -- + local formspec = inactive_formspec + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + end + + local result = false + + if active then + local fuel_percent = 0 + if fuel_totaltime > 0 then + fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + end + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "mcl_furnaces:furnace_active") + -- make sure timer restarts automatically + result = true + else + swap_node(pos, "mcl_furnaces:furnace") + -- stop timer on the inactive furnace + minetest.get_node_timer(pos):stop() + end + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + if srclist then + meta:set_string("src_item", src_item) + else + meta:set_string("src_item", "") + end + meta:set_string("formspec", formspec) + + return result +end + +local on_rotate, after_rotate_active +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.rotate_simple + after_rotate_active = function(pos) + local node = minetest.get_node(pos) + mcl_particles.delete_node_particlespawners(pos) + if node.name == "mcl_furnaces:furnace" then + return + end + spawn_flames(pos, node.param2) + end +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".. + 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", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_front.png" + }, + paramtype2 = "facedir", + groups = {pickaxey=1, container=4, deco_block=1, material_stone=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + + on_timer = furnace_node_timer, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta:to_table() + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for _, listname in ipairs({"src", "dst", "fuel"}) do + local stack = inv:get_stack(listname, 1) + 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) + end, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("fuel", 1) + inv:set_size("dst", 1) + end, + on_destruct = function(pos) + mcl_particles.delete_node_particlespawners(pos) + give_xp(pos) + end, + + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + minetest.get_node_timer(pos):start(1.0) + + on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + end, + on_metadata_inventory_put = function(pos) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + -- start timer function, it will sort out whether furnace can burn or not. + minetest.get_node_timer(pos):start(1.0) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + -- start timer function, it will helpful if player clears dst slot + minetest.get_node_timer(pos):start(1.0) + + on_metadata_inventory_take(pos, listname, index, stack, player) + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_receive_fields = receive_fields, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + on_rotate = on_rotate, +}) + +minetest.register_node("mcl_furnaces:furnace_active", { + description = S("Burning Furnace"), + _doc_items_create_entry = false, + tiles = { + "default_furnace_top.png", "default_furnace_bottom.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_front_active.png", + }, + paramtype2 = "facedir", + paramtype = "light", + light_source = LIGHT_ACTIVE_FURNACE, + drop = "mcl_furnaces:furnace", + groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + on_timer = furnace_node_timer, + + 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 _, listname in ipairs({"src", "dst", "fuel"}) do + local stack = inv:get_stack(listname, 1) + 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, + + on_construct = function(pos) + local node = minetest.get_node(pos) + spawn_flames(pos, node.param2) + end, + on_destruct = function(pos) + mcl_particles.delete_node_particlespawners(pos) + give_xp(pos) + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_metadata_inventory_move = on_metadata_inventory_move, + on_metadata_inventory_take = on_metadata_inventory_take, + on_receive_fields = receive_fields, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + on_rotate = on_rotate, + after_rotate = after_rotate_active, +}) + +minetest.register_craft({ + output = "mcl_furnaces:furnace", + recipe = { + { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, + { "mcl_core:cobble", "", "mcl_core:cobble" }, + { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, + } +}) + +-- Add entry alias for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_furnaces:furnace", "nodes", "mcl_furnaces:furnace_active") +end + +minetest.register_lbm({ + label = "Active furnace flame particles", + name = "mcl_furnaces:flames", + nodenames = {"mcl_furnaces:furnace_active"}, + run_at_every_load = true, + action = function(pos, node) + spawn_flames(pos, node.param2) + 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_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index a7ce53720..736fe77bd 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -20,7 +20,7 @@ minetest.register_craftitem("mcl_mobitems:mutton", { wield_image = "mcl_mobitems_mutton_raw.png", on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), - groups = { food = 2, eatable = 2 }, + groups = { food = 2, eatable = 2, smoker_cookable = 1 }, _mcl_saturation = 1.2, stack_max = 64, }) @@ -44,7 +44,7 @@ minetest.register_craftitem("mcl_mobitems:beef", { wield_image = "mcl_mobitems_beef_raw.png", on_place = minetest.item_eat(3), on_secondary_use = minetest.item_eat(3), - groups = { food = 2, eatable = 3 }, + groups = { food = 2, eatable = 3, smoker_cookable = 1 }, _mcl_saturation = 1.8, stack_max = 64, }) @@ -69,7 +69,7 @@ minetest.register_craftitem("mcl_mobitems:chicken", { wield_image = "mcl_mobitems_chicken_raw.png", on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), - groups = { food = 2, eatable = 2 }, + groups = { food = 2, eatable = 2, smoker_cookable = 1 }, _mcl_saturation = 1.2, stack_max = 64, }) @@ -93,7 +93,7 @@ minetest.register_craftitem("mcl_mobitems:porkchop", { wield_image = "mcl_mobitems_porkchop_raw.png", on_place = minetest.item_eat(3), on_secondary_use = minetest.item_eat(3), - groups = { food = 2, eatable = 3 }, + groups = { food = 2, eatable = 3, smoker_cookable = 1 }, _mcl_saturation = 1.8, stack_max = 64, }) @@ -117,7 +117,7 @@ minetest.register_craftitem("mcl_mobitems:rabbit", { wield_image = "mcl_mobitems_rabbit_raw.png", on_place = minetest.item_eat(3), on_secondary_use = minetest.item_eat(3), - groups = { food = 2, eatable = 3 }, + groups = { food = 2, eatable = 3, smoker_cookable = 1 }, _mcl_saturation = 1.8, stack_max = 64, }) diff --git a/mods/ITEMS/mcl_raw_ores/init.lua b/mods/ITEMS/mcl_raw_ores/init.lua index eca70004e..2fc65813b 100644 --- a/mods/ITEMS/mcl_raw_ores/init.lua +++ b/mods/ITEMS/mcl_raw_ores/init.lua @@ -10,7 +10,7 @@ local function register_raw_ore(description, n) _doc_items_longdesc = S("Raw "..ore..". Mine a"..n.." "..ore.." ore to get it."), inventory_image = texture..".png", stack_max = 64, - groups = { craftitem = 1 }, + groups = { craftitem = 1, blast_furnace_smeltable=1 }, }) minetest.register_node(raw_ingot.."_block", { description = S("Block of Raw "..description), diff --git a/mods/ITEMS/mcl_smoker/README.md b/mods/ITEMS/mcl_smoker/README.md new file mode 100644 index 000000000..895a8dd81 --- /dev/null +++ b/mods/ITEMS/mcl_smoker/README.md @@ -0,0 +1,13 @@ +Smoker for MineClone 2. +Heavily based on Minetest Game (default/furnace.lua) and the MineClone 2 Furnaces. + +License of source code +---------------------- +LGPLv2.1 +Based on code from Minetest Game. +Modified by Wuzzy. +MCl 2 Furances modified by PrairieWind. + +License of media +---------------- +See the main MineClone 2 README.md file. diff --git a/mods/ITEMS/mcl_furnaces/smoker.lua b/mods/ITEMS/mcl_smoker/init.lua similarity index 89% rename from mods/ITEMS/mcl_furnaces/smoker.lua rename to mods/ITEMS/mcl_smoker/init.lua index 8e3cdcd42..8491d70d8 100644 --- a/mods/ITEMS/mcl_furnaces/smoker.lua +++ b/mods/ITEMS/mcl_smoker/init.lua @@ -198,7 +198,7 @@ local function swap_node(pos, name) end node.name = name minetest.swap_node(pos, node) - if name == "mcl_furnaces:smoker_active" then + if name == "mcl_smoker:smoker_active" then spawn_flames(pos, node.param2) else mcl_particles.delete_node_particlespawners(pos) @@ -244,15 +244,7 @@ local function furnace_node_timer(pos, elapsed) -- Check if we have cookable content: cookable local aftercooked cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - cookable = false - cookableItems = {"mcl_fishing:fish_raw", "mcl_fishing:salmon_raw", "mcl_farming:potato_item", "mcl_mobitems:mutton", "mcl_mobitems:beef", "mcl_mobitems:chicken", "mcl_mobitems:porkchop", "mcl_mobitems:rabbit"} - --for _, item in ipairs(cookableItems) do - for _,item in ipairs(cookableItems) do - local stack = inv:get_stack("src",1) - if stack:get_name() == item then - cookable = true - end - end + cookable = minetest.get_item_group(inv:get_stack("src", 1):get_name(), "smoker_cookable") == 1 if cookable then -- Successful cooking requires space in dst slot and time if not inv:room_for_item("dst", cooked.item) then @@ -288,13 +280,13 @@ local function furnace_node_timer(pos, elapsed) elseif active then el = math.min(el, fuel_totaltime - fuel_time) -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + el + fuel_time = (fuel_time + el)*2 end -- If there is a cookable item then check if it is ready yet if cookable and active then - -- in the src_time variable, the *1.5 is the multiplication that makes the smoker work faster than a normal furnace. I (PrairieWind) have it at 1.5 times faster, but it can be OP and 2 times faster, or 1.2 times faster. All are good numbers. - src_time = (src_time + el)*1.5 + -- in the src_time variable, the *2 is the multiplication that makes the smoker work faster than a normal furnace. + src_time = (src_time + el)*2 -- Place result in dst list if done if src_time >= cooked.time then inv:add_item("dst", cooked.item) @@ -334,11 +326,11 @@ local function furnace_node_timer(pos, elapsed) fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) end formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "mcl_furnaces:smoker_active") + swap_node(pos, "mcl_smoker:smoker_active") -- make sure timer restarts automatically result = true else - swap_node(pos, "mcl_furnaces:smoker") + swap_node(pos, "mcl_smoker:smoker") -- stop timer on the inactive furnace minetest.get_node_timer(pos):stop() end @@ -365,17 +357,17 @@ if minetest.get_modpath("screwdriver") then after_rotate_active = function(pos) local node = minetest.get_node(pos) mcl_particles.delete_node_particlespawners(pos) - if node.name == "mcl_furnaces:smoker" then + if node.name == "mcl_smoker:smoker" then return end spawn_flames(pos, node.param2) end end -minetest.register_node("mcl_furnaces:smoker", { +minetest.register_node("mcl_smoker:smoker", { description = S("Smoker"), - _tt_help = S("Uses fuel to smelt or cook items"), - _doc_items_longdesc = S("Smokers cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace."), + _tt_help = S("Cooks food faster than furnace"), + _doc_items_longdesc = S("Smokers cook several items, mainly raw foods, into cooked foods, but twice as fast as a normal furnace."), _doc_items_usagehelp = S([[ Use the furnace to open the furnace menu. @@ -455,8 +447,8 @@ minetest.register_node("mcl_furnaces:smoker", { on_rotate = on_rotate, }) -minetest.register_node("mcl_furnaces:smoker_active", { - description = S("Burning Furnace"), +minetest.register_node("mcl_smoker:smoker_active", { + description = S("Burning Smoker"), _doc_items_create_entry = false, tiles = { "smoker_top.png", "smoker_top.png", @@ -467,7 +459,7 @@ minetest.register_node("mcl_furnaces:smoker_active", { paramtype2 = "facedir", paramtype = "light", light_source = LIGHT_ACTIVE_FURNACE, - drop = "mcl_furnaces:smoker", + drop = "mcl_smoker:smoker", groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1}, is_ground_content = false, sounds = mcl_sounds.node_sound_stone_defaults(), @@ -510,7 +502,7 @@ minetest.register_node("mcl_furnaces:smoker_active", { }) minetest.register_craft({ - output = "mcl_furnaces:smoker", + output = "mcl_smoker:smoker", recipe = { { "", "group:tree", "" }, { "group:tree", "mcl_furnaces:furnace", "group:tree" }, @@ -518,30 +510,20 @@ minetest.register_craft({ } }) +minetest.register_alias("mcl_smoker:smoker", "mcl_furnaces:smoker") +minetest.register_alias("mcl_smoker:smoker_active", "mcl_furnaces:smoker_active") + -- Add entry alias for the Help if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_furnaces:smoker", "nodes", "mcl_furnaces:smoker_active") + doc.add_entry_alias("nodes", "mcl_smoker:smoker", "nodes", "mcl_smoker:smoker_active") end minetest.register_lbm({ label = "Active furnace flame particles", - name = "mcl_furnaces:flames", - nodenames = {"mcl_furnaces:smoker_active"}, + name = "mcl_smoker:flames", + nodenames = {"mcl_smoker:smoker_active"}, run_at_every_load = true, action = function(pos, node) spawn_flames(pos, node.param2) 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:smoker" }, - 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_smoker/locale/template.txt b/mods/ITEMS/mcl_smoker/locale/template.txt new file mode 100644 index 000000000..3584c4266 --- /dev/null +++ b/mods/ITEMS/mcl_smoker/locale/template.txt @@ -0,0 +1,5 @@ +Inventory= +Smoker= +Cooks food faster than furnace= +Smokers cook several items, mainly raw foods, into cooked foods, but twice as fast as a normal furnace.= +Burning Smoker= \ No newline at end of file diff --git a/mods/ITEMS/mcl_smoker/mod.conf b/mods/ITEMS/mcl_smoker/mod.conf new file mode 100644 index 000000000..c6bda0fc1 --- /dev/null +++ b/mods/ITEMS/mcl_smoker/mod.conf @@ -0,0 +1,3 @@ +name = mcl_smoker +depends = mcl_init, mcl_formspec, mcl_core, mcl_furnaces, mcl_sounds, mcl_craftguide, mcl_achievements, mcl_particles +optional_depends = doc, screwdriver diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_bottom.png b/mods/ITEMS/mcl_smoker/textures/smoker_bottom.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/smoker_bottom.png rename to mods/ITEMS/mcl_smoker/textures/smoker_bottom.png diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_front.png b/mods/ITEMS/mcl_smoker/textures/smoker_front.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/smoker_front.png rename to mods/ITEMS/mcl_smoker/textures/smoker_front.png diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_front_on.png b/mods/ITEMS/mcl_smoker/textures/smoker_front_on.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/smoker_front_on.png rename to mods/ITEMS/mcl_smoker/textures/smoker_front_on.png diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_front_on_e.png b/mods/ITEMS/mcl_smoker/textures/smoker_front_on_e.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/smoker_front_on_e.png rename to mods/ITEMS/mcl_smoker/textures/smoker_front_on_e.png diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_front_on_e_s.png b/mods/ITEMS/mcl_smoker/textures/smoker_front_on_e_s.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/smoker_front_on_e_s.png rename to mods/ITEMS/mcl_smoker/textures/smoker_front_on_e_s.png diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_side.png b/mods/ITEMS/mcl_smoker/textures/smoker_side.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/smoker_side.png rename to mods/ITEMS/mcl_smoker/textures/smoker_side.png diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_top.png b/mods/ITEMS/mcl_smoker/textures/smoker_top.png similarity index 100% rename from mods/ITEMS/mcl_furnaces/textures/smoker_top.png rename to mods/ITEMS/mcl_smoker/textures/smoker_top.png From 539ada1057b8996e38c5dbd6c96360405a897011 Mon Sep 17 00:00:00 2001 From: PrairieAstronomer Date: Fri, 10 Jun 2022 13:21:07 -0600 Subject: [PATCH 511/521] Adjusted README files. --- mods/ITEMS/mcl_blast_furnace/README.md | 6 +++--- mods/ITEMS/mcl_smoker/README.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_blast_furnace/README.md b/mods/ITEMS/mcl_blast_furnace/README.md index e96c21942..38b415670 100644 --- a/mods/ITEMS/mcl_blast_furnace/README.md +++ b/mods/ITEMS/mcl_blast_furnace/README.md @@ -1,5 +1,5 @@ -Blast Furnaces for MineClone 2. -Heavily based on Minetest Game (default/furnace.lua) and the MineClone 2 Furnaces. +Blast Furnaces for MineClone 5. +Heavily based on Minetest Game (default/furnace.lua) and the MineClone 5 Furnaces. License of source code ---------------------- @@ -10,4 +10,4 @@ MCl 2 Furances modified by PrairieWind. License of media ---------------- -See the main MineClone 2 README.md file. +See the main MineClone 5 README.md file. diff --git a/mods/ITEMS/mcl_smoker/README.md b/mods/ITEMS/mcl_smoker/README.md index 895a8dd81..ba7565f0e 100644 --- a/mods/ITEMS/mcl_smoker/README.md +++ b/mods/ITEMS/mcl_smoker/README.md @@ -1,5 +1,5 @@ -Smoker for MineClone 2. -Heavily based on Minetest Game (default/furnace.lua) and the MineClone 2 Furnaces. +Smoker for MineClone 5. +Heavily based on Minetest Game (default/furnace.lua) and the MineClone 5 Furnaces. License of source code ---------------------- @@ -10,4 +10,4 @@ MCl 2 Furances modified by PrairieWind. License of media ---------------- -See the main MineClone 2 README.md file. +See the main MineClone 5 README.md file. From 6889c672c08bcb5a5d856b3522647bfd8ac1830b Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Sat, 11 Jun 2022 18:00:42 -0500 Subject: [PATCH 512/521] Remove wield view from player models --- .../mcl_armor/models/mcl_armor_character.b3d | Bin 554680 -> 520397 bytes .../models/mcl_armor_character.blend | Bin 1242020 -> 1148968 bytes .../models/mcl_armor_character_female.b3d | Bin 554680 -> 520397 bytes .../models/mcl_armor_character_female.blend | Bin 1242244 -> 1173904 bytes .../models/mcl_armor_character_female.blend1 | Bin 1212956 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend1 diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character.b3d b/mods/ITEMS/mcl_armor/models/mcl_armor_character.b3d index b3a943f4679e6484c8f6ae37e0879f3249427407..9c1b290a6d5aadfc2011902ecb62b4daccf41e30 100644 GIT binary patch delta 121402 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 RnrpBq58kFkdfT)2To1gc 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 diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character.blend b/mods/ITEMS/mcl_armor/models/mcl_armor_character.blend index a613eef89303dc9b6df5b5bbf63c46a1ef996702..b41b3c57541531ceb4db5490913e5ecde1dca810 100644 GIT binary patch literal 1148968 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�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

jtt2wa!+&Sa}-1g_>oF@mo^SnCb1KfIn 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 literal 1242244 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�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 z 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 z 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

NyvyFD|;Ixh08xE*y( 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 SeQWB(QKfF>iU@t--~RxDz!O#g diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend1 b/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend1 deleted file mode 100644 index 1a13f1c92ecdc6b31be756978e2192d45a23c66c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1212956 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 From 3c346170a6f304116f3b9f6bfe759046fa746585 Mon Sep 17 00:00:00 2001 From: Johannes Fritz Date: Tue, 14 Jun 2022 13:30:59 -0500 Subject: [PATCH 513/521] Fix l10n template for mcl_achivements --- mods/HUD/mcl_achievements/locale/template.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mods/HUD/mcl_achievements/locale/template.txt b/mods/HUD/mcl_achievements/locale/template.txt index 2cb6b28b4..61583a911 100644 --- a/mods/HUD/mcl_achievements/locale/template.txt +++ b/mods/HUD/mcl_achievements/locale/template.txt @@ -63,3 +63,15 @@ Not Quite "Nine" Lives= Charge a Respawn Anchor to the maximum.= The End?= Or the beginning?\nHint: Enter an end portal.= +Postmortal= +Use a Totem of Undying to cheat death.= +Sweet Dreams= +Sleep in a bed to change your respawn point.= +Serious Dedication= +Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices.= +Fishy Business= +Catch a fish. \nHint: Catch a fish, salmon, clownfish, or pufferfish.= +What A Deal!= +Successfully trade with a Villager.= +Tactical Fishing= +Catch a fish... without a fishing rod= From fb7390f61d6875586036edb5d03d31451093881e Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 17 Jun 2022 12:37:03 -0500 Subject: [PATCH 514/521] fixed elytras --- mods/ITEMS/mcl_armor/register.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_armor/register.lua b/mods/ITEMS/mcl_armor/register.lua index 6f89200b1..6afe5e10c 100644 --- a/mods/ITEMS/mcl_armor/register.lua +++ b/mods/ITEMS/mcl_armor/register.lua @@ -209,11 +209,12 @@ minetest.register_tool("mcl_armor:elytra", { _doc_items_longdesc = mcl_armor.longdesc, _doc_items_usagehelp = mcl_armor.usage, inventory_image = "mcl_armor_inv_elytra.png", - groups = {armor = 1, non_combat_armor = 1, armor_torso = 1, non_combat_torso = 1, mcl_armor_uses = 10, enchantability = 1}, + groups = {armor = 1, armor_torso = 1, mcl_armor_uses = 10, enchantability = 1}, sounds = { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, + repair_material = "mcl_mobitems:leather", on_place = mcl_armor.equip_on_use, on_secondary_use = mcl_armor.equip_on_use, _mcl_armor_element = "torso", From 047d75a78ab89da745433379ec27f6ed03086f9c Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 17 Jun 2022 12:38:08 -0500 Subject: [PATCH 515/521] fixed elytras --- mods/PLAYER/mcl_playerplus/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 7589bf4ac..cda2c322c 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -279,7 +279,7 @@ minetest.register_globalstep(function(dtime) local fly_node = minetest.get_node({x = fly_pos.x, y = fly_pos.y - 0.5, z = fly_pos.z}).name local elytra = mcl_playerplus.elytra[name] - elytra.active = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" + elytra.active = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" or "mcl_armor:elytra_enchanted" and not player:get_attach() and (elytra.active or control.jump and player_velocity.y < -6) and (fly_node == "air" or fly_node == "ignore") From 5d2552eb97a572ff603eaf75a1387e92a8a71114 Mon Sep 17 00:00:00 2001 From: FlamingRCCars Date: Fri, 17 Jun 2022 13:36:19 -0500 Subject: [PATCH 516/521] Fixed elytra not working when enchanted --- mods/ITEMS/mcl_armor/register.lua | 2 +- mods/PLAYER/mcl_playerplus/init.lua | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_armor/register.lua b/mods/ITEMS/mcl_armor/register.lua index 6afe5e10c..a01a952b9 100644 --- a/mods/ITEMS/mcl_armor/register.lua +++ b/mods/ITEMS/mcl_armor/register.lua @@ -209,7 +209,7 @@ minetest.register_tool("mcl_armor:elytra", { _doc_items_longdesc = mcl_armor.longdesc, _doc_items_usagehelp = mcl_armor.usage, inventory_image = "mcl_armor_inv_elytra.png", - groups = {armor = 1, armor_torso = 1, mcl_armor_uses = 10, enchantability = 1}, + groups = {armor = 1,non_combat_torse = 1, armor_torso = 1, mcl_armor_uses = 10, enchantability = 1}, sounds = { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index cda2c322c..add5da0fa 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -279,10 +279,8 @@ minetest.register_globalstep(function(dtime) local fly_node = minetest.get_node({x = fly_pos.x, y = fly_pos.y - 0.5, z = fly_pos.z}).name local elytra = mcl_playerplus.elytra[name] - elytra.active = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" or "mcl_armor:elytra_enchanted" - and not player:get_attach() - and (elytra.active or control.jump and player_velocity.y < -6) - and (fly_node == "air" or fly_node == "ignore") + elytra.active = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" and not player:get_attach() and (elytra.active or control.jump and player_velocity.y < -6) and (fly_node == "air" or fly_node == "ignore") or "mcl_armor:elytra_enchanted" and not player:get_attach() and (elytra.active or control.jump and player_velocity.y < -6) and (fly_node == "air" or fly_node == "ignore") + if elytra.active then mcl_player.player_set_animation(player, "fly") From 5ceed2672eb8743440d753d6c330d7385cc360f8 Mon Sep 17 00:00:00 2001 From: FlamingRCCars Date: Fri, 17 Jun 2022 16:04:30 -0500 Subject: [PATCH 517/521] fixed-elytras --- mods/ITEMS/mcl_armor/register.lua | 4 ++-- mods/PLAYER/mcl_playerplus/init.lua | 20 +++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_armor/register.lua b/mods/ITEMS/mcl_armor/register.lua index a01a952b9..1e779410d 100644 --- a/mods/ITEMS/mcl_armor/register.lua +++ b/mods/ITEMS/mcl_armor/register.lua @@ -209,12 +209,12 @@ minetest.register_tool("mcl_armor:elytra", { _doc_items_longdesc = mcl_armor.longdesc, _doc_items_usagehelp = mcl_armor.usage, inventory_image = "mcl_armor_inv_elytra.png", - groups = {armor = 1,non_combat_torse = 1, armor_torso = 1, mcl_armor_uses = 10, enchantability = 1}, + groups = {armor = 1, non_combat_tors0 = 1, armor_torso = 1, mcl_armor_uses = 10, enchantability = 1}, sounds = { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", }, - repair_material = "mcl_mobitems:leather", + _repair_material = "mcl_mobitems:leather", on_place = mcl_armor.equip_on_use, on_secondary_use = mcl_armor.equip_on_use, _mcl_armor_element = "torso", diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index add5da0fa..7d282d9ca 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -229,7 +229,6 @@ local function set_bone_position_conditional(player,b,p,r) --bone,position,rotat end player:set_bone_position(b,p,r) end - minetest.register_globalstep(function(dtime) time = time + dtime @@ -255,7 +254,7 @@ minetest.register_globalstep(function(dtime) local wielded_def = wielded:get_definition() local c_x, c_y = unpack(player_collision(player)) - + --[[ if player_velocity.x + player_velocity.y < .5 and c_x + c_y > 0 then local add_velocity = player.add_player_velocity or player.add_velocity @@ -278,9 +277,20 @@ minetest.register_globalstep(function(dtime) local fly_pos = player:get_pos() local fly_node = minetest.get_node({x = fly_pos.x, y = fly_pos.y - 0.5, z = fly_pos.z}).name local elytra = mcl_playerplus.elytra[name] - - elytra.active = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" and not player:get_attach() and (elytra.active or control.jump and player_velocity.y < -6) and (fly_node == "air" or fly_node == "ignore") or "mcl_armor:elytra_enchanted" and not player:get_attach() and (elytra.active or control.jump and player_velocity.y < -6) and (fly_node == "air" or fly_node == "ignore") - + elytra.inv = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" + elytra.enchanted = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra_enchanted" + if not elytra.active then + elytra.active = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra_enchanted" and not player:get_attach() and (elytra.active or control.jump and player_velocity.y < -6) and (fly_node == "air" or fly_node == "ignore") + if not elytra.active then + elytra.active = player:get_inventory():get_stack("armor", 3):get_name() == "mcl_armor:elytra" and not player:get_attach() and (elytra.active or control.jump and player_velocity.y < -6) and (fly_node == "air" or fly_node == "ignore") + end + end + if not (fly_node == "air" or fly_node == "ignore") then + elytra.active = false + end + if (not elytra.inv and not elytra.enchanted) then + elytra.active = false + end if elytra.active then mcl_player.player_set_animation(player, "fly") From 88935cbcbdea34d6c04ba7c46a3893cea67f700f Mon Sep 17 00:00:00 2001 From: FlamingRCCars Date: Fri, 17 Jun 2022 21:27:46 +0000 Subject: [PATCH 518/521] Update 'mods/ITEMS/mcl_armor/register.lua' --- mods/ITEMS/mcl_armor/register.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_armor/register.lua b/mods/ITEMS/mcl_armor/register.lua index 1e779410d..4e5c20ee6 100644 --- a/mods/ITEMS/mcl_armor/register.lua +++ b/mods/ITEMS/mcl_armor/register.lua @@ -209,7 +209,7 @@ minetest.register_tool("mcl_armor:elytra", { _doc_items_longdesc = mcl_armor.longdesc, _doc_items_usagehelp = mcl_armor.usage, inventory_image = "mcl_armor_inv_elytra.png", - groups = {armor = 1, non_combat_tors0 = 1, armor_torso = 1, mcl_armor_uses = 10, enchantability = 1}, + groups = {armor = 1, non_combat_torso = 1, armor_torso = 1, mcl_armor_uses = 10, enchantability = 1}, sounds = { _mcl_armor_equip = "mcl_armor_equip_leather", _mcl_armor_unequip = "mcl_armor_unequip_leather", From e2e4f7d2df33afa8ee0ef1ee3e524f0b47e402b7 Mon Sep 17 00:00:00 2001 From: balazsszalab Date: Sat, 18 Jun 2022 15:41:22 +0000 Subject: [PATCH 519/521] Register sweet berry bush by add_plant function to enable plant growth Without calling the add_plant function, sweet berry bushes will not go through growth stages and it is impossible to farm them. Sweet berry bush and beetroot have the same number of growth stages, so I used beetroot's interval and chance values here. If somebody has a better approximation of these values, feel free to change them. --- mods/ITEMS/mcl_farming/sweet_berry.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index f215851e3..cde2f8d97 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -63,3 +63,6 @@ minetest.register_decoration({ y_min = 2, decoration = "mcl_sweet_berry:sweet_berry_bush_3" }) + +-- TODO: Find proper interval and chance values for sweet berry bushes. Current interval and chance values are copied from mcl_farming:beetroot which has similar growth stages. +mcl_farming:add_plant("plant_sweet_berry_bush", "mcl_farming:sweet_berry_bush_3", {"mcl_farming:sweet_berry_bush_0", "mcl_farming:sweet_berry_bush_1", "mcl_farming:sweet_berry_bush_2"}, 68, 3) \ No newline at end of file From 5b56acd415cd14d2e26b80edb5f7f51b0c973c7f Mon Sep 17 00:00:00 2001 From: balazsszalab Date: Sat, 18 Jun 2022 16:40:50 +0000 Subject: [PATCH 520/521] Fix skipping growth stages of mcl_farming plants Because usually math.ceil(intervals_counter)>=1, stages + math.ceil(intervals_counter)>=2. It causes the plants to skip growth stages and they usually grow two stages at once. Changing ceil to floor seems to solve the problem. --- mods/ITEMS/mcl_farming/shared_functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/shared_functions.lua b/mods/ITEMS/mcl_farming/shared_functions.lua index e942415f5..8c712f8f2 100644 --- a/mods/ITEMS/mcl_farming/shared_functions.lua +++ b/mods/ITEMS/mcl_farming/shared_functions.lua @@ -129,7 +129,7 @@ function mcl_farming:grow_plant(identifier, pos, node, stages, ignore_light, low if not stages then stages = 1 end - stages = stages + math.ceil(intervals_counter) + stages = stages + math.floor(intervals_counter) local new_node = {name = plant_info.names[step+stages]} if new_node.name == nil then new_node.name = plant_info.full_grown From 42fe7d8c73c510f00ff6c5664ed9bd77f54fd9fe Mon Sep 17 00:00:00 2001 From: balazsszalab Date: Sat, 18 Jun 2022 17:30:23 +0000 Subject: [PATCH 521/521] Add sweet berry bush to bonemealable plants Sweet berry bush advances 1 growth stage if bonemeal is applied on it. --- mods/ITEMS/mcl_dye/init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index ca0ca6fe1..09a97e08e 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -281,6 +281,11 @@ local function apply_bone_meal(pointed_thing) if math.random(1, 100) <= 75 then return mcl_farming:grow_plant("plant_beetroot", pos, n, 1, true) end + -- Sweet berry bush advances 1 stage + elseif string.find(n.name, "mcl_farming:sweet_berry_bush_") then + mcl_dye.add_bone_meal_particle(pos) + local stages = 1 + return mcl_farming:grow_plant("plant_sweet_berry_bush", pos, n, stages, true) elseif n.name == "mcl_cocoas:cocoa_1" or n.name == "mcl_cocoas:cocoa_2" then mcl_dye.add_bone_meal_particle(pos) -- Cocoa: Advance by 1 stage

$-U6MY~hY4O>ch%`>TXeJ-o*Ab?^pw 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 KRS^2rzyAZ&`bpma diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.b3d b/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.b3d index 4e17ee34105e5fd7028051e7509ae0ae9d2dcae1..15a131e94c22f7aa9a4be9930f5f37b23b6fc26e 100644 GIT binary patch delta 121402 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 RnrpBq58kFkdfT)2To1gc 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 diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend b/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend index b0494efbff8f5d46bf13b3f4765abd55cb15c200..8c16536b284159f9cc2c545b25cbd9ddf63ef6fe 100644 GIT binary patch literal 1173904 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ⅈcMEm@r}YH;{8=!m?*F9! z9lKEf{#h_7?*DYw%U8Po+p`X!eZ>3xUZ7O=|Mc{9gY^H6c@8YK{jB@=`sY4E;%xx+ zCH%8sQrQ3Z+i$;4mFJ)TtyBN;Z6NV}0FMF9(ceBi{!3;5@6n^j{(Qzqa{5oA4)FH^ zoAVy2+W+s{w{LGR{kKmY;GYGO%Km@Y;fEjII{hbH2l!`!q;UH`V8DPu@$}ygb-;Ii z`=6TUfABm!?ExNY>0kRTVAeZs`y7y(BUEV#^#gtXPhtN*=GbG$w50#G)B!XXxX+&j zmdfq_kRd}ttbd-@SHA-h^LzMzoAmGZ|5LjEKXmA@nKAwI`Ty?vZ_x&1kD&8=0DVXH z$NwpM{uj6ZBSwrUtUMq7-v<4A%n6eI{j-2mxcwhFYE&uB|4IF?e*eR(4)E>=dXEMD z`G5EIKinr^|4W6C_0M$hH+~gfszMqAm~ltQcEIV)LTUrdbVtbJKTb~-emjVc1tf!% zyZat;NObJjv2SNjocMMqCs*zq3R`)H2u{0$!O-ie$hS|Evc;agdet`9Kifh3=%0RT z=+C~aQ_t^poea;)Y9Kvn{@(`uv)yR^@9RIcb84QJ9pEN1> z3bhw6(Z12=$BiHV^vPq#HjErK`f;+O2k7@@?;SMgn01+%nRg7x%)IT$0RwK)ZOwm9 zO?x0+-O6|W{{64%*YD7a>AT?S-hKKkqu+wBq_zA@x^?TesB@Pt3)9ll3w<4?rVf3* z_im>z_$V427DXvZNRqy z-v)de@NK}i0pA9E8}Mzww*lVim>z_$V427DXvZNRqy-v)de@NK}i0pA9E8}MzQ z?KW`A^qIM{IvK`0bpt+XB7yd!U9r3|HZya?Ne7!TiqI9^5I*dRbi>G7_hBCn15()#0k@vnQ7mX?QW!qqiHM-Ll4ENkeB((*B*&R$%&l(NjASCh*s%EP12 zURqIHefFtyrq0MedudTwL1ER>iYiVFmsQ6S3W`b!s|t&1!c_%}!b=Ow!owDph0BYX z7XR`k;7eflN?_g$!w7YzdLz2ntVaS=TW~$o(lu|!ywdU+h2<^fYw5jPS=B88(fh#n z`k3{cSC}C{|zgaJjQ6b{d(f0K1 zk3DbZbB0ane=yTQ!{F14P5mIAK@9d7NxzeV1V8j8uHBnplGrD0?nk*=?2q?y9Wpn8XESUDYqo&py>Yoj0d z183%&^(w-(JygDu1HLu;t4-hKsdh)=fJ0dFzN+UDM;Hj4Vb=dF=S)fjf7gke13!An zq$ki{l><103>TmX@IOq?y58sI8^#Vw3tXk}TnoHct2ppD!+H5R<)uptYf3B14f@~e zOQ!`$YVZ&zY!rSGmWbXF#sRfnh2*J=m7?rejVrgYXb!km$`C?;OR@O<*9Eru<^tLPk z&=S!b!m*+^gbARqvans_VmY$jfY(!Ro76b6z4QjUThbfovh*f;vh;S1__2rI&C91s zv0_<`vAFd*V_CWBZ8?PK66XEx>fYvfTl5w{D0&Nc)VFyDFE#7CynZTlL2V{MZ@}xR zHyQu8m)<~kOL_xcOy_!{7<^rgda|#bzlF<6%gD8cRfo&MMKuKrD{8$s_egImJZYGw zQ;hZJoM&qXL4QE#1^tZ@2Vbc`e^;Wv>0EdEK`-c!9-`zAzJ&gQg;mR{ONLFUDqP_q z=UtYZX6W@2ih=w=FX)GVfUowIzmdHCNewZ0fxG-cFX#t<;42mAKY)lTDOB_a<}Nh- zfaM>dboj;o^z2p_a$jJ@(wUXvs=}Izs##SP^i)$CPGqP~kj<}XfuaK;a-eL`h4=C3 zntSThc_XJ3%$!ru>e>axw-|yh_+dP{+EZSQVs{8Zs8e2eACIn%kQe+W9$oDzufRgF za|ylVg?#bo>IiwkPvg;)o+x3qSbG_R{D+7p9DV$=jG4f z4-?$kZ_@?;(~%_7w5~r~jY|=3e_4&s5$gE(IdG_I&l@G=G?a~y)3|=({yy+}^&10^ zwQqkPbhp%R1YJxg_Zz_%+D)B5=BItz%~td~Mat1)_jVujf_|o%FYuKL^mDuKywHw; zuXz64p7l&#k&+`q&;=U?U3edlt`4bZq+YS=nIB6%BlQpXK{zjeHhtX;S8+wtmLV$S z1H2q2GK9*LdIsTosb>)C_*#1A@dqx{Gr;Rr&qNwbwl~$UwL9Lw&Vq9)|TZuyAgiVLZ{HTPrqBn$bK%2eVPfLN`fZt1Rfd|`H zZ=ky+y@4)EZ=xqlZ`X_7M4uXK<|FHES=p}9+bU;aF7c@73t^t<4WSbxdYEe0^A3;A zm(Uc7c_HKo^ai|MdW$~LzIp@QE$Iz(F`eA5gDmlziB*F)qDNKZxA{G1N~)w zYe39zkcYp;;ey`)Kl}#eAYb6u?dLb#{|0`PhjKtiV56Q9k?> za)g~Xid;c&D%d&G(j@&x&;|NIFX)dRA$B2rw3&Vs*y=FN;C|EKu>1G{^n(7pBNhGN zD;4NB=gk+p(+_$*3-9C6)e-Vq zFMc17uJ)8yK*~etB`>^>M^{J43-wGqy4q7-c~Y+-^pY3e$D^ww(Tzh3(L;0NKn{5j#;nq^ht%vpt{<*i?j zgZdqKIlMrRcs!R#e;#4eAJsfJLJu%ovT6Yh^ZPwsaDC4GY~XeFvym_QD_cJs$w`M? zUM4|-?w0!5pv%&m=m~lQ0Rhn`;t1#EpEWmgYOz|5)XKF;jLS`L7ow0jVLB?w0fhx|mL$#{ggGA4W4{{4qc6+dpjm z_lc4v&HIPuJdDr_`tt_L_(Js6zVx?dT}2mjC263{oqo^@`e9$tL;KR-I{BO9BMIIjdlV6I{z8xI#c$%#)t>T-mP`LnLXhZ`7xKlU zt0U~IN%S3$uJ)AI;0h%#gkJK(`*?KiPI=`|ru|We#`eYji3o>|!Gl|vKRLfBTpl)R z3KxeB>M^_JNhHm!tcwV+QRL~w(RgWtxteS}w%@oz|@_4Bw@2&l=;lnj1{YPH{z6ACy z38Wk8J!B-yV<{soJyxxfBtjyMXtkQ(2rReHfAVOk`GvZ=dB`Us(3oekf{6q_?KHZ9 z@6Y6(FW*m^97U;lA@O&`!uf0t+u7P?! z)*jy1e(qYcoDp+eoFQfyI9HvwLF~*b)2*302u#b z?;viTBjeZ9@0-Ln%-^%qNRfP*=Qv3{rBeLAz6ADJ30P-1@ffKEDad>8w!^I+T^Q(T zesAVlGm{E{Z&HsS#O2+3%Pll-{lY}{QBL5syPQUTOSi%FO`;sZ#AHzQf_WM7-}eEuu~$LrJB4SE{l1yO?dhKo|0XuECD{JU%X3 zSya|upDF|AD|+&(>~x{?2)d9DbgdUSlX&{WwpScpURuS4;ez5Y)7Iu~*+6fFUUb2poOHqN*uIv8!{s#< z6=l^0ix$!m6E(aku+;}&SQNQGu)JoGu?6Hi+Y6M9X)jr?&WYUdOBFUb>@zCq{Uls} zugW)8Lauwv?=WdpsdTo!$a99wP&&zG+Zltp zukbdeo7H6e<)Bmf*=)y|>8%?cn#gH?Ip{gMPYv-q{c0Mj#%b(lCG-M*^)x**eBjju z%0Bn2Fhi$r1ipOAHcn~DKL1AciDsPf# ziP|6RCK3CKQjzFKG|)5KMRc9C&$5pD5Ib2$^c%bV?JO>iu$?okI%fbrq4;`-?2r8> zB8y3M8#IhiP7Hl0MBZb?VV@{(SJ`LOx6hagT4A4%Un2Iofl6u=yJGv)Z3}i6xLDa= z^mG*l=BoBMxgP1Ux4)!6 zFL<{|n4{p>J{J%V=yz|SXSVIYT=hQBqyEnO&h9@1(yZO*G+cit|1mR20{jAac9mb0 z_fr(+^j5kY6Hx!TDh?sJCH9fwV%i9~wA8g|It}^R^N!+g(dn^dI(d z73XI-FW7&u-J#<^kFY!7*;RHo*ta{9HZI-P^k=+}g{&X8BgiiiyIVl{F;B3Kp1o{= zURhV(2g%t{6WbAY0OW!l0ne_oqkwNm5IKdq?dZ>17EM2FN048lc7%DRrwBF?I|}?O zIXn7*?Fa*DdW0PT&#tngrhq?wCUMK9+m8N>_puQ55#*PM9r1h!<{P2UWY=MIHLcHk zK4g7A_uqqvQNAxd={nS(o6CUpIfs%VKh`I^BwsXFOuu_#{{G3N^Cx!W?_|cZ8`nGKhw-@LlGX(qH@7FlHdh8aW8QmEe(X8Ak|vqltgNlS z4Q(!@BpTPs+QHbO>MqhqbUO2vGfiea7c zKL_^>t(QHR2$A0_9DGb{Eho<@g8s`zPM{m`uNto!v=h|2aK;i6^mj<(koCa$fe-k1 zoT$o2xvv_p+3`Ep>b8U*_<(=C;77U5=pSTX3)~WZ-~;~of*<8J!+%6__<;}j1A-sr zHpAaHIsCu}{IFA$+YJ9f$>9e+;D-&M+-CU4C5}Hr$lwpoy#^?U=PB8j&7XPCJatND zW!rvcvt*gt!-5dypblZXj!+`r$D^w~_t-S8P;?>mq6_c6=wd!PV$TTbr+FUr@$}O2 zaDKS;y&G;Hbe@YTj&E&{6^DTf)E;8iV~FCYm-%<8p<~X6tNET)^>r2XI6~ATz>9P* zym|LH&!}_%YOCYrb`A7Qq-QsJK{vuvX3wC#$>A#6rd-CqB3)XM^znS!3IbqNAvIx1 zUjga+AoN0z>Gh(8be6xl7DLL(_K*|gKRut;lT#kp#U&ng;4F4}zG<;FE6c*pS4qX) zbQnnrgPxiDgQ1Y%45klOHo|e$f8srr+7;?QE%tp-rE^{d@7}lMT!LQ#?BRbKf1&n# zA!Pe0A)XMg_OOTi!ljjM`6X1Idt-oT?C;lvUN)jPu&M(=j+T*Gzu!~EVb)*WvcnN$<>$l*Lx1>x$H zrdDQTyh2QI`BBE4;4;3w+0Gunn_&xPjpAwuM%KGgf1I#;n8 zL{Dw~^Wc@L|Bn!uSpR&1F1(LNS7CWgL0MsWadlB)W!ri$s_b}w(Vn7x7(|xJGzUIX zYe(Y2w*6fsXv&2e*}w(z+Za^1S$=Kvdf%22@zUJjo%tgToWfVnAJ66KZo0OIn$u#w*v)_3=ubRN z=LgT#oBHG!#;9%DJ(-^6ZY_IElYZOrMEgE*@%%ORv{Z^&ekp!91%6qh{1X1^MKk-Q z*Smz%HNR|pOZjC>n+GJ{knaeN z;wBu0!{~m3)A;?madUqAvvG4KP?@8(az~*IXMTbkMRx<^;5LPoR^Yd(@HgL(FLIudG&T@eSpgdf{_7=%-#gk% z=1u44d6G?N=gv)9TgmO_u5T~@^ZN~ZM0+WIX!&KC_@(%(va9BQ*)ON_dI$Bld4@z% zG{4OIONaQSN#(Bc%U`$6FB?AGyZln;r{RST^2@-|J*2%9KeYU^MEp|x)yusm^ANmE zGq!|T^ULU;JI*h;F7Hu$T|({UNAKmE?IXbq{+9ZzJ!*UKwiAQWAE4*)oMy`Gi)~qF z3>#i&7zVP)Kzu|W@j(mXbaXhBvIL&?Y z_|h7$Qdyy?ca5fB^UB*h{L;oxD75OZ&#AsTe)o?rm+T?!rTC%cmkY!%#b4QG+%C&6 zjW&)i(-ii=tKyd}l`_%KU3$A;6)}*b+T$z0q`NKt(OP;vpxaiow zJ+oTcO*=gM%-4B=C%SL@dK_bVZ%Tl|NO0CsoyT(gwryWOk@I$^4eI+5B|P%fgs%sr zZ#3SiGuuli{H=s1^meDQXfK`k_GZ5vH!Ku-wtUFObmLE$m*R((U!E;~DgJ8bDi)hp8ZIj?IJG9c)M)+k1FgNx`;+)(3+2WrXz9uB zSDgFptJVZ@+o7B1b?Wp@f?d}w@WfwcD!;tCOJLkPl(y*oPNrX;H|y&smfhWH1Lrew z_Z^>Yyp;E3{q{5H+=obz)9)nse-2mhR}uVMlol5F_;T~Ky=#1_@e|s7K?jX5qto_~c^~mZ%P(h%Uy8rB?d7;W)UNScYA-2_1Q$qq_j4LAo@pOnZv3+O z_|k&EoAAuCk1uWbXnd*Jv7Ht!fA?Q*G$fN2xIV#l?YPhGwyxOvkTCkOkCta~(Lx%oSH zPQQ#Ca#7H@ZQ0nhH+@Op!ug7*HNySXdY?@^wkrWa6Y=SZhpDJ*fDED7aVomVVf`6@^)yqk1tF25Wf^ZwEQwp{8IeYv=Ns-$}i281ukzBOw#-^`h3Uw zW%TrqCgk)PnVmbf27YJy7dW|y{jGS}hMU;`%xl3&b1d0M`Q>lfU;BLZgz3NZ{@9ye z4jOO7{PNRhR|ZSB{&&;yzs@%O?z6LJ)qg>L`SVKUm;KMUcj9;5R|Q8NdHP=OmrH;D zn}+G+mlL|b6WZN=8QoLX6^I{NemO<_Qv6lfVDrCu;lkq9eYDhYX@1%GT*vvPvu#uq zI{Rp5JmK$`?(1U>3*NatmdgAU`MI?|*1m?+NsA`K-S+54L*i*VKO_50d+3W-FWor& zzVmng_sa`XzrEyhEgFwk=UC*>IFE;VfmfAZuA^s;-$l1>w`LwQE&d-~7tfmwfiFaW z>jg+%U02s<{zb+2yLID)^S}LR{ru-u{KcdHKH=SE57gIfQ1RPN-7out zVb9ce`niffeA9sJzb}8Ie(<#_zHtB1*)KfwNqt_eiqC1t%RYBRTElfkDqi=u?`4m; zIna=Krivf<=Q|)e<}a@%j!J9z zkzxtZ)*>|mepnikM=cY^l zJK^8yH`UJ)`PI&Nal+9(SJ(H4d@Jso@c2(puiq^4|LTUTCVct7BkM1-kB9tm+~l9e z?2GrV@cMt)+xLh5@rjAr`;P~l^W--g{4Kx!?UOqGSFZl%$q%*imwq*5V>gYy!eh_g z*jJ-}>5W%y)cN~S#eExf{trCk#f`drLYMt_O%p?Ne9r z=*{)NeO$$7ch9K%{n};qwa=;e%-7%Dc+OE1>x;Lm_~}P(-T2qpf%?#U^8N>RZM^H! zhc=DZ@Zvy!DAK?{&_8L*h>RQ}I&T%kqxd9}hL%I_|2!ch0Wd z`L-EfefRwFmoKTvzU~_p-#K*a_`zq*&3@+#6(4v`uL+Th4w%sI-zt9fr+E{`%)7a6 z)?ZcpdgGD_k8GT_>6729_`~17Yr{Se8s=@=E?eqx{O1uXBk-ZJSc-T#>EA*7F4*Q)r$b4O?QA$?VjRq?;SG9~*4 z(&xIrzG>#~)IUFaDe1fES{2WJxgfia?BSCsD&BP6dD(Z8y)<@J@$maq*^iSwEqMJ6 z6aKTAwb_r5y{)TPajp-yaDDiwigSJV3e|^eB7chte+#KTyp;X%I>qk=R3F|*{<{5dDtcETSfKZepDY;mZ^9*st@m=`p~#j#lNBY@NKFOUwTT#Z>Re3?YBPMH27^5 z-$wP}%b)&Y(>oul_#;#wUO@HHtS?pkXH*}qJM5FXcfM8eBdIcfaueg)NsuW0lYQGKY>UrzO*&fm3E zAL{%cMD<};O+G=Y4|VyyM)jdC-)E^l)aCyW)rY!%UZ?s{*WW2rAL{z$`cT*Z=Tsl+ z_VEj<4|V(D`cStot`BwllE3d?AN{esr}{8!;uD(;sUNsLyms~MO%bU- zxIX-3$_?3UV z;+HCo$1wJB4DbJVr^f~6_lg)Edme$Y#&gdUePZs*qWoB&%InXqeOYg1z4=fT?Fl5f zM`PvM$Afx)!Z(=mHK;VhXt?Q!hhuvRowQJ{-F~^zka(KT&+T^{{&1-&n;+%u_IaA= zssFw4CDJX)-7k} z`lpHT;rx$#=$XqfHuE3n#dhXqYtDS$aX#bnMfzRzZm->A{!Ws2&gO3hHBV|o%DNB( zTjw&3Q0Eu2Y?*)jwmi;j;=KAbGk0>~(r{Iwxv)e1)n6z4Y|7e^`w~aIHBmk%Bo(i~ z?FSyrXXoixs-MfG)9QSl@XIf9&d$1V^A&%bonwCoUvc_NEd5v8o(x`e&eIQ{^WJ*1 zZy$qqgNeOWPkJ8x*)T3!f6=5~pRZut=6;XZW?Oy< z(SHunyo%_g*O4B?OB2zbO*C`r@udgAv z*GK;FiT%{KoEu-AaMGcxgF|PYV!|JENY_pM%1)WI{j*hO`G3f|y5Z`J?+i^3-m^u~ zNrgy-+ga6ywsV(7h(if`y}Tl-$iL; zd`3XdJN7z1aAxkTvci?&DkDrM2e#qjvaBmpJzYvcv{s#4WxbP!z~YA9&idV%hvPQ9 zZW%f#E%0;oo9BA*?b$x%$!~6!^j5#U8O>DZ6|NtkLcQE%o}0R=-)5cvejl@aWm}AI zkEp+#b$GM%NOL;eV4S)1Jo+=|bHuVaiKFMuUt=T?)b>piWM^f7~g4!s~^-15Z6S-~bLv0kt zU(32W_|WFta-QB?ki+o0@8I0P*C-#(4K$3-l!a;J8>b~Bj*v08{R-UVw@(ogBkIF= z=kv8)+A$0ztK>X$3GoKDVa_X2BJ#zfYj>X;*n{XoeZ_QxW`4%S^mn2N>N8G9K7Kc! z;;2h+lXp#r*niKsUCt6C+$azDQC?Ka10C%$7pIj6{3vg*lm|Mjv4306e$mPUew5eP zSK25kw_Wz=YUKex$}5rbKu5crIi-~c{3tIV<$;cNIZHk$tI?=8@1&VMaUQaiRgA z;0t^rANbe#WI2G(t(#mK4hLMU_@Ss7_mZ&H?Cnci(g77Q;}#MG-3#V?hq}E0+Go zL8ms*o5<@2of^_}sIjG<;>5x4^fdk1eAiG)X9oepC8xgs@P9jvZupFDPP>fa{7h*Y zZQud)0UDvR3{Lk-^GXLUgkJd~4NUXpbaPHR`+t;1e}s|-YxGC9{_1x$$Gv%U*0hDB z2Q^21&@)@>CeqFDPthFp=Vu<+u<*G#Ccn@2?YgP)kvR>=jy%wm$3rwneO2M*TMn;$ z&V<)|vXlE9_3r!a0H%LmzO4FL>f^ge7_6Uw{H7b`YMnAd{d|)1MUrvN7A(lit*6#M zq-y<~_sL#aKj*Zier~R1XT9Z&GlZU|KRe$k>|7V4e&!T<4m#>*;el~E@wwyl&etyR z5iXUk2;V}#)t>0}v&s{zpLvdU`7>LyXV6XWjCW{`cENLV8a_MoKokDIG)FsVDH{ApM5$o#5`#}>DSLJzz)2u`dRAZyNDLnPe6VX6a8o>iKw4PIA0_g z*KEOp{Gs*K`iGRQpFh~!>SyjZ^ZLQo_n+T;{-%&!)6V+M8Ry)3n*L0`E%nxPGRxTS zt#IAe{mmXDP(O3sd;rB`^|Q_cu36Y)^N|{e{QOKZ;<&7?cvS0 zZ87?1Y|ead@D?s#^GUyc7J+wEVAao3AKyiUX!^1G(N6kMKhxr(HeGsIKy(Ej+7PB{ z{oMHeUROVFA)lr_M6Iu%Uq9$Mv)+iQ+gZOkt$x;cV7M5pH%(3&khAUZB}6~dEc8a09;W|tx~UY7AE(#PJLaGDh+aRRMC%)< zehzM;o2fd9);EkfH>+X5rV(cRbz0x>ka*H8YZxkm31THi1>8s0o?O%BV!ub)|H zDRSkXL7qjGWHhIjxwfbqJ=1?9x=HPg_98QXc20RIeNy1xrnV;fyfVj0=dzqv)S2KC zANRB9kzHj{QY$J6=-dTga`4 zKBim&hkSr*6gc1mSZ-H49P$Bft-t{v;0$Av`Dq5_As^sM1P=HBm)q42hkSq=D{#OE zIHL>GnPz@}%%nu*16)AhfG-Be<;CET4{+Q6pyUaBF}Oo)aL5O^^#TWcfXnU5aOyjE zCWXicxLSb&KF+JIqfAqUJdqD@c>)J~fHJx;T#P^D16)6W13n9mw>i;;@{kX3O=9oB zXTf!0xLA3}2e=Ia2Yi4Vm~oi-i1LsRa8ZE+z8Ks(n_Q3&aPUvy16*dhU7pAXIOGF9 z#52=l_Bogm2Mb-@;eRjM{SWrGL+lTDm`{e^A^8E{C~@G0-L3V2M}EMs6?ou<{ecc= z`N$9W5`hO^z=IAaJn{p6tiS{BcCjxn`jH>-0f7fz!0+(jANc{l{RQz?!2@{k;iMn= z0l!}0ffxSN=utlM1HM+^fwxxp_mUs-13pjSffw+g!%08#1HPZY126p3S+B$XkRR|( z&nx)>FW|k(M}EL>5P0D2=TX0)eB=jwRN#RZ@Lu+d{D7Y?@W2ar@Zppn@&kUbzymM* z-;00b2mB6c|A80q(4(__;L(2pUciG7C;i9| zc)SN*=*`XkHc)2tlMa^pGjEW+zXbSz_}_N1Cue<-MxCf!T8?}$;p|H-Y$saanVXiL z!HvVtouDcfHrA{Dr4@eq^!~iJAn$)FjO9%1iS7BfR9K_nIYju0e(r{^=VXQTr5qLB z<%q{Glg|(0>rnm^xtw4dbF9!D+o|zgx{;C5$>`px8%g3Y^JW110eOB)GGTc- zFUH92ypZC2y~oC(N9YZDgk3TZz@s3WP zp!ojVIQ|jc-_cF=rExpme4*d7pNd-Xt0Zm@lpb#-*|Q!E>IZcpi@w^t?KwH-X5*Z$ z`^DXa#d$Htz42myoJAEa{QGTUGLd@MMMQh1c&fvh`9;ghDr?$@`~}8AEWd+HY@JV; z4XmigQE#IjZ z8&!Wtr?jme2Oju;-gm9T2RZHP&`mapm)Sib-$)!^$LBD{0SogdU+c=n?fa^sBfTHQ88j$5S!R zj#lx=wcGBYMEaO+UawI5z}MX>FrY`o@m^jdF!k7tgi7-gX8)`UVSF{?9=eew7JBKC zeG%=Hw;nqgowS;DZ_*?520cPz&@bYt5_;*8>4P5K#yP6*kt$rYOh@3GV)MIwOF7ve z*OR>?|0@K*_PKxe?2r@omRk;OmUe3nudj@)vCK=GQO|G}tsNfh_x>;HFMr`!_Or;& zyz#*S3vQbd&h=@w}18SB#wMGFs<%~e^@qg%%P*UP&CN!48!^OJ>xo( z;2DOY8SfOrb(?}W_P^j?q2BA>+`QtxJ3A5Q94fB3BQNe^~vFzJ1~YwxYg7j(-#`lx5N{QcECH~;nV9=R(=1hzi?zpXic z9K0^nvvXDOliy^7njUyN`<;TW4O2e;!Ur{`j3q3wC^)e{aACnFhfe_0OU$gvRaBM+B7_JAp8o!vy!*nV`l#4IRog5tdJR1&b=G!qqjy!nIX<64mWTYgTb#QP#q&(S_krql&YN$Br2@vM6iR zxT50X@VKmnBZ|VsCx;h}9zCw$q=L~|S+#TzJFjwa`<0&pn8=r=TX&2e(|??Gpv3td z``~mwqt?7R&bQrf6}HU2^zkp4WhkFDG@J@X!G=tDDWCIbH|J}9alOai4KTli`KIWx z>bn8vp|D;8^G;a5fb|qQ=AE7Cw*)C+ATiRtJ3Vyyuld@o&ls4iz8fISn|@@#gQ*zEHZ&GPJl3D6_-20b>OD)SU#CyKSa$t0nz!sf~J6^!EZ zw|TMsth~T?1H}1UyXKejFFw~peK$y_?*@&=cJpqYJDwi79QF%*FV>+MqgjHUxEDM_ zkI)r(;n%(+|xLb9HxhnPD{JS zc4qH!yS((+NSWj5(Ho;%DSJ*D>u~|KBWQ1@)3aN%;^c^%@jda%TlZm~M9v6qEpM13 zwZYHI$VgwKQXpHFJNL8DuR=cy`$5qE!n#QGx6r@Bx<|bnwqIVy#Xmx#`dO-H;b!yE zIkG-O!n_&M&zkMhFVYL~ct(8yJg5%>GhOgS#yk2|soT$jJe#q-xA(I|Z_s1oEa_*7 zohW(O`dO63{pPdL?`kG8vtLZ9=w~55rddu-aO-CsW}IyB-TZR1aXlC7QO$Mesa)5w zM^aBNp<2%lo60fxBlHG6M#aBf{W1j@^3o&vS@HF_7x%M7Z_p!D1^s&Wv(z_)a#|m{ zf^PJw7=Ag$`9d1vDpmcB-_Kgn1?`y*!_QuNM85cXC?NPPX&+qB!3@8*}69^n^W>!%bp`@E#hcbgZrN2I_Xp*QF;`aPvb=vOhb zAlEQ%(dHpJp7|8NOJw~N`n_w++NPO!cs@U5Uq3b0h@|t~EU#z#%zET|UtK>1y+Mz8 zQcpv_N|LF+ehU5N_cmVW^c&dag)vM@lIO#>-!fdHCz6lpGWP>-OEfEoms( ziNh@(2|Cw4>FcLPE~_68YzW=fPvKp>ko!gNbfWJHGVXbuGAGi$#PT@lPtEmHYFBie z^;5i6GNbb$$*iA>C)a)9oxgs{Uq7|0*H7_r2Fb0TGV3F5cNd_9th{yIsG_)_T-ACl@-;cHKpZkSqc}cKVv2E*s`T-tegwe_^dkLXDz~~R6H

q@an!Ssp+uO@$35$k}ko1Y_TJ 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua index c0894224c..d040c8666 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pressureplates/init.lua @@ -201,4 +201,15 @@ mesecon.register_pressure_plate( { player = true, mob = true }, 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.")) - +mesecon.register_pressure_plate( + "mesecons_pressureplates:pressure_plate_gold", + S("Light-Weighted Pressure Plate"), + {"default_gold_block.png"}, + {"default_gold_block.png"}, + "default_gold_block.png", + nil, + {{"mcl_core:gold_ingot", "mcl_core:gold_ingot"}}, + mcl_sounds.node_sound_metal_defaults(), + {pickaxey=1}, + { player = true, mob = true }, + S("A light-weighted 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/MAPGEN/mcl_structures/ruined_portal.lua b/mods/MAPGEN/mcl_structures/ruined_portal.lua index b190921fa..18e8fb9f6 100644 --- a/mods/MAPGEN/mcl_structures/ruined_portal.lua +++ b/mods/MAPGEN/mcl_structures/ruined_portal.lua @@ -4,10 +4,15 @@ local modpath = minetest.get_modpath(modname) local chance_per_chunk = 400 local noise_multiplier = 2.5 local random_offset = 9159 -local scanning_ratio = 0.01 -local struct_threshold = 390 +local scanning_ratio = 0.001 +local struct_threshold = 396 local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level +local minetest_find_nodes_in_area = minetest.find_nodes_in_area +local minetest_swap_node = minetest.swap_node +local math_round = math.round +local math_abs = math.abs + local rotation_to_orientation = { ["0"] = 1, @@ -59,7 +64,7 @@ local function draw_frame(frame_pos, frame_width, frame_height, orientation, pr, local function set_ruined_node(pos, node) if pr:next(1, 5) == 4 then return end - minetest.set_node(pos, node) + minetest_swap_node(pos, node) end local function get_random_stone_material() @@ -88,7 +93,7 @@ local function draw_frame(frame_pos, frame_width, frame_height, orientation, pr, end local function set_frame_stone_material(pos) - minetest.swap_node(pos, get_random_stone_material()) + minetest_swap_node(pos, get_random_stone_material()) end local function set_ruined_frame_stone_material(pos) @@ -108,23 +113,23 @@ local function draw_frame(frame_pos, frame_width, frame_height, orientation, pr, -- it's about the portal frame itself, what it will consist of local frame_nodes = 2 * (frame_height + frame_width) - 4 - local obsidian_nodes = pr:next(math.round(frame_nodes * 0.5), math.round(frame_nodes * 0.73)) - local crying_obsidian_nodes = pr:next(math.round(obsidian_nodes * 0.09), math.round(obsidian_nodes * 0.5)) + local obsidian_nodes = pr:next(math_round(frame_nodes * 0.5), math_round(frame_nodes * 0.73)) + local crying_obsidian_nodes = pr:next(math_round(obsidian_nodes * 0.09), math_round(obsidian_nodes * 0.5)) local air_nodes = frame_nodes - obsidian_nodes local function set_frame_node(pos) -- local node_choice = pr:next(1, air_nodes + obsidian_nodes) - local node_choice = math.round(mcl_structures_get_perlin_noise_level(pos) * (air_nodes + obsidian_nodes)) + local node_choice = math_round(mcl_structures_get_perlin_noise_level(pos) * (air_nodes + obsidian_nodes)) if node_choice > obsidian_nodes and air_nodes > 0 then air_nodes = air_nodes - 1 return end obsidian_nodes = obsidian_nodes - 1 if node_choice >= crying_obsidian_nodes then - minetest.swap_node(pos, {name = "mcl_core:obsidian"}) + minetest_swap_node(pos, {name = "mcl_core:obsidian"}) return 1 end - minetest.swap_node(pos, {name = "mcl_core:crying_obsidian"}) + minetest_swap_node(pos, {name = "mcl_core:crying_obsidian"}) crying_obsidian_nodes = crying_obsidian_nodes - 1 return 1 end @@ -136,7 +141,7 @@ local function draw_frame(frame_pos, frame_width, frame_height, orientation, pr, local is_top_hole = is_top and frame_width > 5 and ((pos2.x == x1 + slide_x * 2 and pos2.z == z1 + slide_z * 2) or (pos2.x == last_x - slide_x * 2 and pos2.z == last_z - slide_z * 2)) if is_top_hole then if pr:next(1, 7) > 1 then - minetest.swap_node(pos2, {name = "xpanes:bar_flat", param2 = orientation}) + minetest_swap_node(pos2, {name = "xpanes:bar_flat", param2 = orientation}) end else set_frame_stone_material(pos2) @@ -147,18 +152,18 @@ local function draw_frame(frame_pos, frame_width, frame_height, orientation, pr, local pos = def.pos_outer1 local is_decor_here = not is_top and pos.y % 3 == 2 if is_decor_here then - minetest.swap_node(pos, {name = "mcl_core:stonebrickcarved"}) + minetest_swap_node(pos, {name = "mcl_core:stonebrickcarved"}) elseif is_chain then if not is_top and not is_obsidian then - minetest.swap_node(pos, {name = "xpanes:bar"}) + minetest_swap_node(pos, {name = "xpanes:bar"}) else - minetest.swap_node(pos, {name = "xpanes:bar_flat", param2 = orientation}) + minetest_swap_node(pos, {name = "xpanes:bar_flat", param2 = orientation}) end else if pr:next(1, 5) == 3 then - minetest.swap_node(pos, {name = "mcl_core:stonebrickcracked"}) + minetest_swap_node(pos, {name = "mcl_core:stonebrickcracked"}) else - minetest.swap_node(pos, {name = "mcl_core:stonebrick"}) + minetest_swap_node(pos, {name = "mcl_core:stonebrick"}) end end end @@ -207,7 +212,7 @@ local function draw_frame(frame_pos, frame_width, frame_height, orientation, pr, end for y = y1, last_y do - local begin_or_end = y == y1 or y == lasy_y + local begin_or_end = y == y1 or y == last_y local is_obsidian_left = begin_or_end and is_obsidian_top_left or set_frame_node({x = x1 , y = y, z = z1 }) local is_obsidian_right = begin_or_end and is_obsidian_top_right or set_frame_node({x = last_x, y = y, z = last_z}) set_outer_frame_node({ @@ -239,7 +244,7 @@ local function draw_frame(frame_pos, frame_width, frame_height, orientation, pr, for x = x1 + slide_x, last_x - slide_x do for z = z1 + slide_z, last_z - slide_z do set_frame_node({x = x, y = y1, z = z}) - local is_obsitian_top = set_frame_node({x = x, y = last_y, z = z}) + local is_obsidian_top = set_frame_node({x = x, y = last_y, z = z}) set_outer_frame_node({ pos_outer1 = {x = x, y = last_y + 1, z = z}, pos_outer2 = {x = x, y = last_y + 2, z = z}, @@ -288,11 +293,11 @@ local function draw_trash(pos, width, height, lift, orientation, pr) local opacity_layers = math.floor((y2 - y1) / 2) local opacity_layer = -opacity_layers for y = y1, y2 do - local inverted_opacity_0_5 = math.round(math.abs(opacity_layer) / opacity_layers * 5) + local inverted_opacity_0_5 = math_round(math_abs(opacity_layer) / opacity_layers * 5) for x = x1 + pr:next(0, 2), x2 - pr:next(0, 2) do for z = z1 + pr:next(0, 2), z2 - pr:next(0, 2) do if inverted_opacity_0_5 == 0 or (x % inverted_opacity_0_5 ~= pr:next(0, 1) and z % inverted_opacity_0_5 ~= pr:next(0, 1)) then - minetest.swap_node({x = x, y = y, z = z}, {name = node_garbage[pr:next(1, #node_garbage)]}) + minetest_swap_node({x = x, y = y, z = z}, {name = node_garbage[pr:next(1, #node_garbage)]}) end end end @@ -309,36 +314,186 @@ local stair_replacement_list = { } local stair_offset_from_bottom = 3 -local function draw_stairs(pos, width, height, lift, orientation, pr, is_chain) +local stair_names = { + "mcl_stairs:stair_stonebrickcracked", + "mcl_stairs:stair_stonebrickmossy", + "mcl_stairs:stair_stone_rough", + "mcl_stairs:stair_stone_rough", + "mcl_stairs:stair_stone_rough", + "mcl_stairs:stair_stone_rough", + "mcl_stairs:stair_stone_rough", + "mcl_stairs:stair_stone_rough", + "mcl_stairs:stair_stone_rough", + "mcl_stairs:stair_stonebrick", + "mcl_stairs:stair_stonebrick", + "mcl_stairs:stair_stonebrick", +} +local stair_outer_names = { + "mcl_stairs:stair_stonebrickcracked_outer", + "mcl_stairs:stair_stonebrickmossy_outer", + "mcl_stairs:stair_stone_rough_outer", + "mcl_stairs:stair_stonebrick_outer", +} + +local stair_content = { + {name = "mcl_core:lava_source"}, + {name = "mcl_core:stone"}, + {name = "mcl_core:stone"}, + {name = "mcl_core:stone"}, + {name = "mcl_core:stone"}, + {name = "mcl_core:stone"}, + {name = "mcl_core:stonebrick"}, + {name = "mcl_nether:magma"}, + {name = "mcl_nether:netherrack"}, + {name = "mcl_nether:netherrack"}, +} + +local slabs = { + {name = "mcl_stairs:slab_stone"}, + {name = "mcl_stairs:slab_stone"}, + {name = "mcl_stairs:slab_stone"}, + {name = "mcl_stairs:slab_stone"}, + {name = "mcl_stairs:slab_stone"}, + {name = "mcl_stairs:slab_stonebrick"}, + {name = "mcl_stairs:slab_stonebrick"}, + {name = "mcl_stairs:slab_stonebrickcracked"}, + {name = "mcl_stairs:slab_stonebrickmossy"}, +} + +local stones = { + {name = "mcl_core:stone"}, + {name = "mcl_core:stone"}, + {name = "mcl_core:stone"}, + {name = "mcl_core:cobble"}, + {name = "mcl_core:mossycobble"}, +} + +local stair_selector = { + [-1] = { + [-1] = { + names = stair_outer_names, + param2 = 1, + }, + [0] = { + names = stair_names, + param2 = 1, + }, + [1] = { + names = stair_outer_names, + param2 = 2, + }, + }, + [0] = { + [-1] = { + names = stair_names, + param2 = 0, + }, + [0] = { + names = stair_content, + }, + [1] = { + names = stair_names, + param2 = 2, + }, + }, + [1] = { + [-1] = { + names = stair_outer_names, + param2 = 0, + }, + [0] = { + names = stair_names, + param2 = 3, + }, + [1] = { + names = stair_outer_names, + param2 = 3, + }, + }, +} + +local function draw_stairs(pos, width, height, lift, orientation, pr, is_chain, param2) + + local function set_ruined_node(pos, node) + if pr:next(1, 7) < 3 then return end + minetest_swap_node(pos, node) + return true + end + + local param2 = param2 + local mirror = param2 == 1 or param2 == 2 + if mirror then + param2 = (param2 + 2) % 4 + end + + local chain_offset = is_chain and 1 or 0 + local lift = lift + stair_offset_from_bottom local slide_x = (1 - orientation) local slide_z = orientation - local width = width + (is_chain and 2 or 0) - local x1 = pos.x - lift - (is_chain and 1 or 0) - 1 - local x2 = pos.x + lift + width * slide_x + 1 - local z1 = pos.z - lift - (is_chain and 1 or 0) - 1 - local z2 = pos.z + lift + width * slide_z + 1 + local width = width + 2 + local x1 = pos.x - (chain_offset + 1 ) * slide_x - 1 + local x2 = pos.x + (chain_offset + width) * slide_x + 1 + local z1 = pos.z - (chain_offset + 1 ) * slide_z - 1 + local z2 = pos.z + (chain_offset + width) * slide_z + 1 local y1 = pos.y - stair_offset_from_bottom local y2 = pos.y + lift - stair_offset_from_bottom - local current_radius = lift - for y = y1, y2 do + local stair_layer = true + local y = y2 + local place_slabs = true + local x_key, y_key + local need_to_place_chest = true + local chest_pos + while y >= y1 do for x = x1, x2 do + x_key = (x == x1) and -1 or (x == x2) and 1 or 0 for z = z1, z2 do ---local stair1 = "mcl_stairs:stair_stonebrickcracked" ---local stair2 = "mcl_stairs:stair_stonebrickmossy" ---local stair3 = "mcl_stairs:stair_stone_rough" ---local stair4 = "mcl_stairs:stair_stonebrick" local pos = {x = x, y = y, z = z} - if #minetest.find_nodes_in_area(pos, pos, stair_replacement_list, false) > 0 then - minetest.swap_node(pos, {name = "mcl_stairs:stair_stone_rough"}) + if #minetest_find_nodes_in_area(pos, pos, stair_replacement_list, false) > 0 then + z_key = (z == z1) and -1 or (z == z2) and 1 or 0 + local stair_coverage = (x_key ~= 0) or (z_key ~= 0) + if stair_coverage then + if stair_layer then + local stair = stair_selector[x_key][z_key] + local names = stair.names + set_ruined_node(pos, {name = names[pr:next(1, #names)], param2 = stair.param2}) + elseif place_slabs then + set_ruined_node(pos, slabs[pr:next(1, #slabs)]) + else + local placed = set_ruined_node(pos, stones[pr:next(1, #stones)]) + if need_to_place_chest and placed then + chest_pos = {x = pos.x, y = pos.y + 1, z = pos.z} + minetest_swap_node(chest_pos, {name = "mcl_chests:chest_small"}) + need_to_place_chest = false + end + end + elseif not stair_layer then + set_ruined_node(pos, stair_content[pr:next(1, #stair_content)]) + end end end end - x1 = x1 + 1 - x2 = x2 - 1 - z1 = z1 + 1 - z2 = z2 - 1 + x1 = x1 - 1 + x2 = x2 + 1 + z1 = z1 - 1 + z2 = z2 + 1 + if (stair_layer or place_slabs) then + y = y - 1 + end + stair_layer = false + place_slabs = not place_slabs end + return chest_pos +end + +local function enchant(stack, pr) + -- 75%-100% damage + mcl_enchanting.enchant_randomly(stack, 30, true, false, false, pr) +end + +local function enchant_armor(stack, pr) + -- itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) + mcl_enchanting.enchant_randomly(stack, 30, false, false, false, pr) end local function place(pos, rotation, pr) @@ -352,18 +507,58 @@ local function place(pos, rotation, pr) assert(param2) local is_chain = pr:next(1, 3) > 1 draw_trash(pos, width, height, lift, orientation, pr) - draw_stairs(pos, width, height, lift, orientation, pr, is_chain) + local chest_pos = draw_stairs(pos, width, height, lift, orientation, pr, is_chain, param2) draw_frame({x = pos.x, y = pos.y + lift, z = pos.z}, width + 2, height + 2, orientation, pr, is_chain, rotation) + if not chest_pos then return end + + local lootitems = mcl_loot.get_loot( + { + stacks_min = 4, + stacks_max = 8, + items = { + {itemstring = "mcl_core:iron_nugget", weight = 40, amount_min = 9, amount_max = 18}, + {itemstring = "mcl_core:flint", weight = 40, amount_min = 9, amount_max = 18}, + {itemstring = "mcl_core:obsidian", weight = 40, amount_min = 1, amount_max = 2}, + {itemstring = "mcl_fire:fire_charge", weight = 40, amount_min = 1, amount_max = 1}, + {itemstring = "mcl_fire:flint_and_steel", weight = 40, amount_min = 1, amount_max = 1}, + {itemstring = "mcl_core:gold_nugget", weight = 15, amount_min = 4, amount_max = 24}, + {itemstring = "mcl_core:apple_gold", weight = 15}, + {itemstring = "mcl_tools:axe_gold", weight = 15, func = enchant}, + {itemstring = "mcl_farming:hoe_gold", weight = 15, func = enchant}, + {itemstring = "mcl_tools:pick_gold", weight = 15, func = enchant}, + {itemstring = "mcl_tools:shovel_gold", weight = 15, func = enchant}, + {itemstring = "mcl_tools:sword_gold", weight = 15, func = enchant}, + {itemstring = "mcl_armor:helmet_gold", weight = 15, func = enchant_armor}, + {itemstring = "mcl_armor:chestplate_gold", weight = 15, func = enchant_armor}, + {itemstring = "mcl_armor:leggings_gold", weight = 15, func = enchant_armor}, + {itemstring = "mcl_armor:boots_gold", weight = 15, func = enchant_armor}, + {itemstring = "mcl_potions:speckled_melon", weight = 5, amount_min = 4, amount_max = 12}, + {itemstring = "mcl_farming:carrot_item_gold", weight = 5, amount_min = 4, amount_max = 12}, + {itemstring = "mcl_core:gold_ingot", weight = 5, amount_min = 2, amount_max = 8}, + {itemstring = "mcl_clock:clock", weight = 5}, + {itemstring = "mesecons_pressureplates:pressure_plate_gold_off", weight = 5}, + {itemstring = "mobs_mc:gold_horse_armor", weight = 5}, + {itemstring = "mcl_core:goldblock", weight = 1, amount_min = 1, amount_max = 2}, + {itemstring = "mcl_bells:bell", weight = 1}, + {itemstring = "mcl_core:apple_gold_enchanted", weight = 1}, + } + }, + pr + ) + mcl_structures.init_node_construct(chest_pos) + local meta = minetest.get_meta(chest_pos) + local inv = meta:get_inventory() + mcl_loot.fill_inventory(inv, "main", lootitems, pr) end local function get_place_rank(pos) local x, y, z = pos.x, pos.y, pos.z local p1 = {x = x , y = y, z = z } local p2 = {x = x + 7, y = y, z = z + 7} - local air_pos_list_surface = #minetest.find_nodes_in_area(p1, p2, "air", false) + local air_pos_list_surface = #minetest_find_nodes_in_area(p1, p2, "air", false) p1.y = p1.y - 1 p2.y = p2.y - 1 - local opaque_pos_list_surface = #minetest.find_nodes_in_area(p1, p2, "group:opaque", false) + local opaque_pos_list_surface = #minetest_find_nodes_in_area(p1, p2, "group:opaque", false) return air_pos_list_surface + 3 * opaque_pos_list_surface end @@ -374,7 +569,7 @@ mcl_structures.register_structure({ flags = "all_floors", fill_ratio = scanning_ratio, height = 1, - place_on = {"mcl_core:sand", "mcl_core:dirt_with_grass", "mcl_core:water_source"}, + place_on = {"mcl_core:sand", "mcl_core:dirt_with_grass", "mcl_core:water_source", "mcl_core:dirt_with_grass_snow"}, }, on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list) if maxp.y < mcl_mapgen.overworld.min then return end From bbecd6239b7c38bf6b4b0e38ccbde17fdb25ddf9 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 24 Feb 2022 05:45:46 +0400 Subject: [PATCH 195/521] Fix bottom part of ruined portals --- mods/MAPGEN/mcl_structures/ruined_portal.lua | 73 +++++++++++++++----- 1 file changed, 55 insertions(+), 18 deletions(-) diff --git a/mods/MAPGEN/mcl_structures/ruined_portal.lua b/mods/MAPGEN/mcl_structures/ruined_portal.lua index 18e8fb9f6..196a20d95 100644 --- a/mods/MAPGEN/mcl_structures/ruined_portal.lua +++ b/mods/MAPGEN/mcl_structures/ruined_portal.lua @@ -5,7 +5,7 @@ local chance_per_chunk = 400 local noise_multiplier = 2.5 local random_offset = 9159 local scanning_ratio = 0.001 -local struct_threshold = 396 +local struct_threshold = 1 local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level local minetest_find_nodes_in_area = minetest.find_nodes_in_area @@ -313,7 +313,6 @@ local stair_replacement_list = { "group:deco_block", } -local stair_offset_from_bottom = 3 local stair_names = { "mcl_stairs:stair_stonebrickcracked", "mcl_stairs:stair_stonebrickmossy", @@ -348,6 +347,15 @@ local stair_content = { {name = "mcl_nether:netherrack"}, } +local stair_content_bottom = { + {name = "mcl_nether:magma"}, + {name = "mcl_nether:magma"}, + {name = "mcl_nether:netherrack"}, + {name = "mcl_nether:netherrack"}, + {name = "mcl_nether:netherrack"}, + {name = "mcl_nether:netherrack"}, +} + local slabs = { {name = "mcl_stairs:slab_stone"}, {name = "mcl_stairs:slab_stone"}, @@ -412,8 +420,13 @@ local stair_selector = { }, } +local stair_offset_from_bottom = 2 + local function draw_stairs(pos, width, height, lift, orientation, pr, is_chain, param2) + local current_stair_content = stair_content + local current_stones = stones + local function set_ruined_node(pos, node) if pr:next(1, 7) < 3 then return end minetest_swap_node(pos, node) @@ -441,10 +454,12 @@ local function draw_stairs(pos, width, height, lift, orientation, pr, is_chain, local stair_layer = true local y = y2 local place_slabs = true - local x_key, y_key + local x_key, z_key local need_to_place_chest = true local chest_pos - while y >= y1 do + local bad_nodes_ratio = 0 + while (y >= y1) or (bad_nodes_ratio > 0.07) do + local good_nodes_counter = 0 for x = x1, x2 do x_key = (x == x1) and -1 or (x == x2) and 1 or 0 for z = z1, z2 do @@ -460,7 +475,7 @@ local function draw_stairs(pos, width, height, lift, orientation, pr, is_chain, elseif place_slabs then set_ruined_node(pos, slabs[pr:next(1, #slabs)]) else - local placed = set_ruined_node(pos, stones[pr:next(1, #stones)]) + local placed = set_ruined_node(pos, current_stones[pr:next(1, #current_stones)]) if need_to_place_chest and placed then chest_pos = {x = pos.x, y = pos.y + 1, z = pos.z} minetest_swap_node(chest_pos, {name = "mcl_chests:chest_small"}) @@ -468,20 +483,42 @@ local function draw_stairs(pos, width, height, lift, orientation, pr, is_chain, end end elseif not stair_layer then - set_ruined_node(pos, stair_content[pr:next(1, #stair_content)]) + set_ruined_node(pos, current_stair_content[pr:next(1, #current_stair_content)]) end + else + good_nodes_counter = good_nodes_counter + 1 end end end - x1 = x1 - 1 - x2 = x2 + 1 - z1 = z1 - 1 - z2 = z2 + 1 - if (stair_layer or place_slabs) then + bad_nodes_ratio = 1 - good_nodes_counter / ((x2 - x1 + 1) * (z2 - z1 + 1)) + if y >= y1 then + x1 = x1 - 1 + x2 = x2 + 1 + z1 = z1 - 1 + z2 = z2 + 1 + if (stair_layer or place_slabs) then + y = y - 1 + if y <= y1 then + current_stair_content = stair_content_bottom + current_stones = stair_content_bottom + end + end + place_slabs = not place_slabs + stair_layer = false + else + place_slabs = false y = y - 1 + local dx1 = pr:next(0, 10) + if dx1 < 3 then x1 = x1 + dx1 end + local dx2 = pr:next(0, 10) + if dx2 < 3 then x2 = x2 - dx1 end + if x1 >= x2 then return chest_pos end + local dz1 = pr:next(0, 10) + if dz1 < 3 then z1 = z1 + dz1 end + local dz2 = pr:next(0, 10) + if dz2 < 3 then z2 = z2 - dz1 end + if z1 >= z2 then return chest_pos end end - stair_layer = false - place_slabs = not place_slabs end return chest_pos end @@ -536,11 +573,11 @@ local function place(pos, rotation, pr) {itemstring = "mcl_farming:carrot_item_gold", weight = 5, amount_min = 4, amount_max = 12}, {itemstring = "mcl_core:gold_ingot", weight = 5, amount_min = 2, amount_max = 8}, {itemstring = "mcl_clock:clock", weight = 5}, - {itemstring = "mesecons_pressureplates:pressure_plate_gold_off", weight = 5}, - {itemstring = "mobs_mc:gold_horse_armor", weight = 5}, - {itemstring = "mcl_core:goldblock", weight = 1, amount_min = 1, amount_max = 2}, - {itemstring = "mcl_bells:bell", weight = 1}, - {itemstring = "mcl_core:apple_gold_enchanted", weight = 1}, + {itemstring = "mesecons_pressureplates:pressure_plate_gold_off", weight = 5}, + {itemstring = "mobs_mc:gold_horse_armor", weight = 5}, + {itemstring = "mcl_core:goldblock", weight = 1, amount_min = 1, amount_max = 2}, + {itemstring = "mcl_bells:bell", weight = 1}, + {itemstring = "mcl_core:apple_gold_enchanted", weight = 1}, } }, pr From 989d46cc5bec3452b287ee3f1d501ccf68d974fe Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 24 Feb 2022 05:46:22 +0400 Subject: [PATCH 196/521] Fix ruined portal spawn probability --- mods/MAPGEN/mcl_structures/ruined_portal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MAPGEN/mcl_structures/ruined_portal.lua b/mods/MAPGEN/mcl_structures/ruined_portal.lua index 196a20d95..40484f9c9 100644 --- a/mods/MAPGEN/mcl_structures/ruined_portal.lua +++ b/mods/MAPGEN/mcl_structures/ruined_portal.lua @@ -5,7 +5,7 @@ local chance_per_chunk = 400 local noise_multiplier = 2.5 local random_offset = 9159 local scanning_ratio = 0.001 -local struct_threshold = 1 +local struct_threshold = 396 local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level local minetest_find_nodes_in_area = minetest.find_nodes_in_area From 4ab521ddc8de55c85b8f28304f48e9065bde6212 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 24 Feb 2022 06:00:47 +0400 Subject: [PATCH 197/521] #198 Fix a crash, step 28 --- mods/ITEMS/mcl_enchanting/engine.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 1b672aea4..d6407d0bc 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -560,7 +560,7 @@ function mcl_enchanting.handle_formspec_fields(player, formname, fields) return end local player_level = mcl_experience.get_level(player) - if player_level < slot.level_requirement then + if not player_level or (player_level < slot.level_requirement) then return end mcl_experience.set_level(player, player_level - button_pressed) From 72c25d6e923ed183229b95ce2975205a324105f0 Mon Sep 17 00:00:00 2001 From: debiankaios Date: Thu, 24 Feb 2022 08:33:52 +0100 Subject: [PATCH 198/521] Moss and Mosscarpets are there --- mods/ITEMS/mcl_core/crafting.lua | 8 +++ mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 4 ++ mods/ITEMS/mcl_core/nodes_base.lua | 48 +++++++++++++++++- .../mcl_core/textures/mcl_core_moss_block.png | Bin 0 -> 6556 bytes 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 mods/ITEMS/mcl_core/textures/mcl_core_moss_block.png diff --git a/mods/ITEMS/mcl_core/crafting.lua b/mods/ITEMS/mcl_core/crafting.lua index 3ff2b142c..252282602 100644 --- a/mods/ITEMS/mcl_core/crafting.lua +++ b/mods/ITEMS/mcl_core/crafting.lua @@ -388,6 +388,14 @@ minetest.register_craft({ -- -- Crafting (tool repair) -- + +minetest.register_craft({ + output = "mcl_core:moss_carpet 3", + recipe = { + {"mcl_core:moss", "mcl_core:moss"}, + } +}) + minetest.register_craft({ type = "toolrepair", additional_wear = -mcl_core.repair, diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index b064cebbe..d050da26b 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -12,6 +12,7 @@ A decorative and mostly transparent block.=Ein Dekoblock, der größtenteils tra 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 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 moss block is a natural block that can be spread to some other blocks by using bone meal.=Ein Moosblock ist ein natürlicher Block, der mit Hilfe von Knochenmehl auf andere Blöcke übertragen werden kann. 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 @@ -142,6 +143,9 @@ 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=Moos +Moss Carpet=Moosteppich +Moss Carpets are a thin decorative variant of the moss block.=Moosteppiche sind eine dünne, dekorative Variante des Moosblock. Mossy Cobblestone=Moosiges Kopfsteinpflaster Mossy Stone Bricks=Moosige Steinziegel Mycelium=Myzel diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index ebae759ac..23ae0b2b8 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -465,6 +465,19 @@ minetest.register_node("mcl_core:dirt", { _mcl_hardness = 0.5, }) +minetest.register_node("mcl_core:moss", { + description = S("Moss"), + _doc_items_longdesc = S("A moss block is a natural block that can be spread to some other blocks by using bone meal."),--TODO: Other desciption? + _doc_items_hidden = false, + tiles = {"mcl_core_moss_block.png"}, + is_ground_content = true, + stack_max = 64, + groups = {handy=1, hoey=1}, + --sounds = TODO: add sound + _mcl_blast_resistance = 0.1, + _mcl_hardness = 0.1, +}) + minetest.register_node("mcl_core:coarse_dirt", { 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."), @@ -1075,10 +1088,43 @@ minetest.register_node("mcl_core:snowblock", { _mcl_silk_touch_drop = true, }) +minetest.register_node("mcl_core:moss", { + description = S("Moss"), + _doc_items_longdesc = S("A moss block is a natural block that can be spread to some other blocks by using bone meal."),--TODO: Other desciption? + _doc_items_hidden = false, + tiles = {"mcl_core_moss_block.png"}, + is_ground_content = true, + stack_max = 64, + groups = {handy=1, hoey=1}, + --sounds = TODO: add sound + _mcl_blast_resistance = 0.1, + _mcl_hardness = 0.1, +}) + +minetest.register_node("mcl_core:moss_carpet", { + description = S("Moss Carpet"), + _doc_items_longdesc = S("Moss Carpets are a thin decorative variant of the moss block."),--TODO: Other desciption? + _doc_items_hidden = false, + tiles = {"mcl_core_moss_block.png"}, + is_ground_content = true, + paramtype = "light", + stack_max = 64, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, + }, + }, + groups = {handy=1, hoey=1}, + --sounds = TODO: add sound + _mcl_blast_resistance = 0.1, + _mcl_hardness = 0.1, +}) + -- Add entry aliases for the Help if minetest.get_modpath("doc") then doc.add_entry_alias("nodes", "mcl_core:stone_with_redstone", "nodes", "mcl_core:stone_with_redstone_lit") doc.add_entry_alias("nodes", "mcl_core:water_source", "nodes", "mcl_core:water_flowing") doc.add_entry_alias("nodes", "mcl_core:lava_source", "nodes", "mcl_core:lava_flowing") end - diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_moss_block.png b/mods/ITEMS/mcl_core/textures/mcl_core_moss_block.png new file mode 100644 index 0000000000000000000000000000000000000000..1fed6df9e196a93e4dc836059f8a3bd59c1dda7c GIT binary patch literal 6556 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 fucv=GZ*bwyapuHw=tne?Sd_0 Date: Fri, 25 Feb 2022 17:37:26 +0000 Subject: [PATCH 199/521] Upload files to 'mods/ITEMS/mcl_blackstone/models' --- .../models/mcl_blackstone_lantern_ceiling.obj | 104 ++++++++++++++++++ .../models/mcl_blackstone_lantern_floor.obj | 104 ++++++++++++++++++ 2 files changed, 208 insertions(+) create mode 100644 mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj create mode 100644 mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj diff --git a/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj b/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj new file mode 100644 index 000000000..3536a6bf2 --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj @@ -0,0 +1,104 @@ +# Blender v3.0.1 OBJ File: 'lantern.blend' +# www.blender.org +o Lantern_Ceiling +v 0.187500 -0.000000 0.187500 +v 0.187500 0.437500 0.187500 +v 0.187500 0.000000 -0.187500 +v 0.187500 0.437500 -0.187500 +v -0.187500 -0.000000 0.187500 +v -0.187500 0.437500 0.187500 +v -0.187500 0.000000 -0.187500 +v -0.187500 0.437500 -0.187500 +v 0.125000 -0.125000 0.125000 +v 0.125000 -0.000000 0.125000 +v 0.125000 -0.125000 -0.125000 +v 0.125000 0.000000 -0.125000 +v -0.125000 -0.125000 0.125000 +v -0.125000 -0.000000 0.125000 +v -0.125000 -0.125000 -0.125000 +v -0.125000 0.000000 -0.125000 +v 0.066291 -0.500000 -0.066291 +v 0.066291 -0.125000 -0.066291 +v -0.066291 -0.500000 0.066291 +v -0.066291 -0.125000 0.066291 +v -0.066291 -0.500000 -0.066291 +v -0.066291 -0.125000 -0.066291 +v 0.066291 -0.500000 0.066291 +v 0.066291 -0.125000 0.066291 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.062500 0.125000 +vt 0.312500 0.125000 +vt 0.312500 0.375000 +vt 0.062500 0.375000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.687500 0.625000 +vt 0.687500 0.250000 +vt 0.875000 0.250000 +vt 0.875000 0.625000 +vt 0.687500 1.000000 +vt 0.687500 0.625000 +vt 0.875000 0.625000 +vt 0.875000 1.000000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/6/2 7/7/2 8/8/2 +f 8/9/3 7/10/3 5/11/3 6/12/3 +f 6/13/4 2/14/4 4/5/4 8/8/4 +f 2/15/5 1/16/5 3/17/5 4/18/5 +f 6/19/6 5/20/6 1/21/6 2/22/6 +f 9/23/1 13/24/1 15/25/1 11/26/1 +f 12/27/2 11/28/2 15/29/2 16/30/2 +f 16/31/3 15/32/3 13/33/3 14/34/3 +f 14/35/4 10/36/4 12/37/4 16/38/4 +f 10/39/5 9/40/5 11/41/5 12/42/5 +f 14/43/6 13/44/6 9/45/6 10/46/6 +f 17/47/7 18/48/7 20/49/7 19/50/7 +f 21/51/8 22/52/8 24/53/8 23/54/8 \ No newline at end of file diff --git a/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj b/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj new file mode 100644 index 000000000..a1ac2065b --- /dev/null +++ b/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj @@ -0,0 +1,104 @@ +# Blender v3.0.1 OBJ File: 'lantern.blend' +# www.blender.org +o Lantern_Floor +v 0.187500 -0.062500 -0.187500 +v 0.187500 -0.500000 -0.187500 +v 0.187500 -0.062500 0.187500 +v 0.187500 -0.500000 0.187500 +v -0.187500 -0.062500 -0.187500 +v -0.187500 -0.500000 -0.187500 +v -0.187500 -0.062500 0.187500 +v -0.187500 -0.500000 0.187500 +v 0.125000 0.062500 -0.125000 +v 0.125000 -0.062500 -0.125000 +v 0.125000 0.062500 0.125000 +v 0.125000 -0.062500 0.125000 +v -0.125000 0.062500 -0.125000 +v -0.125000 -0.062500 -0.125000 +v -0.125000 0.062500 0.125000 +v -0.125000 -0.062500 0.125000 +v 0.066291 0.187500 0.066291 +v 0.066291 0.062500 0.066291 +v -0.066291 0.187500 -0.066291 +v -0.066291 0.062500 -0.066291 +v -0.066291 0.187500 0.066291 +v -0.066291 0.062500 0.066291 +v 0.066291 0.187500 -0.066291 +v 0.066291 0.062500 -0.066291 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.000000 0.062500 +vt 0.375000 0.062500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.437500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt -0.000000 0.875000 +vt -0.000000 0.437500 +vt 0.062500 0.125000 +vt 0.312500 0.125000 +vt 0.312500 0.375000 +vt 0.062500 0.375000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.500000 0.770833 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.875000 +vt 0.687500 0.937500 +vt 0.687500 0.812500 +vt 0.875000 0.812500 +vt 0.875000 0.937500 +vt 0.687500 0.937500 +vt 0.687500 0.812500 +vt 0.875000 0.812500 +vt 0.875000 0.937500 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/6/2 7/7/2 8/8/2 +f 8/9/3 7/10/3 5/11/3 6/12/3 +f 6/13/4 2/14/4 4/5/4 8/8/4 +f 2/15/5 1/16/5 3/17/5 4/18/5 +f 6/19/6 5/20/6 1/21/6 2/22/6 +f 9/23/1 13/24/1 15/25/1 11/26/1 +f 12/27/2 11/28/2 15/29/2 16/30/2 +f 16/31/3 15/32/3 13/33/3 14/34/3 +f 14/35/4 10/36/4 12/37/4 16/38/4 +f 10/39/5 9/40/5 11/41/5 12/42/5 +f 14/43/6 13/44/6 9/45/6 10/46/6 +f 17/47/7 18/48/7 20/49/7 19/50/7 +f 21/51/8 22/52/8 24/53/8 23/54/8 \ No newline at end of file From df1af4c718e206e789483d267ed1dda87e61850a Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 25 Feb 2022 17:38:31 +0000 Subject: [PATCH 200/521] Upload files to 'mods/ITEMS/mcl_blackstone/textures' --- .../textures/mcl_blackstone_soul_lantern.png | Bin 0 -> 8642 bytes .../textures/mcl_blackstone_soul_lantern_inv.png | Bin 0 -> 5677 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern.png create mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern_inv.png diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..6e20058ea35d03bcdd7c225d2c372ee7be934f82 GIT binary patch literal 8642 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 literal 0 HcmV?d00001 From 9eacc00df38aa070879ebb57eb2e9cfff63321be Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 25 Feb 2022 17:39:00 +0000 Subject: [PATCH 201/521] Update 'mods/ITEMS/mcl_blackstone/mod.conf' --- mods/ITEMS/mcl_blackstone/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_blackstone/mod.conf b/mods/ITEMS/mcl_blackstone/mod.conf index 99c247024..cbd6a07b0 100644 --- a/mods/ITEMS/mcl_blackstone/mod.conf +++ b/mods/ITEMS/mcl_blackstone/mod.conf @@ -1,2 +1,2 @@ name = mcl_blackstone -depends = mcl_core,screwdriver,mcl_stairs,mclx_stairs,mcl_walls,mclx_fences,mcl_torches \ No newline at end of file +depends = mcl_core,screwdriver,mcl_stairs,mclx_stairs,mcl_walls,mclx_fences,mcl_torches, mcl_lanterns \ No newline at end of file From 43ff5377c39bda0eadadae037b692df317958294 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 25 Feb 2022 17:39:53 +0000 Subject: [PATCH 202/521] Update 'mods/ITEMS/mcl_blackstone/init.lua' --- mods/ITEMS/mcl_blackstone/init.lua | 139 +++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index b46a1add7..885c0f1c2 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -825,3 +825,142 @@ minetest.register_craft({ } }) +mcl_blackstone = {} + +function mcl_blackstone.register_lantern(name, def) + local itemstring_floor = "mcl_blackstone:"..name.."_floor" + local itemstring_ceiling = "mcl_blackstone:"..name.."_ceiling" + + local sounds = mcl_sounds.node_sound_metal_defaults() + + minetest.register_node(itemstring_floor, { + description = def.description, + _doc_items_longdesc = def.longdesc, + drawtype = "mesh", + mesh = "mcl_blackstone_lantern_floor.obj", + inventory_image = def.texture_inv, + wield_image = def.texture_inv, + tiles = { + { + name = def.texture, + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + } + }, + use_texture_alpha = "clip", + paramtype = "light", + paramtype2 = "wallmounted", + place_param2 = 1, + node_placement_prediction = "", + sunlight_propagates = true, + light_source = def.light_level, + groups = {pickaxey = 1, attached_node = 1, deco_block = 1, lantern = 1}, + selection_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, + {-0.125, -0.0625, -0.125, 0.125, 0.0625, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, + }, + }, + collision_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, + {-0.125, -0.0625, -0.125, 0.125, 0.0625, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, + }, + }, + sounds = sounds, + on_place = function(itemstack, placer, pointed_thing) + local new_stack = mcl_util.call_on_rightclick(itemstack, placer, pointed_thing) + if new_stack then + return new_stack + end + + local under = pointed_thing.under + local above = pointed_thing.above + + local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) + local fakestack = itemstack + if wdir == 0 then + fakestack:set_name(itemstring_ceiling) + elseif wdir == 1 then + fakestack:set_name(itemstring_floor) + end + + local success + itemstack, success = minetest.item_place(fakestack, placer, pointed_thing, wdir) + itemstack:set_name(itemstring_floor) + + if success then + minetest.sound_play(sounds.place, {pos = under, gain = 1}, true) + end + + return itemstack + end, + on_rotate = false, + _mcl_hardness = 3.5, + _mcl_blast_resistance = 3.5, + }) + + minetest.register_node(itemstring_ceiling, { + description = def.description, + _doc_items_create_entry = false, + drawtype = "mesh", + mesh = "mcl_blackstone_lantern_ceiling.obj", + tiles = { + { + name = def.texture, + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + } + }, + use_texture_alpha = "clip", + paramtype = "light", + paramtype2 = "wallmounted", + place_param2 = 0, + node_placement_prediction = "", + sunlight_propagates = true, + light_source = def.light_level, + groups = {pickaxey = 1, attached_node = 1, deco_block = 1, lantern = 1, not_in_creative_inventory = 1}, + drop = itemstring_floor, + selection_box = { + type = "fixed", + fixed = { + {-0.1875, 0, -0.1875, 0.1875, 0.4375, 0.1875}, + {-0.125, -0.125, -0.125, 0.125, 0, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, + }, + }, + collision_box = { + type = "fixed", + fixed = { + {-0.1875, 0, -0.1875, 0.1875, 0.4375, 0.1875}, + {-0.125, -0.125, -0.125, 0.125, 0, 0.125}, + {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, + }, + }, + sounds = sounds, + on_rotate = false, + _mcl_hardness = 3.5, + _mcl_blast_resistance = 3.5, + }) +end + +mcl_blackstone.register_lantern("soul_lantern", { + description = S("Soul Lantern"), + longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), + texture = "mcl_blackstone_soul_lantern.png", + texture_inv = "mcl_blackstone_soul_lantern_inv.png", + light_level = 10, +}) + +minetest.register_craft({ + output = "mcl_blackstone:soul_lantern_floor", + recipe = { + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_blackstone:soul_torch", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + }, +}) + +minetest.register_alias("mcl_blackstone:soul_lantern", "mcl_blackstone:soul_lantern_floor") \ No newline at end of file From 547d1cc350125177b5b13e9903f7eb859b1b2b90 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 25 Feb 2022 17:40:42 +0000 Subject: [PATCH 203/521] Delete 'mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png' --- .../textures/mcl_lanterns_soul_lantern.png | Bin 8642 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png deleted file mode 100644 index 6e20058ea35d03bcdd7c225d2c372ee7be934f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8642 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 Date: Fri, 25 Feb 2022 17:40:53 +0000 Subject: [PATCH 204/521] Delete 'mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern_inv.png' --- .../textures/mcl_lanterns_soul_lantern_inv.png | Bin 5677 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern_inv.png diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern_inv.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern_inv.png deleted file mode 100644 index 55624c7492d8bbab96bc7c7e44b566868f2335b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5677 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 From 89e5eb55d093976edb0448be265a9b8850001b90 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 25 Feb 2022 18:24:48 +0000 Subject: [PATCH 205/521] Update 'mods/ITEMS/mcl_lanterns/register.lua' --- mods/ITEMS/mcl_lanterns/register.lua | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua index 12ac9468f..46ead33ce 100644 --- a/mods/ITEMS/mcl_lanterns/register.lua +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -15,21 +15,4 @@ minetest.register_craft({ {"mcl_core:iron_nugget", "mcl_torches:torch" , "mcl_core:iron_nugget"}, {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, }, -}) - -mcl_lanterns.register_lantern("soul_lantern", { - description = S("Soul Lantern"), - longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), - texture = "mcl_lanterns_soul_lantern.png", - texture_inv = "mcl_lanterns_soul_lantern_inv.png", - light_level = 10, -}) - -minetest.register_craft({ - output = "mcl_lanterns:soul_lantern_floor", - recipe = { - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_blackstone:soul_torch", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, - }, }) \ No newline at end of file From 8122072925d14cdd273014df425de455ecb639a0 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 26 Feb 2022 03:28:16 +0000 Subject: [PATCH 206/521] Delete 'mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj' --- .../models/mcl_blackstone_lantern_floor.obj | 104 ------------------ 1 file changed, 104 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj diff --git a/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj b/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj deleted file mode 100644 index a1ac2065b..000000000 --- a/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_floor.obj +++ /dev/null @@ -1,104 +0,0 @@ -# Blender v3.0.1 OBJ File: 'lantern.blend' -# www.blender.org -o Lantern_Floor -v 0.187500 -0.062500 -0.187500 -v 0.187500 -0.500000 -0.187500 -v 0.187500 -0.062500 0.187500 -v 0.187500 -0.500000 0.187500 -v -0.187500 -0.062500 -0.187500 -v -0.187500 -0.500000 -0.187500 -v -0.187500 -0.062500 0.187500 -v -0.187500 -0.500000 0.187500 -v 0.125000 0.062500 -0.125000 -v 0.125000 -0.062500 -0.125000 -v 0.125000 0.062500 0.125000 -v 0.125000 -0.062500 0.125000 -v -0.125000 0.062500 -0.125000 -v -0.125000 -0.062500 -0.125000 -v -0.125000 0.062500 0.125000 -v -0.125000 -0.062500 0.125000 -v 0.066291 0.187500 0.066291 -v 0.066291 0.062500 0.066291 -v -0.066291 0.187500 -0.066291 -v -0.066291 0.062500 -0.066291 -v -0.066291 0.187500 0.066291 -v -0.066291 0.062500 0.066291 -v 0.066291 0.187500 -0.066291 -v 0.066291 0.062500 -0.066291 -vt 0.000000 0.062500 -vt 0.375000 0.062500 -vt 0.375000 0.437500 -vt 0.000000 0.437500 -vt 0.375000 0.437500 -vt 0.375000 0.875000 -vt -0.000000 0.875000 -vt -0.000000 0.437500 -vt 0.375000 0.437500 -vt 0.375000 0.875000 -vt -0.000000 0.875000 -vt 0.000000 0.437500 -vt 0.000000 0.062500 -vt 0.375000 0.062500 -vt 0.375000 0.437500 -vt 0.375000 0.875000 -vt -0.000000 0.875000 -vt 0.000000 0.437500 -vt 0.375000 0.437500 -vt 0.375000 0.875000 -vt -0.000000 0.875000 -vt -0.000000 0.437500 -vt 0.062500 0.125000 -vt 0.312500 0.125000 -vt 0.312500 0.375000 -vt 0.062500 0.375000 -vt 0.312500 0.875000 -vt 0.312500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 0.875000 -vt 0.312500 0.875000 -vt 0.312500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 0.875000 -vt 0.500000 0.770833 -vt 0.500000 0.770833 -vt 0.500000 0.770833 -vt 0.500000 0.770833 -vt 0.312500 0.875000 -vt 0.312500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 0.875000 -vt 0.312500 0.875000 -vt 0.312500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 0.875000 -vt 0.687500 0.937500 -vt 0.687500 0.812500 -vt 0.875000 0.812500 -vt 0.875000 0.937500 -vt 0.687500 0.937500 -vt 0.687500 0.812500 -vt 0.875000 0.812500 -vt 0.875000 0.937500 -vn 0.0000 1.0000 0.0000 -vn 0.0000 0.0000 1.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 -1.0000 0.0000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.7071 0.0000 -0.7071 -vn 0.7071 0.0000 0.7071 -s off -f 1/1/1 5/2/1 7/3/1 3/4/1 -f 4/5/2 3/6/2 7/7/2 8/8/2 -f 8/9/3 7/10/3 5/11/3 6/12/3 -f 6/13/4 2/14/4 4/5/4 8/8/4 -f 2/15/5 1/16/5 3/17/5 4/18/5 -f 6/19/6 5/20/6 1/21/6 2/22/6 -f 9/23/1 13/24/1 15/25/1 11/26/1 -f 12/27/2 11/28/2 15/29/2 16/30/2 -f 16/31/3 15/32/3 13/33/3 14/34/3 -f 14/35/4 10/36/4 12/37/4 16/38/4 -f 10/39/5 9/40/5 11/41/5 12/42/5 -f 14/43/6 13/44/6 9/45/6 10/46/6 -f 17/47/7 18/48/7 20/49/7 19/50/7 -f 21/51/8 22/52/8 24/53/8 23/54/8 \ No newline at end of file From 791a3233d55bce3a57e154f71af258bdb78d72c1 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 26 Feb 2022 03:28:34 +0000 Subject: [PATCH 207/521] Delete 'mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj' --- .../models/mcl_blackstone_lantern_ceiling.obj | 104 ------------------ 1 file changed, 104 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj diff --git a/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj b/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj deleted file mode 100644 index 3536a6bf2..000000000 --- a/mods/ITEMS/mcl_blackstone/models/mcl_blackstone_lantern_ceiling.obj +++ /dev/null @@ -1,104 +0,0 @@ -# Blender v3.0.1 OBJ File: 'lantern.blend' -# www.blender.org -o Lantern_Ceiling -v 0.187500 -0.000000 0.187500 -v 0.187500 0.437500 0.187500 -v 0.187500 0.000000 -0.187500 -v 0.187500 0.437500 -0.187500 -v -0.187500 -0.000000 0.187500 -v -0.187500 0.437500 0.187500 -v -0.187500 0.000000 -0.187500 -v -0.187500 0.437500 -0.187500 -v 0.125000 -0.125000 0.125000 -v 0.125000 -0.000000 0.125000 -v 0.125000 -0.125000 -0.125000 -v 0.125000 0.000000 -0.125000 -v -0.125000 -0.125000 0.125000 -v -0.125000 -0.000000 0.125000 -v -0.125000 -0.125000 -0.125000 -v -0.125000 0.000000 -0.125000 -v 0.066291 -0.500000 -0.066291 -v 0.066291 -0.125000 -0.066291 -v -0.066291 -0.500000 0.066291 -v -0.066291 -0.125000 0.066291 -v -0.066291 -0.500000 -0.066291 -v -0.066291 -0.125000 -0.066291 -v 0.066291 -0.500000 0.066291 -v 0.066291 -0.125000 0.066291 -vt 0.000000 0.062500 -vt 0.375000 0.062500 -vt 0.375000 0.437500 -vt 0.000000 0.437500 -vt 0.375000 0.437500 -vt 0.375000 0.875000 -vt -0.000000 0.875000 -vt -0.000000 0.437500 -vt 0.375000 0.437500 -vt 0.375000 0.875000 -vt -0.000000 0.875000 -vt 0.000000 0.437500 -vt 0.000000 0.062500 -vt 0.375000 0.062500 -vt 0.375000 0.437500 -vt 0.375000 0.875000 -vt -0.000000 0.875000 -vt 0.000000 0.437500 -vt 0.375000 0.437500 -vt 0.375000 0.875000 -vt -0.000000 0.875000 -vt -0.000000 0.437500 -vt 0.062500 0.125000 -vt 0.312500 0.125000 -vt 0.312500 0.375000 -vt 0.062500 0.375000 -vt 0.312500 0.875000 -vt 0.312500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 0.875000 -vt 0.312500 0.875000 -vt 0.312500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 0.875000 -vt 0.500000 0.770833 -vt 0.500000 0.770833 -vt 0.500000 0.770833 -vt 0.500000 0.770833 -vt 0.312500 0.875000 -vt 0.312500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 0.875000 -vt 0.312500 0.875000 -vt 0.312500 1.000000 -vt 0.062500 1.000000 -vt 0.062500 0.875000 -vt 0.687500 0.625000 -vt 0.687500 0.250000 -vt 0.875000 0.250000 -vt 0.875000 0.625000 -vt 0.687500 1.000000 -vt 0.687500 0.625000 -vt 0.875000 0.625000 -vt 0.875000 1.000000 -vn 0.0000 -1.0000 -0.0000 -vn 0.0000 0.0000 -1.0000 -vn -1.0000 -0.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 -0.0000 1.0000 -vn 0.7071 -0.0000 0.7071 -vn 0.7071 0.0000 -0.7071 -s off -f 1/1/1 5/2/1 7/3/1 3/4/1 -f 4/5/2 3/6/2 7/7/2 8/8/2 -f 8/9/3 7/10/3 5/11/3 6/12/3 -f 6/13/4 2/14/4 4/5/4 8/8/4 -f 2/15/5 1/16/5 3/17/5 4/18/5 -f 6/19/6 5/20/6 1/21/6 2/22/6 -f 9/23/1 13/24/1 15/25/1 11/26/1 -f 12/27/2 11/28/2 15/29/2 16/30/2 -f 16/31/3 15/32/3 13/33/3 14/34/3 -f 14/35/4 10/36/4 12/37/4 16/38/4 -f 10/39/5 9/40/5 11/41/5 12/42/5 -f 14/43/6 13/44/6 9/45/6 10/46/6 -f 17/47/7 18/48/7 20/49/7 19/50/7 -f 21/51/8 22/52/8 24/53/8 23/54/8 \ No newline at end of file From fcc559e0edb8bba5a3eed0c0f676685128219002 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 26 Feb 2022 03:29:18 +0000 Subject: [PATCH 208/521] Update 'mods/ITEMS/mcl_blackstone/mod.conf' --- mods/ITEMS/mcl_blackstone/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_blackstone/mod.conf b/mods/ITEMS/mcl_blackstone/mod.conf index cbd6a07b0..99c247024 100644 --- a/mods/ITEMS/mcl_blackstone/mod.conf +++ b/mods/ITEMS/mcl_blackstone/mod.conf @@ -1,2 +1,2 @@ name = mcl_blackstone -depends = mcl_core,screwdriver,mcl_stairs,mclx_stairs,mcl_walls,mclx_fences,mcl_torches, mcl_lanterns \ No newline at end of file +depends = mcl_core,screwdriver,mcl_stairs,mclx_stairs,mcl_walls,mclx_fences,mcl_torches \ No newline at end of file From 91bb45284e9f0d05d0ce1dbad7c35f9bc23c9969 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 26 Feb 2022 03:30:32 +0000 Subject: [PATCH 209/521] Update 'mods/ITEMS/mcl_blackstone/init.lua' --- mods/ITEMS/mcl_blackstone/init.lua | 142 +---------------------------- 1 file changed, 1 insertion(+), 141 deletions(-) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index 885c0f1c2..e1592d72c 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -823,144 +823,4 @@ minetest.register_craft({ { "mcl_nether:soul_sand" }, { "mcl_core:stick" }, } -}) - -mcl_blackstone = {} - -function mcl_blackstone.register_lantern(name, def) - local itemstring_floor = "mcl_blackstone:"..name.."_floor" - local itemstring_ceiling = "mcl_blackstone:"..name.."_ceiling" - - local sounds = mcl_sounds.node_sound_metal_defaults() - - minetest.register_node(itemstring_floor, { - description = def.description, - _doc_items_longdesc = def.longdesc, - drawtype = "mesh", - mesh = "mcl_blackstone_lantern_floor.obj", - inventory_image = def.texture_inv, - wield_image = def.texture_inv, - tiles = { - { - name = def.texture, - animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} - } - }, - use_texture_alpha = "clip", - paramtype = "light", - paramtype2 = "wallmounted", - place_param2 = 1, - node_placement_prediction = "", - sunlight_propagates = true, - light_source = def.light_level, - groups = {pickaxey = 1, attached_node = 1, deco_block = 1, lantern = 1}, - selection_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, - {-0.125, -0.0625, -0.125, 0.125, 0.0625, 0.125}, - {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, - }, - }, - collision_box = { - type = "fixed", - fixed = { - {-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, - {-0.125, -0.0625, -0.125, 0.125, 0.0625, 0.125}, - {-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625}, - }, - }, - sounds = sounds, - on_place = function(itemstack, placer, pointed_thing) - local new_stack = mcl_util.call_on_rightclick(itemstack, placer, pointed_thing) - if new_stack then - return new_stack - end - - local under = pointed_thing.under - local above = pointed_thing.above - - local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) - local fakestack = itemstack - if wdir == 0 then - fakestack:set_name(itemstring_ceiling) - elseif wdir == 1 then - fakestack:set_name(itemstring_floor) - end - - local success - itemstack, success = minetest.item_place(fakestack, placer, pointed_thing, wdir) - itemstack:set_name(itemstring_floor) - - if success then - minetest.sound_play(sounds.place, {pos = under, gain = 1}, true) - end - - return itemstack - end, - on_rotate = false, - _mcl_hardness = 3.5, - _mcl_blast_resistance = 3.5, - }) - - minetest.register_node(itemstring_ceiling, { - description = def.description, - _doc_items_create_entry = false, - drawtype = "mesh", - mesh = "mcl_blackstone_lantern_ceiling.obj", - tiles = { - { - name = def.texture, - animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} - } - }, - use_texture_alpha = "clip", - paramtype = "light", - paramtype2 = "wallmounted", - place_param2 = 0, - node_placement_prediction = "", - sunlight_propagates = true, - light_source = def.light_level, - groups = {pickaxey = 1, attached_node = 1, deco_block = 1, lantern = 1, not_in_creative_inventory = 1}, - drop = itemstring_floor, - selection_box = { - type = "fixed", - fixed = { - {-0.1875, 0, -0.1875, 0.1875, 0.4375, 0.1875}, - {-0.125, -0.125, -0.125, 0.125, 0, 0.125}, - {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, - }, - }, - collision_box = { - type = "fixed", - fixed = { - {-0.1875, 0, -0.1875, 0.1875, 0.4375, 0.1875}, - {-0.125, -0.125, -0.125, 0.125, 0, 0.125}, - {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, - }, - }, - sounds = sounds, - on_rotate = false, - _mcl_hardness = 3.5, - _mcl_blast_resistance = 3.5, - }) -end - -mcl_blackstone.register_lantern("soul_lantern", { - description = S("Soul Lantern"), - longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), - texture = "mcl_blackstone_soul_lantern.png", - texture_inv = "mcl_blackstone_soul_lantern_inv.png", - light_level = 10, -}) - -minetest.register_craft({ - output = "mcl_blackstone:soul_lantern_floor", - recipe = { - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_blackstone:soul_torch", "mcl_core:iron_nugget"}, - {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, - }, -}) - -minetest.register_alias("mcl_blackstone:soul_lantern", "mcl_blackstone:soul_lantern_floor") \ No newline at end of file +}) \ No newline at end of file From af87e0c8b4fda9b60fbb48ec1c95eae2926edeab Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 26 Feb 2022 03:31:11 +0000 Subject: [PATCH 210/521] Delete 'mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern.png' --- .../textures/mcl_blackstone_soul_lantern.png | Bin 8642 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern.png diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern.png deleted file mode 100644 index 6e20058ea35d03bcdd7c225d2c372ee7be934f82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8642 zcmeHLc|4Ts+aJ5^+1DCm31emqgJH4^vXf-r#w^Ui3^T(ZWy{uPNw$PUL{wxciY$>O zi4qPuwsHt*5vksXI_GrW-+6z(_k2F@``>v!pP6~?`~F_v>$<=9b=}Y0Pl~@C>W(0fD%zI({YHRDAan>k+5i|x}u3+1Dj zfvFj9-NRS4>)m!2L+3lQcY7NwM%djvu(Dz>{jwL@h1tmOmR>WMi&{;FFr4V5qL zZ1@mVbZJHC(}+;*y{^3m?2&ekQKq@jm*~e){ElmjCXxI%yv9!+v~P++QkeA@B9R&1*IT-L(v}9d3*uSxz zsr16q#&C(+O=54G-y_T7t>?-ae$SX|4qyFZscn@zmuWPa`A+og{PnsLzsU{jG7{{K zg-5PXe8d&nYD4t&`v#VY#WcJ9XPxt7*cN;EjI(~peaonplU+C-JX`>Z_A-dpzn;KT zuhbXMTixi5S<0GxPL)2dG?>6GRd~I|oI1%OAU97|OXMow|H0Ai*Zr1{G6X}UXZ_%h zyG!S7xEumDZuEFu705u;4D_Qj3Ib@o*V}_dQ~Wd2)AC$JZ&Q6)3>-Mb-KuVlxh>j^ z`PWu?MZT_DSD$!Du}D|3xs%M3TVo~>dTTK0^zH}J0rRflF65_7-TC|g_=4|j=fo-Q zXJZlBo{aHhy?c%>m$n|PM7~x*#o2l)6;h{ChEnrG=3TRRlwIqH6CH^*?qcN=)Wx6% z@7ptvn(ozPwH*#yXc+lgQ1|Yk+i{IKu^#7VjYnn?CR7xu0HKi;AU88D0eU=26Fpd= z#bI~xrP?FwBe(igE-1a+Hy|!?EsNT;pvs6QEN3?-xP86eJZCo_SGHW(?Xf!i*=GLu z!1&&pFpnV3tW|t>@8ft$?m5Qgi}_{;{K}}QS(Rg(PqVTw7C#KTP`2XLd_Yku+ao(c zgGQ{-lDxkUx0r!VR>^vH*!xP#_+lgRjoZsFRh6EprK3*@UjB6G$QieQlg!037dxKK z$Jf=Hjr=^{GyH2JYSuCJklw>9bSZ{Kl^f%_;;C~Sk_(=PjdeLH!^SCCpmJPStcfF>kSI;bd6m+e6$4$0fe%swx zYW%uZMLFf1wX2QjR+w+yO6|#8jl!+ZEvzH>Tz;0j^Pt{nYUD}i!|pWG=ZnPRc7MGQ zsf+{bOltlz^_H~`GS+%s=}!lm`<7FN^Tuzgo>5_bg8MLiSjq?=#+z91OQSX6%1vj< zj!T|~QOh3E(vE(Kg5!5h#q=8VHVU%phn9$~e%Dy=EQtw8S99x3S%g~qabu@7Yk3o( z7Q($^x&gJW{myny_9`Ru%}s|OMh`~ah+M-xK7_sm{cf2cH<`ocvs-^1K#MY*E2OW*aC7rf-Y#O>$4E+= z4%z4x3_kyOk=KBSdi&&*Ps$tZ;1ey6jdD2aoWf2_-yeY~kLx7p3oBO{O2@>*%5HVW z?2~0$gidm{2qXo%n>^-f5E^O{Q!r*jv!sn-df4A_>OA6*4j9^9C0HaLmTIsd?p&kg z{f}12kjzo9>~{7ru|}0vZaxaGGaKc*CV+#OaC1?EfXBXoLTyCjr@UD&gr&E)1IlkDbV_Js&5V^r<(smFVM3Jcl-9qCnmCaS=^ z(ZDQUY*13IqccKX^R+)*5|j64s!g9Kc2@A`w*m_n`dSXOr?LdEE^u8UHi&bV!LdCA zZc(9ky11#`ec3(3^{ZL#0*bp{$?nS=o4nc<@?KPhe{?QDHUTuEJ=%$dT`1_U5h>qK zjxD(fmlA0!DSJ8$-EA#}=)s!5k*_pKEZ1+K1F2~2^^44d=3*bvg@nNgb zbJLfEE5lb)h0tjn%a7hMhucezb)=i0zA&FUe_w)4ds_Hb<-RoY0Xg>f?UL%1X=~Po z*UoZ;eKur&+J;U#>don;z z$GAiT+c%kl(9SNQrCHkJW$eO1A4UZnB2#+!bgJXk!qW0p;F;;3L1;Q!icA0V+Qyx& zqn*#kL>C?ug|9}ym-^p@vxmo{6_9~(t1)?IEskl56;H!djGUI-RkCE5%%P(wKnW=heX`1>Glngxb-~{tgoKh z9Zzqwq`VLj)zTCKI~%7$b4phdrYp9}&HNgRS3Ct?>%{-Ov{mDY-YdnmK!LH)S%xEy z7gzV_;`|-H%f`1WRW;3Dq~5&zo-Bjy7Z)|Tvpd#8L?}R5vY;niLR3iUHdXEsdkakb z1Bk}=)J5re+MD}u`|#20`Mf#zSKI|RI+cF$BIzhvDts(9>h#%n)2mTrv!vv5&b-lu zx`8AsRo-CCBuU@HTCSfhGQX+r%C-Bmv%1JV%7SNqN+ns$(%)O1uJG;e2&fDdH8H!* z^#p0+HZgn|+;H`+#@iQ^(_`j|bmwdL%vw2Fu1<$VFz;?K?XCeU%w-}Keu+(xcx?Z;oafABlZmhOsko8ea9_rA(?c4YYML(91|<56 z?1vwClad3YlVcDSAA`wlsckKj0@%5<`(3=`KrSM;!KT=!I9wj|olr41H>DAAz>Sxc zA92u8NO`N#Dw%;>*+Qq+jW-dHEOi{b5%sW0S zfc8w5H26^ofHTyP&eWsCIroQmZZefr`+~*~$>&-`5 zpCrN%6h>FUUTezAV~)A=oB10@h(&0s@q2x{=Tg=^ABU>il5Z7_-&sF82|t%mHnByF z(oST}ab{TgoUM0`l$(%6yO{jU>2=Qx49;Vu-ZeOmQ;^6xzACS&w(4~3ebQ`;Q(#Ah zq@(JkHa-kn4x)a7uc)JZ@QlA%s%O*F+vcG!m2Q3U;E!$hmW5B=pL$@d=)!11#Igj3 zJ}1i$xRMATljMaurthq@Chpr*u2<_PoF`EhD*adsi|e}VS~~*?-X59jVF~I&P^#V+ zb=ft;m0C%<=xc#1r@AW|AgiaV4aE-E2d_a ztEbiN3yRwXyh{72=WIF7qULEnfi9?_{ZpSe7)3S4>vve?PjP`$--7AJ*;w^C8d@bu zms`{8mZx|i&1eo^=KX%pjI6uAbmUCVcw&lUvF%4pCXqj?tdYew6BLxy7%3E5>66sk z9~qEoRLuBL7Tdn}f?*0-MTf1}<>(n2xAo1{{T&mf;H?TagOVwa)}9(3&Ox!)5!&MM z8;HBAe!CB~;=jCtwl*Amn2Y2oFsQXFkkS_&O=Pb&=q#F>mp1m3IaJgdh!Wx3yy0;p zw0v?`I7{Gbe7hlq(=Y+~v9CM$pcnM>EA%H0c3IfWv`5c`+j<)zGjVK3y8E!Ar) zzOgF`-^p54g418hivyBT2l@(~KF#QDRdAPF=i2%> z)Y1`i{m9+9%{l*ZBke)6%LvaS+qD#8=2P?Vn8P>{LcbijBoZcgaIX4{@9V|N1 z&x8yyXa-3iaeboj{BHZw5~re>JcA`sfKAgTQ7LGTv0Ei=pRDBmCv}9c1`P-Gi#R1= z*3KhS{DmHai#bxyn_{eD^^)|0qDwG)XTG{;bDLWBPgt6Vlpnkk7PGiGYbRbaYcy{8 z6_YCyUA?N=CGez7_W=777%-zg04`07&!?+H}8nW7_txA7Di*tQzGV9A0k5_)SnZcG=S72K%ui1bN2*i{?!eHzz zFqq#?*T9)N|5!TOyxmZ`)BCXLRS^!oWF36Dt*A+9@;S$woT8TQmyU3pvuY`_z+_BM zD>sTtZ@FAUHR>$>I;FxHw--z%+n!W+nEsk!d`g`E?58)&lQYXQU`-WkttLg#k=oOa z`iewarSE|1rhqZ%P@iSru+Ty$kABw(Ix6b!sa3TVTJ+iD3KWf2CBXss#EoR_N7?F=AG4+Gy{+D~_2Bla8?6Y8nWC1Rw4CTE88rq>RYK*BW{Arntsb!& zb=CX^oyzl)0Tbt1U^ydBPdv(W<8-pp3D#ROyLHXDLqW_4Te7budC`(hd96(Psj@p zM^dXxdd&!Wa$yCU9@Vdjr#u|mA1gT^36kmdRcu+9# zIs^pLHwX{L;sOYCurI-nL`KW4G_}ZqNqDrJvz86aCKyBTCz(f535O$X9dVHXI9cDWxUQ})6s7^y(0~942rYt4 z$A&}5H2H0cZyY8B8jeZ|rjsaS@HQvbml8@x%gF)b;P2$XD9$t-==| zTSh-pQ1Fh$Hu^^-9``#gIFuT=gTdpVgg`VX7 zA!rZ@NG%N*0;cWz1C<4tM#qwIgl#H-T%82)U^THC2qGK-!Q-$9h^8hM2GNBfH6dDf zI02@O_0=M1YyLoCMMaC-^&GMO~LIL?tlsS?TY(ebH-Rd z=uT4~`tQL1!gSc5!XW?ec>aL?&SFHRGbq#mJF1=UPXrwO-}C$x_;)4;V7H^usSy_c zVN(AMr~fTs%>i2qHR1>VhY2CyTHm&$K+=v>VDQd1fWqRw$xp+E5%4=p0OkJgv&N_pYzvtinKjRtxgze-4oIv1khz86Nu7N@zQ81+3x77ygL$`O> z-)5`7y$9LYpnlXte|wKYS!^fb;n3jVKoWuaXPth_oBsj#gZ=j${ZHmU!oFE!D8Ugx z75mfe803HJ{x5*v7_3P+0+~knccK3X`6kN`4 zXW##$2Y~t?Cx1)df8_c{uD_+g-va-WUH{1Sw-oqW;D55~|4c5fKaSi4GVs5T0UW4H z>Z2oo!}zXXb5|MWV_VFKmlivyh;bPF3(jyY~&?tSb?pv`$zTyeN4Vq2TeFc zvB`@-Bg(?W$WeR Date: Sat, 26 Feb 2022 03:31:27 +0000 Subject: [PATCH 211/521] Delete 'mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern_inv.png' --- .../textures/mcl_blackstone_soul_lantern_inv.png | Bin 5677 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern_inv.png diff --git a/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern_inv.png b/mods/ITEMS/mcl_blackstone/textures/mcl_blackstone_soul_lantern_inv.png deleted file mode 100644 index 55624c7492d8bbab96bc7c7e44b566868f2335b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5677 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 From 6bdfa5b167d2a7417c228a51814d8a594b2c0703 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 26 Feb 2022 03:33:11 +0000 Subject: [PATCH 212/521] Upload files to 'mods/ITEMS/mcl_lanterns/textures' --- .../textures/mcl_lanterns_soul_lantern.png | Bin 0 -> 8642 bytes .../textures/mcl_lanterns_soul_lantern_inv.png | Bin 0 -> 5677 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png create mode 100644 mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern_inv.png diff --git a/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png b/mods/ITEMS/mcl_lanterns/textures/mcl_lanterns_soul_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..6e20058ea35d03bcdd7c225d2c372ee7be934f82 GIT binary patch literal 8642 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 literal 0 HcmV?d00001 From 084d344fb0c321e430adb508803cb5617f851bc1 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 26 Feb 2022 03:34:14 +0000 Subject: [PATCH 213/521] Update 'mods/ITEMS/mcl_lanterns/register.lua' --- mods/ITEMS/mcl_lanterns/register.lua | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_lanterns/register.lua b/mods/ITEMS/mcl_lanterns/register.lua index 46ead33ce..7cf03d0d5 100644 --- a/mods/ITEMS/mcl_lanterns/register.lua +++ b/mods/ITEMS/mcl_lanterns/register.lua @@ -15,4 +15,23 @@ minetest.register_craft({ {"mcl_core:iron_nugget", "mcl_torches:torch" , "mcl_core:iron_nugget"}, {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, }, -}) \ No newline at end of file +}) + +mcl_lanterns.register_lantern("soul_lantern", { + description = S("Soul Lantern"), + longdesc = S("Lanterns are light sources which can be placed on the top or the bottom of most blocks."), + texture = "mcl_lanterns_soul_lantern.png", + texture_inv = "mcl_lanterns_soul_lantern_inv.png", + light_level = 10, +}) + +minetest.register_craft({ + output = "mcl_lanterns:soul_lantern_floor", + recipe = { + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_blackstone:soul_torch", "mcl_core:iron_nugget"}, + {"mcl_core:iron_nugget", "mcl_core:iron_nugget", "mcl_core:iron_nugget"}, + }, +}) + +minetest.register_alias("mcl_blackstone:soul_lantern", "mcl_lanterns:soul_lantern_floor") \ No newline at end of file From 53c367e71815306593412b652e6a70e48ddfbf5f Mon Sep 17 00:00:00 2001 From: debiankaios Date: Mon, 28 Feb 2022 16:10:18 +0100 Subject: [PATCH 214/521] makes moss able to bonemeal --- mods/ITEMS/mcl_core/nodes_base.lua | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 23ae0b2b8..646910737 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -11,6 +11,7 @@ else ice_drawtype = "normal" ice_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false end +local mossnodes = {"mcl_core:stone", "mcl_core:granite", "mcl_core:granite_smooth", "mcl_core:diorite", "mcl_core:diorite_smooth", "mcl_core:andesite", "mcl_core:andesite_smooth", "mcl_deepslate:deepslate", --[[glowberries, ]]"mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:podzol", "mcl_core:coarse_dirt", "mcl_core:mycelium"} mcl_core.fortune_drop_ore = { discrete_uniform_distribution = true, @@ -1099,6 +1100,37 @@ minetest.register_node("mcl_core:moss", { --sounds = TODO: add sound _mcl_blast_resistance = 0.1, _mcl_hardness = 0.1, + on_rightclick = function(pos, node, pointed_thing, itemstack) + -- TODO: fix no-place-possiblity + if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then + itemstack:take_item() + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y, z = pos.z+1}, mossnodes)) do + minetest.set_node(j, {name="mcl_core:moss"}) + end + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-2, y = pos.y, z = pos.z-2}, {x = pos.x+2, y = pos.y, z = pos.z+2}, mossnodes)) do + if math.random(1,3) == 1 then minetest.set_node(j, {name="mcl_core:moss"}) end + end + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y, z = pos.z-3}, {x = pos.x+3, y = pos.y, z = pos.z+3}, mossnodes)) do + if math.random(1,9) == 1 then minetest.set_node(j, {name="mcl_core:moss"}) end + end + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y, z = pos.z-3}, {x = pos.x+3, y = pos.y, z = pos.z+3}, {"mcl_core:moss"})) do + if math.random(1,2) == 1 then + minetest.set_node({x=j.x,y=j.y+1,z=j.z} ,{name="mcl_flowers:tallgrass"}) + end + end + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y, z = pos.z-3}, {x = pos.x+3, y = pos.y, z = pos.z+3}, {"mcl_core:moss"})) do + if math.random(1,4) == 1 then + minetest.set_node({x=j.x,y=j.y+1,z=j.z}, {name="mcl_core:moss_carpet"}) + end + end + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y, z = pos.z-3}, {x = pos.x+3, y = pos.y, z = pos.z+3}, {"mcl_core:moss"})) do + if math.random(1,10) == 1 then + minetest.set_node({x=j.x,y=j.y+1,z=j.z} ,{name="mcl_flowers:double_grass"}) + minetest.set_node({x=j.x,y=j.y+2,z=j.z} ,{name="mcl_flowers:double_grass_top"}) + end + end + end + end, }) minetest.register_node("mcl_core:moss_carpet", { From ed4e23902d0dc4d84708ce7d0658a965482236bf Mon Sep 17 00:00:00 2001 From: kay27 Date: Tue, 1 Mar 2022 03:34:44 +0400 Subject: [PATCH 215/521] [hud] Show player biome and position --- mods/HUD/mcl_info/init.lua | 68 ++++++++++++++++++++++++++++++++++++++ mods/HUD/mcl_info/mod.conf | 3 ++ 2 files changed, 71 insertions(+) create mode 100644 mods/HUD/mcl_info/init.lua create mode 100644 mods/HUD/mcl_info/mod.conf diff --git a/mods/HUD/mcl_info/init.lua b/mods/HUD/mcl_info/init.lua new file mode 100644 index 000000000..ae0fdc526 --- /dev/null +++ b/mods/HUD/mcl_info/init.lua @@ -0,0 +1,68 @@ +local refresh_interval = .63 +local huds = {} +local after = minetest.after +local get_connected_players = minetest.get_connected_players +local get_biome_name = minetest.get_biome_name +local get_biome_data = minetest.get_biome_data +local format = string.format + +local min1, min2, min3 = mcl_mapgen.overworld.min, mcl_mapgen.end_.min, mcl_mapgen.nether.min +local max1, max2, max3 = mcl_mapgen.overworld.max, mcl_mapgen.end_.max, mcl_mapgen.nether.max + 128 + +local function get_text(pos) + local y = pos.y + if y >= min1 then + y = y - min1 + elseif y >= min3 and y <= max3 then + y = y - min3 + elseif y >= min2 and y <= max2 then + y = y - min2 + end + local biome_data = get_biome_data(pos) + local biome_name = biome_data and get_biome_name(biome_data.biome) or "No biome" + local text = format("%s x:%.1f y:%.1f z:%.1f", biome_name, pos.x, y, pos.z) + return text +end + +local function info() + for _, player in pairs(get_connected_players()) do + local name = player:get_player_name() + local pos = player:get_pos() + local text = get_text(pos) + local hud = huds[name] + if not hud then + local def = { + hud_elem_type = "text", + alignment = {x = 1, y = -1}, + scale = {x = 100, y = 100}, + position = {x = 0.0073, y = 0.989}, + text = text, + style = 5, + ["number"] = 0xcccac0, + z_index = 0, + } + local def_bg = table.copy(def) + def_bg.offset = {x = 2, y = 1} + def_bg["number"] = 0 + def_bg.z_index = -1 + huds[name] = { + player:hud_add(def), + player:hud_add(def_bg), + text, + } + elseif text ~= hud[3] then + hud[3] = text + player:hud_change(huds[name][1], "text", text) + player:hud_change(huds[name][2], "text", text) + end + end + after(refresh_interval, info) +end + +minetest.register_on_authplayer(function(name, ip, is_success) + if is_success then + huds[name] = nil + end +end) + +info() diff --git a/mods/HUD/mcl_info/mod.conf b/mods/HUD/mcl_info/mod.conf new file mode 100644 index 000000000..da3e10fff --- /dev/null +++ b/mods/HUD/mcl_info/mod.conf @@ -0,0 +1,3 @@ +name = mcl_info +description = Prints biome name and player position +optional_depends = mcl_mapgen From 8bd8512d3945a13b66023ec8c2083321f41a00a5 Mon Sep 17 00:00:00 2001 From: debiankaios Date: Tue, 1 Mar 2022 10:35:03 +0100 Subject: [PATCH 216/521] You can now place nodes on moss --- mods/ITEMS/mcl_core/nodes_base.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 646910737..3514e1580 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -1100,9 +1100,10 @@ minetest.register_node("mcl_core:moss", { --sounds = TODO: add sound _mcl_blast_resistance = 0.1, _mcl_hardness = 0.1, - on_rightclick = function(pos, node, pointed_thing, itemstack) - -- TODO: fix no-place-possiblity - if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + -- TODO: fix that in creative you get removed blocks on place + + if player:get_wielded_item():get_name() == "mcl_dye:white" then itemstack:take_item() for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y, z = pos.z+1}, mossnodes)) do minetest.set_node(j, {name="mcl_core:moss"}) @@ -1129,13 +1130,16 @@ minetest.register_node("mcl_core:moss", { minetest.set_node({x=j.x,y=j.y+2,z=j.z} ,{name="mcl_flowers:double_grass_top"}) end end + elseif minetest.registered_nodes[player:get_wielded_item():get_name()] then + itemstack:take_item() + minetest.set_node(pointed_thing.above, {name=player:get_wielded_item():get_name()}) end end, }) minetest.register_node("mcl_core:moss_carpet", { description = S("Moss Carpet"), - _doc_items_longdesc = S("Moss Carpets are a thin decorative variant of the moss block."),--TODO: Other desciption? + _doc_items_longdesc = S("Moss Carpets are a thin decorative variant of the moss block."), _doc_items_hidden = false, tiles = {"mcl_core_moss_block.png"}, is_ground_content = true, From 54c06f3fe80bf4866beab001d646c5960a819148 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 2 Mar 2022 02:47:38 +0400 Subject: [PATCH 217/521] #233 Add /debug chat command --- mods/HUD/mcl_info/init.lua | 43 +++++++++++++++++++++++-- mods/HUD/mcl_info/locale/mcl_info.ru.tr | 4 +++ mods/HUD/mcl_info/locale/template.txt | 4 +++ 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 mods/HUD/mcl_info/locale/mcl_info.ru.tr create mode 100644 mods/HUD/mcl_info/locale/template.txt diff --git a/mods/HUD/mcl_info/init.lua b/mods/HUD/mcl_info/init.lua index ae0fdc526..02af53fbc 100644 --- a/mods/HUD/mcl_info/init.lua +++ b/mods/HUD/mcl_info/init.lua @@ -1,5 +1,6 @@ local refresh_interval = .63 local huds = {} +local default_debug = 3 local after = minetest.after local get_connected_players = minetest.get_connected_players local get_biome_name = minetest.get_biome_name @@ -9,7 +10,15 @@ local format = string.format local min1, min2, min3 = mcl_mapgen.overworld.min, mcl_mapgen.end_.min, mcl_mapgen.nether.min local max1, max2, max3 = mcl_mapgen.overworld.max, mcl_mapgen.end_.max, mcl_mapgen.nether.max + 128 -local function get_text(pos) +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) +local storage = minetest.get_mod_storage() +local player_dbg = minetest.deserialize(storage:get_string("player_dbg") or "return {}") or {} + +local function get_text(pos, bits) + local bits = bits + if bits == 0 then return "" end local y = pos.y if y >= min1 then y = y - min1 @@ -20,7 +29,14 @@ local function get_text(pos) end local biome_data = get_biome_data(pos) local biome_name = biome_data and get_biome_name(biome_data.biome) or "No biome" - local text = format("%s x:%.1f y:%.1f z:%.1f", biome_name, pos.x, y, pos.z) + local text + if bits == 1 then + text = biome_name + elseif bits == 2 then + text = format("x:%.1f y:%.1f z:%.1f", pos.x, y, pos.z) + elseif bits == 3 then + text = format("%s x:%.1f y:%.1f z:%.1f", biome_name, pos.x, y, pos.z) + end return text end @@ -28,7 +44,7 @@ local function info() for _, player in pairs(get_connected_players()) do local name = player:get_player_name() local pos = player:get_pos() - local text = get_text(pos) + local text = get_text(pos, player_dbg[name] or default_debug) local hud = huds[name] if not hud then local def = { @@ -65,4 +81,25 @@ minetest.register_on_authplayer(function(name, ip, is_success) end end) +minetest.register_chatcommand("debug",{ + description = S("Set debug bit mask: 0 = disable, 1 = biome name, 2 = coordinates, 3 = all"), + func = function(name, params) + local dbg = math.floor(tonumber(params) or default_debug) + if dbg < 0 or dbg > 3 then + minetest.chat_send_player(name, S("Error! Possible values are integer numbers from @1 to @2", 0, 3)) + return + end + if dbg == default_dbg then + player_dbg[name] = nil + else + player_dbg[name] = dbg + end + minetest.chat_send_player(name, S("Debug bit mask set to @1", dbg)) + end +}) + +minetest.register_on_shutdown(function() + storage:set_string("player_dbg", minetest.serialize(player_dbg)) +end) + info() diff --git a/mods/HUD/mcl_info/locale/mcl_info.ru.tr b/mods/HUD/mcl_info/locale/mcl_info.ru.tr new file mode 100644 index 000000000..7f5b79fe1 --- /dev/null +++ b/mods/HUD/mcl_info/locale/mcl_info.ru.tr @@ -0,0 +1,4 @@ +# textdomain: mcl_info +Set debug bit mask: 0 @= disable, 1 @= biome name, 2 @= coordinates, 3 @= all=Установка отладочной битовой маски: 0 @= отключить, 1 @= биом, 2 @= координаты, 3 @= всё +Error! Possible values are integer numbers from @1 to @2=Ошибка! Допустимые значения - целые числа от @1 до @2 +Debug bit mask set to @1=Отладочной битовой маске присвоено значение @1 diff --git a/mods/HUD/mcl_info/locale/template.txt b/mods/HUD/mcl_info/locale/template.txt new file mode 100644 index 000000000..1a0b70ebc --- /dev/null +++ b/mods/HUD/mcl_info/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: mcl_info +Set debug bit mask: 0 @= disable, 1 @= biome name, 2 @= coordinates, 3 @= all= +Error! Possible values are integer numbers from @1 to @2= +Debug bit mask set to @1= From 789fd7b72c9ce86f5593e8d95572058e640b4605 Mon Sep 17 00:00:00 2001 From: debiankaios Date: Thu, 3 Mar 2022 21:25:29 +0100 Subject: [PATCH 218/521] Moss grow now one block up and down --- mods/ITEMS/mcl_core/nodes_base.lua | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 3514e1580..900675688 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -1101,30 +1101,31 @@ minetest.register_node("mcl_core:moss", { _mcl_blast_resistance = 0.1, _mcl_hardness = 0.1, on_rightclick = function(pos, node, player, itemstack, pointed_thing) - -- TODO: fix that in creative you get removed blocks on place - if player:get_wielded_item():get_name() == "mcl_dye:white" then - itemstack:take_item() - for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y, z = pos.z+1}, mossnodes)) do + if not minetest.is_creative_enabled(player) and not minetest.check_player_privs(player, "creative") then + itemstack:take_item() + end + + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-1, y = pos.y-1, z = pos.z-1}, {x = pos.x+1, y = pos.y+1, z = pos.z+1}, mossnodes)) do minetest.set_node(j, {name="mcl_core:moss"}) end - for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-2, y = pos.y, z = pos.z-2}, {x = pos.x+2, y = pos.y, z = pos.z+2}, mossnodes)) do + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-2, y = pos.y-1, z = pos.z-2}, {x = pos.x+2, y = pos.y+1, z = pos.z+2}, mossnodes)) do if math.random(1,3) == 1 then minetest.set_node(j, {name="mcl_core:moss"}) end end - for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y, z = pos.z-3}, {x = pos.x+3, y = pos.y, z = pos.z+3}, mossnodes)) do + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y-1, z = pos.z-3}, {x = pos.x+3, y = pos.y+1, z = pos.z+3}, mossnodes)) do if math.random(1,9) == 1 then minetest.set_node(j, {name="mcl_core:moss"}) end end - for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y, z = pos.z-3}, {x = pos.x+3, y = pos.y, z = pos.z+3}, {"mcl_core:moss"})) do + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y-1, z = pos.z-3}, {x = pos.x+3, y = pos.y+1, z = pos.z+3}, {"mcl_core:moss"})) do if math.random(1,2) == 1 then minetest.set_node({x=j.x,y=j.y+1,z=j.z} ,{name="mcl_flowers:tallgrass"}) end end - for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y, z = pos.z-3}, {x = pos.x+3, y = pos.y, z = pos.z+3}, {"mcl_core:moss"})) do + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y-1, z = pos.z-3}, {x = pos.x+3, y = pos.y+1, z = pos.z+3}, {"mcl_core:moss"})) do if math.random(1,4) == 1 then minetest.set_node({x=j.x,y=j.y+1,z=j.z}, {name="mcl_core:moss_carpet"}) end end - for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y, z = pos.z-3}, {x = pos.x+3, y = pos.y, z = pos.z+3}, {"mcl_core:moss"})) do + for i, j in pairs(minetest.find_nodes_in_area_under_air({x = pos.x-3, y = pos.y-1, z = pos.z-3}, {x = pos.x+3, y = pos.y+1, z = pos.z+3}, {"mcl_core:moss"})) do if math.random(1,10) == 1 then minetest.set_node({x=j.x,y=j.y+1,z=j.z} ,{name="mcl_flowers:double_grass"}) minetest.set_node({x=j.x,y=j.y+2,z=j.z} ,{name="mcl_flowers:double_grass_top"}) From a887708fb587378f54203526e5df211bbdd54008 Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 4 Mar 2022 02:08:52 +0400 Subject: [PATCH 219/521] Add tools/convert_all_tga_to_png.bash --- tools/convert_all_tga_to_png.bash | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100755 tools/convert_all_tga_to_png.bash diff --git a/tools/convert_all_tga_to_png.bash b/tools/convert_all_tga_to_png.bash new file mode 100755 index 000000000..8d3032c12 --- /dev/null +++ b/tools/convert_all_tga_to_png.bash @@ -0,0 +1,10 @@ +#!/bin/bash + +for name in ./*.tga +do + convert "$name" "${name%.*}".png + +# Slow and useless: +# optipng -o7 -zm1-9 "${name%.*}".png + +done From 96bc98e716f16f92e15e6e09038bac1275c3e29e Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 4 Mar 2022 02:59:37 +0400 Subject: [PATCH 220/521] Check object in mcl_throwing --- mods/ITEMS/mcl_throwing/register.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_throwing/register.lua b/mods/ITEMS/mcl_throwing/register.lua index ec11f86c7..605ee1386 100644 --- a/mods/ITEMS/mcl_throwing/register.lua +++ b/mods/ITEMS/mcl_throwing/register.lua @@ -139,6 +139,7 @@ local function egg_on_step(self, dtime) -- Turn given object into a child local function make_child(object) + if not object then return end local ent = object:get_luaentity() object:set_properties({ visual_size = { x = ent.base_size.x/2, y = ent.base_size.y/2 }, From 5a74e01e1fb3be3570ee2d3935a4d4b6c52c372f Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 4 Mar 2022 16:48:58 +0000 Subject: [PATCH 221/521] updated furnace init.lua --- mods/ITEMS/mcl_furnaces/init.lua | 563 +------------------------------ 1 file changed, 5 insertions(+), 558 deletions(-) diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index d2f357e3c..adf8210cc 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -1,559 +1,6 @@ +-- Load files +local modpath = minetest.get_modpath(minetest.get_current_modname()) -local S = minetest.get_translator(minetest.get_current_modname()) - -local LIGHT_ACTIVE_FURNACE = 13 - --- --- Formspecs --- - -local function active_formspec(fuel_percent, item_percent) - return "size[9,8.75]".. - "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[context;src;2.75,0.5;1,1;]".. - mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. - "list[context;fuel;2.75,2.5;1,1;]".. - mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. - "list[context;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^[lowpart:".. - (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]".. - -- 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[context;dst]".. - "listring[current_player;main]".. - "listring[context;src]".. - "listring[current_player;main]".. - "listring[context;fuel]".. - "listring[current_player;main]" -end - -local inactive_formspec = "size[9,8.75]".. - "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[context;src;2.75,0.5;1,1;]".. - mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. - "list[context;fuel;2.75,2.5;1,1;]".. - mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. - "list[context;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]".. - -- 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[context;dst]".. - "listring[current_player;main]".. - "listring[context;src]".. - "listring[current_player;main]".. - "listring[context;fuel]".. - "listring[current_player;main]" - -local receive_fields = function(pos, formname, fields, sender) - if fields.craftguide then - mcl_craftguide.show(sender:get_player_name()) - end -end - -local function give_xp(pos, player) - local meta = minetest.get_meta(pos) - local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95) - local xp = meta:get_int("xp") - if xp > 0 then - if player then - mcl_experience.add_xp(player, xp) - else - mcl_experience.throw_xp(vector.add(pos, dir), xp) - end - meta:set_int("xp", 0) - end -end - --- --- Node callback functions that are the same for active and inactive furnace --- - -local function allow_metadata_inventory_put(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 - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - if listname == "fuel" then - -- Special case: empty bucket (not a fuel, but used for sponge drying) - if stack:get_name() == "mcl_buckets:bucket_empty" then - if inv:get_stack(listname, index):get_count() == 0 then - return 1 - else - return 0 - end - end - - -- Test stack with size 1 because we burn one fuel at a time - local teststack = ItemStack(stack) - teststack:set_count(1) - local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}}) - if output.time ~= 0 then - -- Only allow to place 1 item if fuel get replaced by recipe. - -- This is the case for lava buckets. - local replace_item = decremented_input.items[1] - if replace_item:is_empty() then - -- For most fuels, just allow to place everything - return stack:get_count() - else - if inv:get_stack(listname, index):get_count() == 0 then - return 1 - else - return 0 - end - end - else - return 0 - end - elseif listname == "src" then - return stack:get_count() - elseif listname == "dst" then - return 0 - end -end - -local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local stack = inv:get_stack(from_list, from_index) - return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) -end - -local function allow_metadata_inventory_take(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 - return stack:get_count() -end - -local function on_metadata_inventory_take(pos, listname, index, stack, player) - -- Award smelting achievements - if listname == "dst" then - if stack:get_name() == "mcl_core:iron_ingot" then - awards.unlock(player:get_player_name(), "mcl:acquireIron") - elseif stack:get_name() == "mcl_fishing:fish_cooked" then - awards.unlock(player:get_player_name(), "mcl:cookFish") - end - give_xp(pos, player) - end -end - -local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - if from_list == "dst" then - give_xp(pos, player) - end -end - -local function spawn_flames(pos, param2) - local minrelpos, maxrelpos - local dir = minetest.facedir_to_dir(param2) - if dir.x > 0 then - minrelpos = { x = -0.6, y = -0.05, z = -0.25 } - maxrelpos = { x = -0.55, y = -0.45, z = 0.25 } - elseif dir.x < 0 then - minrelpos = { x = 0.55, y = -0.05, z = -0.25 } - maxrelpos = { x = 0.6, y = -0.45, z = 0.25 } - elseif dir.z > 0 then - minrelpos = { x = -0.25, y = -0.05, z = -0.6 } - maxrelpos = { x = 0.25, y = -0.45, z = -0.55 } - elseif dir.z < 0 then - minrelpos = { x = -0.25, y = -0.05, z = 0.55 } - maxrelpos = { x = 0.25, y = -0.45, z = 0.6 } - else - return - end - mcl_particles.add_node_particlespawner(pos, { - amount = 4, - time = 0, - minpos = vector.add(pos, minrelpos), - maxpos = vector.add(pos, maxrelpos), - minvel = { x = -0.01, y = 0, z = -0.01 }, - maxvel = { x = 0.01, y = 0.1, z = 0.01 }, - minexptime = 0.3, - maxexptime = 0.6, - minsize = 0.4, - maxsize = 0.8, - texture = "mcl_particles_flame.png", - glow = LIGHT_ACTIVE_FURNACE, - }, "low") -end - -local function swap_node(pos, name) - local node = minetest.get_node(pos) - if node.name == name then - return - end - node.name = name - minetest.swap_node(pos, node) - if name == "mcl_furnaces:furnace_active" then - spawn_flames(pos, node.param2) - else - mcl_particles.delete_node_particlespawners(pos) - end -end - -local function furnace_node_timer(pos, elapsed) - -- - -- Inizialize metadata - -- - local meta = minetest.get_meta(pos) - local fuel_time = meta:get_float("fuel_time") or 0 - local src_time = meta:get_float("src_time") or 0 - local src_item = meta:get_string("src_item") or "" - local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - - local inv = meta:get_inventory() - local srclist, fuellist - - local cookable, cooked - local active = true - local fuel - - srclist = inv:get_list("src") - fuellist = inv:get_list("fuel") - - -- Check if src item has been changed - if srclist[1]:get_name() ~= src_item then - -- Reset cooking progress in this case - src_time = 0 - src_item = srclist[1]:get_name() - end - - local update = true - local elapsed_game_time = mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) or elapsed - while elapsed_game_time > 0.00001 and update do - -- - -- Cooking - -- - - local el = elapsed_game_time - - -- Check if we have cookable content: cookable - local aftercooked - cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - cookable = cooked.time ~= 0 - if cookable then - -- Successful cooking requires space in dst slot and time - if not inv:room_for_item("dst", cooked.item) then - cookable = false - end - end - - if cookable then -- fuel lasts long enough, adjust el to cooking duration - el = math.min(el, cooked.time - src_time) - end - - -- Check if we have enough fuel to burn - active = fuel_time < fuel_totaltime - if cookable and not active then - -- We need to get new fuel - local afterfuel - fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - - if fuel.time == 0 then - -- No valid fuel in fuel list -- stop - fuel_totaltime = 0 - src_time = 0 - update = false - else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) - fuel_time = 0 - fuel_totaltime = fuel.time - el = math.min(el, fuel_totaltime) - active = true - fuellist = inv:get_list("fuel") - end - elseif active then - el = math.min(el, fuel_totaltime - fuel_time) - -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + el - end - - -- If there is a cookable item then check if it is ready yet - if cookable and active then - src_time = src_time + el - -- Place result in dst list if done - if src_time >= cooked.time then - inv:add_item("dst", cooked.item) - inv:set_stack("src", 1, aftercooked.items[1]) - - -- Unique recipe: Pour water into empty bucket after cooking wet sponge successfully - if inv:get_stack("fuel", 1):get_name() == "mcl_buckets:bucket_empty" then - if srclist[1]:get_name() == "mcl_sponges:sponge_wet" then - inv:set_stack("fuel", 1, "mcl_buckets:bucket_water") - fuellist = inv:get_list("fuel") - -- Also for river water - elseif srclist[1]:get_name() == "mcl_sponges:sponge_wet_river_water" then - inv:set_stack("fuel", 1, "mcl_buckets:bucket_river_water") - fuellist = inv:get_list("fuel") - end - end - - srclist = inv:get_list("src") - src_time = 0 - - meta:set_int("xp", meta:get_int("xp") + 1) -- ToDo give each recipe an idividial XP count - end - end - - elapsed_game_time = elapsed_game_time - el - end - - if fuel and fuel_totaltime > fuel.time then - fuel_totaltime = fuel.time - end - if srclist and srclist[1]:is_empty() then - src_time = 0 - end - - -- - -- Update formspec and node - -- - local formspec = inactive_formspec - local item_percent = 0 - if cookable then - item_percent = math.floor(src_time / cooked.time * 100) - end - - local result = false - - if active then - local fuel_percent = 0 - if fuel_totaltime > 0 then - fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - end - formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "mcl_furnaces:furnace_active") - -- make sure timer restarts automatically - result = true - else - swap_node(pos, "mcl_furnaces:furnace") - -- stop timer on the inactive furnace - minetest.get_node_timer(pos):stop() - end - - -- - -- Set meta values - -- - meta:set_float("fuel_totaltime", fuel_totaltime) - meta:set_float("fuel_time", fuel_time) - meta:set_float("src_time", src_time) - if srclist then - meta:set_string("src_item", src_item) - else - meta:set_string("src_item", "") - end - meta:set_string("formspec", formspec) - - return result -end - -local on_rotate, after_rotate_active -if minetest.get_modpath("screwdriver") then - on_rotate = screwdriver.rotate_simple - after_rotate_active = function(pos) - local node = minetest.get_node(pos) - mcl_particles.delete_node_particlespawners(pos) - if node.name == "mcl_furnaces:furnace" then - return - end - spawn_flames(pos, node.param2) - end -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".. - 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", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_front.png" - }, - paramtype2 = "facedir", - groups = {pickaxey=1, container=4, deco_block=1, material_stone=1}, - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - - on_timer = furnace_node_timer, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.get_meta(pos) - local meta2 = meta:to_table() - meta:from_table(oldmetadata) - local inv = meta:get_inventory() - for _, listname in ipairs({"src", "dst", "fuel"}) do - local stack = inv:get_stack(listname, 1) - 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) - end, - - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", inactive_formspec) - local inv = meta:get_inventory() - inv:set_size("src", 1) - inv:set_size("fuel", 1) - inv:set_size("dst", 1) - end, - on_destruct = function(pos) - mcl_particles.delete_node_particlespawners(pos) - give_xp(pos) - end, - - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - -- Reset accumulated game time when player works with furnace: - mcl_time.touch(pos) - minetest.get_node_timer(pos):start(1.0) - - on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - end, - on_metadata_inventory_put = function(pos) - -- Reset accumulated game time when player works with furnace: - mcl_time.touch(pos) - -- start timer function, it will sort out whether furnace can burn or not. - minetest.get_node_timer(pos):start(1.0) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - -- Reset accumulated game time when player works with furnace: - mcl_time.touch(pos) - -- start timer function, it will helpful if player clears dst slot - minetest.get_node_timer(pos):start(1.0) - - on_metadata_inventory_take(pos, listname, index, stack, player) - end, - - allow_metadata_inventory_put = allow_metadata_inventory_put, - allow_metadata_inventory_move = allow_metadata_inventory_move, - allow_metadata_inventory_take = allow_metadata_inventory_take, - on_receive_fields = receive_fields, - _mcl_blast_resistance = 3.5, - _mcl_hardness = 3.5, - on_rotate = on_rotate, -}) - -minetest.register_node("mcl_furnaces:furnace_active", { - description = S("Burning Furnace"), - _doc_items_create_entry = false, - tiles = { - "default_furnace_top.png", "default_furnace_bottom.png", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_front_active.png", - }, - paramtype2 = "facedir", - paramtype = "light", - light_source = LIGHT_ACTIVE_FURNACE, - drop = "mcl_furnaces:furnace", - groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1}, - is_ground_content = false, - sounds = mcl_sounds.node_sound_stone_defaults(), - on_timer = furnace_node_timer, - - 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 _, listname in ipairs({"src", "dst", "fuel"}) do - local stack = inv:get_stack(listname, 1) - 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, - - on_construct = function(pos) - local node = minetest.get_node(pos) - spawn_flames(pos, node.param2) - end, - on_destruct = function(pos) - mcl_particles.delete_node_particlespawners(pos) - give_xp(pos) - end, - - allow_metadata_inventory_put = allow_metadata_inventory_put, - allow_metadata_inventory_move = allow_metadata_inventory_move, - allow_metadata_inventory_take = allow_metadata_inventory_take, - on_metadata_inventory_move = on_metadata_inventory_move, - on_metadata_inventory_take = on_metadata_inventory_take, - on_receive_fields = receive_fields, - _mcl_blast_resistance = 3.5, - _mcl_hardness = 3.5, - on_rotate = on_rotate, - after_rotate = after_rotate_active, -}) - -minetest.register_craft({ - output = "mcl_furnaces:furnace", - recipe = { - { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, - { "mcl_core:cobble", "", "mcl_core:cobble" }, - { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, - } -}) - --- Add entry alias for the Help -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_furnaces:furnace", "nodes", "mcl_furnaces:furnace_active") -end - -minetest.register_lbm({ - label = "Active furnace flame particles", - name = "mcl_furnaces:flames", - nodenames = {"mcl_furnaces:furnace_active"}, - run_at_every_load = true, - action = function(pos, node) - spawn_flames(pos, node.param2) - 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, -}) +dofile(modpath.."/blast_furnace.lua") -- Load Blast Furnaces +dofile(modpath.."/furnace.lua") -- Load Furnaces +dofile(modpath.."/smoker.lua") -- Load Smokers \ No newline at end of file From c4a669a61b5ebe53c84595b65206fa4dcf54acf6 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 4 Mar 2022 16:50:29 +0000 Subject: [PATCH 222/521] added blast furnace textures --- .../textures/blast_furnace_front.png | Bin 0 -> 643 bytes .../textures/blast_furnace_front_on.png | Bin 0 -> 745 bytes .../textures/blast_furnace_front_on_e.png | Bin 0 -> 5777 bytes .../textures/blast_furnace_front_on_e_s.png | Bin 0 -> 5318 bytes .../mcl_furnaces/textures/blast_furnace_side.png | Bin 0 -> 636 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_furnaces/textures/blast_furnace_front.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e_s.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/blast_furnace_side.png diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front.png b/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front.png new file mode 100644 index 0000000000000000000000000000000000000000..02acd6d31bde7cbdf750831a887688611bf3296f GIT binary patch literal 643 zcmV-}0(||6P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jc=1 z5ePQpIEL~700IL^L_t(I%Y~E8YZFlv#eXRSad;E)rG=J^(}Lnh4Rm1*LS2;5MW74+ z0bMBW1Q&vI)k+tELJ>jSxDnj8i!O>Zm7r3=LJ3hQBucU}lLS(dPGx2svWknCNv0`y zH}~B8-aYr+_YqoKUG4zP#-};U@`WGF#-{^*a(s+Rqsip>7@@V*<<8E>JphuoZ;>nf zJd?AD`sd5(+XIj*0G#bQ3zgyPcN+ikX~A$TIt@9s;a(%5mggtng+m!&-(y0?LWRB#J%h89rBQZ zLF;upjRzF~T?GJ!VUSABQLUJ4Zf^jvxxEpl~U<^lMcJA_VW_%FD@QKO@=zJlXcozc+?B;wb(c6o~TnG7>G z6EvDfoIfXMwN5y0)wy!@1^|ubkzb>Dj*Da4e9s@CMIw|-MI75^fA3TG@kAni*K(=Y dS7h4&`~}=|;%wiHP?`V$002ovPDHLkV1h~G8~gwO literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on.png b/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on.png new file mode 100644 index 0000000000000000000000000000000000000000..712bac83fc55a7fd7aeba895ef2bab7d22797cee GIT binary patch literal 745 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jc=1 z5eyT|P?xa)00L=AL_t(Y$L*BQOB7)k$3H70HqK1+u8KdV)kCzl3473%Ko4Rb`~h|F z;Hg8Amku3*=(L1~U?C!i5V{2Y1$K#4q{JXW77c{8a8K^cE-0>J>uU1G?K=38iL}l@A|R0T{V{ zjdbSwsfldcuJgHlYYfTU%>!Ur7667}@HZHSK_n6(o!KVz5xAE%DTL5%jr(7-r zaD0612Re=ez=L~t0FYG$31EJ4*>_SD#SaE(YHA83P!xsv#btyLOpXpC$*O`70?V=p zhr@MMYZK|Z9RpsFeWODk&t zL^~P*nCjGs#o7Wk%d-4Ku47OOGiSKL)6ITm4;}-+WdIO~L>L$g& zN~QiSIKfuKE$)>|0Efi_EiD&F^j)F%QV;JJ7KryJ*gM$g{5geU@rc7>fy>dW0PG#? z`!Q14cCbq&zHY3eY8u&{ZR}Eswbf7V@MxM}HM_H2WmGD;3}jVdaQMcV9-QgHZ}nhq zVw_C!{{QQNhiFG*^<|#mpY$Nw(da+xSgZ{*XZV8hs~$+TdN7oT2gJh@6gJ(prw6q- b(*yVkK$4}i$+C1F00000NkvXXu0mjfJgiYg literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e.png b/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e.png new file mode 100644 index 0000000000000000000000000000000000000000..f154d47e1311260f1ee0b9fdd164136576a426fc GIT binary patch literal 5777 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e_s.png b/mods/ITEMS/mcl_furnaces/textures/blast_furnace_front_on_e_s.png new file mode 100644 index 0000000000000000000000000000000000000000..4fdb90a4f9cf5099c7aafc6c81c8b9e3b715f44f GIT binary patch literal 5318 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 WB Date: Fri, 4 Mar 2022 16:52:32 +0000 Subject: [PATCH 223/521] Add 'mods/ITEMS/mcl_furnaces/furnace.lua' --- mods/ITEMS/mcl_furnaces/furnace.lua | 558 ++++++++++++++++++++++++++++ 1 file changed, 558 insertions(+) create mode 100644 mods/ITEMS/mcl_furnaces/furnace.lua diff --git a/mods/ITEMS/mcl_furnaces/furnace.lua b/mods/ITEMS/mcl_furnaces/furnace.lua new file mode 100644 index 000000000..81bef41f7 --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/furnace.lua @@ -0,0 +1,558 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +local LIGHT_ACTIVE_FURNACE = 13 + +-- +-- Formspecs +-- + +local function active_formspec(fuel_percent, item_percent) + return "size[9,8.75]".. + "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[context;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. + "list[context;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^[lowpart:".. + (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]".. + -- 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[context;dst]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + "listring[context;fuel]".. + "listring[current_player;main]" +end + +local inactive_formspec = "size[9,8.75]".. + "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[context;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. + "list[context;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]".. + -- 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[context;dst]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + "listring[context;fuel]".. + "listring[current_player;main]" + +local receive_fields = function(pos, formname, fields, sender) + if fields.craftguide then + mcl_craftguide.show(sender:get_player_name()) + end +end + +local function give_xp(pos, player) + local meta = minetest.get_meta(pos) + local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95) + local xp = meta:get_int("xp") + if xp > 0 then + if player then + mcl_experience.add_xp(player, xp) + else + mcl_experience.throw_xp(vector.add(pos, dir), xp) + end + meta:set_int("xp", 0) + end +end + +-- +-- Node callback functions that are the same for active and inactive furnace +-- + +local function allow_metadata_inventory_put(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 + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if listname == "fuel" then + -- Special case: empty bucket (not a fuel, but used for sponge drying) + if stack:get_name() == "mcl_buckets:bucket_empty" then + if inv:get_stack(listname, index):get_count() == 0 then + return 1 + else + return 0 + end + end + + -- Test stack with size 1 because we burn one fuel at a time + local teststack = ItemStack(stack) + teststack:set_count(1) + local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}}) + if output.time ~= 0 then + -- Only allow to place 1 item if fuel get replaced by recipe. + -- This is the case for lava buckets. + local replace_item = decremented_input.items[1] + if replace_item:is_empty() then + -- For most fuels, just allow to place everything + return stack:get_count() + else + if inv:get_stack(listname, index):get_count() == 0 then + return 1 + else + return 0 + end + end + else + return 0 + end + elseif listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end +end + +local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end + +local function allow_metadata_inventory_take(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 + return stack:get_count() +end + +local function on_metadata_inventory_take(pos, listname, index, stack, player) + -- Award smelting achievements + if listname == "dst" then + if stack:get_name() == "mcl_core:iron_ingot" then + awards.unlock(player:get_player_name(), "mcl:acquireIron") + elseif stack:get_name() == "mcl_fishing:fish_cooked" then + awards.unlock(player:get_player_name(), "mcl:cookFish") + end + give_xp(pos, player) + end +end + +local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + if from_list == "dst" then + give_xp(pos, player) + end +end + +local function spawn_flames(pos, param2) + local minrelpos, maxrelpos + local dir = minetest.facedir_to_dir(param2) + if dir.x > 0 then + minrelpos = { x = -0.6, y = -0.05, z = -0.25 } + maxrelpos = { x = -0.55, y = -0.45, z = 0.25 } + elseif dir.x < 0 then + minrelpos = { x = 0.55, y = -0.05, z = -0.25 } + maxrelpos = { x = 0.6, y = -0.45, z = 0.25 } + elseif dir.z > 0 then + minrelpos = { x = -0.25, y = -0.05, z = -0.6 } + maxrelpos = { x = 0.25, y = -0.45, z = -0.55 } + elseif dir.z < 0 then + minrelpos = { x = -0.25, y = -0.05, z = 0.55 } + maxrelpos = { x = 0.25, y = -0.45, z = 0.6 } + else + return + end + mcl_particles.add_node_particlespawner(pos, { + amount = 4, + time = 0, + minpos = vector.add(pos, minrelpos), + maxpos = vector.add(pos, maxrelpos), + minvel = { x = -0.01, y = 0, z = -0.01 }, + maxvel = { x = 0.01, y = 0.1, z = 0.01 }, + minexptime = 0.3, + maxexptime = 0.6, + minsize = 0.4, + maxsize = 0.8, + texture = "mcl_particles_flame.png", + glow = LIGHT_ACTIVE_FURNACE, + }, "low") +end + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) + if name == "mcl_furnaces:furnace_active" then + spawn_flames(pos, node.param2) + else + mcl_particles.delete_node_particlespawners(pos) + end +end + +local function furnace_node_timer(pos, elapsed) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local src_item = meta:get_string("src_item") or "" + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + local inv = meta:get_inventory() + local srclist, fuellist + + local cookable, cooked + local active = true + local fuel + + srclist = inv:get_list("src") + fuellist = inv:get_list("fuel") + + -- Check if src item has been changed + if srclist[1]:get_name() ~= src_item then + -- Reset cooking progress in this case + src_time = 0 + src_item = srclist[1]:get_name() + end + + local update = true + local elapsed_game_time = mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) or elapsed + while elapsed_game_time > 0.00001 and update do + -- + -- Cooking + -- + + local el = elapsed_game_time + + -- Check if we have cookable content: cookable + local aftercooked + cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + cookable = cooked.time ~= 0 + if cookable then + -- Successful cooking requires space in dst slot and time + if not inv:room_for_item("dst", cooked.item) then + cookable = false + end + end + + if cookable then -- fuel lasts long enough, adjust el to cooking duration + el = math.min(el, cooked.time - src_time) + end + + -- Check if we have enough fuel to burn + active = fuel_time < fuel_totaltime + if cookable and not active then + -- We need to get new fuel + local afterfuel + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list -- stop + fuel_totaltime = 0 + src_time = 0 + update = false + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + fuel_time = 0 + fuel_totaltime = fuel.time + el = math.min(el, fuel_totaltime) + active = true + fuellist = inv:get_list("fuel") + end + elseif active then + el = math.min(el, fuel_totaltime - fuel_time) + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + el + end + + -- If there is a cookable item then check if it is ready yet + if cookable and active then + src_time = src_time + el + -- Place result in dst list if done + if src_time >= cooked.time then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + + -- Unique recipe: Pour water into empty bucket after cooking wet sponge successfully + if inv:get_stack("fuel", 1):get_name() == "mcl_buckets:bucket_empty" then + if srclist[1]:get_name() == "mcl_sponges:sponge_wet" then + inv:set_stack("fuel", 1, "mcl_buckets:bucket_water") + fuellist = inv:get_list("fuel") + -- Also for river water + elseif srclist[1]:get_name() == "mcl_sponges:sponge_wet_river_water" then + inv:set_stack("fuel", 1, "mcl_buckets:bucket_river_water") + fuellist = inv:get_list("fuel") + end + end + + srclist = inv:get_list("src") + src_time = 0 + + meta:set_int("xp", meta:get_int("xp") + 1) -- ToDo give each recipe an idividial XP count + end + end + + elapsed_game_time = elapsed_game_time - el + end + + if fuel and fuel_totaltime > fuel.time then + fuel_totaltime = fuel.time + end + if srclist and srclist[1]:is_empty() then + src_time = 0 + end + + -- + -- Update formspec and node + -- + local formspec = inactive_formspec + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + end + + local result = false + + if active then + local fuel_percent = 0 + if fuel_totaltime > 0 then + fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + end + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "mcl_furnaces:furnace_active") + -- make sure timer restarts automatically + result = true + else + swap_node(pos, "mcl_furnaces:furnace") + -- stop timer on the inactive furnace + minetest.get_node_timer(pos):stop() + end + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + if srclist then + meta:set_string("src_item", src_item) + else + meta:set_string("src_item", "") + end + meta:set_string("formspec", formspec) + + return result +end + +local on_rotate, after_rotate_active +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.rotate_simple + after_rotate_active = function(pos) + local node = minetest.get_node(pos) + mcl_particles.delete_node_particlespawners(pos) + if node.name == "mcl_furnaces:furnace" then + return + end + spawn_flames(pos, node.param2) + end +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".. + 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", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_front.png" + }, + paramtype2 = "facedir", + groups = {pickaxey=1, container=4, deco_block=1, material_stone=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + + on_timer = furnace_node_timer, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta:to_table() + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for _, listname in ipairs({"src", "dst", "fuel"}) do + local stack = inv:get_stack(listname, 1) + 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) + end, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("fuel", 1) + inv:set_size("dst", 1) + end, + on_destruct = function(pos) + mcl_particles.delete_node_particlespawners(pos) + give_xp(pos) + end, + + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + minetest.get_node_timer(pos):start(1.0) + + on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + end, + on_metadata_inventory_put = function(pos) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + -- start timer function, it will sort out whether furnace can burn or not. + minetest.get_node_timer(pos):start(1.0) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + -- start timer function, it will helpful if player clears dst slot + minetest.get_node_timer(pos):start(1.0) + + on_metadata_inventory_take(pos, listname, index, stack, player) + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_receive_fields = receive_fields, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + on_rotate = on_rotate, +}) + +minetest.register_node("mcl_furnaces:furnace_active", { + description = S("Burning Furnace"), + _doc_items_create_entry = false, + tiles = { + "default_furnace_top.png", "default_furnace_bottom.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_front_active.png", + }, + paramtype2 = "facedir", + paramtype = "light", + light_source = LIGHT_ACTIVE_FURNACE, + drop = "mcl_furnaces:furnace", + groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + on_timer = furnace_node_timer, + + 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 _, listname in ipairs({"src", "dst", "fuel"}) do + local stack = inv:get_stack(listname, 1) + 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, + + on_construct = function(pos) + local node = minetest.get_node(pos) + spawn_flames(pos, node.param2) + end, + on_destruct = function(pos) + mcl_particles.delete_node_particlespawners(pos) + give_xp(pos) + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_metadata_inventory_move = on_metadata_inventory_move, + on_metadata_inventory_take = on_metadata_inventory_take, + on_receive_fields = receive_fields, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + on_rotate = on_rotate, + after_rotate = after_rotate_active, +}) + +minetest.register_craft({ + output = "mcl_furnaces:furnace", + recipe = { + { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, + { "mcl_core:cobble", "", "mcl_core:cobble" }, + { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, + } +}) + +-- Add entry alias for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_furnaces:furnace", "nodes", "mcl_furnaces:furnace_active") +end + +minetest.register_lbm({ + label = "Active furnace flame particles", + name = "mcl_furnaces:flames", + nodenames = {"mcl_furnaces:furnace_active"}, + run_at_every_load = true, + action = function(pos, node) + spawn_flames(pos, node.param2) + 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, +}) From 6d4a58026200386b9debf0e63fef07bb14f26e53 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 4 Mar 2022 16:53:53 +0000 Subject: [PATCH 224/521] added blast_furnace.lua --- mods/ITEMS/mcl_furnaces/blast_furnace.lua | 548 ++++++++++++++++++++++ 1 file changed, 548 insertions(+) create mode 100644 mods/ITEMS/mcl_furnaces/blast_furnace.lua diff --git a/mods/ITEMS/mcl_furnaces/blast_furnace.lua b/mods/ITEMS/mcl_furnaces/blast_furnace.lua new file mode 100644 index 000000000..4e14d9305 --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/blast_furnace.lua @@ -0,0 +1,548 @@ + +local S = minetest.get_translator(minetest.get_current_modname()) + +local LIGHT_ACTIVE_FURNACE = 13 + +-- +-- Formspecs +-- + +local function active_formspec(fuel_percent, item_percent) + return "size[9,8.75]".. + "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("Blast Furnace"))).."]".. + "list[context;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. + "list[context;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^[lowpart:".. + (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]".. + -- 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[context;dst]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + "listring[context;fuel]".. + "listring[current_player;main]" +end + +local inactive_formspec = "size[9,8.75]".. + "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("Blast Furnace"))).."]".. + "list[context;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. + "list[context;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]".. + -- 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[context;dst]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + "listring[context;fuel]".. + "listring[current_player;main]" + +local receive_fields = function(pos, formname, fields, sender) + if fields.craftguide then + mcl_craftguide.show(sender:get_player_name()) + end +end + +local function give_xp(pos, player) + local meta = minetest.get_meta(pos) + local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95) + local xp = meta:get_int("xp") + if xp > 0 then + if player then + mcl_experience.add_xp(player, xp) + else + mcl_experience.throw_xp(vector.add(pos, dir), xp) + end + meta:set_int("xp", 0) + end +end + +-- +-- Node callback functions that are the same for active and inactive furnace +-- + +local function allow_metadata_inventory_put(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 + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if listname == "fuel" then + + -- Test stack with size 1 because we burn one fuel at a time + local teststack = ItemStack(stack) + teststack:set_count(1) + local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}}) + if output.time ~= 0 then + -- Only allow to place 1 item if fuel get replaced by recipe. + -- This is the case for lava buckets. + local replace_item = decremented_input.items[1] + if replace_item:is_empty() then + -- For most fuels, just allow to place everything + return stack:get_count() + else + if inv:get_stack(listname, index):get_count() == 0 then + return 1 + else + return 0 + end + end + else + return 0 + end + elseif listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end +end + +local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end + +local function allow_metadata_inventory_take(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 + return stack:get_count() +end + +local function on_metadata_inventory_take(pos, listname, index, stack, player) + -- Award smelting achievements + if listname == "dst" then + if stack:get_name() == "mcl_core:iron_ingot" then + awards.unlock(player:get_player_name(), "mcl:acquireIron") + end + give_xp(pos, player) + end +end + +local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + if from_list == "dst" then + give_xp(pos, player) + end +end + +local function spawn_flames(pos, param2) + local minrelpos, maxrelpos + local dir = minetest.facedir_to_dir(param2) + if dir.x > 0 then + minrelpos = { x = -0.6, y = -0.05, z = -0.25 } + maxrelpos = { x = -0.55, y = -0.45, z = 0.25 } + elseif dir.x < 0 then + minrelpos = { x = 0.55, y = -0.05, z = -0.25 } + maxrelpos = { x = 0.6, y = -0.45, z = 0.25 } + elseif dir.z > 0 then + minrelpos = { x = -0.25, y = -0.05, z = -0.6 } + maxrelpos = { x = 0.25, y = -0.45, z = -0.55 } + elseif dir.z < 0 then + minrelpos = { x = -0.25, y = -0.05, z = 0.55 } + maxrelpos = { x = 0.25, y = -0.45, z = 0.6 } + else + return + end + mcl_particles.add_node_particlespawner(pos, { + amount = 4, + time = 0, + minpos = vector.add(pos, minrelpos), + maxpos = vector.add(pos, maxrelpos), + minvel = { x = -0.01, y = 0, z = -0.01 }, + maxvel = { x = 0.01, y = 0.1, z = 0.01 }, + minexptime = 0.3, + maxexptime = 0.6, + minsize = 0.4, + maxsize = 0.8, + texture = "mcl_particles_flame.png", + glow = LIGHT_ACTIVE_FURNACE, + }, "low") +end + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) + if name == "mcl_furnaces:blast_furnace_active" then + spawn_flames(pos, node.param2) + else + mcl_particles.delete_node_particlespawners(pos) + end +end + +local function furnace_node_timer(pos, elapsed) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local src_item = meta:get_string("src_item") or "" + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + local inv = meta:get_inventory() + local srclist, fuellist + + local cookable, cooked + local active = true + local fuel + + srclist = inv:get_list("src") + fuellist = inv:get_list("fuel") + + -- Check if src item has been changed + if srclist[1]:get_name() ~= src_item then + -- Reset cooking progress in this case + src_time = 0 + src_item = srclist[1]:get_name() + end + + local update = true + local elapsed_game_time = mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) or elapsed + while elapsed_game_time > 0.00001 and update do + -- + -- Cooking + -- + + local el = elapsed_game_time + + -- Check if we have cookable content: cookable + local aftercooked + cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + cookable = false + cookableItems = {"mcl_raw_ores:raw_iron", "mcl_raw_ores:raw_gold", "mcl_copper:raw_copper", "mcl_nether:ancient_debris"} + cookable = false + --for _, item in ipairs(cookableItems) do + for _,item in ipairs(cookableItems) do + local stack = inv:get_stack("src",1) + if stack:get_name() == item then + cookable = true + end + end + if cookable then + -- Successful cooking requires space in dst slot and time + if not inv:room_for_item("dst", cooked.item) then + cookable = false + end + end + + if cookable then -- fuel lasts long enough, adjust el to cooking duration + el = math.min(el, cooked.time - src_time) + end + + -- Check if we have enough fuel to burn + active = fuel_time < fuel_totaltime + if cookable and not active then + -- We need to get new fuel + local afterfuel + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list -- stop + fuel_totaltime = 0 + src_time = 0 + update = false + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + fuel_time = 0 + fuel_totaltime = fuel.time + el = math.min(el, fuel_totaltime) + active = true + fuellist = inv:get_list("fuel") + end + elseif active then + el = math.min(el, fuel_totaltime - fuel_time) + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + el + end + + -- If there is a cookable item then check if it is ready yet + if cookable and active then + -- in the src_time variable, the *1.5 is the multiplication that makes the blast furnace work faster than a normal furnace. I (PrairieWind) have it at 1.5 times faster, but it can be OP and 2 times faster, or 1.2 times faster. All are good numbers. + src_time = (src_time + el)*1.5 + -- Place result in dst list if done + if src_time >= cooked.time then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + + srclist = inv:get_list("src") + src_time = 0 + + meta:set_int("xp", meta:get_int("xp") + 1) -- ToDo give each recipe an idividial XP count + end + end + + elapsed_game_time = elapsed_game_time - el + end + + if fuel and fuel_totaltime > fuel.time then + fuel_totaltime = fuel.time + end + if srclist and srclist[1]:is_empty() then + src_time = 0 + end + + -- + -- Update formspec and node + -- + local formspec = inactive_formspec + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + end + + local result = false + + if active then + local fuel_percent = 0 + if fuel_totaltime > 0 then + fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + end + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "mcl_furnaces:blast_furnace_active") + -- make sure timer restarts automatically + result = true + else + swap_node(pos, "mcl_furnaces:blast_furnace") + -- stop timer on the inactive furnace + minetest.get_node_timer(pos):stop() + end + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + if srclist then + meta:set_string("src_item", src_item) + else + meta:set_string("src_item", "") + end + meta:set_string("formspec", formspec) + + return result +end + +local on_rotate, after_rotate_active +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.rotate_simple + after_rotate_active = function(pos) + local node = minetest.get_node(pos) + mcl_particles.delete_node_particlespawners(pos) + if node.name == "mcl_furnaces:blast_furnace" then + return + end + spawn_flames(pos, node.param2) + end +end + +minetest.register_node("mcl_furnaces:blast_furnace", { + description = S("Blast Furnace"), + _tt_help = S("Uses fuel to smelt or cook items"), + _doc_items_longdesc = S("Blast Furnaces cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace."), + _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 = { + "blast_furnace_top.png", "blast_furnace_top.png", + "blast_furnace_side.png", "blast_furnace_side.png", + "blast_furnace_side.png", "blast_furnace_front.png" + }, + paramtype2 = "facedir", + groups = {pickaxey=1, container=4, deco_block=1, material_stone=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + + on_timer = furnace_node_timer, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta:to_table() + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for _, listname in ipairs({"src", "dst", "fuel"}) do + local stack = inv:get_stack(listname, 1) + 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) + end, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("fuel", 1) + inv:set_size("dst", 1) + end, + on_destruct = function(pos) + mcl_particles.delete_node_particlespawners(pos) + give_xp(pos) + end, + + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + minetest.get_node_timer(pos):start(1.0) + + on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + end, + on_metadata_inventory_put = function(pos) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + -- start timer function, it will sort out whether furnace can burn or not. + minetest.get_node_timer(pos):start(1.0) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + -- start timer function, it will helpful if player clears dst slot + minetest.get_node_timer(pos):start(1.0) + + on_metadata_inventory_take(pos, listname, index, stack, player) + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_receive_fields = receive_fields, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + on_rotate = on_rotate, +}) + +minetest.register_node("mcl_furnaces:blast_furnace_active", { + description = S("Active Blast Furnace"), + _doc_items_create_entry = false, + tiles = { + "blast_furnace_top.png", "blast_furnace_top.png", + "blast_furnace_side.png", "blast_furnace_side.png", + "blast_furnace_side.png", {name = "blast_furnace_front_on.png", + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 48}}, + }, + paramtype2 = "facedir", + paramtype = "light", + light_source = LIGHT_ACTIVE_FURNACE, + drop = "mcl_furnaces:blast_furnace", + groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + on_timer = furnace_node_timer, + + 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 _, listname in ipairs({"src", "dst", "fuel"}) do + local stack = inv:get_stack(listname, 1) + 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, + + on_construct = function(pos) + local node = minetest.get_node(pos) + spawn_flames(pos, node.param2) + end, + on_destruct = function(pos) + mcl_particles.delete_node_particlespawners(pos) + give_xp(pos) + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_metadata_inventory_move = on_metadata_inventory_move, + on_metadata_inventory_take = on_metadata_inventory_take, + on_receive_fields = receive_fields, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + on_rotate = on_rotate, + after_rotate = after_rotate_active, +}) + +minetest.register_craft({ + output = "mcl_furnaces:blast_furnace", + recipe = { + { "mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot" }, + { "mcl_core:iron_ingot", "mcl_furnaces:furnace", "mcl_core:iron_ingot" }, + { "mcl_core:stone_smooth", "mcl_core:stone_smooth", "mcl_core:stone_smooth" }, + } +}) + +-- Add entry alias for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_furnaces:blast_furnace", "nodes", "mcl_furnaces:blast_furnace_active") +end + +minetest.register_lbm({ + label = "Active furnace flame particles", + name = "mcl_furnaces:flames", + nodenames = {"mcl_furnaces:blast_furnace_active"}, + run_at_every_load = true, + action = function(pos, node) + spawn_flames(pos, node.param2) + 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:blast_furnace" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + end, +}) From 832eb497baa1696bcb1a1f3d85e5c7e65dd7266b Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 4 Mar 2022 16:58:19 +0000 Subject: [PATCH 225/521] added smoker.lua --- mods/ITEMS/mcl_furnaces/smoker.lua | 549 +++++++++++++++++++++++++++++ 1 file changed, 549 insertions(+) create mode 100644 mods/ITEMS/mcl_furnaces/smoker.lua diff --git a/mods/ITEMS/mcl_furnaces/smoker.lua b/mods/ITEMS/mcl_furnaces/smoker.lua new file mode 100644 index 000000000..ba53f3fc1 --- /dev/null +++ b/mods/ITEMS/mcl_furnaces/smoker.lua @@ -0,0 +1,549 @@ + +local S = minetest.get_translator(minetest.get_current_modname()) + +local LIGHT_ACTIVE_FURNACE = 13 + +-- +-- Formspecs +-- + +local function active_formspec(fuel_percent, item_percent) + return "size[9,8.75]".. + "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("Smoker"))).."]".. + "list[context;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. + "list[context;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^[lowpart:".. + (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]".. + -- 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[context;dst]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + "listring[context;fuel]".. + "listring[current_player;main]" +end + +local inactive_formspec = "size[9,8.75]".. + "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("Smoker"))).."]".. + "list[context;src;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;fuel;2.75,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,2.5,1,1).. + "list[context;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]".. + -- 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[context;dst]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + "listring[context;fuel]".. + "listring[current_player;main]" + +local receive_fields = function(pos, formname, fields, sender) + if fields.craftguide then + mcl_craftguide.show(sender:get_player_name()) + end +end + +local function give_xp(pos, player) + local meta = minetest.get_meta(pos) + local dir = vector.divide(minetest.facedir_to_dir(minetest.get_node(pos).param2),-1.95) + local xp = meta:get_int("xp") + if xp > 0 then + if player then + mcl_experience.add_xp(player, xp) + else + mcl_experience.throw_xp(vector.add(pos, dir), xp) + end + meta:set_int("xp", 0) + end +end + +-- +-- Node callback functions that are the same for active and inactive furnace +-- + +local function allow_metadata_inventory_put(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 + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if listname == "fuel" then + return 0 + end + + -- Test stack with size 1 because we burn one fuel at a time + local teststack = ItemStack(stack) + teststack:set_count(1) + local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}}) + if output.time ~= 0 then + -- Only allow to place 1 item if fuel get replaced by recipe. + -- This is the case for lava buckets. + local replace_item = decremented_input.items[1] + if replace_item:is_empty() then + -- For most fuels, just allow to place everything + return stack:get_count() + else + if inv:get_stack(listname, index):get_count() == 0 then + return 1 + else + return 0 + end + end + else + return 0 + end + elseif listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end +end + +local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end + +local function allow_metadata_inventory_take(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 + return stack:get_count() +end + +local function on_metadata_inventory_take(pos, listname, index, stack, player) + -- Award smelting achievements + if listname == "dst" then + if stack:get_name() == "mcl_fishing:fish_cooked" then + awards.unlock(player:get_player_name(), "mcl:cookFish") + end + give_xp(pos, player) + end +end + +local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + if from_list == "dst" then + give_xp(pos, player) + end +end + +local function spawn_flames(pos, param2) + local minrelpos, maxrelpos + local dir = minetest.facedir_to_dir(param2) + if dir.x > 0 then + minrelpos = { x = -0.6, y = -0.05, z = -0.25 } + maxrelpos = { x = -0.55, y = -0.45, z = 0.25 } + elseif dir.x < 0 then + minrelpos = { x = 0.55, y = -0.05, z = -0.25 } + maxrelpos = { x = 0.6, y = -0.45, z = 0.25 } + elseif dir.z > 0 then + minrelpos = { x = -0.25, y = -0.05, z = -0.6 } + maxrelpos = { x = 0.25, y = -0.45, z = -0.55 } + elseif dir.z < 0 then + minrelpos = { x = -0.25, y = -0.05, z = 0.55 } + maxrelpos = { x = 0.25, y = -0.45, z = 0.6 } + else + return + end + mcl_particles.add_node_particlespawner(pos, { + amount = 4, + time = 0, + minpos = vector.add(pos, minrelpos), + maxpos = vector.add(pos, maxrelpos), + minvel = { x = -0.01, y = 0, z = -0.01 }, + maxvel = { x = 0.01, y = 0.1, z = 0.01 }, + minexptime = 0.3, + maxexptime = 0.6, + minsize = 0.4, + maxsize = 0.8, + texture = "mcl_particles_flame.png", + glow = LIGHT_ACTIVE_FURNACE, + }, "low") +end + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) + if name == "mcl_furnaces:smoker_active" then + spawn_flames(pos, node.param2) + else + mcl_particles.delete_node_particlespawners(pos) + end +end + +local function furnace_node_timer(pos, elapsed) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local src_item = meta:get_string("src_item") or "" + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + local inv = meta:get_inventory() + local srclist, fuellist + + local cookable, cooked + local active = true + local fuel + + srclist = inv:get_list("src") + fuellist = inv:get_list("fuel") + + -- Check if src item has been changed + if srclist[1]:get_name() ~= src_item then + -- Reset cooking progress in this case + src_time = 0 + src_item = srclist[1]:get_name() + end + + local update = true + local elapsed_game_time = mcl_time.get_irl_seconds_passed_at_pos_or_nil(pos) or elapsed + while elapsed_game_time > 0.00001 and update do + -- + -- Cooking + -- + + local el = elapsed_game_time + + -- Check if we have cookable content: cookable + local aftercooked + cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + cookable = false + cookableItems = {"mcl_fishing:fish_raw", "mcl_fishing:salmon_raw", "mcl_farming:potato_item", "mcl_mobitems:mutton", "mcl_mobitems:beef", "mcl_mobitems:chicken", "mcl_mobitems:porkchop", "mcl_mobitems:rabbit"} + --for _, item in ipairs(cookableItems) do + for _,item in ipairs(cookableItems) do + local stack = inv:get_stack("src",1) + if stack:get_name() == item then + cookable = true + end + end + if cookable then + -- Successful cooking requires space in dst slot and time + if not inv:room_for_item("dst", cooked.item) then + cookable = false + end + end + + if cookable then -- fuel lasts long enough, adjust el to cooking duration + el = math.min(el, cooked.time - src_time) + end + + -- Check if we have enough fuel to burn + active = fuel_time < fuel_totaltime + if cookable and not active then + -- We need to get new fuel + local afterfuel + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list -- stop + fuel_totaltime = 0 + src_time = 0 + update = false + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + fuel_time = 0 + fuel_totaltime = fuel.time + el = math.min(el, fuel_totaltime) + active = true + fuellist = inv:get_list("fuel") + end + elseif active then + el = math.min(el, fuel_totaltime - fuel_time) + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + el + end + + -- If there is a cookable item then check if it is ready yet + if cookable and active then + -- in the src_time variable, the *1.5 is the multiplication that makes the smoker work faster than a normal furnace. I (PrairieWind) have it at 1.5 times faster, but it can be OP and 2 times faster, or 1.2 times faster. All are good numbers. + src_time = (src_time + el)*1.5 + -- Place result in dst list if done + if src_time >= cooked.time then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + + srclist = inv:get_list("src") + src_time = 0 + + meta:set_int("xp", meta:get_int("xp") + 1) -- ToDo give each recipe an idividial XP count + end + end + + elapsed_game_time = elapsed_game_time - el + end + + if fuel and fuel_totaltime > fuel.time then + fuel_totaltime = fuel.time + end + if srclist and srclist[1]:is_empty() then + src_time = 0 + end + + -- + -- Update formspec and node + -- + local formspec = inactive_formspec + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + end + + local result = false + + if active then + local fuel_percent = 0 + if fuel_totaltime > 0 then + fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + end + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "mcl_furnaces:smoker_active") + -- make sure timer restarts automatically + result = true + else + swap_node(pos, "mcl_furnaces:smoker") + -- stop timer on the inactive furnace + minetest.get_node_timer(pos):stop() + end + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + if srclist then + meta:set_string("src_item", src_item) + else + meta:set_string("src_item", "") + end + meta:set_string("formspec", formspec) + + return result +end + +local on_rotate, after_rotate_active +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.rotate_simple + after_rotate_active = function(pos) + local node = minetest.get_node(pos) + mcl_particles.delete_node_particlespawners(pos) + if node.name == "mcl_furnaces:smoker" then + return + end + spawn_flames(pos, node.param2) + end +end + +minetest.register_node("mcl_furnaces:smoker", { + description = S("Smoker"), + _tt_help = S("Uses fuel to smelt or cook items"), + _doc_items_longdesc = S("Smokers cook or smelt several items, using a furnace fuel, into something else, but faster than a normal furnace."), + _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 = { + "smoker_top.png", "smoker_top.png", + "smoker_side.png", "smoker_side.png", + "smoker_side.png", "smoker_front.png" + }, + paramtype2 = "facedir", + groups = {pickaxey=1, container=4, deco_block=1, material_stone=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + + on_timer = furnace_node_timer, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta:to_table() + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for _, listname in ipairs({"src", "dst", "fuel"}) do + local stack = inv:get_stack(listname, 1) + 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) + end, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("fuel", 1) + inv:set_size("dst", 1) + end, + on_destruct = function(pos) + mcl_particles.delete_node_particlespawners(pos) + give_xp(pos) + end, + + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + minetest.get_node_timer(pos):start(1.0) + + on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + end, + on_metadata_inventory_put = function(pos) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + -- start timer function, it will sort out whether furnace can burn or not. + minetest.get_node_timer(pos):start(1.0) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + -- Reset accumulated game time when player works with furnace: + mcl_time.touch(pos) + -- start timer function, it will helpful if player clears dst slot + minetest.get_node_timer(pos):start(1.0) + + on_metadata_inventory_take(pos, listname, index, stack, player) + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_receive_fields = receive_fields, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + on_rotate = on_rotate, +}) + +minetest.register_node("mcl_furnaces:smoker_active", { + description = S("Burning Furnace"), + _doc_items_create_entry = false, + tiles = { + "smoker_top.png", "smoker_top.png", + "smoker_side.png", "smoker_side.png", + "smoker_side.png", {name = "smoker_front_on.png", + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 48}}, + }, + paramtype2 = "facedir", + paramtype = "light", + light_source = LIGHT_ACTIVE_FURNACE, + drop = "mcl_furnaces:smoker", + groups = {pickaxey=1, container=4, deco_block=1, not_in_creative_inventory=1, material_stone=1}, + is_ground_content = false, + sounds = mcl_sounds.node_sound_stone_defaults(), + on_timer = furnace_node_timer, + + 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 _, listname in ipairs({"src", "dst", "fuel"}) do + local stack = inv:get_stack(listname, 1) + 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, + + on_construct = function(pos) + local node = minetest.get_node(pos) + spawn_flames(pos, node.param2) + end, + on_destruct = function(pos) + mcl_particles.delete_node_particlespawners(pos) + give_xp(pos) + end, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_metadata_inventory_move = on_metadata_inventory_move, + on_metadata_inventory_take = on_metadata_inventory_take, + on_receive_fields = receive_fields, + _mcl_blast_resistance = 3.5, + _mcl_hardness = 3.5, + on_rotate = on_rotate, + after_rotate = after_rotate_active, +}) + +minetest.register_craft({ + output = "mcl_furnaces:smoker", + recipe = { + { "", "group:tree", "" }, + { "group:tree", "mcl_furnaces:furnace", "group:tree" }, + { "", "group:tree", "" }, + } +}) + +-- Add entry alias for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_furnaces:smoker", "nodes", "mcl_furnaces:smoker_active") +end + +minetest.register_lbm({ + label = "Active furnace flame particles", + name = "mcl_furnaces:flames", + nodenames = {"mcl_furnaces:smoker_active"}, + run_at_every_load = true, + action = function(pos, node) + spawn_flames(pos, node.param2) + 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:smoker" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + end, +}) From 5dbd695bbc72f2dfe9f9b6ff64bf17b630e9e062 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Fri, 4 Mar 2022 16:59:37 +0000 Subject: [PATCH 226/521] added smoker textures --- .../mcl_furnaces/textures/smoker_bottom.png | Bin 0 -> 496 bytes .../ITEMS/mcl_furnaces/textures/smoker_front.png | Bin 0 -> 525 bytes .../mcl_furnaces/textures/smoker_front_on.png | Bin 0 -> 809 bytes .../mcl_furnaces/textures/smoker_front_on_e.png | Bin 0 -> 7080 bytes .../textures/smoker_front_on_e_s.png | Bin 0 -> 5340 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_furnaces/textures/smoker_bottom.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/smoker_front.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/smoker_front_on.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/smoker_front_on_e.png create mode 100644 mods/ITEMS/mcl_furnaces/textures/smoker_front_on_e_s.png diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_bottom.png b/mods/ITEMS/mcl_furnaces/textures/smoker_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..cccc5a697263d59c911d253fa67453224eef36e0 GIT binary patch literal 496 zcmVf!R^r`gx+%KDbP#r`EyHgDA)%l5J;06>R^N2g_TerhxD+ODy=;iiFwa_ z^Q~Q8oIe4)|L_rj$@ej_Z13!ae{36lxdLGA^5Xoda=-b-1^}|iDJz34asbN8BniF! z8Gk6mCfVEG3B%zv`?3g5o#^kA$RZDV|GwJaB@3C`3Z-=ja@PFQTW;^ZarW*s*cQ_% z<$M7^=8UBy3zXJO?jHbn{z3$2k++gS0Ht+EupT?a!Cvo-UD|_BY&w*cN#I-ssmNP(2Ogr=Z@Nj#{lSQi zED{6&Cif4FA7?mYQy4#g>L;zo)xTcf)JqnE?ZX3pI#;7`blgp5Z61+qtEIn(`{=lv zq7Vnmwn}D}ZABCE1ch?GNUHfm@uIY5F`e?VvxPI3@#AcnOsfdA3OWE+{iw+VP>4;= mdME#l#wOPoQ`*zo)A=t4QMLUS$B3Z-0000Px#32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rd3=Rb(2uqJ4WB>pGpGibPR4C7F zQNd2zKoEUcIh3&5;KZ(_2wVgN44e?C`GX21K8XXjeo_&aiX%u-PLMUHEl&3gBRG2k%dkCa&Ys-Mbn1o)b+{-*YSgzUTCA1_1a@ z(u8`rNN4~HKf8NJ-Ob@xhp}pTD}^yaN*YoaL&0mA^W++U;aGDnr0i_%E{Y`pvtrus zUHNOm~PN%}NNpIo;IAPCl(PMfj@K<5SJuG>_q zP4U++OG%Q=+dwc2Kp3manIy|p48U`~0Z{6hirSP+T5C4y+@sWUVa&z(Z`RFiFVoqZ z=pRA*{OT`&C>+HP|58&j+L3i3<^J|6iM)SIEqXZWZc;Fhrj*UCG-P@C!P!sGn}&I` zkkSu28-5$WeG~)GS_>(|_;Ib>B8&wfShblc8r}i;b8$(5nWR*Ina=v7anPx#32;bRa{vGf6951U69E94oEQKA00(qQO+^Rd3=Rb;1{s-hE&u=myGcYrR7l6| zmP=0)VHAcRkcyO!rI)d#kwOTRLX$=!h|!HEhMWjeh$WlA-Ii!#GZ%PkmOwH5BkG26WM!MPS zk<&7wS2W(Ub8&(`FUhquL7$gefS}LI>|7kc@|M%Gv5DEIF9xU?9EfZW4RkQSltoG@ zczow6s45OYFrp}^sxdBUc}s+K0P{;(i_swnbcT9pa5Mr?ENl>)ogvuP#itMN=2=o9>xiNofN;3oa!^*)$`NGq1;Z$cZWJY8e4jnj zh%9HS#MRf-0!S%kS9Li)cK|=1mkOM?qD2J27q%(!9~v zjiOb=OW^<$GoQ;>Bqc~Kt^yFr#F%q8Tg2_{YBBU$SWcHy02mtRu$&gjtN<{4I&F;2 z*J)^w$!kMv)C#{uc`xwATVij0x+on*uhrzT@eJN)G}=Wk1@X%Al%}z zgn!>tj!L@YM|$0EvFRel5=*-qR92$p8P%#xnY@Neu~UYM~yqEgXVCNy}U7;QGyBj?07FCp`G)d0_6y zkE`EFxtov9gZ0jR(r0hbc~Y@E`D? zPH$!XZljyiOeflKdp4grS95$Y5I+ zH|ke;`6X?%vxNtvZ<5s8^9S-^{8W+FfcTqu@Z>@CP#)a7(6~PjN(;F|d0_g_sOEw0 nJT?!;V#z~!FcwSxWjy!^fJ~{s3zS3Y00000NkvXXu0mjfQQl=x literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_furnaces/textures/smoker_front_on_e.png b/mods/ITEMS/mcl_furnaces/textures/smoker_front_on_e.png new file mode 100644 index 0000000000000000000000000000000000000000..e571d18ed9baccbe434aa9480778af28174a77e0 GIT binary patch literal 7080 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 Date: Fri, 4 Mar 2022 17:11:16 +0000 Subject: [PATCH 227/521] updated README --- mods/ITEMS/mcl_furnaces/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_furnaces/README.md b/mods/ITEMS/mcl_furnaces/README.md index c7282124b..01ddc0a68 100644 --- a/mods/ITEMS/mcl_furnaces/README.md +++ b/mods/ITEMS/mcl_furnaces/README.md @@ -6,6 +6,7 @@ License of source code LGPLv2.1 Based on code from Minetest Game. Modified by Wuzzy. +Smokers and Blast Furnaces added and modified by PrairieWind and j45. License of media ---------------- From c055d88f594ccc71d5eae9f50ebc0cec6261b1ce Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 5 Mar 2022 00:02:03 +0400 Subject: [PATCH 228/521] Fix classic superflat mapgen mode --- mods/CORE/mcl_mapgen/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/CORE/mcl_mapgen/init.lua b/mods/CORE/mcl_mapgen/init.lua index f24d76880..4aca65f54 100644 --- a/mods/CORE/mcl_mapgen/init.lua +++ b/mods/CORE/mcl_mapgen/init.lua @@ -416,7 +416,7 @@ mcl_mapgen.bedrock_is_rough = normal overworld.min = -62 if superflat then mcl_mapgen.ground = tonumber(minetest.get_mapgen_setting("mgflat_ground_level")) or 8 - overworld.min = ground - 3 + overworld.min = mcl_mapgen.ground - 3 end -- if singlenode then mcl_mapgen.overworld.min = -66 end -- DONT KNOW WHY overworld.max = mcl_mapgen.EDGE_MAX From c8aefd03ec62aa8f3f63fc54015f7d6ed206063c Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 5 Mar 2022 04:11:50 +0400 Subject: [PATCH 229/521] Add menu music --- README.md | 4 ++++ menu/theme.ogg | Bin 0 -> 456412 bytes mods/PLAYER/mcl_music/mod.conf | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 menu/theme.ogg diff --git a/README.md b/README.md index 691497f05..e980efa91 100644 --- a/README.md +++ b/README.md @@ -188,3 +188,7 @@ Technical differences from Minecraft: * `API.md`: For Minetest modders who want to mod this game * `LEGAL.md`: Legal information * `CREDITS.md`: List of everyone who contributed + +## Menu music + +* horizonchris96 — 02_what_we_ll_build_next diff --git a/menu/theme.ogg b/menu/theme.ogg new file mode 100644 index 0000000000000000000000000000000000000000..375d3ada07893d4dcedd1ba1587a4b543908b67b GIT binary patch literal 456412 zcmeFZc|29$|3A8pS&|_YGWO0?qC&_qL{c(El8l+9I*OcQK9!+TQ6xtkMN%m=lJR7S zLMkd{ItUGhW1hLMt@r1CKhfiNANT(5ANP;D-ly~4d!N16YpwN~p0C$yZKm$-7KjP` z+nya%V#N-{J_}KCVmLp-NhePq>;eN&z8;=F622!7J9|mM!AaM{ zM_mv5xJsNl?&5kx9;;5&y>v3mS2|c|{$_kr#;aLNH6LWn{3j*A;@E|8#+qq-E zzUJ1=Teqx$ll|s9^!A!q8tdwtYi{1k4_9^==~^0V8hajh^>y{}l`yr~FM{2-XTOoY zrj^HGUkRdX>D{A8C7e!q9(9p8?n?4qc*=bL9*g~&I}e}qk}!8Y?B{x19G-&F5MXec zFfV7Amx?krFBqoN?vCCnv=PlKE>P&?sGPmV-vFAxAByO``B;!z|q6>#zRNcpC|b| zyk>49cU#cnoZF_QoqJ;A(!lYK=;UtbPa4zc;TDh{-~-KDV9ynS>h~hXALMI4;4R`^t^fVleLiI; zq3p5>>s3dVU8q8kH!SWkKL@upE0TZ}JR@7i%lx0^;n*i8*?lXmHE@9MBpivJg(JzQ z_Ub=x-G-y0ak0RG7vper<*>bE&#hQE;&T!as-T>NBgxxITfQe_PZW()efrfu!%=ct z>y97y8sO+!to@cB$!Ye115zKwbbqG*?r-7dg)b`h7#uz9X+84$XyJ6x*YD+l`5qSB zcJ4&w?eVXHhZAHXJbP}BQvexcd;+|w2NEc$i~8#eA?yhKkt^k)m9Xg2%A2Nh4Jcg zKqm`d#p7ZN>qkat^D9B;i#ry6*)5kI=X62tP6E@ya>9?8V$1J|RW|U!SHi~vZ{WKV z`^4?s^K_^2$j*Jr`j$`iTN;evWB1Xx>6xX?b6301c6Og#?LNW5ssH)p{+>F_uj5y-P*Sn*QL*yTw>o9~ z+1K(j_HAs19oSi&!oIPOGWK2nUli9YOmR0t-_%=?o{eR;lyddB)2$`J_sf5oJ zn3agZ@6`oeU_xfgVWtLGSambpNdPW*j}B>cs0Qr6Ka z>;66e-}>Lx9vsz^iR$sMOCh@@l4b9c@7@2m)0-4&iTmpu?{E0uBJ%IU|I+gOFIxBR z1G)d91%!ay{~NUa|33cz75HDT02v`NVuycRx8B99!s#R-^2-y-TnLHm`JjxD_xe5c z;3hvP?_)t|Z~acb|8;Nw*T3pOZ)9eqL*{h7`7Y)f(h&fHX3E@-)~K4vLs+LCrLr^d zWY7-KdsaX~xNRPW@+-_dstl3DGDN#63l5sfUJWA(bM;J=)vd?ZDc|y>x+n7L?^8BD zmnxemZB(ypxhmn#{bgW9y%FNb*t?wsvD-gY_QIWe_wRGTo%;mz>-Sq)hX3cz`@c$m-?`uN<0;7tcRUiY zJAdZuEIj=2l--(hsh)}V@8@U9GsBSJ+0WNp9TV@vO&bdyFE=x`1b1=Gl?*rhdh_@w z^L}{5D&BQ19UiEDe6$JKTKTztc@B_P1YjnM;0_rf%hiX|IM;|_b6`RHfMr{Z??`{GxhKQruO!o+KX=!`A}NZ`EbeU25Q3tohb%fOC7~l6_X_a-_$-RcDtB zGdEoD*Wj+fo!^REI5jhrlLDtIi_l#f4oT2YmVPTE4Ho`f!axT^a`tOx3El(ZB))tm&^Y3M} zYkYp>e%8k7ZN7Gvb{|h26UxJu@EEhTpPhC5F&v_Eu0T4h+a6r@HdkJKa6x965m|yo zGF?E|P%bRaoI@_17hv&bIv_+xT_IUz7k$Jl0~dDPON%qt<4lKX!351WU|$PIe>?r3 zAO3y>UH$hD*Zw?Bzxv0oe-Qfb$Nuw!!JlLK+b#beyY}gj*TZN355AV6cbB};yWq{Y zmJ0|!=103h2QKb=qb@6zzF)FD!N*M3aFg!2E$rz}4>-StQ}YcEZzrkuNZb~%iFy(D zc8}+#kLD*0lVd+PJ%CVRuUz`GMyJ>6*RL8HZRt+%x%}vM+@X7NJ%^m-HdP$-daK?O zXMRL37v%h5`hJ@StjKYj8q!(cn6tff&-;UpfJ1O(KvCtq>4KORNQRl2-v=F8K&^&y z*PLq9f9r#ka}A~*yoR#(TrO|KfuPI6NWsdU#;h!#@6~;-eA^Pe+i@W43z&>1*qso&THvOD&xezDB*GewFa-85 zH(#E3=AydC3!e{LUfquPVAzw?AmDRU?wQ!deQzgP!S+jVAdbyA7B-G$yCgYyUx8hc z+^V-;;J{0!vs*p96W9?CFCRZn$LUP!$8fH96-eP-c!3D-83~Rv67s@iruDSbE1T(@ z1O|($HbElHk;S;B?++edAwIrZ+wcn3 zT@kO?3?eJp0a{Ct7oO&jKsek2JX|=({Ttkq3m1MxSa6SlEG}8&1|gi%cKmi-ZQWgF z`}Ua|o0t(?>>Lj}x;wd`{E69Icd>ICsGW1OkKxSRGgp&;Px!t6#h$% zp{Q>PnLkD`=v<*g+9hD(W|Gy;>HRM%{I4F!&rk10^tnj1@a*wR8UjGosoQsA*7@}V z5h4pOmG>$ocBR_VvC<4?O#wGY|9(>Jl7=!o>DV1NG3!EN&2rb|9g1T zO_>`_3=$9(BiXz_av#f6G&Nvlide=hfKzQx)uq}Llw ziFIZtk*-xlQ*knEe~u43qm86mx6T0}wZ5aLgJ*wt7)aPzt&t@j=6>LOe>BCSV|*a~ z<~NX{x>94LBvZMN_1N(E7@~)DNxN1`YPp$Q=B9VlcSJgDSKG3ygv`m}`!iTL3frvdH3 z&<6f_vZC!o4M*Jre#zr*CgD;bVJ2$17@obt;-XK7;_T_2sLYk_-Y1DmQ6=7iA@GS z7j-CUd61eLvg|NB!M%HALi2f)n%cnrfdiy5T29|Ms4GYK8UD$-%u02ncEu8ry=0f@ z?dDUHHr>ao0%p26P$LgQVQ+a_IT8KmFLnkjQPJ~QL7C>-oer}CHDgqlZh=Y7O>0h= zwaSS;WYjz|Yh`vb(JD>m57FF)Xs?$lC3!|({xh$WXbY^K(Uc7iP5c;ELWo4{E5SkM zpJcWe<=xmn^3nA4^I#dJjH&_u?NJYhO)`&%yC?9!nLbU4jb@O>`9mg`!}#~X`0xJ7 z1~~KnH8{%{mS&y#!i3bo+~<%;Ovw9Z9X9w;y^9;0Pgw?!T5N6#jHlFhj^mTcT|cZy zdC2&dJNl$1DJZOZi_{EQTkj6GtaixXEo!8bzqTgL*)9`sgO!oEyv6~C#HyCVG+qoW zFx-PnaG>ROW=2TFrK1BUFpgUUugU?U&f*lAfqHB-tKNVF_yvn?*w3QiyCiM zIM4BPotFU!L9&^adF$je95OLpfeEO*5~Z#sJ=H>c?|1XB$7+(+m1InrgNY za}!0+L`OnZS^F|m4qxcgtf~1i7${`Y5%XRl;tNMz&K1!huq4smD%?TSxsxI&sY;fK zra~nwB7%@I&(^|Rszjnc0g*of3Rr321ygEW%QQC;d~H>OyXr6cy_CcMG~IYxBR2#T zoX$Vxx^<{sXxpPvdr(~=0b^!lBIeEQu*9~|UsIM3gyMBdSkbw{9y}uZ$+2OA%qab} z29d{u*%A7kswW5imT%0PW4&0vv;Qi1*xAhm+Tp|Y4z_mocJ8jOaPH>n2J3r`J*->7 z@Y$%+QHfG809V>7bE5R=3j19n-RE-BiZB6531prv@j|ro7uO-%GSwxs7MXm!vui82 ziMTj&gzUe|lfcI=oMO`W+dT_lM*Vlb5 zE9&9~+H5d0P_NlOF^*8y%P5!$K($4!s%dubqhN)XN8W6PUu2XFn94IMM}xt7-UDup%%I{r(-t1vBp6_wN7 zU=p*KZE0uP?1AAbq_DNNodM2^rU6Dcz@LBLxUF!kIv#>+U%Qp4qxP#PNMn;jDCXsZ z$FJq!H6BLghICU{lQ65Zt*_$%{qm6mq*t6>FMx(JE#T}aZY>7_q6^QQ?qx-J5!Fk` zAPJK*kH4O?xejwIJz*CGVSl&4QZ|86kHlDg_jE&5*kKJxTn1=gNer zgGWuPf$6ebDa%3%n2_CBf&}|#vn4BavsLu+0IP?pK2ZJu*_$2+rayFU_C^Y3{0SS=TQss>+h`NQ<0%WK?IfRKjYh{9cinof z^e)i76*&q$_&JVXl*e{f^e>39zgNP}o?dCggvi6%;L)!iW<%u7mXVlAxLm%tnp7dqZBuSST6rVHb63w58(5TS0Ua#bu z!c4kUr%h+3onQMGN1uA;$Ose9T5wlK-!=e8=V!rc3mQ`dF!A}gR=+qoi-$04w6RI+ zO^xSJpn}X`>Qkoi6{c51ux0V~|57tM_0J4aJHh-H9Q@tJ!tr!En-do}lX}Q#41_j9 zbayfSG7LO;?2>Mq!boIp$el}@#9g|TCpE73eMx*S$FrW}Ww*K+OcteDVzyLP4DF3-($)@U+biK1>CLhyI5 zp1*J?*#AyK*AHy$bd``I^&WPb%5D+b(%xh4zZW)1^;?faTNQ6Wg|0+=Bdj@_7G~&* z;`N$2`p>mwhja(o5L~+VPl%RT20hGoUbc($N?0oz^h$(o-b3h%_{^VI9`|)Tvg7R!Gj6ku@%Zc4w5r=aZP zd?GV>rK&f#BIeNkY&VAv=Q8g+`W9??bICl&S&E4@LLoEbAWdSEnjMx&sr>;Tcagd& zT@W#zZxeIqNSjvRbtQc`I;RP|=FSNyBc=#@%xiXoB^p6MrD%zrK;DXVGb6a{nNT1; zF`9;|(tF;5%9UuhVAif>*iyvFPjiD%iocV;qEbdVAzE?peefFJxOU2}TO;fk89K9P z;pFP4a|P<4%57&wY|FI&oCtQt=#Fh+5>Qv z-CAERF1G^UgT}S%B;PiDQ4*pf+_fCQtM(8utJrmdW%C2 z2WkRbxF}rAjlz_=AU9r;0xW^4l6^ zgJ4tI>0pZCj#6%0y(O9`fe%TfShPr%7tMnNS9P*|{l%j8Q*AB;Bx@klmia$;3;!Fh zV0a6&q37of8U)>4TwGn84?El2*gHDdIvjIzadd+VuE57K%cL-(WrmIRlhPGAACxj) z4^S05q<$Eh>T%UI(cfJM9p>1}Su*<=pgx1gkHJafSt|8vYU9=i#`SI{>%(t5FH-#= z2(Z?|#Aa>~xDFyYWNdq;-^ru6opRVu!WE2M%U9#(h<>M|hJ`C%T>!AD#eOc*r6h`g z197CItoEe=9+Fu*5GQ@Y{~0$TkCd|eAh8Fhj=^LdLV{tjV2#tCs40IPZ44S!+BB1; zCr1Qs@KAMw(fwaif3?sQC=AA;(aN z=4si{_Anio2$9RR0QjB};+F7wfgh2Xq>ayG55_SrI$LT3KT2CzW)8i@k-fY%R?vkN zmM~q%R+IOwSTXOqg3B=K@5eOIIsMNKtD*D!VL)L(;+0-Ae{=Y|nV;^43E+{}mGrdB zi-i+|nmOtk2;$)Ic`Of~8GuPd)7i346fO1mrz%6g4XQC~tEd_Si0#4AQry{pfqj^4 zbjF0L=v!(jK24zosr^>1tL4F!rRba1;=b{!(UB2XYgg4kY_TR&x35#SKda!hoW zXca;ulY5`3@1Tl+$(gw8!-;fW2qT^O%DOcOX-yX0iOu8t8a|Ozru1@Wn_IW9kk%W^ zLf6*!^{UOBZeJjEC4Rj3ayIU7Zl657k*9lG&sPaAgGz|+X3r=A^`3dK9b}%K*k#ar zaCfp(n@MFg0It)iFDUAE5zzp+u2{tsx9`c}0qYiN^`g@OnXI5MSsSzYS>nNC&&`H& zfx#o$MYga}>T)p@0?(OllgHNPnqD(YpKp+LJ7sgK|5l&;<%B-z7KtfX;ZJy|<#tr1`&WuaMh=sozhovmO$y>eMy7+*^y zrCy3OU^V#o=Q6wCvRKFJC!lE}^!8NGLgN`$`ZwHCKt$fz`N&o#eND(yR+KaUJ{lxw zVyFx5duLj>5gUDcY@Wo|A5)J?l|tSJEBV}K8JOMB`ncchjYjLvwc3ECd(d^BG3WlHTk+sbO> z1~n?9Ca$@Le**iY@Vqb<6P=()LK8O+@?OUd>5)avk@?$zjIak-UI(^IXJ*T`fk7Ur z%vHsdx98f`emga>)+x%#=UUe&^h?IDV=hs3NefT?(6T(mQtTy32 zx6LMES*_s*^Z^`LqbTOQh&5o+{%q$OuMI_RmbM22hvvH}=q>&sOlSUh@Pf%Mx*Mw| z`E^tfV~c#oR-XU?(?Myi{65{ghNKVjDXv(YthsV7w;5Jxg2o-h#IQ?PvQV_2*_p~A zg58e_j{%VvvjUJ~{Q465x1HY(24HR?xz{48(a*=1F#90Pjq^HH-R{EmAznq50-bjq zwS?+vEO`;oOJOv%;K2P<;B3oW|C|JzF@7CTNKN8!E=dH(q%)Vq$r~!1n8=K1p;nj$ z1~>ZSNh8_Ms?tW=E64h|lFt!=afX1ndI9e<{(-ohLUAn2eAm;gb!L8!1y+k05USJ? zDk$!l#fM`f-QaRiBVjW$t>H`7G=PG+akv-Q(W_^Bkoe@)!<1)9N9*hYx*KGvy_P{P zEfr>$NEwvA7SQkv+)*Gx;Ne1Q>SQm{Uuaz3?|+NDDg@#Yi4xx|Y2^4N4s1BF2`qQW zgy@7`;m!U#-}}8Qb57-tU>wiCL9(!}Alqoiz8M>Pg9Qx|2g>@mi>EWNTx<~s`b$WT z%r4c@nPl6#5P}LLB3X}5NTG8Heo%yN{Wrli^V`E?fD7(G@5lWm1tFp3>E`0#;ski> zkh9A%7k5{87Y}z2P~c`u{Dt0B!#0M|mU$71`mxKO$9NU*Xmof-YCPQeAZ!F6L|(ud ztI1W6QW0y%eP%30v=5Be{HSfS<~0RBOCD)1;YQipsgP`?XI7^`-~n)}%o2a5zjR+v znbJe~ikhUYl{PQVU%y?z8?}1i_9IPs$Wb2FT$?vn%Lc|@x*4)ubxS-<3=c8dCU=*Q zPJ0fBU}-x$r-c3d{Yk){*$z;u2mc;{`S;Okz*}7y5$Q^w!t=Q|HAJKM2M#{}=-mCS z9&MKnWuCS2fvMO>tes$q(XLsdScq&EVI6>LY=`tESs)XKNZH~Li_qF4qjA8;HEZOnpcF3;}3W|3`xny+Luc#}(L3xFFwl!>Bilha&-At1~1M8Pg zC1&9GTPxn8&;}NyQ>h6Ez|{e6A_Y&$FVOg4S$MkFtU?JNThn@mVsVG$$usEoypxna zIvla1pa!GSc}j0mSP}DXfAP+n^Y_GydE^YjkiUmETCy~@`GeWR&w4?gPiwN}jd9_< z{&%rNl62TZf?IdPp4MrMV8U}7?Uir%O#`q@&ftBY%WZyQ5X0g*j?;ygt`q7KSE}|= zZgK;w5ZJw&>|M7Pj8nj*KP;R*r~Mnf!drb+WfpBLYg;5VeWsMfyEfP-5X(E(_OGvB z@c(Nv+b0Zcfk3n1V=MF*1aNbOlHGRQY=?dsMDBZWjO`Q#{sxe9lL$qZ@74z{JMgdC>s{5n@_1o55D z5qW+@n~nytz4;?f2-#1H{>mkt?Tz_zk5Jkko!U#WxI5`#HQ4BCaIv+0&*K@0DeG|k zifb>2?r?yl&Jmc!Ush;OQ=dlXxrtee^*VMSO@eMXG}t_wL1VU`OrEwVJpJ%oB&@h$ zLvC};y(fh|QKSct_0ACUIJarWQXbdg6cpA{=g#mT8TP*{4qff7I#9$5qFt}FYP z|B^H!hwIh0iL?bqv)l!fn4_J>L>dXWybKE2njL$B_IOkdGBQ&JqnfdvbA8WU=Oliw zR&8dn30aWM>(`UpS`~`f=)ytXf3?XHCF|mK8la;Geu9$B%vgh|q)xPS zSkD+1cAg+bx|dp0t7<%BgN$Vcz4I&rhCULPH?>w_@<02y{rdTrC15YarM4I#yI;8%vVHDy*?J$IU4`;EbH9em7ZrKYqd9MXVBTB_)K`%h zC$-l?p4#$H;_3lqA4Q6~>*byy-sta{_X{8a_INa{CP~BxO&$3Tkw+dIm$eGA?VLNZ zhya|bt^Lrywi#m36NlG#f8h`gLv+%y6l=HcS(=;~yD*v`(u(aYJ>+1b_I-EEG;{-b5kx&C#=uQbl<`uBtTudwjH zp!#~5iVI0P;ar0gAovlw)h+)ih(c`7HVu+Z(OlyKfj_?H37P^=RD;Xfx*(q*u{x@6 zHKL6H@ zfCFfzU$p@wCu^x>#thhhcW-v!{AXY-h?Mt9StD_)oShD6D7vN360hTTYYn83;-sh}kblt_y*`oGaCtkakZ`5@cQ)IhbAoMV ziVefEJI44SS9Q?=&K5VaIoh=Kt}?vcfUc|j+7m1e2cvSPFe2Ml4*LenLQ1c61Tk-; zASJgZNugwz!B4R1`+g%*V=}Uk6)U)>o(X+%2xc;I77Bz@DvSF^`E?<0?uKg93bmn6 z+K&J(+OM`zkdL5e1OUETlURJXlX$I9yIIKT07cF{B)46z^^o64MVZoMIOF(5um(ZY(mUUjFCZhMY@8LJkR~MlKKsmsr3vmRq%#(S(D=nmf&sbpo?*iyArWRm=gL@>RI3 z<{M$aNe_L*9wZO_+fQm1M3E#0?nbVnp8qGGM=7Irur;e=?>o`TW91ql)4bR!ZNP7w zAYmcscUFknuqx)CO{XQ(;j(*g$(hP)$6#@CW_B>0JEoXBg#oiZ%;rtDv{)AA^y|)e zv{R0x4nPs|h}KujLNsu<0`g(E7Ggt>kWVCcWyTK$05yf@{#GO`d7a`GjJ%!#@$X{m z5xI*1{C@Y*RGtlmOlqcQ=H2S|o!wVDyxOxmlA<1-Xxg>TKF*J2oSS&&2Sn05s$=Dt z9$vSb^)ERT6r*o3Y@#;r4(flqdf*AR zMTddwFP_x^rLgPNE2Q*|oRDj$%;*Dh(yg^AId5=H^r-1<*sR}=g~U?E;9KT7CU0)0 zzX3C&w;7_iJCMZS;BM;$)t)T`SQe^1F9c5c7cyyHipd;9f9^<}Op83-W(BN05EOA3!k%fULDRI08+oyj59JMSH%Jx*(CY!m zC;XIJ3AyHCP1sX@Sw?duD&}bIwVv5f*tx}P&}3qrs!~SXkiA03rZ*Q3!q_EuQZcyw zE~tDkun@#k@Nb1kM)cOUWlj-az^)F}LXm^kHa`R9-wvz6_avmHE>>aOY-VL~i8^I1 z<*s(c68VaoAJ;D@m18QVu$(%}dSLE3?xt6c+6Ek5xOj;cAf0~4Nb9Dz ziDYoW=c>h}*n#9ZszJ{`w}8=H#n#jjJ==x@7Ud69xb+Y8=z})+8P!_CYH>Cf6yvyo##MvyZdJ( zTO0i>_V;^R?Rs<+9A!AQa)>|rXTe=29#zG-X2|o^BWLBAv00I^wl!cdLSl-Tz$FcC zUpgJKZ@<}CE4|7IsJ_=a=duoNd6!@TXU)a3$7ke<@Ao(iBaR@Up!P9FijgB5N$Cv#6=CDpFX*HiD#*&j%`@p~0CGz#vm1JYz3c zd^eV~x!L&96gQDop!!lxl2)xx$c0=Ljkx&1?k^L+p(SgGzh-1cC^JMuz!k8`i(6Ia zvD4kFm{G%V_(iOJ#QG(({oF{d>6jOqleM3;#wQUC8d}>Al$O?Il_8TmXA#(P8#z$o{qedD`U60BE=Z)jN03vz$ z?K6;Sey{7lwk9rE*zv}2FfL@ai4BO*aVcnwxP$^C^N!sqSXN~MU6Xr`L&l~@82l@F zJR9nAh$=^Iwy?eb@c!1^5Vsi7kvFx#6@%gnYriXu?C(fc8pAew2*0aIxk_N0n9f{| zfiWCZ<)oL;Arr?|YipuMkTLBA{+IV$K8ujT+%JdxW%&Q>0Q=2O42Z!UD4@K-So(UG-5`cn>+g)ov$?s?96aa3Jv&5Bf=%*QwXQZX^zYJ~<`79bvacO-sh(upWI~7tqp5-k);U@tjfw1K zTe4KaXbsPulEn`8Y=;qe_lvz0fN;kllE?}HWvSV-3Ua5+Z2cy)O>09hA0BiJ~ z`4j+@99bVNg7}&$ikqh>`||-$CU+ItR_uMB{Aq6#Q8yfeM=8v5(&ugv z1^;xsqt>_bQ5;EThJKzBtKIx={|xLSA@M=R=X2zu?m;$gQ2q0MS#W8$Dy>I4+kIc{ zMxj5)!2|s|4ezCe2x+~DB6$_o=le&vM^KJpac+@ag+Y#Jc6zw`Oh4esIfn8o2k<_} zOR)@k8R*#J7E&aBE4Lu`JT)ohyH-^=EE*D^lC2FTd;rYJ1O+x(#Z^=uj zLfk&kwV`!&)BDKf#32gUqM2LrMim&mAUOUti&)VE3~Hc%juknEVaU#Y^$Oc{#c* zf0pK#;{1t?kk9iig!LD904qu!ZTU4L2WqQT@Ps7U`d%D_G^r| z%7g<;jAh_Hxt3Ml@bQ>;0~7R;#%ZgEWu^aYDLf~@whiVRTQucr^q75g4 zo#Sk+*2CBM9oc@7By;h56HKBmBZyD2O2cV*MP1kjAYni%G-Vy!2ofv*&2b5sZw#HH zh|h1`EDorYTomZGvR8ZJ1c+->Q6PpgJ{Sib^qbm#(K{pLii}d1>9AaK#f_m0-T{&B zXTGe$gmq#yL3$9O&o`lfq4(#wu``;rInCF`5x?~h(qSg zosdpy3kGXJHfWo|W9adXUh{6E(e;cF=^z{GdQG2Yn^FM&?rhyxK*&q8-lhZ<+qEQV zC>nAzfeLI`GWZ73AQPpFV$#p+U~#^FWr@ihD**YQ`~_)mNT`R!k~qCHGRkbUJHO;# zqgc34ULkIqAcj?6cUOL|g&{CnZbI`*s2$?zOI_q{!EU~GMo$($BIovl4GIbvRfnoY zrOzA{i`L34n{|k{#EaYgd+>hiw)!NBm<~!7yM5s+$S98eMM?pW_FDXYM?4;Fzfy!F zFM-xN$ue^N%3YZy<74^%?6?n6O3nN{C)t!}j6;RD(jJbCx)O1%*3{m;A_0BU;j0KL z>PNSMIr`SBU2fANy5kB-Mqf7Y0#<2zDit*I7WQe0&}7Inuvu+UBNxt_Z69{F2+?*u z3QV2wybYTOOG^5rz!Xk@2jJ3bZQrLSlHcd{bTuKq7Q&DQ>#U|C(ywQFtYXJ^$p%DW zM1l<`ro}O6RLrjGed!k#QvTWS_cYu*wZl$fNf|Ox1x-x5Xo9{~W>Z0?sp`~bn26t# zWpBMRP9Lj_yP;1K`kCK*CLYuHSyRkG(&tiNZeo-`Fi0;4lk`1BVaa6R1)lzd zFeYjMmX~>#2eYMhI@p6*N||SXVlL!F@XdZI=OB!(@|Lcqs-KF7U|rG6ZwreUA%50o zA@i2G?zqly-DmK3j51shlSi@FpL1C_WAi3*&0Uj#TC&6`{QikzRfRdeRTs6bzn+wQ;7X)MWiQs44{Y-vdd zPg;HBfkv$EgG?aDVK9Gu^D|({vw;K0(Ap4nt$R=MBnG6LHSlur5TC58Oba~6Q)?1= zGfZRS(QJ58ESfPU*FOIVz`@Jvyq7A?OH82zUXxh(IAX7AzbFj<+YMkSj05i4)S_l6 z=nUB}*TW8ujeA6%$T3PJU+%`y2Muxor-eLaNMgXH zA2MO)es;%*dG+Omkfd_GP&p?+D6<-ggYdQu5r~3s8Y^B;(;T3u= z_eyeNJpVxXKmcej2hl=ro}CK?G0{40a?W~@mKY*(-jqa7z`!96+2MN_{n9!niO;`e zwt+0-d$E}S5t0pE;rqyPqB#Y2rcVIsDj z!CZ^x0qZj<7xZ-xIfVdL;dVhv6idz&Nd`CetOqPAXK_U=X{|@3Uz@i~xHY`Ev|a0? z>Y&H-f0l1*J+Z(H_U{DYL*pcF$VhT>XWf!n(mi@LQ*n*IbfoAQycHGgAccrxB?U|q zwqQ<+`pL^MhW*?)nD%s4u`)EqoX;UlHiVVLJ>N@xbJU)`NcK z-J(>vTi3DFjsj8dmqrj5?1bs13&R$H#qDm?$&c&Bd!-P$s(mk)M5RF!@Ox&g%M-Lh zu64+`@Jhe(bzZk5}_T_W9Ld*#+TRA2P<7Z~@JuDIPUYCg@FO9)<`1qcC zUFJt|bI;}{O%U2`-`gtOs592Knh6!F7k`T-Nk09j7>e8bw`o%-7IIUGrX9y3HTI7z zSFMQGz_11E*t#{U+JJ$Jzg8o)%8$sb1`lZ;oWp@`+V#Ur$`1CkfJ31BS9*AseqYi= zmx=IuJVpIdYTcxK>$*OP;4$kVN6Gu+sF1DpPmoI(=!>|8Px-{-9a_xJ=0 zZl(!Ju>7QodXJ7W)IsDP|{_IMqf()ZP*#0Y$ zw0OahZ=Tw&*?v5x4UQaS$?HL=%r|k_SlcTcy7^^%FBhzP@i)Cf-b3LeQUrAG2R^HA zSUtJiMqfjI>Zi=hhzvk=>a+?mkvUO_J%-3$nDt!LzDe$`ov2Khk!3;&J>J@|MS@!p z46y%Y(?4jYA)d^Dyjt{Z^B+n-gxy+O zlOA4$d7K;&?>IIfx`pALL76qcfP|y%wxAi@jDrJY*+}Qu|6257(cVp6;ZPp{1E3S7 za0k_&#ABN9z77Lkt-Z#!_xs&M<48X8AT_7rf1Olp4d^qwaH77q?d?K_EiqysOJk-l z4|ZWNkjqD~7W0ee0&(&jyY2Aiq5LS|%(*qHf{NfH?2Ek>(6(Y(lNqVvPxkuZtEuOG zj}~n9$(L6h=O;YzJH-ARyPig(AsLNR8K zupmbKnvJkqD`WzUs=W}TSeg$)0?$S}ZMl-ATlaqJ{xK;nlQzE0i^L1oA+U4Ql=9Io$K$TEc78;mSCtsNqU6)^t3;|Dc-Oc_tv zQeq6_*9nT_g205H8Ep@!W1$v#G^S-=y;Acvyu954oh{Af2DKZ0-VbxX+}Mh} zHz$1ahfnJy%Nz|}D)(ZXhV3{B1%6sdKNvyAuruUWTGg_CU~+}2-rni3m$R$e5y*kLd)aepeR)FiEd2QhEYhl+&X>uQdUyY0JcIE^Go1Hz zBr89EwG}q{eTw&8THlxFjkQ0>#|T0rW1 z1J4;$Uv7*eRSw?xt!hywCZ{{wj$uIWC39B$uB9}p2A0ckv1%NIWhCR@vM^5NKZo?K z_Ust!0KxPbOHJuN!;dP}8WoJxcv=*WMv^$6r`-W~#P>)917R{!__<}k$09nsyEO6{ zWMWaHrHm^n&F{pSQh*4pA>0byMlt~(P9BIJz~GTquYNOsc7PzYowCji>LYHXUp#~B zik&wYlBA=LL85YqPnd~1s|m{G&9^cyV%ehp0UQk*oUAv(O^ShBIGz&Yj2Y%h0sqhF z8~~w*2z}JDaQ&Bx;^4AmwXfhqL&it#ZEyRDl-)}iOwqmTy|AsS&utZHVNZTJU08St z1@u99r*!1z#CdJ_Ybb2aNGo)L#6_LEi`5^4U+Cfao3|L0Oi{eoRn+`YD!imPc;Ly| zcA?`PKfcJTLhhpSgb=o4D~NqdUc^%L5-r|J+^<@nedk!QC-9d3&E@eHv^>!VKz9~OgR<+&%W8hq7e2c&Vb=PR(V%)J9#UW8%fjXSF{hyT7X;w=vu>bj zpjv&+T+PS^9QwAiRvvP8ijeZ8zn>V^#4VmOK!k`@9%yO)<(<+ghq0-U zwRdMBh&XpIbGe@sK*zxzA?P~z+mpPQUSIg55Cqw;@K$}@&^{=B4PU+syq1ONTW-3n zvt@5F6TC3K)bm?prg(m*c1nz|RSiby&dfk2XxFhhOp_<>XMo^nLf(|`OZb!yNjk+t z8=`}1n->>yEs3&)Ww9b}w6G*IYCBRGaw!yEuEBPREQLvs;=0S;dY}hhf9T3cyX_9U z7MKgCzOBXT%GaQ7{U!VdV?`YadvEjS`jj{Ng}$x((g=_!@9KnRkHsiFE5~z07nS#M07nMMP(0<`13)ZLg_3c*LE8l*S+3GVT z;4o#0k0CbvT-$#z{voEm>@Q@VLUjmsHUDLWvQ5RR0^6ue%AS0{+dv{1sev`2fK2%m z3&p`cQ2Q)IQUSDRj@n6fHP-KQ>yDGlYO*QRZ`-HRZt@^A*ab*H`SFOyv&mrY?N=<} zZF)Rdmc?yA*!*Z}l~Ux$Ou<_g>o$1X;>M4%jn{FklgrSZgNNvl{%Reul>c(T%Ipy7 z{^9Bt;Kl2rpmW!oHB!6rE8h%-U{hgQ6*OLly&qJPKvQX60x8Hp(x#Jssb^JHi;06t zy>uiI1%lg zu>CTik76$>dYS31fLDYT!Rz zsB0*WNxQA;!)&zck9@C%8j0z! z`SFg`PcEobF^ssX3l`FB4kVwz%PsT7Ivh>qV3j@WFYSjRFK(|MUF*)!-41`b0ig|) zJ=h+SFQ@vwU~VuQ$bTj6^z$Lsd1u7gzGYQ{}#r%mN6{MlhZo?Bo7TpUve+BkdMoN z*L?0ynwxa|GjxIX8lz?lU(YbaywPS1qv(>$gCz)i!5=fjnFt3qVCbkj8)VBYP=oL&Zg`2lXCD5;_z+7R9uXo5mW!SCn@t7 z+A*xF>CPn(kU`?%Rz=p%v2okyhg3o9Nu_IcFA}69TrvH-& zD+Koo4Z~uXkLC-B-XiF6)XnoqAo197`0qq?L|{l*XmH@^GvQQ0>Y#PdPJ81+lia51 zM?&G9-RnJa_7#dTqOrWxAI=U0s7iT{8z~mD(P5VZbMv_u3!VS>*Of@S^963pRmF{3 zUhu*X_4y!@pF;`YLbGRlAoA~>!r;Y-WzfAsiye~@8pbAdfJVa;;bky_#K!!q?G*gj zaOJ|*l57+|j zzfpBC;&ECE(fyQ2jQ7hBkMV}jq+z}G#`qVwmE6O`W@d``@kTTP)>l?k17%qj`z^A^twZR{yq zKiF-ls9hP+mpMJ0$3h>BMhYowV1w~EI@&aW<*LW=0250}Lch#|)fdt_&E;BQ`Bb4W zrQ&PJz!%uy^>+AlT}R(-(L*e=MoFPl*lXRo(VAkV`Z=eBNtv8+F#N{8FccQN-8 zzRq8Z;_5b-NeTZ_<$QgLn`W*_uJb|)G}zets|T~wtAJJFnY{v8kr`u-SVrGqg6dv&Hj=eio5}Vp&$n_n@7X0A@aPA|XO%mr zM6@iHozuRIyZQZe+cP0Vp3McXG&drIB%tbCEZ0gi#!Da4SMeV-x*IA+yr-10Z)8tW zMfC=aOLyD1rH;+Y;4Q`?Gu+b@yiMsY>(0v1nLcCtvHxrxhZStSMQtnEh`i#Kmsd8n zvC&w2;1=mQkkq+u&9^F=7XvnokYUtzCch_-}%J4Lcpm-nO@`C_n4|G_)xcbgmx#O1(9^soNPj zWUZlp(`7THGXcu`vylU}V_Di`?Zv%=f9=O*xZ_YxGjNI#tPM*k<5&sckg8t%SVni= z?~RxkKJ)186X04nmEhS!Cm5(G_OndOv@Pt2NmQ*OJSs;ecFaj4RXUuu-vKcF*%(nq zoA@7k9m$E`1ZgvDLm)94b`Mw2!>DLBNMj%sltNIfHj4Dx+iLXNOS`WLq0)z(U_(?$ z#U350<53zV%hbM{e?fz|=g;qJ1p8bU?iFUu^RXz=W`%u@x4%ELa6aInyTiRkD7zE5sj=!;UyBrW>$}Vj zxh50mz4Hkx@947R|G8Lf$tbYOM*56NWYv|{*se44t)WDQ2K9GylG5QI0e|`;J9=l) zmNH&4bkXatfe#a0SeV>>`~9ULkqkk^(-k{5qX`5|8+XuVl=| z-EUsn#0=ei^5Y;AkEt)W2(O>NoS9vc8FUCyEf;6yO|rbLg?`I8Os7z*f}2-n#uxi= z-B5OQhVT2!yYSp1MA4T+LaE3AxJ5wGt+WVT#O#*t*Fu*l#uzb23^(3V)U)QSgl5!8 zTYfLWG_CT8I>RGi$GsMD)cn;8c$A8pz|43Z);vmz8HUzcp`Qg%s@M*PoS1DJkYjy*9in5^U@!oc`YYp-mvd6n zuK1F2k7LTa%f-{;`W%k;7n`no9Y$P;>1R6)UYFN%r3OS?Edy$s=j5Nl*B-;8jsLuT z5Uq82)3NSp2YAoU|7eC~Ce1`hv?uj+H~gFd?5iMItR;N)7SEN4Vex}r>b(BS-0Oda ze5|YMuDj**!8FZ&5E&e@;?1nBv0At$T(EOLwzc9r3Zq^(^v?(@beL|%a%0X<*gTgI zGy|dEw{%vV+l{js-BR>&&=;XkMGBOoR4|DqfruU`0LahCWWb8_BOzOHk0IT#0^4se z0$(z%X4SVo{Hyn1I`jpI|Nh6ztfs8V%I^mg*T{Z`uK|!YI>AsdJE}LZL;~(xEY6S7 za#uj_lszHF{p}e%nkT%8fBoXfR9iooo!1LD%Y(Ekh#3GFljWjHSCU3fMya9FJ-Cr5 z*c|`|ZOpxkL-ZQo<$8!39sz)QKd{JaT0xJ)qDapBF@|LIdx*XxddORtkRRf9+A9$P zUT55vx4>Qc=iqZ|81casw4FCjUHrarpyWN!=6TN#>!Yegh^}LXMIa-v{z6G=bfx=E za`au0nI-BHN2^bau`g$v28hE+4{|DREvk4%@o_)wx_BBdZ5gqOXP1mIf&w$z0b-Qu zWO#rU+>msF*PJ0MC0@s7E4?N+sHR#r*IO4}`lw0P>M=0f>}G9N zC2;_cDgiN5E!pRdassSQ_HNF-V)HrRO$w9~D7C!}890!7UQj3ht%kYP7bv_sn`Ok> zP;_abBG(39d%{utOqkEVU99e0-F=0jS&0IFTPRF^Y>HkVfajwBm403hWQ_gt(6CBW z3c2uOU9LEK&5)D$F2S@hMP;flvmZal&*RigpLlp= z=T8`Uc3-|`(*%o^s9UCJan%KXI=Oau2Kw#QSe;ApdKjG&b|HpBr=2-PI}vjnk}mJ876uxG^}EHI)E000k^yTl?N%haAtR1-@knR)f)~IY4>t;3AgPuG6I3&m-0|NX@t=0J_fneQe9{l0)^zLd^5d8X8yX~15}nhxP@V6q~f ze)MbObQrJ=Kt!!e4E560XvJGBW%@t;HQm}ZfA{c} zZSjl0(v#*O)N>i)ikZ(1eevHu!}@K59mD6*9Va1gdvKz<#qSCBl-{L`I@6P~0P4fk zMCb3JicX4N+Z%SA@qKjSkj(WmIMEZXVXj~5y5pR@)$&d~fo65PX3Hroje)58H`9?S zt#B zvQV#2C^kKjx&oIx+!wVV8tbLj5!$%zm4w(K}Kz;DO5c0 zx;Z2-Wn>8I0k&Q7a-}b&2d*SWkgjq$#K9##9YgNKJEnJHXDk{O=(adXuRjJ1N;zpi z*y0|nUZYpfJtMbFXVo~vJ=`wW-#pVOsmv*;Q1T$!1cGNh4aD^Z%OM( zRqtXc?@uHY*kOLVcq!rIHP7d3!#K)Afg}qo0b){Fl92OpS|riVS7!4N3JUTfxBoP( zxp^>*d|ZpLd`q;h2MPB(WXO`7&(&GCN_6C~A|=8E4;|q61bkMnB0ta^CcaKaMk)2s zBri(lEW z%^<7qto*ZhlB~uN#RP z;{Z71z$yp}tp7FYS7JUL))`*SD>&CkGIUHz9C$FQsQK1l`;?OcQw6U$G3S@#aJ9Z# zlpW)>Gf3UuBj%+3Q{7v?qm^>6$i($=qw&LM=@u6!)BBWMQ0geS4k;}X+HnbJ8pzw7 z8_k%C7JI=r{iw^WzSMhu-_>e2Y8eGgs+m`9$x45hiDMFnR9aB(HEh2RI&6=_5xsyJ z)Q4zluL&yWDkrRSME@Zz{=4p)Xo*8)ol}QHr6icD4n(veoV%P z?iak_xDD_%H&~Jf%!xZOQU4*a;K4qf&^Nv^>zhzYRihM{^*BdAA&j$LWZ2~QE7e_8 ztyxx`?DTF$lUBWV%lbp>3BThLWcKL(<_!_YB96tBOX{qZ>28Op^U#k7M?4CXK-)Q% z7h4nAGBwah&khB;HEbAgRLhj?!d=(8)SKRs9_EB#Q!dy0JfL9q<)++8k}{`ys67B* z{p|Kr#W1mUMvH4p`>d5v;PcyV8x`Gt-ca4o@z*GSsfNfQ>+tk@^^IU&x}6~L`lBpB z4kXyBL4up-fC$FSEK!tf*WKXP{Y_B)$ki`!(MaXOI_pHuZ>0s%*?m^uT!_BiM=;gt z(798g#bzp+OVwRV%p1z>RtDj{|2x|M`GWN-H$%|Q*qJWV3irkDUCwBJLJ1pjDt9T} zK10sC7{7FE@6G`!pi_QLEYzVx{sWhGDILJl z@|qX@d&9lWD{pa<_R^&B3=m>?51s1f@bP+k&*CaI=GJdPm&XkQ`uKgd_R6yAP~W)~ z^^=hfnr7I8L6(WzM`5XJrvNgONq#^Aq7PzTdgl(1N{2}SE*HDAtBi8ILR5Md+(dv+wP6D#N&N?&LNdYu1Z)EyRFUg^o=CS$_97&{%bOr_qTI zALkYJy2Bc?4~N#IeXvYP)KM_?FJ~a`>`qm>LDLtkN|D#y?3Z4lJArM80I&Y=yGb#rU`+g=x z7CiFl_~b_}j|nRC)H_6Sc`OlU`T>cewBPs=?X{eTenv~Ms;?6Gdl0!y1k3XGi`Br| zc6z9DG=|=ozL`G3(@;{iw^a!iYvHl2Tc8sMk7FQ*ys>6^{m<~ekd6bGUL3u-Y1*?# z_Pq1H@5M@k^^ev9i8HV-^Lbyon;fU+@yiI2q~|}BxBdui|6^%xw`Gq~o*QT}UjvQv z8)}6OW>CGONbvK@ExF?5B_%NOf65{TXnH0U5rS&yLJQ>y2VWD3MAsn$ z1|ba)yS0BDn%bbyb~-P;XjD*D=3)ry)*CwfRO@ix`%n9(tN4gAe^CTutUALL1`v9V zoJtR(DL97gCd{r^MdO}CyV9BFG--*GZ61zwz1PO;avbrzJpC`6_q*rdfVw+5@X1ZW zqt>#8@YUgb@CHO(_FbbaW=P4<>i)+$N7Oq7+kQQTYuD;kgBgj-zf?VA1a6MRFn}?C zNYcu#k!yesUN6VmQcBOR>=@o3*DU1F#Kc0V4E z#KR(A#LRP?it3ww1rP70t}-d`7Rs3ED^3hlGtY*CjF{b^-_`DE>eFmqLzNx{Mf8RR zdGS?jkdv((2afGgUuc%KwhPE@kqpHFEd;wcM+I2TH+RniQ{7 z=w7*}E$cqqu@L%!29v`3p~8&L_Z6t1axEDyuM6-ysLoohPi}PVdQN4yEGN%k+yx+- z7GCD6SW*2rj~S}-*QH)8q6f=d)LzxU3#Xd#s;C4ChLao4w2zD4tO^vYNcYFC8)M@5;6bWp?uLB+F)*v5%3yU5wYAAK+ zFNbNg6I2TQI3*%9j1m!fJ~H%ZB#nN8c087>%uY0VQ&#JV8^aXsP}P;F}*4eRD58S)LkUi7~ot)DOEvl*m5+Nxra zv|ju0XH7(R&R8j#Ko6o=^|uG0REW2va9iORATKis-rGP15@=mwyXuAbWViR6#!VkN z)eNJh!8aEN{&=mBGh<4xz%j?QObJG%T~k5u&7TCRiC!9};aGawb1j@v@!S4oC7Uyj z7krFiuQFJ%Z?|+BWDSzmn4`Nzyl1E#hj@l?V}AM@v~fTlc}T&|fLDF0qZc>h%QX(6 zjn|<$0O8XBKENZj$9q4sMqb5_`2CkNFY4eK5#>M_&y8i=EIqSYv3|A%^mF*lrR(}$ z;h5fi{v}vUZ-xcx6kLeo)0V($X=$9=5D#HX*rk8-z%*s>Wf+JsZ2a?R9cbo@+v2Z zFX-o8TNOMuoxwW!%J1G|T~1mbQ=NAWocP+f&Ao5)ijO-X%3}J#tlGV)@`TyrfK=1X zu_+gszF{Ao!xJa<^GDv-?}F%Y)hv0G*>_gnW3v((W5V90nL%;Clt}qY!FJ?-f&0z- zo~a)>zJxTIjpTBIrRQHYZ{OaFPtLzAc;+T77|p#`4QYA50}OM)se{667Ki6_;K$wF zgE*yswNv+^YNp8Gw5azmzIOPPWIhVpM23U9x-sReOqzk{8uctvh8p4@10Py!NxZ6M zSGs6sSTa(rkEJ%wO@uwy zZ;7GaZ*5EpXE_;?HX?UIr^QVILTwO~v9{4TixTJtnk<=z0;+@;h7gUewXoZ`{Bc~t zruV!QOMj@H=u~Cr4`s>yLE>$cjfhG2u&jRCL*f2;LVtO<_fU|&yi zVgO=x96ZTzJM!(GN~`GWWsj%p1rswM;{g?(mNnRV#Ue8Eu{Lgq#y1gROX72yq3k6W0r=Szj2=yx>YjB z_BRK`s#pJ+r;Wxg6FH&B#e-N$tzm$}cTX-k_=vjVk=@4Q;K@t_#sz-YntYqFkzCc? z_iooor_=A0Dxm(s64FZi2o2ib%^V%Xqmf9IWwJyS5*UH7xpa${6F%Pc^toT1Hc6sc z>`;*C+$ogLeC`}l`>=CHiL~eq=8MX#!keO^rA8j5CWn`o+bTHzi$mlNvL|tPyS~|M zo-lI^cPZI)T@t-20^g2l6f&e8z$#Lypang z)c?LPOFtwmt2p#px|r?s1tU=%4p1Km5zXWzAsu%KBVqLaKEuGea7Gt*bI#4u7crQg zCBuocHg+5?9O8Af8YX4wA(l3~P;J?=>YA1HQNtuf98qS9Y+uJm(KX{A!*gZHTzS>& zVe-R)(ai#8^N5sVza#fAU&qUB`wHCx8e2+6MROY&BuIHkgL0>yJL`lB_bZf(;89L{ z#E;{VUmd?PPt>Ls_9$q7a}%@f=}@->acAe-TlObND`AB09( z7n65=kvad_z0DhgVu?n(hG!Tw6zj@{G(&)j2#aVf(_)}ph;6OpxYq;^9&{3S9P)7zC7voe zEew4zV*|G-K1Ug4WwvQxQ<|@cxObrqj$)FbTwVnK7|weX00q?&iv**1*S@m9FRU*v z_?ZKpkiv(_ZrdBDy1p0f6JI60!_wo&eff7Kn_^dh12;69aVu|&{}_&3AZosqG@-XnY+4tm(`E$05@Uz?N1VU~Y<6RwTeH@ZaIpyMMCm&-I*7 z%Y9o{xbua7$2Bmp`u_Ktmu_a~PRilY{=jzHXVW|#4o;Z?zV~2^mih86@}_wZW&P$u z`RhA&>6}V1(`5zbfOgN!X&&l6h%`6{0YJ?h?11V$Ls}$gEr_xxqXhUb+&|LMmX>+^ zX%b`6h+)$f|C>PFZ>WiRI#~UOpP(v>M1uzG?Q{5QV+Nd%1OoW*KCdGh7=ptYkN2V! zJ)3g>wI(N~MJ6k;-l-vPYpE4V2!;5|+6g9JGzinr?KG6ZXZY*w;8hrXm=`5J^WEPZ zvbvHd^YmGEZ8*0z#c~CfKX_VaY~#i&*spf4^FQ=`N{K39$X42U#eWZkXE^O0ITBWB zsH4M7u?us7!sDzPFZ7Wc1JE8-c1#`F*2px$&_OyjZYSP8) zyTfE8=k_Z+8DuW&+Vaj3TsK**=@%C{6WV*d6tGqJbe`9aSaa_fC!Fv}C?MJ0gpk>m z<0#0lGOf|xo3}(JE(vNl)G@ueR1sB2Ef{?T2o8BkCBRF_ggOZ6z`f}v%!Ecn4~BpK zpFsNm@jv$S@k=yF(~h5@$54((goQZMu(wjN?-RuiE`!d zOa?zs*xS*5E-z)Q;A7Swwf%E(IsLv=@nS8+F1RRf7C9O4dY;q(_EG>9pVGv@v-&q+ zz7iI&UZ7Rws4Q8VCMeoT?YL&i?mww;!{t%V-A?tjV-i=8e$Hu<*pH1(R((6qEp8|1~W4>dXdS&`PFy`oGp%z;6>j*3p6cD{;g zJ=e!!FCXW)F2iUXiyMAWwsAYVF0RYG#_O7psfRwE)b&@jU1XqSTYq&4OOqf$n5!j| zz;)0K!D9$lfIMXyIl)Njkk#FHGAsM?pH9&jT2QN=(!BjmqoR#gZy=Mor55wr9>S9y zRv8KzyIS<*)s_p9>A2LVx2!5Ke{_pmGnq6|NJ>T*pWV*PG)EIm#hdA4$%w_qa?!m) zLQqklGpYsjkfKX0zrL(7VD=@Bm7VksJMA$9&Z8%c7n4J7-i~6}4aCweK^#!poGD*( zGd*iX#_E%2)G}CS%74egbiTWr?63iuOf}HT-)8E5<|G;@B5YQ+9ouDt?t3ZNDk1(A zh6yadGl0m2qP|j39KF%`7ZxwSo^vC4-+X2+PTJY!{J!#`S=4czZzpEl9Vqm}k$xd@ zzR@WEaXw@)4sLmMAwktcFpfI#9{UhAT6(XcooB+)>U%hS80R*WU5ulPN0Hu`CTzxP zFK{4yIEN6$%Vmk+8&HyU*T_fHs`uHLXj_)-mi<1*dtHRD3+lF?dMA3=BWW=_+KUOH z#%!p5xEiirO1yUt7JhN%S@7F`zv$m}ogU7Syw`11XLdG=`uNezEmGVCEH=V;1 zO9-I5XX+=|fD#Ii<%$1s^>IH27;roa-v&wkLr(wvJNgv*I8QaZ+GOh58Bz!c3rR zHxk|-u<}oiV1tMtDrdOTZ;IrVzQ4MaM_mn}g)y1}ZIz*4R#mzgMPJ>OIFEty#{B7D zqyLqhW9!_LO-z(c%ugga z#E`qa9Xqe>;@q2!_24_DrN{x;7YJW%AQP;_$s8T9zE4K80 zRB?xEVl?$2PtBHQT2>m*t*@n*57&)1_6^G;)DDieL0Agnq9otDUZL-s$C#gcNa6Mn990jnIL|ZtvdU|cwCzcZ zW^6LvDvTMP_Gc>UXa=b}w?V@o+ny5{A~|&Ww>_{0w~W>pP5B8e;BaQm!_K3Y7NATW zrop=SF^tn6I)LbnvY`sZ{^<(<%94CRzsowrK1j;Bt|yDCyZs~4*(ZFTNo(7Bt7icn zj(6%rSk2k=)ckdn4gCrkKs!7PT7KHIR1;u2#wGs!GF*MZk#i%ZSs}cCI%?@-Ydptg zoen_sy}(OTiO|rTJ~WCN{BEOEFZc!^B>ijyqj@=RYFbw>2y~oU0Yo1Kuk&%VCoAKK zFBAzdL6!@v(CoG0Zb2-sq*P(LKAm|%!?9^&#%**o8KK|O257tHkZNqWB}4r+U}Nj| zFPw1nhw{{kh^vhpC`%FedC*Q~!8tR~QsR3p6ik3nV0oxG7+oq7gG=Ug7Ydps}9HxyV{Eg z=G#asgTE~{`LTLOcQvjJf_c$1xV@R}o+J*_Jg`aByP}rm5>||_pE)ZX%?w!s$=}~Y z7R1zc+*(cJJKx;N!NQ5Sb1IC`pMtwIIbdPTPcsopX6vV!yLjO0az`KTtKKpAS?(;Ly54W?Q2fl}>h3Hkx3>+mRf9$X-T?BR*gz7D( z(Yc;3+r=a!pOe{RQ+U{F*lm2*C1l>Z8bPvB+Fn);S;P#eIQ&UU*b;uv2a%cmf?>Hq|7oG3nOJ}h)#3G z$OOn~Ji4b$*s9D(@xW<;ZgL+s0c_H#GZxVfkKa> zpNydwPh(pXZU$N{e!|)LXR(3E3(^A+a7wu<{;}HKGDq?4$IPkNBfEXkWb{F>ol3g^ zReTU{{u^t1)W*`TD0xX`qm4*$nqp8>Wxa@IFhhZLfRH-JJ7!|t7YBtg$X!7&=Gr8X+H<$jXI(*Z&;rqURxdrIbSN1dhOf8gVN*KYx7_;=n zg4dylH8xm>FMKl zAwxrJU|=63Iy}}1J*R1aHBBBTH$t5P1Afc=q4K2!^FoNl~Rdb(avv+jK@ub5SZ833?%t3-fO`;;a2zpYm_)Huc zyK{{G#uH@x_h9EPEG{SPV251HrvX?Sy}P^S*7DK<%AH}K`k*%1%0gcnMyL_hx$1BK z$`^)PM^hC5%1EJ$20!|=+9&US5kP!7;T~Nb8G(im0jD-hQ$y2y(U)#5E}SJxck1S# zkeD-$V;#6>+M1YFPZKZi1_kCUco|7a@qg}zoMh1~b+?ycd z><+42wJ9uRPuVz@B_Tpm(ONSsIo;>=%;d7PV2lPlg((leYJA?_Xrq++s*ivjO+u-8)^0wE z$c8N#RPR`?$ioLkcbAQOf-uv=*CIwq@d8!dnf6pQy2w{5&-w``IPHM7&1&P|;GFZ} zJs8#|Dw?NS)9w;N;EBkEnkzLG_{<7L z1`4C-K&B#wuynlc!`P5K<6IJ5G^9;mr3v}fs5nHw>FNsot)y(=mzW%|0W&oj(f-gr zQ#|7TOB%V6@bP^CYZlwQg;C~&sgf@=ZPW@`b49SkJS^}jMxKY=u(s({6howdEGW#9 zGmjN*D^F&CEBbA#rDlxM6_p~=JCs=2ig0oxn}CDr_Mz+?Fg(`bZqZ88Qurm-FbW%i z5qB?sYGroVrFTpH)uE)w#(<9J?!;$=8$~^5jVOWQHY{Z{FsZoHy_KrY?;`S*>0b;l zare%Vn-?^Gp;MXGyZ^e)Wn`Ht#vKFK%q`GC{Ncs0n>=Al33&p5NLk6O*Gwh!1HcX& z?ya=c$9!3x;K>46;sMB#>>pLuc<)d!?=8DVLqo=uEjb8jLBskhR)U)c^UUE4YPoV- zT;({Z0Hnv9=2d2|#(3$>jST(M=ycC;r_#=A!3aGE>>gIJLMc_w8s{by$^Y79R7;SP z?SCKe*7Sd~ zEXU4q2E;w<9qv@39UL7Lkt9?{i$fQ}>vGC2f{YGytllFX(=CRlLj^2^i|hsL^ICUG zGtwQat#(PPoFC5db&PM-irm+fcVxv=QQ{%li0Fo~4K#E_oL5tCoI?`Vyu3?VNgtG1 zzcHz(cv6e|t!zD(05{>ej!b&S>#zmIb!rZde)SHVAbhqxDp&*AR!Xx#Stirw+627- z=kzIVi7bGONzqe^H1{`e|Im=c_^jPikbWP^Kg;e2?8bavcr-C>w6EC8Lo6|+K8!JehXUij&)y#3E>oib+^+0`X)u&O94(LT$lT<6CE z{|CLDpfqfs<8d+a64A4&r9Zo51;zMWqCTk6z2HEI-%zvDeUmx+$U9kI^vrE-G|{fN zJ2SONvT9iSDFPi}V+bY?tG<2$HN>(v40J089tWdWlYI9U^&K~AlV!Z%^E%}IsJUfa z^+N0&{>8<#>h0BiG-{47baV{XG^kVpetB0mjsWL)TsioFKCUKVVu7V#NVaT_q4e7; zzBU4?U;h*sd<0xFeJ$`}0sN{=yf+V;#n=wOKcT1EJ*DNjo>N}D34QZoOZLt;%Y)xr z$HCD9j^A*z&8wso(7E~1H>q>Pr+ben#i?FYPYoaZqz|?y1c-v)A^VZxDu$+gQMV4RR2ErpNK-mmwv>qSkOgtJ$55VpXGOJ}SeB+mFh+p}J?Mpsi zhEvGGcV{f_%q_k4KKa${A*w1CG-h=cN~X>;1j3*{E;wj8mRul=N9tBRlKP&dqMs#i z6fQH&l@Wh`1#X(;8n~OIz$uH5V)+aKg99Q&nSwWL2LolcjqB5G-f8D;Dm=eeF_Qyb zn^y+Ev^MEE`TbLJd;R*1qMNaueqoi(_% zDmVT_u#57<8`OlG8xBY>L2P^}8~{7Xq*xAZF%*I09g%_eiMR;Mo@z-1s_}8Y2A6&PQ_mTA`SufZBJ!!YdS|C*fIT5b_i4 zh}<)q<2+s5n4$LKf|vIoV(ti^r=yYPxhb@mVK-%9Boiu{Y0~gr z=@jCp{5M9R0C@)&79&7Zg$kayrA|8&9U5`scz76%LZe=drbbfeCr+O@PN&1tNl?8V zpFFvR6S-vb8h2}0C5(<4UVcp>RW~J(z8ggC}_65=+X_2MTn2WwRW zUVFUG08{)MY(QIXlKkwS)o^P8qqQ>C~v z#hJwJ8TF}#?f(+wA(jss9ek?8SaNLNt2sdO_^L>N-PNJZn;gcefoGOF!BK-WD1{>~ zM63vKvjEifeQykBZ_1q-v0OUTr2=PrRhYgE>d%SUC1amC+9k13sJSM&?fpm~XUNqf zMr-{W<<~$PJ5$_>?mnP5|b@BR`P^AD(hNBi~j-A7U*&JT4L{QWf z)3q#c6T$TU?Xo3KKAi9*okYkrIsLj7!0AIfZTZxFHbC%x7^F*v!R_~NWbvOXqUls1 zxTwm+3g7j_5akh>|7#il>)Dirp%-h~D-$Xnd4H2Vvy_Hoa{zd8593iHO^~JC(JVP2 zlxKDFq7Meeo>rr>9QOWBwXmMVh$#LIoY8t4zV6l;4e0d!NPSek70oBlw-o^8xiStM z7?UZJDx(Zdz^j-#b;lB;-pgZAlckB08_))0v0?lB?AYXiZN;H@@)K#)e^lv|MbxKO z79Rd!xA`Fuqr6^sXnlR)xQq%}V13CZHn7)@EPo{FkS?0YJLHdMrs3OOV3w|sDguN~ zqiCX9nubC`DHt%I7S0>_f73|n;yL$`^r1(8<=`T(Jcn-!uh=k7&}H^mr;pA=VDiV{=f7 zR}~H&!ga!Cg%IhT@2lr7T$bpeH?2ApZnUP#JlizF4c9K2E9qiv!YarVYCeV4uBNEg z2L(d)pxo4@CBsvHFQTG%jfB2r>Kix`k;-Oy+x8w=oj)?}RL;uP1S=t`fsb(hGDJ6) z=ln`16mRtXxX7wXiC3_-?O4su-5q8Jid(eyI9YjI79^jLMa#BgqN3u~L~^trIE#Cj z-r-Wo3%v1o4P9oD!(iiO*Sfg2#j~9v-SOW2A9$Rd*qMO=y#Nl&og*PKC8c)b=8JdY zSY9AVEw(IvujKdfy?9C}&S1G1ZK#juM8CsiEn^^GmwkKsRwF1;{m#mqL~R z?BHS)Liym=k`|H$yQhG@ED!0!3uQg@dGBs&xFr)z;GoI|XVb`EU!!Q?}Tei8?CUR|IQh&T@sbhHbn?`2Uy9^@T!PJyN?T*?O*1|_+4yvXh$I1xVMSyYT$Vr$ zH3$mq*iZ~pOOI2RL)^hZRc9Bfg;=9`5>6 zcI?yxcbNj}c{H5srAWUA0&ISF%p5rP!4Qw!gmD}sTtdB#HnPDIP~C}zgvZQ~4{s#2 z^dB_wsa8y!KPT)%O5wr3&WrqJ_c9n4G2Bv?d6!gw6XS&r!lCZ}f>>vIDWp5?$*_>} zy9i1`WV%LSwC4UNR*V^|5B93O$Yn>!H{Z@bV{&S=q6Sx^8EU5%L4Ee9fcdmI~uyr_v3$@F72U5ogj~<6l?0dNP(6?Tx z->WzJI7II`FbN%@;89kjuLAUY(uCraesxsX#Na3+3l9>2C0%xr>l%>ajIs|`NH*lA zU&M|=(9i!M_3ixnNB-cN*Q+=;04(LbjD5vyI+*b)^K~M;_PABZExDHUti0T-J2cb2 zDSs(W&DDrzXp5&8Y>JkLW@vrj;MA}nooPr#+ zY0PpZD~ncPKnR$XXtP!1L>j4J}< zR`Aqnq8zt*s@VqmAXK#XkW1L;uK7?bnC^Gtj$9iv)b6>@Wu)pEld}V&g*i=|{Q`=pP>QfeE+LNT z9yC84Ke6DHVeK$9JN^F+fPHnkH+i#1b()f6T=!gD@N956uG6(0<^gN5cWSv(+)ZUV z3_(1)wKhS0=cI=j^jd7kUtd6IUx34=dafQgi=OUCNd<%E=I9SuD)+mr+ z4j5lo**PNA-p|#d?-PrrFAkXdFT!3*QMiS`Z?{F6&O=-^1V}^FY8+as0P{`_gatoy zbjTdIb*eFh4JnkZlOxe$5@cG~?o?Lt4U>Y?qq3slpB!`AmO|`=&_f;;tDbl?2_%ne zgIvC1~JsQ1V>ixPX6w>o)rP=8$Y1(2VLP;^ih~I z6lk%W;=vQ={RHyFm`L$JJz}rond{LdIA()tNli^YUSa%THZ$~I4owTgU3GWE_8KmJ z+M`lz()@0+eRt+xzVC^6!70vPoR}4p%M`f{sv>pN!&AaH$YA^2rx~ME9^PWOzvU&G2E_UQRU<$Q4;L0Uz!;$kTdypiMmt5P zos5cz3JVX7xD<6FI{HlP@iQl5P5@f2AS^a8T4pX~tk^E?pk{Dk6Ni;(Dju>*d(0m^ zHLHLmF$42e5P7HgPOBbK9gcqZrR0NP`#-9uUpK=(`a_divNYd(?l|JXamwyL2427Z z+_B|gLf7q<#DbxuGawa3r()Hlv)M`(M8J&`K%1b=>^nbO#yC6XBs&Hi`eddS^N4@_ z)Zm@xI(xsRx5Z$^%-FHxT>^Z4yBs9|n((PZtiTrczRayEG<6PN{n9zmV+hrV*MC`gCb18k}4B7`EF&0Y+NJ@RS|ni zvD`v3XGZaa{ND9B^K7mzY%gMb!h(m|piv#+RH1xou9T=}v8>!yZhSE@iz>OpFWT_7 zUD`3sTURBU4_o@Jx$2LNZ(j}?OHQ&ibpAw(EL!nxp+#6!?=A*k4f>W{IchH zmv!05{jn|)gO^rD|8ej3JvEf@(j;0~poqMxp>Gz>R>}tY3#tNW1n3jK4y=bAw0+s? zR8YQ-#G5PZtOPgc%9G0|4CX?LyhvjB^*jR2xTco#264@9zRxBO{5=1JT2B@x{i7IQ(VStjj%y-Ro z7Z)YAQ!=TuaWYom8J+RmC8XpQlQFj-4l8c06>bX)Qwb95X0&*=z;QRp4Ql@qHK+Eq z>v(OVehQLHy(>p2WRgM4yTL@xSKl7)9YzMiyOq-nPeGdN9R=|{)G=Stx*hBJNoTm& z=&>aD=ZyqtcT>Z6aQ8{u62?&>XE|esH;O5XMy|}1eL1YY2s?0hZ;+D5x(u*~zlH4F z!DFX+Ma#bnaTAj?(S2UV+#8^ap%1v?t^L6ia2-f`IQ<|ith%>84sLEqG$pJNxO`ul z={s4{(d=&;tYSmrR%f4@VgI4VN?F=PgK2k;AG1N$h>+u@NJ?NSF_ zq#etSG(;Aq4>2`BDKM#fXc~w+nOgycy>JxD5aiRycEopt^zVfCBu3) zUgfJB{aviPIj7s9duN&_fah)A%Qa*uB5w<}Z zsc#-M<`w$kdNRwvKW*5DMEiUd=xuhGSe3X*Y13WL7sj_>e=F(NVW+MY{}mJR{*fKG zChdyEmsab8ahlWO)k(S0zEz;XD*nuRx3))q9G!$FR6M)yvG5wR+4*Xbge}$sbV2isA-U5F0!<1gE3bcaQCK-`*`toW%^xfYi3iip;m0=dLC%aUBsQ z&UKYUJz)YcP|BO8&bhAcnqjdr^{HWT6wH|`+X!D{!l)>3Woj!Py4{SPmujqTlS8x{~#yPM0CDUkY z$VX>8h8GFid-&W;8rp4j?8V_uk>7$|5mu!z(R)HsIUecpK(Z5N-<@4)>H`(b z$NOpN4K!187>q||<~8TOk9gWGOEG^}%$$d1QiCi5g@dq*Ct!Rcg`v_v?P@O1L& zTj=yZh5~N%t+~*YYvDdA3zlYW3KZM1Ue&|B`C;DIiR{_g0g^Z*vB3lkV&t zGShO>IFc0wnKLe(EhOLkL3nv%IYO&SH$c-9EYHS~1wrUaBg&ye)L}@72q|9;psd#j z9zd7)PG>8PckMxMUiu4h_uvU&_W?C8*X%!XXT}00^Ec8#6O1U_Z@_QPbsG!iN^u#l zrdtHh37MS_7z@bje_Rm<2Lor_(MFpm(5*#-`IiPH8__i5DJ;JY&?}lRYP5uj0i!2A z30eYXAu!btJ=51N)++q@sPCe0e=CRR^dKO~(&dKl;qPt&&(o8_eLrEU?)B`II7A|nAa;{-aA-X#NrNkCZC?PtOvb`WIKH@CE6=1Lb%=e~HDc2Hl)%q9 zaClPqJo8s=>CgA~roGIeQCC42RflXYaZ1??);x=qbV+l%qTB1&`*x3)hQ8h-c0Ro4EWeON^`YW zy5lzI@t~XSBal^zJFs5Hf#;E&dhkNNefi5@g67RrwV<{EIkhM(4Z63(LM8 zDG;d+tDu(6a?F}Cjpkmv034hc1WmJ^dh5ZukifbSkfd_3J^R27Qu+d^5KY+;`&Hk> zdrlF^M3q_f2WeZNs$lbAwBw-<+w=DG2!Fh;1)Vs=QVZX3E;=!^kyjY?0#?^?T1p`Upfr?J&XsPM1tTUD zFNT4T4B^pA+IjrY_w@hfAjGP_1{8}WCc#%P)+n}5I|2PgV79r z94w@IuAcRA*iZ?$->fTlQ@{JgfV6M(zf7m^L3>{=?%VN_DQ_FmvfLYihY6E~Xdt?; z^frQnf*yM3lEBr*{W5R5zBi4H-ffdI4({NGijo1iuY6}!l=bJ%66m>iSEWm0LIMRt zU&aUF9vXJ)C?#SU>)krVMM3y+^Y`4hbJu}WVFvytc!2Rp<0qb8m;&qMtTYPJID#ag zp7@=aDrDgr#0`TVAVThepch~@2;t0UJ!y_CbQC%xg)6ygZ??L-pBaij(M}z}cGBvM z+syo8r=>7;)P?$3_Ht5w#<+=VekFIDuF{ zof7GvlTbp-_5yWe4L+{6MTgZ5o(8fJ?{v-v8uhM+@)m7baiJ45!mR2)lfQJJ!Efs* z`&Bf zImU)S2RRXl)MO4b6hu~lZg${ht7f2vWGsq-vX)nOllR@{)GXR0GYbG6$&Y7+&nllg z?-NU2GX%lE45?9H*wU32VtjqpRL2l7U%DQ!lIH$>)L~v%B;KYKyxGn{pF$9wY*4)q zzk41&C<~^T|3t?C=A2fRhC}pNd>w38fbw=a-&6{`W2J=)NmfbN*@`NT=U4Pj*-;Gf zR2kzM=(HyF^$8nZ<0W;V{XO`fIATe(@;HboESO!HXP2PV9NV&mAz0hC`?3imgi(-SA!;9WK-yK|bCGq=*D2t`i9$7a zT?s@0TovIicjyTd2uBXOQP4}Ew#7BvZDR#z_tmB7+}u5oB?erMxY+s^u=B_mA2iSzqwytcRo1n&vcC7Hb) zvRod0GtNf=N=t0z++>QV@M0_zymlP3iDP37)-IwIo~GEHsIO$kDVQ1I^m1yCUtgMq z>34_2@w|nEjOBGwqVmY_Rcz&}D89P~K?89uoYdYt5PRn`z=uGeD zyze}7-`9QJ*Yf>-FGbP3>+NEIvB&=pHfjlL$}n!WS65)JtKhI$V}uOqsb~kK^JvLX z$nKa&h4V8lWsrL$i-G41!#xO5?0LE8u0gLqSLPZT3G#b4Z@OU+blqdz&XVP_Vq421 z?#MF`uq`g#(Ix?)Evzm2cJcd@^`-?U|2X#@z7h8(`X> zv_n!Lh7aq7Xds!ahU$sb^#HF2r}aaN(D!Ca(%;9g<$riXYe-Fd@bUJFa;e;{MFp!@ zyiA_u_mM&KfcYFsXS4T(1uIO=b3W~GS|o5#FY|{R$h=OdvCb)eQJF1%em_n;D~M8_ zVu>(3(yWkV)1#qSg;6L3&oCcpbRD8bNF`=R@7%#&e>bSqahLFl_aoO^7Mm{X2e;SL zuE{pPP71iwKcWon*W%`^6gK{-4V@1B9vKnWTvQ4A=`rfN-_1D9i{O91$Sw2sFhR0f zj7k%KG8qaikVP=}7Ozqg`JrGLC}NToV4l)qxPFsw!F2#Fm=43tqCnhuoX53mwStL9 zqIBl6NASUK-RnQ~j#vD%d3xXV5oLueqTkm#BvA|&06fBvkk&fk zUK(2)F6Q@5IfIg?Ua9HGj9u=oHwNF457{l43_AvT3qB4z%5AqLaNT6^&90?F{ zEsH#1WH}HxBQNb~tT~K9fF4+fjJ2B9;N_!*R0HjO&7dj+eW*M4jXr^b@Klc6A_!Lh zjF{W%@(-;LD1U6u%5W;0GtUV|W1nJHt5syaz;#SSm{lvoxvxXWy^uX*4Rash78D51 zDHk=caO@T^PE8A&vRF_ETX}>b%y0NgIU%@pHmqygdYh)mw(Qk6MkeC)_Ki{`L;?ga zd3)}(wjIz3R9G|ZkIecagH`b$xUr&+xQKe-P3L}@Ocx3CeZXn7XEt?d(Q+L2NuL15 zPvt-ix>gU|P(enXvIJHRW@R%A1Oo541ub3JE;O27Lgd>)gVu4_&U(S8z~UNySgG{E zAt!+1P=cq10wT|(vBTt{z6JW#zojoEn>qaT)P#9w3Ry`PaQx`$+AQ7)58>=OV;sBM z7~=KrZbJ~2-v(|ulaDfq&urzeG*S2m_i=+&;DY;n#tX`n_rk-_jw7~_yy`e;~hS#(|DprYOKy5%x+O4-e+Fr$%; zM^!=n^iHHaTHKg$1 z@c6SQ!^2}DPm*I}Po1)vw7w^IT+{OEa)I|7;#8mPO@sK$##5_mpDp~*$ufDiY8OwG zajlM*+w*-y!$$=IMvw|S{o@`l_qhIQU~80+sPLK?e2*@o#n25mXy)s!nJm0wIO7WqG6>L= zQ}|$*EcAV=kK$;OxstK5^16UB|DytnmMD+!nGwRzUamYe4sr(cHVQxug-*zdBSRnR z6|Du22$@vo1R;eBXep7Fz@m}*Ys&^EmSdEu4UlZEDwityEA*R+e`lEf*0LfRBn*@V z^)+LL&O_dSd9I_SO0E7}+ zxJ>ms^GkRc+q3wjYE zlscg>PY)25gQB7U2vANnu7R)TjTOoWyP8t3-l**X2J#C#%S{WbZm}C=L^Ii~jz5ZF z90UR|^MJkx-TGVb#0yosVXV5g^;sKXR)(glAZ`ZsPEH5tZ{x7c0o(}+I4pthQfN)d zpz&)A=-xeGNkFx~<-GdwoTOp@3}y~4RbEw6AP43@K9?iy&Za?SOyC}4su~BLYVI7 zGqKr+4`=mX-#eBxd^nH#TzF&gA^X%`LyJof2ITdt_Pm#zS_k*EG;zhab)#fQX^v z4t*pCq7;Lc`-YwUhV!rNw=xjkt{ni$6jp5fA$=4Z)UeUApk`tdCzba3lc?MXQ7#u_3%whN6P}O=ZXUhBT9iL9Z4HgeF=Nq0-4%b7F*Itu#_E`;tz^4H0Y)YK zVd1C+4c}%T6m&UjGg@xpw8IRwbVF~#MhA~us#vi*B5-INmo0pZn5{W@m<^O}?G&f% zv_&Vx=8>?;pih*JtqgkSWqGd#Y&(O<5+T_Av85|$g)TE*eFZkb^IXXvebqm|`GLio z{@HsuH4=kOhNz=E9y(^6uMn58Cu*(Wlt*s>^B$N{7NH6U%MG?2MjEJ>#~Kd24kbGF z%=U5+Wxpee#^-MZ%{p|Dc%_dK?%ng32!AUs0y#i9vf3up_7gO#5LS(|cey6qq-ri%5SJL9%H z_#`1tVaZfCapKgP{{;*Hb&}|HXXY90_g*h)XqR?VYCG#uXmm)t(Yzgv#fIT+(EyIDX*jeWQAV z(mxntzXBuu_4q`ZMbkvwF^=<0eF6{*AY|Mpy3l@l+(Z7U&^UBGPvYit9OlES94Hy- zgKN=zY(7+{Cg_kjS_xDTeUcVTV46%pKT6Xs*-AB=UvIEizuC^6V*mEGfy4D%ytd&E zm-X)5N#f(ws&Obw1n1SoxHbCkRP|A)Dgm)b({0**czLrr!V_I-hIga zO6RUTzlywhhhJFQ*>hQ0qCBC!`B><%SFUW8jk(ef?izT{pPzn8#I(WCFT*MPo?SXs z0f+Fx!6Cfu7ZG#x7+${xhuoJxf{_brDPrjpZJR(14C>tESuNkrnV)c1u^n(pJ~He* zab2Vsjj$ij@-U`FZ z=7oPV;x?)KxGqJ~!m)nGJ4FQ4FNtcUfMa2tSTqAM<0&gpe_u$~a;SNOQ+5?0HJ?3A zNy^U6YEnrMM2=iN+9>LMWD?>=TITC@G%J(|1V=zOGZp9j4-Lmi$MxZC0R3YQ1>QJN zjQk^Gf-th-bBDtu}QJ42A1D4Uk=8>y$qGtETgEr$q>gR#o)t^Sh z>w|LqA0$dFDlqL_cgH!DajnAQc`o7{WOnTaZ6X9Gzfk zh>jzOg!;j_g@7dtl?K6p*CQJk+pcR|bHVTXQR(C={q7SsBIsgxl%Yz5AawCMm~=nH zPsJTler9s>_aJfepqz)-{auyMcO1a~h3JmoA>erckp;86861DO4-G6qODt2ZrAXiL z2l+PHLUBr}@t|oROblPNc(aAyCcw(wI;cR770+dzeZk>xyIeZx0nl|DshDQdi0RgX z`Ex8WVi$s6@AXH7jNEhX54ZXHg?G1oI!~F?IUmjPc2$=Tw*k{P`nH8B8fD1NFg}dK z#-)&U5yfBJyU1k*f_aQkHHd4I>w9r)G;3J+WN6>`DX69=9oR(qG+1ynyA5Rhug;@_ zh81t`!`$@3g!wgh)Bb+GuM%ii zI6-xwvx31Vp~=d)Q5A^Gczcg;#tqmt%4727j3DIShr@-;)lIWmFycZI^A>3itpI-bv7 z;>)HtptL{<8d;JoPZogd)X-4$kA7HpBb_UhB$iI;%St0JlI=hKhq2Pz`?i@$iv3 z_TKlMAfMT__vK(4zxV3^1k5G8nc|>bFw0#C<2y1tfaJl<089O7Xt)q9&;zJ{`Zq$& z?!e9C4rY&DE)4G4COgQnJn`Z2vx%-$^1->G?n<(UV6e)wL&E7YhTk*e-X4y|eHb)o?ReLqZ$#rh#z`L!~#D8~#y$Ee_Q$ zpV}hg3M3m;4(kWLd7PUoq)G-RssUVQlb?H$qrKaaJ;5!>d#S2AkTX4$tvV|tw&Z?Q z1tlHJrDjW%#eO@w-_yyRzRNRg1>O(SC;4CBr%RhpFHy4oZOt zx{wcfWPHm4$ZOz3wy{iqJ1heBNmV3tkSycXuR2<$7@OZ~Hz#>3BrbQl><4A^pWxT< zA{Jt$s-n=!%6SnP`&)tPGZaYbOOpgCK7TQzeZS$R5b62dU5l5See^anjjwM)E_PW; zjxczEnNSJ=Hjh780Dpel08BMGL}CPw7j!$o58$TlZ6bg{PAb#{)i~s9f8h#mNEeSJ ze1<+i$Ys}hjlkey)&>80wj!sV8{WfPw|Yn_y?I9-kar8kr!~HgmHw^tfG%$OBx{x4 zw&%D-hP&J+Vb6|zy^-a%5%6UNV-CmQJTgnoBv9~Q@H)A+88$N@=4$d@WGn&0WCJRK zK1AoQe<`4TuKhS&qzk@wR5$5Gu^hKhVK7`n$K)VYjAP%Pq)24T*m!Y1yD~fGc1a%k zV=3JIY(}OfkXfbCE4@y(Xe_!UD~E#XW5J7cf^mcR&Ne820=nQS#m3C~Hq;1cOj2uxD;Q-LEInly>O%8VAT5QAG$mQi0aW(FzUj$i zK$omjJgg`ATW*W0XC{_ns>Ua$4q!fg4h)O&u82@+Wd7`&G_-?$OonN|p#n{N;LvKx z`cvR$aW@fa*23#)PHy6y%j_GxOea%gx5PcALPh#jWLQmx;hZUM3A$Sj2v5ct=aB25o;6fM1{$%7=31Vp?83RW%$vRC zy$X9&5!oyDNX@U_D6fn3etthX+2&$a+R~~+f*0h;&gF8_wKTV`3`;4rd6ODBZ$?C*~;=pqJ7wd|^_QDyfUF^5CadbOfA`&R+rpqZz= zsX?L1#{2KSERhmhRYr%~8cvTaJv3h(=}YOD`6!9Wz`y^~6B8agW^#&mV)${N+$<*d z^XlMg1@z_xT)1eWMTEtp2|c0mBnN=p4hnd6z7op}-cOhT+G zb#)}9yLY?y={T72YJtgxH@>Nx&6&LOI`(#%*rDkc(Qgo;du0-*tR4z(SWCI5DxRp* zt>(AxZ|}#UN^=5}9|o7P1~5J-IFv$3*#O-QUIOtM^Z?rwAV^d!(o#w(sQp?t@@o7n zdG;pw`OB+bPENPm94MAmlylQ6DJ$v+fN-|pDP4gm!7=dj_E8bn({X!<4*f+ZXybn4 z{%p-FQ_{QDH`-Izn@Z3{4yY z$OcB%f*QACvX;`R09D=hBfIVn6m2~E*d(>wf27D(@>KJV_1uci`;Y^nPu{3!Xvqq!YdE~?bX=ZDU>D3Gq+y>((9!L?+31%R%KtsJB zcqrdSOQGa5c|hcAx;dx%A8 zPc@;&v;B0={EMYhYcr=-p>%tvZUhu+P?1QQBN?0mM|(&h38F0-kD{N!N>Rs6(&r(x z?3@HhA;-ZMef3cNaGl#Se9`IkX%QvrByZZ_D?f@l%i~nx$jhYw>TYa4MmFe}elnWg!rzh zSuidMja#~=;n8SnA6gE=Pt`=owf~}IfNm{I=wMEUG8q9Vw_zu zzqLINJxppj9d{i1^~v$#IuyXBK=KO_qZL*MjM46)xu6p$ptSnKZ{V19vSEvWN%Q|S z4aFb-RZ+eJAq;v@ee9sxnNyLm(b4D5#*$B7J9GN%>9eut&PJX(iM8yC>sc$lnX$&6 z8I~&?<)$qlK*cBb~I|K*(! zN44R*QZl*rn56VFVZQd)3bc$S)Q~_i*M!ax&<&NF!M&-7s$q0JY24+Z7}iMeX2Vs* zfMm?5#o-dk-{WpuNR=XYAmTMBZ8m?hZXHrN*jJ_B+q$(Dz$mlmdAI#JN|c=SvxCL- zEiZ{d_@abFdH#PNrp?-iJFUn9Z|Msj(^F_O(OFve9L=c!gcfxvKo%Gd=nr>Qq|Fx% zGG5C7lsv*X12Rxq4gCsfX=R0K>!4+4k~K?KGu0#xCM<+%d-o4%WN(~E+8h+Iy;gKf z)8EdXLymf5%yev`saD5}X4oG^x?rT!e!n4yP1n_RNC;X&Y9|%32N8-(R=~x$>%eo~ z5-4`_Cuo$Jn1ZGp46ucISK2fE@1S@ng@gW3GHgtCjp~4_(`!8eS+8+>vae{$gh}x9 z!Q9BbD_Cm8^yr&MMO_C*+hF_>B75xY2TNZCNiSPXQHJ_!NQcVIYO39sL;3ANBjRer z#mx6)U62k)#)_;bs~|}QFhUso86>hAS%~OzMDyEHD0@^PEYDU0W=}wmYVWQfolAwR zH=U0i$cH}M?VjCqPR%)}V|txN?{*)TqrP1oCK$K;Olc5jMv+7CIv}UUsQ-`M(SC3F z!7wIFeP@?c=IgIHssbSc=U(M^2Ie*oLsY=ZI0W}1fHey35qc+Za)Es3T3om(HKk`2A+f2c>M*hF{>&c?gxopd1s2_RPf{O~aQc2a zQjiP$W+IqXqQCvVNnTgmA}sb>MD8nP)Tp`J5MhtT+v()}bAF`h7DW)l@Xp2K(d4lH zLM#XJq3u0{npZ5JORVnE=XWO{GNE?a6K!R0TRMLpnKfBtV+BhZ4qKiN)qh=H;7Q^lZc0tZ6OZPI4Pt|1+4nmD>_4e@P zRzzm%MS9zH^%%8j7k`QGHwR7Xjy(@t*74Ss-tiPMB|1uWS2+GFnQs`FcGj zWxjd(;%nPWg%_Z9)trf964RWX2hqm`(4S)Nxq~CE^-kX+cC&th<&96a3#>8jc%M&S z@=ilHBWk zkGs{1Dn672DQsgsF-D&l{88O8s`-~Qrk-a)QpDDO~6bVyWm3eBoaRLac>k&Z$4u3;j(E=zJ$ z?9f_M)U3Ua^jjj9k+*+xsAExExu5@(iT1wU7wrq`QIu;K(H=`@!S{>iL{NIs&}0S~ zc1xHoi!xjIMaxpar(49;#K-tH8Jr&oTTG+LnkDipdTXr`z5C6jU!LtTd=Y~6zB(-6DV@e(jq7#=Hefp`e@YvQGST_mEKa!QjJImZw0 z7U`wB7uiuWWFI|kOn4W+;&Y`4J<@R5iSe2thvsL_F-4=1vUFWZ^lR$VbNxCc=AuRZ z%$MHC%5quU>2u{+_&47`P|ydv`e!M?4+L@$M022Dv|Q*w0l*hoRU+mQEJt=tkW#h3 zs>!#JWKBVSjsmnRU+mH>H14lW+W&z(#h!e9cf}C^kw{csR-MtB5v{|VnF)=WYSlqx z0tyws#2m~qzSIqxtDKTa+_H3BFuz?jF<8FdHR)EknrMU;@*CF%Jibsq7{qw4Lpr!& z7x=IW!8T;73YpK>VPmDt2-Ol!gp(iVW7wGoD;!&NgW6Y@xHD92_vC0%@6a-Kz|oO* zqGF7x;C>jENAJgqd}g65YSVsAOEc>UuO=>VDhjNWQ1y1RTRZtlD0nAdVOo3;U)2p{ zUWJugf#ppERMAGnY!BmsNFL4j%nY<*4ZKKTe~?mJL|yIs2q!!8HR_DrAd2PhoHe0y zaw6$!%G3Nf?z1X&Qz)(YV~3dCG6ih$oVN?yiWW~G@sfjt!`?oCw4%aQw-HgsQ^Ajy+`0qRNM~VzXbA3770~nUN@nS-sd9Na zm(>_qR~5I~G09?6oCSB!iy567AI^^*;E&7PIV76C;7y%wGd5|DWjNqHyn5s^#A86J z_!pnT9vJfNsNfnf*H?X7g2Hc2RvaAmA)q4@GFa;*%^R0OAEOo;zyv2U?Y0=4w=&*ei6HEaqnJ4rGZz_yW z7Dv_4R|UY8GDQ=W(Wv-`_6FcSvYD3Sy!^5~$yG0x34LV%aJ_GBk@9%hY3gve-f&~W zkpQq$BK5K#q~agCZXddFPDbCTngq>Cu7k4%Cr(P^YjjVDZvuhdBJ{~HQa>ZX2 zLM3)P#SMoP==oVhnBxA0=nbt+0xo6d9$?R8GxOC3pDc8HUwHM*+BXn*Jg7g#xW{j~ zlk=SVX>j#vJ~VaJsMC#V9W3cp$`ZG8??5$3`}fm&;)(OvSl~KYW*a2^##OZS@-#8D zGy&@|%}}TV?@c5Y{Lp~Fp~HwC%}_$-LO&eILk!hirG=Zj3|Mtq$u{#(JJ74@Fy$OgQ8!!fKVAzyXcK8Rmq*&=d1025 z`=l`8KpnkC3ws((v~&dBAp(?5n84d5trYX={Sps8qrC(q09qt_f)xIp&hY-5&Oi*0 zma%4CS38A~qp|RCj7&LsDe~;e3(=8LSI?X|6IEnqU!lt3<-hkj*re{le!f@FBz2kaMaLUV9;bVBOyKYUU>-)(VBpj*si~%0L`!1R%6C^jFg~fH z(fhLIT4<*r%@^+f2q=Vx6Z0T6flMN%TNbcT84D3vz?Z>b{yHQQOtITl>5U)X6}EQe zY&r+S7tAn56xa2Ba|7S=9!LRrA!Bjri(axMYh;rgDRD zyOZ~EtAxMUVQM=L*(bQk2~wK6?fVU=Rq2;$Ng6;ozq3%@t5BVDo@2C9D*g4ji=ial z-!_iqBG~s_uXRrqReu8K(spvG^JHP;B^i4D$K@$vi1%tUpr(Zc2udeu zP<(WS@n91!pbj4Kj|6icM}kzb9|ye?&Xr}|3)h#9^nNDiA6w!-dkuke;b~svKC+Dr zVb0OnqNvb$u+mH`nwnwAJg}C4W`RJ^??I`l*VoP=M+YfeJn}QeS|)4Ly!npE)=kK| z1*xNjH`GeH2V~I#WTXf8eze^!`b=fAf&J*YOjiE-QW#zvs!}=Y-$_DX%SzuSv%#q~ zo61GzM}C(d&z9rN;AWh(VA}pIh6o6%E5GJVq$^|l$?n{Px#0=u^Lk_t{Dow=O9iaq zwJ@|ic_x~ZJ{#&GcQc>~{m>nhv&gdoN29YTX( z7vTHwt*9KMX*9cqU(b{(no6L*kNmOhzr;ESv)#{)B2e_qyt~lNs%tkqRWTtilqYK0 zomT)a7XFGak9Oj7HGnnY)9s*+y!gk&5?vsLw(mH1f@L}Mp)zdhu*G;%HKdHz!>XM& zL77p3%0;EC8$n80(kJ8-d%W(QM~RkEy_iVqwORqhJ%6i`F$ev~Hro&a=W zlfAgT5S4r(*esSnye20IxNSTbIHX4!T>(b-)mupcl`xF3A}0ok8te9paTDDJ zvel|hAUSZ;W6~}!!t|>2z~DBn3H8wtfPg42ag}&WT@X$$zVt*=+YDad*L(zRPVT5p zdKMDGKIWgT1Owt$$qv%$U)+**Sgk$E7m^Q~E~Jl-SL&F&{8IE%<;nSYsUE8cL5A}} zMCVQ{K+}q&Wj9U<$uK0MvPM7fYtp;Pyww{AyjBlb`F~ipcH~Oncdsp+Tx)j3tp|Y+ z;mv^=3A|WI&NBX$I7!Um3QBBd$`y+AUVk$QwU&!Ub2bo@gNLQGbIB!eG3}h(0xsaT z^$1jIA);b;wz`4;Adg6D*Rbl)3E;}_itCWFs7sPvliuhcWLoyNZn>%hzeEeC*s0zg%4o5>y9Jbb@PvL4iJZk2+c>IIh^g2O`}a9Xacm z0jUcbiag?kMYSKu5c{Wp%USnN!G_J_wYLPd>Z$gk%98t&Gx5X}VWBiNi*|g4Co^=v z`=#yBX8Iq&4XPM=-F%HRx?>;+kb<<+vM779kJob0|0Eq6VC$7(7v}I z(Mp2qIC+~fS`p3_9r9wzB_K?m4Ja)6pO*w}cDm&`_tV(egusSmvsmDzw1*VDeX)rc z+UMUxgZkPrAQW1{3Qc_yIaxAao%B%x`W-XhY3Y#szs%wl6@sdt+p?!OY7f2IFmcbH zaew)%!D(C6kFK31>S*@(3p~wuTpWceyM!M5L}puV z46fD4-(-t#^QTS7V_#r**b)1{E{0%?1jfKIS*b!?&oWU0G91Ko3%d4tu<=}F-LxIh z6YD$~vbU;8*}ZT4s+rZq)gNB#g4Q(!hV^TPm??9OdzWNUE*X9rLMFd_J^g(^Fn@k} z`P;^0$OG_?EA`gRn(%PGJ{`3z=UC&A3v3Fd3OWnGQfA=YNBV-$ZSnYNZ61uVf!599;vIiUj6N9_O%#bn1EpSa zsJfI07TeQJ$O?kf3`{M_+!5$=1oEV;sLgj6??RmRsJ*#*!|&m@N35%3jO`W|0#ZXP zZreJFq$_Kkfk7R#O zFkkbcul2})$MnSyu04PXeR1gWf>e&YW*u|>9J<0EFF_)|vhr#UT@kJCW=trG{x&6z zPCQXy-ssg@wNhz+oz|M2;42c`jzdr})I^0Kyda(kC@w_*NL9fqmHzb>w`pG@Ga_s@ zD7~N3w!t}>`b_GeTs)~OiS_?1r7A-21rMOwFj;X$pDWyV(?fLbbZ02dy z$eV65pZvPKV9wEmzcyDoV-QQ2d=f|Nh)D`)AD9&qXbK@!XZi$iKCOmD;kV8~wHKkT z6vvT!EQE6Ste|Uk+~nNeiX&G%hk~|7>^Pa@XQNObDtiR38o{X)}3srVFlWoq2|8KDr5Pq1wsKo+Mc$9Zzg}K_PGiNSGp21F@I&i zY1w7Zc9b{Vt^j$rS$a%ovB=lZ zIf4G3tqVm=IVP`=H%3xW--LB%P`Os z!?q$$7>g*2sTQ0r&wwrBe_K2*Ui}F2qhx+^ePRFO_cNPibQ*v$-k_^LvO#xl^UKT0 z49i*JX6r<}zDUpa{ME&ESC0D}8pV{CETK!E@`EIm~^Fhh08v$@1LQZe)IdZ+JKZj?LBqsbIo!RQTH>-dTdy4s9Oz2OYIC7#=U0O^;}w7pXn zkR^)Jd9vm==wg4q1l=LZZ7$n$^5YGmQj!oqOsJ8kOko|jz&4#kbL#}j0yy5ISG)jo zH+7a;C_<{TCy8p%fl9#xOfp%E9jURYK2vNU*}pU+-dE(`CEtWzsMO^A%eoosSBDVi z-rVB}6`za;B~=>Ky(inN=>2#vA03E|~<0cq6EsT=ZEbB@Oi`gb3Zo1vb02#0k; zPruO{vQ%=I$PC(yWf7giC~yv&0JIsM#twZB67vB2YtdpFTN;G2{0uAh3aX7kF3fL} zjjjCG=EHCK;rn`eU`=eK*o)i3o=Do{W|`U__=4D&veIvzKtwv5+d;pQ)8~CXBseQ7 zcO5?tE=9j29f)-VBA}GJ& zb908uw~9yp&UeFVRGk*z8sX~_l(&nde>L3_FJ}-zBi-Y|6*2QazuzZwYDIqmO`1m( zGX3=*bjRxF*w^eE={bnEGKPv%EqE%%L=ad)U}*v#(B$P8RM)(K{u0$aY)TSI+sJ(F z@>W`zx%!-t;qfW(OXDh#`u51(K#ihh+)Nw^pB`Vn@LECY7I2Dyv=1DTFm%ICl zft-`fI)n#P|Ibrk6G9(xSsWhr{8jhyjd{OnkFp~Uz$cP`AEhrEh5h-dTf~_!hJcLyTH(E_Bj903RnBu8*>ST&qIo$t`2Td~ z9VLFu9kk7RF21N!1djDO+mgY-s(O|(tBOwQC#YAHknqzk{^yP0LmYs)wIZ}^$yDC3 zdy`$j%&((Vd5s}78~15!loBlV&~)HwGn3DkBpnIg6Nfel`=~(p@Yb*v+%<+}Vu^uf zHVI$jdluiaOOb7PJ7l}tykxKKmO=Xj?NB_vooIZvtun5&(R-DCLWl;e)Mg(C!S*Pc zWt9%L$1l>jN%4dZ9(tWWNA>PgJwd^O)3qfxODnuG^KJ*3&MM5sYs$TQ4B)*e(#5UMpiqXuwE+M zc3CR)1p-8RtM&1m2vT@wSG{gTUBBp}Z7FPHXmQTxit||tG3vRWWKKd1`JeBH4>9Me zG^5O_Jf`2J-Zb7|ue;fLN&ZJ0bRLC!=mBY&S_|j6nh+=&@jw(B_1oQoGWs(}iRoO( zE3zw$%OX;V`I~c|4{ph107-aPB{Q=p!a&Rmj~q*iG<{&-(giZo_A)DBsG(j_|(bw@TH?K9C8Q z>>(n$%t>)=?flGYyn+ch zvZ%;b%|31>vf_Hf7PstxUAKXH`I2uy?5BE|bp6Vd<88M)^~^?&PIqv11z9cj+V<%v z#)G7pjtaW*1d*=o3k#fYrxqDDYDm2vab_ilE<)N!-b56Z^{ei+4&rB>FEBaK{%!pY z&`i_sefQu+8u7>z%bF&#NTKwO)Ize;M2FO#y~|H(T}5?TNOb4?yfau(hUVF~taZa5 z7myVe85vFgYp?Jkqz(l%RCxii#0KQ)B0+~n9L&cM6-i>;0P;&O)r5Pm+78~rs6%;A z)fZlaY|!kFYd?zg(o&?}hq&49?lWpo#KB~agD~n|Piyc!A=&hhAG`P^K39NSN5aFe z_~{vLE+>ztDqaZ=+u^yZ_iD_#;MQbsoOY@!u@M_df-8<5LdNj~i`|8dK&Qcs??Q7< zgpHvAV>)hFb$Q*FQMJGGvknB_pA>bA*E@XpU}*D^OmsXXy%Ay{3iCz*Z)gLVEnm?@ zmwJe$yNOMM3+HG5Mfy0t^Y)Pi(}k6#6VvKgk+-EjSC|u!Uz@M4Ro^;q=NKQm8C8c}ygCL%m`W3Kw z7(ln2tan2QnE*4l>GOzF{_q*%MrIa!0`6-j5&oLA8@L9lI9G$gVe5kfme$@DUTZQ| z9?cVx0{3cN-R|VPX;;wYh;P+PMUC!IJ2Q$F7q_6XVU4cPUAN7sk_oydABn!FXA?@_ZraMWhC)R4^16K3yYrPY2l zCT%k1Y8(H|yk`ZpUBdO<=Qdq5*;^To3sgcbQ}UQ#Oj7=Z<4}{~>y*pK598UjMA$}> z5W0DWA+B&;YSEX5^{JqT*e-msg=U3WV4TX8H8it3Gj6H?7NWM`nbU`(`F=O}MX^~E z1|TJGLGNrS@UQ9ZTm4bh=G@z!mHOgvBmHdL=s@T2x4C-!-t8~_KN#L?&(a@wfA^bz z)wo&gI}vT(6a7PD!|D3RO`;%`;tA=G84Yqn6=2L(sNd1D z4D}JV+^hMpqhCbPC#lwyY!8v|BL}VzN$wEExrc3z7K}t`wxp}LB}Sc_W7Q*?T#Nl| zDj4IV$9uDlh3}2)3iiy5Y1g%y;BCTtqOd?QcDr;v%?8d_mXCI`s^LP_LAx4Z`4x6!t*X<|Xozqq*(nTbgje2r4t8O~XB^8JY zf0Ft-+PGib4gGDeloiJ}xg#k$qowcwO)f=D+T;x6HUnZQaH=?5?tTa?IWPB1AfK=} z4FEYKrqm+Xq(zb~c7t6~eyK@!{}JlH*VBMup|YmbM7h>tm%fJjpeJq(MlSFQaA2Y< zEom^t_+^(IE9%@6JPMzSe$YjKwp8SP_RN}Cmc#8UBayo^rORFhy`2f&Rph6Hq^IQw z30TfaDa3zU^AwLw5MjuH1lgdnOEoa(T0q=xuUDlDcK#5k3}+i2PgQYxIlf8oQvLpZ zQK6n`=`7R;cH%ity2!F{s{e`_e=&%Q{@ZexJVr2Q;q5*}wp&T@w^`>H$K?*AW=|>R z{%SZFfkW`K&BKD$gU4H5&mbGYzt5KYwg-_Upj`;qx>=S-&AURC&m4ak+E>w=Rlrtn z|GYiS{dQGXc-f<;KiPYGJxhVT#}d;|lf(#{aX&^gfgk_x*qOGPB?aDSSz}SG&`~KbM^vtBmU-*NJiR{#@CVd z00c#(|Gom4T$*k17~Xp#DQUwogW@*1MJ_vq2XQ?Quv}Rz9Aw9+3}~ZGv(y}ixRZ=C zDSQlD#lcbf2N5>gMn==hyTLlJ$|*dq+te|d0f7V_a-AX*nT^YF$Sxrb;?nd?M$$Tig7YZld?iPbEp+d|hO4hU>X3h{l?8C-H?T;HkQiswB0jl)#afEFq3QIN2?k zzDh#phr-6sfeS)XwUS-Kp}eMB8;fu?VLRu%6pE!Za5LaKwWV^us$)0?{r6!e z=j`mmRi5BVXXDzAoi%r11uLWBfcBMmHHoh~g+d8tESe2)P@xdkgsH_X;zQ01NCX00 zxjmZx-%dLWbtSv3i0Ym8!#eB=rA?nWPN#*W^+eW$)VDxjEy-Ruo3cxx-`jKvlRzb4 z4ccKc7YRO6D@zunml;-q4Op#T179-23z6l=cmCOvJ-f?W&Ra;{d;3}%{k!tm2r)! zVa&qoqr*x@;lVoQhhgK+_Qpr4_S9oEjw;0!E3v;$6h|8uBkYJI3~7Ha=Dz0(b>GuQ zy`F^n9qwHx?4T1Lct(Zz+AD~fEf$pR3cp`!@V%U~aTUR4{`Ea^8UV|{{drWGj_tmj z?IxtEST`eM@4_kWr1{C1mW7sCFj{vXv~pIOQ}|NI`Q#%Y&kPwOk`$T(#>B*Es->9{ z>IZZaW-kLZ=;V6+y{99TZ~EF~btIJR`3}T5t4pe1kGMtcX;04%NX+dN^pqi)sNmy?3HW&W7)S;F<~Ml2{B(-m(Dp2f8w~^|dNUN>>19sh zY;PhC(u|i%hzFN<<^JQC z?_FFt7J5)L={ccUIe7&q{pHZ^RQ(m4K#ClU#nn%|@!?2jXI<{u((P|m;Z*q=`WY0%3kWZf zIe+06k;iP35O%b?P7WBI5N^E^rFd){tAnx-G@-TwP60|)$)A)5LV}#vsOLOBUJsSb zB&I}@vd+K;`7p-fZYQ?0NP>BWEKSx3V<2D&6c zzBvvHV-(4>S_E*3^#r zv)2AoyyOo3CC5uk4}`rF8n3JmwE+M1;Z4S=Aqmb4Sb^3H>8oUZ3kI3M5$f0$WtHOeao;2w{ZeRX|V_RNQES zTBTM6TnvFEB7(9N6_Js!K}Nz%Le_W3^PL{Y@BPD4PY-$XjC)@9b$y9Y(l7@xCY-k6 z)x6~Rq0e+?)r&nu^Hh8e4X3ms-@XbKT*j`cud#hyP``I01cequBy=`t$@ImvJlGwy z-eL-EifgX#Vjq7=ck-;G{PvWp zOkSo@Up+Z4QYRf28DfKU6QC&L3@Bv;JUk@H|Ke$;)eg~rw@S7om6HtYH_3IfKP0f zU(XU-Nq38~d?r#2NDoTzfzWh;D_56i$|0(!8X)^0Vjc^Vr)D!~UrsFvf5CLoP!rj# zH8DY?ZPy61u;y-@=sF=90xx+d>;^LTEop=B56hP8AA}iS99+&b#7uK5vnaoYN4oV- z{{c3t4}%HJV|5hI*g2F7lzbwvqgLUp`6f-d#qHu|JH)=O&D+SsgPOz-k%n_kMgFCt zXtu-a0W{2B1=EKhP8Ky0Nwn`tk=&4FcrIQUyzepi>2 zHu(U5d3461=m2*;6faU}VdZ6(eX+K3>f zoPRf}){^#T>hm6D#q6fZ;lcF$%qo*RE%#cLQ?i1&{-kF7@hapP>9^3<0n>V;fdPyY ze%rqfcGQHi=xEfrwz6dg7RblI9Hbf3_ahQ`T!v2|thlH+QW8|!3 zCVqHE?^=L^^@Lc5dn?9r^6Y{?|7!Ctdi)Nb{b+S-F# z?cj@J7XN-Q)a(bX3WVX-8Qvq@LwBf~m^j-t>loVD)Bzb+(yCT%r)ftrXPGpS({ZP4 zYcqnk5sv1u*$;Uoy1Xcwqc;i^!)UQW+0q8rGOV>eE2F-l#H&Yq=t2}1_}GRvFbxa6 zBHs8QTQDGM8$lT3#lC?1EGuePti|*1;i8l&}3z;_2Rq#fRog z&GvA9+sp9$_#p2b4&9|7=lh3H6AtRl($N>D2w z6re<$$5}v+{XMQ} zvH!bdokACd*uSyu7ta#97j#j(u9DWi4INFEw^!c0X{P7krxbm-Z9he^JeuuAFr^8? zRXukDiqqIz@6Y??Te#^a}fvFH3!1rBhZW<;D*!gj>OIAGUDXanZcJk8;VYIYzH8Quzkf1H(o- zqyjZ#k#=ghbfT>(#}boO;;WTs^t*LH7KDz|aogQ-A_yjnsgnV6S9ukOREzGB)kQE= zDRhUKtSc$Uz;}Vg3V;G2;|y_GSz^-UQ1>IVNBc@s;1!Id77dSE@8p-K2^)&s+8=toO8W1kY{Yle*&)W@>Sm@_43-t`0XWXC*TI9=TBPv2``smarl3&$@oArS#w%|Am`<>Lj>W;7Z_E4fo zt)y2i=REOYMre|+-i#94XK)-$VWtD63K{DyKZPZqP(@@VHo9*rzz&=0OgLFR=AEsh z!&1{KpyPB)3*VLg>8YvBqvC==Z>id!Kt#$^>k^8N5*#twKtwB1sCIXCdf{OuJ>3tf z5RxCFPEc8)G5f&w5?p+Z-o(jBuO+=33fV1`%YZcENNnIJES&`dwdSO^cplpc%E`Kn zCEkA#9}ij6rbt{K`HZ&&qQIfGtg|~m4Y*$jaj%znxSm&1VNC3wp$G~PX>+nIb*{Xb zgE$NG@x15o1|UcM?F#f?m&`rLGze?fo*H3dZi$@Rn)Q6i;JtmCWYalcj=+EG+q?u_ zQcMT~R-aTZ6iL7oY!@m>auz}xwP3g0D zmy5Fy^jByT_U;Uv;H?n|c{W%ii*LU=>Wyl97Q(BV8=qw6xCT9vJ&(MOQY0m=6wViD z@}RI;n!GZi6uKLwkanOkCa_4SJGuV)F5UIsGmp2CPqU9!0(NX#uUuIZZyo~4=-rn@$;=3K4w3fIiy1*{XlxX&sj5OFxvZcvQ7xT(m11h{AWNaNwSO^ZhaMvy$e1;UCUbI)Xxi zGuo{L4V-xkujngDL2VuuvMvbMBs5KkuWM%@&bI%yQl$UOJHUFO7Q1r`Cs8Al>D2J3 zs90KZG!2UetXLctM~{vHD!q2A9Z{jpN6zJaEN=BxzVX1t^E>>Q$A(x48gKPM4zv7eFHu^%B6)MiwK7#uiz5~M^a3@ZaRCy9O zvVvDOAmc_WMd&5aZ+F6OG0II2w^+-k2T&djok)8(PdQMkoAET=L2R|V@liTw;4h_P zKavqXbYEPURy6g^marK=TkNh%*K-AilNU?0?{#b$hdgcF;-Chf=BMF&tgVcQ6j53+ z1(4Y93#)QeLBl5j6Qt#>;Vm<}!0PSVOXu%<$h_s}!fbn)KYnXnqg^p;+QnBjJ<5ot zE5O))ieObm8a9)nXvc-!zF(a>S?Phky(Z{%czl?{ilfXj3%Sp%j!%bV@2o3F4X~Q$ z{;BBi!SGY z4Uby8r)cjs&0e8OVG5Ex3h);C+3vDmp>)M3Genb77)U~IA~2NP zx_b)x!=}jT0fnvxhD;EBiSTpz^&BN!`*35|+lOV41nLInn)p-W;_?r|o@V10*S%P{ z+1V0J{h=Y~?Df=rB`am!wi`>}PTSp6$KLZC;KI&P6}*N7i{}R!z$fzDIs(Q7zdixv zR<632j(HD+^|d*?v$<~Z;oMa>%Lu>9UwfV$tVNXkU#P%CH-)qMX%nw9t-}qmoKV7~ z>u?evuf~1z)sf-23Qq%m)8Vs`rtr<5_CriBdZvvX)~uHE^PvwsEIEkxEisfpq&W>B z12l1CJ8?g2E7iMrC~?$oEuj(y?#FPUrTLWhefX-FvDJ8`v2yfW@RapZl{A5g>y6{9 zEq3^-cTf1Po@7zWRbulmYm1Dot3{gwX zLgc%crqR?!+!4hW<%VWdZ6l|oE)4-zo~AmxG6to6%_7Fh&`D!;aQ%3LcLyh9estr^ zoMU!h@7}k&ohomUZIUd*`#xwKQF%pnHR)2wT~*P6;av1_{W1t089vZBL}8cdA-K=M zmRhK|1V-CosNM_8Q|!=IJAOfvX_oHuJ6rN9ug|GSINH3e)!*mT)4ZOKIvqJ5x_D)v)efv7n5D6L*cBM&j+BL&W*?grr7Fsx+$k337Yo{8c)Y|;a%+VrrSL(R z<*VPt)b|b0z0J9KFv1mjn9$@vecP5Y-}Hcz-tKsoU`M?NZe+w=M`D`LVqwaG{O z?{qJ^AB=ucb>6pYwA(f0^1y(2gshoy#zyUmjkl!n@}kWBNy{~XDA56>vW2f;5R@@O zIJl$n*I-h==GBcmX zV$16JKWZ_|p2T-)#djZ#jiHh$z;jog*8XB43>T`Sr`|8nW+#xM$d>}m@$L0K1f&Jc zTwQntp4PHD_luD&O>3s@36M&ZEg?`LzYr>3R~43aY(}UOU6r(HScTg@1vBp@$HU}^ zXX}{WSHp~ba~m<}&(y)%ThvI9Ed1PN;iM3SMx$ReGb4(eKkBS`S61;RkR81NtpLdZ+g*sJ zwAxLI2wlXB8l2Gsg>!Q@kE~Xo7&n{dzD7L$5#K)e+H{I&XW5Q4d4oM)JNKUp zx_hfGM8%jzs!=6Dd_fq_Gi(}$Npps*Br$5pPdC3;Fhkam-p!^{&_eGdj(vQsztb}U%i z-}dTp+zlD8n_~08>e}EhN5DxIHawFwW21e>xm~T`LDGZ`1(FZr=+qoEz$TMMGR7jJ(+f9nI+%B8+ZGATs z0^q4rQ)-KogYJ5XHC*x{_nRIeafM2X;eaY*Z+fa)u@hB|S689B!JlU=Ec>~!;!F}R zt&(=RsoU{!fiuAKesr6Q1}oq2cOhqeg>6AIz`2DryCAqaG8a*sz+OKA9A;LV(Yv8J z((4za5>EN3o(8eah$+Ehhx&}XBNtAQHR7hfJqxQK4;*=r+x%XWs%A?LCk6&3oBY(* zarW1Jh$=j-)C&weqyGMkxbAdAlIY!v6pB&PgX)!Md7LnV3d*yUyg?&1x( zc8X^MM{gZ6_%XpN5yzj=zl{I7-l{@Tfs#wC7xU!`9KyrZEelgEA7 zY=@GW4uOD?{hHx_TkpUWXXuA0|4c5b|Bx~=_TCf1=nD-RY5-Y~;t8T|JaB~ictLnY z{*w-8LhyNYh));}$kU*U4|uw*Qu|-X_eD9f{=I>w68!)K1xtg*P|5{!eyE+Q(^ueRw ziYN~lXbfC6n+aQjwn=~4O+i?X4{$l)nr7XV8ckzJ_BPULALh7wUjT*ag^sc2z8@!$ z%M`NH^Hq++$D5ZH=C#Szi(U+w|LQ*o;UbvbZw=BHzWM7kp{Dl1p1g%SoCwYl{LFyW z1Qb)uL8%IrMG(+O0!mFV+z6>9Cpg2XNp{2lNcE!B(I+1Q%)CmKGp~YRiI1!5l9+Q3 zuGZ{Z{2T_!SpLnYg*Se^nerbn3+r%oq2G8YhDpr>XTH%}hbcLOzcUP&d@N=IZ)a_^ z(0Uc=(_XmrbzGz`ybq4~byPDEN%XKgmUvV?1R6cW!nBpDm^rx4v{(O4GV-Bj2amG3 zVGRE~?f+pEG!>KRG0`!xF^Ng>32~>-ojZFn=6G~0oiRI66qm(tFw0gPNpse!*|XQ> zUh^+h%Z3ncVLacV_*h~pN7)Y2$CbDbxSfuvLcL_`!1>3_H(Sgn*#5A2*-MlDxIR8` zBw6j;QQ!xPa>HTy++5hQ-V8ja8PW|Gh%}L|!!3w!qo9^3aU>$&4It@PIhJr<@{fEj zH`IN@^^6U)4nt#?0sGnfyg`alt4r)JQ=!Wt<;`E&Z0Fosuf<}|@x`yOmb0v022%5Hfhq>3b{tgcrw%XT@mUUiV^ zNBjBxvqKSC1<>gS%>kEk`GwR3$*8sD{a4a2+S{Cc3u*qZpS?KroBg?~Dl2|e)U$L9 z@$Tq*ED7-*@iCvF{Y=qPCGGc^pblbAX-+B}3dCI*QYsG9;4}keC?bV|eUVFGLGmSh zf%_K`1VOt2L99_JO4#%9BK04)#y6qQw_DlUrTu<%WB=MT{@)cxn;w~M13le0=GG+z zf60%r{~2~cR{p+3JK&f4F4I6;74k&SvDpN1Z^sUcW&CIEg0@zu4hU~n=pmkTE95t% zMtG$STzlwRq7JfF1KcDzVoi1#cG%B!5U;r3V0S0|(C2McKrXc~BDpgEmfi?;W&>fl zGTBfI9C*|ml2A3Ui`T4u6NUObn>+8fd;8b7LK*j{ zWk9K$`-bI!^eA~Ji- z5^a|S?Oq@4lWwpOu1IP~BTg_5-LjbiH%zP|gM@|Cd|R!j2B8puxrpLIn;d8}8K9_b zcP3Q12_?d*8l$GQn?`R0l2ae2%$7{yJ%+iM10pKN&r|VeIZc~4h!L)x{OJ`=|H2d! z^vI{yom4p=hjC%Fjq`3d>WA;nnnHv1(&GXqZl`Qj^BxGmJ_)^eBpmWqB`x{Lb10Mb zicYS|O>Q|_4++P*w+UgJ`kxQpzt{6o()#=XpyLRiE{k@(6&dz)>h>jZrUD?!B_oybmyxvmy#@N^28?Hr$Ty?0Q$9&1d7H`+U6&3Mbt!$2okZGumJ*T@;rzz za*F!kK=_JYs^5UxmVEKn!K5|IxryswvuNCv+M`=e-s?@vPG?@) z)S;xJ9*&%*$6sZ;sB&-Q8kXCT63Wh@h~##q=Av-@fJsGzu|z_}S6;kteJ(1WBb`>RtAajG;WLg}jlH6ZB*3 z$6W+}{1YN|Am7w?CJxNecl&gZSC~foOq0vhtt;-hHKr5;tiW%cdi7l)> zTy%n!HmZcH`4(tevtHJk3n;5`49=`h&T}_rVEfu?UbN431j8TsPB zdx^jJ%d9L{^+b#znv+zsVioqPxs#y(JIdy6ngjg~dos}D(J~7mLaDZ^hgvsp;BBNM z>NTl`Y~f>*&(zeAw0(oLh;@>ynLv`WKe?eivXE~zj>2%AX8-;~2h@8PaF#z2@OfYS zE^G1lJ(|_#P;8XdHz zqa=l%09iDpLJ*s(FbJ~-Cr40)cY!(gbI(r&2_)W?Z_VSD-&W?1H^iyEQGRZ7B(!@; zFQpg%4FB4W$)usy%X@wB)JnO0{HWRmB^*kiiHyE-7{a~$-?Qe}`bB3gt1jbEXz1Z` z1`dn9r&2UdKc$!-1-2AMf|x8Rm^4m_1CYglq>7CXXm+56>{K-~jjTbS)y+vcu%jxn zZaqC{-F^@m-IF^hpfs6s=eNqpSC;fWOCJKz-PpISL%uq=%RCA%*kXjO)b($hO324e zMRpeddl9%2R}wzN>=LzpG}J*QK~E?_oRlY*fem;>eYi$CGPzofqy6foJR6*>=p}jV z7x20yO-TvDED>6hHZB!*OSe~VSm?!8qm%9^{urz_RMtC+@>k%$IFP401lWaE*QD)N zf-Nli=lNIuq8R(rgx7O$^R}6SR|WVZz&43ZhNSU-5AUy%Uk9f6GAVyR3=-Kt$zKMg z>F_WTZiB*zvmIT2==(RAnI;)5D8@DJ6~dbZO3d*PC0PXH|0XnT59Q^>-wLp=@L*7Y zCMg^kg!XPf$G>%FoadVlPh|`Ck{wR00yh|4XctbK!RyrB*1*w)BlE*8Ix_f$5+UB+ zGT6+gXa9yWb{hFdHK9?mmpVru8@Ok51-eB_luS`ij}KTs5<_|@0N$uXL9jvUHTupt zvj`WFRzBY=Bh8WdY&^}P7$D;hL;*op16R`zb|w!y&At!mjVOGpCv#y#`iq^)@%O1} z_#Y^^8s5~M?)1O*rscqa$H8h~x<(7}SXd@b^eNl@w^4I^7n4q{M}Cm@E2pYZzwB>K zlp}t-i;66|ff!)zR-S#PBF~%snPv5>EcFx&57iyx|0Sz?LoFRj$3%x?K0u0d+HX+) zK`^v}w*q{Zqs30=?`a7vj_kMUKWuw`N)$+y|EZbEY%S`h2L=M1pvsh}KNl00K{d{j z_m&+6wYfu*51R{aye7cT=jtzNoV7q{VX&-jETSnFzaXH|?Zb+vQ+18l}viTOmt$td_8hl~`#iIDhO z-1u*XLpAvN>y#Oe3H)T){V0FZv18HHW7O#5F&9q5AIDE(bdZ0u$aueP zGI3p!_;c*Y{CzVy+-&wbb^;W~Xl3dEgPAEmqVh2K28zFm81hjl6FjU^LGcRODX_WK z`?WzX;aRU<>%IH>3r8fL{VhIZg%*UfM~;!F;y&JBTzVd`pFKTHIdLCnW;8KM#;MZM zxW18xvrq$H_;sEC{~sF~G!2+vXs)N++#1ULEMIcwIEdxtt`c4-q1bMyN}D=n zRxry3K0GW!ja$R1oeNC=VOYYCj4Co7Cn1VZ>iyrE3GSWcR z%`K4@r;%tohcK*1hCP$bb%71bCg%})cHw{mt!;G-uc3SYt)}cE`d$^gw6}xm{g2rF zvu-i$Y46ex+*87%iqlTm+Y2O^>s$Jo*SK;s0e1CA#tyV8omlb9CdqVu3jheu@Zts^IGEWnTt6|3%e#|3 zYa-97v}*oACk+I@Te(Mtt3TV%G2o@BP6H)bS#1O^4Ge6x~A2fTE zdS3C+6I^LWjzI6+Zy~SljC9&fpf#UN5dUXn!JOM7zu(-mC@Vgh*vpv?9AB`H-#qW^ zTKC(PyeR$f%W}1Ni7YYs_0fJ0gR}ez7F6Mzk+-H$@_A6sh}a6 zerTP}p8N)*&5>ME;?fEzI7E0}InSLSHPzwi*}i^ZH0NiIOI=-B&>{73CwcRiQJh60 zOTOLT@lu+qg>~MlJ=5b=Hb+V(Xb=QcuD_>`QTSo= z#(H7wd70ge_bgx_YTZfwW9frap^N;N4=w&sr)(}9(9~z2(h&$jzX_`&uyUGIeqyZS z)eP?`YU#uKHf%70?2Sat-k6wzJ^e!mLsD)%0WD@gcb?fOfzT9FbRvrmb3k430a_Z` z<}h5f<-y9y!Wj*tex;kDm9s6Cv`t&N;Ty90y@j;un|qaW+hj^6+v`3-I-(*X0&yIU zW3=w)^#}@yS|VI-jmFOzht{;-oKYC%+@|d_-Xcv6x}9<-D;x-gaMUoqD}mER@zb&x zQU^;hu}!aydH>Ip2H`rn>`l(+DnLn84Bd4KYA=1AQy`X!t|^0by=M+2SHTkTTw7v# zhDxO_Pf46;3l95#&-)UY?ZC5@tf-5PJ*Xievl;12|MW4%>!abLTi|H&C45K_l31VE zP}81!y=K(2iw{-vZti3>%HmlKYG^%~x8Cm}3 zBXOm_M=MMFAsJ!Kk*XqzaVmbVfk<1QOK_h40~ZzNa;@Gq>%{r7iIqM+{nL3b6vC>d zm*y{f-s`>^Q%BXWb)o7o3{@EE)2}bG+UFk}mQ*jq?@Plo)QdX;-q}-X97Rz!dq!N> z?H^N4t?y)B;CqJG9&(hB&0WmTe1+_6ZV>5`TD$8JwsNZ~09+^YApiPLl=A=ggg3l) z#e&Q?(<_<9rIXNtLp*Z?vVp+ZIay!EdpONmi^JM;EKx^vUm=7(P?rLu;ApdT+lb+n zTlg!Rs&ta%Z!|X^?6|O|^JLv`REhZ4?Rt0DCLoCkN^PKpgup1#&d);x0XC9$85meB zhDw&8u>jmGFLhww${M@;X->n&lA3LlGv)lKKg+NGR=ZEGeA=27nfnHF`zS>To$i{>IV+FTorT}QmRO)h-TUq$9 zH!neC;;nrK6bRz(-`hu173C5Gb?}ct66$BZyhn@o*$6DPbTe+B)XJAT6WE7`^RDcEe!Apix(~=i9e?)}_ z9_ZA*qljb8`4Lr&)LQ$O8Sqp_?(OjEf95W9UB^aBl*^Qq)y>1X=b z$Z`!)o{Sl9fXeHG%u`vx9!LeTZL>L&R;61AU^$?iZaRoP!>|aX8xn=r-|Ic9&Rmd1 zl$HW;@p_RFz@nxEu=uaZSf=v(gX)5#Ts;<8TqTkZ&O|r^Ktb`NJkrzig@yR+1AYDk zO#DzU%p47OHjS&s3!dD8ngIP4?EC6Gh@Zf786vt=V#zy<|L?R2Bw+9;(+y}DA>O4` zCnwS4qa$fpWC$%e9vFvD#GH(d#*`@sBuHIuPbbCPH_lqbFxf6?zXC~m)TL?iacL&~ zrNf&)Hf~_A{;EckU))F$Ty*8QD#kB9SEe(S;0e*jcQzblTAXPus^>dAQ{avq9Z+i_ z!KfJ;=zpqa3%9iQfiL|E9vLDw6eqC~t~xru7G{gA1qPB)uj`A*%*sBaJ?{KZ>FwdMSHm980`8a!BpMv)hiG8hQm-(LGXai>clP38{S&6;SOcPg@fm zk|tR}4j>HKTz3RbhFe;q>DPmZ>!Y|at975fS4LbiRQ6?2hcD*%6zZ$sRNcK%?& zp;)ec(&;=^stCKg@p#}#2aq}hB2*Atql=v|L+qs`>>Ue@t6vRQM>Gw`>2mKxSAaNs zwoAEXJALctTMe#y5$q#P`q!4k-km0$+89M#A4VD|x|szmliHkvQmGlUhSi93*17J; z`#)Ags@ZEX<*^lh5?bLdSKV!BE@7w82TYK&6A{56^%Mef-jy2;bhIorG+^$Jd8p7P z1CimrwP&|(*|Nv+M%6fB)W$`?{hP#FyQEd~R5$H>f72fzZbKsEJQa&)GJluWF$kPj zI=#wEv*GJm`}dCn&U^433lH&3u$Dn?zqCFZ7tbeiRf}+#49+53p%g&=v>gs*vmY){ zzK1Zp07eo*zc}cA3>TSR>CT@`<|SM!R!R_$5f6yOGe0$E z0Ff(wXgq4b8P%;vIX~Mi^jP+Awy*E0J*yEmx7~z?bB-b4W-Wy*3uS-@^KtGS3xd#} zrioH0lw*t;wArBohi)?EpH-n;J1csBfRcKcKu=}`6Jw2C3zJ^H%lg{5$QTGt$tY6; zPHBJTrqBHMJ1c*1{(BWaJ}-@=-nMX7C_PN7kZEGQrYF!M)h-iAwp^LeBSDul6i}*B z&^(YaeJL^jFp|&O+T~C`)OYm3V&=xB7aXG@*9+&_lxAn7s`s2UPrC!U^dJ-YUYvet z-+RGixgGMI3FLUtbNJ3z169Gj{jSu==M@vsq68cnaiVeYzkt9)rXmvJ1t;nufH;vy zan924V>j^L8i|7So}o|QxpBfmHJ+09!(KZjjjoh*=$gKlO_yDtSN@g8plP2}5W}J` zq+Xm52#q4;7z9M1-#j^K)TTPYa9PD$V~Zn_&hj2-1CF46S}I6v2f^8Pw^ZPWeZuB*TdVrVmhBp=5|Uh8Y?Rd zspJLuLw6+4YdO4+H~{FK{r=-KpT1njKUZ7gcj=G2Yo_Wxv~g$@E10VJiTfjRrmXcp ziA>U`VVO~EE)YcWxev9RRRS)W8W#C@XhEjGAIHn}A%?xT4>&arKnYDg)#jArWkGSg zC+6=r*?pD%kj~ulXP@u;oaN4aWq^wB^aA4@|uXt?2cvIkBaCF-J8l4fFJJQOyNwqLlXbL9$ONIiDgn-V)Wy<6z_3A2^ z!$|y^{Km#V?mxR$((M3{v9!|1$*gS$JfH28=IgwVUf#!7njz9H*=o;CnCla^7vK-e z{L%INg{a~GxQ?r@zU$}gBv;AshfW!Tu}-ZO6418r@k+M^)k6{*^Q)D?S;|QBKzqq~ z9+?Kpv;rgq-rqP?TqT)bA?>C=VlD}}mN0zmM#$yQ;)sa13c{~SA(T#}XABA?jYR6O ziUqp|U7y0yv)20A96A?f#u;vldb%xK{dJgNU>SJX$aH%+8P*lB0Qrx$K@2a4j|bGy z88y`7!%|1E7SI7Gw<&C-%$Z2z+L0C0yg~HvM!QJb<}>rQ9eu@QQ{n=@`PiEv7Z z!LB+8FOg1HK||&~j+)iwssLAkLhc|x@9)d`%=Pl2Y?(DwETK(wMX$Hq;l;x!pVHjg zE%$CHUt`i`9X)PQ?J2>MlG-HXd(7^?#_0!se7vc-Rdt9fjZDNyToVy;Hd!5KJ>EA1 zirHA0ex@1{;ae(vv_YdX2njlFqoYdpr!0Yklz)FaQ%Xzk74uy@fQ$d$6VK$xLm7Fu zR;EYZSI9Z{lvxhYQRR*ZtmU!^JU%gSIZs(qRoph*56oi_!3bt zwISH@k+CGVv-9Q2w7*~~BQ9^Ycube%CtC{qU?|~%CZdJ0aL#IB(4ka;-}&!TG+H^+ zx`(@0-6|o0uZA2v2M80<)!id0=~Z;IxoT0dW=; zRpvpI4-Nl8MP6k`PgBqUcXT#*%g@st1YUooMyBm6Wks%FY1aJK3P!Zh@NSHJ9@!kx z`f=Cay!biQXnPe+Z!SDR#In4}#;EPdm)aHhJBrZ8Az+A?`2}E!!V*iUijI8LgYsOj z$3awNUWI$z0H$K=7rl8m0_|fnviQ#or5jhy3;sOCNOFFL)-&eb?7gm;dwDMi`>vbkC-Uc9hC$CO5KH~|!Q^R?MJ8Q`S z*!)tu4FoJcK;Xy8izUNY(ku9bHfD})xIvn=wJYxv>GQ_H1)mGvpW_P;T`9jl^@ZnH zbST3?G)MR(a=^j-*NtSj4g3lHIyM^$tJpIFTV|5~M)2(kKjfQX!anyf7Bhyw(8$sT zzdLAi3h=({_XcqfwadN!G&axPXqv2Iu3ip)%0D5n$}hhYdu$Zbsl`sd18G4 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