<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.lemoncraft.su/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D0%B8</id>
	<title>Модуль:Таблица разрушаемости - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.lemoncraft.su/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D0%B8"/>
	<link rel="alternate" type="text/html" href="https://wiki.lemoncraft.su/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;action=history"/>
	<updated>2026-06-10T02:31:14Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.lemoncraft.su/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=398&amp;oldid=prev</id>
		<title>Spark108: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://wiki.lemoncraft.su/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=398&amp;oldid=prev"/>
		<updated>2025-03-26T10:50:50Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 10:50, 26 марта 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Spark108</name></author>
	</entry>
	<entry>
		<id>https://wiki.lemoncraft.su/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=397&amp;oldid=prev</id>
		<title>minecraftwiki&gt;BabylonAS: добавлена поддержка ручного указания прочности, полезно для модов</title>
		<link rel="alternate" type="text/html" href="https://wiki.lemoncraft.su/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B0%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=397&amp;oldid=prev"/>
		<updated>2024-07-01T10:38:01Z</updated>

		<summary type="html">&lt;p&gt;добавлена поддержка ручного указания прочности, полезно для модов&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local breakingTimeHeader;&lt;br /&gt;
local function getBreakingTimeHeader( f )&lt;br /&gt;
    if breakingTimeHeader == nil then&lt;br /&gt;
        breakingTimeHeader = &amp;#039;Время [[Добывание|разрушения]] (сек)&amp;#039; .. f:extensionTag(&amp;#039;ref&amp;#039;, &amp;#039;Время для незачарованных инструментов, используемых игроком без наложенных эффектов, в секундах. Для большей информации см. [[Добывание#Скорость|Добывание § Скорость]].&amp;#039;, {group=&amp;quot;FN&amp;quot;, name=&amp;quot;breakingtimenote&amp;quot;})&lt;br /&gt;
    end&lt;br /&gt;
    return breakingTimeHeader&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.row( f )&lt;br /&gt;
    local args = require( [[Модуль:ProcessArgs]] ).norm()&lt;br /&gt;
    local sprite = require( [[Модуль:Спрайт]] )&lt;br /&gt;
&lt;br /&gt;
    local function getDplVar( var )&lt;br /&gt;
        local val = f:callParserFunction( &amp;#039;#dplvar&amp;#039;, &amp;#039;breaking &amp;#039; .. var )&lt;br /&gt;
        if val == &amp;#039;&amp;#039; then&lt;br /&gt;
            val = false&lt;br /&gt;
        end&lt;br /&gt;
        return val&lt;br /&gt;
    end&lt;br /&gt;
    local dplVars = {}&lt;br /&gt;
    local function setDplVar( var, val )&lt;br /&gt;
        table.insert( dplVars, &amp;#039;breaking &amp;#039; .. var )&lt;br /&gt;
        table.insert( dplVars, val or &amp;#039;1&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local rows = {}&lt;br /&gt;
    local tableParts = {}&lt;br /&gt;
    local categories = {}&lt;br /&gt;
&lt;br /&gt;
    local horizontal&lt;br /&gt;
    args[1] = args[1] or &amp;#039;&amp;#039; -- чтобы не переделывать весь модуль, ранее считавший, что тут строка&lt;br /&gt;
    &lt;br /&gt;
    -- Подставляет название страницы, если параметр args[1] не указан.&lt;br /&gt;
    if (args[1] == &amp;#039;&amp;#039;) or (args[1] == nil) then&lt;br /&gt;
		args[1] = mw.title.getCurrentTitle().text&lt;br /&gt;
		args[&amp;quot;встолбик&amp;quot;] = 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
    if args[&amp;quot;встолбик&amp;quot;] or args[1]:match( &amp;#039;;&amp;#039; ) then&lt;br /&gt;
        horizontal = true&lt;br /&gt;
    end&lt;br /&gt;
    local showTool = true&lt;br /&gt;
    local showShears = true&lt;br /&gt;
    local showSword = true&lt;br /&gt;
    local header, sortable, simple&lt;br /&gt;
    if horizontal or not getDplVar( &amp;#039;header&amp;#039; ) then&lt;br /&gt;
        if args[&amp;quot;скрытьинструмент&amp;quot;] or horizontal and ( not args[2] or args[2]:lower() == &amp;#039;any&amp;#039; or args[2]:lower() == &amp;#039;none&amp;#039; ) then&lt;br /&gt;
            showTool = false&lt;br /&gt;
            setDplVar( &amp;#039;hidetool&amp;#039; )&lt;br /&gt;
            breakingTimeHeader = &amp;#039;Время [[Добывание|разрушения]]&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        if args[&amp;quot;скрытьножницы&amp;quot;] or horizontal and not args[&amp;quot;ножницы&amp;quot;] then&lt;br /&gt;
            showShears = false&lt;br /&gt;
            setDplVar( &amp;#039;hideshears&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
        if args[&amp;quot;скрытьмеч&amp;quot;] or horizontal and not args[&amp;quot;меч&amp;quot;] then&lt;br /&gt;
            showSword = false&lt;br /&gt;
            setDplVar( &amp;#039;hidesword&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        sortable = not horizontal and args[&amp;quot;сортировка&amp;quot;]&lt;br /&gt;
        if sortable then&lt;br /&gt;
            setDplVar( &amp;#039;sortable&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
        simple = args[&amp;quot;простой&amp;quot;]&lt;br /&gt;
        if simple and not horizontal then&lt;br /&gt;
            setDplVar( &amp;#039;simple&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local tableClasses = { &amp;#039;wikitable&amp;#039; }&lt;br /&gt;
        if sortable then&lt;br /&gt;
            table.insert( tableClasses, &amp;#039;sortable&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
        table.insert( rows, &amp;#039; {| class=&amp;quot;&amp;#039; .. table.concat( tableClasses, &amp;#039; &amp;#039; ) .. &amp;#039;&amp;quot; style=&amp;quot;text-align:center&amp;quot;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
        local sortType = &amp;#039;&amp;#039;&lt;br /&gt;
        if sortable then&lt;br /&gt;
            sortType = &amp;#039;data-sort-type=&amp;quot;number&amp;quot;&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        local rowspan = &amp;#039;&amp;#039;&lt;br /&gt;
        if not horizontal then&lt;br /&gt;
            rowspan = &amp;#039;rowspan=&amp;quot;2&amp;quot; &amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        header = {&lt;br /&gt;
            &amp;#039;! &amp;#039; .. rowspan .. &amp;#039; | Блок&amp;#039;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if not simple then&lt;br /&gt;
            table.insert( header, &amp;#039;! &amp;#039; .. rowspan .. sortType .. &amp;#039; | Прочность&amp;#039; )&lt;br /&gt;
            if showTool then&lt;br /&gt;
                table.insert( header, &amp;#039;! &amp;#039; .. rowspan .. &amp;#039; | Инструмент&amp;#039; )&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local toolColumns = {}&lt;br /&gt;
        if showTool then&lt;br /&gt;
            local firstTool = mw.text.trim( simple and &amp;#039;Инструмент&amp;#039; or args[2] or &amp;#039;Любой&amp;#039; ):gsub( &amp;#039;^%l&amp;#039;, string.upper )&lt;br /&gt;
            firstTool = mw.text.split( firstTool, &amp;#039;;&amp;#039; )[1]&lt;br /&gt;
            if firstTool == &amp;#039;Кирка&amp;#039; or firstTool == &amp;#039;Лопата&amp;#039; or firstTool == &amp;#039;Мотыга&amp;#039; then&lt;br /&gt;
                toolColumns = { &amp;#039;Деревянная&amp;#039;, &amp;#039;Каменная&amp;#039;, &amp;#039;Железная&amp;#039;, &amp;#039;Алмазная&amp;#039;, &amp;#039;Незеритовая&amp;#039;, &amp;#039;Золотая&amp;#039; }&lt;br /&gt;
            else&lt;br /&gt;
                toolColumns = { &amp;#039;Деревянный&amp;#039;, &amp;#039;Каменный&amp;#039;, &amp;#039;Железный&amp;#039;, &amp;#039;Алмазный&amp;#039;, &amp;#039;Незеритовый&amp;#039;, &amp;#039;Золотой&amp;#039; }&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        table.insert( toolColumns, 1, &amp;#039;По умолчанию&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
        if not simple then&lt;br /&gt;
            if showShears then&lt;br /&gt;
                table.insert( toolColumns, &amp;#039;Ножницы&amp;#039; )&lt;br /&gt;
            end&lt;br /&gt;
            if showSword then&lt;br /&gt;
                table.insert( toolColumns, &amp;#039;Меч&amp;#039; )&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if not horizontal then&lt;br /&gt;
            table.insert( header, &amp;#039;! colspan=&amp;quot;&amp;#039; .. #toolColumns .. &amp;#039;&amp;quot; |&amp;#039; .. getBreakingTimeHeader( f ) )&lt;br /&gt;
            table.insert( header, &amp;#039;|-&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local toolSprites = {&lt;br /&gt;
            [&amp;quot;Деревянный&amp;quot;] = {&amp;#039;Спрайт/Блок&amp;#039;, &amp;#039;дубовые-доски&amp;#039; },&lt;br /&gt;
            [&amp;quot;Деревянная&amp;quot;] = {&amp;#039;Спрайт/Блок&amp;#039;, &amp;#039;дубовые-доски&amp;#039; },&lt;br /&gt;
            [&amp;quot;Каменный&amp;quot;] = { &amp;#039;Спрайт/Блок&amp;#039;, &amp;#039;булыжник&amp;#039; },&lt;br /&gt;
            [&amp;quot;Каменная&amp;quot;] = { &amp;#039;Спрайт/Блок&amp;#039;, &amp;#039;булыжник&amp;#039; },&lt;br /&gt;
            [&amp;quot;Железный&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;железный-слиток&amp;#039; },&lt;br /&gt;
            [&amp;quot;Железная&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;железный-слиток&amp;#039; },&lt;br /&gt;
            [&amp;quot;Алмазный&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;алмаз&amp;#039; },&lt;br /&gt;
            [&amp;quot;Алмазная&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;алмаз&amp;#039; },&lt;br /&gt;
            [&amp;quot;Незеритовый&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;незеритовый-слиток&amp;#039; },&lt;br /&gt;
            [&amp;quot;Незеритовая&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;незеритовый-слиток&amp;#039; },&lt;br /&gt;
            [&amp;quot;Золотой&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;золотой-слиток&amp;#039; },&lt;br /&gt;
            [&amp;quot;Золотая&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;золотой-слиток&amp;#039; },&lt;br /&gt;
            [&amp;quot;Ножницы&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;ножницы&amp;#039; },&lt;br /&gt;
            [&amp;quot;Меч&amp;quot;] = { &amp;#039;Спрайт/Предмет&amp;#039;, &amp;#039;деревянный-меч&amp;#039; }&lt;br /&gt;
        }&lt;br /&gt;
        for _, tool in ipairs( toolColumns ) do&lt;br /&gt;
            if toolSprites[tool] then&lt;br /&gt;
                local image, spriteCat = sprite.sprite{&lt;br /&gt;
                    [&amp;quot;данные&amp;quot;] = toolSprites[tool][1],&lt;br /&gt;
                    toolSprites[tool][2],&lt;br /&gt;
                    [&amp;quot;текст&amp;quot;] = tool&lt;br /&gt;
                }&lt;br /&gt;
                table.insert( header, &amp;#039;! style=&amp;quot;text-align:left&amp;quot; &amp;#039; .. sortType .. &amp;#039; | &amp;#039; .. image )&lt;br /&gt;
                table.insert( categories, spriteCat )&lt;br /&gt;
            else&lt;br /&gt;
                table.insert( header, &amp;#039;! &amp;#039; .. sortType .. &amp;#039; | &amp;#039; .. tool )&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if not horizontal then&lt;br /&gt;
            header = table.concat( header, &amp;#039;\n&amp;#039; )&lt;br /&gt;
            setDplVar( &amp;#039;header&amp;#039;, header )&lt;br /&gt;
        end&lt;br /&gt;
        table.insert( tableParts, header )&lt;br /&gt;
    else&lt;br /&gt;
        showTool = not getDplVar( &amp;#039;hidetool&amp;#039; )&lt;br /&gt;
        showShears = not getDplVar( &amp;#039;hideshears&amp;#039; )&lt;br /&gt;
        showSword = not getDplVar( &amp;#039;hidesword&amp;#039; )&lt;br /&gt;
        sortable = getDplVar( &amp;#039;sortable&amp;#039; )&lt;br /&gt;
        simple = getDplVar( &amp;#039;simple&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local hardness = require( [[Модуль:Значения блоков]] ).value&lt;br /&gt;
&lt;br /&gt;
    local function fillCells( cellsTable, text, num )&lt;br /&gt;
        for i = 1, num do&lt;br /&gt;
            table.insert( cellsTable, text )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    local materialGrade = {&lt;br /&gt;
        [&amp;quot;Любой&amp;quot;] = 0, [&amp;quot;Любая&amp;quot;] = 0,&lt;br /&gt;
        [&amp;quot;Деревянный&amp;quot;] = 1, [&amp;quot;Деревянная&amp;quot;] = 1,&lt;br /&gt;
        [&amp;quot;Золотой&amp;quot;] = 1, [&amp;quot;Золотая&amp;quot;] = 1,&lt;br /&gt;
        [&amp;quot;Каменный&amp;quot;] = 2, [&amp;quot;Каменная&amp;quot;] = 2,&lt;br /&gt;
        [&amp;quot;Железный&amp;quot;] = 3, [&amp;quot;Железная&amp;quot;] = 3,&lt;br /&gt;
        [&amp;quot;Алмазный&amp;quot;] = 4, [&amp;quot;Алмазная&amp;quot;] = 4,&lt;br /&gt;
        [&amp;quot;Незеритовый&amp;quot;] = 5, [&amp;quot;Незеритовая&amp;quot;] = 5,&lt;br /&gt;
        [&amp;quot;Нет&amp;quot;] = 6&lt;br /&gt;
    }&lt;br /&gt;
    local materialSpeed = {&lt;br /&gt;
        [&amp;quot;Нет&amp;quot;] = 1,&lt;br /&gt;
        [&amp;quot;Любой&amp;quot;] = 1, [&amp;quot;Любая&amp;quot;] = 1,&lt;br /&gt;
        [&amp;quot;Деревянный&amp;quot;] = 2, [&amp;quot;Деревянная&amp;quot;] = 2,&lt;br /&gt;
        [&amp;quot;Каменный&amp;quot;] = 4, [&amp;quot;Каменная&amp;quot;] = 4,&lt;br /&gt;
        [&amp;quot;Железный&amp;quot;] = 6, [&amp;quot;Железная&amp;quot;] = 6,&lt;br /&gt;
        [&amp;quot;Алмазный&amp;quot;] = 8, [&amp;quot;Алмазная&amp;quot;] = 8,&lt;br /&gt;
        [&amp;quot;Незеритовый&amp;quot;] = 9, [&amp;quot;Незеритовая&amp;quot;] = 9,&lt;br /&gt;
        [&amp;quot;Золотой&amp;quot;] = 12, [&amp;quot;Золотая&amp;quot;] = 12&lt;br /&gt;
    }&lt;br /&gt;
    local numberMaterials = 6&lt;br /&gt;
&lt;br /&gt;
    local function insertBlock( blockArgs )&lt;br /&gt;
        local cells = {}&lt;br /&gt;
        local blocks = mw.text.split( blockArgs[1], &amp;#039;%s*,%s*&amp;#039; )&lt;br /&gt;
        local hardnessVal = tonumber( blockArgs[&amp;quot;прочность&amp;quot;] or hardness{ blocks[1], [&amp;quot;тип&amp;quot;] = &amp;#039;прочности&amp;#039; } )&lt;br /&gt;
        if not hardnessVal then&lt;br /&gt;
            hardnessVal = &amp;#039;?&amp;#039;&lt;br /&gt;
            local title = mw.title.getCurrentTitle()&lt;br /&gt;
            if title.namespace == 0 and not title.isSubpage then&lt;br /&gt;
                table.insert(categories, &amp;#039;[[Категория:Отсутствующие значения прочности]]&amp;#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        local unbreakable&lt;br /&gt;
        if hardnessVal == -1 or blockArgs.liquid then&lt;br /&gt;
            unbreakable = true&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local blockSprites = {}&lt;br /&gt;
        local links = mw.text.split( blockArgs[&amp;quot;ссылка&amp;quot;] or &amp;#039;&amp;#039;, &amp;#039;%s*,%s*&amp;#039; )&lt;br /&gt;
        local ids = mw.text.split( blockArgs[&amp;quot;спрайт&amp;quot;] or &amp;#039;&amp;#039;, &amp;#039;%s*,%s*&amp;#039; )&lt;br /&gt;
        local items = mw.text.split( blockArgs[&amp;quot;предмет&amp;quot;] or &amp;#039;&amp;#039;, &amp;#039;%s*,%s*&amp;#039; )&lt;br /&gt;
        for i, block in ipairs( blocks ) do&lt;br /&gt;
            local link&lt;br /&gt;
            if not links[i] and links[1] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                link = links[1]&lt;br /&gt;
            elseif links[i] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                link = links[i]&lt;br /&gt;
            end&lt;br /&gt;
            local id&lt;br /&gt;
            if not ids[i] and ids[1] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                id = ids[1]&lt;br /&gt;
            elseif ids[i] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                id = ids[i]&lt;br /&gt;
            end&lt;br /&gt;
            local blockText&lt;br /&gt;
            if args[&amp;quot;сократить&amp;quot;] then&lt;br /&gt;
                blockText = block:gsub( args[&amp;quot;сократить&amp;quot;] .. &amp;#039;$&amp;#039;, &amp;#039;&amp;#039; )&lt;br /&gt;
            else&lt;br /&gt;
                blockText = block&lt;br /&gt;
            end&lt;br /&gt;
            local blockSpriteArgs = {&lt;br /&gt;
                [&amp;quot;данные&amp;quot;] = &amp;#039;Спрайт/Блок&amp;#039;,&lt;br /&gt;
                block,&lt;br /&gt;
                [&amp;quot;текст&amp;quot;] = blockText,&lt;br /&gt;
                [&amp;quot;ссылка&amp;quot;] = link,&lt;br /&gt;
                [&amp;quot;ID&amp;quot;] = id&lt;br /&gt;
            }&lt;br /&gt;
            if items[i] == &amp;#039;1&amp;#039; or not items[i] and items[1] == &amp;#039;1&amp;#039; then&lt;br /&gt;
                blockSpriteArgs[&amp;quot;данные&amp;quot;] = &amp;#039;Спрайт/Предмет&amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            local image, spriteCat = sprite.link( blockSpriteArgs )&lt;br /&gt;
            table.insert( blockSprites, image )&lt;br /&gt;
            table.insert( categories, spriteCat )&lt;br /&gt;
        end&lt;br /&gt;
        table.insert( cells,&lt;br /&gt;
            &amp;#039;! style=&amp;quot;text-align:left&amp;quot; | &amp;#039; .. table.concat( blockSprites, &amp;#039;&amp;lt;br&amp;gt;&amp;#039; ) .. ( blockArgs[&amp;quot;прим&amp;quot;] or &amp;#039;&amp;#039; )&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        local tool = mw.text.trim( simple and &amp;#039;Инструмент&amp;#039; or blockArgs[2] or &amp;#039;Любой&amp;#039; ):gsub( &amp;#039;^%l&amp;#039;, string.upper )&lt;br /&gt;
        local material = mw.text.trim( simple and blockArgs[2] or blockArgs[3] or &amp;#039;Любой&amp;#039; ):gsub( &amp;#039;^%l&amp;#039;, string.upper )&lt;br /&gt;
        if tool == &amp;#039;Нет&amp;#039; then&lt;br /&gt;
            material = tool&lt;br /&gt;
        end&lt;br /&gt;
        if not simple then&lt;br /&gt;
            local hardnessText = hardnessVal&lt;br /&gt;
            if hardnessVal == -1 then&lt;br /&gt;
                hardnessText = ( sortable and &amp;#039;data-sort-value=&amp;quot;999&amp;quot; | &amp;#039; or &amp;#039;&amp;#039; ) .. &amp;#039;∞&amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
            table.insert( cells, &amp;#039;|&amp;#039; .. hardnessText )&lt;br /&gt;
&lt;br /&gt;
            if showTool then&lt;br /&gt;
                local toolCell = &amp;#039;—&amp;#039;&lt;br /&gt;
                if tool ~= &amp;#039;Любой&amp;#039; and tool ~= &amp;#039;Нет&amp;#039; then&lt;br /&gt;
                    local isMaterialSpecified = (material ~= &amp;#039;Любой&amp;#039;) and (material ~= &amp;#039;Нет&amp;#039;)&lt;br /&gt;
                    local toolName = ( isMaterialSpecified and material .. &amp;#039; &amp;#039; or &amp;#039;&amp;#039; ) .. tool&lt;br /&gt;
                    if toolName == &amp;#039;Топор&amp;#039; then&lt;br /&gt;
                    	wooden = &amp;#039;Деревянный &amp;#039;&lt;br /&gt;
                    else &lt;br /&gt;
                    	wooden = &amp;#039;Деревянная &amp;#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    local fullToolName = ( (not isMaterialSpecified) and wooden or &amp;#039;&amp;#039; ) .. toolName&lt;br /&gt;
                    local image, spriteCat = sprite.sprite{&lt;br /&gt;
                        [&amp;quot;данные&amp;quot;] = &amp;#039;Спрайт/Предмет&amp;#039;,&lt;br /&gt;
                        fullToolName,&lt;br /&gt;
                        [&amp;quot;назв&amp;quot;] = toolName,&lt;br /&gt;
                        [&amp;quot;ссылка&amp;quot;] = tool&lt;br /&gt;
                    }&lt;br /&gt;
                    toolCell = ( sortable and &amp;#039;data-sort-value=&amp;quot;&amp;#039; .. toolName .. &amp;#039;&amp;quot; |&amp;#039; or &amp;#039;&amp;#039; ) .. image&lt;br /&gt;
                    table.insert( categories, spriteCat )&lt;br /&gt;
                end&lt;br /&gt;
                table.insert( cells, &amp;#039;|&amp;#039; .. toolCell )&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local choices = {}&lt;br /&gt;
        local function getChoice( choice, text )&lt;br /&gt;
            if not choices[choice] then&lt;br /&gt;
                choices[choice] = f:expandTemplate{ title = &amp;#039;Таблица выбора&amp;#039;, args = { choice, &amp;#039;&amp;#039;} }&lt;br /&gt;
            end&lt;br /&gt;
            return choices[choice] .. text&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local function processTime( num )&lt;br /&gt;
            -- переданное число было умножено на 100&lt;br /&gt;
            if num &amp;lt;= 5 then        -- Минимальные временные затраты на разрушение блока равны 1 игровому такту (0,05 секунды)&lt;br /&gt;
                num = 0.05&lt;br /&gt;
            else                    -- Блоки должны быть разрушены кратно 1 игровому такту (0,05 секунды)&lt;br /&gt;
                num = math.ceil( num / 5 ) / 20&lt;br /&gt;
            end&lt;br /&gt;
            return num&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if hardnessVal == &amp;#039;?&amp;#039; then&lt;br /&gt;
            fillCells( cells, &amp;#039;|?&amp;#039;, numberMaterials + 1 )&lt;br /&gt;
        else&lt;br /&gt;
            if unbreakable then&lt;br /&gt;
                table.insert( cells, &amp;#039;| &amp;#039; .. ( sortable and &amp;#039;data-sort-value=&amp;quot;999&amp;quot; &amp;#039; or &amp;#039;&amp;#039; ) .. getChoice( &amp;#039;нет&amp;#039;, &amp;#039;∞&amp;#039; ) )&lt;br /&gt;
                if showTool then&lt;br /&gt;
                    fillCells( cells, &amp;#039;|—&amp;#039;, numberMaterials )&lt;br /&gt;
                end&lt;br /&gt;
            else&lt;br /&gt;
                local drop = &amp;#039;да&amp;#039;&lt;br /&gt;
                local forceDrop = false&lt;br /&gt;
                if blockArgs[&amp;quot;дроп&amp;quot;] == &amp;#039;0&amp;#039; then&lt;br /&gt;
                    drop = &amp;#039;частично&amp;#039;&lt;br /&gt;
                elseif blockArgs[&amp;quot;дроп&amp;quot;] == &amp;#039;1&amp;#039; then&lt;br /&gt;
                     forceDrop = &amp;#039;да&amp;#039;&lt;br /&gt;
                 end&lt;br /&gt;
                 local requiredLevel = unbreakable and 999 or materialGrade[material]&lt;br /&gt;
                 local function insertMaterialCell( material )&lt;br /&gt;
                     local shouldDrop = drop&lt;br /&gt;
                    if materialGrade[material] &amp;lt; requiredLevel then&lt;br /&gt;
                        shouldDrop = &amp;#039;нет&amp;#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- предотвращение потери точности числа с плавающей запятой: умножить его на 100 и разделить в функции &amp;quot;processTime&amp;quot;&lt;br /&gt;
                    local breakTime = processTime( hardnessVal * (shouldDrop == &amp;#039;нет&amp;#039; and 500 or 150) / materialSpeed[material] )&lt;br /&gt;
                    if breakTime == 0.05 then&lt;br /&gt;
                        breakTime = &amp;quot;&amp;#039;&amp;#039;0.05&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
                    end&lt;br /&gt;
                    table.insert( cells, &amp;#039;|&amp;#039; .. getChoice( forceDrop or shouldDrop, breakTime ) )&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
                 if not showTool or tool == &amp;#039;Любой&amp;#039; or tool == &amp;#039;Нет&amp;#039; then&lt;br /&gt;
                     insertMaterialCell( &amp;#039;Любой&amp;#039; )&lt;br /&gt;
                    if showTool then&lt;br /&gt;
                        fillCells( cells, &amp;#039;|—&amp;#039;, numberMaterials )&lt;br /&gt;
                    end&lt;br /&gt;
                else&lt;br /&gt;
                    for _, material in ipairs{ &amp;#039;Любой&amp;#039;, &amp;#039;Деревянный&amp;#039;, &amp;#039;Каменный&amp;#039;, &amp;#039;Железный&amp;#039;, &amp;#039;Алмазный&amp;#039;, &amp;#039;Незеритовый&amp;#039;, &amp;#039;Золотой&amp;#039; } do&lt;br /&gt;
                        insertMaterialCell( material )&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if not simple and ( showShears or showSword ) then&lt;br /&gt;
            local tools = {}&lt;br /&gt;
            if showShears then&lt;br /&gt;
                table.insert( tools, &amp;#039;Ножницы&amp;#039; )&lt;br /&gt;
            end&lt;br /&gt;
            if showSword then&lt;br /&gt;
                table.insert( tools, &amp;#039;Меч&amp;#039; )&lt;br /&gt;
            end&lt;br /&gt;
            if hardnessVal == &amp;#039;?&amp;#039; then&lt;br /&gt;
                fillCells( cells, &amp;#039;|?&amp;#039;, #tools )&lt;br /&gt;
            else&lt;br /&gt;
                local toolSpeed = {&lt;br /&gt;
                    [&amp;quot;Ножницы&amp;quot;] = 1,&lt;br /&gt;
                    [&amp;quot;Меч&amp;quot;] = 1.5&lt;br /&gt;
                }&lt;br /&gt;
                if blocks[1] == &amp;#039;Шерсть&amp;#039; then&lt;br /&gt;
                    toolSpeed[&amp;quot;Ножницы&amp;quot;] = 5&lt;br /&gt;
                elseif blocks[1] == &amp;#039;Листва&amp;#039; then&lt;br /&gt;
                    toolSpeed[&amp;quot;Ножницы&amp;quot;] = 15&lt;br /&gt;
                elseif blocks[1] == &amp;#039;Паутина&amp;#039; then&lt;br /&gt;
                    toolSpeed[&amp;quot;Меч&amp;quot;] = 15&lt;br /&gt;
                    toolSpeed[&amp;quot;Ножницы&amp;quot;] = 15&lt;br /&gt;
                elseif blocks[1] == &amp;#039;Бамбук&amp;#039; then&lt;br /&gt;
                    toolSpeed[&amp;quot;Меч&amp;quot;] = 5000&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
                for _, tool in ipairs( tools ) do&lt;br /&gt;
                    local toolDrop = blockArgs[mw.ustring.lower( tool )]&lt;br /&gt;
                    if not toolDrop then&lt;br /&gt;
                        table.insert( cells, &amp;#039;|—&amp;#039; )&lt;br /&gt;
                    else&lt;br /&gt;
                        local willDrop = &amp;#039;да&amp;#039;&lt;br /&gt;
                        if toolDrop == &amp;#039;0&amp;#039; then&lt;br /&gt;
                            willDrop = &amp;#039;частично&amp;#039;&lt;br /&gt;
                        end&lt;br /&gt;
                        -- предотвращение потери точности числа с плавающей запятой: умножить его на 100 и разделить в функции &amp;quot;processTime&amp;quot;&lt;br /&gt;
                        local breakTime = processTime( hardnessVal * 150 / toolSpeed[tool] )&lt;br /&gt;
                        if breakTime == 0.05 then&lt;br /&gt;
                            breakTime = &amp;quot;&amp;#039;&amp;#039;0.05&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
                        end&lt;br /&gt;
                        table.insert( cells, &amp;#039;|&amp;#039; .. getChoice( willDrop, breakTime ) )&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if not horizontal then&lt;br /&gt;
            cells = table.concat( cells, &amp;#039;\n&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
        table.insert( tableParts, cells )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if horizontal then&lt;br /&gt;
        local blocksArgs = {}&lt;br /&gt;
        for _, arg in ipairs{ 1, &amp;#039;прим&amp;#039;, &amp;#039;спрайт&amp;#039;, &amp;#039;ссылка&amp;#039;, &amp;#039;предмет&amp;#039;, &amp;#039;дроп&amp;#039;, 2, 3, &amp;#039;ножницы&amp;#039;, &amp;#039;меч&amp;#039; } do&lt;br /&gt;
            if args[arg] then&lt;br /&gt;
                local col = 0&lt;br /&gt;
                for colVal in mw.text.gsplit( args[arg], &amp;#039;%s*;%s*&amp;#039; ) do&lt;br /&gt;
                    col = col + 1&lt;br /&gt;
                    if colVal ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                        if not blocksArgs[col] then&lt;br /&gt;
                            blocksArgs[col] = {}&lt;br /&gt;
                        end&lt;br /&gt;
&lt;br /&gt;
                        blocksArgs[col][arg] = colVal&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        for _, block in ipairs( blocksArgs ) do&lt;br /&gt;
            insertBlock( block )&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local columns = #tableParts&lt;br /&gt;
        for row = 1, #tableParts[1] do&lt;br /&gt;
            local cells = {}&lt;br /&gt;
            for col = 1, columns do&lt;br /&gt;
                table.insert( cells, tableParts[col][row] )&lt;br /&gt;
            end&lt;br /&gt;
            table.insert( rows, table.concat( cells, &amp;#039;\n&amp;#039; ) )&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Вставка заголовка времени разрушения после строки блока при &amp;quot;simple&amp;quot;, или после строки инструмента или твердости, если &amp;quot;simple&amp;quot; не используется&lt;br /&gt;
        table.insert( rows, simple and 3 or showTool and 5 or 4, &amp;#039;! colspan=&amp;quot;&amp;#039; .. columns + 1 .. &amp;#039;&amp;quot; |&amp;#039; .. getBreakingTimeHeader( f ) )&lt;br /&gt;
    else&lt;br /&gt;
        insertBlock( args )&lt;br /&gt;
        for _, row in ipairs( tableParts ) do&lt;br /&gt;
            table.insert( rows, row )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    table.insert( rows, &amp;#039;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
    local note = &amp;#039;&amp;#039;&lt;br /&gt;
    if args[&amp;quot;подвал&amp;quot;] or horizontal then&lt;br /&gt;
        note = f:preprocess( &amp;#039;&amp;lt;references group=&amp;quot;FN&amp;quot;/&amp;gt;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
        if args[&amp;quot;подвал&amp;quot;] == &amp;#039;2&amp;#039; then&lt;br /&gt;
            table.insert( rows, header or getDplVar( &amp;#039;header&amp;#039; ) )&lt;br /&gt;
        end&lt;br /&gt;
        table.insert( rows, &amp;#039;|}&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
        if not horizontal then&lt;br /&gt;
            f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;,&lt;br /&gt;
                &amp;#039;breaking header&amp;#039;, &amp;#039;&amp;#039;,&lt;br /&gt;
                &amp;#039;breaking hidetool&amp;#039;, &amp;#039;&amp;#039;,&lt;br /&gt;
                &amp;#039;breaking hideshears&amp;#039;, &amp;#039;&amp;#039;,&lt;br /&gt;
                &amp;#039;breaking hidesword&amp;#039;, &amp;#039;&amp;#039;,&lt;br /&gt;
                &amp;#039;breaking simple&amp;#039;, &amp;#039;&amp;#039;,&lt;br /&gt;
                &amp;#039;breaking sortable&amp;#039;, &amp;#039;&amp;#039;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
    elseif #dplVars &amp;gt; 0 then&lt;br /&gt;
         f:callParserFunction( &amp;#039;#dplvar:set&amp;#039;, dplVars )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat( rows, &amp;#039;\n|-\n&amp;#039; ) .. note .. table.concat( categories )&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>minecraftwiki&gt;BabylonAS</name></author>
	</entry>
</feed>