--- /dev/null
+Skyblocks Mod for dragonblocks (https://github.com/EliasFleckenstein03/dragonblocksJS)
--- /dev/null
+furnace
+plants
+tools
+chest
+core
+dirt
+chat
--- /dev/null
+{
+ let gui = skyblocks.gui = dragonblocks.gui.createBox({ keylock: true });
+ let headline = gui.create("h1");
+ headline.align = "center";
+ headline.innerHTML = "Skyblocks";
+ let ul = gui.create("ul");
+ for(let quest of skyblocks.quests){
+ let li = ul.appendChild(document.createElement("li"));
+ li.style.fontSize = "20px";
+ li.innerHTML = quest.desc;
+ li.style.postion = "relative";
+ let questCount = ul.appendChild(document.createElement("var"));
+ questCount.style.position = "absolute";
+ questCount.style.right = "20px";
+ questCount.
+ let checkbox = li.appendChild(document.createElement("input"));
+ checkbox.type = "checkbox";
+ checkbox.style.position = "absolute";
+ checkbox.style.right = "5px";
+ checkbox.addEventListener("input", _ => { gui.getDisplay().dispatchEvent(new Event("update")) });
+ gui.getDisplay().addEventListener("update", _ => { checkbox.checked = (dragonblocks.player.meta.skyblocksQuests[quest.name] >= quest.count)})
+ }
+ dragonblocks.menu.addButton("Skyblocks", _ => { gui.open() });
+}
--- /dev/null
+skyblocks = {};
+for(let script of ["quests.js", "mapgen.js", "recipes.js", "misc.js", "gui.js"])
+ $.getScript(dragonblocks.getModpath("skyblocks") + "/" + script);
--- /dev/null
+dragonblocks.registerNode({
+ name: "skyblocks:skyblock",
+ groups: ["glass"],
+ desc: "Skyblock",
+ texture: "skyblocks_skyblock.png",
+ hardness: 4,
+ stable: true,
+ ondig: _ => {
+ return false;
+ },
+ onclick: _ => {
+ skyblocks.gui.open();
+ },
+});
+dragonblocks.mapgen.list["skyblocks"] = function(){
+ dragonblocks.getPixelManipulator([
+ ["dirt:grass", "dirt:grass", "§skyblocks:skyblock", "dirt:grass", "dirt:grass"],
+ ["", "dirt:dirt", "dirt:dirt", "dirt:dirt", ""],
+ ["", "", "dirt:dirt", "", ""],
+
+ ]).apply(parseInt(dragonblocks.map.width / 2), parseInt(dragonblocks.map.height / 2));
+}
+dragonblocks.mapgen.selected = "skyblocks";
--- /dev/null
+dragonblocks.tools["dragonblocks:hand"].groups.push({
+ name: "choppy",
+ damage: 0,
+});
+dragonblocks.registerOnSetNode((x, y) => {
+ dragonblocks.finishTimer("growTimer", dragonblocks.getNode(x, y).meta)
+});
+
--- /dev/null
+skyblocks.quests = $.getJSON(dragonblocks.getModpath("skyblocks") + "/quests.json").responseJSON;
+dragonblocks.registerOnStarted(_ => {
+ let meta = dragonblocks.player.meta;
+ if(! meta.skyblocksQuests)
+ meta.skyblocksQuests = {};
+ for(let quest of skyblocks.quests)
+ meta.skyblocksQuests[quest.name] = meta.skyblocksQuests[quest.name] || 0;
+ skyblocks.update();
+});
+skyblocks.update = function(){
+ let meta = dragonblocks.player.meta;
+ for(let quest of skyblocks.quests)
+ if(meta.skyblocksQuests[quest.name] == quest.count){
+ dragonblocks.player.give(quest.reward);
+ meta.skyblocksQuests[quest.name]++;
+ dragonblocks.playSound("skyblocks_finish_quest.ogg");
+ chat.send(".me completed the quest '" + quest.name + "' [skyblocks]");
+ }
+ skyblocks.gui.getDisplay().dispatchEvent(new Event("update"));
+}
+skyblocks.event = function(action, param){
+ for(let quest of skyblocks.quests){
+ if(quest.action == action && dragonblocks.itemMatch(quest.param, param))
+ dragonblocks.player.meta.skyblocksQuests[quest.name]++;
+ }
+ skyblocks.update();
+}
+dragonblocks.registerOnPlaceNode(node => {
+ skyblocks.event("place", node);
+});
+dragonblocks.registerOnDigNode((x, y) => {
+ skyblocks.event("dig", dragonblocks.getNode(x, y).toNode());
+});
+dragonblocks.registerOnUseItem(item => {
+ skyblocks.event("use", item);
+});
--- /dev/null
+[
+ {
+ "name": "dig_dirt",
+ "desc": "Dig 5 dirt",
+ "action": "dig",
+ "param": "dirt",
+ "reward": "tools:stick",
+ "count": 5
+ },
+ {
+ "name": "place_dirt",
+ "desc": "Place 5 dirt",
+ "action": "place",
+ "param": "dirt",
+ "reward": "plants:apple_leaves 6",
+ "count": 5
+ },
+ {
+ "name": "place_sapling",
+ "desc": "Plant a tree",
+ "action": "place",
+ "param": "plants:apple_sapling",
+ "reward": "plants:apple_tree",
+ "count": 1
+ },
+ {
+ "name": "dig_tree",
+ "desc": "Dig 8 Tree",
+ "action": "dig",
+ "param": "plants:apple_tree",
+ "reward": "core:cobble 8",
+ "count": 8
+ },
+ {
+ "name": "place_furnace",
+ "desc": "Place a furnace",
+ "action": "place",
+ "param": "furnace:furnace",
+ "reward": "tools:steel_axe",
+ "count": 1
+ },
+ {
+ "name": "place_chest",
+ "desc": "Place a chest",
+ "action": "place",
+ "param": "chest:chest",
+ "reward": "plants:papyrus 5",
+ "count": 1
+ },
+ {
+ "name": "place_door",
+ "desc": "Place a door",
+ "action": "use",
+ "param": "doors:door_wood",
+ "reward": "tools:steel_pickaxe",
+ "count": 1
+ }
+]
--- /dev/null
+dragonblocks.registerRecipe({
+ result: "plants:apple_sapling",
+ recipe:[
+ ["plants:apple_leaves", "plants:apple_leaves", "plants:apple_leaves"],
+ ["plants:apple_leaves", "plants:apple_leaves", "plants:apple_leaves"],
+ ["", "tools:stick", ""]
+ ]
+});
+furnace.registerRecipe({
+ input: "dirt:dirt",
+ output: "core:cobble 2",
+ time: 5,
+});
+dragonblocks.registerRecipe({
+ result: "core:gravel 2",
+ recipe: [["core:cobble"]]
+});
+dragonblocks.registerRecipe({
+ result: "dirt:dirt 2",
+ recipe: [["core:gravel"]],
+});
+