+ })
+ }
+
+ // Create World Button
+
+ {
+ let createWorldGUI = new dragonblocks.gui.Box();
+ let createButton;
+
+ let worldProperties = {};
+
+ let headline = createWorldGUI.create("h1");
+ headline.innerHTML = "New World";
+ headline.align = "center";
+
+ // Worldname
+ createWorldGUI.create("h2").innerHTML = " World Name";
+
+ let worldnameInput = createWorldGUI.create("input");
+ worldnameInput.type = "text";
+ worldnameInput.style.position = "relative";
+ worldnameInput.style.left = "40px";
+
+ let worldnameAlert = createWorldGUI.create("b");
+ worldnameAlert.style.position = "relative";
+ worldnameAlert.style.left = "50px";
+
+ worldnameInput.addEventListener("input", _ => {
+ let worldname = worldnameInput.value;
+
+ if(! dragonblocks.loggedin) {
+ worldnameAlert.textContent = "Warning: You are not logged in and cannot save worlds.";
+ worldnameAlert.style.color = "#FF7D00";
+ createButton.disabled = false;
+ } else if (worldname == "") {
+ worldnameAlert.textContent = "";
+ createButton.disabled = true;
+ } else if (! dragonblocks.checkWorldnameSpelling(worldname)) {
+ worldnameAlert.textContent = "The world name contains forbidden characters";
+ worldnameAlert.style.color = "#FF001F";
+ createButton.disabled = true;
+ } else if (dragonblocks.worlds[worldname]) {
+ if (dragonblocks.worlds[worldname].owned) {
+ worldnameAlert.textContent = "Warning: This will overwrite an existing world";
+ worldnameAlert.style.color = "#FF7D00";
+ createButton.disabled = false;
+ } else {
+ worldnameAlert.textContent = "This Worldname is taken";
+ worldnameAlert.style.color = "#FF001F";
+ createButton.disabled = true;
+ }
+ } else {
+ worldnameAlert.textContent = "";
+ createButton.disabled = false;
+ }
+
+ worldProperties.worldname = worldname;
+ });
+
+ // Mods
+ worldProperties.mods = {};
+
+ createWorldGUI.create("h2").innerHTML = " Mods";
+
+ let modlistDisplay;
+
+ let updateModlist = _ => {
+ if (modlistDisplay)
+ clearChildren(modlistDisplay);
+ else
+ modlistDisplay = createWorldGUI.create("ul");
+
+ let oldSelectedMods = worldProperties.mods;
+ worldProperties.mods = {};
+
+ for (let modname in dragonblocks.mods) {
+ let modinfo = dragonblocks.mods[modname];
+
+ let modDisplay = modlistDisplay.appendChild(document.createElement("li"));
+ modDisplay.style.fontSize = "20px";
+ modDisplay.innerHTML = mod;
+ modDisplay.style.postion = "relative";
+ modDisplay.title = modinfo.description;
+
+ let checkbox = modDisplay.appendChild(document.createElement("input"));
+ checkbox.type = "checkbox";
+ checkbox.style.position = "absolute";
+ checkbox.style.right = "5px";
+
+ checkbox.addEventListener("input", _ => {
+ worldProperties.mods[mod] = checkbox.checked;
+ });
+
+ worldProperties.mods[mod] = checkbox.checked = oldSelectedMods[mod];
+ }
+ };
+
+ // Gamemode
+ worldProperties.gamemode = "survival";
+
+ createWorldGUI.create("h2").innerHTML = " Gamemode";
+
+ for (let gamemode of ["survival", "creative"]){
+ let radiobox = createWorldGUI.create("input");
+ radiobox.name = "dragonblocks.mainmenu.createWorldGUI.gamemode";
+ radiobox.type = "radio";
+ radiobox.checked = gamemode == worldProperties.gamemode;
+ radiobox.style.position = "relative";
+ radiobox.style.left = "40px";
+
+ radiobox.addEventListener("input", _ => {
+ if (radiobox.checked)
+ worldProperties.gamemode = gamemode;
+ });
+
+ let label = createWorldGUI.create("label");
+ label.innerHTML = dblib.humanFormat(gamemode);
+ label.style.position = "relative";
+ label.style.left = "40px";
+ }
+
+ // Mapgen
+ createWorldGUI.create("h2").innerHTML = " Mapgen";
+
+ let selectMapgen = createWorldGUI.create("select");
+ selectMapgen.style.position = "relative";
+ selectMapgen.style.left = "40px";
+
+ selectMapgen.addEventListener("input", _ => {
+ worldProperties.mapgen = selectMapgen.value;
+ });
+
+ for (let mapgen in dragonblocks.mapgen.list)
+ selectMapgen.appendChild(document.createElement("option")).innerHTML = mapgen;
+
+ worldProperties.mapgen = selectMapgen.value;
+
+ createWorldGUI.create("br");
+ createWorldGUI.create("br");
+
+ // Create Button
+ createButton = createWorldGUI.create("button");
+ createButton.style.position = "absolute";
+ createButton.style.left = "1%";
+ createButton.style.bottom = "5px";
+ createButton.style.width = "98%";
+ createButton.style.fontSize = "20px";
+ createButton.innerHTML = "Create World";
+
+ createButton.addEventListener("click", event => {
+ event.srcElement.blur();
+ createWorldGUI.close();
+
+ dragonblocks.worldIsLoaded = false;
+ dragonblocks.worldname = worldProperties.worldname;
+ dragonblocks.world = dragonblocks.getEmptyWorld();
+
+ dragonblocks.entities["dragonblocks:player"].meta.creative = (worldProperties.gamemode == "creative");
+
+ dragonblocks.mapgen.selected = worldProperties.mapgen;
+
+ dragonblocks.start(worldProperties.mods);
+ });
+
+ createWorldGUI.create("br");
+ createWorldGUI.create("br");
+
+ onReload.push(_ => {
+ worldnameInput.value = "";
+ worldnameAlert.textContent = "";
+ createButton.disabled = dragonblocks.loggedin;
+
+ updateModlist();
+ });
+
+ buttons.push({
+ text: "Create New World",
+ action: _ => {
+ createWorldGUI.open();
+ },
+ });
+ }
+
+ // Credits Button
+
+ {
+ let creditsGUI = new dragonblocks.gui.Box();
+
+ let pages = $.getJSON("credits.json").responseJSON;
+ let page = 0;
+
+ for (let dir of ["left", "right"]) {
+ let arrow = creditsGUI.create("div");
+ arrow.style.position = "absolute";
+ arrow.style.width = "80px";
+ arrow.style.height = "80px";
+ arrow.style.position = "absolute";
+ arrow.style[dir] = "3px";
+ arrow.style.background = dragonblocks.getTexture("arrow.png");
+ arrow.style.backgroundSize = "cover";
+ arrow.style.cursor = "pointer";
+
+ if (dir == "right")
+ arrow.style.transform = "rotate(180deg)";
+
+ arrow.addEventListener("click", _ => {
+ if (dir == "right")
+ page++;
+ else
+ page--;
+
+ creditsGUI.open();
+ });
+
+ dblib.centerVertical(arrow);