From 5c327bbd570c28362fa75a7c3676d9b244a45d6a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 26 Apr 2020 11:49:37 +0200 Subject: [PATCH] Initial Commit --- README | 1 + dependencies.txt | 7 ++++ gui.js | 24 +++++++++++++ init.js | 3 ++ mapgen.js | 23 ++++++++++++ misc.js | 8 +++++ quests.js | 36 +++++++++++++++++++ quests.json | 58 ++++++++++++++++++++++++++++++ recipes.js | 22 ++++++++++++ sounds/skyblocks_finish_quest.ogg | Bin 0 -> 15703 bytes textures/skyblocks_skyblock.png | Bin 0 -> 307 bytes 11 files changed, 182 insertions(+) create mode 100644 README create mode 100644 dependencies.txt create mode 100644 gui.js create mode 100644 init.js create mode 100644 mapgen.js create mode 100644 misc.js create mode 100644 quests.js create mode 100644 quests.json create mode 100644 recipes.js create mode 100755 sounds/skyblocks_finish_quest.ogg create mode 100755 textures/skyblocks_skyblock.png diff --git a/README b/README new file mode 100644 index 0000000..aff3949 --- /dev/null +++ b/README @@ -0,0 +1 @@ +Skyblocks Mod for dragonblocks (https://github.com/EliasFleckenstein03/dragonblocksJS) diff --git a/dependencies.txt b/dependencies.txt new file mode 100644 index 0000000..f068578 --- /dev/null +++ b/dependencies.txt @@ -0,0 +1,7 @@ +furnace +plants +tools +chest +core +dirt +chat diff --git a/gui.js b/gui.js new file mode 100644 index 0000000..e260c11 --- /dev/null +++ b/gui.js @@ -0,0 +1,24 @@ +{ + 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() }); +} diff --git a/init.js b/init.js new file mode 100644 index 0000000..1c5af3e --- /dev/null +++ b/init.js @@ -0,0 +1,3 @@ +skyblocks = {}; +for(let script of ["quests.js", "mapgen.js", "recipes.js", "misc.js", "gui.js"]) + $.getScript(dragonblocks.getModpath("skyblocks") + "/" + script); diff --git a/mapgen.js b/mapgen.js new file mode 100644 index 0000000..2cae463 --- /dev/null +++ b/mapgen.js @@ -0,0 +1,23 @@ +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"; diff --git a/misc.js b/misc.js new file mode 100644 index 0000000..22bb3d1 --- /dev/null +++ b/misc.js @@ -0,0 +1,8 @@ +dragonblocks.tools["dragonblocks:hand"].groups.push({ + name: "choppy", + damage: 0, +}); +dragonblocks.registerOnSetNode((x, y) => { + dragonblocks.finishTimer("growTimer", dragonblocks.getNode(x, y).meta) +}); + diff --git a/quests.js b/quests.js new file mode 100644 index 0000000..50ab4ef --- /dev/null +++ b/quests.js @@ -0,0 +1,36 @@ +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); +}); diff --git a/quests.json b/quests.json new file mode 100644 index 0000000..2a24d3f --- /dev/null +++ b/quests.json @@ -0,0 +1,58 @@ +[ + { + "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 + } +] diff --git a/recipes.js b/recipes.js new file mode 100644 index 0000000..a31ec65 --- /dev/null +++ b/recipes.js @@ -0,0 +1,22 @@ +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"]], +}); + diff --git a/sounds/skyblocks_finish_quest.ogg b/sounds/skyblocks_finish_quest.ogg new file mode 100755 index 0000000000000000000000000000000000000000..e272caf79ea3d11983ae02ecb0208418f65213c3 GIT binary patch literal 15703 zcmeIZc|4Tg|2KYS%-Ctjz7E;OP72wE&>%~8St}K(u_rN%tt@3%B0DKdRAh@$sg$yY z$}%KNWT`MA+}Egg?>@iZ<8gl<_v8D$|GUrQGIQp-&Ur1**Xz8_>s;qBKYiK?z`^fg zC3wPtT77v|y%i<|JMZmx+|!?W1Fl~|{esH+udjNTIko4XLhT8Iehu(k)kW!S|3`UD z^NWxI^xWRl$3x!S?=%pF2|q4>W=#0O|OcET68pu z&&mRWykVJW>B)N{nOZ}c7>Nh4ACSyBfpRo@Jdo*?p!-lDnkCEfFs3ctGG33K*Xj!9 zS-PdM9-Vjq>wzf&t3+cd-TIsU<+azYok+M7kZL?F=6+ZYhlxowrYo^B)5Gn%HeiVn z^tZG;qdNn!)O(1IW{K=hwxP<|ibe6=X9N}ipyCU7;^EPkD&RmF07Sl2;zy~(J?g0^ zjJS51Ko&p&(CWisl)~}yo|s9mtVy5#5gS7PejA(BK<7c~g;sIrq*BG=N^g|#p`S3j z^U$+6AORYJ$WZDDism19z;P+{Sc#gcQ2)fJQ|cbl&!z%=MEj?V@X}LLH~l-+CA0mX zt4-hZkM}#Jw2>CYZ@3iGR$+cu@^RYtw{T)i~P*N_KlmsK;RduIOtbdRg%miig_ zXHZRaa?0qOd_Pp{REL`Ee3WsQ`umtsDHpCz9mVT$Lp5#Q(hz?=>b-y4{elP5SC?o1 zCErpsF0Uwp#~{|Ty_jyK=&6_ovmfJ~Lq$a?mb2(|>*q$8oL`#L10WL3VTluo`TY?q za*5}7JErtzB%}15;=*|4SF#UYD|b*o=Bgib9{8fzhC0YxS;KB(TH9}bqOxK7rWb4P zQP0ZS0b@)FWM#|_eniMT^t|rLx`tHBu_Cu_`n|&3&WG>72|c6^4$YVT`iBDkyAtw#i&`HCI#6MLB|Ym}y9@<8)VpQh=u{t*t-K5GNJ0E3Yl zgZJsCg8`=R18f{>ogE&Ydp~f__1ZZyh49xED7d2{4uBb4Vlghh7?(JqmMR7-5GeI1N zxd-{T0RT`Gdul0r$X~@M-P)wq+O*c%gww{{=D#ZYO#4(!Az;M;3JJgg6S;v8GQ{*q z+b9o|JIa4C*~;uVs_^)0-PgK-C_T^S7q69QE2r$0qBGm<_g?0R>V;sCK@hu{L6jIQ z^%nKofdddfc@ib!q3hRAfcE6ej}wKi-@pG`Ul5mE3_MHfcUYz}@+c$T&iYLh;({&{ zMQ2I>x0w9y4Do^(<^Ij<=#qh!MI>;(vnI|D*B$5cuCCK!hSApo9LH3c8ay zVc461_}EvL2>=13UReNq#7z32*x0Lb1OWgvL$dwvsr}bau@E&P4Zso^PUd$fX8`0(>qV6l9J> z-}20o((6+(=P2;Zl88qcbnP|0P&j=<;;F(Go-hUGoSBwWUoA zwPhC6vTW|jKP~$MMdAxRvZyWR8nMt!p#p_RXKsjh)~&L}yRtM#RG`_zW-#NVTUHrV z<{IxaTbM#^pgY8}M(8)x#@Yr-HZo4~jzOXQ)%~+Wz-ch>BkQ1Nr|Y$8_{E;4;vfb$*|VNiI-SP)88q!Ha0AQ=G#~3 zbW2NV&S-06=@I~{Y3QIos+}R&g`i|0*7Azd^PB0GnCCbB&5ZAGoPaWw689@g(>K#B zm7iz&cN#%?7L-L4r(dC_9G1pANd+{KQ!@)_HmA>lx?xJ7CXxW$ZiNAKt6|C;2E#~3 z76%4U3{FYZGCXqt2EGwN08f}m6}HN6i34c#$Kn-0#EiZ6tar#{%h_^u3O2`W(T z4jcwO5SD?*cCejoR5U$eZPOp<+m|10IQLn_eElf1Xf%3eVb4(=cd17i%V0E^sT zk?3Qo!ezhXGc^?@fwJ@#%;9s(mmS=19AYQjhz0A|K7dHg$d=|!SZ#u#4c9<`>25r@VNok+BW zo>YnZYjtQ%Lajk#gia88%21M?sx(bqr$9B!13NXT5@gq^Dalil;-}3W`%9KZV4gFDSOQl)jVBu17B( zooZ~1$*?x25{05{1U1UC1*9H1$+kbsXB-Ck`mdafmrgMK8b2}F@9ojc0?{0fOeqJM zk6y{~yP|81aZgryUYwDt_kySR?QxTWD2|Y>hK#pRT7;$t^olS9Ej?ok3Vxg!U{Rub z_4ST%$|_1l(OwP)OMp#;4Twod^~%fVcL44H-@yn}Bq|!sMQ4G9vzpb9$Ej+L(@M^8 zWE_ANB2WlJf(rm(rHHYyr|v%a2;Xz?L{!n!2^xLsLr@LIXaHbG1J9o2k3X1dduBD{jNWPYmnY?T(<4OpU7Fi6a{jljjn&@PQV7)c((WYFQ?Ok)5 zgQMd97O&YxSYzOb=39H8Tn4bEg+Z1_tOR3fTr@&zN~^}|3h8iB=)MgXMGLjPn=Sh{ zeYMp3Q&pO_zv;hLFf${0-|P3RGZ%*uJJ*-=RA#oONZJGqv-4B?-w6`2GDv0(EDbI; z|MS9A_=+}Ip~Y&@^kMxy_|R^;#9Q7khHylHHcj$mt)KC_=!VUTxrL$SL7*g%T)eBQ ztpvI44;cxEUX-&`7QWqoWDXxOMmIG}$=ubj#8jZebZNloJI(Ue@qrGQWR6~61k(kk zG#YHSP=4G%L>z6az8?JD3#F<}#zW8Nz0I%VLvu&iKWn`?5aLBcydlRbX7eh1>I1Ff z*9UXl-#b(XuX=rN(u!tGv_C{VH&Vu_%YjbhPTu886Dg>luLbObr9EJ5;dc=h*o}$( zM;=S(Z)>BlZ&=U~x8c zF>ER9VsKg_bJlaDOJ>^XQFC%+)ZC-2l&}2NtI<6&)s8xxE-_{@GDWd(t<{B^6|BrI z8IQ<>uZp;6vmri?Ri2$M;`P=&&-Zb^kGFVkWa+GM@K-n_Yl`P-iMp_tVc`vY(`gjh z=*RBED>u|4f@uno3zd^IdWRO=qnTb?3r~G=k+4r4Z*&zhXbjD4hdD__mfQ`Yw2h3aLGIQ{wC1UaY10I(lg|A;BwM zck9Nu*YJVO=8%g_d(xZ1CtKURq_@`9vaVTP-j44bN?d@Z2pI;WI^Xvr3LgR8I0;evJ$YwZ~2z!@h^pe(1jD}s}*2#11Cp&WF_-jMHEA*Bx zo>$lm+0gjx^Imi5+xjg2*x1&xA!=&Rjb^@r}i&0w{ceTWtg4P{8tA z6ryRJU2bSP`r{`isG%hIEDzXT@{oX28b^uTk#b;kdDM(3LL30@D+sLETU~zhS4egO z-Sw}|$!x^v>;g30=j$|*8(c|%83FKZvAxg$8D=luG~T>_p@xjOPR1D68;hN4h#^#+ z)Tby1tUpipksgoPuKadE1>7g*YcRdbf5Q!Q@rAHCv6p(!?BS6ya&a z5A%3O<6Bjfkh<`e6;kam{P~1Zk}9cm*D5Yng#KpOMI8k|{C=0lEkLs(teFAJMB)7o z7VIqGK)z`o8wz;9#+Ddbk9*qXqHM6sq#_Py#CW2ab9Apdf_ zlv8dd((6<6tCsUL;t3?ltmDStxNChp3A<}thAVOHR97!vg- zaC}gpPt%IR!4F?u2^#uPvglg6V9r+*(Nj^f-ziZECgGbCkMZ^yectHKF+ezzpV1i-O%NAq=U(aEcBK{iRS1oJ}bq8DY2SS zN=qV7?VE*Z&ij-ObqxYWfVHXfMm_-wBD#l4TjcX$-L$PEe&7|6w?fl^6dnU^ z%3S$;nGFUwX4=8nyF5dLZS-me++t~67uk||(j;~1%yQQ4XU}x7_r;>E3=*7;LxC3^G@!&ygAA3#(hs8KUwGKdoLfn zt^L`@g`#6~5*INlT^XU$j9fP{MCOkrItil$A5nOh8CY|e5JVv$HG@Q_GnRL3h0C>K zD%!6LVv8`dNr^N8w9*q?t$W1tWkE~*$&ht#+A8++*79*rwrEDK^!k%tKV4XK37(h@ zI+gU-)(BdK*yg$yrXU@>PX`DFMz$0f4oX#&%L!+7;wW=u>$fInFW0#}UTGwc{tO^I zeKoYnFdZtEd`c-StVK5>cKA7r&zb!hIK3;K)-8!oM9UdeA0}?!3|ZU*9@6u)=bArJ z|6y)P!x^|+S2v55?D~w3)tnBUzdQFfr`P(qLnQ=hkqtVJOJm*D_5G!5u8A(qyd^*A zuzNfuR-gR5-~?byyetSbu3JoWHx{6A#GIa$GgTQ@IyvF0Z^AlGc(dhnKB^Lb@3P)R z4pv(qgU?OX!j(DkkHQ@}^qIie?9}c6{}8m6;?@V+ZcszpN)iOV%+i~EJv!qlF6BS$m$9ZL1d-n*hIz8rSYSj^Zs&f!7RV(sCw z8(dN3U}N~J$k4HCqNP?}k1U13iDKCEG%#5y0TeHg5)}pg7XDjS-NA%%IVhhJ8XdlI zr;gMjY^`A0Wq!aAr{A?IigHOx==D!^M@5*o3B)FmTXm!B$uJb?rEM*OxwY;llPH77 zV529Fv<8eaCBCy-E{6fUB%?}!gCqx-i$>_H$b;P5{a$O{bQz80+I#DCv4)orS+@hd z)?LpPXYm%SSF)!Vx6MY)_u3p}yFh}qDpHYbN3$tHTLdUre&|$7#QV($K?>3(H0rO4 zD(~3Y4fi^SdZ_H$|8Aa-tJ^%UD}LiErOTrLPI?y+CiJ3PQ!Jc9gcq}bU=la+hyiog z_R{%p2%0Lp1Y){1Dl7pWUicE^WOi#-qbjOq2Q(mw}lSK1(B7{$z8i8yxlV2 zXC`qe1H?KEGrM2@Ty8!;5FCAcq=#Ji+3r!2?`8cj2YVi@yiDq*|2pZzm;V?^fng)H z*9S-|)wF6c**CYfnyQ92r(9_mztAXtYC^6X;pp8+JfJ0$b5MS~WM8PqoxwqSqu8{3 zLwth@8{(ZcgR#rcoU%fO>OPn_c0XHk3L*x;b^>9}8@cd0@$Y%lo&4suU8L&Jx^s&^ z%O8aQ$lNUH&l!2Qr;M^+HDAYRJ7DXx1{~|Ae}eX5_;n7>k96O)uwQA;fUzgvwi}wI zTUoo>R2MzZ224}7pCF~c{aQDekOi>|E9{cl@4qqmT&B>8i!i}qNz}W`KeTw%)^g4H zb~CwbKQ{kMfKPj?7)*?Yfu09kBGTh(cMrO@Tnv->lEgCQ?-HhM;wq>*`CvfntIwvg z?bU^+n?D)xz9)j5vG1#7`2F-J_Se1&3q^h-oCO%+L^cNB%*Ac@el09Nr|3O~=+4Ox zrN_i^piyfKp3B63OALgyn|f_KUw!%G?T6XALL9P0@2=}167eAm$*W`5&bfn~<_57j zKO^Ii0Zh$%Pdkp5Ap-429}ALGc7<)Ym?&sFY^D5Q1+wpUdB5=DuhUT#*nGZ;Cq!k} z0e9&xH(#O{_=M2q(V=C+VQ(#Cx{qBh4mnE+0|CiUfm3oy5z=or`qcE02?gAvZ)BIQ=%2!|G1uESbFO(E-&WM{(ybZk;{3577JM>thYs(}_eF z1l5A2#k?Rh=$5Bu~X_*7n4sEA?Rse2da^P;-|;q8!55t$9GpHRdvv3}B` zjtS7oeB=Ym!vkOMc>~(1_UW6rcSoxRg_#0i?hzm1o5r~Ihmbs1H@-FH2C`Tm5129* z%aHoiNZ4X+X(N{$CMo9f+Q0kEfl3pFi5*8P0%jOHv1drNi~sI|p}?aJl4|JJt+h8z zN-dmCMyADQWJPjnq^8DnrAJ@`F$HUxWhKUn?(Fm=ay&&ugqfLc*`1X28 zkZZtQx63w<@-9kchMzOL#FShLFAi3z#!_TNynATF+E=C*xMPi;FB-?T=;8$K#W)33 zkVQCMjK?Xdso>DL#{JPvAbw*|>xC8|7@r;jaig^MmH{h&ukcOM6A@}VIU8OvV`nBG27DLXf6 z=~m;i)zg^Fj=fyYwXP_b5+?<6+Xb&XJn?d154UnBsT_?%*e)jz4NL~5aLz|@Y(`zN zRrWw=XeI6C3wt z&Uu)HpSMn?mQY{BHA|1Jf3NF`Vs)w*;upZyzy^rpkA%J~aOZR(cvAMfpXR)}Oc}ew z)h1vufBa~un}PcgNoeF%Zj5s)#(cIiHYUVd5^>s}Zk^b4xo)tbXxXFSb{5MQc~eLg zpc#_cVZ26)kdKR^867>U@{H--nG0iIgii+r3B?I-P5L!CJHLzVJ6-;Ln(bp})sXW@ zJd03hETQ}R_zM&MfaM`sGNo!ec-hB7@^jO$;COyQ=kHc}uJ~m|K z@16SADJZ{#3iV|Kbvba<;fbth=GElHgt++V%L$jF!omp`{VoIq1p49eK3*r!o%VEh z_jGk>mwPczhhuzlnXPp2;!*aG$xiKZLo0-g)8dNzNVOTveC=jQUBE&S1I1frxE@V1 z=rOiz97RJ=UYI-)8X;4N~8=4PMfdYJ7hRIk4;I$1nfj0ldc1qOim4D8@*D zs#o$Xs2FGCLKBU8x673`$O_>egyuY9Lcin7ch<@SQ}RVWqQSFrJ->}EEe}CpF_I1Z za7Ocm?7dw#>R6AqUJY&i&_vPq>8!~GZ(}Ff2R{`)*(NfCWuANSOd+4Xw>0(gppab3 zkIeQQg(31jFPqnjKMiGW%myAPKv=N3i#;ZS2q@v|4w=vyxUM4*$E^{5;d9NV$JFx3 zWQS(xJxy(`{@e63dsOt6KP#wFyi3q`TFop9T(4Txr*Z@U#gYAuHL8Of3gmOLQq_tx za#c##2A&5yEoG?>5M=9NG`X2MRhM0{yI;G;kJq7*W_-IJOayK;p>%(YJiu=! z#2-QuBaL>ui|I0m!VrMi8{B)n=(4HLD`;ixdcI+$yWlx_bI?WL*^?x*(|0#00XDcrJ1UQRg9EgL4Hxb%~6YjgP z;TMolECliu@L_9dYe9Y9u?7z^iWIcfY%#D);hx^dN}YG1Va&k{>-lC!h)*yvjCeK2 z<<-+sC-%Z(nU5;O-#hanoXD?)=4_Vsp$UVmFxbWE!udvVg=zh4y0K^-d66vRxv$mi zkg)v8iRB+0SYnz{vJx@^jfD;o4OKEfI?>_I)B!5GgsUivSD(zT@6oxSviE`~54YL( zzBPo{<)p_4Zf;^#@)6cSjk3tf)wHGlacf|&?)Uat-Sl?_Z$prPtk`03omxBF2`j*+ z?R^Wy6z8OlkhV8Jo4D{Kt8-u~xyeaB48-(??VdQVX6A=4rHlf5B8TqtNEi$b9pkv? z^&r%C#pa6UG7d1?ef>C*1mFJIufaQgZ-I_{G3?eJebmDd#Ft)@Z+t$d(~@qMfQaZ{2cxSiw zu8#(n{tQ3$V8+4wCcG7?r31PfoY8yGw}-K2n}PuV@bnJ(0guzfCh%=&lB6Dtw4jM9 zukxe~+UE_F7hv?c?OG4($hKz~3^li42hMUN9$W|rX{pm&>Nx9|ca1#`^|^T-LEn0t zK{?e8O9XJx+V_6`;Ph*ziq1F|qKYSG*H#IId2lXJSTm%{GP<#2O3RxG z^7lK6vso z%r^wp40V)!(W^}kcyb4OpnzY}+&p1~em>~jS#lKbRU3=tw~|$=fI-5*A`=crKqBxM zHS)av>>f_2I%BjUWjIoa=4Yg-ZW{UaGyd2vy|)G0ReIYka#N2tc_dRETSkp9+LHjW zGew|z+CPYQOB^od=O$>M^3@SWA4&%~x zqj#l@o@j;~55c<|w!{0iiq~9+*82eBejvGdU@=G7EZjwSe$kBNcR=IqiYCxXs(ZE~ z<)_D3ypX|HN@BT>HPSeHrM~A){^h)!mYM^hO)zUz_09YjE1W6Xknz1$N!Vyb?ZYp; zuBIP8Buc3tA=%0IM_DG$jlRcT#Yu|QLs=*z{mvGO+sQu1N?V<|A~pS>1#ctr4<#3| za9$havcz4Q=xj1szyA%pq9WhvCk=y(;_&h_K{J9loP%in)9jI?MZr;Tz|8pKwa5?m zh#5G<`7UMAfFUgHc~7ahsAx)4^Joiy@i(`J6RP*c_Sx#f9&rOk2?Iq@B=y`J084>G zk%*?|wD{wWm_WnJ&8ttqmrvJy%;?L1^e!ttI$A2q@$4#N?VQ+w{A~&|tuh|@;?(tB zo!`;`r_&4g8%Al!%e=cNQ}k<3Sr3sAcBwZGE`)}(9J|Pjd*UBp4ua}mg!rA3BPY&#R zX6hZFynM{6yeUOZV3icUXrc?ZIkQK=8A@Tb@RY@UBI&y}w8Lod>Qk9QhX_M0JJd8cqe(%fu1e-m6 z9j8I7nb?_qnzqH~zMQi}u@PHQQ|*mD z;l1k?W0*E3zf3Ha=(|;@6}VX=Xhh+^c!DLfE}>4Bfvv9#8|E&KB(;{%2H))ijs6eG z{MYP}XhT=T+O{+n%nj4tZ`ztI!fIjO^3rs*!|lw&er(*$YmFI-V#;lAcCI6v8cpWc zOb{g5Ab5kDn-!X>!-HP+lq#@`tZp^3s(GjKpnf0e_&%~WLaDNbeTUw+U2ie2(b+te zv3gFhGv4OecwgE_7mFD_FpOs^9`YIF0RQbF!9*KxPB?> z<(yfroTxo6;l|o9G`B){AHCGU@S;J+h!>Vb2gEH>0Qik=KqKALiUD=>G2h`lLR-|X zyqc?}+XZzCoqV3>H~SYJtp^3cIh<_te#i&MAu1%w#F=pe!eb8~Jdi93B5Mo7t#Q;L zGq|W&;^#j#pUzYv=GQeh-}E`s)$qW&k_&@G8!L~5xE{1W_#4^G^XD?ZkCzwE+6XzV zKl52yeUe$v>VGv&BGBAL%jK!$s4ze#mKi8F?_u-BUxzVhbi08H!lR|T1d=xs0-COx zofH-mP|r)P63M0}LMiRd!*|IACdj@IJtf*)dTc(}$Hnx@zdROtw>$OrOmi^dfIVfC z#8S82RAoD*P}tvJG+;i0nVIT;(lAbigu3lv6k_;7~7NzZqjqM@J$1nE3JIuT2|`&Fs#> zez{D7#J(PXA@i$F>**5o6i<= ze}2z)Y!te}^BgWFhyP#}nY_845LtL9y>95Pq#MWGRS?QPlK|R6`-Sx<8bhE_*zDZ3 z*uSTE*UL)b)--g=M&lQ9hw~ZHwbe5h6v6O>43Q~WwEZ7mtsxBa%bz-ri)e6$u4Zn{ z;tE|;u7LIPcFC*ua9)xH?5mxH@5P0Axz`V4MSg@v9el*n$q6wT8NEyX!u4Ts!7pSV zCKl4Dt7B_K=+3EBM`3w(*txN`4O)7vO&fIwd8c3zy|{$3y%Udziu=w@Z>*b*1)~C0 zzqG`lzJ3&RdRavSjvCDCJmO@iUw*ibpxx(9KvI@ncnCIdsz$C|ix-M%-%SokYNi@} za;dsrMJQ1|vo@1fc!elv3_JkCKYZMleVP{sohMdh?sVC0Jh(7EK7YM%`ry;ea%s#D)b;W1{!PX^SFEVOT`wT(qF z5;U>{ts7fs=Y-VHN-SE%Epv%6L5v74iQZu*EH#3IA?7Li3*Y@hzdO^DOvZmeXBR`9 z&VYlo61sn!ujQzErc+0DYJKfvJ@KQIyv`PLioIWN?mETx%Eiq*U@aKQZayj)S?sN~ z!isx$pKrH7;BRH-=_xhO)L)pm7*?0`mUhT@6ax3a-;t(T2(7r}$;B6wCteypw*E5x!4542f zvyLWCe9jm=0I;I?QGNqr;rY|cxpqlPv$y)S0rgwa!u4EKYx6 z<9_&M$1}8jU&Hno`z)3+f@v(9*guTid^X#2?rG|uooBlh#WCj@$Y|9*djNc26|88n zcEh?8GX3ZFH&oe10EaH*!VELmIp2T)^}ozZeWieaXqnm>KihZI(ZRvi%G%P($_i(3 z*hpXh&>^huK^?57wuZW@+Fo@Pm3>NkRa6w^l@t`@W#wgLFc=vTs<^9*OU5iU-+l4S zSWybWfs}22hWL4vzYr0G{mO{`M^vJ4O-B*n1DuUZA#*_&oQY0W39hP_9z}3b&3LB>CFT6Op_QB4Bgu!p7wz2z2inU8c z?xYY@`q(y@tKFoq>yMFRS#{H|Y7I|>S#^8YZOj%U5CzjRg)J@w9a-y`*|~QQIn~ZX z5o)tu)^!b6;?}fcGN~&{nYbUS;C-y+a9xWggBvutAZd_)X!`_*wlv$9F<$}l(e%w) z{w|+JSe4lc*S&=e$e@2oP z;gU2p20>tu156-^2{hvD4LU<#HHM#DFv3sgppw5N7Z9n7nqP%k=|jKiIKgVD=ta5B zkdP2xn4?}tbI;9Y_*CnCo+2Gu=%K56p zXU@x>egQT1&*5S!VVd3$+4cv`7gB{1&=s9MNmcPnl)P9EG7Al`C-8HG`JU)8-a`Ko zl+$N8EI=T+eUq^2eZDx}2){}1#3QwbnT8Ggi7am1#jbYiWOCQr@xZLXl1C%F`PDoX zOWu+wIFsbZPf`0b%m%gr^>yK9NX_Cijwwm}rr054QOaqJu=$iTr|PvdgTc$k$2k5_ zgp&BR8iHy<*9P4nTY-3R4I<1XBu2dU8i3`UF_z7)B9=MVa?wyJzE9i<>G4DA?4l_f z%{eW@mUnpZrx|@@s-fMQ-&jJk6BEyA!gP3*@|sYKe);NCTQ$ki;0D&2Oc~H>xq5YG zr77FXqN5p5NkUjI(@#DPn0pZ?lCn{oL;9Fv?AGY)kE}mPEc#;~063zdz4p4VlBes| zKYuOyemBEyjcC0^Qn6>NBg4V9?8_TSA5(rTm1JO|YjE^3G*7!k=r44g|M|+f3^6pX zia@I))c%qZ;MzUERS5_4d~NsPs!lq!?H_qFj}*Faiiu zob@)G{WYFKLQbD0*A(-4;0YIqT%E9g)vmU@-gJ`nm_yxw&$?J#(g&{%w~~-)z&ot@ zttRrh_YR$hRStS<&VF-g@VH^p>5Ws)QY5iDdo7}S1Ol@1pE8EUe|{tJd9C)rsl12H zp`+5mI?tcUQTq0>GUr9-Z_aVzx?sQQ$=~T_t_#y;Wp4=YTCKH`Qg~Xapq?M)kNrao zyvk8IH_>cUv4@pSscX*P=Sg|L9ikWyozXQ>Jy&q$8m}XjR*-`0`w~VeJmCQ3fgukU z)nZl)8lDX@&W!z~qsQp*(!^XnufW4LMvDKX?54)RIcdL&xsct=W0zJ`U(ry(dRXP8 zw^q`irHR?0=#Zr3q#r|Cy!Ev zA*?ExNE`IcGe_w!GKR31 z`yDICelrC$34U1U@CTH~gjTsWT7+2*&q6VeToiheySH@g+6Dq0r%p$m27VW!`G;2m z+q&G8ys?3)`LApPm@i~i8pYJ=a*L0&kTfGdZ@V@oyTm(c;XZAJq*n!D^6O8k5|2mx zLjd~ru{z(>Kd4)pvAAi7o|fSV*yaMTi3Ez(um0o;rb)};k6w^hPaWF4c>Q>)<9-^c zOP0icNr-KzOdm=pAg53Df1`A*A2x#?)imvY0WC=&`;s3q%~MSZ`JT?{jrCN<{Q76Y za4Ac`{x1bEoKc*1bNS|;IW@-a&e6EmeLsZ&2cF%I79z1I<+>P2_Dv9lylq>vcX0n5 zL_H^+%D2C|SI@4kU>5Zo7LDfiC#zJ36=kHcg6fVcD5IuAFdw<=jT{{mHOWU>0z{zA z>4QK{@z2Z*(Mi^EPD#Be?n}|IIp^;f7VR1uN(+uEDo`PSERkmk^D&``8{SU*)-V4< zuukeDcvkqYO8^kY9c%W!_Q@)~4?Civ3WySn`Ri2eA<^d}UF#=-nBR7Aah0dudYjy3 zIBG2UFWECk*L&B0<`1$AUfyiVZuMa71FeEIkmQ@*3a;LfWX`%_Nyww2AB&N@h6|;3 z5phC)bw@?WINYej=4^_NrAdW?rL%I>$pT{B6SKrrCqUF+2oG5^;b%b<`Kzb> zO5bI4ah{;QQdbsx8*}|Mv!9-5+G%X~-?! zx$pOgq!$-Xq>4J7(((a8@+qf_8xE&HAYJgp?;{?EPV@gMt-buwYVC4W(w}VY*4p~h z^mYOAm;*?^#Ak%;I-;d+Y%_4&Z~S4o%H^N%3>rpejkL% zj%T>mpFBtu75Q5;-1_*_L5HUTkt?NFgE`NO1NYx!At#bkbq7oGOe7uty$onm{EOAt zc$ECI5W2aH_0tMjLS%)dM!z`sc*2Q1KJ|`JhKy1LmomcpZb^xus382 zugqChL*w`CUn3phD59v!Dh|-5K~Vn1Wk-i+zr6YbQn((5ZvA&!fC3EX@&5cA!SzY? zVOu*EYL^|jxbZRnbWs>)q(S{19f`Sby-9makl^-;zBv=>KuuL)Q66B|0y`QLymrEx_3DM zBTqbk%QX*K)CQf>wB|rM3>yYSk-s&$Sz_T)A+J4)q5IRCsqSO)4x=16lpz0y4*Hex z-)2`^_#?Yav$?1pARqfJjt6ASXFf6jJo}scrxVAj>Q?Ycue5g34T==him8qf8nQz3 z{3gl1kVF1$2p_|FFn!{Bv(3pJYwv){S@(o0P6d?_@c9pI5zJyI`&mGKpy+?dvgpwA z|5ua|yq%s4CmGc2P!4%mr2wN24N_5PEt4&T%Dz7!LKRqu)P8ROvH~=Ii7oqEOKOax zLWuaY_=Fl0vG}^|u(bf>4uZ0-jXU=FM~KM3^-Jc`(`lD(*!4@hKTVIcC?U1*&=CAf z2CRkl`5exH-BjQD)9|-q#ecPf{x`CC^BllJ6Wb=`|0^dnX#Ny5OYhX;78&EW@gH)M N9d=au(`={mzX0(oIAZ_+ literal 0 HcmV?d00001 diff --git a/textures/skyblocks_skyblock.png b/textures/skyblocks_skyblock.png new file mode 100755 index 0000000000000000000000000000000000000000..5306305e2ba0e01074ad440931d1e205da8dc1fc GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*b3=G`DAk4@xYmNj^kiEpy*OmPaJ13u|`K{#-E&_!lOI#yLobz*Y zQ}ap~oQqNuOHxx5$}>wc6x=<11Hv2m#DR+XJY5_^A`ZWu>dkjRfx|`e(BJhw;df2U z1Z8rP6$+oG%f&x@r^m?rVV8J~my1hIXi144(;}UZZ)7L8^xD*PG0o^|adUY;wbhIH z%rleVmZ*;!q6==FV>+=VCzEAGuEf{6Z53ZvU%1TR_UOv~1wl2O4T^rchu$2yGFSBe s;vI~2oC(&^>w+D;9r+irS!D6Wl>BoxKPgjQ26P#Nr>mdKI;Vst0Drz}bN~PV literal 0 HcmV?d00001 -- 2.44.0