<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.boxofrocks.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ABreaking_row</id>
	<title>Module:Breaking row - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.boxofrocks.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ABreaking_row"/>
	<link rel="alternate" type="text/html" href="https://wiki.boxofrocks.net/index.php?title=Module:Breaking_row&amp;action=history"/>
	<updated>2026-05-31T00:08:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.boxofrocks.net/index.php?title=Module:Breaking_row&amp;diff=459&amp;oldid=prev</id>
		<title>BoxWiki: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://wiki.boxofrocks.net/index.php?title=Module:Breaking_row&amp;diff=459&amp;oldid=prev"/>
		<updated>2021-05-13T17:23:44Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 17:23, 13 May 2021&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key wikidb:diff::1.12:old-458:rev-459 --&gt;
&lt;/table&gt;</summary>
		<author><name>BoxWiki</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.boxofrocks.net/index.php?title=Module:Breaking_row&amp;diff=458&amp;oldid=prev</id>
		<title>Crafting&gt;Unavailablehoax: apply to swords and shears</title>
		<link rel="alternate" type="text/html" href="https://wiki.boxofrocks.net/index.php?title=Module:Breaking_row&amp;diff=458&amp;oldid=prev"/>
		<updated>2021-05-01T22:46:58Z</updated>

		<summary type="html">&lt;p&gt;apply to swords and shears&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&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 = '[[Breaking]] time' .. f:preprocess( '&amp;lt;ref group=&amp;quot;FN&amp;quot; name=&amp;quot;breakingtimenote&amp;quot;&amp;gt;Times are for unenchanted tools as wielded by players with no status effects, measured in seconds. For more information, see [[Breaking#Speed|Breaking § Speed]].&amp;lt;/ref&amp;gt;' )&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( [[Module:ProcessArgs]] ).norm()&lt;br /&gt;
	local sprite = require( [[Module:Sprite]] )&lt;br /&gt;
	&lt;br /&gt;
	local function getDplVar( var )&lt;br /&gt;
		local val = f:callParserFunction( '#dplvar', 'breaking ' .. var )&lt;br /&gt;
		if val == '' 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, 'breaking ' .. var )&lt;br /&gt;
		table.insert( dplVars, val or '1' )&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;
	if args.horizontal or args[1]:match( ';' ) 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( 'header' ) then&lt;br /&gt;
		if args.hidetool or horizontal and ( not args[2] or args[2]:lower() == 'any' or args[2]:lower() == 'none' ) then&lt;br /&gt;
			showTool = false&lt;br /&gt;
			setDplVar( 'hidetool' )&lt;br /&gt;
    		breakingTimeHeader = '[[Breaking]] time'&lt;br /&gt;
		end&lt;br /&gt;
		if args.hideshears or horizontal and not args.shears then&lt;br /&gt;
			showShears = false&lt;br /&gt;
			setDplVar( 'hideshears' )&lt;br /&gt;
		end&lt;br /&gt;
		if args.hidesword or horizontal and not args.sword then&lt;br /&gt;
			showSword = false&lt;br /&gt;
			setDplVar( 'hidesword' )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		sortable = not horizontal and args.sort&lt;br /&gt;
		if sortable then&lt;br /&gt;
			setDplVar( 'sortable' )&lt;br /&gt;
		end&lt;br /&gt;
		simple = args.simple&lt;br /&gt;
		if simple and not horizontal then&lt;br /&gt;
			setDplVar( 'simple' )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local tableClasses = { 'wikitable' }&lt;br /&gt;
		if sortable then&lt;br /&gt;
			table.insert( tableClasses, 'sortable' )&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( rows, ' {| class=&amp;quot;' .. table.concat( tableClasses, ' ' ) .. '&amp;quot; style=&amp;quot;text-align:center&amp;quot;' )&lt;br /&gt;
		&lt;br /&gt;
		local sortType = ''&lt;br /&gt;
		if sortable then&lt;br /&gt;
			sortType = 'data-sort-type=&amp;quot;number&amp;quot;'&lt;br /&gt;
		end&lt;br /&gt;
		local rowspan = ''&lt;br /&gt;
		if not horizontal then&lt;br /&gt;
			rowspan = 'rowspan=&amp;quot;2&amp;quot; '&lt;br /&gt;
		end&lt;br /&gt;
		header = {&lt;br /&gt;
			'! ' .. rowspan .. ' | Block'&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if not simple then&lt;br /&gt;
			table.insert( header, '! ' .. rowspan .. sortType .. ' | Hardness' )&lt;br /&gt;
			if showTool then&lt;br /&gt;
				table.insert( header, '! ' .. rowspan .. ' | Tool' )&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;
			toolColumns = { 'Wooden', 'Stone', 'Iron', 'Diamond', 'Netherite', 'Golden'}&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( toolColumns, 1, 'Default' )&lt;br /&gt;
		&lt;br /&gt;
		if not simple then&lt;br /&gt;
			if showShears then&lt;br /&gt;
				table.insert( toolColumns, 'Shears' )&lt;br /&gt;
			end&lt;br /&gt;
			if showSword then&lt;br /&gt;
				table.insert( toolColumns, 'Sword' )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not horizontal then&lt;br /&gt;
			table.insert( header, '! colspan=&amp;quot;' .. #toolColumns .. '&amp;quot; |' .. getBreakingTimeHeader( f ) )&lt;br /&gt;
			table.insert( header, '|-' )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local toolSprites = {&lt;br /&gt;
			Wooden = { 'BlockSprite', 'oak-planks' },&lt;br /&gt;
			Stone = { 'BlockSprite', 'cobblestone' },&lt;br /&gt;
			Iron = { 'ItemSprite', 'iron-ingot' },&lt;br /&gt;
			Diamond = { 'ItemSprite', 'diamond' },&lt;br /&gt;
			Netherite = { 'ItemSprite', 'netherite-ingot' },&lt;br /&gt;
			Golden = { 'ItemSprite', 'gold-ingot' },&lt;br /&gt;
			Shears = { 'ItemSprite', 'shears' },&lt;br /&gt;
			Sword = { 'ItemSprite', 'wooden-sword' }&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;
					data = toolSprites[tool][1],&lt;br /&gt;
					toolSprites[tool][2],&lt;br /&gt;
					text = tool&lt;br /&gt;
				}&lt;br /&gt;
				table.insert( header, '! style=&amp;quot;text-align:left&amp;quot; ' .. sortType .. ' | ' .. image )&lt;br /&gt;
				table.insert( categories, spriteCat )&lt;br /&gt;
			else&lt;br /&gt;
				table.insert( header, '! ' .. sortType .. ' | ' .. 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, '\n' )&lt;br /&gt;
			setDplVar( 'header', header )&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( tableParts, header )&lt;br /&gt;
	else&lt;br /&gt;
		showTool = not getDplVar( 'hidetool' )&lt;br /&gt;
		showShears = not getDplVar( 'hideshears' )&lt;br /&gt;
		showSword = not getDplVar( 'hidesword' )&lt;br /&gt;
		sortable = getDplVar( 'sortable' )&lt;br /&gt;
		simple = getDplVar( 'simple' )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local hardness = require( [[Module:Block value]] ).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;
		Any = 0,&lt;br /&gt;
		Wooden = 1, Wood = 1,&lt;br /&gt;
		Golden = 1,&lt;br /&gt;
		Stone = 2,&lt;br /&gt;
		Iron = 3,&lt;br /&gt;
		Diamond = 4,&lt;br /&gt;
        Netherite = 5,&lt;br /&gt;
		None = 6&lt;br /&gt;
	}&lt;br /&gt;
	local materialSpeed = {&lt;br /&gt;
		None = 1,&lt;br /&gt;
		Any = 1,&lt;br /&gt;
		Wooden = 2, Wood = 2,&lt;br /&gt;
		Stone = 4,&lt;br /&gt;
		Iron = 6,&lt;br /&gt;
		Diamond = 8,&lt;br /&gt;
        Netherite = 9,&lt;br /&gt;
		Golden = 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], '%s*,%s*' )&lt;br /&gt;
		local hardnessVal = tonumber( hardness{ blocks[1], type = 'hardness' } )&lt;br /&gt;
		if not hardnessVal then&lt;br /&gt;
			hardnessVal = '?'&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, '[[Category:Missing hardness]]')&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.link or '', '%s*,%s*' )&lt;br /&gt;
		local ids = mw.text.split( blockArgs.sprite or '', '%s*,%s*' )&lt;br /&gt;
		local items = mw.text.split( blockArgs.item or '', '%s*,%s*' )&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] ~= '' then&lt;br /&gt;
				link = links[1]&lt;br /&gt;
			elseif links[i] ~= '' 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] ~= '' then&lt;br /&gt;
				id = ids[1]&lt;br /&gt;
			elseif ids[i] ~= '' then&lt;br /&gt;
				id = ids[i]&lt;br /&gt;
			end&lt;br /&gt;
			local blockText&lt;br /&gt;
			if args.textTrim then&lt;br /&gt;
				blockText = block:gsub( args.textTrim .. '$', '' )&lt;br /&gt;
			else&lt;br /&gt;
				blockText = block&lt;br /&gt;
			end&lt;br /&gt;
			local blockSpriteArgs = {&lt;br /&gt;
				data = 'BlockSprite',&lt;br /&gt;
				block,&lt;br /&gt;
				text = blockText,&lt;br /&gt;
				link = link,&lt;br /&gt;
				id = id&lt;br /&gt;
			}&lt;br /&gt;
			if items[i] == '1' or not items[i] and items[1] == '1' then&lt;br /&gt;
				blockSpriteArgs.data = 'ItemSprite'&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;
			'! style=&amp;quot;text-align:left&amp;quot; | ' .. table.concat( blockSprites, '&amp;lt;br&amp;gt;' ) .. ( blockArgs.note or '' )&lt;br /&gt;
		)&lt;br /&gt;
		&lt;br /&gt;
		local tool = mw.text.trim( simple and 'Tool' or blockArgs[2] or 'Any' ):gsub( '^%l', string.upper )&lt;br /&gt;
		local material = mw.text.trim( simple and blockArgs[2] or blockArgs[3] or 'Any' ):gsub( '^%l', string.upper )&lt;br /&gt;
		if tool == 'None' 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 'data-sort-value=&amp;quot;999&amp;quot; | ' or '' ) .. '∞'&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( cells, '|' .. hardnessText )&lt;br /&gt;
			&lt;br /&gt;
			if showTool then&lt;br /&gt;
				local toolCell = '—'&lt;br /&gt;
				if tool ~= 'Any' and tool ~= 'None' then&lt;br /&gt;
					if material == 'Wood' then&lt;br /&gt;
						material = 'Wooden'&lt;br /&gt;
					end&lt;br /&gt;
					local isMaterialSpecified = (material ~= 'Any') and (material ~= 'None')&lt;br /&gt;
					local toolName = ( isMaterialSpecified and material .. ' ' or '' ) .. tool&lt;br /&gt;
					local fullToolName = ( (not isMaterialSpecified) and 'Wooden ' or '' ) .. toolName&lt;br /&gt;
					local image, spriteCat = sprite.sprite{&lt;br /&gt;
						data = 'ItemSprite',&lt;br /&gt;
						fullToolName,&lt;br /&gt;
						title = toolName,&lt;br /&gt;
						link = tool&lt;br /&gt;
					}&lt;br /&gt;
					toolCell = ( sortable and 'data-sort-value=&amp;quot;' .. toolName .. '&amp;quot; |' or '' ) .. image&lt;br /&gt;
					table.insert( categories, spriteCat )&lt;br /&gt;
				end&lt;br /&gt;
				table.insert( cells, '|' .. 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 = 'Table Choice', args = { choice, '' } }&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;
			-- the number passed in has been multiplied by 100&lt;br /&gt;
			if num &amp;lt;= 5 then		-- Blocks have a minimum breaking time of 1 game tick (0.05 seconds)&lt;br /&gt;
				num = 0.05&lt;br /&gt;
			else					-- And they must be broken in multiples of 1 game tick (0.05 seconds)&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 == '?' then&lt;br /&gt;
			fillCells( cells, '|?', numberMaterials + 1 )&lt;br /&gt;
		else&lt;br /&gt;
			if unbreakable then&lt;br /&gt;
				table.insert( cells, '| ' .. ( sortable and 'data-sort-value=&amp;quot;999&amp;quot; ' or '' ) .. getChoice( 'no', '∞' ) )&lt;br /&gt;
				if showTool then&lt;br /&gt;
					fillCells( cells, '|—', numberMaterials )&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				local drop = 'yes'&lt;br /&gt;
				local forceDrop = false&lt;br /&gt;
				if blockArgs.drop == '0' then&lt;br /&gt;
					drop = 'partial'&lt;br /&gt;
				elseif blockArgs.drop == '1' then&lt;br /&gt;
					forceDrop = 'yes'&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 = 'no'&lt;br /&gt;
					end&lt;br /&gt;
					-- prevent float number precision loss, multiply by 100 and divide it in processTime function&lt;br /&gt;
					local breakTime = processTime( hardnessVal * (shouldDrop == 'no' and 500 or 150) / materialSpeed[material] )&lt;br /&gt;
					if breakTime == 0.05 then&lt;br /&gt;
						shouldDrop = &amp;quot;planned&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
					table.insert( cells, '|' .. getChoice( forceDrop or shouldDrop, breakTime ) )&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if not showTool or tool == 'Any' or tool == 'None' then&lt;br /&gt;
					insertMaterialCell( 'Any' )&lt;br /&gt;
					if showTool then&lt;br /&gt;
						fillCells( cells, '|—', numberMaterials )&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					for _, material in ipairs{ 'Any', 'Wooden', 'Stone', 'Iron', 'Diamond', 'Netherite', 'Golden' } 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, 'Shears' )&lt;br /&gt;
			end&lt;br /&gt;
			if showSword then&lt;br /&gt;
				table.insert( tools, 'Sword' )&lt;br /&gt;
			end&lt;br /&gt;
			if hardnessVal == '?' then&lt;br /&gt;
				fillCells( cells, '|?', #tools )&lt;br /&gt;
			else&lt;br /&gt;
				local toolSpeed = {&lt;br /&gt;
					Shears = 1,&lt;br /&gt;
					Sword = 1.5&lt;br /&gt;
				}&lt;br /&gt;
				if blocks[1] == 'Wool' then&lt;br /&gt;
					toolSpeed.Shears = 5&lt;br /&gt;
				elseif blocks[1] == 'Leaves' then&lt;br /&gt;
					toolSpeed.Shears = 15&lt;br /&gt;
				elseif blocks[1] == 'Cobweb' then&lt;br /&gt;
					toolSpeed.Sword = 15&lt;br /&gt;
					toolSpeed.Shears = 15&lt;br /&gt;
				elseif blocks[1] =='Bamboo' then&lt;br /&gt;
					toolSpeed.Sword = 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, '|—' )&lt;br /&gt;
					else&lt;br /&gt;
						local willDrop = 'yes'&lt;br /&gt;
						if toolDrop == '0' then&lt;br /&gt;
							willDrop = 'partial'&lt;br /&gt;
						end&lt;br /&gt;
						-- prevent float number precision loss, multiply by 100 and divide it in processTime function&lt;br /&gt;
						local breakTime = processTime( hardnessVal * 150 / toolSpeed[tool] )&lt;br /&gt;
						if breakTime == 0.05 then&lt;br /&gt;
							willDrop = &amp;quot;planned&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
						table.insert( cells, '|' .. 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, '\n' )&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, 'note', 'sprite', 'link', 'item', 'drop', 2, 3, 'shears', 'sword' } 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], '%s*;%s*' ) do&lt;br /&gt;
					col = col + 1&lt;br /&gt;
					if colVal ~= '' 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, '\n' ) )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Insert breaking time header after block row when simple, or after tool or hardness row when not&lt;br /&gt;
		table.insert( rows, simple and 3 or showTool and 5 or 4, '! colspan=&amp;quot;' .. columns + 1 .. '&amp;quot; |' .. 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, '' )&lt;br /&gt;
	&lt;br /&gt;
	local note = ''&lt;br /&gt;
	if args.foot or horizontal then&lt;br /&gt;
		note = f:preprocess( '&amp;lt;references group=&amp;quot;FN&amp;quot;/&amp;gt;' )&lt;br /&gt;
		&lt;br /&gt;
		if args.foot == '2' then&lt;br /&gt;
			table.insert( rows, header or getDplVar( 'header' ) )&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( rows, '|}' )&lt;br /&gt;
		&lt;br /&gt;
		if not horizontal then&lt;br /&gt;
			f:callParserFunction( '#dplvar:set',&lt;br /&gt;
				'breaking header', '',&lt;br /&gt;
				'breaking hidetool', '',&lt;br /&gt;
				'breaking hideshears', '',&lt;br /&gt;
				'breaking hidesword', '',&lt;br /&gt;
				'breaking simple', '',&lt;br /&gt;
				'breaking sortable', ''&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif #dplVars &amp;gt; 0 then&lt;br /&gt;
		f:callParserFunction( '#dplvar:set', dplVars )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat( rows, '\n|-\n' ) .. note .. table.concat( categories )&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Crafting&gt;Unavailablehoax</name></author>
		
	</entry>
</feed>