ExpMap

landmarks and map with Minimap for Bloxd.io

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         ExpMap
// @namespace    Bloxd-Minimap
// @version      1.5.8
// @description  landmarks and map with Minimap for Bloxd.io
// @author       jack_19987/Jhonny-The
// @icon         https://static.thenounproject.com/png/location-icon-6049812-512.png
// @match        https://bloxd.io/*
// @license      GNU AGPLv3
// @grant        none
// @run-at       document-start
// ==/UserScript==



!function(){"use strict";let e=!1,n={},a=null,o=null,t=null,l=!1,r=[],i=!1,s=0,c=!1,d=[],p=null,k=null;let u=64,g=30,h=40,b=!0,m=!1,B=!0,y=!1,f="high",S=100,x=null,P=!0;let C=new Set,w=(new Map,new Map,null),v=null;const M="bloxd_minimap_settings";function L(){try{const e={scanRangeDown:g,scanRangeUp:h,expandedMapRange:u,autoRefreshWhenStationary:b,distanceBasedDetail:m,showOtherPlayers:B,showMobs:y,renderIntervalMode:f};localStorage.setItem(M,JSON.stringify(e))}catch(e){console.error("[Bloxd Minimap] Failed to save settings:",e)}}const G={keys(e){const n=[];let a=0;for(const o in e)null!=e&&(n[a]=o,a++);return n},values(e){const n=this.keys(e),a=[];let o=0;for(let t=0;t<n.length;t++){const l=e[n[t]];a[o]=l,o++}return a},distanceBetweenSqrt(e,n){const a=n[0]-e[0],o=n[1]-e[1],t=n[2]-e[2];return Math.sqrt(a*a+o*o+t*t)}},E={wpRequire:null,o:null,get noa(){return this.o||(this.o=G.values(this.bloxdProps).find(e=>e?.entities)),this.o},init(){const e=Object.getOwnPropertyDescriptors(window),n=Object.keys(e).find(n=>e[n]?.set?.toString().includes("++")),a=window[n]=window[n],o=Math.floor(9999999*Math.random()+1);a.push([[o],{},e=>this.wpRequire=e]),this.bloxdProps=G.values(this.findModule("nonBlocksClient:")).find(e=>"object"==typeof e)},findModule(e){const n=this.wpRequire.m;for(const a in n){const o=n[a];if(o&&o.toString().includes(e))return this.wpRequire(a)}return null}},D={getPosition:e=>n.noa?.entities?.getState?.(e,"position")?.position,get getMoveState(){return G.values(n.noa?.entities)?.[36]},get registry(){return G.values(n.noa)?.[17]},get getBlockSolidity(){return G.values(this.registry)?.[5]},get getBlockID(){const e=n.noa?.bloxd;if(!e)return null;return e[Object.getOwnPropertyNames(e.constructor.prototype)[3]].bind(e)},get playerList(){const e=n.noa?.bloxd?.getPlayerIds?.();return e?G.values(e).filter(e=>1!==e&&this.safeGetHeldItem(e)).map(e=>parseInt(e)):[]},safeGetHeldItem(e){try{return this.getHeldItem(e)}catch{}},get getHeldItem(){return Object.values(n.noa?.entities||{}).find(e=>{if("function"!=typeof e)return!1;if(1!==e.length)return!1;const n=e.toString();return n.includes(").")&&n.length<30&&!n.includes(").op")})}},F={Unloaded:[244,0,255],Dirt:[142,100,78],"Messy Dirt":[133,91,70],"Grass Block":[111,174,83],Sand:[217,201,158],Clay:[161,171,181],Gravel:[106,107,109],Snow:[230,235,235],"Maple Log":[124,90,55],"Pine Log":[62,40,22],"Plum Log":[87,79,71],"Cedar Log":[53,40,22],"Aspen Log":[233,230,200],"Jungle Log":[93,73,23],"Maple Wood Planks":[175,143,85],"Aspen Wood Planks":[199,180,128],"Plum Wood Planks":[174,97,49],"Jungle Wood Planks":[165,124,86],"Pine Wood Planks":[122,91,52],"Cedar Wood Planks":[81,52,25],"Barkless Maple Log":[156,120,74],"Barkless Aspen Log":[174,150,107],"Barkless Plum Log":[146,74,37],"Barkless Jungle Log":[146,97,68],"Barkless Pine Log":[103,72,42],"Barkless Cedar Log":[61,37,18],Stone:[146,142,142],"Messy Stone":[146,142,142],"Smooth Stone":[163,161,161],Diorite:[202,197,192],"Smooth Diorite":[246,245,240],Andesite:[128,132,137],"Smooth Andesite":[162,164,166],Granite:[159,107,88],"Smooth Granite":[189,135,108],Sandstone:[230,222,177],Yellowstone:[221,215,149],"Coal Ore":[146,142,142],"Iron Ore":[146,142,142],"Gold Ore":[146,142,142],"Lapis Lazuli Ore":[146,142,142],"Emerald Ore":[146,142,142],"Diamond Ore":[146,142,142],"Block of Coal":[19,19,19],"Block of Iron":[214,209,202],"Block of Gold":[243,170,36],"Block of Lapis Lazuli":[34,91,174],"Block of Emerald":[11,197,85],"White Wool":[250,250,250],"Orange Wool":[252,133,33],"Magenta Wool":[203,74,189],"Light Blue Wool":[59,194,230],"Yellow Wool":[255,211,64],"Lime Wool":[134,202,29],"Pink Wool":[254,155,188],"Gray Wool":[73,79,83],"Light Gray Wool":[154,154,149],"Cyan Wool":[25,153,154],"Purple Wool":[136,45,183],"Blue Wool":[58,68,166],"Brown Wool":[125,81,44],"Green Wool":[95,119,32],"Red Wool":[176,44,37],"Black Wool":[29,31,36],"Baked Clay":[150,93,67],"White Baked Clay":[210,177,161],"Orange Baked Clay":[162,83,38],"Magenta Baked Clay":[149,87,108],"Light Blue Baked Clay":[112,108,138],"Yellow Baked Clay":[186,133,36],"Lime Baked Clay":[103,117,53],"Pink Baked Clay":[162,78,79],"Gray Baked Clay":[58,42,36],"Light Gray Baked Clay":[135,107,98],"Cyan Baked Clay":[85,90,90],"Purple Baked Clay":[118,70,86],"Blue Baked Clay":[73,59,91],"Brown Baked Clay":[77,50,35],"Green Baked Clay":[75,82,40],"Red Baked Clay":[142,61,47],"Black Baked Clay":[36,21,15],"Gray Concrete":[55,58,62],"Light Gray Concrete":[125,125,115],"Black Concrete":[9,11,16],"Blue Concrete":[45,47,144],"Brown Concrete":[97,60,32],"Cyan Concrete":[21,119,135],"Light Blue Concrete":[37,138,200],"Lime Concrete":[95,170,25],"Magenta Concrete":[169,48,159],"Orange Concrete":[225,97,0],"Pink Concrete":[214,101,143],"Purple Concrete":[101,32,157],"Red Concrete":[143,33,33],"White Concrete":[208,214,215],"Green Concrete":[73,91,36],"Yellow Concrete":[242,176,21],"Pine Leaves":[22,41,12],"Aspen Leaves":[50,128,22],"Maple Leaves":[56,105,31],"Jungle Leaves":[45,151,13],Watermelon:[93,141,32],Glass:[198,230,229],"Black Glass":[23,26,32],"Blue Glass":[101,134,207],"Brown Glass":[154,118,91],"Cyan Glass":[31,145,164],"Gray Glass":[86,90,93],"Light Gray Glass":[179,183,187],"Green Glass":[105,125,62],"Light Blue Glass":[135,187,242],"Lime Glass":[188,226,152],"Magenta Glass":[193,73,183],"Orange Glass":[242,151,82],"Pink Glass":[242,157,188],"Purple Glass":[126,63,177],"Red Glass":[182,56,56],"White Glass":[245,246,246],"Yellow Glass":[248,214,135],Bricks:[143,80,63],"Stone Bricks":[146,142,142],"Dark Red Brick":[78,40,47],"Dark Red Stone":[117,56,51],"Block of Quartz":[251,248,239],"Chiseled Block of Quartz":[237,229,217],"Engraved Stone":[113,109,109],"Mossy Stone Bricks":[146,142,142],"Cracked Stone Bricks":[146,142,142],"Smooth Sandstone":[230,222,177],"Engraved Sandstone":[230,222,177],Ice:[134,207,254],Obsidian:[19,12,32],"Hay Bale":[169,132,25],Sponge:[166,150,46],Beacon:[255,255,255],"Golden Decoration":[150,101,53],"Moonstone Explosive":[152,173,217],Bedrock:[21,21,22],Cactus:[81,146,43],Grass:[126,177,75],Dandelion:[255,236,79],Poppy:[237,48,44],"Red Tulip":[237,48,44],"Pink Tulip":[235,197,253],"White Tulip":[247,247,247],"Orange Tulip":[241,157,37],Daisy:[247,247,247],Bluebell:[42,191,253],"Forget-me-not":[72,115,238],Allium:[160,107,215],"Azure Bluet":[252,252,252],"Lily of the Valley":[215,22,22],"Shadow Rose":[42,33,29],Furnace:[79,75,75],Workbench:[100,63,45],"Block of Diamond":[37,171,193],"Maple Door":[175,143,85],t:[175,143,85],"Maple Trapdoor":[132,97,61],"Aspen Sapling":[124,165,61],"Maple Sapling":[113,80,47],"Jungle Sapling":[57,58,14],"Plum Sapling":[126,152,33],"Pine Sapling":[61,94,61],"Cedar Sapling":[55,143,47],"Maple Log|TreeBase|Maple":[124,90,55],Chest:[183,125,45],"Pine Leaves|TreeCanopy":[22,41,12],"Aspen Leaves|TreeCanopy":[50,128,22],"Maple Leaves|TreeCanopy":[56,105,31],"Jungle Leaves|TreeCanopy":[45,151,13],Protector:[146,142,142],"Fat Cactus":[81,146,43],"Dry Fat Cactus":[124,78,31],"Maple Ladder":[156,120,74],Vines:[78,114,46],"Dirt|GrassRoots":[142,100,78],"Iron Ladder":[173,180,182],"White Planks":[250,242,227],"Orange Planks":[209,125,65],"Magenta Planks":[156,78,126],"Light Blue Planks":[85,156,173],"Yellow Planks":[219,182,81],"Lime Planks":[154,173,85],"Pink Planks":[196,122,149],"Gray Planks":[82,78,72],"Light Gray Planks":[153,147,138],"Cyan Planks":[103,171,171],"Purple Planks":[149,113,171],"Blue Planks":[85,94,173],"Brown Planks":[130,94,65],"Green Planks":[103,117,59],"Red Planks":[171,72,68],"Black Planks":[41,38,33],"Artisan Bench":[100,63,45],"White Ceramic":[254,220,86],"Wheat Seeds":[9,164,18],Wheat:[220,187,101],"White Bed":[205,199,199],l:[205,199,199],"Pine Log|TreeBase|Pine":[62,40,22],"Plum Log|TreeBase|Plum":[87,79,71],"Cedar Log|TreeBase|Cedar":[53,40,22],"Aspen Log|TreeBase|Aspen":[233,230,200],"Jungle Log|TreeBase|Jungle":[93,73,23],"Palm Sapling":[38,128,11],"Pine Door":[122,91,52],i:[122,91,52],"Plum Door":[174,97,49],p:[174,97,49],"Cedar Door":[81,52,25],k:[81,52,25],"Aspen Door":[199,180,128],u:[199,180,128],"Jungle Door":[165,124,86],h:[165,124,86],"Palm Door":[214,153,73],B:[214,153,73],"Pine Trapdoor":[97,67,39],"Plum Trapdoor":[174,97,49],"Cedar Trapdoor":[61,37,18],"Aspen Trapdoor":[199,180,128],"Jungle Trapdoor":[124,78,58],"Palm Trapdoor":[182,129,62],"Smooth Sandstone Slab":[230,222,177],"Cactus|Growing":[81,146,43],"Fat Cactus|Growing":[81,146,43],"Pear Door":[141,110,99],S:[141,110,99],"Pear Trapdoor":[141,110,99],"Pear Sapling":[242,248,234],Board:[175,143,85],Net:[149,83,50],Cobweb:[219,214,194],"Watermelon Seeds":[72,99,4],"Jack o'Lantern":[196,104,19],"Melon Seeds":[72,99,4],"Potion Table":[1,1,1],"Pine Ladder":[97,67,39],"Plum Ladder":[149,75,38],"Cedar Ladder":[81,52,25],"Aspen Ladder":[174,150,107],"Jungle Ladder":[165,124,86],"Palm Ladder":[196,139,66],"Pear Ladder":[141,110,99],"Black Carpet":[29,31,36],"Blue Carpet":[58,68,166],"Brown Carpet":[125,81,44],"Cyan Carpet":[25,153,154],"Gray Carpet":[73,79,83],"Light Gray Carpet":[154,154,149],"Green Carpet":[95,119,32],"Light Blue Carpet":[59,194,230],"Lime Carpet":[134,202,29],"Magenta Carpet":[203,74,189],"Orange Carpet":[252,133,33],"Pink Carpet":[254,155,188],"Purple Carpet":[136,45,183],"Red Carpet":[176,44,37],"White Carpet":[250,250,250],"Yellow Carpet":[255,211,64],Rice:[94,176,99],"Rice|FreshlyGrown":[209,207,118],Cranberries:[30,77,51],"Red Mushroom":[226,61,48],"Brown Mushroom":[193,151,119],"Cotton Seeds":[40,133,34],"Tall Grass":[126,177,75],"Tall Grass|Top":[109,160,58],"Barkless Maple Log|TreeBase|Maple":[156,120,74],"Barkless Plum Log|TreeBase|Plum":[146,74,37],"Barkless Cedar Log|TreeBase|Cedar":[61,37,18],"Barkless Aspen Log|TreeBase|Aspen":[174,150,107],"Barkless Jungle Log|TreeBase|Jungle":[146,97,68],"Barkless Pine Log|TreeBase|Pine":[103,72,42],"Yellow Concrete Slab":[242,176,21],"White Concrete Slab":[208,214,215],"Red Concrete Slab":[143,33,33],"Purple Concrete Slab":[101,32,157],"Pink Concrete Slab":[214,101,143],"Orange Concrete Slab":[225,97,0],"Magenta Concrete Slab":[169,48,159],"Lime Concrete Slab":[95,170,25],"Light Gray Concrete Slab":[125,125,115],"Light Blue Concrete Slab":[37,138,200],"Green Concrete Slab":[73,91,36],"Gray Concrete Slab":[55,58,62],"Cyan Concrete Slab":[21,119,135],"Brown Concrete Slab":[97,60,32],"Blue Concrete Slab":[45,47,144],"Black Concrete Slab":[9,11,16],"Cherry Door":[233,192,187],P:[233,192,187],"Cherry Trapdoor":[218,170,170],"Cherry Sapling":[249,194,225],"Cherry Ladder":[211,159,159],"Wood Spikes":[0,0,0],"Stone Spikes":[0,0,0],"Iron Spikes":[0,0,0],"Gold Spikes":[0,0,0],"Diamond Spikes":[0,0,0],"Kill Spikes":[0,0,0],"Corn Seeds":[59,101,0],"Corn Plant":[36,84,0],"Loot Chest":[183,125,45],"Melting Ice":[134,207,254],"Timed Spike Bomb Block":[0,0,0],"Fat Brown Mushroom":[167,124,97],"Fat Red Mushroom":[237,232,202],"Spectral Grass":[30,175,136],"Spectral Door":[54,157,145],C:[54,157,145],"Spectral Trapdoor":[31,105,107],"Spectral Sapling":[22,136,139],"Spectral Ladder":[31,105,107],"Wood Enchanting Table":[1,1,1],"Stone Enchanting Table":[1,1,1],"Iron Enchanting Table":[1,1,1],"Gold Enchanting Table":[1,1,1],"Diamond Enchanting Table":[1,1,1],"Pine Grass":[93,161,125],"Pine Fern":[71,147,107],"Fallen Pine Cone":[176,127,73],"Bone Antlers":[247,239,225],"Gold Antlers":[236,224,87],"Salvaging Table":[0,0,0],"Leaf Bed":[56,105,31],v:[56,105,31],"Jungle Tall Grass":[45,151,13],"Jungle Tall Grass|Top":[45,151,13],Catnip:[45,151,13],"Mango Door":[197,183,95],M:[197,183,95],"Mango Trapdoor":[163,147,53],"Mango Sapling":[69,134,78],"Mango Ladder":[197,183,95],"Banana Seeds":[137,175,37],"Attached Banana Stem":[160,201,53],"Dangling Rope":[197,162,115],"Dangling Vine":[82,106,28],"Tomato Plant":[88,113,44],"Tomato Plant|FreshlyGrown":[88,113,44],"Tomato Plant|Top|FreshlyGrown":[107,132,45],"Carrot Plant":[107,132,45],"Carrot Plant|FreshlyGrown":[107,132,45],"Potato Plant":[88,113,44],"Potato Plant|FreshlyGrown":[88,113,44],"Strawberry Bush":[120,158,36],"Sugar Cane Plant":[180,170,51],"Sugar Cane Plant|FreshlyGrown":[150,154,38],"Sugar Cane Plant|Top|FreshlyGrown":[180,170,51],"Lettuce Plant":[120,158,36],"Lettuce Plant|FreshlyGrown":[120,158,36],"Coffee Plant":[124,131,30],"Coffee Plant|FreshlyGrown":[97,115,8],"Cauliflower Plant":[154,180,81],"Cauliflower Plant|FreshlyGrown":[255,243,214],"Parsnip Plant":[88,113,44],"Parsnip Plant|FreshlyGrown":[88,113,44],"Blueberry Bush":[107,132,45],"Red Cabbage Plant":[133,144,74],"Red Cabbage Plant|FreshlyGrown":[169,100,186],"Beetroot Plant":[107,132,45],"Beetroot Plant|FreshlyGrown":[107,132,45],"Autumn Fern":[227,205,82],"Carrot Seeds":[107,132,45],"Potato Seeds":[88,113,44],"Beetroot Seeds":[107,132,45],"White Banner":[124,75,71],L:[124,75,71],"Orange Banner":[124,75,71],G:[124,75,71],"Magenta Banner":[124,75,71],D:[124,75,71],"Light Blue Banner":[124,75,71],F:[124,75,71],"Yellow Banner":[124,75,71],T:[124,75,71],"Lime Banner":[124,75,71],A:[124,75,71],"Pink Banner":[124,75,71],R:[124,75,71],"Gray Banner":[124,75,71],O:[124,75,71],"Light Gray Banner":[124,75,71],W:[124,75,71],"Cyan Banner":[124,75,71],I:[124,75,71],"Purple Banner":[124,75,71],_:[124,75,71],"Blue Banner":[124,75,71],N:[124,75,71],"Brown Banner":[124,75,71],Y:[124,75,71],"Green Banner":[124,75,71],$:[124,75,71],"Red Banner":[124,75,71],X:[124,75,71],"Black Banner":[124,75,71],J:[124,75,71],"Draugr Banner":[124,75,71],U:[124,75,71],"Orange Ceramic":[22,163,163],"Magenta Ceramic":[199,78,189],"Light Blue Ceramic":[41,44,133],"Yellow Ceramic":[255,236,157],"Lime Ceramic":[94,169,24],"Pink Ceramic":[184,183,173],"Gray Ceramic":[54,57,61],"Light Gray Ceramic":[96,114,119],"Cyan Ceramic":[21,119,136],"Purple Ceramic":[162,84,224],"Blue Ceramic":[35,30,67],"Brown Ceramic":[131,84,50],"Green Ceramic":[208,214,215],"Red Ceramic":[142,32,32],"Black Ceramic":[153,34,34],"Tilled Soil":[148,96,63],"Bread Block":[198,144,41],"Mossy Messy Stone":[146,142,142],"Apple Block":[167,21,28],"Moonstone Ore":[146,142,142],"Moonstone Chest":[201,210,241],"Block of Moonstone":[152,173,217],Magma:[247,136,24],"Useless Soil":[101,65,25],"Marked Sandstone":[230,222,177],"Red Sandstone":[203,110,36],"Smooth Red Sandstone":[203,110,36],"Engraved Red Sandstone":[203,110,36],"Marked Red Sandstone":[203,110,36],"Green Stone":[121,183,165],"Green Bricks":[74,145,127],"Dark Green Bricks":[59,130,104],"Sandstone Bricks":[230,222,177],"Engraved Diorite":[246,245,240],"Diorite Bricks":[246,245,240],"Engraved Andesite":[105,109,115],"Andesite Bricks":[128,132,137],"Engraved Granite":[159,107,88],"Granite Bricks":[159,107,88],"Ice Bricks":[134,207,254],"Plum Leaves":[58,112,50],"Cedar Leaves":[37,67,20],"Palm Leaves":[88,174,62],"Plum Leaves|TreeCanopy":[58,112,50],"Cedar Leaves|TreeCanopy":[37,67,20],"Palm Leaves|TreeCanopy":[88,174,62],"Palm Log":[91,85,44],"Palm Log|TreeBase|Palm":[91,85,44],"Palm Wood Planks":[214,153,73],"Red Sand":[203,110,36],"Red Sandstone Bricks":[203,110,36],"Rocky Dirt":[142,100,78],"Autumn Maple Leaves":[204,120,31],"Autumn Maple Leaves|TreeCanopy":[204,120,31],"Fallen Maple Leaves":[204,120,31],"Maple Slab":[156,120,74],"Pine Slab":[97,67,39],"Plum Slab":[149,75,38],"Cedar Slab":[61,37,18],"Aspen Slab":[174,150,107],"Jungle Slab":[143,99,71],"Palm Slab":[196,139,66],"Dirt Slab":[129,88,70],"Grass Slab":[103,161,77],"Messy Stone Slab":[128,124,124],"Stone Slab":[146,142,142],"Smooth Stone Slab":[146,142,142],"Engraved Stone Slab":[146,142,142],"Stone Bricks Slab":[113,109,109],"Mossy Stone Slab":[128,124,124],"Mossy Stone Bricks Slab":[113,109,109],"Andesite Slab":[128,132,137],"Smooth Andesite Slab":[128,132,137],"Engraved Andesite Slab":[128,132,137],"Andesite Bricks Slab":[105,109,115],"Diorite Slab":[246,245,240],"Smooth Diorite Slab":[202,197,192],"Engraved Diorite Slab":[202,197,192],"Diorite Bricks Slab":[202,197,192],"Granite Slab":[159,107,88],"Smooth Granite Slab":[159,107,88],"Engraved Granite Slab":[159,107,88],"Granite Bricks Slab":[128,80,65],"Sandstone Slab":[217,201,158],"Engraved Sandstone Slab":[230,222,177],"Marked Sandstone Slab":[230,222,177],"Sandstone Bricks Slab":[211,190,147],"Red Sandstone Slab":[192,92,30],"Smooth Red Sandstone Slab":[203,110,36],"Engraved Red Sandstone Slab":[203,110,36],"Marked Red Sandstone Slab":[203,110,36],"Red Sandstone Bricks Slab":[186,89,29],"Bricks Slab":[162,134,125],"Ice Bricks Slab":[230,235,235],"Plum Block":[143,16,143],"Coconut Block":[117,88,39],"Pear Log":[97,97,97],"Pear Wood Planks":[141,110,99],"Pear Leaves":[242,248,234],"Pear Log|TreeBase|Pear":[97,97,97],"Pear Leaves|TreeCanopy":[242,248,234],"Pear Slab":[109,76,65],"Pear Block":[248,215,72],"Compressed Messy Stone":[117,117,117],"Extra Compressed Messy Stone":[107,107,107],"Super Compressed Messy Stone":[87,87,87],"Hyper Compressed Messy Stone":[77,77,77],"Ultra Compressed Messy Stone":[68,68,68],"Mega Compressed Messy Stone":[62,62,62],"Brown Mushroom Block":[193,151,119],"Red Mushroom Block":[226,61,48],"Mushroom Stem":[211,206,196],"Fireball Block":[236,63,49],"Iceball Block":[49,123,235],Pumpkin:[196,104,19],"Carved Pumpkin":[196,104,19],Melon:[245,220,0],"Iron Watermelon":[214,209,202],"Patterned Black Glass":[0,0,0],"Patterned Blue Glass":[32,59,118],"Patterned Brown Glass":[124,82,51],"Patterned Cyan Glass":[98,179,193],"Patterned Gray Glass":[86,90,93],"Patterned Light Gray Glass":[190,194,198],"Patterned Green Glass":[105,125,62],"Patterned Light Blue Glass":[135,187,242],"Patterned Lime Glass":[125,199,55],"Patterned Magenta Glass":[193,73,183],"Patterned Orange Glass":[242,151,82],"Patterned Pink Glass":[238,116,161],"Patterned Purple Glass":[126,63,177],"Patterned Red Glass":[143,33,33],"Patterned White Glass":[255,255,255],"Patterned Yellow Glass":[248,214,135],Bookshelf:[175,143,85],"Empty Bookshelf":[175,143,85],Mailbox:[100,63,45],"Tribe Protector":[146,142,142],"Faction Protector":[217,87,99],"Barkless Palm Log":[196,139,66],"Barkless Pear Log":[109,76,65],"Barkless Palm Log|TreeBase|Palm":[196,139,66],"Barkless Pear Log|TreeBase|Pear":[109,76,65],"Mystery Block":[238,202,78],Rocket:[52,81,51],"Super Rocket":[80,58,32],Grenade:[61,49,97],"Cherry Log":[54,34,46],"Barkless Cherry Log":[218,170,170],"Barkless Cherry Log|TreeBase|Cherry":[218,170,170],"Cherry Wood Planks":[233,192,187],"Cherry Leaves":[249,194,225],"Fallen Cherry Leaves":[249,194,225],"Cherry Log|TreeBase|Cherry":[54,34,46],"Cherry Leaves|TreeCanopy":[249,194,225],"Cherry Slab":[218,170,170],"Cherry Block":[228,54,139],"Bouncy Bomb Block":[183,45,183],"Obby Rocket":[52,81,51],"Corn Block":[236,207,17],"Melting Ice|Breaking":[64,137,254],"Yellow Paintball Explosive":[242,176,21],"White Paintball Explosive":[208,214,215],"Red Paintball Explosive":[143,33,33],"Purple Paintball Explosive":[101,32,157],"Pink Paintball Explosive":[214,101,143],"Orange Paintball Explosive":[225,97,0],"Magenta Paintball Explosive":[169,48,159],"Lime Paintball Explosive":[95,170,25],"Light Gray Paintball Explosive":[125,125,115],"Light Blue Paintball Explosive":[37,138,200],"Green Paintball Explosive":[73,91,36],"Gray Paintball Explosive":[55,58,62],"Cyan Paintball Explosive":[21,119,135],"Brown Paintball Explosive":[97,60,32],"Blue Paintball Explosive":[45,47,144],"Black Paintball Explosive":[9,11,16],"Yellow Quick Paintball Explosive":[255,211,64],"White Quick Paintball Explosive":[250,250,250],"Red Quick Paintball Explosive":[176,44,37],"Purple Quick Paintball Explosive":[136,45,183],"Pink Quick Paintball Explosive":[254,155,188],"Orange Quick Paintball Explosive":[252,133,33],"Magenta Quick Paintball Explosive":[203,74,189],"Lime Quick Paintball Explosive":[134,202,29],"Light Gray Quick Paintball Explosive":[154,154,149],"Light Blue Quick Paintball Explosive":[59,194,230],"Green Quick Paintball Explosive":[95,119,32],"Gray Quick Paintball Explosive":[73,79,83],"Cyan Quick Paintball Explosive":[25,153,154],"Brown Quick Paintball Explosive":[125,81,44],"Blue Quick Paintball Explosive":[58,68,166],"Black Quick Paintball Explosive":[29,31,36],"Yellow Seeking Paintball Explosive":[242,176,21],"White Seeking Paintball Explosive":[208,214,215],"Red Seeking Paintball Explosive":[143,33,33],"Purple Seeking Paintball Explosive":[101,32,157],"Pink Seeking Paintball Explosive":[214,101,143],"Orange Seeking Paintball Explosive":[225,97,0],"Magenta Seeking Paintball Explosive":[169,48,159],"Lime Seeking Paintball Explosive":[95,170,25],"Light Gray Seeking Paintball Explosive":[125,125,115],"Light Blue Seeking Paintball Explosive":[37,138,200],"Green Seeking Paintball Explosive":[73,91,36],"Gray Seeking Paintball Explosive":[55,58,62],"Cyan Seeking Paintball Explosive":[21,119,135],"Brown Seeking Paintball Explosive":[97,60,32],"Blue Seeking Paintball Explosive":[45,47,144],"Black Seeking Paintball Explosive":[9,11,16],"Yellow Sticky Paintball Explosive":[242,176,21],"White Sticky Paintball Explosive":[208,214,215],"Red Sticky Paintball Explosive":[143,33,33],"Purple Sticky Paintball Explosive":[101,32,157],"Pink Sticky Paintball Explosive":[214,101,143],"Orange Sticky Paintball Explosive":[225,97,0],"Magenta Sticky Paintball Explosive":[169,48,159],"Lime Sticky Paintball Explosive":[95,170,25],"Light Gray Sticky Paintball Explosive":[125,125,115],"Light Blue Sticky Paintball Explosive":[37,138,200],"Green Sticky Paintball Explosive":[73,91,36],"Gray Sticky Paintball Explosive":[55,58,62],"Cyan Sticky Paintball Explosive":[21,119,135],"Brown Sticky Paintball Explosive":[97,60,32],"Blue Sticky Paintball Explosive":[45,47,144],"Black Sticky Paintball Explosive":[9,11,16],"Chili Pepper Block":[216,0,7],"Code Block":[227,158,100],"Toxin Ball Block":[8,94,53],"Spawn Block (Yellow)":[255,211,64],"Spawn Block (White)":[250,250,250],"Spawn Block (Red)":[176,44,37],"Spawn Block (Purple)":[136,45,183],"Spawn Block (Pink)":[254,155,188],"Spawn Block (Orange)":[252,133,33],"Spawn Block (Magenta)":[203,74,189],"Spawn Block (Lime)":[134,202,29],"Spawn Block (Light Gray)":[154,154,149],"Spawn Block (Light Blue)":[59,194,230],"Spawn Block (Green)":[95,119,32],"Spawn Block (Gray)":[73,79,83],"Spawn Block (Cyan)":[25,153,154],"Spawn Block (Brown)":[125,81,44],"Spawn Block (Blue)":[58,68,166],"Spawn Block (Black)":[29,31,36],"Checkpoint Block":[62,230,27],"Custom Lobby Block":[0,0,0],"Generator Spawn Block (Red)":[176,44,37],"Generator Spawn Block (Blue)":[58,68,166],"Generator Spawn Block (Lime)":[134,202,29],"Generator Spawn Block (Yellow)":[255,211,64],"Generator Spawn Block (Cyan)":[25,153,154],"Generator Spawn Block (White)":[250,250,250],"Generator Spawn Block (Pink)":[254,155,188],"Generator Spawn Block (Gray)":[73,79,83],"Trader Shop Spawn Block":[45,45,45],"Wizard Shop Spawn Block":[42,122,194],"Generator Spawn Block (Diamond)":[37,171,193],"Generator Spawn Block (Moonstone)":[152,173,217],"Generator Spawn Block (Ore)":[146,142,142],"Finish Block":[255,255,255],"Drop Location Block":[51,51,109],"Obby Death Block":[172,50,50],"Obby Absorb Block":[75,75,75],"Obby Absorb Death Block":[75,47,171],"Bone Block":[224,228,223],"Pig Spawner Block":[60,83,101],"Cow Spawner Block":[60,83,101],"Sheep Spawner Block":[60,83,101],"Cave Golem Spawner Block":[60,83,101],"Draugr Zombie Spawner Block":[60,83,101],"Draugr Skeleton Spawner Block":[60,83,101],"Empty Spawner Block":[60,83,101],"Frost Golem Spawner Block":[60,83,101],"Frost Zombie Spawner Block":[60,83,101],"Frost Skeleton Spawner Block":[60,83,101],"Snowy Messy Stone":[146,142,142],"Snowy Stone Slab":[128,124,124],"Draugr Knight Spawner Block":[60,83,101],"Packed Snow":[188,219,219],"Carved Messy Stone":[146,142,142],"Spectral Log":[29,123,107],"Barkless Spectral Log":[43,132,128],"Barkless Spectral Log|TreeBase|Spectral":[43,132,128],"Spectral Wood Planks":[54,157,145],"Spectral Leaves":[22,136,139],"Spectral Log|TreeBase|Spectral":[29,123,107],"Spectral Leaves|TreeCanopy":[22,136,139],"Spectral Slab":[43,132,128],"Pine Grass Block":[89,151,104],"Pine Grass Slab":[89,151,104],"Pine Cone Block":[133,88,38],"Wolf Spawner Block":[60,83,101],"Bear Spawner Block":[60,83,101],"Deer Spawner Block":[60,83,101],"Stag Spawner Block":[60,83,101],"Gold Watermelon Stag Spawner Block":[60,83,101],Chalk:[249,251,251],"Yellow Chalk":[252,244,180],"White Chalk":[225,247,248],"Red Chalk":[242,133,135],"Purple Chalk":[192,155,200],"Pink Chalk":[247,173,198],"Orange Chalk":[242,160,133],"Magenta Chalk":[230,163,224],"Lime Chalk":[172,210,149],"Light Gray Chalk":[182,206,204],"Light Blue Chalk":[160,196,231],"Green Chalk":[158,179,147],"Gray Chalk":[111,128,138],"Cyan Chalk":[172,219,210],"Brown Chalk":[182,164,151],"Blue Chalk":[131,167,222],"Black Chalk":[43,57,67],"Yellow Chalk Bricks":[252,244,180],"White Chalk Bricks":[225,247,248],"Red Chalk Bricks":[242,133,135],"Purple Chalk Bricks":[192,155,200],"Pink Chalk Bricks":[247,173,198],"Orange Chalk Bricks":[242,160,133],"Magenta Chalk Bricks":[230,163,224],"Lime Chalk Bricks":[172,210,149],"Light Gray Chalk Bricks":[182,206,204],"Light Blue Chalk Bricks":[160,196,231],"Green Chalk Bricks":[158,179,147],"Gray Chalk Bricks":[111,128,138],"Cyan Chalk Bricks":[172,219,210],"Brown Chalk Bricks":[182,164,151],"Blue Chalk Bricks":[131,167,222],"Black Chalk Bricks":[43,57,67],"Yellow Chalk Slab":[252,244,180],"White Chalk Slab":[225,247,248],"Red Chalk Slab":[242,133,135],"Purple Chalk Slab":[192,155,200],"Pink Chalk Slab":[247,173,198],"Orange Chalk Slab":[242,160,133],"Magenta Chalk Slab":[230,163,224],"Lime Chalk Slab":[172,210,149],"Light Gray Chalk Slab":[182,206,204],"Light Blue Chalk Slab":[160,196,231],"Green Chalk Slab":[158,179,147],"Gray Chalk Slab":[111,128,138],"Cyan Chalk Slab":[172,219,210],"Brown Chalk Slab":[182,164,151],"Blue Chalk Slab":[131,167,222],"Black Chalk Slab":[43,57,67],"Yellow Chalk Bricks Slab":[227,214,113],"White Chalk Bricks Slab":[178,212,214],"Red Chalk Bricks Slab":[233,84,86],"Purple Chalk Bricks Slab":[160,112,170],"Pink Chalk Bricks Slab":[236,125,163],"Orange Chalk Bricks Slab":[233,119,82],"Magenta Chalk Bricks Slab":[212,114,204],"Lime Chalk Bricks Slab":[137,190,106],"Light Gray Chalk Bricks Slab":[145,168,166],"Light Blue Chalk Bricks Slab":[109,164,218],"Green Chalk Bricks Slab":[121,151,106],"Gray Chalk Bricks Slab":[83,97,106],"Cyan Chalk Bricks Slab":[116,201,184],"Brown Chalk Bricks Slab":[154,124,102],"Blue Chalk Bricks Slab":[79,129,206],"Black Chalk Bricks Slab":[26,37,44],"Jungle Grass Block":[15,146,8],"Jungle Grass Slab":[15,146,8],"Mango Log":[81,73,71],"Barkless Mango Log":[197,183,95],"Barkless Mango Log|TreeBase|Mango":[197,183,95],"Mango Wood Planks":[210,196,113],"Mango Leaves":[34,109,53],"Mango Log|TreeBase|Mango":[81,73,71],"Mango Leaves|TreeCanopy":[34,109,53],"Mango Slab":[197,183,95],"Mango Block":[250,126,4],"Banana Block":[234,217,113],"Fruity Maple Leaves":[56,105,31],"Pine Cone Leaves":[19,36,9],"Fruity Plum Leaves":[58,112,50],"Fruity Palm Leaves":[88,174,62],"Fruity Pear Leaves":[242,248,234],"Fruity Cherry Leaves":[249,194,225],"Fruity Mango Leaves":[29,98,46],"Leather Block":[129,95,72],"Autumn Aspen Leaves":[252,215,11],"Autumn Aspen Leaves|TreeCanopy":[252,215,11],"Iron Chest":[228,224,218],Crate:[183,151,93],"Carrot Block":[200,101,13],"Potato Block":[175,132,68],"Beetroot Block":[110,36,52],Water:[66,105,245],Lava:[227,105,54]},T=new Map;function A(e){if(!Number.isFinite(e))return null;if(T.has(e))return T.get(e);let a=null;try{const o=n?.Props?.blocksClient;if(o){const n=o[e]??o[String(e)];"string"==typeof n?.name&&(a=n.name)}}catch{}return T.set(e,a),a}function R(e){if(0===e)return"#00000000";const n=A(e);if(!n)return"#BEBEBE";const a=n.split("|")[0],o=F[a];return!o||o.length<3?"#BEBEBE":"#"+o.map(e=>{const n=e.toString(16);return 1===n.length?"0"+n:n}).join("")}function O(e,n){const a=parseInt(e.slice(1),16),o=n<0?0:255,t=n<0?-1*n:n,l=a>>16,r=a>>8&255,i=255&a;return"#"+(16777216+65536*(Math.round(t/100*(o-l))+l)+256*(Math.round(t/100*(o-r))+r)+(Math.round(t/100*(o-i))+i)).toString(16).slice(1)}const W=180,I=2.8125;function _(e){for(const n of Object.keys(e)){const a=e[n];if(a&&"object"==typeof a&&Array.isArray(a.stride)&&3===a.stride.length&&(Array.isArray(a.data)||ArrayBuffer.isView(a.data)))return n}return null}function N(e,n,a,o,t){switch(e.save(),n){case"pickaxe":!function(e,n,a,o){const t=.8*o;e.beginPath(),e.moveTo(n-t,a-.5*t),e.lineTo(n-.3*t,a),e.lineTo(n-.3*t,a+.3*t),e.lineTo(n+.3*t,a+.3*t),e.lineTo(n+.3*t,a),e.lineTo(n+t,a-.5*t),e.lineTo(n+.7*t,a+.2*t),e.lineTo(n+.3*t,a+.5*t),e.lineTo(n+.3*t,a+t),e.lineTo(n-.3*t,a+t),e.lineTo(n-.3*t,a+.5*t),e.lineTo(n-.7*t,a+.2*t),e.closePath(),e.fill(),e.stroke()}(e,a,o,t);break;case"sword":!function(e,n,a,o){const t=.8*o;e.beginPath(),e.moveTo(n,a-t),e.lineTo(n+.3*t,a+.3*t),e.lineTo(n+.15*t,a+.3*t),e.lineTo(n+.15*t,a+.6*t),e.lineTo(n+.4*t,a+.8*t),e.lineTo(n+.4*t,a+t),e.lineTo(n,a+.85*t),e.lineTo(n-.4*t,a+t),e.lineTo(n-.4*t,a+.8*t),e.lineTo(n-.15*t,a+.6*t),e.lineTo(n-.15*t,a+.3*t),e.lineTo(n-.3*t,a+.3*t),e.closePath(),e.fill(),e.stroke()}(e,a,o,t);break;case"house":!function(e,n,a,o){const t=.8*o;e.beginPath(),e.moveTo(n,a-t),e.lineTo(n+t,a),e.lineTo(n+.7*t,a),e.lineTo(n+.7*t,a+t),e.lineTo(n-.7*t,a+t),e.lineTo(n-.7*t,a),e.lineTo(n-t,a),e.closePath(),e.fill(),e.stroke(),e.fillStyle="#000",e.fillRect(n-.25*t,a+.3*t,.5*t,.7*t)}(e,a,o,t);break;case"star":!function(e,n,a,o){const t=o,l=.4*o;e.beginPath();for(let o=0;o<10;o++){const r=o%2==0?t:l,i=Math.PI/5*o-Math.PI/2,s=n+Math.cos(i)*r,c=a+Math.sin(i)*r;0===o?e.moveTo(s,c):e.lineTo(s,c)}e.closePath(),e.fill(),e.stroke()}(e,a,o,t);break;case"pin":!function(e,n,a,o){const t=o;e.beginPath(),e.arc(n,a-.3*t,.5*t,0,2*Math.PI),e.fill(),e.stroke(),e.beginPath(),e.moveTo(n,a+.2*t),e.lineTo(n-.3*t,a+t),e.lineTo(n+.3*t,a+t),e.closePath(),e.fill(),e.stroke()}(e,a,o,t);break;default:!function(e,n,a,o){e.beginPath(),e.moveTo(n,a-o),e.lineTo(n+o,a),e.lineTo(n,a+o),e.lineTo(n-o,a),e.closePath(),e.fill(),e.stroke()}(e,a,o,t)}e.restore()}function Y(e,n,a,o,t,l,r){const i=n.x-a[0],s=n.z-a[2],c=(Math.sqrt(i*i+s*s),r?32:u);if(Math.abs(i)<=c&&Math.abs(s)<=c){const a=o+i*l,c=t-s*l;e.fillStyle=n.color,e.strokeStyle="#fff",e.lineWidth=r?1:2;const d=r?4:8;N(e,n.icon,a,c,d),r||(e.font="bold 12px 'Courier New', monospace",e.textAlign="center",e.strokeStyle="#000",e.lineWidth=3,e.strokeText(n.name,a,c+20),e.fillStyle="#fff",e.fillText(n.name,a,c+20))}else{const a=Math.atan2(s,i),l=r?85:e.canvas.width/2-15,c=o+Math.cos(a)*l,d=t-Math.sin(a)*l;if(e.save(),e.translate(c,d),e.rotate(-a),e.fillStyle=n.color,e.strokeStyle="#fff",e.lineWidth=r?1:3,r?(e.beginPath(),e.moveTo(0,0),e.lineTo(-6,-4),e.lineTo(-6,4),e.closePath()):(e.beginPath(),e.moveTo(0,0),e.lineTo(-12,-8),e.lineTo(-12,8),e.closePath()),e.fill(),e.stroke(),e.restore(),r){e.fillStyle="#fff",e.font="bold 10px 'Courier New', monospace",e.textAlign="center",e.textBaseline="middle";const r=l-12,i=o+Math.cos(a)*r,s=t-Math.sin(a)*r;e.fillText(n.name.charAt(0).toUpperCase(),i,s)}else{e.font="bold 11px 'Courier New', monospace",e.textAlign="center",e.textBaseline="middle";const r=l-20,i=o+Math.cos(a)*r,s=t-Math.sin(a)*r;e.strokeStyle="#000",e.lineWidth=3,e.strokeText(n.name,i,s),e.fillStyle="#fff",e.fillText(n.name,i,s)}}}function z(){if(!e||!a)return;const o=D.getPosition(1);if(!o)return;if(x){const e=Math.abs(o[0]-x[0]),n=Math.abs(o[1]-x[1]),a=Math.abs(o[2]-x[2]);if(e<.5&&n<.5&&a<.5){if(!b)return void(P=!1)}else P=!0}if(x=[...o],function(){if(!e||!n.world?.[n.impKey]?.hash)return;const a=D.getPosition(1);if(!a)return;const o=Date.now();if(o-s>1e3){s=o;const e=Math.floor(a[0]),n=Math.floor(a[2]);let t=!1;for(let o=Math.floor(a[1])+2;o<256;o++){const a=D.getBlockID(e,o,n);if(0!==a){const e=A(a);if(e&&!e.toLowerCase().includes("leave")){t=!0;break}}}i=t}}(),t&&!l&&P){l=!0;const e=n.world[n.impKey].hash;let a=null;for(const n in e){const o=e[n];if(o&&(a=_(o),a))break}const r={};let s=!1;if(a)for(const n in e){const o=e[n];if(o[a]){const e=o[a].data,t=e.length>0?e[0]+e[Math.floor(e.length/2)]+e[e.length-1]:0,l=`${n}_${e.length}_${t}`;C.has(l)||(s=!0,C.add(l)),r[n]={data:e,stride:o[a].stride,pos:o.pos}}}s||P?t.postMessage({chunkHash:r,myPos:o,MINIMAP_RANGE:u,isUnderground:i,scanRangeDown:g,scanRangeUp:h}):l=!1}const c=a.getContext("2d");if(c.fillStyle=i?"rgba(50, 45, 60, 0.7)":"rgba(26, 29, 33, 0.7)",c.fillRect(0,0,W,W),r.length>0)for(const e of r){let n;const a=e.worldX-o[0],t=e.worldZ-o[2],l=Math.sqrt(a*a+t*t);n=m&&l>22.4?R(e.blockId):O(R(e.blockId),e.brightness),c.fillStyle=n,c.fillRect(90+a*I,90-t*I,3.8125,3.8125)}if(d.forEach(e=>{Y(c,e,o,90,90,I,!0)}),B){c.fillStyle="#FF4500",c.strokeStyle="#1a1d21",c.lineWidth=1;const e=D.playerList;for(const n of e){if(1===n)continue;const e=D.getPosition(n);if(!e)continue;const a=e[0]-o[0],t=e[2]-o[2];if(Math.abs(a)<=32&&Math.abs(t)<=32){const e=90+a*I-2.5,n=90-t*I-2.5;c.fillRect(e,n,5,5),c.strokeRect(e,n,5,5)}}}if(y){c.fillStyle="#00FF00",c.strokeStyle="#1a1d21",c.lineWidth=1;const e=n.noa?.bloxd?.getMobIds?.();if(e)for(const n of e){const e=D.getPosition(n);if(!e)continue;const a=e[0]-o[0],t=e[2]-o[2];if(Math.abs(a)<=32&&Math.abs(t)<=32){const e=90+a*I-3,n=90-t*I-3;c.fillRect(e,n,6,6),c.strokeRect(e,n,6,6)}}}const p=n.camera?.heading||0;c.save(),c.translate(90,90),c.rotate(p),c.beginPath(),c.moveTo(0,-5),c.lineTo(4,5),c.lineTo(-4,5),c.closePath(),c.fillStyle="#FFFFFF",c.fill(),c.strokeStyle="#1a1d21",c.lineWidth=1.5,c.stroke(),c.restore()}function $(){const e=window.location.pathname;if(e.startsWith("/play/")){const n=e.split("/");if(n.length>=4)return decodeURIComponent(n[3])}const n=new URLSearchParams(window.location.search);return n.has("lobby")?decodeURIComponent(n.get("lobby")):null}function X(){const e=`bloxd_minimap_landmarks_${$()}`;localStorage.setItem(e,JSON.stringify(d))}function J(){const e=`bloxd_minimap_landmarks_${$()}`,n=localStorage.getItem(e);if(n)try{d=JSON.parse(n)}catch(e){d=[]}else d=[]}function U(e,n,a,o,t,l="diamond"){const r={id:Date.now(),name:e||"Unnamed",x:parseInt(n),y:parseInt(a),z:parseInt(o),color:t||"#FFD700",icon:l||"diamond"};return d.push(r),X(),j(),r}function j(){const e=document.getElementById("landmark-list");e&&(e.innerHTML="",d.forEach(n=>{const a=document.createElement("div");a.className="landmark-item",a.innerHTML=`\n                <div class="landmark-color" style="background: ${n.color}"></div>\n                <div class="landmark-info">\n                    <div class="landmark-name">${n.name}</div>\n                    <div class="landmark-coords">${n.x}, ${n.y}, ${n.z}</div>\n                </div>\n                <button class="landmark-delete" data-id="${n.id}">X</button>\n            `,a.querySelector(".landmark-delete").addEventListener("click",()=>{return e=n.id,d=d.filter(n=>n.id!==e),X(),void j();var e}),e.appendChild(a)}))}function Z(){c?function(){c=!1,p&&(p.remove(),p=null);k=null}():function(){c=!0,p=document.createElement("div"),p.id="bloxd-expanded-map",p.style.cssText="\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100vw;\n            height: 100vh;\n            background: rgba(0, 0, 0, 0.95);\n            z-index: 999999;\n            display: flex;\n            font-family: 'Courier New', monospace;\n            image-rendering: pixelated;\n            image-rendering: crisp-edges;\n        ",k=document.createElement("div"),k.id="eye-of-god-menu",k.style.cssText="\n            width: 320px;\n            height: 100%;\n            background: #1a1a2e;\n            border-right: 4px solid #4a4a6a;\n            padding: 20px;\n            box-sizing: border-box;\n            overflow-y: auto;\n            color: #fff;\n        ";const e="\n            font-family: 'Courier New', 'Lucida Console', monospace;\n            image-rendering: pixelated;\n            letter-spacing: 1px;\n        ";k.innerHTML=`\n            <h1 style="\n                font-size: 32px;\n                text-align: center;\n                margin-bottom: 20px;\n                text-shadow: 4px 4px 0 #4a4a6a;\n                font-family: 'Courier New', 'Lucida Console', monospace;\n                font-weight: 900;\n                letter-spacing: 2px;\n                image-rendering: pixelated;\n            "><span style="color: #FFD700;">Exp</span><span style="color: #00BFFF;">Map</span></h1>\n\n            <div class="menu-section" style="margin-bottom: 25px;">\n                <h3 style="color: #4ecdc4; margin-bottom: 15px; ${e}">➕ ADD LANDMARK</h3>\n\n                <div style="margin-bottom: 10px;">\n                    <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Name:</label>\n                    <input type="text" id="landmark-name" placeholder="Base, Home, etc..." style="\n                        width: 100%;\n                        padding: 8px;\n                        background: #0f0f1a;\n                        border: 2px solid #4a4a6a;\n                        color: #fff;\n                        font-size: 14px;\n                        ${e}\n                        box-sizing: border-box;\n                    ">\n                </div>\n\n<div class="menu-section" style="margin-bottom: 25px;">\n    <h3 style="color: #4ecdc4; margin-bottom: 15px;">🔭 MAP RANGE</h3>\n\n    <div style="margin-bottom: 15px;">\n        <label style="display: block; color: #aaa; margin-bottom: 5px;">View Range: <span id="expanded-range-val">64</span> blocks</label>\n        <input type="range" id="expanded-range" min="16" max="128" value="64" style="width: 55%;">\n        <input type="number" id="expanded-range-num" min="16" max="128" value="64" style="width: 40%; padding: 5px;">\n    </div>\n</div>\n\n<div class="menu-section" style="margin-bottom: 25px;">\n    <h3 style="color: #4ecdc4; margin-bottom: 15px;">📊 VERTICAL SCAN RANGE</h3>\n\n    <div style="margin-bottom: 10px;">\n        <label style="display: block; color: #aaa; margin-bottom: 5px;">Scan Down (blocks):</label>\n        <input type="number" id="scan-range-down" value="30" min="10" max="100" style="width: 100%; padding: 8px; background: #0f0f1a; border: 2px solid #4a4a6a; color: #fff; font-size: 14px; box-sizing: border-box;">\n    </div>\n\n    <div style="margin-bottom: 10px;">\n        <label style="display: block; color: #aaa; margin-bottom: 5px;">Scan Up (blocks):</label>\n        <input type="number" id="scan-range-up" value="40" min="10" max="100" style="width: 100%; padding: 8px; background: #0f0f1a; border: 2px solid #4a4a6a; color: #fff; font-size: 14px; box-sizing: border-box;">\n    </div>\n</div>\n\n                <div style="margin-bottom: 10px;">\n                    <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Icon:</label>\n                    <select id="landmark-icon" style="\n                        width: 100%;\n                        padding: 8px;\n                        background: #0f0f1a;\n                        border: 2px solid #4a4a6a;\n                        color: #fff;\n                        font-size: 14px;\n                        ${e}\n                        box-sizing: border-box;\n                        cursor: pointer;\n                    ">\n                        <option value="diamond">💎 Diamond</option>\n                        <option value="house">🏠 House</option>\n                        <option value="star">⭐ Star</option>\n                        <option value="pin">📍 Pin</option>\n                    </select>\n                </div>\n\n                <div style="margin-bottom: 10px;">\n                    <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Color:</label>\n                    <input type="color" id="landmark-color" value="#FFD700" style="\n                        width: 100%;\n                        height: 40px;\n                        background: #0f0f1a;\n                        border: 2px solid #4a4a6a;\n                        cursor: pointer;\n                    ">\n                </div>\n\n                <div style="margin-bottom: 10px;">\n                    <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Coordinates (X Y Z):</label>\n                    <div style="display: flex; gap: 5px;">\n                        <input type="number" id="landmark-x" placeholder="X" style="\n                            width: 30%;\n                            padding: 8px;\n                            background: #0f0f1a;\n                            border: 2px solid #4a4a6a;\n                            color: #fff;\n                            font-size: 14px;\n                            ${e}\n                            box-sizing: border-box;\n                        ">\n                        <input type="number" id="landmark-y" placeholder="Y" style="\n                            width: 30%;\n                            padding: 8px;\n                            background: #0f0f1a;\n                            border: 2px solid #4a4a6a;\n                            color: #fff;\n                            font-size: 14px;\n                            ${e}\n                            box-sizing: border-box;\n                        ">\n                        <input type="number" id="landmark-z" placeholder="Z" style="\n                            width: 30%;\n                            padding: 8px;\n                            background: #0f0f1a;\n                            border: 2px solid #4a4a6a;\n                            color: #fff;\n                            font-size: 14px;\n                            ${e}\n                            box-sizing: border-box;\n                        ">\n                    </div>\n                </div>\n\n                <button id="add-landmark-btn" style="\n                    width: 100%;\n                    padding: 12px;\n                    background: #4ecdc4;\n                    border: none;\n                    color: #000;\n                    font-size: 16px;\n                    font-weight: bold;\n                    cursor: pointer;\n                    ${e}\n                    margin-bottom: 10px;\n                    box-shadow: 4px 4px 0 #2a9d8f;\n                    transition: transform 0.1s;\n                " onmousedown="this.style.transform='translate(2px, 2px)'" onmouseup="this.style.transform='translate(0, 0)'">📍 ADD LANDMARK</button>\n\n                <button id="add-current-pos-btn" style="\n                    width: 100%;\n                    padding: 12px;\n                    background: #ff6b6b;\n                    border: none;\n                    color: #fff;\n                    font-size: 16px;\n                    font-weight: bold;\n                    cursor: pointer;\n                    ${e}\n                    box-shadow: 4px 4px 0 #c92a2a;\n                    transition: transform 0.1s;\n                    margin-bottom: 10px;\n                " onmousedown="this.style.transform='translate(2px, 2px)'" onmouseup="this.style.transform='translate(0, 0)'">📌 AT MY POSITION</button>\n\n                <button id="find-ruin-btn" style="\n                    width: 100%;\n                    padding: 12px;\n                    background: #9b59b6;\n                    border: none;\n                    color: #fff;\n                    font-size: 16px;\n                    font-weight: bold;\n                    cursor: pointer;\n                    ${e}\n                    box-shadow: 4px 4px 0 #8e44ad;\n                    transition: transform 0.1s;\n                " onmousedown="this.style.transform='translate(2px, 2px)'" onmouseup="this.style.transform='translate(0, 0)'">🏛️ FIND NEAREST RUIN</button>\n            </div>\n\n            <div class="menu-section" style="margin-bottom: 25px;">\n                <h3 style="color: #4ecdc4; margin-bottom: 15px; ${e}">⚡ PERFORMANCE OPTIONS</h3>\n\n                <div style="margin-bottom: 12px;">\n                    <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Render Speed:</label>\n                    <select id="render-interval-mode" style="\n                        width: 100%;\n                        padding: 8px;\n                        background: #0f0f1a;\n                        border: 2px solid #4a4a6a;\n                        color: #fff;\n                        font-size: 14px;\n                        ${e}\n                        box-sizing: border-box;\n                        cursor: pointer;\n                    ">\n                        <option value="high">High (100ms - 10fps)</option>\n                        <option value="medium">Medium (250ms - 4fps)</option>\n                        <option value="slow">Slow (500ms - 2fps)</option>\n                        <option value="manual">Manual (on movement only)</option>\n                    </select>\n                </div>\n\n                <div style="margin-bottom: 12px; display: flex; align-items: center; gap: 10px;">\n                    <input type="checkbox" id="show-players-checkbox" checked style="width: 18px; height: 18px; cursor: pointer;">\n                    <label for="show-players-checkbox" style="color: #aaa; font-size: 13px; cursor: pointer; ${e}">\n                        Show other players\n                    </label>\n                </div>\n\n                <div style="margin-bottom: 12px; display: flex; align-items: center; gap: 10px;">\n                    <input type="checkbox" id="show-mobs-checkbox" style="width: 18px; height: 18px; cursor: pointer;">\n                    <label for="show-mobs-checkbox" style="color: #aaa; font-size: 13px; cursor: pointer; ${e}">\n                        Show mobs (green)\n                    </label>\n                </div>\n\n                <div style="margin-bottom: 12px; display: flex; align-items: center; gap: 10px;">\n                    <input type="checkbox" id="auto-refresh-checkbox" checked style="width: 18px; height: 18px; cursor: pointer;">\n                    <label for="auto-refresh-checkbox" style="color: #aaa; font-size: 13px; cursor: pointer; ${e}">\n                        Auto-refresh when stationary\n                    </label>\n                </div>\n\n                <div style="display: flex; align-items: center; gap: 10px;">\n                    <input type="checkbox" id="distance-detail-checkbox" style="width: 18px; height: 18px; cursor: pointer;">\n                    <label for="distance-detail-checkbox" style="color: #aaa; font-size: 13px; cursor: pointer; ${e}">\n                        Distance-based detail (saves FPS)\n                    </label>\n                </div>\n            </div>\n\n            <div class="menu-section">\n                <h3 style="color: #4ecdc4; margin-bottom: 15px; ${e}">📍 MY LANDMARKS</h3>\n                <div id="landmark-list" style="\n                    max-height: 300px;\n                    overflow-y: auto;\n                "></div>\n            </div>\n\n            <div style="margin-top: 30px; padding-top: 20px; border-top: 2px solid #4a4a6a;">\n                <p style="color: #666; font-size: 12px; ${e} text-align: center;">\n                    Press [M] to close\n                </p>\n                <p style="color: #00BFFF; font-size: 11px; ${e} text-align: center; margin-top: 10px;">\n                    Discord: jack_19987\n                </p>\n                <p style="color: #9b59b6; font-size: 10px; ${e} text-align: center; margin-top: 5px;">\n                    v1.5.6\n                </p>\n            </div>\n        `;const n=document.createElement("div");n.style.cssText="\n            flex: 1;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            padding: 20px;\n            position: relative;\n        ";const a=document.createElement("canvas");a.id="bloxd-expanded-canvas",a.width=window.innerHeight-40,a.height=window.innerHeight-40,a.style.cssText="\n            border: 4px solid #4a4a6a;\n            background: rgba(26, 29, 33, 0.9);\n            image-rendering: pixelated;\n        ",n.appendChild(a),p.appendChild(k),p.appendChild(n),document.body.appendChild(p),document.getElementById("add-landmark-btn").addEventListener("click",()=>{const e=document.getElementById("landmark-name").value,n=document.getElementById("landmark-x").value,a=document.getElementById("landmark-y").value,o=document.getElementById("landmark-z").value,t=document.getElementById("landmark-color").value,l=document.getElementById("landmark-icon").value;""!==n&&""!==a&&""!==o&&(U(e,n,a,o,t,l),document.getElementById("landmark-name").value="",document.getElementById("landmark-x").value="",document.getElementById("landmark-y").value="",document.getElementById("landmark-z").value="")}),document.getElementById("add-current-pos-btn").addEventListener("click",()=>{const e=D.getPosition(1);if(e){const n=document.getElementById("landmark-name").value||"My Position",a=document.getElementById("landmark-color").value,o=document.getElementById("landmark-icon").value;U(n,Math.floor(e[0]),Math.floor(e[1]),Math.floor(e[2]),a,o),document.getElementById("landmark-name").value=""}}),document.getElementById("find-ruin-btn")?.addEventListener("click",()=>{alert("Coming Soon")});const t=D.getPosition(1);t&&(document.getElementById("landmark-x").value=Math.floor(t[0]),document.getElementById("landmark-y").value=Math.floor(t[1]),document.getElementById("landmark-z").value=Math.floor(t[2]));j();const r=document.getElementById("expanded-range"),i=document.getElementById("expanded-range-num"),s=document.getElementById("expanded-range-val"),d=document.getElementById("scan-range-down"),x=document.getElementById("scan-range-up"),C=document.getElementById("auto-refresh-checkbox"),w=document.getElementById("distance-detail-checkbox"),v=document.getElementById("render-interval-mode"),M=document.getElementById("show-players-checkbox"),G=document.getElementById("show-mobs-checkbox");function E(e){const n=Math.max(16,Math.min(1e3,parseInt(e)||64));u=n,r.value=n,i.value=n,s.textContent=n,L(),l=!1}r.value=u,i.value=u,s.textContent=u,d.value=g,x.value=h,C.checked=b,w.checked=m,v.value=f,M.checked=B,G.checked=y,r.addEventListener("input",e=>E(e.target.value)),i.addEventListener("change",e=>E(e.target.value)),d.addEventListener("change",e=>{const n=parseInt(e.target.value)||30;g=Math.max(10,Math.min(100,n)),e.target.value=g,L(),l=!1}),x.addEventListener("change",e=>{const n=parseInt(e.target.value)||40;h=Math.max(10,Math.min(100,n)),e.target.value=h,L(),l=!1}),C.addEventListener("change",e=>{b=e.target.checked,L(),P=!0}),w.addEventListener("change",e=>{m=e.target.checked,L(),l=!1}),v.addEventListener("change",e=>{switch(f=e.target.value,f){case"high":case"manual":S=100;break;case"medium":S=250;break;case"slow":S=500}L(),o&&(clearInterval(o),o=setInterval(z,S))}),M.addEventListener("change",e=>{B=e.target.checked,L(),P=!0}),G.addEventListener("change",e=>{y=e.target.checked,L(),P=!0}),Q()}()}function Q(){if(!c)return;const e=document.getElementById("bloxd-expanded-canvas");if(!e)return;const a=e.getContext("2d"),o=D.getPosition(1);if(!o)return void requestAnimationFrame(Q);const t=e.width,l=t/2,s=t/(2*u);if(a.fillStyle=i?"rgba(50, 45, 60, 0.9)":"rgba(26, 29, 33, 0.9)",a.fillRect(0,0,t,t),r.length>0)for(const e of r){const n=O(R(e.blockId),e.brightness);a.fillStyle=n;const t=e.worldX-o[0],r=e.worldZ-o[2];a.fillRect(l+t*s,l-r*s,s+.5,s+.5)}d.forEach(e=>{Y(a,e,o,l,l,s,!1)}),a.fillStyle="#FF4500",a.strokeStyle="#1a1d21",a.lineWidth=2;const p=D.playerList;for(const e of p){if(1===e)continue;const n=D.getPosition(e);if(!n)continue;const t=n[0]-o[0],r=n[2]-o[2];if(Math.abs(t)<=u&&Math.abs(r)<=u){const e=l+t*s,n=l-r*s;a.fillRect(e-6,n-6,12,12),a.strokeRect(e-6,n-6,12,12)}}const k=n.camera?.heading||0;a.save(),a.translate(l,l),a.rotate(k),a.beginPath(),a.moveTo(0,-12),a.lineTo(8,10),a.lineTo(-8,10),a.closePath(),a.fillStyle="#FFFFFF",a.fill(),a.strokeStyle="#1a1d21",a.lineWidth=2,a.stroke(),a.restore(),a.strokeStyle="#4a4a6a",a.lineWidth=4,a.strokeRect(0,0,t,t),requestAnimationFrame(Q)}function K(e){"m"!==e.key&&"M"!==e.key||(e.preventDefault(),Z())}function H(){const e=document.createElement("style");e.textContent="\n            .landmark-item {\n                display: flex;\n                align-items: center;\n                padding: 8px;\n                background: #0f0f1a;\n                border: 2px solid #4a4a6a;\n                margin-bottom: 8px;\n                border-radius: 4px;\n            }\n            .landmark-color {\n                width: 20px;\n                height: 20px;\n                border-radius: 3px;\n                margin-right: 10px;\n                border: 2px solid #fff;\n            }\n            .landmark-info {\n                flex: 1;\n            }\n            .landmark-name {\n                font-weight: bold;\n                color: #fff;\n                font-size: 14px;\n            }\n            .landmark-coords {\n                color: #888;\n                font-size: 11px;\n            }\n            .landmark-delete {\n                background: #ff6b6b;\n                border: none;\n                color: #fff;\n                padding: 4px 8px;\n                cursor: pointer;\n                font-weight: bold;\n                border-radius: 3px;.\n            }\n            .landmark-delete:hover {\n                background: #c92a2a;\n            }\n        ",document.head.appendChild(e),a=document.createElement("canvas"),a.id="bloxd-minimap",a.width=W,a.height=W,a.style.cssText="\n            position: fixed;\n            top: 20px;\n            right: 20px;\n            border: 3px solid #333;\n            border-radius: 3px;\n            z-index: 999990;\n            background: rgba(26, 29, 33, 0.7);\n            cursor: pointer;\n            image-rendering: pixelated;\n        ",a.title="Click or press M to expand",a.addEventListener("click",Z),document.body.appendChild(a),document.addEventListener("keydown",K);try{const e=new Blob(['\n            self.onmessage = function(e) {\n                const { chunkHash, myPos, MINIMAP_RANGE, isUnderground, scanRangeDown, scanRangeUp } = e.data;\n                let processedData = [];\n                const surfaceMap = new Map();\n\n                if (isUnderground) {\n                    const myY = Math.floor(myPos[1]);\n                    const Y_SCAN_UP = 4;\n                    const Y_SCAN_DOWN = 10;\n\n                    for (const chunkKey in chunkHash) {\n                        const chunk = chunkHash[chunkKey];\n                        if (!chunk.data || !chunk.stride || !chunk.pos) continue;\n                        const { data, stride, pos: chunkOriginPos } = chunk;\n\n                        for (let i = 0; i < data.length; i++) {\n                            const blockID = data[i];\n                            if (blockID === 0) continue;\n\n                            const x = Math.floor(i / stride[0]);\n                            const remX = i % stride[0];\n                            const y = Math.floor(remX / stride[1]);\n                            const z = remX % stride[1];\n\n                            const worldY = chunkOriginPos[1] + y;\n\n                            if (worldY > myY + Y_SCAN_UP || worldY < myY - Y_SCAN_DOWN) {\n                                continue;\n                            }\n\n                            const worldX = chunkOriginPos[0] + x;\n                            const worldZ = chunkOriginPos[2] + z;\n\n                            if (Math.abs(worldX - myPos[0]) > MINIMAP_RANGE || Math.abs(worldZ - myPos[2]) > MINIMAP_RANGE) {\n                                continue;\n                            }\n\n                            const mapKey = worldX + "|" + worldZ;\n\n                            if (!surfaceMap.has(mapKey) || worldY > surfaceMap.get(mapKey).y) {\n                                surfaceMap.set(mapKey, { y: worldY, blockId: blockID, worldX: worldX, worldZ: worldZ });\n                            }\n                        }\n                    }\n                } else {\n                    // SURFACE MODE: Scan vertical column around player (configurable)\n                    const myY = Math.floor(myPos[1]);\n                    const Y_SCAN_UP = scanRangeUp || 40;      // Use passed value or default\n                    const Y_SCAN_DOWN = scanRangeDown || 30;  // Use passed value or default\n\n                    for (const chunkKey in chunkHash) {\n                        const chunk = chunkHash[chunkKey];\n                        if (!chunk.data || !chunk.stride || !chunk.pos) continue;\n                        const { data, stride, pos: chunkOriginPos } = chunk;\n\n                        for (let i = 0; i < data.length; i++) {\n                            const blockID = data[i];\n                            if (blockID === 0 || blockID === 150) continue;\n\n                            const x = Math.floor(i / stride[0]);\n                            const remX = i % stride[0];\n                            const y = Math.floor(remX / stride[1]);\n                            const z = remX % stride[1];\n\n                            const worldY = chunkOriginPos[1] + y;\n\n                            // Only process blocks within Y range of player\n                            if (worldY > myY + Y_SCAN_UP || worldY < myY - Y_SCAN_DOWN) {\n                                continue;\n                            }\n\n                            const worldX = chunkOriginPos[0] + x;\n                            const worldZ = chunkOriginPos[2] + z;\n\n                            if (Math.abs(worldX - myPos[0]) > MINIMAP_RANGE || Math.abs(worldZ - myPos[2]) > MINIMAP_RANGE) {\n                                continue;\n                            }\n\n                            const mapKey = worldX + "|" + worldZ;\n\n                            if (!surfaceMap.has(mapKey) || worldY > surfaceMap.get(mapKey).y) {\n                                surfaceMap.set(mapKey, { y: worldY, blockId: blockID, worldX: worldX, worldZ: worldZ });\n                            }\n                        }\n                    }\n                }\n\n                const heightLookupMap = new Map(Array.from(surfaceMap.values()).map(d => [d.worldX + "|" + d.worldZ, d.y]));\n\n                processedData = Array.from(surfaceMap.values()).map(data => {\n                    let brightnessOffset = 0;\n                    const topNeighborY = heightLookupMap.get(data.worldX + "|" + (data.worldZ + 1));\n                    const bottomNeighborY = heightLookupMap.get(data.worldX + "|" + (data.worldZ - 1));\n                    const leftNeighborY = heightLookupMap.get((data.worldX - 1) + "|" + data.worldZ);\n                    const rightNeighborY = heightLookupMap.get((data.worldX + 1) + "|" + data.worldZ);\n\n                    if (topNeighborY !== undefined && data.y < topNeighborY) {\n                        brightnessOffset = -0.25;\n                    } else if (bottomNeighborY !== undefined && data.y < bottomNeighborY) {\n                        brightnessOffset = 0.15;\n                    } else if ((leftNeighborY !== undefined && data.y < leftNeighborY) || (rightNeighborY !== undefined && data.y < rightNeighborY)) {\n                        brightnessOffset = -0.10;\n                    }\n\n                    return {\n                        blockId: data.blockId,\n                        worldX: data.worldX,\n                        worldZ: data.worldZ,\n                        brightness: brightnessOffset * 100\n                    };\n                });\n\n                self.postMessage({ surfaceData: processedData });\n            };\n        '],{type:"application/javascript"});t=new Worker(URL.createObjectURL(e)),t.onmessage=e=>{r=e.data.surfaceData,l=!1}}catch(e){console.error("Minimap worker failed:",e),t=null}}function V(){E.init();const e=Object.getOwnPropertyDescriptors(window),a=Object.keys(e).find(n=>e[n]?.set?.toString().includes("++"));if((window[a]=window[a]).push([[Math.floor(9e4*Math.random())+1e4],{},function(e){n.findModule=n=>e(Object.keys(e.m)[Object.values(e.m).findIndex(e=>e.toString().includes(n))]),n.Props=Object.values(n.findModule("nonBlocksClient:")).find(e=>"object"==typeof e),n.noa=Object.values(n.Props).find(e=>e?.entities)}]),!n.noa)return!1;let o=null;Object.defineProperty(n.noa,"playerdata",{get:function(){if(o)return o;for(const e in this)try{const n=this[e];if(n&&"object"==typeof n&&n.hasOwnProperty("crouchingSpeed")&&n.hasOwnProperty("walkingSpeed"))return o=n,o}catch{}return null},configurable:!0});const t=G.values(n.noa.entities)[2],l=Object.entries(n.noa.entities);n.impKey=l.find(([e,n])=>n===t)?.[0],n.registry=G.values(n.noa)[17],n.rendering=G.values(n.noa)[12],n.entities=n.noa.entities,n.world=G.values(n.noa)[11],n.camera=n.noa.camera,n.bloxd=n.noa.bloxd,n.physics=n.noa.physics,n.entityList=G.values(n.noa)[30];const r=G.values(n.rendering).find(e=>e?.meshes?.[0]),i=r?.meshes[0];return i&&(n.Lion={scene:r,Mesh:i.constructor,StandardMaterial:i.material.constructor,Color3:i.material.diffuseColor.constructor}),!0}function q(){const e=$();null===w?(w=e,J(),console.log("[Bloxd Minimap] Joined lobby:",w,"Landmarks loaded:",d.length)):w!==e&&(console.log("[Bloxd Minimap] Lobby changed from",w,"to",e),X(),d=[],w=e,J(),j(),console.log("[Bloxd Minimap] New lobby landmarks loaded:",d.length))}function ee(){v=setInterval(q,2e3)}function ne(){try{if(function(){try{const e=localStorage.getItem(M);if(e){const n=JSON.parse(e);if(void 0!==n.scanRangeDown&&(g=n.scanRangeDown),void 0!==n.scanRangeUp&&(h=n.scanRangeUp),void 0!==n.expandedMapRange&&(u=n.expandedMapRange),void 0!==n.autoRefreshWhenStationary&&(b=n.autoRefreshWhenStationary),void 0!==n.distanceBasedDetail&&(m=n.distanceBasedDetail),void 0!==n.showOtherPlayers&&(B=n.showOtherPlayers),void 0!==n.showMobs&&(y=n.showMobs),void 0!==n.renderIntervalMode)switch(f=n.renderIntervalMode,f){case"high":case"manual":S=100;break;case"medium":S=250;break;case"slow":S=500}console.log("[Bloxd Minimap] Settings loaded:",n)}}catch(e){console.error("[Bloxd Minimap] Failed to load settings:",e)}}(),e=V(),e)w=$(),J(),H(),o=setInterval(z,S),ee(),console.log("[Bloxd Minimap] Injection successful! Lobby:",w,"Landmarks:",d.length);else{console.log("[Bloxd Minimap] Waiting for game to load...");const n=setInterval(()=>{e||(e=V(),e&&(clearInterval(n),w=$(),J(),H(),o=setInterval(z,S),ee(),console.log("[Bloxd Minimap] Injection successful! Lobby:",w)))},1e3);setTimeout(()=>{e||(clearInterval(n),console.error("[Bloxd Minimap] Failed to inject after 30 seconds"))},3e4)}}catch(e){console.error("[Bloxd Minimap] Initialization error:",e)}}function ae(){const e=new MutationObserver(n=>{for(const a of n)for(const n of a.addedNodes)if(1===n.nodeType&&n.matches("div.MainLoadingState.FullyFancyText"))return e.disconnect(),void setTimeout(ne,1e3)});e.observe(document.body,{childList:!0,subtree:!0})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",ae):ae()}();