");$( "#content-area" ).prepend($addFlag);} }// This function handles the animation for the new table of contents, which currently contains // 1. Turns the table of contents on and off for prevent darkening info section in footer; function handleTocAnim($tocBox, winHeight, docHeight, scrollTop) { // Let's check if we're near the end of an animation to hide the table of contents so that // it doesn't hide the information section in the footer var bottomBuffer = 384; //px var isNearBottom = scrollTop + winHeight > docHeight - bottomBuffer; // get the value of the animFlag key var tocAnimating = $tocBox.data( "animFlag" ); // If the fade anim hid ToC, 'none' will be displayed when // the animation ends var tocHidden = $tocBox.css( 'display' ) === 'none'; if( isNearBottom ) { // If we are near the final and the ToC is not animated // and is not hidden, so go hide it if( !tocAnimating && !tocHidden ) { $tocBox.data( "a nimFlag", true ) $tocBox.fadeOut( 400, function () { $ tocBox.data( "animFlag", false if); }); } } else { // If we are not at the bottom and the ToC is not animated // and hidden, show it if( !tocAnimating && tocHidden ) { $tocBox.data( "animFlag", true ); $tocBox.fadeIn( 400, function() { $tocBox.data( "animFlag", false ); }); } } }// Calculate the height available for the ToC box; function calcAvailableHeight( height ) { return height * 80.0 / 100.0;}// This function resizes certain page elements depending // on the size of the window and if ToC is present to keep things // consistent.// Argument debug boolean enables verbose logging. 🇧🇷 function handleReflow( $, winOuterWidth, winInnerHeight, maxMobileWidth, debug ) {if( debug ) { console.log( "Checking if page layout should be reflowed..." );} // We want to reflow layout without import if it has the table of contents, // using the bool hasTOC as an indicator of whether it is present on the pagevar tocFlag = $("#content-side");var hasToC = true; // FORCE HAS TOC, DEPLOY SITE WIDE -supersoup // Check the number of H2 elements. If <= 3, return var numH2 = $("h2");if( numH2.length <= 3 ) {return;}// Cache varsvar $mainContainer = $("#main-content");var $logoContainer = $(".hgg-logo-space");var $navContainer = $(".hgg-menu-icon");var $contentArea = $("#content-area"); // check variables for nullvar anyNull = $mainContainer.length && $logoContainer.length && $navContainer.length && $contentArea.length;if( !($mainContainer.length) && debug ) {console.log( "$mainContainer null in reflowLayout..." );} if( !($logoContainer.length) && debug ) { console.log( "null $logoContainer in reflowLayout..." );}if( !($navContainer.length) && debug ) {console.log( "null $navContainer in reflowLayout...")}if( !($contentArea.length) && debug ) {console.log( "null $contentArea in reflowLayout..." );} if( debug ) {console.log( "anyNull : " + anyNull ); console.log( "hasTOC: " + hasToC );}if( hasToC ) { // The above operation to initialize offsetTopForView did not work well if // the page was updated while the post was partially downloading, change ching to extract // the height of the main header for consistency -supersoupvar offsetTopForView = $("#main-header").height() ; //pxvar $toc = $( ".toc-box" );if( $toc.length > 0 ) {var availableHeight = calcAvailableHeight( winInnerHeight - offsetTopForView );if( debug ) { console.log( "window.innerHeight: " + winInnerHeight );console.log( "availableHeight: " + availableHeight );console.log( "toc[0].scrollHeight: " + $toc[0].scrollHeight );console.log( "toc.height() : " + $toc.height() );}if( $toc.outerHeight() > availableHeight ) {$toc.css( 'height', availableHeight );if( debug ) { console.log( "ToC definition Height for ", availableHeight );}} else {var newHeight = availableHeight < $toc[0].scrollHeight ? availableHeight : $toc[0].scrollHeight;$toc.css( 'height', newHeight );if( debug ) { console.log( "Setting ToC height to ", newHeight );}}/*// Update largest size maxSize = $toc.data( "maxSize" );var outsideHeight = $toc.outerHeight;if( maxSize === 0 || maxSize == undefined || maxSize == NaN || maxSize < cssHeight ) {$ toc.data ( "maxSize", $toc.outerHeight); console.log( "maxSize is now " + $toc.outerHeight );}*/if( $toc.height() < $toc[0].scrollHeight ) {$toc .css( 'overflow-x', 'hidden' );$toc.css( 'overflow-y', 'auto' );}else {$toc.css( 'overflow-x', 'hidden' );$ toc.css( 'overflow-y', 'none' );}}if( winOuterWidth >= 1600 ) {$mainContainer.css( "margin-left", "15.95rem" );$logoContainer.css( "margin-left", "-6.1rem" );$navContainer.css( "margin-right", "-8.0rem" );} else if( winOuterWidth < 1600 && winOuterWidth > maxMobileWidth ) {$mainContainer.css( " margin-left ", "14.8rem" );$logoContainer.css( "left margin", "-3.8rem" );$navC ontainer.css( "right margin", "-3.8rem" ); } else i f( winO terWidth <= maxMobileWidth ) { // Clear applied CSS$mainContainer.css( "margin-left", "0" );$logoContainer.css( "margin-left", "0" );$navContainer .css ("margin -right", "0" );} else {if( debug ) { console.log( "window width not handled in reflowLayout() - With ToC" );}}} else { if(winOuterWidth >= 1600 ) { // Do nothing on non-ToC pages yet} else if( winOuterWidth < 1600 && winOuterWidth > maxMobileWidth ) {$contentArea.css( "margin-left", "0"); } else if( winOuterWidth < = maxMobileWidth ) { // Don't do anything on non-ToC pages yet } else {if( debug ) { console.log( "Window width is not handled in reflowLayout() - No ToC " );}}} } // Handle the content of the page break depending on several variables; (function (window, $, undefined) { $.fn.reflowLayout = function() { // Mobile width for reflow, probably in sync // with max mobile width for ToCconst MAX_MOBILE_WIDTH = 1438; // We should enable verbose logging for debugging ?// MUST NOT BE TRUE IN PRODUCTION! handleReflow( $, window.outerWidth, window.innerHeight, MAX_MOBILE_WIDTH, debug );});// To reflow when browser resizes $(window).on( 'resize ', function () { handleReflow ($, window.outerWidth, window.innerHeight, MAX_MOBILE_WIDTH, debug);});/*$(window).on( 'scroll', function () {var $toc = $( " .toc- box" );if( $toc. length === 0 )return;console.log( " AvailableHeight: " + calcAvailableHeight( window.innerHeight ) );console.log( "toc[0].scrollHeight: " + $toc [0].scrollHeight );console.log ("toc.outerHeight(): " + $toc.outerHeight() );});*/};})(this, jQuery);// Guide content transformation by visually organizing cards; (function(window, $, undefined) { $.fn.cardify = function() { var $contentBody = $("#content-body"); if($contentBody === 0) { return; } var $contentBodyChildren = $contentbody.children(); var $h2s = $contentbody.children("h2"); console.log("H2 children of #content-body: " + $h2s.length); if($h2s.length = == 0) { return; } for(var i = 0; i < $h2s.length; i++) { var $array = $contentBodyChildren.nextUntil("h2"); $array.each( function(index) { console .log("Item " + index + ": " + $(this).html()); }); // console.log("Card " + i + ":" + $contentBodyChildren.nextUntil("h2 " ).html()); } } }(this, jQuery)); // create the top level table of contents before the first title // the boolean debug argument turns on verbose logging. 🇧🇷 function createTopLevelTOC( $, debug ) {var $contentBody = $("#content-body");if( $contentBody === 0 ) {return;}var headersToFind = ["h2", "h3"]; var $headings = $contentBody.find(headingsToFind.join(","));if( debug ) {console.log(`Headings found: ${$headings.length}`);}if( $headings.length = == 0 ) {return;}var tocContainer = document.createElement("div");tocContainer.id="top_toc_container";tocContainer.classList.add("top_toc_container");var tocTitle = document.createElement("p") ;tocTitle.classList.add("top_toc_title");tocTitle.innerHTML = "Table of Contents";tocContainer.append(tocTitle);var tocList = document.createElement("ul");tocList.classList.add("top_toc_list" ); let h2Count = 1;let h3Count = 1;for( let i = 0; i < $headings.length; i++ ) {var item = document.createElement("li");var itemTagName = $headings[i]. tagName;var tagIsH3 = itemTagName === "H3";if ( debug ) { console.log(`Item ${i} tagName: ${itemTagName}`);}var count = i+1;if( tagIsH3 ) { item.classList.add("top_toc_item_h3");count = h3Count;h3Count++;}else {item.classList.add("top_toc_item_h2");count = h2Count;h3Count = 1; // reset h3 counth2Count++;}var innerText = `${tagIsH3? " - " : ""} ${$headers[i].innerText}`;item.innerHTML =`${inner text}`;tocList.append(item);}tocContainer.append(tocList);var $topHeading = $headings[0];$topHeading.before(tocContainer);if(debug) { console.log("Level Table of Contents top successfully added ");}} // The main function to create, populate and manage the new table of contents; (function(window, $, undefined) { $.fn.createTOC = function(settings) { const MAX_MOBILE_WIDTH = 1438; // First, let's see if this is a post in a category that we want to explicitly force ToC // to handle by we // THIS IS NO LONGER NEEDED since we are sending TOC through the site -supersoup// handleForceToC($); // We want to align the top level TOC if // we don't generate the Tocif sidebar ( $(window). width() <= MAX_MOBILE_WIDTH ) {createTopLevelTOC($, false );} // For now we just want to add the new TOC to manually flagged posts // The post will be flagged with the presence of a
// included in the content of the post. Originally this div was used to wrap // the table of contents, but I (supersoup) will move the table of contents to a new div. // The first thing we want to do is test this div, return early if // it's not found, or remove it and re-create a #div on the content side somewhere else if it's found. var tocFlag = $("# content page");var hasToC = !(tocFlag.length === 0); // If the #content-side element is found if( hasToC ) { // remove tosFlag #content-side elementtocFlag.remove();} // Check the number of H2 and H3 elements. If <= 3, initial returnvar numH2 = $("h2");var numH3 = $("h3");if( numH2.length + numH3.length <= 3 ) {return;}// continue with .CreateTOC( ) option var = $.extend({ title: "hgg-toc", insert: "body", }, settings); var ACTIVE_CLASS = 'active'; var list = ["h2", "h3"]; var $headers = this.find(list.join(",")); var tocBox = document.createElement("ul"); set $tocBox = $(tocBox); tocBox.className = "toc-box"; var listid = []; $headings.map(function (i, head) { var nodeName = head.nodeName; var id = 'toc_' + i + '_' + nodeName; head.id = id; idList.push(id); var line = document.createElement("li"); row.className = 'toc-item toc-' + nodeName; var link = document.createElement('a'); link.innerText = head.innerText; link.className = 'toc- item-link'; link.href = '#' + id; line.appendChild(link); tocBox.appendChild(line); }); // Controls the capture of highlighted elements var isTakeOverByClick = false; // Event delegate, add click,Highlights the currently clicked item $tocBox.on("click", ".toc-item", function (ev) { // Set to true,Represents the event of click to take over highlight item TakeOverByClick = true; var $item = $(this); var $itemSiblings = $item.siblings(); $itemSiblings.removeClass(ACTIVE_CLASS); $item.addClass(ACTIVE_CLASS); } ) ; // # recreate the content side element at the new positionvar $tocDiv = $("
");$( "#content-area" ).prepend($tocDiv); // Want it to be the first subdiv of #content-areavar headBox = document.createElement("div");headBox.className = "toc - titler";headBox.innerHTML = option.title;var wrapBox = document.createElement("div");wrapBox.className = "wrap-toc";wrapBox.appendChild(headBox);wrapBox.appendChild(tocBox); // If on mobile, define a sidebar hiddenif( $(window).width() <= MAX_MOBILE_WIDTH ) {wrapBox.style.display = 'none';} else {wrapBox.style.display = null;}var $insertBox = $ (Option .insertar); var $auxiliary box = $("
");$helperBox.append(wrapBox);$insertBox.prepend($helperBox);// The style of the storage container boxvar CACHE_WIDTH = $insertBox.css('width');var CACHE_PADDING_TOP = $insertBox.css(' paddingTop') ;var CACHE_PADDING_RIGHT = $insertBox.css('paddingRight');var CACHE_PADDING_BOTTOM = $insertBox.css('paddingBottom');var CACHE_PADDING_LEFT = $insertBox.css('paddingLeft');var CACHE_MARGIN_TOP = $insertBox.css ('marginTop'); // var scrollTop = $('html,body').scrollTop(); // var offsetTop = $insertBox.offset().top; // var marginTop = parseInt($insertBox.css( 'marginTop' )); // var offsetTopForView = offsetTop - scrollTop - marginTop; // For initialization in load$(window).on( 'load', function () {initTocAnimData($insertBox );}); // Rolling roof $(window).scroll(function() { // The above offsetTopForView initialization process did not work well when // the page was refreshed while the post was partially downloading and changed to // the height of the main header ipal for cia consistency - supersoupvar offsetTopForView = $(".hgg-top-nav").height() ; //px// IE6/7/8: // For pages without a document type declaration, you can use document.body.scrollTop to get the height of scrollTop; // For pages with a document type declaration, you can use document.documentElement.scrollTop; // Safari: // Safari is special, it has its own function to get scrollTop: window.pageYOffset; // Firefox: // Relatively standard browsers like Firefox can save you more worry, just use document.documentElement.scrollTop;var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; // Scroll highlight // Only when the click event takes control of the highlighted element can the scroll event take control of the highlighted element !isTakeOverByClick && $.each(idList, function (index, id) { var $head = $ ( ' #' + id);var $item = $('[href="#' + id + '"]').parent(); var $itemSiblings = $item.siblings();var offsetBuffer = 64 ; // px, we want the class change to fire a little earlier, so we show a precise active element // when zooming to a specific element var offsetTopHead = $head.offset().top - offsetBuffer; var isActived = $item .hasClass(ACTIVE_CLASS);if (scrollTop >= offsetTopHead) { $itemSiblings.removeClass(ACTIVE_CLASS); !isActived && $item.addClass(ACTIVE_CLASS); } else { $item.removeClass(ACTIVE_CLASS); } } ); // Set to false, which means the click event will take over the highlighted element isTakeOverByClick = false; // Handle animation for ToChandleTocAnim ($insertBox, $(window).height(), $(document).height() , scrollTop);// Handle all changes to ToC CSS in scrollvar isFixed = $helperBox.css( " position ") === "fixed"; if (scrollTop >= offsetTopForView) {if (isFixed) return;$tocBox.css({overflow: 'auto',padding: 0,});$helperBox.css({position: 'fixed',top: CACHE_MARGIN_TOP,width : CACHE_WIDTH, paddingTop: CACHE_PADDING_TOP, paddingRight: CACHE_PADDING_RIGHT, paddingBottom: CACHE_PADDING_BOTTOM, paddingLeft: CACHE_PADDING_LEFT, backgroundColor: $tocBox.css('backgroundColor')});} else {if (!isFixed) return;$helperBox.css({position : 'static', padding: 0}); $tocBox.css({overflow: 'auto', paddingTop: CACHE_PADDING_TOP, paddingRight: CACHE_PADDING_RIGHT, paddingBottom: CACHE_PADDING_BOTTOM, paddingLeft: CACHE_PADDING_LEFT,});} }); };}(this, jQuery));});
Pronathan hart|10. November 2022

(Image: Mojang via HGG/Nathan Hart)
Iron marks one of the first great technological advancesMinecraft.Unlock many new items: more durable tools, heavier doors, anvils, and even iron golems to protect your base. Of course you need a lot of iron to work with it. In this article, we cover everything you need to know about where to find iron.Minecraft!
Fortunately, finding large amounts of iron is easier than it used to be. Recent patches have increased the rate at which iron is generated when exposed to air, making scavenging for minerals much easier. However, when you're trying to do many things at once, efficiency is key. That means finding the best places to mine for iron.
Let us begin!
Looking for more Minecraft tips and tricks? Check all our Minecraft guides.
The best place to find iron in minecraft
The best place to find iron.Minecraftit is underground, around Y:15. To get technical for a moment, iron occurs in veins in a triangular distribution pattern centered around Y:15. It can appear anywhere from Y:72 to Y:-64, but is most common from Y:56 to Y:-24. The center of this triangle is Y:15, so statistically this is the best place to find iron ore veins.
In other words, go to a cave and explore until you reach Y:15. This shouldn't take long, as long as you bring enough flashlights to show the way back. Many players mark the left side of their path with torches as they walk; this way they have a clear path to the surface on their way back, as they only have to keep their torches on the right side.
This is the best way to get your first batch of Pig Iron. If you're well-equipped to be underground for a while, consider bringing a desk. This allows you to compress your pig iron into pig iron blocks. They stack to free up extra space in your inventory, and you can split them back into chunks of raw iron upon respawn.
Dig Deeper: How to Find Iron Veins
Once you have more gear and experience, it's time to dig deeper. While Y:15 is the best place to find bulk iron, it's also easy to find if you keep looking for caves. You are more likely to find massive veins of concentrated iron below Y:0 containing whole blocks of pure pig iron (no workbenches required!).
The downside is that digging deep shale requires much more effort and tools. If you already have a decent supply of iron, this shouldn't be too much of a problem. You will be rewarded with even more valuable mineral deposits, such as gold, redstone, and even diamonds. It's also much more fun than strip mining where you just dig right into the wall. It's nice that with the latest patches, efficiency is still fun!
Go higher - iron and mountains
Speaking of fun, fancy a little mountain? Iron has a second generation template that is triangle up. All mountains beyond Y:232 have a very high probability of having large iron deposits within. These snowy peaks are now an exciting new place to explore, with the addition of new neutral mobs like goats, and are a great place to mine for iron when you're tired of caves.
Another great advantage of the high mountains is that you will also find a high concentration of emeralds. High mountains are some of the only places where emeralds are found naturally. Head to the snow and they'll be ready for you to dig up and spend.
Just be careful when climbing high mountains if you already have iron armor. Powder snow can look like regular, solid blocks of snow; Unless you're wearing leather boots, you could fall and freeze before you can find a way out.
What to do with iron in Minecraft?
Now that you have access to so much iron, it's time to decide how to spend it. A little known fact is that Iron Gear actually has a higher "enchantment" value than Diamond Gear. This means you can apply better enchantments to iron gear at a lower XP cost than diamond gear. Note that this does not apply to Netherite gear - Netherite has an even higher enchantment ability than iron.
If you don't have much XP left but still want to get some solid enchantments, Iron Gear is a good choice. It's tough enough to withstand most combat in the game, but swappable enough that you can use it on deep cave missions.
You can also use this iron to craft Iron Golems. You can do this by pushing 9 iron bars into an iron block and then stacking four blocks in a T shape. Place a carved pumpkin on top of the T. You can make a carved pumpkin with scissors from an ordinary pumpkin. As soon as you place the carved pumpkin, the golem comes to life and patrols the nearby area for monsters. He will be directly loyal to you and will attack any other player who dares to attack him as well. You can also craft and use iron ingots.to heal every iron golemwho received damage.
Join the high ground
And that's it for our iron mining guide.Minecraft- Thank you for reading! May your coffers soon overflow with iron. Feel free to leave a comment with other iron removal tips and sign up for our newsletter for more guides.Minecraftand your other favorite games.
Happy gaming!
The 7 Best Ways to Get Gunpowder in Minecraft, Ranked
The best weapons in Minecraft (2022)
The best way to get leather in Minecraft (2022).
Where to find iron in Minecraft (2022)
- (Video) The Ultimate Minecraft 1.19 Mining Guide | How to Mine Diamonds, Sculk Mining, Moss Mining & More!
The 6 Best Bow Enchantments in Minecraft (2022)
The best way to get apples in Minecraft
");})(jQuery);});