Sky Dimension in Minecraft

[ad_1]

During the early development stages of Minecraft, specifically in the Indev phase, there existed a map type called “Floating.” This map type generated floating islands with diverse terrain, influenced by the chosen World Theme.

The idea of the Sky Dimension was first introduced by Markus Persson, commonly known as Notch, the creator of Minecraft. Notch tweeted an image depicting the concept of this dimension, which was likely intended to represent a heavenly realm as a contrasting counterpart to the Nether, which was designed to resemble a hellish dimension. However, the Sky Dimension was not officially confirmed until Notch released an update on Twitter, acknowledging the significance given to it by PC Gamer and stating his intention to complete its development.

In a live webcast on the Swedish gaming site feber.se, Notch revealed that the Sky Dimension would likely be a dream-like world. He mentioned the possibility of players being transported to the Sky Dimension when they go to bed, turning it into a purposeful gameplay element. Initially, the Sky Dimension was planned to be included in the Adventure Update, but Notch decided to postpone its development until the Nether dimension was more engaging and enjoyable for players.

Jens Bergensten, also known as Jeb, a key developer of Minecraft, explained that the original implementation of the Sky Dimension faced technical challenges related to how light was calculated. The Sky Dimension had a top-down lighting system similar to the Overworld, creating shadows in caves and other areas. However, this design severely impacted performance, resulting in sluggish gameplay. As a result, the decision was made to remove the sun and apply even lighting throughout the environment, unless illuminated by torches.

Consequently, the initial concept of the Sky Dimension underwent significant changes and was eventually transformed into “The End.” This new dimension represented a dark and foreboding realm, appropriately considered the “end of the game,” housing powerful creatures such as endermen and the ender dragon. It deviated from the original idea of the Sky Dimension and became a distinct conversion of the concept. Notch later mentioned on Twitter that a different dimension called “Skylands” was possibly in development, separate from The End and intended to replace the original Sky Dimension. However, Jeb subsequently clarified that there were no plans to reintroduce the Sky Dimension and the chances of it being implemented were slim.

From Minecraft Java Edition versions 1.13 to 1.17.1, it was possible to partially recreate aspects of the Sky Dimension using the Buffet world type. By selecting the “Floating Islands” world generation option (available after version 1.16) and choosing any Overworld biome (such as Forest, Plains, Swamp, or Jungle) as the World Terrain option, players could generate a partially reminiscent representation of what the Sky Dimension might have looked like. However, it’s important to note that the “Floating Islands” world type was subsequently removed in version 1.18.

/g; var matches = html.match(regex); if(matches) { var toReplace = []; for(var i=0; i < matches.length; i++) { toReplace.push(matches[i].replace(/(]+?>|

|<\/p>)/img, "")); } for(var i=0; i < toReplace.length; i++) { html = html.replace(matches[i], toReplace[i]); } } return html; } function getSanitizedHeadingHTML(infoInput, slug) { if(!infoInput) { return ""; } //ignore content if it has only whitespaces (\n,
etc) if(infoInput.textContent.trim() === '' && !infoInput.innerHTML.match(/

/g; var matches = html.match(regex); if(matches) { var toReplace = []; for(var i=0; i < matches.length; i++) { toReplace.push(matches[i].replace(/(]+?>|

|<\/p>)/img, "")); } for(var i=0; i < toReplace.length; i++) { html = html.replace(matches[i], toReplace[i]); } } return html; } function setIdToHeadingsTag(html,slug){ var counter = 0; var h2Matches = html.match(/(.*?)<\/h2>/g); if(h2Matches != null){ var resultH2 = html.match(/(.*?)<\/h2>/g).map(function(val) { return val.replace('(.*?)<\/h3>/g); if(h3Matches != null){ var resultH3 = html.match(/(.*?)<\/h3>/g).map(function(val) { return val.replace(' 1) { var parser = new DOMParser(); html = parser.parseFromString(content, 'text/html'); html = html.querySelector('body').getElementsByTagName('p'); } var para = new Array(); for (var index = 0; index < html.length; index++) { if (html[index].innerText != undefined && html[index].innerText != "" && html[index].innerText.length > 1 && html[index].innerHTML.indexOf(" 0) appendPart(0, selectionStart); var fakeRange = appendPart(selectionStart, selectionEnd); if(textLen > selectionEnd) appendPart(selectionEnd, textLen); // Styles to inherit the font styles of the element fakeClone.style.cssText = cssDefaultStyles; // Styles to position the text node at the desired position fakeClone.style.position = "absolute"; fakeClone.style.top = topPos + "px"; fakeClone.style.left = 38 + "px"; fakeClone.style.width = width + "px"; fakeClone.style.height = height + "px"; $('#editor').appendChild(fakeClone); var returnValue = fakeRange.getBoundingClientRect(); //Get rect var arrOfValues = []; if (returnValue.height > 21) { // height of fakeRange > max height of fakeRange in single line // split into multiple spans and return all spans var words = fakeRange.innerText.split(" "); var newFakeRange = document.createElement('span'); newFakeRange.style.cssText = cssDefaultStyles; newFakeRange.textContent = words[0]; fakeClone.replaceChild(newFakeRange, fakeRange); arrOfValues.push(newFakeRange.getBoundingClientRect()); for(var i = 1; i < words.length; i++) { var fakeRangeSubPart1 = document.createElement('span'); fakeRangeSubPart1.style.cssText = cssDefaultStyles; fakeRangeSubPart1.textContent = " "; newFakeRange.parentNode.insertBefore(fakeRangeSubPart1, newFakeRange.nextSibling); arrOfValues.push(fakeRangeSubPart1.getBoundingClientRect()); var fakeRangeSubPart2 = document.createElement('span'); fakeRangeSubPart2.style.cssText = cssDefaultStyles; fakeRangeSubPart2.textContent = words[i]; fakeRangeSubPart1.parentNode.insertBefore(fakeRangeSubPart2, fakeRangeSubPart1.nextSibling); arrOfValues.push(fakeRangeSubPart2.getBoundingClientRect()); newFakeRange = fakeRangeSubPart2; } fakeClone.parentNode.removeChild(fakeClone); return arrOfValues; } fakeClone.parentNode.removeChild(fakeClone); return returnValue; // Local functions for readability of the previous code function appendPart(start, end){ var span = document.createElement("span"); span.style.cssText = cssDefaultStyles; //Force styles to prevent unexpected results span.textContent = text.substring(start, end); fakeClone.appendChild(span); return span; } // Computing offset position function getInputOffset(){ var body = document.body, win = document.defaultView, docElem = document.documentElement, box = document.createElement(tagName); box = input.getBoundingClientRect(); var editorOffset = $('#editor').getBoundingClientRect().top; var clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, scrollTop = win.pageYOffset || docElem.scrollTop || body.scrollTop, scrollLeft = win.pageXOffset || docElem.scrollLeft || body.scrollLeft; return { top : box.top + scrollTop - clientTop - editorOffset, left: box.left + scrollLeft - clientLeft }; } function getInputCSS(prop, isnumber){ var val = document.defaultView.getComputedStyle(input, null).getPropertyValue(prop); return isnumber ? parseFloat(val) : val; } } function showMessageToUserInToolbar(message, type) { var color="#a8bece"; if(type === "success") { color = "green"; } if(type === "warning") { color = "#bfbf2f"; } if(type === "error") { color = "red"; } $("#message-to-user-toolbar").style.color = color; $("#message-to-user-toolbar").innerText = message; } function removeMessageFromToolbar() { $("#message-to-user-toolbar").innerText = ""; } function isValidURL(str) { var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string '(\\#[-a-z\\d_]*)?$','i'); // fragment locator return !!pattern.test(str); }

<\/p>$/, "") } function toggleElementVisibility(selector) { var editorV2Popup = $(selector); if (!editorV2Popup) return; if (hasClass(editorV2Popup, "hidden")) { removeClass(editorV2Popup, "hidden"); } else { addClass(editorV2Popup, "hidden"); } } function switchEditorV2Modal() { toggleElementVisibility("#editor-v2-popup"); } function cancelV2Editor() { showV2Editor(); toggleElementVisibility("#editor-v2-popup"); } function localSaveV2EditorContents(e) { var button = e.target; showV2Editor(); toggleElementVisibility("#editor-v2-popup"); button.setAttribute("disabled", "disabled"); /* Upload base64 images to S3 */ mainEditor.uploadImages().then(function() { var tocCheckbox = document.getElementById("toc-preview"); if (tocCheckbox) { tocConfig.includeToc = tocCheckbox.checked; } setNewEditorMetaInfo(); button.removeAttribute("disabled", "disabled"); }).catch(function(error) { window.alert("Error while uploading images, please try again"); button.removeAttribute("disabled", "disabled"); }); } function setNewEditorMetaInfo() { v2EditorState.lastEdited = new Date().toISOString(); v2EditorState.wordsCount = mainEditor.plugins.wordcount.body.getWordCount(); setNewEditorMetaHTML(v2EditorState.lastEdited, v2EditorState.wordsCount, tocConfig.includeToc); } function setNewEditorMetaHTML(lastEdited, wordsCount, includeToc) { var metaElement = $("#new-editor-meta-info"); if (!metaElement) { return; } var htmlToShowArray = []; if (lastEdited) { htmlToShowArray.push("Saved at " + getFriendlyModifiedTime(lastEdited) + ""); } if (wordsCount) { htmlToShowArray.push("" + wordsCount + " words"); } if (includeToc) { htmlToShowArray.push("TOC Added"); } metaElement.innerHTML = htmlToShowArray.join(" | "); } function setPreviewContent(html) { var previewElement = $("#preview-content"); if (!previewElement) return; previewElement.innerHTML = html; } function getPreviewContent() { var previewElement = $("#preview-content"); if (!previewElement) return ""; return previewElement.innerHTML; } function showV2Preview() { var html = mainEditor.getContent().trim(); if (html.length < 1) { alert("Please add some content for preview"); return; } if (new Blob([html]).size > 500000) { alert("Taxonomy content size is greater than 500kb, please reduce content"); return; } var contentHolder = $("#editor-v2-content"); var previewHolder = $("#editor-v2-preview"); if (!contentHolder || !previewHolder) return; toggleElementVisibility("#editor-v2-content"); toggleElementVisibility("#editor-v2-preview"); setPreviewContent(html); if ("en" == "en") { showSKEntities(html); } configureToCForPreview(); setTimeout(function() { EmbedBlot.displayEmbeds(); }, 1500); } function configureToCForPreview() { var tocCheckbox = document.getElementById("toc-preview"); if (!tocCheckbox) { return; } tocCheckbox.setAttribute("disabled", "disabled"); setTimeout(function() { if (mainEditor.dom.select("h2").length < 1) { tocConfig.includeToc = false; tocCheckbox.checked = false; } else { tocCheckbox.removeAttribute("disabled"); tocCheckbox.checked = tocConfig.includeToc; } toggleTableContent(tocConfig.includeToc); }, 1000); } function showV2Editor() { var contentHolder = $("#editor-v2-content"); var previewHolder = $("#editor-v2-preview"); if (!contentHolder || !previewHolder) return; removeClass(contentHolder, "hidden"); addClass(previewHolder, "hidden"); } async function showSKEntities(html) { toggleElementVisibility("#preview-page-loader"); var taxonomyType = "wiki_tag"; try { var entities = await getSKEntities(html, taxonomyType); var mSearchPayload = parseSKEntities(entities); var searchData = await getMSearchData(mSearchPayload, getTaxonomiesForMSearch(taxonomyType)); if (!Array.isArray(searchData) || searchData.length < 1) { toggleElementVisibility("#preview-page-loader"); return; } var filteredSearchData = filterSearchData(searchData); showSuggestions(filteredSearchData, html); } catch (e) { console.error(e); } } function filterSearchData(searchData) { var filtered = []; for (var index in searchData) { var singleData = searchData[index]; if (singleData && singleData.data && singleData.data.length > 0) { filtered.push(singleData); } } return filtered; } function getTaxonomiesForMSearch(taxonomyType) { if (taxonomyType === "wiki" || taxonomyType === "wiki_tag") { return ["wiki_tag"]; } return ["event", "team", "player"]; } async function getSKEntities(html, taxonomyType) { var url = " var payload = { "text": html } if (taxonomyType === "wiki" || taxonomyType === "wiki_tag") { var payload = { "text": html, "include_nouns": true } } var response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); var data = await response.json(); return data; } async function getMSearchData(entities, taxonomiesToSearch) { var url = " var response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ "entities": entities, "taxonomies_to_search": taxonomiesToSearch || [] }) }); var data = await response.json(); return data; } function parseSKEntities(data) { var payload = []; if (data && data.entities) { data = data.entities; // Filter person, events and organizations data = data.filter(function(entity) { return entity.type.toUpperCase() === "PERSON" || entity.type.toUpperCase() === "EVENT" || entity.type.toUpperCase() === "ORGANISATION" || entity.type === "NOUN"; }); for (index in data) { payloadItem = {}; payloadItem["taxonomy"] = data[index].type.toUpperCase() === "PERSON" ? "player" : "event"; payloadItem["query"] = data[index].content; payload.push(payloadItem); } } return payload; } function showSuggestions(data, html) { if (data.length < 1) { return; } var resultHTML = ""; var htmlFormatted = stringToHTML(html); var allowedTags = ["P", "H2", "H3", "H4", "LI"]; var allTags = htmlFormatted.querySelectorAll("body > *"); var replacedKeywords = []; for (var tag of allTags) { var tagHTML = tag.outerHTML; var tagName = tag.tagName; if (tagName == "UL" || tagName == "OL") { tagName = "LI"; } if (allowedTags.includes(tagName) && tagHTML.includes(" 0 && !replacedKeywords.includes(data[index].name)) { var id = 'suggestBtn-' + index; var wordMatchRegex = new RegExp("(<" + tagName + ".*?>.*?)(\\b" + data[index].name + "\\b)(.*<\/" + tagName + ">)", "gmi"); var matchFound = tagHTML.match(wordMatchRegex); if (matchFound) { skipThisMatch = false; aTagsPresent = tag.getElementsByTagName('a'); for (var aTag of aTagsPresent) { if (aTag.innerText.toLowerCase() == data[index].name.toLowerCase()) { skipThisMatch = true; replacedKeywords.push(data[index].name); } else if (aTag.innerText.toLowerCase().includes(data[index].name.toLowerCase())) { // suggestion should not be a part an 'a' tag skipThisMatch = true; } } var entityAlreadyLinked = tagHTML.match(new RegExp("()", "i")); // suggestion should not be already highlighted if (entityAlreadyLinked) { skipThisMatch = true; } if (!skipThisMatch) { tagHTML = tagHTML.replace(wordMatchRegex, "$1$2$3"); replacedKeywords.push(data[index].name); } } } } resultHTML = resultHTML + tagHTML; } else { resultHTML = resultHTML + tagHTML; } } setPreviewContent(resultHTML); var links = $all(".entity-link"); for (var i = 0; i < links.length; i++) { links[i].addEventListener("click", function(event) { onEntityClicked(event, data); }); links[i].setAttribute('tabindex', 0); } toggleElementVisibility("#preview-page-loader"); } // adding a dropdown to show suggestions searched from elastic async function onEntityClicked(event, data) { event.preventDefault(); var index = event.target.id.replace("suggestBtn-", ""); var response = data[parseInt(index)].data; var entityElem = event.target; removeOtherDropdowns(); if (entityElem.nextSibling && entityElem.nextSibling.className == 'dropdown-content') { return; } var editorWidth = 1160; var dropdownMinWidth = 200; var elementXPosition = entityElem.offsetLeft var elementPosInScreen = (elementXPosition / editorWidth) * 100; var dropdownElem = document.createElement('span'); dropdownElem.setAttribute('class', 'dropdown-content'); if (response.length > 0) { var entityList = ""; for (i = 0; i < response.length; i++) { var entityImg = ""; if (response[i].image) { entityImg = ""; } var entityName = "" + response[i].title + ""; var entitySport = "(" + response[i].sport_slug + ")"; entityList = entityList + "" + entityImg + entityName + entitySport + "
"; } entityList = entityList + "Don't want to link
"; entityList = entityList + "Close
"; dropdownElem.innerHTML = entityList; var entityLinks = dropdownElem.getElementsByClassName("entity-links"); for (var j = 0; j < entityLinks.length; j++) { entityLinks[j].addEventListener("click", linkEntity); } var dismissDropdown = dropdownElem.getElementsByClassName("dismiss-dropdown")[0]; dismissDropdown.addEventListener("click", dismissSuggestionDropdown); var closeDropdown = dropdownElem.getElementsByClassName("close-dropdown")[0]; closeDropdown.addEventListener("click", closeSuggestionDropdown); } else { var noResults = "No Results Found
Dismiss
"; dropdownElem.innerHTML = noResults; var dismissDropdown = dropdownElem.getElementsByClassName("dismiss-dropdown")[0]; dismissDropdown.addEventListener("click", dismissSuggestionDropdown); } entityElem.parentNode.insertBefore(dropdownElem, entityElem.nextSibling); var popupXPosition = elementXPosition; if (elementPosInScreen > 75) { popupXPosition = elementXPosition - dropdownElem.offsetWidth; } dropdownElem.style.left = Math.round(popupXPosition) + "px"; dropdownElem.style.top = Math.round(dropdownElem.offsetTop + entityElem.offsetHeight) + "px"; } function closeSuggestionDropdown(event) { var dropdownContent = event.target.parentElement; addClass(dropdownContent, "hidden"); } function removeOtherDropdowns() { var allDropdown = $all('.dropdown-content'); for (var i = 0; i < allDropdown.length; i++) { allDropdown[i].remove(); } } function dismissSuggestionDropdown(event) { var linkedElem = event.target.parentElement.previousElementSibling; if (hasClass(linkedElem, 'entity-link')) { linkedElem.removeAttribute('class'); linkedElem.removeAttribute('id'); linkedElem.removeAttribute('tabindex'); linkedElem.removeEventListener("click", onEntityClicked); } event.target.parentElement.remove(); } // update link in preview along with updating in quill function linkEntity(event) { var node; if (event.target.className == 'entity-links') { node = event.target; } else { node = event.target.parentElement; } var entityLink = node.dataset.link; var linkedElem = node.parentElement.previousElementSibling; var parentOfElem = linkedElem.parentElement; var newElem = document.createElement('a'); newElem.setAttribute('href', entityLink); newElem.setAttribute('target', "_blank"); newElem.setAttribute('rel', "noopener noreferrer"); newElem.setAttribute('data-mce-href', entityLink); newElem.innerText = linkedElem.innerText; parentOfElem.replaceChild(newElem, linkedElem); node.parentElement.remove(); // Process preview html and remove the unwanted tags such as link suggestion and set it as html var previewHTML = getPreviewContent(); var resultHTML = ""; var htmlFormatted = stringToHTML(previewHTML); var allTags = htmlFormatted.querySelectorAll("body > *"); var replacedKeywords = []; for (var tag of allTags) { // ignore toc if (tag.classList.contains("toc-info--holder")) { continue; } var linkSuggestionsTags = tag.getElementsByClassName('entity-link'); for (var i = linkSuggestionsTags.length - 1; i > -1; i--) { var linkSuggestionsTag = linkSuggestionsTags[i]; var textNode = document.createTextNode(linkSuggestionsTag.innerText); linkSuggestionsTags[i].parentNode.replaceChild(textNode, linkSuggestionsTag); } resultHTML = resultHTML + tag.outerHTML; } mainEditor.setContent(resultHTML); } var loadEmbedScriptsAsync = function() { loadScriptAsync(" function() { twttr.widgets.load() }); loadScriptAsync(" function() { if (typeof(instgrm) != 'undefined') instgrm.Embeds.process() }); loadScriptAsync(" function() { FB.init({ status: false, version: 'v2.9', cookie: true, xfbml: true }); FB.XFBML.parse(); }); loadScriptAsync(" function() {}); loadScriptAsync(" function() {}); // ref: const script = document.createElement('script'); script.async = true; script.dataset.pinBuild = 'pinterestBuild'; script.src=" document.body.appendChild(script); } function processQuillHTML(processedData) { if (!processedData) return ""; processedData = processedData.replace(/\u200b/g, ''); processedData = processedData.replace(/\u00a0/g, ' '); // replace   with space if (processedData.trim() === "

") { return ""; } processedData = processedData.replace(/

<\/p>/g, '

'); processedData = processedData.replace(/

​<\/p>

​<\/p>$/, '

​<\/p>'); return processedData } function showFaqEditor(faqAnsEle) { // TODO: wait and invoke editor with text chosenFaqAnsEle = faqAnsEle; if (!faqEditor) { return; } removeClass($(".faq-editor-popup"), "hidden"); var preloadText = chosenFaqAnsEle.innerHTML; faqEditor.undoManager.reset(); faqEditor.setContent(preloadText); } function closeFaqEditor() { addClass($(".faq-editor-popup"), "hidden"); } function saveFaqContent() { closeFaqEditor(); chosenFaqAnsEle.innerHTML = tinyMCEEditorHelpersInstance.prepareContentForSave(faqEditor.getContent()); chosenFaqAnsEle = null; } function initTinyMCEForFAQ() { tinymce.init({ selector: "div#faq-editor", plugins: "sk-custom-link wordcount", toolbar: "undo redo | sk-custom-link", menubar: "", quickbars_selection_toolbar: "sk-custom-link", quickbars_insert_toolbar: "", toolbar_sticky: true, height: "100%", resize: false, keep_styles: false, allow_unsafe_link_target: true, newline_behavior: "default", invalid_elements: "script", branding: false, content_style: "a.sponsored_link { color: #d32f2f !important; }", setup: function(editor) { editor.on("init", function(e) { faqEditor = editor; }); }, }); }

[ad_2]

Comments are closed.