commands.txt 341 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994
  1. error_counter = 0;
  2. last_error_message = null;
  3. @on_error
  4. error_counter++;
  5. if(error_counter > 1) {
  6. msg.dev("Error Handler activated");
  7. if(last_error_message == error_message) {
  8. msg.dev("Same error again");
  9. term();
  10. }
  11. last_error_message = error_message;
  12. if(event == "custom_command") {
  13. msg.dev(string.concat("Command ", command, " failed."));
  14. set.add(failed_cmds, command);
  15. goto("wait");
  16. }
  17. msg.dev("Restarting script...");
  18. error_counter++;
  19. if(error_counter >= 5) {
  20. msg.dev("Script terminated. Endless loop.");
  21. term();
  22. }
  23. }
  24. waitfor(5); //Verhindert Endlos-Schleife durch "/start commands"
  25. command.clear();
  26. //--- Register commands not shown on /help here ---
  27. //Games
  28. command.add("nextplayer");
  29. command.add("invstats");
  30. command.add("topinvstats");
  31. command.add("removeinvstats");
  32. command.add("sfstats");
  33. command.add("topsfstats");
  34. command.add("removesfstats");
  35. command.add("questanswer");
  36. command.add("infopoint1");
  37. command.add("infopoint2");
  38. command.add("infopoint3");
  39. command.add("infopoint4");
  40. command.add("infopoint5");
  41. command.add("infopoint6");
  42. command.add("infopoint7");
  43. command.add("infopoint8");
  44. command.add("infopoint9");
  45. command.add("infopoint10");
  46. command.add("infopoint12");
  47. //Overwrite vanilla
  48. command.add("butcher");
  49. //--- Register commands shown on /help here ---
  50. alias_map = map.new();
  51. command_list = list.new();
  52. command_map = map.new();
  53. command.register("afk", "Toggles afk");
  54. command.register("allsounds", "Plays all sounds");
  55. command.register("answer", "Answers the last private message");
  56. command.register("armorstand", "Armorstand commands");
  57. command.register("ass", "Armor Stand Signs");
  58. command.register("back", "Teleports to the last position");
  59. command.register("ban", "Bans a player");
  60. command.register("block", "Block commands");
  61. //command.register("clan", "Clan-Commands");
  62. command.register("color", "Shows all colors");
  63. command.register("comeback", "Teleports to your death location");
  64. command.register("copyisland", "Copyisland-Commands");
  65. command.register("creative", "Teleports to creative-spawn");
  66. command.register("customitems", "Shows all custom items");
  67. command.register("databank", "Databank-Commands");
  68. command.register("datatools", "Datatools-Commands");
  69. command.register("dev", "Dev-Commands");
  70. command.register("enchant", "Enchants an item in your hand");
  71. command.register("enderchest", "Shows enderchests");
  72. command.register("error", "Error-Logger");
  73. command.register("feed", "Fills hunger bar");
  74. command.register("fly", "Toggles fly");
  75. command.register("friend", "Friend-Commands");
  76. command.register("game", "marvs minigame shit");
  77. command.register("gamemode", "Change gamemode");
  78. command.register("gamerule", "Manage gamerules");
  79. command.register("games", "Teleports to games-spawn");
  80. command.register("minigames", "Teleports to games-spawn");
  81. command.register("giveup", "Giveup a quest");
  82. command.register("grow", "Grow seeds");
  83. command.register("hat", "Be fame with a new hat");
  84. command.register("head", "Gives you the head of a player");
  85. command.register("heal", "Heals, fills hunger bar and remove effects");
  86. command.register("help", "Shows this help");
  87. command.register("home", "Manage your homes");
  88. command.register("icon", "Shows all icons");
  89. command.register("live", "Toggles Live-Mode");
  90. command.register("lag", "Executes a lag test");
  91. command.register("leave", "Leaves a minigame");
  92. command.register("loginrequests", "Lists the last login requests");
  93. command.register("human", "Human-Commands");
  94. command.register("inv", "Inv-Commands");
  95. command.register("iteminfo", "Returns information about an item");
  96. command.register("jail", "Sends a player to jail");
  97. command.register("joinme", "Sends a party invitation to all online players");
  98. command.register("jumpto", "Jumps to a block in sight");
  99. command.register("kick", "Kicks a player");
  100. command.register("lastseen", "Shows the last players online");
  101. command.register("lightning", "Summons a lightning_bolt");
  102. command.register("list", "List all players online");
  103. command.register("mail", "Mail-Commands");
  104. command.register("mailbox", "Mailbox-Commands");
  105. command.register("memory", "Returns RAM-usage");
  106. command.register("msg", "Send a private message");
  107. command.register("mute", "Mutes a player");
  108. command.register("news", "Send Push-News to all players");
  109. command.register("nickname", "Set a nickname");
  110. command.register("nowb", "Sends no 'is back' message if afk");
  111. command.register("party", "Party-Commands");
  112. command.register("perm", "Manage permissions");
  113. command.register("playtime", "Shows your playtime");
  114. command.register("plot", "Plot-Commands");
  115. command.register("potion", "Adds a potion effects to an item");
  116. command.register("pvp", "Toggles pvp");
  117. command.register("quest", "Quest-Commands");
  118. command.register("rank", "Shows your available ranks");
  119. command.register("repair", "Repairs your item in mainhand");
  120. command.register("ride", "Rides an entity");
  121. command.register("say", "[Server] chat message");
  122. command.register("script", "Script-Commands");
  123. command.register("settings", "Opens settings menu");
  124. command.register("seen", "Returns the last date the player was online");
  125. //command.register("senditem", "Sends an itemstack to another player");
  126. command.register("setmessage", "Set your join/leave-message");
  127. command.register("setrank", "");
  128. command.register("setservermessage", "Sets the server-message in the serverlist");
  129. command.register("setspawn", "Changes a spawn");
  130. command.register("shop", "Shop-Commands");
  131. command.register("sign", "Edit a sign");
  132. command.register("silentjoin", "Toggles your silentjoins");
  133. command.register("skills", "Shows all skills");
  134. command.register("skipnight", "Skips the night");
  135. command.register("spawn", "Teleports to spawn");
  136. command.register("speed", "Sets your speed");
  137. command.register("sponsor", "See what a sponsor can do");
  138. command.register("start", "Starts a script");
  139. command.register("startgame", "Reduces start-countdown for a minigame");
  140. command.register("stats", "Statistics-Commands");
  141. //command.register("stopadventure", "Stops an adventure");
  142. command.register("suicide", "Kill yourself");
  143. command.register("support", "Creates a ticket for support");
  144. command.register("stop", "Stops the server organized");
  145. command.register("tempban", "Bans a player temporarly");
  146. command.register("tempfly", "Let a player temporarly fly");
  147. command.register("ticket", "Ticket-Commands");
  148. command.register("time", "Time-Commands");
  149. command.register("tip", "Tip-Commands");
  150. command.register("top", "Teleports to to highest point at the current position");
  151. command.register("tp", "Teleport command");
  152. command.register("tpa", "Sends a teleport request to a player");
  153. command.register("tpahere", "Sends a teleport request to a player");
  154. command.register("tpaccept", "Accepts a teleport request");
  155. command.register("tpaccepthere", "Accepts a teleport request");
  156. command.register("tppos", "Teleports to coordinates");
  157. command.register("unban", "Unbans a player");
  158. command.register("unjail", "Releases a player from jail");
  159. command.register("unmute", "Unmutes a player");
  160. command.register("user", "Returns infos about a user");
  161. command.register("vanish", "Vanishes a player");
  162. command.register("var", "Reads variables from a scripts");
  163. command.register("vote", "Show vote links");
  164. command.register("voteshop", "Show vote rewars");
  165. command.register("warn", "Warns a player");
  166. command.register("warp", "Warp-Commands");
  167. command.register("weather", "Weather-Commands");
  168. command.register("world", "World-Commands");
  169. command.registerAlias("as", "armorstand");
  170. command.registerAlias("h", "home");
  171. command.registerAlias("skull", "head");
  172. command.registerAlias("r", "answer");
  173. command.registerAlias("pardon", "unban");
  174. command.registerAlias("j", "jumpto");
  175. command.registerAlias("mimimi", "help");
  176. command.registerAlias("ci", "copyisland");
  177. command.registerAlias("mem", "memory");
  178. command.registerAlias("ram", "memory");
  179. command.registerAlias("colour", "color");
  180. command.registerAlias("gm", "gamemode");
  181. command.registerAlias("p", "plot");
  182. command.registerAlias("dt", "datatools");
  183. command.registerAlias("l", "leave");
  184. command.registerAlias("hub", "leave");
  185. command.registerAlias("v", "vanish");
  186. command.registerAlias("fuckit", "giveup");
  187. command.registerAlias("thor", "lightning");
  188. composter_par = particle.get("COMPOSTER");
  189. wall_signs_tag = block.getTag("minecraft:wall_signs");
  190. beds_tag = block.getTag("minecraft:beds");
  191. all_signs_tag = block.getTag("minecraft:all_signs");
  192. sign_tag = block.getTag("minecraft:signs");
  193. //dirt_tag = block.getTag("minecraft:dirt");
  194. prefix_shop = "§6Shop";
  195. prefix_clan = "§2Clan";
  196. prefix_tips = "§eTips";
  197. prefix_lock = "§eLock";
  198. prefix_commands = "§6Commands";
  199. prefix_vote = "§dVote";
  200. prefix_friends = "§5Friends";
  201. prefix_world = "§bWorld";
  202. prefix_jail = "§5Jail";
  203. prefix_quest = "§dQuest";
  204. prefix_perms = "§6Perms";
  205. prefix_datatools = "§6DataTools";
  206. prefix_human = "§6Human";
  207. prefix_plot = "§dPlots";
  208. prefix_party = "§5Party";
  209. prefix_skill = "§2Skill";
  210. initPlotFlags();
  211. allsounds_list = sound.getAll();
  212. allsounds_indizes = map.new();
  213. allsounds_uuids = list.new();
  214. allsounds_uuids_cross_check = list.new();
  215. party_ids = getScriptVar("party_ids");
  216. if(party_ids == null) {
  217. party_ids = map.new();
  218. setScriptVar("party_ids", map.new()); //Player, partyid
  219. }
  220. party_lists = getScriptVar("party_lists");
  221. if(party_lists == null) {
  222. party_lists = map.new();
  223. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  224. }
  225. party_ranks = getScriptVar("party_ranks");
  226. if(party_ranks == null) {
  227. party_ranks = map.new();
  228. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  229. }
  230. party_counter = getScriptVar("party_counter");
  231. if(party_counter == null) {
  232. party_counter = 0;
  233. setScriptVar("party_counter", party_counter); //Player, partyid
  234. }
  235. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  236. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  237. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  238. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  239. party_invite_ids = map.new(); //Player_uuid, partyid
  240. sign_copy_map = map.new();
  241. list = getScriptVar("block_commands_list");
  242. if(list == null) {
  243. list = list.new();
  244. setScriptVar("block_commands_list", list);
  245. }
  246. live_set = getScriptVar("live_set");
  247. if(live_set == null) {
  248. live_set = set.new();
  249. setScriptVar("live_set", live_set);
  250. } else {
  251. //Register all Live-Players again
  252. iter = iterator(live_set);
  253. while(hasNext(iter)) {
  254. player = player.get(next(iter));
  255. if(player != null) {
  256. player.setLive(player, true);
  257. }
  258. }
  259. }
  260. afk_loop_active = false;
  261. afk_map = getScriptVar("afk_map");
  262. if(afk_map == null) {
  263. afk_map = map.new();
  264. setScriptVar("afk_map", afk_map);
  265. } else {
  266. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  267. iter = map.iterator(afk_map);
  268. while(hasNext(iter)) {
  269. element = next(iter);
  270. player = player.get(map.getKey(element));
  271. if(player != null) {
  272. player.setAfk(player, true);
  273. afk_loop_active = true;
  274. }
  275. }
  276. }
  277. if(afk_loop_active) {
  278. sgoto(30, "afk_loop");
  279. }
  280. setScriptVar("ha_data_lists", map.new());
  281. setScriptVar("ha_undo_lists", map.new());
  282. money.setBoostFactor(1);
  283. sgoto(200, "sb_title_loop");
  284. sgoto(100, "coordsloop");
  285. sgoto(1200, "afk_checker_loop");
  286. sgoto(1200, "minute_loop");
  287. logo = read.item("{id:\"minecraft:brown_banner\",Count:1b,tag:{BlockEntityTag:{Patterns:[{Pattern:\"bs\",Color:15},{Pattern:\"ts\",Color:15},{Pattern:\"bo\",Color:12},{Pattern:\"cs\",Color:12},{Pattern:\"mr\",Color:15},{Pattern:\"mc\",Color:14}]}}}");
  288. lag_list = list.new();
  289. clan_invitations = list.new();
  290. friend_requests = map.new();
  291. lock_chests = map.new();
  292. chatbuffer = map.new();
  293. tpa_request = list.new();
  294. answer_map = map.new();
  295. plotpos1 = map.new();
  296. plotpos2 = map.new();
  297. invseeids = set.new();
  298. fields = set.new();
  299. vanish_set = set.new();
  300. failed_cmds = set.new();
  301. skip_night_set = set.new();
  302. afk_checker_map = map.new();
  303. butcher_set = set.new();
  304. set.add(butcher_set, "zombie");
  305. set.add(butcher_set, "zombie_villager");
  306. set.add(butcher_set, "husk");
  307. set.add(butcher_set, "skeleton");
  308. set.add(butcher_set, "creeper");
  309. set.add(butcher_set, "enderman");
  310. set.add(butcher_set, "pillager");
  311. set.add(butcher_set, "spider");
  312. set.add(butcher_set, "phantom");
  313. set.add(butcher_set, "witch");
  314. set.add(butcher_set, "stray");
  315. set.add(butcher_set, "drowned");
  316. set.add(butcher_set, "wither");
  317. set.add(butcher_set, "silverfish");
  318. set.add(butcher_set, "zombified_piglin");
  319. set.add(butcher_set, "cod");
  320. set.add(butcher_set, "guardian");
  321. attributes = item.getAllAttributes();
  322. operation_set = set.new();
  323. set.add(operation_set, "ADD_NUMBER");
  324. set.add(operation_set, "ADD_SCALAR");
  325. set.add(operation_set, "MULTIPLY_SCALAR_1");
  326. not_blocked_cmd = set.new();
  327. set.add(not_blocked_cmd, "leave");
  328. set.add(not_blocked_cmd, "ban");
  329. set.add(not_blocked_cmd, "kick");
  330. set.add(not_blocked_cmd, "warn");
  331. set.add(not_blocked_cmd, "tempban");
  332. set.add(not_blocked_cmd, "mute");
  333. set.add(not_blocked_cmd, "unmute");
  334. set.add(not_blocked_cmd, "unban");
  335. set.add(not_blocked_cmd, "tip");
  336. set.add(not_blocked_cmd, "var");
  337. set.add(not_blocked_cmd, "quest");
  338. set.add(not_blocked_cmd, "msg");
  339. set.add(not_blocked_cmd, "help");
  340. rank_array = array.new(27, 2);
  341. //Playtime
  342. rank.add(0, "rank.admin", "cAdmin");
  343. rank.add(1, "rank.moderator", "9Moderator");
  344. rank.add(2, "rank.supporter", "bSupporter");
  345. rank.add(3, "rank.dev", "5Developer");
  346. rank.add(4, "rank.builder", "5Builder");
  347. rank.add(5, "rank.vip", "dVIP");
  348. rank.add(6, "rank.influencer", "dInfluencer");
  349. rank.add(7, "rank.sponsor", "dSponsor");
  350. rank.add(8, "rank.legend", "2Legend");
  351. rank.add(9, "rank.pioneer", "2Pioneer");
  352. rank.add(10, "rank.lord", "2Lord");
  353. rank.add(11, "rank.altruist", "2Altruist");
  354. rank.add(12, "rank.major", "2Major");
  355. rank.add(13, "rank.frequenter", "6Frequenter");
  356. rank.add(14, "rank.explorer", "6Explorer");
  357. rank.add(15, "rank.chief", "6Chief");
  358. rank.add(16, "rank.friend", "6Friend");
  359. rank.add(17, "rank.colonizer", "6Colonizer");
  360. rank.add(18, "rank.newcomer", "eNewcomer");
  361. rank.add(19, "rank.adventurer", "eAdventurer");
  362. rank.add(20, "rank.commander", "eCommander");
  363. rank.add(21, "rank.volunteer", "eVolunteer");
  364. rank.add(22, "rank.settler", "eSettler");
  365. rank.add(23, "rank.user", "3User");
  366. rank.add(24, "rank.challenger", "5Challenger");
  367. rank.add(25, "rank.mobhunter", "6Mobhunter");
  368. rank.add(26, "rank.collector", "2Collector");
  369. setScriptVar("ranks", rank_array);
  370. month_array = array.new(12, 2);
  371. month.register(0, "Jan", 31);
  372. month.register(1, "Feb", 28);
  373. month.register(2, "Mar", 31);
  374. month.register(3, "Apr", 30);
  375. month.register(4, "May", 31);
  376. month.register(5, "Jun", 30);
  377. month.register(6, "Jul", 31);
  378. month.register(7, "Aug", 31);
  379. month.register(8, "Sep", 30);
  380. month.register(9, "Oct", 31);
  381. month.register(10, "Nov", 30);
  382. month.register(11, "Dec", 31);
  383. jailed_list = list.new();
  384. ironbars = item.create("minecraft:iron_bars", 1, "§r", null);
  385. jailmenu = inv.new("00000000", text.new("§8Jail"));
  386. inv.setItem(jailmenu, 0, ironbars);
  387. inv.setItem(jailmenu, 1, ironbars);
  388. inv.setItem(jailmenu, 2, ironbars);
  389. inv.setItem(jailmenu, 3, ironbars);
  390. inv.setItem(jailmenu, 4, ironbars);
  391. inv.setItem(jailmenu, 5, ironbars);
  392. inv.setItem(jailmenu, 6, ironbars);
  393. inv.setItem(jailmenu, 7, ironbars);
  394. inv.setItem(jailmenu, 8, ironbars);
  395. skip_night_inv = inv.new("002020200", text.new("Skip Night?"));
  396. inv.setItem(skip_night_inv, 2, customitem.create("CHECK_GREEN", 1, "§fYes", null));
  397. inv.setItem(skip_night_inv, 4, item.create("clay_ball", 1, "§fI don´t care", null));
  398. inv.setItem(skip_night_inv, 6, customitem.create("CROSS_RED", 1, "§fNo", null));
  399. skip_night_inv_id = inv.getId(skip_night_inv);
  400. vote_inv = inv.new("222222222", text.new("§8Voteshop"));
  401. lore_list = list.new();
  402. list.add(lore_list, text.new("§fCost: §e6 VP"));
  403. list.add(lore_list, text.new("§5Doubles incoming money for 10 minutes."));
  404. list.add(lore_list, text.new("§5Effects quests, minigames and mobarena."));
  405. inv.setItem(vote_inv, 0, customitem.create("GOLD_COIN", 1, "§aMoney Booster", lore_list));
  406. lore_list = list.new();
  407. list.add(lore_list, text.new("§fCost: §e2 VP"));
  408. list.add(lore_list, text.new("§5Rickroles every player on the server."));
  409. inv.setItem(vote_inv, 1, item.create("JUKEBOX", 1, "§aRick is in the house", lore_list));
  410. updateVoteInv();
  411. lore_list = list.new();
  412. list.add(lore_list, text.new("§fCost: §e2 VP"));
  413. list.add(lore_list, text.new("§5Be a kiddie and enjoy it."));
  414. inv.setItem(vote_inv, 3, item.create("JUKEBOX", 1, "§aBi Ba Bobby Car", lore_list));
  415. lore_list = list.new();
  416. list.add(lore_list, text.new("§fCost: §e1 VP"));
  417. list.add(lore_list, text.new("§5Plays a creeper sound for each player."));
  418. inv.setItem(vote_inv, 4, item.create("JUKEBOX", 1, "§aFalse Alarm", lore_list));
  419. lore_list = list.new();
  420. list.add(lore_list, text.new("§fCost: §e1 VP"));
  421. list.add(lore_list, text.new("§5Opens your enderchest."));
  422. inv.setItem(vote_inv, 5, item.create("ENDER_CHEST", 1, "§aMobile Enderchest", lore_list));
  423. lore_list = list.new();
  424. list.add(lore_list, text.new("§fCost: §e7 VP"));
  425. list.add(lore_list, text.new("§5A sapphire for your armor."));
  426. list.add(lore_list, text.new("§5To use at jewelry smith."));
  427. inv.setItem(vote_inv, 6, customitem.create("SAPPHIRE", 1, "§aSapphire", lore_list));
  428. vote_inv_id = inv.getId(vote_inv);
  429. lockable_containers = set.new();
  430. set.add(lockable_containers, material.get("minecraft:chest"));
  431. set.add(lockable_containers, material.get("minecraft:trapped_chest"));
  432. set.add(lockable_containers, material.get("minecraft:furnace"));
  433. set.add(lockable_containers, material.get("minecraft:blast_furnace"));
  434. set.add(lockable_containers, material.get("minecraft:smoker"));
  435. set.add(lockable_containers, material.get("minecraft:dropper"));
  436. set.add(lockable_containers, material.get("minecraft:dispenser"));
  437. set.add(lockable_containers, material.get("minecraft:hopper"));
  438. set.add(lockable_containers, material.get("minecraft:barrel"));
  439. consoleCommands = set.new();
  440. set.add(consoleCommands, "ban");
  441. set.add(consoleCommands, "help");
  442. set.add(consoleCommands, "kick");
  443. set.add(consoleCommands, "lastseen");
  444. set.add(consoleCommands, "list");
  445. set.add(consoleCommands, "memory");
  446. set.add(consoleCommands, "mute");
  447. set.add(consoleCommands, "say");
  448. set.add(consoleCommands, "start");
  449. set.add(consoleCommands, "tempban");
  450. set.add(consoleCommands, "tempfly");
  451. set.add(consoleCommands, "unban");
  452. set.add(consoleCommands, "unmute");
  453. set.add(consoleCommands, "user");
  454. set.add(consoleCommands, "warn");
  455. set.add(consoleCommands, "world");
  456. databank.workerExecute(databank.prepare("
  457. CREATE TABLE IF NOT EXISTS friends (
  458. player_id INT NOT NULL,
  459. friend_id INT NOT NULL,
  460. time BIGINT NOT NULL,
  461. PRIMARY KEY (player_id, friend_id)
  462. );
  463. "));
  464. databank.workerExecute(databank.prepare("
  465. CREATE TABLE IF NOT EXISTS new_plotranks (
  466. plot_id INT NOT NULL,
  467. player_id INT NOT NULL,
  468. rank VARCHAR(10),
  469. PRIMARY KEY (plot_id, player_id)
  470. );
  471. "));
  472. databank.workerExecute(databank.prepare("
  473. CREATE TABLE IF NOT EXISTS new_homes (
  474. player_id INT NOT NULL,
  475. name VARCHAR(20) NOT NULL,
  476. world_name VARCHAR(20) NOT NULL,
  477. x DOUBLE NOT NULL,
  478. y DOUBLE NOT NULL,
  479. z DOUBLE NOT NULL,
  480. yaw DOUBLE NOT NULL,
  481. pitch DOUBLE NOT NULL,
  482. PRIMARY KEY (player_id, name)
  483. );
  484. "));
  485. databank.workerExecute(databank.prepare("
  486. CREATE TABLE IF NOT EXISTS votes (
  487. id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  488. name VARCHAR(20) NOT NULL,
  489. player_id INT,
  490. time BIGINT NOT NULL
  491. );
  492. "));
  493. databank.workerExecute(databank.prepare("
  494. CREATE TABLE IF NOT EXISTS newbies (
  495. id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  496. player_id INT NOT NULL,
  497. time BIGINT NOT NULL
  498. );
  499. "));
  500. //plot ranks cachen
  501. plot_ranks_map = map.new();
  502. stmt = databank.prepare("SELECT plot_id, player_id, rank FROM new_plotranks");
  503. result = databank.execute(stmt);
  504. while(databank.next(result)) {
  505. plot_id = databank.getInt(result, 1);
  506. player_id = databank.getInt(result, 2);
  507. rank = databank.getString(result, 3);
  508. map = map.get(plot_ranks_map, plot_id);
  509. if(map == null) {
  510. map = map.new();
  511. }
  512. map.add(map, player_id, rank);
  513. map.add(plot_ranks_map, plot_id, map);
  514. }
  515. databank.close(result);
  516. databank.close(stmt);
  517. setScriptVar("plot_ranks", plot_ranks_map);
  518. last_skip_night = 0;
  519. skip_night_started = false;
  520. jail_loop_active = false;
  521. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  522. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  523. check_for_plot_list = list.new();
  524. plot.registerMoveEvents(world.getOverworld());
  525. plot.registerMoveEvents(world.getTheNether());
  526. plot.registerMoveEvents(world.getTheEnd());
  527. plot.registerMoveEvents(world.getCreative());
  528. RickRollSounds = getRickRollSounds();
  529. RickRollSoundDists = getRickRollSoundDists();
  530. rick_sounds_amount = list.getSize(RickRollSoundDists);
  531. bobbyCarSounds = getBobbyCarSounds();
  532. bobbyCarSoundDists = getBobbyCarSoundDists();
  533. bcar_sounds_amount = list.getSize(bobbyCarSoundDists);
  534. item_flags = getItemFlags();
  535. sound_category_master = sound.getCategory("MASTER");
  536. sound_flute = sound.get("block.note_block.flute");
  537. sound_harp = sound.get("minecraft:block.note_block.harp");
  538. sound_pling = sound.get("minecraft:block.note_block.pling");
  539. creeper_primed = sound.get("entity.creeper.primed");
  540. world = world.getOverWorld();
  541. daily_reward_loc = loc.new(world, 136, 77, -22);
  542. event.load("player_move");
  543. event.load("snuvi_click");
  544. event.load("inv_close");
  545. event.load("missing_perm");
  546. event.load("missing_command");
  547. event.load("command");
  548. event.load("custom_command");
  549. event.load("block_click");
  550. event.load("player_quit");
  551. event.load("vote");
  552. msg("dev", text.new("§bCommands §rloaded."));
  553. @wait
  554. wait();
  555. if(event == "command") {
  556. if(string.startsWith(permission, "worldedit", 0)) {
  557. if(perm.has("creative.we", player)) {
  558. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  559. if(!world.isCreativeName(world_name)) {
  560. cancel = true;
  561. msg.prefix(player, prefix_commands, "You are not in the creative world.");
  562. goto("wait");
  563. }
  564. }
  565. }
  566. goto("wait");
  567. }
  568. if(event == "custom_command") {
  569. //Permission-Check
  570. command = string.toLowerCase(command);
  571. command = map.getOrDefault(alias_map, command, command);
  572. size = list.getSize(args);
  573. if(isPlayer(sender)) {
  574. player = sender;
  575. } else {
  576. if(!set.contains(consoleCommands, command)) {
  577. msg.string(sender, "Sorry. Not a console command yet. Go and tell marvinius.");
  578. goto("wait");
  579. }
  580. player = null;
  581. }
  582. if(!perm.has(command, sender)) {
  583. perm.no(command, sender);
  584. goto("wait");
  585. }
  586. if(set.contains(failed_cmds, command)) {
  587. msg.prefix(sender, prefix_commands, "§cCommand temporarly deactivated due to failure.");
  588. goto("wait");
  589. }
  590. if(player.isCommandBlocked(sender)) {
  591. if(!set.contains(not_blocked_cmd, command)) {
  592. msg.prefix(sender, prefix_commands, "The most important rule in competition: Sabotage!");
  593. goto("wait");
  594. }
  595. }
  596. ignoreGoto(command);
  597. goto("wait");
  598. }
  599. if(event == "vote") {
  600. now_time = time.getMillis();
  601. vote.register(name, now_time);
  602. p_uuid = player.getUuid(name);
  603. if(p_uuid != null) {
  604. p_id = player.getId(p_uuid);
  605. player.addVotePoints(p_id, 1);
  606. if(from == "minecraft-server.eu") {
  607. msg("online", text.merge(text.new(string.getPrefix(prefix_vote)), text.new(string.concat(" §b", name, "§r has voted! ")), string.getLinkText("[§bminecraft-server.eu§r]", "https://minecraft-server.eu/vote/index/2227F")));
  608. } else {
  609. msg("online", text.merge(text.new(string.getPrefix(prefix_vote)), text.new(string.concat(" §b", name, "§r has voted! ")), string.getLinkText("[§bminecraft-server-list.com§r]", "https://minecraft-server-list.com/server/478200/vote/")));
  610. }
  611. last_vote_time = player.getLastVoteTime(p_id);
  612. new_streak = player.getVoteStreak(p_id);
  613. voted_again_on_same_day = isSameDay(last_vote_time, now_time);
  614. // increase votestreak if vote is on two following days or if it is the first vote ever
  615. if(last_vote_time == 0 || isFollowingDay(last_vote_time, now_time)) {
  616. new_streak++;
  617. } elseif(!voted_again_on_same_day) { // votes on multiple sites on one day are possible. if the first if is not met and it is not the same day, reset votestreak
  618. new_streak = 1;
  619. }
  620. // votes on multiple sites on the same day are fine, but when a votestreak was reached with first vote of the day, the other votes will not give the additional votepoint
  621. if(new_streak > 0 && !voted_again_on_same_day && new_streak % 7 == 0) {
  622. msg.online(prefix_vote, string.concat(player.getName(p_uuid), " reached a votestreak of 7 and gets an additional votepoint."));
  623. player.addVotePoints(p_id, 1);
  624. }
  625. player.setVoteStreak(p_id, new_streak);
  626. player.setLastVoteTime(p_id, now_time);
  627. }
  628. goto("wait");
  629. }
  630. if(event == "player_move") {
  631. player_uuid = player.getUuid(player);
  632. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  633. if(last_move_id == id) {
  634. goto("wait");
  635. }
  636. player_loc = entity.getLocation(player);
  637. new_plot_id = plot.getPlotIdFromMoveId(id);
  638. new_plot = plot.getFromId(new_plot_id, loc.getWorld(player_loc));
  639. if(new_plot == null) {
  640. goto("wait");
  641. }
  642. high_plot_id = plot.getHighestId(player_loc);
  643. if(new_plot_id < high_plot_id) {
  644. goto("wait");
  645. }
  646. if(plot.isCity(new_plot)) {
  647. color_code = "§c";
  648. } else {
  649. color_code = "§e";
  650. }
  651. title.send(player, text.new(""), text.new(string.concat("You entered ", color_code, plot.getName(new_plot), ".")));
  652. map.add(actual_move_id, player_uuid, id);
  653. list.add(check_for_plot_list, player_uuid);
  654. sgoto(100, "checkForPlot");
  655. goto("wait");
  656. }
  657. if(event == "block_click") {
  658. if(block == null) {
  659. goto("wait");
  660. }
  661. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  662. if(action == "RIGHT_CLICK_BLOCK" && !world.isSurvName(world_name) && block.hasTag(block, beds_tag)) {
  663. cancel = true;
  664. goto("wait");
  665. }
  666. if(player.hasBypass(player)) {
  667. goto("wait");
  668. }
  669. if(block.isLockable(block)) {
  670. block_loc = block.getLocation(block);
  671. if(block_loc == daily_reward_loc) {
  672. goto("wait");
  673. }
  674. if(plot.check(block_loc, player, 16, true)) {
  675. cancel = false;
  676. goto("wait");
  677. }
  678. player_id = player.getId(player);
  679. player_uuid = player.getUuid(player);
  680. list = plot.get(block_loc);
  681. if(list.getSize(list) > 0) {
  682. iter = iterator(list);
  683. access = false;
  684. while(hasNext(iter)) {
  685. plot = next(iter);
  686. canOpenChests = plot.canOpenChests(plot, player_id);
  687. if(plot.isSub(plot)) {
  688. if(canOpenChests) {
  689. cancel = false;
  690. goto("wait");
  691. }
  692. cancel = true;
  693. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  694. goto("wait");
  695. }
  696. if(canOpenChests) {
  697. access = true;
  698. cancel = false;
  699. }
  700. }
  701. if(!access && !plot.hasBlock(block_loc)) {
  702. if(!world.isGamesName(world_name)) {
  703. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  704. }
  705. }
  706. }
  707. goto("wait");
  708. }
  709. if(action == "RIGHT_CLICK_BLOCK" && block.hasTag(block, sign_tag)) {
  710. line0 = sign.getString(block, "FRONT", 0);
  711. if(line0 != "§3[§bFree Plot§3]") {
  712. goto("wait");
  713. }
  714. price = read.number(string.removeFormat(sign.getString(block, "FRONT", 1)));
  715. if(price == null || !isDouble(price) || price < 0) {
  716. msg.prefix(player, prefix_plot, "Positive number expected.");
  717. goto("wait");
  718. }
  719. p_id = read.number(sign.getString(block, "FRONT", 3));
  720. if(p_id == null || !isDouble(p_id)) {
  721. msg.prefix(player, prefix_plot, "Invalid city owner.");
  722. goto("wait");
  723. }
  724. if(player.getNameFromId(p_id) == null) {
  725. msg.prefix(player, prefix_plot, "Invalid city owner.");
  726. goto("wait");
  727. }
  728. if(!hasEnoughMoney(player, price)) {
  729. msg.prefix(player, prefix_plot, string.concat("You´ll need §6", string.number(price), "§r snuvis for this."));
  730. goto("wait");
  731. }
  732. block_loc = block.getLocation(block);
  733. plot_list = plot.get(block_loc);
  734. iter = iterator(plot_list);
  735. while(hasNext(iter)) {
  736. plot = next(iter);
  737. if(plot.isFree(plot)) {
  738. break;
  739. }
  740. }
  741. if(!plot.isFree(plot)) {
  742. msg.prefix(player, prefix_plot, "You aren´t on a free plot.");
  743. goto("wait");
  744. }
  745. //Plot claimen
  746. money.sub(player, price);
  747. money.add(p_id, price);
  748. plot.setSub(plot, true);
  749. plot.setLeader(plot, player.getId(player));
  750. player_name = player.getName(player);
  751. plot.addPlayer(plot, player_name);
  752. plot.setName(plot, string.concat("Plot of ", player_name));
  753. msg.prefix(player, prefix_plot, string.concat("Plot claimed. Spent §6", string.number(price), "§r snuvis."));
  754. goto("wait");
  755. }
  756. goto("wait");
  757. }
  758. if(event == "missing_command") {
  759. msg.prefix(sender, prefix_commands, string.concat("No command ", command));
  760. goto("wait");
  761. }
  762. if(event == "player_quit") {
  763. map.remove(afk_checker_map, uuid);
  764. player.setAfk(player, false);
  765. list.remove(jailed_list, player.getUuid(player));
  766. if(player.hasQuest(player)) {
  767. script_id = quest.getFromPlayer(player);
  768. script = script.getFromId(script_id);
  769. if(script == null) {
  770. msg.dev("Player logged out with corrupt quest");
  771. quest.removePlayer(player); //in case of corrupt quest
  772. goto("wait");
  773. }
  774. setScriptVar("player", player);
  775. modTimer.scriptCallEvent("quest_term", script);
  776. quest.term(script, player);
  777. }
  778. if(player.isInParty(player)) {
  779. party.kickPlayer(player, "logout");
  780. }
  781. goto("wait");
  782. }
  783. if(event == "missing_perm") {
  784. perm.no(command, sender);
  785. msg.prefix(sender, prefix_perms, string.concat("Missing Perm: §c", perm));
  786. goto("wait");
  787. }
  788. if(event == "snuvi_click") {
  789. inv_id = inv.getId(inv);
  790. item = inv.getItem(inv, inv_slot);
  791. if(item == null) {
  792. goto("wait");
  793. }
  794. title_string = string.text(inv_title);
  795. if(string.startsWith(title_string, "Mailbox", 0)) {
  796. item.removeFlag(item, "HIDE_DESTROYS");
  797. if(click == "SHIFT_LEFT") {
  798. //Clone item
  799. player.safeGiveItem(player, item);
  800. goto("wait");
  801. }
  802. //Take item
  803. player.safeGiveItem(player, item);
  804. inv.setItem(inv, inv_slot, item.create("BLACK_STAINED_GLASS_PANE", 1, "", null));
  805. split_array = string.split(" ", title_string);
  806. p_name = split_array[2];
  807. p_uuid = player.getUuid(p_name);
  808. if(p_uuid == null) {
  809. inv.close(player);
  810. msg.prefix(player, prefix_commands, "Mailbox closed. Unknown player.");
  811. goto("wait");
  812. }
  813. p_id = player.getId(p_uuid);
  814. mailbox.removeItem(p_id, inv_slot);
  815. goto("wait");
  816. }
  817. if(string.startsWith(title_string, "Customitems", 0)) {
  818. item = inv.getItem(inv, inv_slot);
  819. if(item != null) {
  820. player.safeGiveItem(player, item);
  821. }
  822. goto("wait");
  823. }
  824. if(set.contains(invseeids, inv_id)) {
  825. if(!perm.has("inv.see.plus", player)) {
  826. perm.no("inv.see.plus", player);
  827. goto("wait");
  828. }
  829. split_array = string.split(" ", title_string);
  830. p_name = split_array[2];
  831. p = read.player(p_name);
  832. if(p == null) {
  833. inv.close(player);
  834. msg.prefix(player, prefix_commands, "This player is no longer online. Use /inv to load and overwrite an inventory of a offline player.");
  835. goto("wait");
  836. }
  837. item.removeFlag(item, "HIDE_DESTROYS");
  838. if(click == "SHIFT_LEFT") {
  839. //Clone item
  840. player.safeGiveItem(player, item);
  841. goto("wait");
  842. }
  843. //Transmit item
  844. player.removeItem(p, item);
  845. player.safeGiveItem(player, item);
  846. inv.setItem(inv, inv_slot, item.create("BLACK_STAINED_GLASS_PANE", 1, "", null));
  847. goto("wait");
  848. }
  849. if(inv_id == vote_inv_id) {
  850. if(inv_slot == 0) {
  851. if(money.getBoostFactor() > 1) {
  852. msg.prefix(player, prefix_commands, "Boost already active.");
  853. goto("wait");
  854. }
  855. vp = player.getVotePoints(player);
  856. if(vp < 6) {
  857. msg.prefix(player, prefix_commands, "Not enough vote points.");
  858. goto("wait");
  859. }
  860. player.setVotePoints(player, vp - 6);
  861. msg.online(prefix_vote, string.concat(player.getName(player), " activated §dMoney Booster§r."));
  862. money.setBoostFactor(2);
  863. online_list = players.toList();
  864. iter = iterator(online_list);
  865. while(hasNext(iter)) {
  866. p = next(iter);
  867. sb.add(p, 5, "§6Money Booster +100%");
  868. }
  869. sgoto(12000, "resetMoneyBoost");
  870. goto("wait");
  871. }
  872. if(inv_slot == 1) {
  873. vp = player.getVotePoints(player);
  874. if(vp < 2) {
  875. msg.prefix(player, prefix_commands, "Not enough vote points.");
  876. goto("wait");
  877. }
  878. msg.online(prefix_vote, string.concat(player.getName(player), " activated §dRick is in the house§r."));
  879. player.setVotePoints(player, vp - 2);
  880. rickIndex = 0;
  881. goto("RickRole_play");
  882. }
  883. if(inv_slot == 2) {
  884. vp = player.getVotePoints(player);
  885. if(vp < 1) {
  886. msg.prefix(player, prefix_commands, "Not enough vote points.");
  887. goto("wait");
  888. }
  889. player.setVotePoints(player, vp - 1);
  890. increaseHomeBoost();
  891. msg.online(prefix_vote, string.concat(player.getName(player), " spend their votepoints to §dMore Homes§r."));
  892. goto("wait");
  893. }
  894. if(inv_slot == 3) {
  895. vp = player.getVotePoints(player);
  896. if(vp < 2) {
  897. msg.prefix(player, prefix_commands, "Not enough vote points.");
  898. goto("wait");
  899. }
  900. msg.online(prefix_vote, string.concat(player.getName(player), " activated §dBi Ba Bobby Car§r."));
  901. player.setVotePoints(player, vp - 2);
  902. bobbycarIndex = 0;
  903. goto("bobbycar_play");
  904. }
  905. if(inv_slot == 4) {
  906. vp = player.getVotePoints(player);
  907. if(vp < 1) {
  908. msg.prefix(player, prefix_commands, "Not enough vote points.");
  909. goto("wait");
  910. }
  911. msg.online(prefix_vote, string.concat(player.getName(player), " activated §dFalse Alarm§r."));
  912. player.setVotePoints(player, vp - 1);
  913. iter = iterator(players.toList());
  914. while(hasNext(iter)) {
  915. sound.spawnForPlayer(next(iter), creeper_primed, sound_category_master);
  916. }
  917. goto("wait");
  918. }
  919. if(inv_slot == 5) {
  920. vp = player.getVotePoints(player);
  921. if(vp < 1) {
  922. msg.prefix(player, prefix_commands, "Not enough vote points.");
  923. goto("wait");
  924. }
  925. player.setVotePoints(player, vp - 1);
  926. inv.open(player.getEnderInv(player), player);
  927. goto("wait");
  928. }
  929. if(inv_slot == 6) {
  930. vp = player.getVotePoints(player);
  931. if(vp < 7) {
  932. msg.prefix(player, prefix_commands, "Not enough vote points.");
  933. goto("wait");
  934. }
  935. msg.online(prefix_vote, string.concat(player.getName(player), " spend their votepoints to §dSapphire§r."));
  936. player.setVotePoints(player, vp - 7);
  937. player.giveItem(player, customitem.getSapphire());
  938. goto("wait");
  939. }
  940. goto("wait");
  941. }
  942. if(inv_id == skip_night_inv_id) {
  943. world = world.getOverWorld();
  944. world_time = world.getTime(world);
  945. while(world_time >= 24000) {
  946. world_time -= 24000;
  947. }
  948. if(world_time <= 12500) {
  949. goto("wait");
  950. }
  951. player_uuid = player.getUuid(player);
  952. if(set.contains(skip_night_set, player_uuid)) {
  953. msg.prefix(player, prefix_commands, "Already voted.");
  954. goto("wait");
  955. }
  956. if(!skip_night_started) {
  957. skip_night_yes_list = list.new();
  958. world.addTimedStatus(world, 49, 300, "Skip night?");
  959. msg("online", text.merge(text.new(string.getPrefix(prefix_commands)), text.new(" Skip night? Vote within 15 seconds. "), string.getClickText("[§cClick§r]", "/skipnight")));
  960. skip_night_counter = 15;
  961. skip_night_yes = 0;
  962. skip_night_no = 0;
  963. skip_night_no_care = 0;
  964. skip_night_started = true;
  965. sgoto(20, "skip_night_loop");
  966. }
  967. if(inv_slot == 2) {
  968. skip_night_yes++;
  969. inv.close(player);
  970. set.add(skip_night_set, player_uuid);
  971. list.add(skip_night_yes_list, player_uuid);
  972. goto("wait");
  973. }
  974. if(inv_slot == 4) {
  975. skip_night_no_care++;
  976. inv.close(player);
  977. set.add(skip_night_set, player_uuid);
  978. goto("wait");
  979. }
  980. if(inv_slot == 6) {
  981. skip_night_no++;
  982. inv.close(player);
  983. set.add(skip_night_set, player_uuid);
  984. goto("wait");
  985. }
  986. goto("wait");
  987. }
  988. if(title_string == "Skills") {
  989. if(item == null) {
  990. goto("wait");
  991. }
  992. skill_name = string.removeFormat(string.text(item.getName(item)));
  993. if(skill_name == "") {
  994. goto("wait");
  995. }
  996. tech_name = skill.getTechName(skill_name);
  997. //Toggle skills
  998. if(skill.isToggleable(tech_name)) {
  999. if(skill.isActivated(player, tech_name)) {
  1000. skill.setActivated(player, tech_name, false);
  1001. } else {
  1002. skill.setActivated(player, tech_name, true);
  1003. }
  1004. inv.setItem(inv, inv_slot, skill.getSettingsItem(player, tech_name));
  1005. goto("wait");
  1006. }
  1007. //Activate skill
  1008. if(skill.isActive(tech_name)) {
  1009. player_loc = entity.getLocation(player);
  1010. world_name = world.getName(loc.getWorld(player_loc));
  1011. if(!world.isSurvName(world_name)) {
  1012. msg.prefix(player, prefix_skill, "You can´t use this in this world.");
  1013. goto("wait");
  1014. }
  1015. goto("wait");
  1016. if(tech_name == "skill.fire_arrow") {
  1017. duration = data.getTimer(player, tech_name);
  1018. if(duration > 0) {
  1019. msg.prefix(player, prefix_skill, "Skill already active.");
  1020. goto("wait");
  1021. }
  1022. amount = skill.getAmount(player, tech_name);
  1023. if(amount > 0) {
  1024. status.addTimed(player, 54, 1200, skill_name);
  1025. data.setTimer(player, tech_name, 1200);
  1026. new_amount = amount - 1;
  1027. skill.setAmount(player, tech_name, new_amount);
  1028. msg.prefix(player, prefix_skill, string.concat("Used ", skill_name, ". New amount: ", string.number(new_amount)));
  1029. }
  1030. goto("wait");
  1031. }
  1032. if(tech_name == "skill.fly10min") {
  1033. duration = data.getTimer(player, "fly");
  1034. if(duration > 0) {
  1035. msg.prefix(player, prefix_skill, "Skill already active.");
  1036. goto("wait");
  1037. }
  1038. amount = skill.getAmount(player, "skill.fly10min");
  1039. if(amount > 0) {
  1040. status.addTimed(player, 50, 12000, "Fly");
  1041. data.setTimer(player, "fly", 12000);
  1042. player.setFly(player, true);
  1043. new_amount = amount - 1;
  1044. skill.setAmount(player, "skill.fly10min", new_amount);
  1045. msg.prefix(player, prefix_skill, string.concat("Used Fly 10min. New amount: ", string.number(new_amount)));
  1046. }
  1047. goto("wait");
  1048. }
  1049. if(tech_name == "skill.grow") {
  1050. amount = skill.getAmount(player, "skill.grow");
  1051. if(amount > 0) {
  1052. grow(player_loc, 5);
  1053. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  1054. new_amount = amount - 1;
  1055. skill.setAmount(player, "skill.grow", new_amount);
  1056. msg.prefix(player, prefix_skill, string.concat("Used Grow. New amount: ", string.number(new_amount)));
  1057. }
  1058. goto("wait");
  1059. }
  1060. if(tech_name == "skill.haste") {
  1061. amount = skill.getAmount(player, "skill.haste");
  1062. if(amount > 0) {
  1063. entity.addEffect(player, "haste", 2400, 0);
  1064. new_amount = amount - 1;
  1065. skill.setAmount(player, "skill.haste", new_amount);
  1066. msg.prefix(player, prefix_skill, string.concat("Used Haste. New amount: ", string.number(new_amount)));
  1067. }
  1068. goto("wait");
  1069. }
  1070. if(tech_name == "skill.speed") {
  1071. amount = skill.getAmount(player, "skill.speed");
  1072. if(amount > 0) {
  1073. entity.addEffect(player, "speed", 2400, 0);
  1074. new_amount = amount - 1;
  1075. skill.setAmount(player, "skill.speed", new_amount);
  1076. msg.prefix(player, prefix_skill, string.concat("Used Speed. New amount: ", string.number(new_amount)));
  1077. }
  1078. goto("wait");
  1079. }
  1080. if(tech_name == "skill.jump_boost") {
  1081. amount = skill.getAmount(player, "skill.jump_boost");
  1082. if(amount > 0) {
  1083. entity.addEffect(player, "jump_boost", 2400, 1);
  1084. new_amount = amount - 1;
  1085. skill.setAmount(player, "skill.jump_boost", new_amount);
  1086. msg.prefix(player, prefix_skill, string.concat("Used Jump Boost. New amount: ", string.number(new_amount)));
  1087. }
  1088. goto("wait");
  1089. }
  1090. if(tech_name == "skill.dolphin") {
  1091. amount = skill.getAmount(player, "skill.dolphin");
  1092. if(amount > 0) {
  1093. entity.addEffect(player, "dolphins_grace", 1200, 0);
  1094. new_amount = amount - 1;
  1095. skill.setAmount(player, "skill.dolphin", new_amount);
  1096. msg.prefix(player, prefix_skill, string.concat("Used Dolphin. New amount: ", string.number(new_amount)));
  1097. }
  1098. goto("wait");
  1099. }
  1100. if(tech_name == "skill.block_up") {
  1101. duration = data.getTimer(player, "block_up");
  1102. if(duration > 0) {
  1103. msg.prefix(player, prefix_skill, "Skill already active.");
  1104. goto("wait");
  1105. }
  1106. amount = skill.getAmount(player, "skill.block_up");
  1107. if(amount > 0) {
  1108. status.addTimed(player, 51, 1200, "Block Up");
  1109. data.setTimer(player, "block_up", 1200);
  1110. new_amount = amount - 1;
  1111. skill.setAmount(player, "skill.block_up", new_amount);
  1112. msg.prefix(player, prefix_skill, string.concat("Used Block Up. New amount: ", string.number(new_amount)));
  1113. }
  1114. goto("wait");
  1115. }
  1116. if(tech_name == "skill.block_down") {
  1117. duration = data.getTimer(player, "block_down");
  1118. if(duration > 0) {
  1119. msg.prefix(player, prefix_skill, "Skill already active.");
  1120. goto("wait");
  1121. }
  1122. amount = skill.getAmount(player, "skill.block_down");
  1123. if(amount > 0) {
  1124. status.addTimed(player, 52, 1200, "Block Down");
  1125. data.setTimer(player, "block_down", 1200);
  1126. new_amount = amount - 1;
  1127. skill.setAmount(player, "skill.block_down", new_amount);
  1128. msg.prefix(player, prefix_skill, string.concat("Used Block Down. New amount: ", string.number(new_amount)));
  1129. }
  1130. goto("wait");
  1131. }
  1132. }
  1133. goto("wait");
  1134. }
  1135. if(title_string == "§8Settings") {
  1136. if(inv_slot == 0) {
  1137. new_value = !player.getAutoCloseDoor(player);
  1138. player.setAutoCloseDoor(player, new_value);
  1139. inv.setItem(inv, inv_slot, item.create("minecraft:oak_door", 1, "§fAutomatic Doors", item.createLore(new_value)));
  1140. }
  1141. elseif(inv_slot == 1) {
  1142. new_value = !player.doesAcceptTpaRequests(player);
  1143. player.acceptTpaRequests(player, new_value);
  1144. inv.setItem(inv, inv_slot, item.create("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", item.createLore(new_value)));
  1145. }
  1146. elseif(inv_slot == 2) {
  1147. new_value = !player.getShowcoords(player);
  1148. player.setShowcoords(player, new_value);
  1149. inv.setItem(inv, inv_slot, item.create("minecraft:compass", 1, "§fShow Coords", item.createLore(new_value)));
  1150. if(!new_value) {
  1151. sb.remove(player, 2);
  1152. sb.remove(player, 3);
  1153. }
  1154. }
  1155. elseif(inv_slot == 3) {
  1156. new_value = !player.hasSittingActivated(player);
  1157. player.activateSitting(player, new_value);
  1158. inv.setItem(inv, inv_slot, item.create("minecraft:oak_stairs", 1, "§fStair-Sitting", item.createLore(new_value)));
  1159. }
  1160. elseif(inv_slot == 4) {
  1161. new_value = !hasPvpOn(player);
  1162. setPvp(player, new_value);
  1163. inv.setItem(inv, inv_slot, item.create("minecraft:iron_sword", 1, "§fPvP", item.createLore(new_value)));
  1164. }
  1165. elseif(inv_slot == 5) {
  1166. new_value = !player.getNoPetDamage(player);
  1167. player.setNoPetDamage(player, new_value);
  1168. inv.setItem(inv, inv_slot, item.create("minecraft:bone", 1, "§fNo Pet Damage", item.createLore(new_value)));
  1169. }
  1170. elseif(inv_slot == 6) {
  1171. new_value = !player.getTipLoop(player);
  1172. player.setTipLoop(player, new_value);
  1173. inv.setItem(inv, inv_slot, item.create("minecraft:oak_sign", 1, "§fShow tip loop", item.createLore(new_value)));
  1174. }
  1175. elseif(inv_slot == 7) {
  1176. new_value = !player.usesCustomMessage(player);
  1177. player.activateCustomMessage(player, new_value);
  1178. inv.setItem(inv, inv_slot, item.create("minecraft:oak_sign", 1, "§fUse custom messages", item.createLore(new_value)));
  1179. }
  1180. }
  1181. goto("wait");
  1182. }
  1183. if(event == "inv_close") {
  1184. if(set.contains(invseeids, inv_id)) {
  1185. set.remove(invseeids, inv_id);
  1186. }
  1187. goto("wait");
  1188. }
  1189. goto("wait");
  1190. @block
  1191. if(size == 0) {
  1192. @blockhelp
  1193. msg.prefix(player, prefix_plot, "/block ...");
  1194. msg.string(player, "§d - info §rPrints info about a block");
  1195. msg.string(player, "§d - public §rMakes a block public");
  1196. msg.string(player, "§d - remove §rRemoves a block from public list");
  1197. if(perm.has("block.fix", player)) {
  1198. msg.string(player, "§d - fix §rRemoves all air blocks from public list");
  1199. }
  1200. goto("wait");
  1201. }
  1202. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1203. if(arg0 == "info") {
  1204. block = player.getTargetBlock(player, 5);
  1205. if(block == null) {
  1206. msg.prefix(player, prefix_commands, "No block in sight.");
  1207. goto("wait");
  1208. }
  1209. target_loc = block.getLocation(block);
  1210. msg.string(player, string.getSpacer());
  1211. x = string.number(loc.getX(target_loc));
  1212. y = string.number(loc.getY(target_loc));
  1213. z = string.number(loc.getZ(target_loc));
  1214. msg.string(player, string.concat("§6W §r", world.getName(loc.getWorld(target_loc))));
  1215. msg.string(player, string.concat("§6X §r", x, " §6Y §r", y, " §6Z §r", z));
  1216. msg.string(player, string.concat("§6Type: §r", block.getType(block)));
  1217. msg.string(player, string.concat("§6Public: §r", plot.hasBlock(target_loc)));
  1218. msg.string(player, string.concat("§6Data: §r", block.getData(block)));
  1219. goto("wait");
  1220. }
  1221. if(arg0 == "public") {
  1222. if(size != 1) {
  1223. msg.prefix(player, prefix_commands, "/block public");
  1224. goto("wait");
  1225. }
  1226. block = player.getTargetBlock(player, 5);
  1227. if(block == null) {
  1228. msg.prefix(player, prefix_commands, "No block in sight.");
  1229. goto("wait");
  1230. }
  1231. location = block.getLocation(block);
  1232. plot.addBlock(location);
  1233. msg.prefix(player, prefix_commands, "Block whitelisted for interaction.");
  1234. plot.saveBlocks(loc.getWorld(location));
  1235. goto("wait");
  1236. }
  1237. if(arg0 == "remove") {
  1238. if(size != 1) {
  1239. msg.prefix(player, prefix_commands, "/block remove");
  1240. goto("wait");
  1241. }
  1242. block = player.getTargetBlock(player, 5);
  1243. if(block == null) {
  1244. msg.prefix(player, prefix_commands, "No block in sight.");
  1245. goto("wait");
  1246. }
  1247. location = block.getLocation(block);
  1248. plot.removeBlock(location);
  1249. msg.prefix(player, prefix_commands, "Block no longer whitelisted for interaction.");
  1250. plot.saveBlocks(loc.getWorld(location));
  1251. goto("wait");
  1252. }
  1253. if(arg0 == "fix") {
  1254. if(!perm.has("block.fix", player)) {
  1255. perm.no("block.fix", player);
  1256. goto("wait");
  1257. }
  1258. //temp_list verhindern concurrent modification
  1259. temp_list = list.new();
  1260. world = world.getOverWorld();
  1261. c = 0;
  1262. iter = plot.blockIterator(world);
  1263. while(hasNext(iter)) {
  1264. pos = next(iter);
  1265. x = plot.position.getX(pos);
  1266. y = plot.position.getY(pos);
  1267. z = plot.position.getZ(pos);
  1268. loc = loc.new(world, x, y, z);
  1269. block = block.get(loc);
  1270. if(block.isAir(block)) {
  1271. c++;
  1272. list.add(temp_list, loc);
  1273. }
  1274. }
  1275. iter = iterator(temp_list);
  1276. while(hasNext(iter)) {
  1277. plot.removeBlock(next(iter));
  1278. }
  1279. msg.prefix(player, prefix_commands, string.concat("Removed ", string.number(c), " blocks."));
  1280. goto("wait");
  1281. }
  1282. goto("blockhelp");
  1283. @settings
  1284. inv = inv.new("222222222", text.new("§8Settings"));
  1285. inv.setItem(inv, 0, item.create("minecraft:oak_door", 1, "§fAutomatic Doors", item.createLore(player.getAutoCloseDoor(player))));
  1286. inv.setItem(inv, 1, item.create("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", item.createLore(player.doesAcceptTpaRequests(player))));
  1287. inv.setItem(inv, 2, item.create("minecraft:compass", 1, "§fShow Coords", item.createLore(player.getShowcoords(player))));
  1288. inv.setItem(inv, 3, item.create("minecraft:oak_stairs", 1, "§fStair-Sitting", item.createLore(player.hasSittingActivated(player))));
  1289. inv.setItem(inv, 4, item.create("minecraft:iron_sword", 1, "§fPvP", item.createLore(hasPvpOn(player))));
  1290. inv.setItem(inv, 5, item.create("minecraft:bone", 1, "§fNo Pet Damage", item.createLore(player.getNoPetDamage(player))));
  1291. inv.setItem(inv, 6, item.create("minecraft:oak_sign", 1, "§fShow tip loop", item.createLore(player.getTipLoop(player))));
  1292. inv.setItem(inv, 7, item.create("minecraft:oak_sign", 1, "§fUse custom messages", item.createLore(player.usesCustomMessage(player))));
  1293. inv.open(inv, player);
  1294. goto("wait");
  1295. @loginrequests
  1296. if(size < 2) {
  1297. msg.prefix(sender, prefix_commands, "/loginrequests <player/all> <amount> [result]");
  1298. goto("wait");
  1299. }
  1300. amount = list.getIndex(args, 1);
  1301. if(!isDouble(amount) || amount < 0) {
  1302. msg.prefix(player, prefix_shop, "Positive number expected.");
  1303. goto("wait");
  1304. }
  1305. result = null;
  1306. if(size == 3) {
  1307. result = list.getIndex(args, 2);
  1308. if(result != "ALLOWED" &&
  1309. result != "KICK_FULL" &&
  1310. result != "KICK_BANNED" &&
  1311. result != "KICK_WHITELIST" &&
  1312. result != "KICK_OTHER") {
  1313. msg.prefix(player, prefix_shop, "No valid result.");
  1314. goto("wait");
  1315. }
  1316. }
  1317. p_name = list.getIndex(args, 0);
  1318. if(p_name == "all") {
  1319. list = loginrequests.getAll(amount, result);
  1320. } else {
  1321. p_uuid = player.getUuid(p_name);
  1322. if(p_uuid == null) {
  1323. msg.prefix(player, prefix_tips, "This player has never been online.");
  1324. goto("wait");
  1325. }
  1326. p_id = player.getId(p_uuid);
  1327. list = loginrequests.getPlayer(p_id, amount, result);
  1328. }
  1329. table = table.new("§b", 10, 11, 10);
  1330. msg.string(player, table.getStart(table));
  1331. msg.string(player, table.get(table, "Player", "Time", "Result"));
  1332. msg.string(player, table.getMiddle(table));
  1333. iter = iterator(list);
  1334. while(hasNext(iter)) {
  1335. a = next(iter);
  1336. msg.string(player, table.get(table, player.getNameFromId(a[0]), time.getString(a[1]), a[2]));
  1337. }
  1338. msg.string(player, table.getEnd(table));
  1339. goto("wait");
  1340. @shop
  1341. if(size == 0) {
  1342. @shop_help
  1343. msg.prefix(player, prefix_shop, "/shop ...");
  1344. msg.string(player, "§6 - create §rCreates a shop");
  1345. msg.string(player, "§6 - buy <amount> <price> §rSet buy settings");
  1346. msg.string(player, "§6 - sell <amount> <price> §rSet sell settings");
  1347. msg.string(player, "§6 - remove <buy/sell> §rRemove settings");
  1348. if(perm.has("shop.owner", player)) {
  1349. msg.string(player, "§6 - owner <player> §rSet shop owner");
  1350. }
  1351. goto("wait");
  1352. }
  1353. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1354. if(arg0 == "create") {
  1355. if(size != 1) {
  1356. msg.prefix(player, prefix_shop, "§6/shop create");
  1357. goto("wait");
  1358. }
  1359. sign_block = player.getTargetBlock(player, 5, false, false);
  1360. if(!block.isWallSign(sign_block)) {
  1361. msg.prefix(player, prefix_shop, "Look at a wall sign.");
  1362. goto("wait");
  1363. }
  1364. chest_block = block.mod(sign_block, 0, -1, 0);
  1365. if(!block.isChest(chest_block)) {
  1366. msg.prefix(player, prefix_shop, "No chest under sign.");
  1367. goto("wait");
  1368. }
  1369. if(sign.getString(sign_block, "FRONT", 0) != "") {
  1370. msg.prefix(player, prefix_shop, "Sign is not empty.");
  1371. goto("wait");
  1372. }
  1373. sign_loc = block.getLocation(sign_block);
  1374. sign.setString(sign_block, "FRONT", 0, "[Shop]");
  1375. sign.setString(sign_block, "FRONT", 3, string.number(player.getId(player)));
  1376. block.signSetWaxed(sign_block, true);
  1377. msg.prefix(player, prefix_shop, "Created Shop.");
  1378. goto("wait");
  1379. }
  1380. if(arg0 == "buy" || arg0 == "sell") {
  1381. if(size != 3) {
  1382. msg.prefix(player, prefix_shop, string.concat("§6/shop ", arg0, " <amount> <price>"));
  1383. goto("wait");
  1384. }
  1385. amount = list.getIndex(args, 1);
  1386. price = list.getIndex(args, 2);
  1387. if(!isDouble(amount) || !isDouble(price)) {
  1388. msg.prefix(player, prefix_shop, "Number expected.");
  1389. goto("wait");
  1390. }
  1391. amount = math.round(amount);
  1392. if(amount < 0) {
  1393. msg.prefix(player, prefix_shop, "Positive number expected.");
  1394. goto("wait");
  1395. }
  1396. if(price < 0) {
  1397. msg.prefix(player, prefix_shop, "Positive number expected.");
  1398. goto("wait");
  1399. }
  1400. if(price > 266304) {
  1401. msg.prefix(player, prefix_shop, string.concat("Maximum ", money.getString(266304), " allowed."));
  1402. goto("wait");
  1403. }
  1404. sign_block = player.getTargetBlock(player, 5, false, false);
  1405. if(!block.isWallSign(sign_block)) {
  1406. msg.prefix(player, prefix_shop, "Look at a wall sign.");
  1407. goto("wait");
  1408. }
  1409. chest_block = block.mod(sign_block, 0, -1, 0);
  1410. if(!block.isChest(chest_block)) {
  1411. msg.prefix(player, prefix_shop, "No chest under sign.");
  1412. goto("wait");
  1413. }
  1414. if(!shop.isOwner(player, sign_block)) {
  1415. msg.prefix(player, prefix_shop, "You are not the owner.");
  1416. goto("wait");
  1417. }
  1418. if(arg0 == "buy") {
  1419. sign.setString(sign_block, "FRONT", 1, string.concat("Buy ", string.number(amount), " for ", string.number(price)));
  1420. } else {
  1421. sign.setString(sign_block, "FRONT", 2, string.concat("Sell ", string.number(amount), " for ", string.number(price)));
  1422. }
  1423. msg.prefix(player, prefix_shop, "Price set.");
  1424. goto("wait");
  1425. }
  1426. if(arg0 == "remove") {
  1427. if(size != 2) {
  1428. msg.prefix(player, prefix_shop, "§6/shop remove <buy/sell>");
  1429. goto("wait");
  1430. }
  1431. sign_block = player.getTargetBlock(player, 5, false, false);
  1432. if(!block.isWallSign(sign_block)) {
  1433. msg.prefix(player, prefix_shop, "Look at a wall sign.");
  1434. goto("wait");
  1435. }
  1436. chest_block = block.mod(sign_block, 0, -1, 0);
  1437. if(!block.isChest(chest_block)) {
  1438. msg.prefix(player, prefix_shop, "No chest under sign.");
  1439. goto("wait");
  1440. }
  1441. if(!shop.isOwner(player, sign_block)) {
  1442. msg.prefix(player, prefix_shop, "You are not the owner.");
  1443. goto("wait");
  1444. }
  1445. arg1 = string.toLowerCase(list.getIndex(args, 1));
  1446. if(arg1 == "buy") {
  1447. sign.setString(sign_block, "FRONT", 1, "");
  1448. } elseif(arg1 == "sell") {
  1449. sign.setString(sign_block, "FRONT", 2, "");
  1450. } else {
  1451. msg.prefix(player, prefix_shop, "§6/shop remove <buy/sell>");
  1452. goto("wait");
  1453. }
  1454. msg.prefix(player, prefix_shop, "Price removed.");
  1455. goto("wait");
  1456. }
  1457. if(arg0 == "owner") {
  1458. if(!perm.has("shop.owner", player)) {
  1459. perm.no("shop.owner", player);
  1460. goto("wait");
  1461. }
  1462. if(size != 2) {
  1463. msg.prefix(player, prefix_shop, "§6/shop owner <player>");
  1464. goto("wait");
  1465. }
  1466. p_name = list.getIndex(args, 1);
  1467. p_uuid = player.getUuid(p_name);
  1468. if(p_uuid == null) {
  1469. msg.prefix(player, prefix_shop, "This player has never been online.");
  1470. goto("wait");
  1471. }
  1472. sign_block = player.getTargetBlock(player, 5, false, false);
  1473. if(!block.isWallSign(sign_block)) {
  1474. msg.prefix(player, prefix_shop, "Look at a wall sign.");
  1475. goto("wait");
  1476. }
  1477. sign.setString(sign_block, "FRONT", 3, string.number(player.getId(p_uuid)));
  1478. goto("wait");
  1479. }
  1480. goto("shop_help");
  1481. @mailbox
  1482. location = entity.getLocation(player);
  1483. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1484. if(!world.isSurvName(world_name)) {
  1485. msg.prefix(player, prefix_commands, "You can´t use this command in this world.");
  1486. goto("wait");
  1487. }
  1488. if(player.isOnAdventure(player) && !perm.has("mailbox.other", player)) {
  1489. msg.prefix(player, prefix_commands, "You can´t use the mailbox while on adventure.");
  1490. goto("wait");
  1491. }
  1492. if(size == 0) {
  1493. msg.prefix(player, prefix_commands, "/mailbox...");
  1494. if(perm.has("mailbox.other", player)) {
  1495. msg.string(player, "§6 - show [player] §rOpens a mailbox of a player.");
  1496. } else {
  1497. msg.string(player, "§6 - show §rOpens your mailbox.");
  1498. }
  1499. msg.string(player, "§6 - send <player> §rSends the item in your hand to a mailbox of a player.");
  1500. goto("wait");
  1501. }
  1502. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1503. if(arg0 == "send") {
  1504. if(size != 2) {
  1505. msg.prefix(player, prefix_commands, "/mailbox send <player>");
  1506. goto("wait");
  1507. }
  1508. item = living.getHand(player);
  1509. if(item.isAir(item)) {
  1510. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1511. goto("wait");
  1512. }
  1513. to_name = list.getIndex(args, 1);
  1514. if(!checkIfEverOnline(to_name)) {
  1515. msg.prefix(player, prefix_commands, "This player has never been online.");
  1516. goto("wait");
  1517. }
  1518. to_player_id = player.getId(player.getUuid(to_name));
  1519. if(!mailbox.sendItem(to_player_id, item)) {
  1520. msg.prefix(player, prefix_commands, "No free space in mailbox.");
  1521. goto("wait");
  1522. }
  1523. living.setEquip(player, read.slot("HAND"), null);
  1524. msg.send(player, to_name, prefix_commands, string.concat(player.getName(player), " sent you items to your mailbox."), true);
  1525. msg.prefix(player, prefix_commands, "Item sent to player.");
  1526. goto("wait");
  1527. }
  1528. if(arg0 == "show") {
  1529. if(size == 1) {
  1530. player_id = player.getId(player);
  1531. mailbox.show(player, player_id, false);
  1532. mailbox.clear(player_id);
  1533. goto("wait");
  1534. }
  1535. if(size == 2) {
  1536. if(!perm.has("mailbox.other", player)) {
  1537. perm.no("mailbox.other", player);
  1538. goto("wait");
  1539. }
  1540. from_name = list.getIndex(args, 1);
  1541. if(!checkIfEverOnline(from_name)) {
  1542. msg.prefix(player, prefix_commands, "This player has never been online.");
  1543. goto("wait");
  1544. }
  1545. from_player_id = player.getId(player.getUuid(from_name));
  1546. mailbox.show(player, from_player_id, true);
  1547. goto("wait");
  1548. }
  1549. if(perm.has("mailbox.other", player)) {
  1550. msg.prefix(player, prefix_commands, "/mailbox show [player]");
  1551. } else {
  1552. msg.prefix(player, prefix_commands, "/mailbox show");
  1553. }
  1554. }
  1555. goto("wait");
  1556. @RickRole_play
  1557. if(rickIndex < rick_sounds_amount) {
  1558. pitch = list.getIndex(RickRollSounds, rickIndex);
  1559. PlayVoteSound(pitch);
  1560. ticks = 2 + list.getIndex(RickRollSoundDists, rickIndex);
  1561. sgoto(ticks, "RickRole_play");
  1562. }
  1563. rickIndex++;
  1564. goto("wait");
  1565. @bobbycar_play
  1566. if(bobbycarIndex < bcar_sounds_amount) {
  1567. pitch = list.getIndex(bobbyCarSounds, bobbycarIndex);
  1568. PlayVoteSound(pitch);
  1569. ticks = list.getIndex(bobbyCarSoundDists, bobbycarIndex);
  1570. sgoto(ticks, "bobbycar_play");
  1571. }
  1572. bobbycarIndex++;
  1573. goto("wait");
  1574. function PlayVoteSound(pitch) {
  1575. iter = iterator(players.toList());
  1576. while(hasNext(iter)) {
  1577. online_player = next(iter);
  1578. if(online_player == null) {
  1579. continue;
  1580. }
  1581. sound.spawnForPlayer(online_player, $sound_flute, $sound_category_master, 1, pitch);
  1582. sound.spawnForPlayer(online_player, $sound_harp, $sound_category_master, 1, pitch);
  1583. sound.spawnForPlayer(online_player, $sound_pling, $sound_category_master, 1, pitch);
  1584. }
  1585. }
  1586. @resetMoneyBoost
  1587. money.setBoostFactor(1);
  1588. online_list = players.toList();
  1589. iter = iterator(online_list);
  1590. while(hasNext(iter)) {
  1591. p = next(iter);
  1592. sb.remove(p, 5);
  1593. }
  1594. goto("wait");
  1595. @skip_night_loop
  1596. skip_night_counter--;
  1597. if(skip_night_counter == 0) {
  1598. msg.online(prefix_commands, "Skip night results:");
  1599. msg("online", text.new(string.concat("§e - §rYes: §e", string.number(skip_night_yes))));
  1600. msg("online", text.new(string.concat("§e - §rNo: §e", string.number(skip_night_no))));
  1601. msg("online", text.new(string.concat("§e - §rI don´t care: §e", string.number(skip_night_no_care))));
  1602. if(skip_night_yes > skip_night_no) {
  1603. world = world.getOverWorld();
  1604. world.setTime(world, 0);
  1605. }
  1606. set.clear(skip_night_set);
  1607. last_skip_night = time.getMillis();
  1608. iter = iterator(skip_night_yes_list);
  1609. while(hasNext(iter)) {
  1610. p = player.get(next(iter));
  1611. if(p != null) {
  1612. player.resetSleep(p);
  1613. }
  1614. }
  1615. sgoto(8400, "reset_skip_night");
  1616. goto("wait");
  1617. }
  1618. sgoto(20, "skip_night_loop");
  1619. goto("wait");
  1620. @reset_skip_night
  1621. skip_night_started = false;
  1622. goto("wait");
  1623. @skills
  1624. //skills [player]
  1625. if(size == 0) {
  1626. skill.showAll(player, player);
  1627. goto("wait");
  1628. }
  1629. if(!perm.has("skills.other", player)) {
  1630. perm.no("skills.other", player);
  1631. goto("wait");
  1632. }
  1633. p_name = list.getIndex(args, 0);
  1634. p_uuid = player.getUuid(p_name);
  1635. if(p_uuid == null) {
  1636. msg.prefix(player, prefix_tips, "This player has never been online.");
  1637. goto("wait");
  1638. }
  1639. from_p_id = player.getId(p_uuid);
  1640. skill.showAll(from_p_id, player);
  1641. goto("wait");
  1642. @infopoint1
  1643. msg.string(player, string.getSpacer());
  1644. msg.prefix(player, "§eSurvival", "§aEnjoy classic survival extended by our plugin.");
  1645. goto("wait");
  1646. @infopoint2
  1647. msg.string(player, string.getSpacer());
  1648. msg.prefix(player, "§eAdventure", "§aSearching for a new challenge? Get teleported thousands of blocks away in the wildness with no inventory and find your way back to spawn.");
  1649. goto("wait");
  1650. @infopoint3
  1651. msg.string(player, string.getSpacer());
  1652. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  1653. goto("wait");
  1654. @infopoint4
  1655. msg.string(player, string.getSpacer());
  1656. msg.prefix(player, "§eClans", "§aAs a well-known player on our server you can create your own community. By now as a clan you can only create cities.");
  1657. goto("wait");
  1658. @infopoint5
  1659. msg.string(player, string.getSpacer());
  1660. msg.prefix(player, "§eCities", "§aAs a plot owner you can raise your plots to big cities. Create sub-plots and sell them to other players.");
  1661. goto("wait");
  1662. @infopoint6
  1663. msg.string(player, string.getSpacer());
  1664. msg.prefix(player, "§eShops", "§aTrade with citizens and players, or create your own chest shop with /shop.");
  1665. goto("wait");
  1666. @infopoint7
  1667. msg.string(player, string.getSpacer());
  1668. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  1669. goto("wait");
  1670. @infopoint8
  1671. msg.string(player, string.getSpacer());
  1672. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  1673. goto("wait");
  1674. @infopoint9
  1675. msg.string(player, string.getSpacer());
  1676. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  1677. goto("wait");
  1678. @infopoint10
  1679. msg.string(player, string.getSpacer());
  1680. msg.prefix(player, "§eJokes", "§aWe have no rules, except to be respectful. Look at our jokes instead.");
  1681. goto("wait");
  1682. @infopoint12
  1683. msg.string(player, string.getSpacer());
  1684. msg.prefix(player, "§eCreative", "§aBe Creative in our creative world.");
  1685. goto("wait");
  1686. @party
  1687. if(size == 0) {
  1688. @partyhelp
  1689. msg.prefix(player, prefix_party, "/party ...");
  1690. msg.string(player, "§5 - invite <player> §rInvite a player");
  1691. msg.string(player, "§5 - invite friends §rInvites all online friends");
  1692. msg.string(player, "§5 - accept <player> §rAccept an invitation");
  1693. msg.string(player, "§5 - deny <player> §rDeny an invitation");
  1694. msg.string(player, "§5 - kick <player> §rKick a player");
  1695. msg.string(player, "§5 - leave §rLeave the party");
  1696. msg.string(player, "§5 - promote <player> §rPromote a player");
  1697. msg.string(player, "§5 - demote <player> §rDemote a player");
  1698. msg.string(player, "§5 - disband §rDisband a party");
  1699. msg.string(player, "§5 - list §rParty information");
  1700. msg.string(player, "§5 - <message> §rSends a party message");
  1701. goto("wait");
  1702. }
  1703. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1704. if(arg0 == "list") {
  1705. if(size != 1) {
  1706. msg.prefix(player, prefix_party, "§5/party list");
  1707. } else {
  1708. if(!player.isInParty(player)) {
  1709. msg.prefix(player, prefix_party, "You are not in a party.");
  1710. goto("wait");
  1711. }
  1712. list = party.getList(player.getPartyId(player));
  1713. width = 1;
  1714. if(list.getSize(list) > 9) {
  1715. width = 2;
  1716. }
  1717. table = table.new("§5", width, 13, 7);
  1718. msg.string(player, table.getStart(table));
  1719. msg.string(player, table.get(table, "§d#", "§d§lName", "§d§lRole"));
  1720. msg.string(player, table.getMiddle(table));
  1721. iter = iterator(list);
  1722. c = 0;
  1723. while(hasNext(iter)) {
  1724. c++;
  1725. p = player.get(next(iter));
  1726. msg.string(player, table.get(table, string.number(c), player.getName(p), player.getPartyRank(p)));
  1727. }
  1728. msg.string(player, table.getEnd(table));
  1729. }
  1730. goto("wait");
  1731. }
  1732. if(arg0 == "leave") {
  1733. if(size != 1) {
  1734. msg.prefix(player, prefix_party, "§5/party leave");
  1735. } else {
  1736. if(!player.isInParty(player)) {
  1737. msg.prefix(player, prefix_party, "You are not in a party.");
  1738. goto("wait");
  1739. }
  1740. party.kickPlayer(player, "leave");
  1741. }
  1742. goto("wait");
  1743. }
  1744. if(arg0 == "disband") {
  1745. if(size != 1) {
  1746. msg.prefix(player, prefix_party, "§5/party disband");
  1747. } else {
  1748. if(!player.isInParty(player)) {
  1749. msg.prefix(player, prefix_party, "You are not in a party.");
  1750. goto("wait");
  1751. }
  1752. if(!player.isPartyLeader(player)) {
  1753. msg.prefix(player, prefix_party, "You are not the party leader.");
  1754. goto("wait");
  1755. }
  1756. party.delete(player.getPartyId(player));
  1757. }
  1758. goto("wait");
  1759. }
  1760. if(arg0 == "kick") {
  1761. if(size != 2) {
  1762. msg.prefix(player, prefix_party, "§5/party kick <player>");
  1763. } else {
  1764. if(!player.isInParty(player)) {
  1765. msg.prefix(player, prefix_party, "You are not in a party.");
  1766. goto("wait");
  1767. }
  1768. if(!player.isPartyLeaderOrMod(player)) {
  1769. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1770. goto("wait");
  1771. }
  1772. pname = list.getIndex(args, 1);
  1773. if(!checkIfEverOnline(pname)) {
  1774. msg.prefix(player, prefix_party, "This player has never been online.");
  1775. goto("wait");
  1776. }
  1777. p = read.player(pname);
  1778. if(p == null) {
  1779. msg.prefix(player, prefix_party, "This player is not online.");
  1780. goto("wait");
  1781. }
  1782. if(player == p) {
  1783. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1784. goto("wait");
  1785. }
  1786. if(!party.same(p, player)) {
  1787. msg.prefix(player, prefix_party, "This player is not in your party.");
  1788. goto("wait");
  1789. }
  1790. ownrank = player.getPartyRank(player);
  1791. if(ownrank == "Moderator") {
  1792. if(player.isPartyLeaderOrMod(p)) {
  1793. msg.prefix(player, prefix_party, "You can´t kick this player.");
  1794. goto("wait");
  1795. }
  1796. }
  1797. party.kickPlayer(p, "kick");
  1798. }
  1799. goto("wait");
  1800. }
  1801. if(arg0 == "promote" || arg0 == "demote") {
  1802. if(size != 2) {
  1803. msg.prefix(player, prefix_party, string.concat("§5/party ", arg0, " <player>"));
  1804. } else {
  1805. pname = list.getIndex(args, 1);
  1806. if(!player.isInParty(player)) {
  1807. msg.prefix(player, prefix_party, "You are not in a party.");
  1808. goto("wait");
  1809. }
  1810. if(!player.isPartyLeader(player)) {
  1811. msg.prefix(player, prefix_party, "You are not the party leader.");
  1812. goto("wait");
  1813. }
  1814. if(!checkIfEverOnline(pname)) {
  1815. msg.prefix(player, prefix_party, "This player has never been online.");
  1816. goto("wait");
  1817. }
  1818. p = read.player(pname);
  1819. if(p == null) {
  1820. msg.prefix(player, prefix_party, "This player is not online.");
  1821. goto("wait");
  1822. }
  1823. if(player == p) {
  1824. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1825. goto("wait");
  1826. }
  1827. if(!party.same(p, player)) {
  1828. msg.prefix(player, prefix_party, "This player is not in your party.");
  1829. goto("wait");
  1830. }
  1831. partyid = player.getPartyId(player);
  1832. rank = player.getPartyRank(p);
  1833. if(arg0 == "promote") {
  1834. if(rank == "Player") {
  1835. player.setPartyRank(p, "Moderator");
  1836. party.sendMessage(partyid, string.concat("§r", pname, " is now Moderator."));
  1837. } elseif(rank == "Moderator") {
  1838. player.setPartyRank(p, "Leader");
  1839. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1840. party.sendMessage(partyid, string.concat("§r", pname, " is now Leader."));
  1841. }
  1842. } elseif(arg0 == "demote") {
  1843. if(rank == "Moderator") {
  1844. player.setPartyRank(p, "Player");
  1845. party.sendMessage(partyid, string.concat("§r", pname, " is no longer Moderator."));
  1846. } else {
  1847. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1848. }
  1849. }
  1850. }
  1851. goto("wait");
  1852. }
  1853. if(arg0 == "invite") {
  1854. if(size != 2) {
  1855. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1856. } else {
  1857. arg1 = list.getIndex(args, 1);
  1858. if(arg1 == "friends") {
  1859. player_id = player.getId(player);
  1860. friends = friend.getListOnline(player_id);
  1861. iter = iterator(friends);
  1862. while(hasNext(iter)) {
  1863. f_name = next(iter);
  1864. f = read.player(f_name);
  1865. party.invitePlayer(player, f);
  1866. }
  1867. msg.prefix(player, prefix_party, "All online friends invited.");
  1868. goto("wait");
  1869. }
  1870. p_name = arg1;
  1871. if(!checkIfEverOnline(p_name)) {
  1872. msg.prefix(player, prefix_party, "This player has never been online.");
  1873. goto("wait");
  1874. }
  1875. p = read.player(p_name);
  1876. temp = party.invitePlayer(player, p);
  1877. if(temp == "inviteeNotOnline") {
  1878. msg.prefix(player, prefix_party, "This player is not online.");
  1879. } elseif(temp == "inviterEqualsInvitee") {
  1880. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1881. } elseif(temp == "inviterNotPermitted") {
  1882. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1883. } elseif(temp == "inviteeAlreadyInParty") {
  1884. msg.prefix(player, prefix_party, "This player is already in your party.");
  1885. } elseif(temp == "inviteeAlreadyInvited") {
  1886. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1887. } else {
  1888. msg.prefix(player, prefix_party, "Invitation sent.");
  1889. }
  1890. }
  1891. goto("wait");
  1892. }
  1893. if(arg0 == "accept") {
  1894. if(size != 2) {
  1895. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1896. } else {
  1897. if(player.isInParty(player)) {
  1898. msg.prefix(player, prefix_party, "You are already in a party.");
  1899. goto("wait");
  1900. }
  1901. pname = list.getIndex(args, 1);
  1902. if(!checkIfEverOnline(pname)) {
  1903. msg.prefix(player, prefix_party, "This player has never been online.");
  1904. goto("wait");
  1905. }
  1906. p = read.player(pname);
  1907. if(p == null) {
  1908. msg.prefix(player, prefix_party, "This player is no longer online.");
  1909. goto("wait");
  1910. }
  1911. player_uuid = player.getUuid(player);
  1912. p_uuid = player.getUuid(p);
  1913. list = map.get(party_invitations, player_uuid);
  1914. if(list == null || !list.contains(list, p_uuid)) {
  1915. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1916. goto("wait");
  1917. }
  1918. if(player.isInParty(p)) { //wenn einlader bereits in party
  1919. partyid = player.getPartyId(p);
  1920. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1921. party.addPlayer(partyid, player);
  1922. player.setPartyRank(player, "Player");
  1923. } else {
  1924. msg.prefix(player, prefix_party, "This player is already in another party.");
  1925. goto("wait");
  1926. }
  1927. } else {
  1928. partyid = map.get(party_invite_ids, p_uuid);
  1929. party.setList(partyid, list.new());
  1930. party.addPlayer(partyid, p);
  1931. party.addPlayer(partyid, player);
  1932. player.setPartyRank(p, "Leader");
  1933. player.setPartyRank(player, "Player");
  1934. msg.prefix(p, prefix_party, "The party was created.");
  1935. }
  1936. list.clear(list); //Einladungs-Liste von oben
  1937. party.sendMessage(partyid, string.concat("§r", player.getName(player), " joined the party."));
  1938. }
  1939. goto("wait");
  1940. }
  1941. if(arg0 == "deny") {
  1942. if(size != 2) {
  1943. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1944. } else {
  1945. player_uuid = player.getUuid(player);
  1946. list = map.get(party_invitations, player_uuid);
  1947. if(list != null) {
  1948. pname = list.getIndex(args, 1);
  1949. p = read.player(pname);
  1950. if(p == null) {
  1951. msg.prefix(player, prefix_party, "This player is no longer online.");
  1952. goto("wait");
  1953. }
  1954. p_uuid = player.getUuid(p);
  1955. if(list == null || !list.contains(list, p_uuid)) {
  1956. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1957. goto("wait");
  1958. }
  1959. index = list.getIndexOf(list, p_uuid);
  1960. list.remove(list, p_uuid);
  1961. keytimes = map.get(delkeytimes, player_uuid);
  1962. list.removeIndex(keytimes, index);
  1963. p = read.player(pname);
  1964. if(p != null) {
  1965. msg.prefix(p, prefix_party, string.concat("§r", player.getName(player), " has denied your invitation."));
  1966. }
  1967. msg.prefix(player, prefix_party, string.concat("Invitation from ", pname, " denied."));
  1968. }
  1969. }
  1970. goto("wait");
  1971. }
  1972. if(player.isInParty(player)) {
  1973. message = string.concat(player.getName(player), " §1| §r", string.concatList(args, " ", 0, list.getSize(args) - 1));
  1974. party.sendMessage(player.getPartyId(player), message);
  1975. goto("wait");
  1976. }
  1977. goto("partyhelp");
  1978. @setmessage
  1979. if(size == 0) {
  1980. @setmessagehelp
  1981. msg.prefix(player, prefix_commands, "/setmessage ...");
  1982. msg.string(player, "§e- join <message> §rSets your join message");
  1983. msg.string(player, "§e- leave <message> §rSets your leave message");
  1984. msg.string(player, "§e- death <message> §rSets your death message");
  1985. msg.string(player, "§e- info §rShows you set messages");
  1986. if(perm.has("setmessage.delete", player)) {
  1987. msg.string(player, "§e- delete <player> §rDeletes a players messages");
  1988. }
  1989. goto("wait");
  1990. }
  1991. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1992. if(arg0 == "info") {
  1993. if(player.usesCustomMessage(player)) {
  1994. msg.prefix(player, prefix_commands, "Custom messages are activated.");
  1995. } else {
  1996. msg.prefix(player, prefix_commands, "Custom messages are deactivated. /settings");
  1997. }
  1998. fullname = player.getFullName(player);
  1999. message = player.getJoinMessage(player);
  2000. if(message == null) {
  2001. msg.prefix(player, prefix_commands, "No join message set.");
  2002. } else {
  2003. msg.prefix(player, prefix_commands, string.concat("§a§l> §r", fullname, " §9", message));
  2004. }
  2005. message = player.getLeaveMessage(player);
  2006. if(message == null) {
  2007. msg.prefix(player, prefix_commands, "No leave message set.");
  2008. } else {
  2009. msg.prefix(player, prefix_commands, string.concat("§c§l> §r", fullname, " §9", message));
  2010. }
  2011. message = player.getDeathMessage(player);
  2012. if(message == null) {
  2013. msg.prefix(player, prefix_commands, "No death message set.");
  2014. } else {
  2015. msg.prefix(player, prefix_commands, string.concat("§0§lx §r", fullname, " §9", message));
  2016. }
  2017. goto("wait");
  2018. }
  2019. if(arg0 == "join") {
  2020. if(size < 2) {
  2021. goto("setmessagehelp");
  2022. }
  2023. message = string.concatList(args, " ", 1, size - 1);
  2024. player.setJoinMessage(player, message);
  2025. msg.prefix(player, prefix_commands, "Join message set.");
  2026. goto("wait");
  2027. }
  2028. if(arg0 == "leave") {
  2029. if(size < 2) {
  2030. goto("setmessagehelp");
  2031. }
  2032. message = string.concatList(args, " ", 1, size - 1);
  2033. player.setLeaveMessage(player, message);
  2034. msg.prefix(player, prefix_commands, "Leave message set.");
  2035. goto("wait");
  2036. }
  2037. if(arg0 == "death") {
  2038. if(size < 2) {
  2039. goto("setmessagehelp");
  2040. }
  2041. message = string.concatList(args, " ", 1, size - 1);
  2042. player.setDeathMessage(player, message);
  2043. msg.prefix(player, prefix_commands, "Death message set.");
  2044. goto("wait");
  2045. }
  2046. if(arg0 == "delete") {
  2047. if(size == 1) {
  2048. p_uuid = player.getUuid(player);
  2049. } elseif(size == 2) {
  2050. if(!perm.has("setmessage.delete", player)) {
  2051. perm.no("setmessage.delete", player);
  2052. goto("wait");
  2053. }
  2054. p_name = list.getIndex(args, 1);
  2055. if(!checkIfEverOnline(p_name)) {
  2056. msg.prefix(player, prefix_commands, "This player has never been online.");
  2057. goto("wait");
  2058. }
  2059. p_uuid = player.getUuid(p_name);
  2060. } else {
  2061. goto("setmessagehelp");
  2062. }
  2063. p_id = player.getId(p_uuid);
  2064. player.setJoinMessage(p_id, "null");
  2065. player.setLeaveMessage(p_id, "null");
  2066. msg.prefix(player, prefix_commands, "Messages deleted.");
  2067. goto("wait");
  2068. }
  2069. goto("wait");
  2070. @lag
  2071. msg.prefix(player, prefix_commands, "Lag test is performed. Please wait...");
  2072. a = array.new(2);
  2073. a[0] = player.getUuid(player);
  2074. a[1] = time.getMillis();
  2075. list.add(lag_list, a);
  2076. sgoto(100, "do_lag_test");
  2077. goto("wait");
  2078. @do_lag_test
  2079. t = time.getMillis();
  2080. a = list.getIndex(lag_list, 0);
  2081. list.removeIndex(lag_list, 0);
  2082. p_uuid = a[0];
  2083. t_old = a[1];
  2084. t = math.roundComma((t - t_old) / 50 / 5, 2); //ms -> ticks
  2085. t = 40 - t;
  2086. p = player.get(p_uuid);
  2087. if(p != null) {
  2088. msg.prefix(p, prefix_commands, "Expected: 20 ticks/sec");
  2089. msg.prefix(p, prefix_commands, string.concat("Measured: ", string.number(t), " ticks/sec"));
  2090. }
  2091. goto("wait");
  2092. @live
  2093. boolean = !player.isLive(player);
  2094. player.setLive(player, boolean);
  2095. player.setHeadName(player);
  2096. player.setTabName(player);
  2097. msg.prefix(player, prefix_commands, "Live toggled.");
  2098. goto("wait");
  2099. @lightning
  2100. block = player.getTargetBlock(player, 50);
  2101. if(block == null) {
  2102. msg.prefix(player, prefix_commands, "No block in sight.");
  2103. goto("wait");
  2104. }
  2105. entity.spawn(block.getLocation(block), "LIGHTNING");
  2106. goto("wait");
  2107. @ride
  2108. entity = player.getTargetEntity(player, 5);
  2109. if(entity == null) {
  2110. msg.prefix(player, prefix_commands, "No entity found.");
  2111. goto("wait");
  2112. }
  2113. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  2114. if(world.isGamesName(world_name)) {
  2115. if(player.hasMinigame(player) || (perm.has("ride", player) && !perm.has("isTeam", player))) {
  2116. msg.prefix(player, prefix_commands, "You can´t use this now.");
  2117. goto("wait");
  2118. }
  2119. }
  2120. entity.mount(player, entity);
  2121. goto("wait");
  2122. @vanish
  2123. //vanish [on/off] [player]
  2124. if(size == 0) {
  2125. if(set.contains(vanish_set, player.getUuid(player))) {
  2126. bool = "off";
  2127. } else {
  2128. bool = "on";
  2129. }
  2130. }
  2131. if(size >= 1) {
  2132. bool = list.getIndex(args, 0);
  2133. }
  2134. if(size > 1) {
  2135. p_name = list.getIndex(args, 1);
  2136. p = read.player(p_name);
  2137. if(p == null) {
  2138. msg.prefix(player, prefix_commands, "This player is not online.");
  2139. goto("wait");
  2140. }
  2141. } else {
  2142. p = player;
  2143. }
  2144. p_name = player.getName(p);
  2145. player_name = player.getName(player);
  2146. if(bool == "on") {
  2147. if(p != player) {
  2148. msg.prefix(player, prefix_commands, string.concat(p_name, " has been vanished."));
  2149. msg.prefix(p, prefix_commands, string.concat("You have been vanished by ", player_name, "."));
  2150. } else {
  2151. msg.prefix(p, prefix_commands, "You are vanished.");
  2152. }
  2153. set.add(vanish_set, player.getUuid(p));
  2154. player.hideOnline(p);
  2155. } elseif(bool == "off") {
  2156. if(p != player) {
  2157. msg.prefix(player, prefix_commands, string.concat(p_name, " is no longer vanished."));
  2158. msg.prefix(p, prefix_commands, string.concat("You are no longer vanished caused by ", player_name, "."));
  2159. } else {
  2160. msg.prefix(p, prefix_commands, "You are no longer vanished.");
  2161. }
  2162. set.remove(vanish_set, player.getUuid(p));
  2163. player.showOnline(p);
  2164. } else {
  2165. msg.prefix(player, prefix_commands, "/vanish [on/off] [player]");
  2166. }
  2167. goto("wait");
  2168. @user
  2169. if(size == 0) {
  2170. @user_help
  2171. msg.prefix(sender, prefix_commands, "/user ...");
  2172. if(perm.has("user.other", player)) {
  2173. msg.string(sender, "§6 - info [player] §rReturns info about a user");
  2174. } else {
  2175. msg.string(sender, "§6 - info §rReturns info about you");
  2176. }
  2177. if(perm.has("user.money", player)) {
  2178. msg.string(sender, "§6 - addmoney <player> <money> §rAdds money to a player");
  2179. msg.string(sender, "§6 - setmoney <player> <money> §rSets the money of a player");
  2180. }
  2181. goto("wait");
  2182. }
  2183. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2184. if(arg0 == "info") {
  2185. if(size < 2) {
  2186. if(!isPlayer(sender)) {
  2187. msg.prefix(sender, prefix_commands, "/user info <player>");
  2188. goto("wait");
  2189. }
  2190. p_name = player.getName(player);
  2191. p_uuid = player.getUuid(p_name);
  2192. } else {
  2193. if(!perm.has("user.other", sender)) {
  2194. perm.no("user.other", sender);
  2195. goto("wait");
  2196. }
  2197. p_name = list.getIndex(args, 1);
  2198. if(!checkIfEverOnline(p_name)) {
  2199. msg.prefix(sender, prefix_commands, "This player has never been online.");
  2200. goto("wait");
  2201. }
  2202. p_uuid = player.getUuid(p_name);
  2203. p_name = player.getName(p_uuid);
  2204. }
  2205. p = read.player(p_name);
  2206. p_id = player.getId(p_uuid);
  2207. if(p == null) {
  2208. p_or_id = p_id;
  2209. } else {
  2210. p_or_id = p;
  2211. }
  2212. table = table.new("§8", 7, 24);
  2213. msg.string(sender, table.getStart(table));
  2214. msg.string(sender, table.get(table, "Player", p_name));
  2215. msg.string(sender, table.getMiddle(table));
  2216. msg.string(sender, table.get(table, "Playtime", string.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  2217. msg.string(sender, table.get(table, "Joins", string.number(player.getJoins(p_or_id))));
  2218. msg.string(sender, table.get(table, "First Join", time.getDateString(player.getFirstJoin(p_or_id))));
  2219. msg.string(sender, table.get(table, "Last Join", time.getDateString(player.getLastJoin(p_or_id))));
  2220. if(perm.has("user.other", sender)) {
  2221. msg.string(sender, table.get(table, "UUID", p_uuid));
  2222. msg.string(sender, table.get(table, "ID", string.number(p_id)));
  2223. if(player.isLive(sender)) {
  2224. msg.string(sender, table.get(table, "IP", "§7§oHidden"));
  2225. } else {
  2226. msg.string(sender, table.get(table, "IP", player.getLoggedIp(p_or_id)));
  2227. }
  2228. snuvis = money.get(p_or_id);
  2229. msg.string(sender, table.get(table, "Money", string.concat(money.getString(snuvis), " (",string.number(snuvis), ")")));
  2230. }
  2231. msg.string(sender, table.get(table, "Rank", getRank(p_or_id)));
  2232. msg.string(sender, table.get(table, "PvP", hasPvpOn(p_or_id)));
  2233. msg.string(sender, table.get(table, "Quests", string.number(quest.getCounter(p_or_id))));
  2234. msg.string(sender, table.get(table, "Adventures", string.number(player.getAdventureAmounts(p_or_id))));
  2235. msg.string(sender, table.getEnd(table));
  2236. goto("wait");
  2237. }
  2238. if(arg0 == "addmoney") {
  2239. if(!perm.has("user.money", sender)) {
  2240. perm.no("user.money", sender);
  2241. goto("wait");
  2242. }
  2243. if(size != 3) {
  2244. msg.prefix(sender, prefix_commands, "/user addmoney <player> <money>");
  2245. goto("wait");
  2246. }
  2247. p_name = list.getIndex(args, 1);
  2248. if(!checkIfEverOnline(p_name)) {
  2249. msg.prefix(sender, prefix_commands, "This player has never been online.");
  2250. goto("wait");
  2251. }
  2252. money = list.getIndex(args, 2);
  2253. if(!isDouble(money)) {
  2254. msg.prefix(sender, prefix_commands, "Number expected.");
  2255. goto("wait");
  2256. }
  2257. p_uuid = player.getUuid(p_name);
  2258. p_id = player.getId(p_uuid);
  2259. money.add(p_id, money);
  2260. msg.prefix(sender, prefix_commands, string.concat("Added ", money.getString(money), " to ", player.getName(p_uuid), "."));
  2261. goto("wait");
  2262. }
  2263. if(arg0 == "setmoney") {
  2264. if(!perm.has("user.money", sender)) {
  2265. perm.no("user.money", sender);
  2266. goto("wait");
  2267. }
  2268. if(size != 3) {
  2269. msg.prefix(sender, prefix_commands, "/user setmoney <player> <money>");
  2270. goto("wait");
  2271. }
  2272. p_name = list.getIndex(args, 1);
  2273. if(!checkIfEverOnline(p_name)) {
  2274. msg.prefix(sender, prefix_commands, "This player has never been online.");
  2275. goto("wait");
  2276. }
  2277. money = list.getIndex(args, 2);
  2278. if(!isDouble(money)) {
  2279. msg.prefix(sender, prefix_commands, "Number expected.");
  2280. goto("wait");
  2281. }
  2282. p_uuid = player.getUuid(p_name);
  2283. p_id = player.getId(p_uuid);
  2284. setMoney(p_id, money);
  2285. msg.prefix(sender, prefix_commands, string.concat("Set ", string.number(money), " snuvis for ", player.getName(p_uuid), "."));
  2286. goto("wait");
  2287. }
  2288. goto("user_help");
  2289. @quest
  2290. if(size == 0) {
  2291. @quest_syntax
  2292. msg.prefix(player, prefix_quest, "/quest ...");
  2293. msg.string(player, "§5 - see §rSee all active quests");
  2294. msg.string(player, "§5 - term <player> §rTerminates a quest of a player");
  2295. goto("wait");
  2296. }
  2297. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2298. if(arg0 == "see") {
  2299. if(size != 1) {
  2300. msg.prefix(player, prefix_quest, "/quest see");
  2301. goto("wait");
  2302. }
  2303. msg.prefix(player, prefix_quest, "Active quests:");
  2304. quest_map = quest.getIds();
  2305. iter = map.iterator(quest_map);
  2306. while(hasNext(iter)) {
  2307. element = next(iter);
  2308. key = map.getKey(element);
  2309. value = map.getValue(element);
  2310. script = script.getFromId(value);
  2311. if(script == null) {
  2312. continue;
  2313. }
  2314. q_name = script.getVar(script, "quest_name");
  2315. stage = script.getVar(script, "stage");
  2316. all_stages = script.getVar(script, "all_stages");
  2317. msg.string(player, string.concat( "§d- §r", player.getName(key), " ", string.number(value), " ", q_name, " (", string.number(stage), "/", string.number(all_stages), ")"));
  2318. }
  2319. goto("wait");
  2320. }
  2321. if(arg0 == "term") {
  2322. if(size != 2) {
  2323. msg.prefix(player, prefix_quest, "/quest term <player>");
  2324. goto("wait");
  2325. }
  2326. p_name = list.getIndex(args, 1);
  2327. if(!checkIfEverOnline(p_name)) {
  2328. msg.prefix(player, prefix_quest, "This player has never been online.");
  2329. goto("wait");
  2330. }
  2331. p = read.player(p_name);
  2332. if(p == null) {
  2333. msg.prefix(player, prefix_quest, "This player is not online.");
  2334. goto("wait");
  2335. }
  2336. script_id = quest.getFromPlayer(p);
  2337. if(script_id == null) {
  2338. msg.prefix(player, prefix_quest, "This player has no quest.");
  2339. goto("wait");
  2340. }
  2341. script = script.getFromId(script_id);
  2342. if(script == null) {
  2343. quest.removePlayer(p);
  2344. msg.prefix(player, prefix_quest, "Corrupt quest terminated.");
  2345. goto("wait");
  2346. }
  2347. setScriptVar("player", p);
  2348. modTimer.scriptCallEvent("quest_term", script);
  2349. quest.term(script, player);
  2350. msg.prefix(player, prefix_quest, "Quest terminated.");
  2351. goto("wait");
  2352. }
  2353. goto("quest_syntax");
  2354. @friend
  2355. if(size == 0) {
  2356. @friend_syntax
  2357. msg.prefix(player, prefix_friends, "/friend ...");
  2358. msg.string(player, "§5 - add <player> §rAdds a friend");
  2359. msg.string(player, "§5 - remove <player> §rRemoves a friend");
  2360. msg.string(player, "§5 - list §rLists all your friends");
  2361. goto("wait");
  2362. }
  2363. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2364. if(arg0 == "add") {
  2365. if(size != 2) {
  2366. msg.prefix(player, prefix_friends, "/friend add <player>");
  2367. goto("wait");
  2368. }
  2369. friend_name = list.getIndex(args, 1);
  2370. player_name = player.getName(player);
  2371. if(player_name == friend_name) {
  2372. msg.prefix(player, prefix_friends, "You can´t invite yourself.");
  2373. goto("wait");
  2374. }
  2375. player_id = player.getId(player);
  2376. if(!checkIfEverOnline(friend_name)) {
  2377. msg.prefix(player, prefix_friends, "This player has never been online.");
  2378. goto("wait");
  2379. }
  2380. friend_id = player.getId(player.getUuid(friend_name));
  2381. if(friend.check(player_id, friend_id)) {
  2382. msg.prefix(player, prefix_friends, "This player is already your friend.");
  2383. goto("wait");
  2384. }
  2385. if(map.contains(friend_requests, friend_id)) {
  2386. if(map.get(friend_requests, friend_id) == player_id) {
  2387. friend.add(player_id, friend_id);
  2388. map.remove(friend_requests, friend_id);
  2389. msg.prefix(player, prefix_friends, string.concat("§7", friend_name, "§r is your friend now."));
  2390. msg.send(player, friend_name, prefix_friends, string.concat("§7", player_name, "§r is your friend now."), true);
  2391. goto("wait");
  2392. }
  2393. }
  2394. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  2395. friend = read.player(friend_name);
  2396. msg.prefix(player, prefix_friends, string.concat("You sent an invitation to §7", friend_name, "§r."));
  2397. if(friend != null) {
  2398. msg(friend, text.merge(text.new(string.concat("§7", player_name, "§r wants to be your friend." )), string.getClickText("§r[§aAccept§r]", string.concat("/friend add ", player_name))));
  2399. }
  2400. goto("wait");
  2401. }
  2402. if(arg0 == "remove") {
  2403. if(size != 2) {
  2404. msg.prefix(player, prefix_friends, "/friend remove <player>");
  2405. goto("wait");
  2406. }
  2407. friend_name = list.getIndex(args, 1);
  2408. player_id = player.getId(player);
  2409. if(!checkIfEverOnline(friend_name)) {
  2410. msg.prefix(player, prefix_friends, "This player has never been online.");
  2411. goto("wait");
  2412. }
  2413. friend_id = player.getId(player.getUuid(friend_name));
  2414. if(!friend.check(player_id, friend_id)) {
  2415. msg.prefix(player, prefix_friends, "This player isn´t your friend.");
  2416. goto("wait");
  2417. }
  2418. friend.delete(player_id, friend_id);
  2419. msg.prefix(player, prefix_friends, string.concat("§7", friend_name, "§r is no longer your friend."));
  2420. msg.send(player, friend_name, prefix_friends, string.concat("§7", player.getName(player), "§r is no longer your friend."), true);
  2421. goto("wait");
  2422. }
  2423. if(arg0 == "list") {
  2424. if(size != 1) {
  2425. msg.prefix(player, prefix_friends, "/friend list");
  2426. goto("wait");
  2427. }
  2428. player_id = player.getId(player);
  2429. friendlist = friend.getList(player_id);
  2430. listsize = list.getSize(friendlist);
  2431. if(listsize == 0) {
  2432. msg.prefix(player, prefix_friends, "You have no friends yet.");
  2433. goto("wait");
  2434. }
  2435. msg.string(player, "§5Friends:");
  2436. for(i = 0; i <= listsize - 1; i++) {
  2437. friend_name = player.getNameFromId(list.getIndex(friendlist, i));
  2438. if(friend_name != null) {
  2439. msg.string(player, string.concat("- ", friend_name));
  2440. }
  2441. }
  2442. goto("wait");
  2443. }
  2444. goto("friend_syntax");
  2445. @var
  2446. if(size != 2) {
  2447. msg.prefix(player, prefix_commands, "/var <id> <varname>");
  2448. goto("wait");
  2449. }
  2450. script_id = list.getIndex(args, 0);
  2451. script = script.getFromId(script_id);
  2452. if(script == null) {
  2453. msg.prefix(player, "§dScript", "Invalid id");
  2454. goto("wait");
  2455. }
  2456. var_name = list.getIndex(args, 1);
  2457. var = script.getVar(script, var_name);
  2458. msg.prefix(player, "§dScript", string.concat(var_name, " = ", var));
  2459. goto("wait");
  2460. @vote
  2461. msg.string(player, string.getSpacer());
  2462. if(size == 0) {
  2463. link1 = "https://minecraft-server.eu/vote/index/2227F";
  2464. link2 = "https://minecraft-server-list.com/server/478200/vote/";
  2465. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), string.getLinkText("§r<§dminecraft-server.eu§r>", link1)));
  2466. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), string.getLinkText("§r<§dminecraft-server-list.com§r>", link2)));
  2467. p_id = player.getId(player);
  2468. } else {
  2469. if(!perm.has("user.other", player)) {
  2470. perm.no("user.other", player);
  2471. goto("wait");
  2472. }
  2473. p_name = list.getIndex(args, 0);
  2474. if(!checkIfEverOnline(p_name)) {
  2475. msg.prefix(player, prefix_commands, "This player has never been online.");
  2476. goto("wait");
  2477. }
  2478. p_id = player.getId(player.getUuid(p_name));
  2479. }
  2480. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), text.new(string.concat("Votepoints: §6", string.number(player.getVotePoints(p_id))))));
  2481. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), text.new(string.concat("Votestreak: §6", string.number(player.getVoteStreak(p_id))))));
  2482. last_vote_time = player.getLastVoteTime(p_id);
  2483. if(last_vote_time == 0) {
  2484. last_vote_time = "-";
  2485. } else {
  2486. last_vote_time = time.getString(last_vote_time);
  2487. }
  2488. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), text.new(string.concat("Last vote: §6", last_vote_time))));
  2489. goto("wait");
  2490. @voteshop
  2491. inv.open(vote_inv, player, string.concat("Your vote points: §6", string.number(player.getVotePoints(player))));
  2492. goto("wait");
  2493. @setservermessage
  2494. if(size < 1) {
  2495. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  2496. goto("wait");
  2497. }
  2498. message = string.concatList(args, " ", 0, size - 1);
  2499. message = string.replace(message, "&", "§");
  2500. setMOTD(message);
  2501. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  2502. goto("wait");
  2503. @error
  2504. if(size < 1) {
  2505. msg.prefix(player, "§cError", "/error ...");
  2506. msg.string(player, "§c - list §rLists all errors");
  2507. msg.string(player, "§c - clear §rDeletes all errors");
  2508. goto("wait");
  2509. }
  2510. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2511. if(arg0 == "list") {
  2512. error_size = error.getSize();
  2513. if(error_size == 0) {
  2514. msg.prefix(player, "§cError", "No errors existing.");
  2515. goto("wait");
  2516. }
  2517. for(i = 0; i < error_size; i++) {
  2518. msg.string(player, error.getIndex(i));
  2519. }
  2520. goto("wait");
  2521. }
  2522. if(arg0 == "clear") {
  2523. error.clear();
  2524. msg.prefix(player, "§cError", "All errors deleted.");
  2525. goto("wait");
  2526. }
  2527. goto("wait");
  2528. @hat
  2529. item = living.getHand(player);
  2530. if(item.isAir(item)) {
  2531. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  2532. goto("wait");
  2533. }
  2534. head_slot = slot.getHead();
  2535. head_item = living.getEquip(player, head_slot);
  2536. living.setEquip(player, head_slot, item);
  2537. living.setEquip(player, slot.getHand(), head_item);
  2538. goto("wait");
  2539. @news
  2540. if(size < 1) {
  2541. msg.prefix(player, prefix_commands, "/news <text>");
  2542. goto("wait");
  2543. }
  2544. message = string.concatList(args, " ", 0, size - 1);
  2545. online_list = players.toList();
  2546. iter = iterator(online_list);
  2547. while(hasNext(iter)) {
  2548. p = next(iter);
  2549. title.send(p, text.new("§cNews"), text.new(string.concat("by ", player.getName(player))));
  2550. msg.prefix(p, "§4News", string.concat("§c", message));
  2551. }
  2552. goto("wait");
  2553. @skipnight
  2554. player_loc = entity.getLocation(player);
  2555. world_name = world.getName(loc.getWorld(player_loc));
  2556. if(!world.isSurvName(world_name)) {
  2557. msg.prefix(player, prefix_commands, "Not possible in this world.");
  2558. goto("wait");
  2559. }
  2560. world_time = world.getTime(world.getOverWorld());
  2561. while(world_time >= 24000) {
  2562. world_time -= 24000;
  2563. }
  2564. if(world_time <= 12500) {
  2565. msg.prefix(player, prefix_commands, "Only during night possible.");
  2566. goto("wait");
  2567. }
  2568. player_uuid = player.getUuid(player);
  2569. if(set.contains(skip_night_set, player_uuid)) {
  2570. msg.prefix(player, prefix_commands, "Already voted.");
  2571. goto("wait");
  2572. }
  2573. if(time.getMillis() - last_skip_night < 420000) {
  2574. msg.prefix(player, prefix_commands, "Only once per night possible.");
  2575. goto("wait");
  2576. }
  2577. inv.open(skip_night_inv, player);
  2578. goto("wait");
  2579. @spawn
  2580. if(size == 0) {
  2581. p = player;
  2582. }
  2583. if(size == 1) {
  2584. if(!perm.has("tp.other", player)) {
  2585. perm.no("tp.other", player);
  2586. goto("wait");
  2587. }
  2588. p_name = list.getIndex(args, 0);
  2589. p = read.player(p_name);
  2590. if(p == null) {
  2591. msg.prefix(player, prefix_commands, "This player is not online.");
  2592. goto("wait");
  2593. }
  2594. }
  2595. if(player.hasMinigame(p)) {
  2596. if(size == 1) {
  2597. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  2598. goto("wait");
  2599. }
  2600. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  2601. goto("wait");
  2602. }
  2603. if(player.teleport(p, world.getServerSpawn(), true)) {
  2604. if(player == p) {
  2605. msg.prefix(p, prefix_commands, "You have been teleported to the spawn.");
  2606. } else {
  2607. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was teleported to the spawn."));
  2608. }
  2609. }
  2610. goto("wait");
  2611. @rank
  2612. msg.string(player, string.getSpacer());
  2613. rank = getRank(player);
  2614. msg.string(player, string.concat("§6Current rank: §r[", rank, "§r]"));
  2615. msg.string(player, "Choose a rank:");
  2616. rank.showAll(player);
  2617. goto("wait");
  2618. @setrank
  2619. if(size < 2) {
  2620. msg.prefix(player, prefix_commands, "/setrank <player> <rank>");
  2621. goto("wait");
  2622. }
  2623. p_name = list.getIndex(args, 0);
  2624. if(!checkIfEverOnline(p_name)) {
  2625. msg.prefix(player, prefix_commands, "This player has never been online.");
  2626. goto("wait");
  2627. }
  2628. p = read.player(p_name);
  2629. if(p == null) {
  2630. msg.prefix(player, prefix_commands, "This player is not online.");
  2631. goto("wait");
  2632. }
  2633. p_name = player.getName(p);
  2634. rank = string.concatList(args, " ", 1, size - 1);
  2635. if(!perm.has("setrank.other", player)) {
  2636. if(player.getName(player) != p_name) {
  2637. perm.no("setrank.other", player);
  2638. goto("wait");
  2639. }
  2640. colored = string.startsWith(rank, "&", 0);
  2641. if(colored) {
  2642. rank = string.subString(rank, 1, string.length(rank));
  2643. }
  2644. a = rank.getRankArray();
  2645. a_size = array.getSize(a);
  2646. for(i = 0; i < a_size; i++) {
  2647. tech_name = a[i, 0];
  2648. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  2649. perm.no(tech_name, p);
  2650. goto("wait");
  2651. }
  2652. }
  2653. if(colored) {
  2654. rank = string.concat("&", rank);
  2655. }
  2656. }
  2657. if(string.length(rank) >= 30) {
  2658. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  2659. goto("wait");
  2660. }
  2661. rank = string.replace(rank, "&", "§");
  2662. setRank(p, rank);
  2663. player.setTabName(p);
  2664. msg.prefix(player, prefix_commands, string.concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  2665. goto("wait");
  2666. @nowb
  2667. if(player.isAfk(player)) {
  2668. player.setAfk(player, false);
  2669. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  2670. player.setTabName(player);
  2671. } else {
  2672. msg.prefix(player, prefix_commands, "You are not afk.");
  2673. }
  2674. goto("wait");
  2675. @afk
  2676. if(player.hasMinigame(player)) {
  2677. msg.prefix(player, prefix_commands, "No afk while in a minigame :P");
  2678. goto("wait");
  2679. }
  2680. nickname = player.getNickname(player);
  2681. if(player.isAfk(player)) {
  2682. msg.prefix("online", prefix_commands, string.concat(nickname, "§7 is back."));
  2683. player.setAfk(player, false);
  2684. } else {
  2685. msg.prefix("online", prefix_commands, string.concat(nickname, "§7 is now afk."));
  2686. player.setAfk(player, true);
  2687. if(!afk_loop_active) {
  2688. afk_loop_active = true;
  2689. sgoto(30, "afk_loop");
  2690. }
  2691. }
  2692. player.setTabName(player);
  2693. goto("wait");
  2694. @silentjoin
  2695. silentjoin = player.getSilentJoin(player);
  2696. if(silentjoin) {
  2697. player.setSilentJoin(player, false);
  2698. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  2699. } else {
  2700. player.setSilentJoin(player, true);
  2701. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  2702. }
  2703. goto("wait");
  2704. @joinme
  2705. list = players.toList();
  2706. iter = iterator(list);
  2707. while(hasNext(iter)) {
  2708. invitee = next(iter);
  2709. if(player == invitee) {
  2710. continue;
  2711. }
  2712. party.invitePlayer(player, invitee);
  2713. }
  2714. msg.prefix(player, prefix_party, "Party invitation sent to all online players.");
  2715. goto("wait");
  2716. @jumpto
  2717. block = player.getTargetBlock(player, 100);
  2718. if(block == null) {
  2719. msg.prefix(player, prefix_commands, "No block in sight.");
  2720. goto("wait");
  2721. }
  2722. loc = block.getLocation(block);
  2723. y = loc.getY(loc);
  2724. while(y < 319 && !block.isAir(block.get(loc))) {
  2725. loc.setY(loc, y);
  2726. y++;
  2727. }
  2728. player.teleport(player, loc.mod(loc, 0, 1, 0), true);
  2729. goto("wait");
  2730. @jailloop
  2731. size = list.getSize(jailed_list);
  2732. for(i = 0; i < size; i++) {
  2733. p_name = player.getName(list.getIndex(jailed_list, i));
  2734. showJail(p_name);
  2735. }
  2736. if(size > 0) {
  2737. jail_loop_active = true;
  2738. sgoto(5, "jailloop");
  2739. } else {
  2740. jail_loop_active = false;
  2741. }
  2742. goto("wait");
  2743. @sb_title_loop
  2744. list = players.toList();
  2745. iter = iterator(list);
  2746. if(title_a == null) {
  2747. while(hasNext(iter)) {
  2748. p = next(iter);
  2749. sb.setTitle(p, text.new("§c§k# §6mundus§c-§6crassus§c.§6de §c§k#"));
  2750. title_a = true;
  2751. }
  2752. } else {
  2753. while(hasNext(iter)) {
  2754. p = next(iter);
  2755. sb.setTitle(p, text.new(string.concat(icon.getHeart(), "§6Mundus §cCrassus§f", icon.getHeart())));
  2756. title_a = null;
  2757. }
  2758. }
  2759. sgoto(200, "sb_title_loop");
  2760. goto("wait");
  2761. @coordsloop
  2762. list = players.toList();
  2763. size = list.getSize(list);
  2764. for(i = 0; i < size; i++) {
  2765. p = list.getIndex(list, i);
  2766. if(player.getShowcoords(p)) {
  2767. p_loc = entity.getLocation(p);
  2768. sb.add(p, 3, string.concat("§6X§r ", string.number(loc.getBlockX(p_loc)), " §6Y§r ", string.number(loc.getBlockY(p_loc)), " §6Z§r ", string.number(loc.getBlockZ(p_loc))));
  2769. sb.add(p, 2, string.concat(icon.getCompass(), " ", getDirectionExact(loc.getYaw(p_loc))));
  2770. }
  2771. }
  2772. sgoto(15, "coordsloop");
  2773. goto("wait");
  2774. @customitems
  2775. inv = inv.new("222222222222222222222222222222222222222222222222222222", text.new("Customitems"));
  2776. customitems = customitem.getAll();
  2777. for(i = 0; i < list.getSize(customitems); i++) {
  2778. item = list.getIndex(customitems, i);
  2779. item.setAmount(item, item.getMaxAmount(item));
  2780. inv.setItem(inv, i, item);
  2781. if(i > 53) {
  2782. msg.dev("More customitems than can be shown in one inv");
  2783. break;
  2784. }
  2785. }
  2786. inv.open(inv, player);
  2787. goto("wait");
  2788. @afk_loop
  2789. if(!afk_loop_active) {
  2790. goto("wait");
  2791. }
  2792. afk_map = getScriptVar("afk_map");
  2793. iter = map.iterator(afk_map);
  2794. while(hasNext(iter)) {
  2795. element = next(iter);
  2796. yaw = map.getValue(element);
  2797. player = player.get(map.getKey(element));
  2798. if(player != null) {
  2799. if(yaw != loc.getYaw(entity.getLocation(player))) {
  2800. nickname = player.getNickname(player);
  2801. msg.prefix("online", prefix_commands, string.concat(nickname, "§7 is back."));
  2802. remove(iter);
  2803. player.setAfk(player, false);
  2804. player.setTabName(player);
  2805. }
  2806. }
  2807. }
  2808. size = map.getSize(afk_map);
  2809. if(size > 0) {
  2810. afk_loop_active = true;
  2811. sgoto(30, "afk_loop");
  2812. } else {
  2813. afk_loop_active = false;
  2814. }
  2815. goto("wait");
  2816. @minute_loop
  2817. cal = time.new(time.getMillis());
  2818. timer_day = time.getDay(cal);
  2819. if(old_timer_day == null) {
  2820. old_timer_day = timer_day;
  2821. }
  2822. if(timer_day != old_timer_day) {
  2823. old_timer_day = timer_day;
  2824. //Tageswechsel
  2825. decreaseHomeBoost();
  2826. }
  2827. sgoto(1200, "minute_loop");
  2828. goto("wait");
  2829. @afk_checker_loop
  2830. online_list = players.toList();
  2831. iter = iterator(online_list);
  2832. while(hasNext(iter)) {
  2833. uuid = next(iter);
  2834. p = player.get(uuid);
  2835. if(player.hasMinigame(p)) {
  2836. continue;
  2837. }
  2838. yaw = loc.getYaw(entity.getLocation(p));
  2839. a = map.get(afk_checker_map, uuid);
  2840. if(a == null) {
  2841. a = array.new(2);
  2842. a[0] = yaw;
  2843. a[1] = 0;
  2844. map.add(afk_checker_map, uuid, a);
  2845. continue;
  2846. }
  2847. last_yaw = a[0];
  2848. counter = a[1];
  2849. if(last_yaw == yaw) {
  2850. counter++;
  2851. } else {
  2852. counter = 0;
  2853. }
  2854. a[0] = yaw;
  2855. a[1] = counter;
  2856. map.add(afk_checker_map, uuid, a);
  2857. if(counter == 5) {
  2858. nickname = player.getNickname(p);
  2859. if(player.isAfk(p)) {
  2860. continue;
  2861. }
  2862. msg.prefix("online", prefix_commands, string.concat(nickname, "§7 is now afk."));
  2863. player.setAfk(p, true);
  2864. player.setTabName(p);
  2865. if(!afk_loop_active) {
  2866. afk_loop_active = true;
  2867. sgoto(30, "afk_loop");
  2868. }
  2869. }
  2870. }
  2871. sgoto(1200, "afk_checker_loop");
  2872. goto("wait");
  2873. @armorstand
  2874. if(size == 0) {
  2875. @armorstand_syntax
  2876. msg.prefix(player, prefix_datatools, "/armorstand ...");
  2877. msg.string(player, "§6 - name <name> §rSets the name");
  2878. msg.string(player, "§6 - visible <true/false> §rSets if is visible");
  2879. msg.string(player, "§6 - arms <true/false> §rSets if has arms");
  2880. msg.string(player, "§6 - small <true/false> §rSets if is small");
  2881. msg.string(player, "§6 - baseplate <true/false> §rSets if has baseplate");
  2882. msg.string(player, "§6 - marker <true/false> §rSets if is marker");
  2883. msg.string(player, "§6 - move <true/false> §rSets if can move");
  2884. msg.string(player, "§6 - tick <true/false> §rSets if can tick");
  2885. msg.string(player, "§6 - setpose <bodypart> <x> <y> <z> §rSets the pose");
  2886. msg.string(player, "§6 - addpose <bodypart> <x> <y> <z> §rSets the pose");
  2887. goto("wait");
  2888. }
  2889. player_loc = entity.getLocation(player);
  2890. player_world = loc.getWorld(player_loc);
  2891. player_world_name = world.getName(player_world);
  2892. if(!perm.has("plot.bypass", player)){
  2893. if(!(world.isSurvName(player_world_name) || world.isCreativeName(player_world_name))){
  2894. msg.action(player, "Wrong world.");
  2895. goto("wait");
  2896. }
  2897. if (!plot.check(player_loc, player, 0, true)){
  2898. msg.action(player, "You do not have permission for that on this plot.");
  2899. goto("wait");
  2900. }
  2901. }
  2902. as = player.getTargetEntity(player, 5);
  2903. if(!entity.isArmorstand(entity)) {
  2904. location = entity.getLocation(player);
  2905. as = entity.get(location, 3, "org.bukkit.entity.ArmorStand");
  2906. if(as == null) {
  2907. msg.action(player, "No armorstand found.");
  2908. goto("wait");
  2909. }
  2910. }
  2911. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2912. if(arg0 == "name") {
  2913. if(size < 2) {
  2914. msg.prefix(player, prefix_datatools, "/armorstand name <name>");
  2915. goto("wait");
  2916. }
  2917. name = string.concatList(args, " ", 1, size - 1);
  2918. name = string.replace(name, "&", "§");
  2919. entity.setName(as, text.new(name), true);
  2920. msg.action(player, string.concat("Armorstand renamed to ", name, "§r."));
  2921. goto("wait");
  2922. }
  2923. if(arg0 == "visible") {
  2924. if(size < 2) {
  2925. msg.prefix(player, prefix_datatools, "/armorstand visible <true/false>");
  2926. goto("wait");
  2927. }
  2928. bool = list.getIndex(args, 1);
  2929. if(bool != true && bool != false) {
  2930. msg.action(player, "True/False expected.");
  2931. goto("wait");
  2932. }
  2933. living.setInvisible(as, !bool);
  2934. msg.action(player, "Visibility set.");
  2935. goto("wait");
  2936. }
  2937. if(arg0 == "arms") {
  2938. if(size < 2) {
  2939. msg.prefix(player, prefix_datatools, "/armorstand arms <true/false>");
  2940. goto("wait");
  2941. }
  2942. bool = list.getIndex(args, 1);
  2943. if(bool != true && bool != false) {
  2944. msg.action(player, "True/False expected.");
  2945. goto("wait");
  2946. }
  2947. as.setArms(as, bool);
  2948. msg.action(player, "Arms set.");
  2949. goto("wait");
  2950. }
  2951. if(arg0 == "small") {
  2952. if(size < 2) {
  2953. msg.prefix(player, prefix_datatools, "/armorstand small <true/false>");
  2954. goto("wait");
  2955. }
  2956. bool = list.getIndex(args, 1);
  2957. if(bool != true && bool != false) {
  2958. msg.action(player, "True/False expected.");
  2959. goto("wait");
  2960. }
  2961. as.setSmall(as, bool);
  2962. msg.action(player, "Small set.");
  2963. goto("wait");
  2964. }
  2965. if(arg0 == "baseplate") {
  2966. if(size < 2) {
  2967. msg.prefix(player, prefix_datatools, "/armorstand baseplate <true/false>");
  2968. goto("wait");
  2969. }
  2970. bool = list.getIndex(args, 1);
  2971. if(bool != true && bool != false) {
  2972. msg.action(player, "True/False expected.");
  2973. goto("wait");
  2974. }
  2975. as.setBasePlate(as, bool);
  2976. msg.action(player, "Baseplate set.");
  2977. goto("wait");
  2978. }
  2979. if(arg0 == "marker") {
  2980. if(size < 2) {
  2981. msg.prefix(player, prefix_datatools, "/armorstand marker <true/false>");
  2982. goto("wait");
  2983. }
  2984. bool = list.getIndex(args, 1);
  2985. if(bool != true && bool != false) {
  2986. msg.action(player, "True/False expected.");
  2987. goto("wait");
  2988. }
  2989. as.setMarker(as, bool);
  2990. msg.action(player, "Marker set.");
  2991. goto("wait");
  2992. }
  2993. if(arg0 == "move") {
  2994. if(size < 2) {
  2995. msg.prefix(player, prefix_datatools, "/armorstand move <true/false>");
  2996. goto("wait");
  2997. }
  2998. bool = list.getIndex(args, 1);
  2999. if(bool != true && bool != false) {
  3000. msg.action(player, "True/False expected.");
  3001. goto("wait");
  3002. }
  3003. as.canMove(as, bool);
  3004. msg.action(player, "Move set.");
  3005. goto("wait");
  3006. }
  3007. if(arg0 == "tick") {
  3008. if(size < 2) {
  3009. msg.prefix(player, prefix_datatools, "/armorstand tick <true/false>");
  3010. goto("wait");
  3011. }
  3012. bool = list.getIndex(args, 1);
  3013. if(bool != true && bool != false) {
  3014. msg.action(player, "True/False expected.");
  3015. goto("wait");
  3016. }
  3017. as.canTick(as, bool);
  3018. msg.action(player, "Tick set.");
  3019. goto("wait");
  3020. }
  3021. if(arg0 == "setpose") {
  3022. if(size < 5) {
  3023. msg.prefix(player, prefix_datatools, "/armorstand setpose <bodypart> <x> <y> <z>");
  3024. goto("wait");
  3025. }
  3026. x = list.getIndex(args, 2);
  3027. if(!isDouble(x) || x < -360 || x > 360) {
  3028. msg.action(player, "Number between -360 and 360 expected.");
  3029. goto("wait");
  3030. }
  3031. x *= math.pi() / 180;
  3032. y = list.getIndex(args, 3);
  3033. if(!isDouble(y) || y < -360 || y > 360) {
  3034. msg.action(player, "Number between -360 and 360 expected.");
  3035. goto("wait");
  3036. }
  3037. y *= math.pi() / 180;
  3038. z = list.getIndex(args, 4);
  3039. if(!isDouble(z) || z < -360 || z > 360) {
  3040. player.action(player, "Number between -360 and 360 expected.");
  3041. goto("wait");
  3042. }
  3043. z *= math.pi() / 180;
  3044. euler_angle = euler.new(x, y, z);
  3045. bodypart = list.getIndex(args, 1);
  3046. if(bodypart == "head") {
  3047. as.setHeadPose(as, euler_angle);
  3048. } elseif(bodypart == "body") {
  3049. as.setBodyPose(as, euler_angle);
  3050. } elseif(bodypart == "leftleg") {
  3051. as.setLeftLegPose(as, euler_angle);
  3052. } elseif(bodypart == "rightleg") {
  3053. as.setRightLegPose(as, euler_angle);
  3054. } elseif(bodypart == "leftarm") {
  3055. as.setLeftArmPose(as, euler_angle);
  3056. } elseif(bodypart == "rightarm") {
  3057. as.setRightArmPose(as, euler_angle);
  3058. } else {
  3059. msg.action(player, "Not a legit bodypart.");
  3060. goto("wait");
  3061. }
  3062. msg.action(player, "Pose set.");
  3063. goto("wait");
  3064. }
  3065. if(arg0 == "addpose") {
  3066. if(size < 5) {
  3067. msg.prefix(player, prefix_datatools, "/armorstand addpose <bodypart> <x> <y> <z>");
  3068. goto("wait");
  3069. }
  3070. x = list.getIndex(args, 2);
  3071. if(!isDouble(x) || x < -360 || x > 360) {
  3072. msg.action(player, "Number between -360 and 360 expected.");
  3073. goto("wait");
  3074. }
  3075. x *= math.pi() / 180;
  3076. y = list.getIndex(args, 3);
  3077. if(!isDouble(y) || y < -360 || y > 360) {
  3078. msg.action(player, "Number between -360 and 360 expected.");
  3079. goto("wait");
  3080. }
  3081. y *= math.pi() / 180;
  3082. z = list.getIndex(args, 4);
  3083. if(!isDouble(z) || z < -360 || z > 360) {
  3084. msg.action(player, "Number between -360 and 360 expected.");
  3085. goto("wait");
  3086. }
  3087. z *= math.pi() / 180;
  3088. bodypart = list.getIndex(args, 1);
  3089. if(bodypart == "head") {
  3090. euler_angle = as.getHeadPose(as);
  3091. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3092. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3093. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3094. as.setHeadPose(as, euler_angle);
  3095. } elseif(bodypart == "body") {
  3096. euler_angle = as.getBodyPose(as);
  3097. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3098. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3099. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3100. as.setBodyPose(as, euler_angle);
  3101. } elseif(bodypart == "leftleg") {
  3102. euler_angle = as.getLeftLegPose(as);
  3103. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3104. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3105. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3106. as.setLeftLegPose(as, euler_angle);
  3107. } elseif(bodypart == "rightleg") {
  3108. euler_angle = as.getRightLegPose(as);
  3109. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3110. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3111. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3112. as.setRightLegPose(as, euler_angle);
  3113. } elseif(bodypart == "leftarm") {
  3114. euler_angle = as.getLeftArmPose(as);
  3115. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3116. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3117. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3118. as.setLeftArmPose(as, euler_angle);
  3119. } elseif(bodypart == "rightarm") {
  3120. euler_angle = as.getRightArmPose(as);
  3121. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3122. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3123. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3124. as.setRightArmPose(as, euler_angle);
  3125. } else {
  3126. msg.action(player, "Not a legit bodypart.");
  3127. goto("wait");
  3128. }
  3129. msg.action(player, "Pose set.");
  3130. goto("wait");
  3131. }
  3132. goto("armorstand_syntax");
  3133. @ass
  3134. if(size == 0) {
  3135. msg.prefix(player, prefix_commands, "§r/ass ...");
  3136. msg.string(player, " - set <name>");
  3137. msg.string(player, " - name <name>");
  3138. msg.string(player, " - remove");
  3139. goto("wait");
  3140. }
  3141. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3142. if(arg0 == "set") {
  3143. if(size < 2) {
  3144. msg.prefix(player, prefix_datatools, "/ass set <name>");
  3145. goto("wait");
  3146. }
  3147. name = string.concatList(string_args, " ", 1, size - 1);
  3148. name = string.replace(name, "&", "§");
  3149. as = entity.spawn(entity.getLocation(player), "ARMOR_STAND");
  3150. entity.setGravity(as, false);
  3151. entity.setName(as, text.new(name), true);
  3152. living.setInvisible(as, true);
  3153. as.setMarker(as, true);
  3154. as.canTick(as, false);
  3155. goto("wait");
  3156. }
  3157. as = player.getTargetEntity(player, 5);
  3158. if(!entity.isArmorstand(entity)) {
  3159. location = entity.getLocation(player);
  3160. as = entity.get(location, 3, "org.bukkit.entity.ArmorStand");
  3161. if(as == null) {
  3162. msg.action(player, "No armorstand found.");
  3163. goto("wait");
  3164. }
  3165. }
  3166. if(arg0 == "name") {
  3167. if(size < 2) {
  3168. msg.prefix(player, prefix_datatools, "/ass name <name>");
  3169. goto("wait");
  3170. }
  3171. name = string.concatList(string_args, " ", 1, size - 1);
  3172. name = string.replace(name, "&", "§");
  3173. entity.setName(as, text.new(name), true);
  3174. msg.action(player, "Armorstand renamed.");
  3175. goto("wait");
  3176. }
  3177. if(arg0 == "remove") {
  3178. entity.remove(as);
  3179. msg.action(player, "Armorstand removed.");
  3180. goto("wait");
  3181. }
  3182. goto("wait");
  3183. @potion
  3184. if(size != 3) {
  3185. msg.prefix(player, prefix_perms, "/potion <potion_name> <duration> <power>");
  3186. goto("wait");
  3187. }
  3188. item = living.getHand(player);
  3189. if(item.getType(item) == null || !(item.isType(item, "POTION") || item.isType(item, "SPLASH_POTION") || item.isType(item, "LINGERING_POTION"))) {
  3190. msg.prefix(player, prefix_commands, "You need to hold an potion in your hand.");
  3191. goto("wait");
  3192. }
  3193. potion_name = list.getIndex(args, 0);
  3194. list = getPotionTypes();
  3195. if(!list.contains(list, potion_name)) {
  3196. msg.prefix(player, prefix_commands, "Not an potion effect type.");
  3197. goto("wait");
  3198. }
  3199. duration = list.getIndex(args, 1);
  3200. if(!isDouble(duration) || duration < 0) {
  3201. msg.prefix(player, prefix_commands, "Positive number expected.");
  3202. goto("wait");
  3203. }
  3204. power = list.getIndex(args, 2);
  3205. if(!isDouble(power) || power < 0) {
  3206. msg.prefix(player, prefix_commands, "Positive number expected.");
  3207. goto("wait");
  3208. }
  3209. item.addPotion(item, potion_name, duration, power);
  3210. goto("wait");
  3211. @pvp
  3212. if(size == 0) {
  3213. if(hasPvpOn(player)) {
  3214. mode = "off";
  3215. } else {
  3216. mode = "on";
  3217. }
  3218. p = player;
  3219. } elseif(size == 1) {
  3220. mode = list.getIndex(args, 0);
  3221. if(!(mode == "on" || mode == "off")) {
  3222. goto("pvphelp");
  3223. }
  3224. p = player;
  3225. } elseif(size == 2) {
  3226. if(!perm.has("pvp.other", player)) {
  3227. perm.no("pvp.other", player);
  3228. goto("wait");
  3229. }
  3230. mode = list.getIndex(args, 0);
  3231. if(!(mode == "on" || mode == "off")) {
  3232. goto("pvphelp");
  3233. }
  3234. p_name = list.getIndex(args, 1);
  3235. if(!checkIfEverOnline(p_name)) {
  3236. msg.prefix(player, prefix_commands, "This player has never been online.");
  3237. goto("wait");
  3238. }
  3239. p = read.player(p_name);
  3240. if(p == null) {
  3241. msg.prefix(player, prefix_commands, "This player is not online.");
  3242. goto("wait");
  3243. }
  3244. } else {
  3245. @pvphelp
  3246. if(perm.has("pvp.other", player)) {
  3247. msg.prefix(player, prefix_commands, "/pvp [on/off] [player]");
  3248. } else {
  3249. msg.prefix(player, prefix_commands, "/pvp [on/off]");
  3250. }
  3251. goto("wait");
  3252. }
  3253. if(mode == "on") {
  3254. setPvp(p, true);
  3255. msg.prefix(p, prefix_commands, "You have enabled PvP!");
  3256. if(p != player) {
  3257. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " has now enabled PvP!"));
  3258. }
  3259. } else {
  3260. setPvp(p, false);
  3261. msg.prefix(p, prefix_commands, "You have PvP disabled!");
  3262. if(p != player) {
  3263. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " has now disabled PvP!"));
  3264. }
  3265. }
  3266. goto("wait");
  3267. @suicide
  3268. if(size < 0 || size > 1) {
  3269. msg.prefix(player, prefix_commands, "/suicide [player]");
  3270. goto("wait");
  3271. }
  3272. if(size == 0) {
  3273. p = player;
  3274. }
  3275. if(size == 1) {
  3276. if(!perm.has("suicide.other", player)) {
  3277. perm.no("suicide.other", player);
  3278. goto("wait");
  3279. }
  3280. p_name = list.getIndex(args, 0);
  3281. p = read.player(p_name);
  3282. if(p == null) {
  3283. msg.prefix(player, prefix_commands, "This player is not online.");
  3284. goto("wait");
  3285. }
  3286. }
  3287. if(p != player) {
  3288. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " has been killed."));
  3289. msg.prefix(p, prefix_commands, string.concat("You have been killed by ", player.getName(player), "."));
  3290. } else {
  3291. msg.prefix(p, prefix_commands, "You killed yourself.");
  3292. }
  3293. living.damage(p, 1000, damage.get("generic"));
  3294. goto("wait");
  3295. @nickname
  3296. if(size < 1) {
  3297. msg.prefix(player, "§eNickname", "/nickname ...");
  3298. msg.string(player, string.concat("§e - <name> ", "Sets a nickname"));
  3299. msg.string(player, string.concat("§e - remove ", "Removes a nickname"));
  3300. goto("wait");
  3301. }
  3302. nickname = string.replace(string.concatList(args, " ", 0, size - 1), "&", "§");
  3303. if(nickname == "remove") {
  3304. player.removeNickName(player);
  3305. msg.prefix(player, prefix_commands, string.concat("Your nickname was removed."));
  3306. } else {
  3307. player.setNickName(player, nickname);
  3308. msg.prefix(player, prefix_commands, string.concat("Your nickname was changed to ", nickname, "§r."));
  3309. }
  3310. player.setTabName(player);
  3311. player.setHeadName(player);
  3312. goto("wait");
  3313. @iteminfo
  3314. item = living.getHand(player);
  3315. string = string.item(item);
  3316. string = string.replace(string, "\"", "'");
  3317. msg(player, string.getClipBoardText(string, string));
  3318. item_type = string(item.getType(item));
  3319. msg(player, string.getClipBoardText(item_type, item_type));
  3320. goto("wait");
  3321. @perm
  3322. if(size == 0) {
  3323. @perm_syntax
  3324. msg.prefix(player, prefix_perms, "/perm ...");
  3325. if(perm.has("perm.give", player)) {
  3326. msg.string(player, "§6 - give <player> <perm>");
  3327. }
  3328. if(perm.has("perm.remove", player)) {
  3329. msg.string(player, "§6 - remove <player> <perm>");
  3330. }
  3331. if(perm.has("perm.removeall", player)) {
  3332. msg.string(player, "§6 - removeall <player>");
  3333. }
  3334. if(perm.has("perm.list", player)) {
  3335. msg.string(player, "§6 - list <player>");
  3336. }
  3337. if(perm.has("perm.toggle", player)) {
  3338. msg.string(player, "§6 - toggle");
  3339. }
  3340. goto("wait");
  3341. }
  3342. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3343. if(arg0 == "give") {
  3344. if(!perm.has("perm.give", player)) {
  3345. perm.no("perm.give", player);
  3346. goto("wait");
  3347. }
  3348. if(size != 3) {
  3349. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  3350. goto("wait");
  3351. }
  3352. p_name = list.getIndex(args, 1);
  3353. perm = list.getIndex(args, 2);
  3354. if(!checkIfEverOnline(p_name)) {
  3355. msg.prefix(player, prefix_perms, "This player has never been online.");
  3356. goto("wait");
  3357. }
  3358. if(!perm.isGroupName(perm)) {
  3359. msg.prefix(player, prefix_perms, "This is not a permission group.");
  3360. goto("wait");
  3361. }
  3362. if(!perm.has("isAdmin", player)) {
  3363. if(perm == "admin" || perm == "mod") {
  3364. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  3365. goto("wait");
  3366. }
  3367. }
  3368. p_uuid = player.getUuid(p_name);
  3369. p_id = player.getId(p_uuid);
  3370. p_name = player.getName(p_uuid);
  3371. perm_id = perm.getIdFromGroupname(perm);
  3372. if(player.hasPermGroup(p_id, perm_id)) {
  3373. msg.prefix(player, prefix_perms, "Perm already added.");
  3374. goto("wait");
  3375. }
  3376. if(isOnline(p_name)) {
  3377. p = read.player(p_name);
  3378. rank = perm.getRankFromGroupname(perm);
  3379. if(rank != null) {
  3380. offerRank(p, rank.getTechName(rank));
  3381. }
  3382. if(perm == "creative") {
  3383. if(loc.isInCreativeWorld(entity.getLocation(p))) {
  3384. player.setGamemode(p, "CREATIVE");
  3385. }
  3386. }
  3387. }
  3388. perm.addGroupToPlayer(p_id, perm_id);
  3389. msg.prefix(player, prefix_perms, string.concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  3390. goto("wait");
  3391. }
  3392. if(arg0 == "remove") {
  3393. if(!perm.has("perm.remove", player)) {
  3394. perm.no("perm.remove", player);
  3395. goto("wait");
  3396. }
  3397. if(size != 3) {
  3398. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  3399. goto("wait");
  3400. }
  3401. p_name = list.getIndex(args, 1);
  3402. perm = list.getIndex(args, 2);
  3403. if(!checkIfEverOnline(p_name)) {
  3404. msg.prefix(player, prefix_perms, "This player has never been online.");
  3405. goto("wait");
  3406. }
  3407. if(!perm.isGroupName(perm)) {
  3408. msg.prefix(player, prefix_perms, "This is not a permission group.");
  3409. goto("wait");
  3410. }
  3411. if(!perm.has("isAdmin", player)) {
  3412. if(perm == "admin" || perm == "mod") {
  3413. msg.prefix(player, prefix_perms, "Only admins can remove this permission group.");
  3414. goto("wait");
  3415. }
  3416. }
  3417. p_uuid = player.getUuid(p_name);
  3418. p_id = player.getId(p_uuid);
  3419. p_name = player.getName(p_uuid);
  3420. perm_id = perm.getIdFromGroupname(perm);
  3421. if(!player.hasPermGroup(p_id, perm_id)) {
  3422. msg.prefix(player, prefix_perms, "This player doesn´t have that perm.");
  3423. goto("wait");
  3424. }
  3425. perm.removeGroupFromPlayer(p_id, perm_id);
  3426. msg.prefix(player, prefix_perms, string.concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  3427. goto("wait");
  3428. }
  3429. if(arg0 == "removeall") {
  3430. if(!perm.has("perm.removeall", player)) {
  3431. perm.no("perm.removeall", player);
  3432. goto("wait");
  3433. }
  3434. if(size != 2) {
  3435. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  3436. goto("wait");
  3437. }
  3438. p_name = list.getIndex(args, 1);
  3439. if(!checkIfEverOnline(p_name)) {
  3440. msg.prefix(player, prefix_perms, "This player has never been online.");
  3441. goto("wait");
  3442. }
  3443. p_id = player.getId(player.getUuid(p_name));
  3444. player.removeAllPerms(p_id);
  3445. msg.prefix(player, prefix_perms, string.concat("All perms of §7", p_name, " §rwere removed."));
  3446. goto("wait");
  3447. }
  3448. if(arg0 == "list") {
  3449. if(!perm.has("perm.list", player)) {
  3450. perm.no("perm.list", player);
  3451. goto("wait");
  3452. }
  3453. if(size != 2) {
  3454. msg.prefix(player, prefix_perms, "/perm list <player>");
  3455. goto("wait");
  3456. }
  3457. p_name = list.getIndex(args, 1);
  3458. if(!checkIfEverOnline(p_name)) {
  3459. msg.prefix(player, prefix_perms, "This player has never been online.");
  3460. goto("wait");
  3461. }
  3462. p_id = player.getId(player.getUuid(p_name));
  3463. permslist = player.getPerms(p_id);
  3464. listsize = list.getSize(permslist);
  3465. if(listsize == 0) {
  3466. msg.prefix(player, prefix_perms, "No permissions found.");
  3467. } else {
  3468. msg.prefix(player, prefix_perms, p_name);
  3469. for(i = 0; i < listsize; i++) {
  3470. msg.string(player, string.concat(" - ", perm.getNameFromId(list.getIndex(permslist, i))));
  3471. }
  3472. }
  3473. goto("wait");
  3474. }
  3475. if(arg0 == "toggle") {
  3476. if(!perm.has("perm.toggle", player)) {
  3477. perm.no("perm.toggle", player);
  3478. goto("wait");
  3479. }
  3480. if(perm.has("simuser", player)) {
  3481. perm.initPlayer(player);
  3482. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  3483. } else {
  3484. perm.simUser(player);
  3485. msg.prefix(player, prefix_commands, "Have fun as a user.");
  3486. }
  3487. goto("wait");
  3488. }
  3489. goto("perm_syntax");
  3490. @allsounds
  3491. if(size == 0) {
  3492. msg.prefix(player, prefix_commands, "§r/allsounds...");
  3493. msg.string(player, "§e - start §rStart all sounds loop");
  3494. msg.string(player, "§e - stop §rStop all sounds loop");
  3495. msg.string(player, "§e - play <sound> §rPlay a sound");
  3496. msg.string(player, "§e - show [page] §rClick on a sound");
  3497. goto("wait");
  3498. }
  3499. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3500. if(arg0 == "start") {
  3501. player_uuid = player.getUuid(player);
  3502. if(map.contains(allsounds_indizes, player_uuid)) {
  3503. msg.prefix(player, prefix_commands, "All sounds already started.");
  3504. goto("wait");
  3505. }
  3506. map.add(allsounds_indizes, player_uuid, 0);
  3507. list.add(allsounds_uuids, player_uuid);
  3508. list.add(allsounds_uuids_cross_check, player_uuid);
  3509. msg.prefix(player, prefix_commands, "All sounds started.");
  3510. goto("playallsounds");
  3511. }
  3512. if(arg0 == "stop") {
  3513. player_uuid = player.getUuid(player);
  3514. if(!list.contains(allsounds_uuids_cross_check, player_uuid)) {
  3515. msg.prefix(player, prefix_commands, "No sounds playing.");
  3516. goto("wait");
  3517. }
  3518. map.remove(allsounds_indizes, player_uuid);
  3519. list.remove(allsounds_uuids_cross_check, player_uuid);
  3520. msg.prefix(player, prefix_commands, "All sounds stopped.");
  3521. goto("wait");
  3522. }
  3523. if(arg0 == "play") {
  3524. if(size != 2) {
  3525. msg.prefix(player, prefix_perms, "/allsounds player <sound>");
  3526. goto("wait");
  3527. }
  3528. sound_name = list.getIndex(args, 1);
  3529. sound_name = string.toLowerCase(sound_name);
  3530. if(!list.contains(allsounds_list, sound_name)) {
  3531. msg.prefix(sender, prefix_commands, "Not a known sound.");
  3532. goto("wait");
  3533. }
  3534. sound = sound.get(sound_name);
  3535. sound.spawnForPlayer(player, sound, sound_category_master);
  3536. goto("wait");
  3537. }
  3538. if(arg0 == "show") {
  3539. amount_sounds = list.getSize(allsounds_list);
  3540. max_side = amount_sounds / 10;
  3541. if(size == 1) {
  3542. side = 1;
  3543. print_side = side - 1;
  3544. } else {
  3545. side = list.getIndex(args, 1);
  3546. if(!isDouble(side)) {
  3547. msg.prefix(sender, prefix_commands, "/allsounds show [side]");
  3548. goto("wait");
  3549. }
  3550. print_side = side - 1;
  3551. if(print_side < 0 || print_side > max_side) {
  3552. msg.prefix(sender, prefix_commands, string.concat("Possible: 1 - ", string.number(math.roundDown(max_side + 1))));
  3553. goto("wait");
  3554. }
  3555. }
  3556. msg.string(sender, string.concat("§a --- All Sounds ", string.number(side), " ---"));
  3557. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  3558. if(i < amount_sounds) {
  3559. sound_name = list.getIndex(allsounds_list, i);
  3560. msg(sender, string.getClickText(string.concat(" ", sound_name), string.concat("/allsounds play ", sound_name)));
  3561. }
  3562. }
  3563. if(side == 1) {
  3564. backward = text.new("§c<<Backward<<");
  3565. forward = string.getClickText("§b>>Forward>>", string.concat("/allsounds show ", side + 1));
  3566. } elseif(side > max_side) {
  3567. backward = string.getClickText("§b<<Backward<<", string.concat("/allsounds show ", side - 1));
  3568. forward = text.new("§c>>Forward>>");
  3569. } else {
  3570. backward = string.getClickText("§b<<Backward<<", string.concat("/allsounds show ", side - 1));
  3571. forward = string.getClickText("§b>>Forward>>", string.concat("/allsounds show ", side + 1));
  3572. }
  3573. msg(sender, text.merge(backward, text.new(" "), forward));
  3574. goto("wait");
  3575. }
  3576. goto("wait");
  3577. @playallsounds
  3578. player_uuid = list.getIndex(allsounds_uuids, 0);
  3579. list.removeIndex(allsounds_uuids, 0);
  3580. if(!list.contains(allsounds_uuids_cross_check, player_uuid)) {
  3581. goto("wait");
  3582. }
  3583. player = player.get(player_uuid);
  3584. if(player == null) {
  3585. map.remove(allsounds_indizes, player_uuid);
  3586. goto("wait");
  3587. }
  3588. i = map.get(allsounds_indizes, player_uuid);
  3589. if(i == list.getSize(allsounds_list)) {
  3590. map.remove(allsounds_indizes, player_uuid);
  3591. msg.prefix(player, prefix_commands, "All sounds finished.");
  3592. goto("wait");
  3593. }
  3594. sound_name = list.getIndex(allsounds_list, i);
  3595. sound = sound.get(sound_name);
  3596. sound.spawnForPlayer(player, sound, sound_category_master);
  3597. msg.string(player, sound_name);
  3598. map.add(allsounds_indizes, player_uuid, i + 1);
  3599. list.add(allsounds_uuids, player_uuid);
  3600. sgoto(100, "playallsounds");
  3601. goto("wait");
  3602. @weather
  3603. if(size == 0) {
  3604. @weather_syntax
  3605. msg.prefix(player, "§eWeather", "/weather ...");
  3606. msg.string(player, "§e - clear [duration]");
  3607. msg.string(player, "§e - rain [duration]");
  3608. msg.string(player, "§e - thunder [duration]");
  3609. goto("wait");
  3610. }
  3611. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3612. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  3613. if(size == 2) {
  3614. duration = list.getIndex(args, 1);
  3615. if(!isDouble(duration)) {
  3616. msg.prefix(player, prefix_commands, "Number expected.");
  3617. goto("wait");
  3618. }
  3619. if(duration < 0) {
  3620. msg.prefix(player, prefix_commands, "Positive number expected.");
  3621. goto("wait");
  3622. }
  3623. } else {
  3624. duration = 12000;
  3625. }
  3626. world = loc.getWorld(entity.getLocation(player));
  3627. if(arg0 == "clear") {
  3628. if(size > 2) {
  3629. msg.prefix(player, prefix_commands, "/weather clear [duration]");
  3630. goto("wait");
  3631. }
  3632. world.clearWeather(world, duration);
  3633. msg.prefix(player, prefix_commands, "Weather cleared.");
  3634. goto("wait");
  3635. }
  3636. if(arg0 == "rain") {
  3637. if(size > 2) {
  3638. msg.prefix(player, prefix_commands, "/weather rain [duration]");
  3639. goto("wait");
  3640. }
  3641. world.setRain(world, duration);
  3642. msg.prefix(player, prefix_commands, "Weather set to rain.");
  3643. goto("wait");
  3644. }
  3645. if(arg0 == "thunder") {
  3646. if(size > 2) {
  3647. msg.prefix(player, prefix_commands, "/weather thunder [duration]");
  3648. goto("wait");
  3649. }
  3650. world.setThunder(world, duration);
  3651. msg.prefix(player, prefix_commands, "Weather set to thunder.");
  3652. goto("wait");
  3653. }
  3654. goto("wait");
  3655. }
  3656. goto("weather_syntax");
  3657. @time
  3658. if(size == 0) {
  3659. @time_syntax
  3660. msg.prefix(player, "§eTime", "/time ...");
  3661. msg.string(player, "§e - set <time>");
  3662. msg.string(player, "§e - add <time>");
  3663. msg.string(player, "§e - <day / noon / night / midnight>");
  3664. goto("wait");
  3665. }
  3666. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3667. if(arg0 == "set") {
  3668. if(size != 2) {
  3669. msg.prefix(player, prefix_commands, "/time set <time>");
  3670. goto("wait");
  3671. }
  3672. setTime = list.getIndex(args, 1);
  3673. if(!isDouble(setTime)) {
  3674. msg.prefix(player, prefix_commands, "Number expected.");
  3675. goto("wait");
  3676. }
  3677. if(setTime < 0) {
  3678. msg.prefix(player, prefix_commands, "Positive number expected.");
  3679. goto("wait");
  3680. }
  3681. world = loc.getWorld(entity.getLocation(player));
  3682. while(setTime >= 24000) {
  3683. setTime -= 24000;
  3684. }
  3685. world.setTime(world, setTime);
  3686. msg.prefix(player, prefix_commands, string.concat("Time set to ", string.number(setTime), "."));
  3687. goto("wait");
  3688. }
  3689. if(arg0 == "add") {
  3690. if(size != 2) {
  3691. msg.prefix(player, prefix_commands, "/time add <time>");
  3692. goto("wait");
  3693. }
  3694. addTime = list.getIndex(args, 1);
  3695. if(!isDouble(addTime)) {
  3696. msg.prefix(player, prefix_commands, "Number expected.");
  3697. goto("wait");
  3698. }
  3699. if(addTime < 0) {
  3700. msg.prefix(player, prefix_commands, "Positive number expected.");
  3701. goto("wait");
  3702. }
  3703. world = loc.getWorld(entity.getLocation(player));
  3704. newtime = world.getTime(world) + addTime;
  3705. while(newtime >= 24000) {
  3706. newtime -= 24000;
  3707. }
  3708. world.setTime(world, newtime);
  3709. msg.prefix(player, prefix_commands, string.concat("Time set to ", string.number(newtime), "."));
  3710. goto("wait");
  3711. }
  3712. newtime = null;
  3713. if(arg0 == "day") {
  3714. newtime = 1000;
  3715. } elseif(arg0 == "noon") {
  3716. newtime = 6000;
  3717. } elseif(arg0 == "night") {
  3718. newtime = 13000;
  3719. } elseif(arg0 == "midnight") {
  3720. newtime = 18000;
  3721. }
  3722. if(newtime != null) {
  3723. world = loc.getWorld(entity.getLocation(player));
  3724. world.setTime(world, newtime);
  3725. msg.prefix(player, prefix_commands, string.concat("Time set to ", string.number(newtime), "."));
  3726. goto("wait");
  3727. }
  3728. goto("time_syntax");
  3729. @gamerule
  3730. world = loc.getWorld(entity.getLocation(player));
  3731. if(size == 0) {
  3732. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  3733. goto("wait");
  3734. }
  3735. gamerule_string = list.getIndex(args, 0);
  3736. gamerule_key = gamerule.getKey(gamerule_string);
  3737. if(gamerule_key == null) {
  3738. msg.prefix(player, prefix_commands, "Gamerule doesn´t exist.");
  3739. goto("wait");
  3740. }
  3741. gamerule_value = gamerule.getValue(world, gamerule_key);
  3742. if(size == 1) {
  3743. if(isDouble(gamerule_value)) {
  3744. gamerule_value = string.number(gamerule_value);
  3745. }
  3746. msg.prefix(player, prefix_commands, string.concat(gamerule_string, " ", gamerule_value));
  3747. goto("wait");
  3748. }
  3749. if(size == 2) {
  3750. if(!perm.has("gamerule.write", player)) {
  3751. perm.no("gamerule.write", player);
  3752. goto("wait");
  3753. }
  3754. value = list.getIndex(args, 1);
  3755. if(isBool(gamerule_value)) {
  3756. gamerule.setBool(world, gamerule_key, value);
  3757. } elseif(isDouble(gamerule_value)) {
  3758. gamerule.setInt(world, gamerule_key, value);
  3759. value = string.number(value);
  3760. } else {
  3761. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  3762. goto("wait");
  3763. }
  3764. msg.prefix(player, prefix_commands, string.concat(gamerule_string, " set to ", value, "."));
  3765. }
  3766. goto("wait");
  3767. @tip
  3768. if(size == 0) {
  3769. msg.prefix(player, prefix_tips, "/tip ...");
  3770. msg.string(player, "§e - list §rList all tips");
  3771. msg.string(player, "§e - add <tip> <text> §rAdds a tip");
  3772. msg.string(player, "§e - remove <tip> §rRemoves a tip");
  3773. msg.string(player, "§e - loop <tip> <boolean> §rTrue shows on tip loop");
  3774. msg.string(player, "§e - <tip> [player] §rSends a tip to all/a player");
  3775. goto("wait");
  3776. }
  3777. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3778. if(arg0 == "list") {
  3779. msg.string(player, "--==§eTipps§r==--");
  3780. list = tip.getAll();
  3781. if(list.getSize(list) == 0) {
  3782. msg.prefix(player, prefix_tips, "No tips available.");
  3783. goto("wait");
  3784. }
  3785. iter = iterator(list);
  3786. while(hasNext(iter)) {
  3787. a = next(iter);
  3788. tipp_key = a[0];
  3789. tipp_value = a[1];
  3790. tipp_loop = a[2];
  3791. if(tipp_loop) {
  3792. tipp_loop = string.concat("§a", tipp_loop);
  3793. } else {
  3794. tipp_loop = string.concat("§c", tipp_loop);
  3795. }
  3796. msg(player, text.merge(text.new(string.concat(" ", tipp_loop, " §e", tipp_key, "§r : ")), string.getInterpretedText(tipp_value)));
  3797. }
  3798. goto("wait");
  3799. }
  3800. if(arg0 == "add") {
  3801. if(!perm.has("tip.mod", player)) {
  3802. perm.no("tip.mod", player);
  3803. goto("wait");
  3804. }
  3805. if(size < 3) {
  3806. msg.prefix(player, prefix_commands, "/tip add <name> <text>");
  3807. goto("wait");
  3808. }
  3809. tipp_key = list.getIndex(args, 1);
  3810. tipp_value = string.concatList(string_args, " ", 2, size - 1);
  3811. tipp_value = string.replace(tipp_value, "&", "§");
  3812. tipp.register(tipp_key, tipp_value);
  3813. msg.prefix(player, prefix_tips, "Tip added.");
  3814. goto("wait");
  3815. }
  3816. if(arg0 == "loop") {
  3817. if(!perm.has("tip.mod", player)) {
  3818. perm.no("tip.mod", player);
  3819. goto("wait");
  3820. }
  3821. if(size != 3) {
  3822. msg.prefix(player, prefix_commands, "/tip loop <tip> <boolean>");
  3823. goto("wait");
  3824. }
  3825. tipp_key = list.getIndex(args, 1);
  3826. if(!tipp.exists(tipp_key)) {
  3827. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3828. goto("wait");
  3829. }
  3830. boolean = list.getIndex(args, 2);
  3831. if(string.class(boolean) != "Boolean") {
  3832. msg.prefix(player, prefix_tips, "True or false expected.");
  3833. goto("wait");
  3834. }
  3835. if(boolean) {
  3836. tip.setLoop(tipp_key, boolean);
  3837. } else {
  3838. tip.setLoop(tipp_key, boolean);
  3839. }
  3840. msg.prefix(player, prefix_tips, "Tip settings changed.");
  3841. goto("wait");
  3842. }
  3843. if(arg0 == "remove") {
  3844. if(!perm.has("tip.mod", player)) {
  3845. perm.no("tip.mod", player);
  3846. goto("wait");
  3847. }
  3848. if(size != 2) {
  3849. msg.prefix(player, prefix_commands, "/tip remove <name>");
  3850. goto("wait");
  3851. }
  3852. tipp_key = list.getIndex(args, 1);
  3853. tip.remove(tipp_key);
  3854. msg.prefix(player, prefix_tips, "Tip removed.");
  3855. goto("wait");
  3856. }
  3857. tipp_key = arg0;
  3858. if(!tipp.exists(tipp_key)) {
  3859. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3860. goto("wait");
  3861. }
  3862. if(size == 1) {
  3863. p = "online";
  3864. } else {
  3865. p_name = list.getIndex(args, 1);
  3866. if(!isOnline(p_name)) {
  3867. msg.prefix(player, prefix_tips, "This player is not online.");
  3868. goto("wait");
  3869. }
  3870. p = read.player(p_name);
  3871. msg.prefix(player, prefix_tips, string.concat("Tip sent to §7", p_name, "§r."));
  3872. }
  3873. tipp_value = tipp.get(tipp_key);
  3874. msg(p, text.merge(text.new(string.concat(string.getPrefix(string.concat("§e", player.getName(player))), " ")), string.getInterpretedText(tipp_value)));
  3875. goto("wait");
  3876. @help
  3877. if(size > 1) {
  3878. msg.prefix(sender, prefix_commands, "/help [side]");
  3879. goto("wait");
  3880. }
  3881. //Auf Permission überprüfen
  3882. temp_list = list.new();
  3883. for(i = 0; i < list.getSize(command_list); i++) {
  3884. command = list.getIndex(command_list, i);
  3885. if(perm.has(command, sender)) {
  3886. list.add(temp_list, command);
  3887. }
  3888. }
  3889. list.sort(temp_list);
  3890. temp_size = list.getSize(temp_list);
  3891. max_side = temp_size / 10;
  3892. if(size == 0) {
  3893. side = 1;
  3894. print_side = side - 1;
  3895. } else {
  3896. side = list.getIndex(args, 0);
  3897. if(!isDouble(side)) {
  3898. msg.prefix(sender, prefix_commands, "/help [side]");
  3899. goto("wait");
  3900. }
  3901. print_side = side - 1;
  3902. if(print_side < 0 || print_side > max_side) {
  3903. msg.prefix(sender, prefix_commands, string.concat("Possible: 1 - ", string.number(math.roundDown(max_side + 1))));
  3904. goto("wait");
  3905. }
  3906. }
  3907. msg.string(sender, string.concat("§a --- Help ", string.number(side), " ---"));
  3908. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  3909. if(i < temp_size) {
  3910. command_string = list.getIndex(temp_list, i);
  3911. command = string.getHoverText(command_string, map.getOrDefault(command_map, command_string, ""));
  3912. msg(sender, text.merge(text.new(" /"), text.suggest(command, string.concat("/", command_string))));
  3913. }
  3914. }
  3915. if(side == 1) {
  3916. backward = text.new("§c<<Backward<<");
  3917. forward = string.getClickText("§b>>Forward>>", string.concat("/help ", side + 1));
  3918. } elseif(side > max_side) {
  3919. backward = string.getClickText("§b<<Backward<<", string.concat("/help ", side - 1));
  3920. forward = text.new("§c>>Forward>>");
  3921. } else {
  3922. backward = string.getClickText("§b<<Backward<<", string.concat("/help ", side - 1));
  3923. forward = string.getClickText("§b>>Forward>>", string.concat("/help ", side + 1));
  3924. }
  3925. msg(sender, text.merge(backward, text.new(" "), forward));
  3926. goto("wait");
  3927. @grow
  3928. if(size != 1) {
  3929. msg.prefix(player, prefix_commands, "/grow <radius>");
  3930. goto("wait");
  3931. }
  3932. radius = list.getIndex(args, 0);
  3933. if(!isDouble(radius)) {
  3934. msg.prefix(player, prefix_commands, "Number expected.");
  3935. goto("wait");
  3936. }
  3937. if(radius < 0) {
  3938. msg.prefix(player, prefix_commands, "Positive number expected.");
  3939. goto("wait");
  3940. }
  3941. center_loc = getBlockLocation(entity.getLocation(player));
  3942. grow(center_loc, radius);
  3943. msg.prefix(player, prefix_commands, "Field grown.");
  3944. goto("wait");
  3945. @start
  3946. if(size != 1) {
  3947. @starthelp
  3948. msg.prefix(sender, prefix_commands, "/start <name>");
  3949. goto("wait");
  3950. }
  3951. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3952. modTimer(-500);
  3953. if(arg0 == "chat") {
  3954. script = script.get("Chat");
  3955. if(script != null) {
  3956. script.term(script);
  3957. }
  3958. script.startNamed("Chat", "utils/u_error", "system/chat", "utils/u_general");
  3959. }
  3960. elseif(arg0 == "challenges") {
  3961. script = script.get("Challenges");
  3962. if(script != null) {
  3963. script.term(script);
  3964. }
  3965. script.startNamed("Challenges", "utils/u_error", "survival/challenges", "utils/u_general");
  3966. script = script.get("AllDamageTypes");
  3967. if(script != null) {
  3968. script.term(script);
  3969. }
  3970. script.startNamed("AllDamageTypes", "utils/u_error", "challenges/all_damage_types", "utils/u_general");
  3971. script = script.get("AllEntities");
  3972. if(script != null) {
  3973. script.term(script);
  3974. }
  3975. script.startNamed("AllEntities", "utils/u_error", "challenges/all_entities", "utils/u_general");
  3976. script = script.get("AllItems");
  3977. if(script != null) {
  3978. script.term(script);
  3979. }
  3980. script.startNamed("AllItems", "utils/u_error", "challenges/all_items", "utils/u_general");
  3981. }
  3982. elseif(arg0 == "commands") {
  3983. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_commands", "utils/u_skills");
  3984. if(script == null) {
  3985. msg.dev("Old commands script still active due to error in new script");
  3986. goto("wait");
  3987. }
  3988. script.term(script.get());
  3989. }
  3990. elseif(arg0 == "commandhelp") {
  3991. if(players.getAmount() >= 0) {
  3992. msg.prefix(player, prefix_commands, "There are players online. Do /stop to restart the server.");
  3993. goto("wait");
  3994. }
  3995. script.startNamed("Commandhelp", "system/cmdhelp", "utils/u_general");
  3996. }
  3997. elseif(arg0 == "copyisland") {
  3998. script = script.get("Copyisland");
  3999. if(script != null) {
  4000. script.term(script);
  4001. }
  4002. script.startNamed("Copyisland", "system/copyisland", "utils/u_general");
  4003. }
  4004. elseif(arg0 == "creative") {
  4005. script = script.get("Creative");
  4006. if(script != null) {
  4007. script.term(script);
  4008. }
  4009. script.startNamed("Creative", "utils/u_error", "system/creative", "utils/u_general");
  4010. }
  4011. elseif(arg0 == "damage") {
  4012. script = script.get("Damage");
  4013. if(script != null) {
  4014. script.term(script);
  4015. }
  4016. script.startNamed("Damage", "utils/u_error", "system/damage", "utils/u_general");
  4017. }
  4018. elseif(arg0 == "doors") {
  4019. script = script.get("Doors");
  4020. if(script != null) {
  4021. script.term(script);
  4022. }
  4023. script.startNamed("Doors", "utils/u_error", "system/doors", "utils/u_general");
  4024. }
  4025. elseif(arg0 == "games") {
  4026. script = script.get("Gamecenter");
  4027. if(script != null) {
  4028. script.term(script);
  4029. }
  4030. script.startNamed("Gamecenter", "utils/u_error", "minigames/gamecenter", "utils/u_general", "utils/u_games");
  4031. }
  4032. elseif(arg0 == "gemstones") {
  4033. script = script.get("Gemstones");
  4034. if(script != null) {
  4035. script.term(script);
  4036. }
  4037. script.startNamed("Gemstones", "utils/u_error", "survival/gemstones", "utils/u_general");
  4038. }
  4039. elseif(arg0 == "harvest") {
  4040. script = script.get("Harvest");
  4041. if(script != null) {
  4042. script.term(script);
  4043. }
  4044. script.startNamed("Harvest", "utils/u_error", "survival/harvest", "utils/u_general");
  4045. }
  4046. elseif(arg0 == "herobrine") {
  4047. script = script.get("Herobrine");
  4048. if(script != null) {
  4049. script.term(script);
  4050. }
  4051. script.startNamed("Herobrine", "utils/u_error", "survival/herobrine", "utils/u_general");
  4052. }
  4053. elseif(arg0 == "humans") {
  4054. script = script.get("Humans");
  4055. if(script != null) {
  4056. script.term(script);
  4057. }
  4058. script.startNamed("Humans", "utils/u_error", "system/humans", "utils/u_general");
  4059. }
  4060. elseif(arg0 == "lectern") {
  4061. script = script.get("Lectern");
  4062. if(script != null) {
  4063. script.term(script);
  4064. }
  4065. script.startNamed("Lectern", "utils/u_error", "survival/lectern", "utils/u_general");
  4066. }
  4067. elseif(arg0 == "loginrequests") {
  4068. script = script.get("loginrequests");
  4069. if(script != null) {
  4070. script.term(script);
  4071. }
  4072. script.startNamed("LoginRequests", "system/login_requests", "utils/u_general");
  4073. }
  4074. elseif(arg0 == "loom") {
  4075. script = script.get("Loom");
  4076. if(script != null) {
  4077. script.term(script);
  4078. }
  4079. script.startNamed("Loom", "utils/u_error", "survival/loom", "utils/u_general");
  4080. }
  4081. elseif(arg0 == "perms") {
  4082. script = script.get("Perms");
  4083. if(script != null) {
  4084. script.term(script);
  4085. }
  4086. script.startNamed("Perms", "utils/u_error", "system/perms", "utils/u_general");
  4087. }
  4088. elseif(arg0 == "playerdata") {
  4089. script = script.get("Playerdata");
  4090. if(script != null) {
  4091. script.term(script);
  4092. }
  4093. script.startNamed("Playerdata", "utils/u_error", "system/player_data", "utils/u_general");
  4094. }
  4095. elseif(arg0 == "playtime") {
  4096. script = script.get("Playtime");
  4097. if(script != null) {
  4098. script.term(script);
  4099. }
  4100. script.startNamed("Playtime", "system/playtime", "utils/u_general");
  4101. }
  4102. elseif(arg0 == "pumpkin") {
  4103. script = script.get("Pumpkin");
  4104. if(script != null) {
  4105. script.term(script);
  4106. }
  4107. script.startNamed("Pumpkin", "utils/u_error", "survival/pumpkin", "utils/u_general");
  4108. }
  4109. elseif(arg0 == "recipes") {
  4110. script = script.get("Recipes");
  4111. if(script != null) {
  4112. script.term(script);
  4113. }
  4114. script.startNamed("Recipes", "survival/recipes");
  4115. }
  4116. elseif(arg0 == "stats") {
  4117. script = script.get("Ranklist");
  4118. if(script != null) {
  4119. script.term(script);
  4120. }
  4121. script.startNamed("Ranklist", "utils/u_error", "system/ranklist", "utils/u_general", "utils/u_games");
  4122. }
  4123. elseif(arg0 == "scheduler") {
  4124. script = script.get("Scheduler");
  4125. if(script != null) {
  4126. script.term(script);
  4127. }
  4128. script.startNamed("Scheduler", "utils/u_error", "system/scheduler", "utils/u_general");
  4129. }
  4130. elseif(arg0 == "shop") {
  4131. script = script.get("ChestShops");
  4132. if(script != null) {
  4133. script.term(script);
  4134. }
  4135. script.startNamed("ChestShops", "utils/u_error", "system/chestshops", "utils/u_general");
  4136. }
  4137. elseif(arg0 == "teleporter") {
  4138. script = script.get("Teleporter");
  4139. if(script != null) {
  4140. script.term(script);
  4141. }
  4142. script.startNamed("Teleporter", "utils/u_error", "survival/teleporter", "utils/u_general");
  4143. }
  4144. elseif(arg0 == "mails") {
  4145. script = script.get("Mails");
  4146. if(script != null) {
  4147. script.term(script);
  4148. }
  4149. script.startNamed("Mails", "utils/u_error", "system/mailsystem", "utils/u_general");
  4150. }
  4151. elseif(arg0 == "market") {
  4152. script = script.get("Market");
  4153. if(script != null) {
  4154. script.term(script);
  4155. }
  4156. script.startNamed("Market", "utils/u_error", "system/market", "utils/u_general");
  4157. }
  4158. elseif(arg0 == "mobarena") {
  4159. script = script.get("Mobarena");
  4160. if(script != null) {
  4161. script.term(script);
  4162. }
  4163. script.startNamed("Mobarena", "utils/u_error", "survival/mobarena", "utils/u_general");
  4164. }
  4165. elseif(arg0 == "ticket") {
  4166. script = script.get("Ticket");
  4167. if(script != null) {
  4168. script.term(script);
  4169. }
  4170. script.startNamed("Ticket", "utils/u_error", "system/tickets", "utils/u_general");
  4171. }
  4172. elseif(arg0 == "timber") {
  4173. script = script.get("Timber");
  4174. if(script != null) {
  4175. script.term(script);
  4176. }
  4177. script.startNamed("Timber", "utils/u_error", "survival/timber", "utils/u_general", "utils/u_skills");
  4178. }
  4179. elseif(arg0 == "tiploop") {
  4180. script = script.get("tiploop");
  4181. if(script != null) {
  4182. script.term(script);
  4183. }
  4184. script.startNamed("tiploop", "utils/u_error", "system/tiploop", "utils/u_general");
  4185. }
  4186. elseif(arg0 == "trader") {
  4187. script = script.get("Trader");
  4188. if(script != null) {
  4189. script.term(script);
  4190. }
  4191. script.startNamed("Trader", "utils/u_error", "survival/trader", "utils/u_general");
  4192. }
  4193. elseif(arg0 == "skills") {
  4194. script = script.get("Skills");
  4195. if(script != null) {
  4196. script.term(script);
  4197. }
  4198. script.startNamed("Skills", "utils/u_error", "survival/skills", "utils/u_general", "utils/u_skills", "utils/u_quest");
  4199. }
  4200. elseif(arg0 == "story") {
  4201. /*script = script.get("Story");
  4202. if(script != null) {
  4203. script.term(script);
  4204. }
  4205. script.startNamed("Story", "utils/u_error", "story/story", "utils/u_general");*/
  4206. script = script.get("QuestsAdmont");
  4207. if(script != null) {
  4208. script.term(script);
  4209. }
  4210. script.startNamed("QuestsAdmont", "utils/u_error", "story/admont/core", "utils/u_general", "utils/u_quest");
  4211. /*script = script.get("QuestsSchiffbruch");
  4212. if(script != null) {
  4213. script.term(script);
  4214. }
  4215. script.startNamed("QuestsSchiffbruch", "utils/u_error", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");*/
  4216. }
  4217. elseif(arg0 == "sitting") {
  4218. script = script.get("Sitting");
  4219. if(script != null) {
  4220. script.term(script);
  4221. }
  4222. script.startNamed("Sitting", "utils/u_error", "system/sitting", "utils/u_general");
  4223. }
  4224. elseif(arg0 == "survival") {
  4225. script = script.get("Survival");
  4226. if(script != null) {
  4227. script.term(script);
  4228. }
  4229. script.startNamed("Survival", "utils/u_error", "survival/survival", "utils/u_general", "utils/u_skills");
  4230. }
  4231. elseif(arg0 == "plots") {
  4232. script = script.get("Plots");
  4233. if(script != null) {
  4234. script.term(script);
  4235. }
  4236. script.startNamed("Plots", "utils/u_error", "system/plots", "utils/u_general");
  4237. }
  4238. else {
  4239. goto("starthelp");
  4240. }
  4241. goto("wait");
  4242. @stop
  4243. script.start("stop");
  4244. goto("wait");
  4245. @senditem
  4246. if(size != 1) {
  4247. msg.prefix(player, prefix_commands, "/senditem <player>");
  4248. goto("wait");
  4249. }
  4250. item = living.getHand(player);
  4251. if(item.isAir(item)) {
  4252. msg.prefix(player, prefix_commands, "You need to hold an item in your hand.");
  4253. goto("wait");
  4254. }
  4255. p_name = list.getIndex(args, 0);
  4256. p_uuid = player.getUuid(p_name);
  4257. if(p_uuid == null) {
  4258. msg.prefix(player, prefix_commands, "This player has never been online.");
  4259. goto("wait");
  4260. }
  4261. p = read.player(p_name);
  4262. if(p == null) {
  4263. msg.prefix(player, prefix_commands, "This player is not online.");
  4264. goto("wait");
  4265. }
  4266. player.safeGiveItem(p, item);
  4267. player.removeItem(player, item);
  4268. goto("wait");
  4269. @top
  4270. player_loc = entity.getLocation(player);
  4271. y = 319;
  4272. loc.setY(player_loc, y);
  4273. while(y > -64 && block.isAir(block.get(player_loc))) {
  4274. loc.setY(player_loc, y);
  4275. y--;
  4276. }
  4277. if(y == -64) {
  4278. msg.prefix(player, prefix_commands, "No block found.");
  4279. goto("wait");
  4280. }
  4281. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  4282. goto("wait");
  4283. @creative
  4284. crea_spawn = world.getCreativeSpawn();
  4285. world = loc.getWorld(crea_spawn);
  4286. if(world == null) {
  4287. msg.prefix(player, prefix_commands, "This world is not loaded.");
  4288. goto("wait");
  4289. }
  4290. if(size > 1) {
  4291. msg.prefix(player, prefix_commands, "/creative [player]");
  4292. goto("wait");
  4293. }
  4294. if(size == 0) {
  4295. p = player;
  4296. }
  4297. if(size == 1) {
  4298. p_name = list.getIndex(args, 0);
  4299. p = read.player(p_name);
  4300. if(p == null) {
  4301. msg.prefix(player, prefix_commands, "This player is not online.");
  4302. goto("wait");
  4303. }
  4304. if(!perm.has("tp.other", player)) {
  4305. perm.no("tp.other", player);
  4306. goto("wait");
  4307. }
  4308. }
  4309. if(player.hasMinigame(p)) {
  4310. if(size == 1) {
  4311. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  4312. goto("wait");
  4313. }
  4314. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  4315. goto("wait");
  4316. }
  4317. if(size == 1) {
  4318. if(player != p) {
  4319. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was teleported to the creative world."));
  4320. }
  4321. }
  4322. if(player.teleport(p, crea_spawn, true)) {
  4323. msg.prefix(p, prefix_commands, "You have been teleported to the creative world.");
  4324. }
  4325. goto("wait");
  4326. @minigames
  4327. @games
  4328. world = loc.getWorld(world.getGamesSpawn());
  4329. if(world == null) {
  4330. msg.prefix(player, prefix_commands, "This world is not loaded.");
  4331. goto("wait");
  4332. }
  4333. if(size > 1) {
  4334. msg.prefix(player, prefix_commands, "/games [player]");
  4335. goto("wait");
  4336. }
  4337. if(size == 0) {
  4338. p = player;
  4339. }
  4340. if(size == 1) {
  4341. p_name = list.getIndex(args, 0);
  4342. p = read.player(p_name);
  4343. if(p == null) {
  4344. msg.prefix(player, prefix_commands, "This player is not online.");
  4345. goto("wait");
  4346. }
  4347. if(!perm.has("tp.other", player)) {
  4348. perm.no("tp.other", player);
  4349. goto("wait");
  4350. }
  4351. }
  4352. if(player.hasMinigame(p)) {
  4353. if(size == 1) {
  4354. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  4355. goto("wait");
  4356. }
  4357. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  4358. goto("wait");
  4359. }
  4360. if(size == 1) {
  4361. if(player != p) {
  4362. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was teleported to the games world."));
  4363. }
  4364. }
  4365. if(player.teleport(p, world.getGamesSpawn(), true)) {
  4366. msg.prefix(p, prefix_commands, "You have been teleported to the games world.");
  4367. }
  4368. goto("wait");
  4369. @repair
  4370. item = living.getHand(player);
  4371. if(item.isAir(item)) {
  4372. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  4373. goto("wait");
  4374. }
  4375. item.setDamage(item, 0);
  4376. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  4377. goto("wait");
  4378. @playtime
  4379. if(size == 0) {
  4380. p_id = player.getId(player);
  4381. arg0 = player.getName(player);
  4382. } else {
  4383. arg0 = string.toLowerCase(list.getIndex(args, 0));
  4384. if(arg0 == "year") {
  4385. modTimer(-20);
  4386. if(!perm.has("playtime.year", player)) {
  4387. perm.no("playtime.year", player);
  4388. goto("wait");
  4389. }
  4390. calendar = time.new(time.getMillis());
  4391. now_month = time.getMonth(calendar);
  4392. now_year = time.getYear(calendar);
  4393. if(size == 1) {
  4394. year = now_year;
  4395. } else {
  4396. year = list.getIndex(args, 1);
  4397. if(!isDouble(year)) {
  4398. msg.prefix(player, prefix_commands, "Number expected.");
  4399. goto("wait");
  4400. }
  4401. if(year > now_year) {
  4402. year = now_year;
  4403. }
  4404. }
  4405. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  4406. since_minutes = playtime.getTotalOnlineMinutes();
  4407. //Tabelle erstellen
  4408. table = table.new("§8", 4, 5, 5);
  4409. msg.string(player, table.getStart(table));
  4410. msg.string(player, table.get(table, string.number(year), "Playtime", "Change"));
  4411. msg.string(player, table.getMiddle(table));
  4412. //Monats-Spielzeit berechnen
  4413. temp_list = list.new();
  4414. list.add(temp_list, playtime.getInterval(time.getCal(year - 1, 12, 1, 0, 0, 0), time.getCal(year, 1, 1, 0, 0, 0))); //Dezember des Vorjahres hinzufügen
  4415. for(i = 1; i <= 12; i++) {
  4416. midnight = time.getCal(year, i, 1, 0, 0, 0);
  4417. midnight_2 = time.getCal(year, i + 1, 1, 0, 0, 0);
  4418. minutes = playtime.getInterval(midnight, midnight_2);
  4419. list.add(temp_list, minutes);
  4420. if(i == now_month && year == now_year) {
  4421. minutes += since_minutes;
  4422. }
  4423. }
  4424. for(i = 1; i <= 12; i++) {
  4425. minutes = list.getIndex(temp_list, i);
  4426. hours = math.roundDown(minutes / 60);
  4427. mod_minutes = minutes % 60;
  4428. if(mod_minutes < 10) {
  4429. time_string = string.concat("§6", string.number(hours), ":0", string.number(mod_minutes), " h");
  4430. } else {
  4431. time_string = string.concat("§6", string.number(hours), ":", string.number(mod_minutes), " h");
  4432. }
  4433. pre_minutes = list.getIndex(temp_list, i - 1);
  4434. if(minutes >= pre_minutes) {
  4435. color = "§a+";
  4436. a = minutes;
  4437. b = pre_minutes;
  4438. } else {
  4439. color = "§c-";
  4440. a = pre_minutes;
  4441. b = minutes;
  4442. }
  4443. if(b == 0) {
  4444. change = "";
  4445. } else {
  4446. change = math.round(a / b * 100 - 100);
  4447. change = string.concat(color, string.number(change), " %");
  4448. }
  4449. msg.string(player, table.get(table, string.concat("§6", month.getShortName(i)), time_string, change));
  4450. if(i == now_month && year == now_year) {
  4451. break;
  4452. }
  4453. }
  4454. //Tabelle beenden
  4455. msg.string(player, table.getEnd(table));
  4456. goto("wait");
  4457. }
  4458. if(arg0 == "month") {
  4459. modTimer(-100);
  4460. if(!perm.has("playtime.month", player)) {
  4461. perm.no("playtime.month", player);
  4462. goto("wait");
  4463. }
  4464. calendar = time.new(time.getMillis());
  4465. now_day = time.getDay(calendar);
  4466. now_month = time.getMonth(calendar);
  4467. now_year = time.getYear(calendar);
  4468. year = now_year;
  4469. if(size == 1) {
  4470. month = now_month;
  4471. } else {
  4472. month = list.getIndex(args, 1);
  4473. if(!isDouble(month)) {
  4474. msg.prefix(player, prefix_commands, "Number expected.");
  4475. goto("wait");
  4476. }
  4477. if(month < 1) {
  4478. month = 1;
  4479. } elseif(month > 12) {
  4480. month = 12;
  4481. }
  4482. if(size == 3) {
  4483. year = list.getIndex(args, 2);
  4484. if(!isDouble(year)) {
  4485. msg.prefix(player, prefix_commands, "Number expected.");
  4486. goto("wait");
  4487. }
  4488. }
  4489. if(year > now_year ||(year >= now_year && month > now_month)) {
  4490. month = now_month;
  4491. year = now_year;
  4492. }
  4493. }
  4494. sum_minutes = 0;
  4495. sum_players = 0;
  4496. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  4497. since_minutes = playtime.getTotalOnlineMinutes();
  4498. //Tabelle erstellen
  4499. table = table.new("§8", 4, 5, 5);
  4500. msg.string(player, table.getStart(table));
  4501. msg.string(player, table.get(table, month.getShortName(month), "Playtime", "Players"));
  4502. msg.string(player, table.getMiddle(table));
  4503. //Tages-Spielzeit berechnen
  4504. month_days = time.getMonthDays(month, year);
  4505. for(i = 1; i <= month_days; i++) {
  4506. midnight = time.getCal(year, month, i, 0, 0, 0);
  4507. if(i == month_days) {
  4508. midnight_2 = time.getCal(year, month + 1, 1, 0, 0, 0);
  4509. } else {
  4510. midnight_2 = time.getCal(year, month, i + 1, 0, 0, 0);
  4511. }
  4512. players = playtime.getPlayersPerInterval(midnight, midnight_2);
  4513. sum_players += players;
  4514. minutes = playtime.getInterval(midnight, midnight_2);
  4515. if(i == now_day && month == now_month && year == now_year) {
  4516. minutes += since_minutes;
  4517. }
  4518. sum_minutes += minutes;
  4519. hours = math.roundDown(minutes / 60);
  4520. minutes = minutes % 60;
  4521. if(minutes < 10) {
  4522. time_string = string.concat("§6", string.number(hours), ":0", string.number(minutes), " h");
  4523. } else {
  4524. time_string = string.concat("§6", string.number(hours), ":", string.number(minutes), " h");
  4525. }
  4526. msg.string(player, table.get(table, string.concat("§6", string.number(i)), time_string, string.number(players)));
  4527. if(i == now_day && month == now_month && year == now_year) {
  4528. break;
  4529. }
  4530. }
  4531. //Average
  4532. avg_mins = sum_minutes / i;
  4533. avg_hours = math.roundDown(avg_mins / 60);
  4534. avg_mins = avg_mins % 60;
  4535. if(avg_mins < 10) {
  4536. avg_time_string = string.concat("§6", string.number(avg_hours), ":0", string.number(avg_mins), " h");
  4537. } else {
  4538. avg_time_string = string.concat("§6", string.number(avg_hours), ":", string.number(avg_mins), " h");
  4539. }
  4540. avg_players = sum_players / i;
  4541. msg.string(player, table.getMiddle(table));
  4542. msg.string(player, table.get(table, "§6Ø", avg_time_string, string.number(math.roundDown(avg_players))));
  4543. //Tabelle beenden
  4544. msg.string(player, table.getEnd(table));
  4545. goto("wait");
  4546. }
  4547. if(arg0 == "all") {
  4548. modTimer(-10);
  4549. msg.string(player, string.getSpacer());
  4550. msg.prefix(player, prefix_commands, "Server-Playtime");
  4551. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  4552. since_minutes = playtime.getTotalOnlineMinutes();
  4553. //Spielzeit heute
  4554. now_cal = time.new(time.getMillis());
  4555. now_day = time.getDay(now_cal);
  4556. now_month = time.getMonth(now_cal);
  4557. now_year = time.getYear(now_cal);
  4558. midnight = time.getCal(now_year, now_month, now_day, 0, 0, 0);
  4559. minutes = playtime.getInterval(midnight, now_cal) + since_minutes;
  4560. hours = string.number(math.roundDown(minutes / 60));
  4561. minutes = string.number(minutes % 60);
  4562. msg.string(player, string.concat("§6Today: §r", hours, " h ", minutes, " min"));
  4563. //Spielzeit 30 Tage für alle Spieler
  4564. year = now_year;
  4565. month = now_month;
  4566. day = now_day - 30;
  4567. if(day < 1) {
  4568. month -= 1;
  4569. if(month < 1) {
  4570. year -= 1;
  4571. month = 12;
  4572. }
  4573. day += time.getMonthDays(month, year);
  4574. }
  4575. thirtyDaysAgo = time.getCal(year, month, day, time.getHour(now_cal), time.getMinute(now_cal), time.getSecond(now_cal));
  4576. minutes = playtime.getInterval(thirtyDaysAgo, now_cal) + since_minutes;
  4577. hours = string.number(math.roundDown(minutes / 60));
  4578. minutes = string.number(minutes % 60);
  4579. msg.string(player, string.concat("§630 Days: §r", hours, " h ", minutes, " min"));
  4580. //Spielzeit gesamt
  4581. minutes = playtime.getTotal();
  4582. hours = string.number(math.roundDown(minutes / 60));
  4583. minutes = string.number(minutes % 60);
  4584. msg.string(player, string.concat("§6Total: §r", hours, " h ", minutes, " min"));
  4585. goto("wait");
  4586. }
  4587. if(!perm.has("playtime.other", player)) {
  4588. perm.no("playtime.other", player);
  4589. goto("wait");
  4590. }
  4591. }
  4592. if(!checkIfEverOnline(arg0)) {
  4593. msg.prefix(player, prefix_commands, "This player has never been online.");
  4594. goto("wait");
  4595. }
  4596. p_uuid = player.getUuid(arg0);
  4597. arg0 = player.getName(p_uuid);
  4598. p_id = player.getId(p_uuid);
  4599. msg.string(player, string.getSpacer());
  4600. msg.prefix(player, prefix_commands, string.concat("Playtime of ", player.getName(p_uuid)));
  4601. //Online seit
  4602. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  4603. if(isOnline(arg0)) {
  4604. since_hours = math.roundDown(since_minutes / 60);
  4605. mod_minutes = since_minutes % 60;
  4606. msg.string(player, string.concat("§aOnline since: §r", string.number(since_hours), " hours ", string.number(mod_minutes), " minutes"));
  4607. } else {
  4608. msg.string(player, "§6Status: §cOffline");
  4609. }
  4610. //Spielzeit heute
  4611. now_cal = time.new(time.getMillis());
  4612. now_day = time.getDay(now_cal);
  4613. now_month = time.getMonth(now_cal);
  4614. now_year = time.getYear(now_cal);
  4615. midnight = time.getCal(now_year, now_month, now_day, 0, 0, 0);
  4616. minutes = playtime.getPlayerInterval(p_id, midnight, now_cal) + since_minutes;
  4617. hours = string.number(math.roundDown(minutes / 60));
  4618. minutes = string.number(minutes % 60);
  4619. msg.string(player, string.concat("§6Today: §r", hours, " h ", minutes, " min"));
  4620. //Spielzeit 30 Tage
  4621. year = now_year;
  4622. month = now_month;
  4623. day = now_day - 30;
  4624. if(day < 1) {
  4625. month -= 1;
  4626. if(month < 1) {
  4627. year -= 1;
  4628. month = 12;
  4629. }
  4630. day += time.getMonthDays(month, year);
  4631. }
  4632. thirtyDaysAgo = time.getCal(year, month, day, time.getHour(now_cal), time.getMinute(now_cal), time.getSecond(now_cal));
  4633. minutes = playtime.getPlayerInterval(p_id, thirtyDaysAgo, now_cal) + since_minutes;
  4634. hours = string.number(math.roundDown(minutes / 60));
  4635. minutes = string.number(minutes % 60);
  4636. msg.string(player, string.concat("§630 Days: §r", hours, " h ", minutes, " min"));
  4637. //Spielzeit gesamt
  4638. minutes = playtime.getPlayerTotal(p_id);
  4639. hours = string.number(math.roundDown(minutes / 60));
  4640. minutes = string.number(minutes % 60);
  4641. msg.string(player, string.concat("§6Total: §r", hours, " h ", minutes, " min"));
  4642. goto("wait");
  4643. @datatools
  4644. if(size == 0) {
  4645. @datatoolshelp
  4646. msg.prefix(player, prefix_datatools, "/datatools ...");
  4647. msg.string(player, "§6 - item-flag <name> §rAdds a flag on an item");
  4648. msg.string(player, "§6 - item-name <name> §rRenames an item");
  4649. msg.string(player, "§6 - item-lore <lore> §rSets an item lore");
  4650. msg.string(player, "§6 - item-attribute <attribut> <slot> <double> <op> §rAdds an attribute to an item");
  4651. msg.string(player, "§6 - entity-hide §rHides an entity");
  4652. msg.string(player, "§6 - entity-show §rShows an entity");
  4653. msg.string(player, "§6 - entity-name <name> §rRenames an entity");
  4654. msg.string(player, "§6 - entity-print §rPrint entities nbt-tag");
  4655. msg.string(player, "§6 - frame-hide §rHides an item frame");
  4656. msg.string(player, "§6 - frame-show §rShows an item frame");
  4657. msg.string(player, "§6 - name-visibility <boolean> §rShow name (not) permanent");
  4658. goto("wait");
  4659. }
  4660. arg0 = string.toLowerCase(list.getIndex(args, 0));
  4661. if(arg0 == "item-flag") {
  4662. if(size < 2) {
  4663. msg.prefix(player, prefix_datatools, "/datatools item-flag <name>");
  4664. goto("wait");
  4665. }
  4666. item = living.getHand(player);
  4667. if(item.isAir(item)) {
  4668. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  4669. goto("wait");
  4670. }
  4671. name = string.concatList(args, " ", 1, size - 1);
  4672. if(!list.contains(item_flags, name)) {
  4673. msg.prefix(player, prefix_datatools, "You can´t add that flag.");
  4674. goto("wait");
  4675. }
  4676. item.addFlag(item, name);
  4677. msg.prefix(player, prefix_datatools, "Flag added.");
  4678. goto("wait");
  4679. }
  4680. if(arg0 == "item-attribute") {
  4681. if(size < 5) {
  4682. msg.prefix(player, prefix_datatools, "/datatools item-attribute <attribut> <slot> <double> <op>");
  4683. goto("wait");
  4684. }
  4685. item = living.getHand(player);
  4686. if(item.isAir(item)) {
  4687. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  4688. goto("wait");
  4689. }
  4690. double = list.getIndex(args, 3);
  4691. if(!isDouble(double) || double < 0) {
  4692. msg.prefix(player, prefix_datatools, "Natural number expected.");
  4693. goto("wait");
  4694. }
  4695. attribut = list.getIndex(args, 1);
  4696. if(!list.contains(attributes, attribut)) {
  4697. msg.prefix(player, prefix_datatools, "Unknown attribute.");
  4698. goto("wait");
  4699. }
  4700. slot = read.slot(list.getIndex(args, 2));
  4701. if(slot == null) {
  4702. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  4703. goto("wait");
  4704. }
  4705. operation = list.getIndex(args, 4);
  4706. if(!set.contains(operation_set, operation)) {
  4707. msg.prefix(player, prefix_datatools, "Unknown operation.");
  4708. goto("wait");
  4709. }
  4710. item.addAttribute(item, attribut, slot, double, operation);
  4711. msg.prefix(player, prefix_datatools, "Attribute added.");
  4712. goto("wait");
  4713. }
  4714. if(arg0 == "item-name") {
  4715. if(size < 2) {
  4716. msg.prefix(player, prefix_datatools, "/datatools item-name <name>");
  4717. goto("wait");
  4718. }
  4719. item = living.getHand(player);
  4720. if(item.isAir(item)) {
  4721. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4722. goto("wait");
  4723. }
  4724. name = string.concatList(args, " ", 1, size - 1);
  4725. name = string.replace(name, "&", "§");
  4726. name = string.replace(name, "\\n", "\n");
  4727. item.setName(item, text.new(name));
  4728. msg.prefix(player, prefix_datatools, string.concat("Item renamed to ", name, "§r."));
  4729. goto("wait");
  4730. }
  4731. if(arg0 == "entity-print") {
  4732. entity = player.getTargetEntity(player, 5);
  4733. if(entity == null) {
  4734. msg.prefix(player, prefix_commands, "No entity found.");
  4735. goto("wait");
  4736. }
  4737. txt_ent = string.entity(entity);
  4738. msg(player, string.getClipBoardText(txt_ent, txt_ent));
  4739. goto("wait");
  4740. }
  4741. if(arg0 == "item-lore") {
  4742. if(size < 2) {
  4743. msg.prefix(player, prefix_datatools, "/datatools item-lore <lore>");
  4744. goto("wait");
  4745. }
  4746. item = living.getHand(player);
  4747. if(item.isAir(item)) {
  4748. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4749. goto("wait");
  4750. }
  4751. lore = string.concatList(args, " ", 1, size - 1);
  4752. lore = string.replace(lore, "&", "§");
  4753. item.addLore(item, lore);
  4754. msg.prefix(player, prefix_datatools, "New lore added.");
  4755. goto("wait");
  4756. }
  4757. if(arg0 == "entity-name") {
  4758. if(size < 2) {
  4759. msg.prefix(player, prefix_datatools, "/datatools entity-name <name>");
  4760. goto("wait");
  4761. }
  4762. templist = living.near(player, 3);
  4763. list.remove(templist, player);
  4764. if(list.getSize(templist) == 0) {
  4765. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4766. goto("wait");
  4767. }
  4768. entity = list.getIndex(templist, 0);
  4769. name = string.concatList(args, " ", 1, size - 1);
  4770. name = string.replace(name, "&", "§");
  4771. entity.setName(entity, text.new(name), true);
  4772. msg.prefix(player, prefix_datatools, string.concat("Entity renamed to ", name, "§r."));
  4773. goto("wait");
  4774. }
  4775. if(arg0 == "name-visibility") {
  4776. if(size != 2) {
  4777. msg.prefix(player, prefix_datatools, "/datatools name-visibility <boolean>");
  4778. goto("wait");
  4779. }
  4780. templist = living.near(player, 3);
  4781. list.remove(templist, player);
  4782. if(list.getSize(templist) == 0) {
  4783. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4784. goto("wait");
  4785. }
  4786. entity = list.getIndex(templist, 0);
  4787. boolean = list.getIndex(args, 1);
  4788. name = entity.getName(entity);
  4789. entity.setName(entity, name, boolean);
  4790. msg.prefix(player, prefix_datatools, "Name-Visibility changed.");
  4791. goto("wait");
  4792. }
  4793. if(arg0 == "frame-hide") {
  4794. if(size != 1) {
  4795. msg.prefix(player, prefix_datatools, "/datatools frame-hide");
  4796. goto("wait");
  4797. }
  4798. entity = player.getTargetEntity(player, 5);
  4799. if(entity == null) {
  4800. msg.prefix(player, prefix_datatools, "Not an item frame.");
  4801. goto("wait");
  4802. }
  4803. entity_type = entity.getType(entity);
  4804. if(entity_type != "item_frame" && entity_type != "glow_item_frame") {
  4805. msg.prefix(player, prefix_datatools, "Not an item frame.");
  4806. goto("wait");
  4807. }
  4808. entity.frame.hide(entity);
  4809. msg.prefix(player, prefix_datatools, "Item frame is now hidden.");
  4810. goto("wait");
  4811. }
  4812. if(arg0 == "frame-show") {
  4813. if(size != 1) {
  4814. msg.prefix(player, prefix_datatools, "/datatools frame-show");
  4815. goto("wait");
  4816. }
  4817. entity = player.getTargetEntity(player, 5);
  4818. if(entity == null) {
  4819. msg.prefix(player, prefix_datatools, "Not an item frame.");
  4820. goto("wait");
  4821. }
  4822. entity_type = entity.getType(entity);
  4823. if(entity_type != "item_frame" && entity_type != "glow_item_frame") {
  4824. msg.prefix(player, prefix_datatools, "Not an item frame.");
  4825. goto("wait");
  4826. }
  4827. entity.frame.show(entity);
  4828. msg.prefix(player, prefix_datatools, "Item frame now shown.");
  4829. goto("wait");
  4830. }
  4831. if(arg0 == "entity-hide") {
  4832. if(size != 1) {
  4833. msg.prefix(player, prefix_datatools, "/datatools entity-hide");
  4834. goto("wait");
  4835. }
  4836. templist = living.near(player, 3);
  4837. list.remove(templist, player);
  4838. if(list.getSize(templist) == 0) {
  4839. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4840. goto("wait");
  4841. }
  4842. entity = list.getIndex(templist, 0);
  4843. living.setInvisible(entity, true);
  4844. msg.prefix(player, prefix_datatools, "Entity is now hidden.");
  4845. goto("wait");
  4846. }
  4847. if(arg0 == "entity-show") {
  4848. if(size != 1) {
  4849. msg.prefix(player, prefix_datatools, "/datatools entity-show");
  4850. goto("wait");
  4851. }
  4852. templist = living.near(player, 3);
  4853. list.remove(templist, player);
  4854. if(list.getSize(templist) == 0) {
  4855. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4856. goto("wait");
  4857. }
  4858. entity = list.getIndex(templist, 0);
  4859. living.setInvisible(entity, false);
  4860. msg.prefix(player, prefix_datatools, "Entity is now visible.");
  4861. goto("wait");
  4862. }
  4863. goto("datatoolshelp");
  4864. @human
  4865. if(size == 0) {
  4866. @humanhelp
  4867. msg.prefix(player, prefix_human, "/human ...");
  4868. msg.string(player, string.concat("§6 - skin <name> §rSets the skin of a citizen"));
  4869. msg.string(player, string.concat("§6 - equip [bodypart] [itemstack] §rEquips a citizen"));
  4870. goto("wait");
  4871. }
  4872. arg0 = string.toLowerCase(list.getIndex(args, 0));
  4873. citizen = player.getTargetCitizen(player, 5);
  4874. if(!isCitizen(citizen)) {
  4875. msg.prefix(player, prefix_human, "No citizen.");
  4876. goto("wait");
  4877. }
  4878. elseif(arg0 == "equip") {
  4879. slot = "HAND";
  4880. if(size > 1) {
  4881. slot = string.toUpperCase(list.getIndex(args, 1));
  4882. if(slot != "BOOTS" && slot != "CHESTPLATE" && slot != "HAND" && slot != "HELMET" && slot != "LEGGINGS" && slot != "OFF_HAND") {
  4883. msg.prefix(player, prefix_commands, "Not supported bodypart.");
  4884. goto("wait");
  4885. }
  4886. }
  4887. if(size < 3) {
  4888. equip_item = living.getHand(player);
  4889. } elseif(size >= 3) {
  4890. arg2 = list.getIndex(args, 2);
  4891. equip_mat = material.get(arg2);
  4892. if(equip_mat == null) {
  4893. msg.prefix(player, prefix_commands, "Not a valid item.");
  4894. goto("wait");
  4895. }
  4896. equip_item = item.new(equip_mat);
  4897. }
  4898. citizen.setEquip(citizen, slot, equip_item);
  4899. goto("wait");
  4900. }
  4901. elseif(arg0 == "skin") {
  4902. if(size == 2) {
  4903. name = string.toLowerCase(list.getIndex(args, 1));
  4904. if(name == "farmer") {
  4905. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYyMDgyMDYyMjYyMiwKICAicHJvZmlsZUlkIiA6ICJkZGVkNTZlMWVmOGI0MGZlOGFkMTYyOTIwZjdhZWNkYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJEaXNjb3JkQXBwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzEzMTA0MWI1MTlkZmIyNGQ1MDU0ZDRkMzViZjQ4NTlkNmQ0ZjJlNzczMTZjMjM0YWM1YjhlNWE3MDJkY2FiNGEiCiAgICB9CiAgfQp9", "rww+2EGM/HewD/19pK8Z3DdkJZm1rbzTWTuEfUvthK0pxNDPrZ+vQ1z4ilCuw4kHiLGedq65CQg1LKfE4mbTC5y/iHoqiVFz23slu69PNp8w2g0atH3/NmpUI1DGHv2DCxZReNtaHR9pAU8wVAafdk4bK+qlcoYCVEjQGfG7QvrHpD+T+HoWOzdmr3Wd4Hcr4c8NSwNSpJev5MtqZSE4KJFvv9W6/gFRy7jDvHY/W/XDz4mj9S34jrUirfslDJSnmEPhazNlPFXiUvTKftD+GLDbGSar2QAi+9iuPX2iKOkleGpzO3zfKXcvwF69fWIxFBx+6GR4mbA+dCCpxOgk5XVgr/swlzbeIL62+so61r2bvLEsvTGfkhv66yZP5hKAtHgbCyuqNP6l3FOfrOsQms42uqAkzPuKpYA5tjLH1FLL/zFr9f0VkPTrqyADJDbpV8MhxuAYwzaUsO5p2UI5AbA+ZQDSj9hBVC6ULGfiG89kExEvPGF3DXuBbboZN/nYw4oycnL0yYcaIS2CGQPJrs3pioFF/lhCJtCcP0nPfChapQyWu9/x++1pZOzLwe8cV+5bzFy17HNBYI9MyjbWm1vDaFWatZn4VGijSbJYYhuLhu59oBjCuWmDp7r6l3iASMyyHWhCajsPTxxI5eOzbhGJ1VBZ1GKvRzDMg5W6VGM=");
  4906. } elseif(name == "fisher") {
  4907. citizen.setSkin(citizen, "eyJ0aW1lc3RhbXAiOjE1NjA2MTExODU0ODcsInByb2ZpbGVJZCI6IjkxZmUxOTY4N2M5MDQ2NTZhYTFmYzA1OTg2ZGQzZmU3IiwicHJvZmlsZU5hbWUiOiJoaGphYnJpcyIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTBlMzdjOThhNGNkNGQ5ZDQ4ZDliZmEzNDU2ZWI5ZjliOGM4ZjU3OThhMWVhODc4MDljZTc2MWM4YTk3OGJjOCJ9fX0=", "gPKKLdqtSrO9EbjX3CfJA/wPUlWZq4Jtuvq7ha/BhHMoMOPFUmS44EtpUjeQXvV/d3lDWtYdWZnFgaKdpTu8EC59/pwuWixw702ZdN0ZwXonN37gZuBQgVkhIw+C5Zi5ZPPMVGvxDmA1rQ/ThDgC0SXkRdICi7Cq91oUiKd92wMd/ZEczhUuId2nQeilSybB8+P4+412j3XzZLZi3jwo1yCXQwtVWF7WGNnxudkwY+B1CI649tGntAgOKIlvF+gsLUBv7+fte6q9kS9USZ0FRK8ymH72JoE6bFUHG4+cEmKr8IpDny570GBl5ZUiy+vbTyOI+JIuYeix4o4xmUyeYunw0+RsQiZ5+NF59QAdtTpP2XUbh9G3GaZTT/5t82AQFrKCMg5EF/znNhLO5U6c0lYrCTEYkmKhL4scJwjxgbhrKVQqosrrKx4LnM65HI+6bJK/6l+7Q4aQxzCYeUfmWEVZDxf//Na5+kKX+fibGx8+xYjR+YuevkHw25Pf9NJk1489eRPrUp0WMt7AJNvbR4rbFpH/FZVOZ1RF/jKcNh1cS8JFvgnUSo2ues3riJ5A5WtHhb8C+PwqypCnLvgb6EMh3PnXObpWo6M28JZOhW/BrF4Q0tAnx6XLvTcGecKaVI6rVjxRUQET5xW6BMdNCRsva9BC5yVDTVHvatv1M5M=");
  4908. } elseif(name == "baker") {
  4909. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYxNDcyMzU0NDIwNSwKICAicHJvZmlsZUlkIiA6ICI4NDMwMDNlM2JlNTY0M2Q5OTQxMTBkMzJhMzU2MTk2MCIsCiAgInByb2ZpbGVOYW1lIiA6ICJHYWJvTWNHYW1lciIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZjVkZTQ4ODJiYzBlZDNjOWY5N2RjNDBiN2RkZjdmMGQxMDk3MzM3ODUzZjQwOTFjMmYwZjUwNWE3ZjZkM2E4IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0=", "K42itRnrloSmCnA4JkVbRMpd1SK11xVjERFyDnDzE3fo+vnhfqumXv1bLFfgDbm6M1pHpSnB3nIHVGiFfHAnPAzScqgr3cvE9QTZRB81utbXZKfs1AyavpbikkoGgwv8zplxVJvBTrYBtFkt1TbNgndkqM7iJY+Q9OquL+WCa1LPJfquXI+0oRMlhJ7pTw7VddxFLPvuqHtGOXiaBi2da0pfM3M9sfZXXerlIpAC6I2oijo8psOJ+/gcdLMlzriCRkB//iEJTYP9fSsZYBWKSN4j4WEW+yvyMZZND0FZBVy5Ee11AEAbEgxUekvsyT3kiE2du9MXErG4URY4Mwvp7AtBZ0y0l4OR4dP23O2ioOqFTTV7DBuHPQmYvaugkSWwDMbiuY2a1N7m6X4wZPSWUTXqvHd2VO12Y+1T285AizxC4qZ7r1oNbpwpUZvZ+x3QF7cGhcqA53WJvYtypr9BYqvzrGduql/kei1I5kyynlSoTExjgwKN+j0g6TDdXf6ty9gzdDN0Y1DyUmk4xlCniSm7HaoSUKkk5fF1brApC216MzB5v9/cZDQAXDnjpWFbtmWALx5ueMhrTlEMnfbIIJfFnhRgmqYiS3ilCsG7I9ObRTR2+4eTlGnInR2TBcSHv8PcIW/vSIN0sOPTX3VHrlpc5kmW8+gc8J4dEt7yYqc=");
  4910. } elseif(name == "priest") {
  4911. citizen.setSkin(citizen, "eyJ0aW1lc3RhbXAiOjE1MDcxNzUzMjgzMjksInByb2ZpbGVJZCI6IjcwOTU2NDU0NTJkOTRiYTI5YzcwZDFmYTY3YjhkYTQyIiwicHJvZmlsZU5hbWUiOiJIaWRkdXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzU4MzgxOTdkNzBhNmQ2ZmYzODk3NGExYmEyZTM1NTJiOTBjNjRjZmE0ZGFlMjI5NGNmMmRjMTgwMTY5YzVlOCJ9fX0=", "ryT6EeGTuOOtYW0XiBszxWTI+CxwfVrkBfB4YlnPwjGyPjHAXzOmnZh8HKsBMHD5APd7zOEkU829E8uL8wJLmRjiVHKldOphQee44ZgNN1Y/8RymneghYEs7HNLyB2g4hEzHl7HWOCq1R9sNUUlWRAkREpHo4LzzGSP6+hcBHjS7Y+SYm/QTnwmUoSnhakijBWi8/dA9Uf37g5hyXdRUKbLtySoD/bMWkZlUgkmcl2ErPYl3E87Zt+4VGCP9lfoWE9zhP+SrXgdilXFbGYECpkDMyXqcVx1VjFmqG1zpdalfimWeJ8gwRwWmJWxU3g97UGJ7g/Wg7Kn2Ar0rkwx660pf4syESRJKx1MmrAICUxoj1CpLlZOcDhoDvFTqvcGSmo7gdrTk1qEdTq0oHfMuaJRFjBwophK+z0YOO4vzyFadB6nvtmBvT8TDSfp0hxsIzzPpIQ7B0BBdpqwklavktDPMT7qcR1pXpbh/7EhN0OcJtOXjzNH9Bjmd10UWb5XZmtO65ICr7Q947Wd5JezabLMR3L3CNSXPerSCcvxFMdx5s0Io7SNjvk38rranOEHdsG7Z950DclmbftIr0JlySSZt+PmKVOlvMFulOo9oagHial6S807sd5tziQ9Y/tuNpAYpWbtyEYSBmp8+ydhUyTsbVW0qSS8uY4Mqr0aNaWk=");
  4912. } elseif(name == "alena") {
  4913. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTU5NjIyODQ5NDI0NiwKICAicHJvZmlsZUlkIiA6ICJhMjk1ODZmYmU1ZDk0Nzk2OWZjOGQ4ZGE0NzlhNDNlZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJWaWVydGVsdG9hc3RpaWUiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWUwYjJmNzg5NDZkZThmZjg4YzFkYzI2OTkwMTgxNTEzMjE1NzQ3NDZmZjg1ZjQ1Y2U5Nzk1YzZmMjc4NDNiNyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", "kDLavxU1Et/E6Gak3MaUHsqrH91LcQyxNUy1hG8Vr/0CL4uqWXMYFT1SP9VDrkPbfnzpqQIDG7uTfEsIwrMS0fpsMugdEmlwXv4Omcc+4j6VYT1BNvchNrxyvc4otsY9fTjMHfyxvmTB2yjUQdlJEjHPKw17cbH2lpFgEiNi1SM+V+IVHfg/gXnEufjYaTek+3uNd6UUiukc6S6MTeGcstJ3qJh5DUk/PJKWqapgoVqBGFmFoyqPgb0Ns2LEqvKPJc+uGvB6FpUPLYkqC+8HokYnBTxAFOF0803Xh4y0E17I+GckFGJsa2EP40g0oj2aFnua+lchAU1d0B8RkN2u0yD4bqELQjjxLj26qnDvl6V3aJ00KD/BCIiaPMxfyYKI5BFceFRYU2qwNX83LorkFIzuFDhRtn1jyYn5fDGN3CtSdQ60q733N3jXA14sUntrKiIEUrwu+HN2Qo2765skEiXoBMc7blHfgh0RFt4g/S021xd1gyid7ZqftG5TXeyvGZQH3XuQcdZ6o1nB8g2mnT1w36wGaIcUdCV5VWD9YxI1zjbNKeAONpHOFmgZxgJpJGaaYqJeJe4KgtPlxM6WTQ6g6U60bG14IZ5ZRfbAggb3jOaTYAH0tIahOaKO9/2POR+hRVIQ2lpQE7iOsPWQOoBIV8fy8pQMhsvWuqKcrww=");
  4914. } elseif(name == "butcher") {
  4915. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYxNDYzNjQ4NDU1NCwKICAicHJvZmlsZUlkIiA6ICJiNWRkZTVmODJlYjM0OTkzYmMwN2Q0MGFiNWY2ODYyMyIsCiAgInByb2ZpbGVOYW1lIiA6ICJsdXhlbWFuIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2YzYjU5ZDQ0MDNiNGU3ZTk2YmYwMWY3NDY1OTQwNGI4MzcwYjI2ODE1M2M5ZTExZDRiZGY3MzIyMGMyZDk2MTYiCiAgICB9CiAgfQp9", "KZdn6The3tg9YLOu7uiZxrHLqL+K7IIFmP00b4F4qrKMu3AGqZ4NuFDN0ckWkrAyAyj/NwK2nQLDHVwvqNdmr9QRgdZcvV8PIj+tHZL7wAi+wgPVcaYQRUo0uHpNUKxVj4qe+FjChw5DnW8tl0me2t5TbsG6qEaKhXnBMZfI7mFNZZ8/rC+vBgvTm3VgZ2stb2hsdH+eCnQH2iOVvg8iwG9xvMBGKyRZ/8ORYYO5V8EEu4xpMsjQvw6/sjGg0ceeJTBBnN++7App1CiRh0iAkbeJcxolllNiNfdk8kLkrApHMwdTbs7y+8N8DxoBZ+WauvZxmEuYpR5TMSde9EDJMRtS/kESqVEdmjblJDMbBhNSB+io/16tq5EgxDwu2RPqaze33rCB/9tJtP8h6/MTWAXDirSxqFV/5sPtOaDy+QHfkZlsGfRW4nXFxLh3DRBI/SE8CGN8FQ4/6rj/Np8KLcgLFBGwyqNRo+o0jBVBGIISzhCIp5XeYmn876mYGU8bCBOJX0ICPJxsirsSbLwZ/CoN/zR1Zc/LpkSRi0loQbprFkQTJ2qqkPAyI30x/eo7XMBXZGNeX6LeYcp2WJsDaHtqRbLszfSwFnePB06Qz77rg+7RJ3Ef/H6bx4Rp8eLwLfz6gguo+3zwEth3Kovo9Lu/AhGM8CMT+oykH9g6a0c=");
  4916. } elseif(name == "girl") {
  4917. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcwOTA5MTI1MTkyMiwKICAicHJvZmlsZUlkIiA6ICI5ZTA5YzM4ZGUzZTY0MDA2OTAwYzAwZTJiOTQ3ZTQwMyIsCiAgInByb2ZpbGVOYW1lIiA6ICJ4RFRPTUFTX1lUIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzdjODRhMjE4YTMwZGY2MjUwNzM0NmI2NmJkMzRmMjIyMzZkZjkxYjE5ZGM5YmRjZTdhNGQ0MjhmODY0OGJhYzYiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ==", "h3c7bg2JO7gacUy8hc0iZOcs9z29xbYokKGnH6JyPwQ2JXDa1jFWmsIm/lC2SKJpKknvUNzXuNHBavjF4j0PVHpu0iVTkSruIjoMn1H20jN7vVqaTsojZGWk2050d8+zctWg7gUMx33pa1VwP+4DKU6QQ7/yaxdZKnIPW80UAm73eukiLx9B+GIlcHPfRcVHs4ee471l1d5pupSv7VAUI2ZSkzYarUfhZnXshaqIgD7LuS4PkdtiBNS2Qm/9vZ6fkpIGLIQrAlT0fE4j9T6qLwqtff43x6YfsVMpDL9Lo5MCaphcGoAo4txsC47MX0L19xbtnd6doQTmpLTnxivlLgaPyrzA/c1oeC5JujwsNGthq2CqHdzVPDAUQDADf8BrfYKrEd3DskWVZzGg7wzrdUfJPYPHkkqFxhPm0SAPwPOVJp33RhpzjkXLsae45QN6/UEcQaSi0tIxltSWfeAK5f6/3zixk/SES3fSpk5oHvTaJGVWs/lGRaE0AFAqwrWvp5yTW5CU4rmTrAFWu0KtkW4sI8Kur+xwKry24FQF6h+Luo26lvaXVo7zGCtl94zm4LuMBWNTq0RgLWc5Zj6VvW4vGIybPj2/fQwoJIfodqawxzJjVguSiRzF2AxwTKoMtAn2guDfQkULsRat012oU7qvyJWhi1HLm504am4PxkI=");
  4918. } elseif(name == "mason") {
  4919. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYwNDQ5MjYyMzQxOCwKICAicHJvZmlsZUlkIiA6ICJlNzkzYjJjYTdhMmY0MTI2YTA5ODA5MmQ3Yzk5NDE3YiIsCiAgInByb2ZpbGVOYW1lIiA6ICJUaGVfSG9zdGVyX01hbiIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS85ODI1ZTk3NTZjM2VhNjZjOGNjZmEyZmU4MDU4MzRmNGZhMDVhMGY0ODc0NTY3NTljMzY0MjcwODkwNTE0NzZlIgogICAgfQogIH0KfQ==", "RLLeCZVT2zj4DhvrVl4fTVy4BdjyK02tTX5u3PT0gNcbluSRDNUjwG+G/HttDVtPpyQuVOq/8aAFT/xdu+BZaiI3q3830BWqVe+CbSJuHorHPbPskJRV8+L+Ra6rJLA9LJQh5li5EZCwiAwqBSQwqycIU7032xjtoPjfOXio0gAnqKLffTEc2irDq4KzZGH9WZjYJrEfS9eCkQ1780jl96oEordJT940G/mgiB+XZdg1RQs+YuDprGvX1ILVZluoN+SFWji9l3aPmktwGoP9K5NDJr1Yjqqtr0QcXUvB3bqs4EDeYe7+NXCtE4eW1bupr22dKO9EERyrL4oOm8K1lgmFRupeSH66R0Ny5Io8NrscZSSH1XZncnj6SZfYskJWRNN//F9BxM86hL0MEPtloAB9o0oJWLyoaXszMb1iJC9RKbvK3c2nAdyjWtcWijRA5muEZszzOX5XngHlFPAYWDI33EuTvqbth3GqZ7kid24Zly6TQbSCrd30EiNTeXYTJ1T5Fx1GRIzEYW+60qf3f2e59SlcBf4D7eA4btIaCAvfx2bKxbZQsdsHKDphpxsr7nizA8iRroo37nBiJ97gYUF2GsL03bLuge4cFLROpb4oaKGyldPZ4cHq33b8sbFs0eQUiS9selDsyx8G8MrvKfhYACpjyBv+ZLlWa+QMF4s=");
  4920. } elseif(name == "mage") {
  4921. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTU5NjMzNjk5OTgwMSwKICAicHJvZmlsZUlkIiA6ICI5MWYwNGZlOTBmMzY0M2I1OGYyMGUzMzc1Zjg2ZDM5ZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJTdG9ybVN0b3JteSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9kZjBiNzBmZmQ3NDE4N2Q5MTE2NmUzYmMxMTQzNTI2NTZmODVlNDdlYTNhYjcwNWI5MzUxMTkyMzJhMDA4Yzk2IgogICAgfQogIH0KfQ==", "eUzFSAiEth5qG5VV7uqbbfQln2QLJ6hurw4RARJ7qFHZaRqUbJLiqmkplcuCcb0ViZgBlU/zn+GIdJlZHGeifO7CdH+R3JX8d9F7gbg1Xg6eNWCGeadirjTi9haSBoK97pqAOsYRNd8FNKTIr3OGuQYXPgapgIt2A0W8N/vR8bKhdnHYV47UyzqEVEdMKYTN8w5Uq7Zhj8ZTvzWgrg83BX1WqaVpkdZN5xRcE5MQzuCL7s9ZsgSXeKbrWBXdn/yNqRbcdK6ymy1rCqWXdUkHVKOpJMBLu9NIjeUTm/bwsEufNZ6wvaNHoJWg7jFgDCzy0s/7xvxicbyxbFZHjABOtqu2kUNSMfSD4DZYiMrO3DesIQU59t/XFI4cfnDkR5OEcInkjg5XOJaU/h6kpsDqcP559wnqvnPjqSZTgVuKPR0sLi20mDeOqVyK2ZxEV26ihnknofVrObLPmE0yyzgb540/BPAtqNVKHKLZUb2bv3BG5CLbOPqxut+X3LcDZNICdj8jzGeTNcndPzPn/a9n+Jqd2+iqjVa8tTeh+2VodK5j5XBl5/Ym1tTiD3ZPDOd+6AQfDrvDJBJN9t+MczXldHON9pMvjZgODGsKIJ1KzRplXYjdsftNdi/SUv6xV/iG4+qRJqmkbYCEl7oQvELljAbkcUVIViTOSNgFNX2CVD8=");
  4922. } elseif(name == "banker") {
  4923. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTU5NzMyNzk4Njk0MCwKICAicHJvZmlsZUlkIiA6ICI5MThhMDI5NTU5ZGQ0Y2U2YjE2ZjdhNWQ1M2VmYjQxMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJCZWV2ZWxvcGVyIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2RlODk0Zjk5NGVlYjQyMjU0OWE2NTE2YjYyODg1MGQ4MmY3OTJhZmNkNzVlY2U1YmQzYmQ3ZGE4M2M1YzkyMjYiCiAgICB9CiAgfQp9", "WhygM8rofUCUv4GVMrSl7tGxMUx/jczsz7lixaGhZbDJtEzKTAQFY25TZBjMvxpFqLvwOfbEWDRn1wOjof5dt7CwYcwnBfrksHj1lkpp7oh8omUbdnA0TDZFLdSAvmvtViRFaH+neH08jFfl+XLx5BnfY/6XimxKwxPKBZnvAc1DlpubiBgHXmPKYigRFAKCPgHCf9cDRm6jDNyZTYgPUJElBN5TIHREponJhE4pMDm8qOkidiUsrfqjHYZvl767sLA1QA3HPHZKtvug6xSve9X/2n6Fr3dvhNUI0dqj4EtbJkSPD7uCUgIvtx5nN1iQXjXWgEEVZ0JnA1KMCfjfjQRx2nEOqe9OVwADvIIbE+Asc0qw+Zas1Ys+AP5rBH5qT8Lmh5Wi2Bn0yj6zEk/iluTbkmnzMVdICnBKVUF4wdLY/5vvxe1+abZM2xVQ5eoPoyyEsD1wYc9c4Uticpe3A+jy8p8+a7FfAPVILfV6MOhkQ0S5FCpEIj0DbSbBoNnDBODmTYpBKrouYNI/IZPnwBsKluy0zAgTJ5lMM7bptda1BQaJKpA2kSkCTvADQ72kwFoBlfhOluwvfvgTBgI8rnVNAfSu2sEIC6BhdaOG9iqocKRYL474zbYMPWW1Z7fF3jrsEWWTa3+swN+8K89XeLv/jHUqwfx+3Gb5YG8ZGX0=");
  4924. } elseif(name == "lumberjack") {
  4925. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYxNzE4MjYwMDgxMSwKICAicHJvZmlsZUlkIiA6ICI5MWYwNGZlOTBmMzY0M2I1OGYyMGUzMzc1Zjg2ZDM5ZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJTdG9ybVN0b3JteSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8yNDlkNmMxMjk2NmYzYmM5NjA1MGM3MDgwYWNiY2JmNWI4MmZlN2JmNzA0MzdiZTU2NzJhZjk1ZmVhOTA1ZWJlIgogICAgfQogIH0KfQ==", "ChHGtuNconaz4zViNV1NAcq5xlpyaQ9aiiXVj5h55yE9LOtSCIjLmq/xIDZIlAdno8kg6mXQ1RYF6E1yJ3rpCWh0KocHQT/WQHcr9v3I8k70+XGyF+Ad0U0cIww954PM5gznSeWD4XrDQxaKf9IgsCNTl9tI46NvaMUxW/2L4/VR46lU00cowlgS7u3JNWueIsKrMjgfj5pt7YVqiE8DZ3DHlc7VCpdZk6Ku1HIGDLoPziawtgrJUVppFumAPpfSxwz4Gr2OnnH1nd2aS1E7oYtU7+dw8BzDMjNRNiyQm3o1SYcVTyUf9/0TVeYfD0KqvFhF/9Yf2c8hQBB4qQ8VmEH1wlLrAjNsBVE92UwZ6D7lI0MZs3F8WwbQh+d/jKtJxcZi+GzAPTIt8A+pVNee+/mAM3VDg/6tJtK2jQtgYZYRa/RyTumAAxb9OxsxDg/j2Li0DNGFHue1oEAySmKwQg+wOWT9kujDLGMje6bYLqO2+S3wGAyskcVp3snt5LihYDNsXVtp7ZkD6Awgs6YptmTa23o2+XvB8vO64QqmMuBX/KyPJtv6T0ZxR4KTFKeCXe21Za0boEdolMVYRHjXsCZJ8m/zqIu8/3r1ALuSpbVApMv7PoGtfGaXWtSkHKu8LjY+btgfnooeLyjaLHn6ltJzTdEoooUzsj7JqKK19no=");
  4926. } elseif(name == "miner") {
  4927. citizen.setSkin(citizen, "eyJ0aW1lc3RhbXAiOjE1NjQ2ODc5NzM1MjUsInByb2ZpbGVJZCI6IjVkZTZlMTg0YWY4ZDQ5OGFiYmRlMDU1ZTUwNjUzMzE2IiwicHJvZmlsZU5hbWUiOiJBc3Nhc2luSmlhbmVyMjUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzViMzcwNDljYWEyYWQxMWE2YmYyZDNlMWE1OGZhNGZkN2FmMGRmOWVjMWI0YzE3MGJhNzkxOTE2OWI1ZmE4NTYifX19", "dKh3/RXSPIFbC2l9yucxL/qtZXiDyTvir+xoNCHsDkR/SUr89oocDtRALXdnjhG/P9Je0nppU6UOpwlKl3o56nX8v8up6pqM95Z2KXMP+9/zq2ty/8k9zqVMlFX2HOVYbuTBFG6xmNTPWqELdfN46spCiIYAhhLLI7g4wpMtTw6mOuG6R9Kn7odGXKawUSBuVByNy8yG1mKCQdUvq+Crp/BU75fdFOARRlFgCiu5m4HPrN3o0bLgiRqHohHxGgt+8qF6t/7RGpDJCXN0gLy5Vt8qdYLGk6ZHCgmNEAUATX9QSGhU80dwTGgpENRt/hyyTUnGI8yT1OpbrLErs3SSiAJ9DnmMsMpfV8aNUQOG0t7Ki1WH3TcSqfWgD6kV6EDJNf1rMCiTvrcUYP5Bkm/K+QdNARuac/VIaFlmno16E/i+fy5uhNWU5MjAjCzcp7A7HWIqqkPAjX3GyFMNUSyBB56kcz+4/er3W7+4eykKE5K1xURqPIy6MPnuJtAhvXh2sea+nsggdpe8PXbFqmifcmo+7w7pxOt3aPuv3hsQXZi8LtwjaPAm1v442jQqg/VBFSZ6OV1Me49PWp1fieRNj/wniCuBjSdwQ6DKVfPKBFzjhxo4yXq4tdGkpZfSPn0JWlSGi0rjq49fVbK7ZasqIBGGvBL8igXE3OCR0I2nuw0=");
  4928. } elseif(name == "librarian") {
  4929. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYwNDUzNTM2MTcxMywKICAicHJvZmlsZUlkIiA6ICJjNTBhZmE4YWJlYjk0ZTQ1OTRiZjFiNDI1YTk4MGYwMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJUd29FQmFlIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2Q1ODA2MWRhMGVjMjk0MTcyNGZhNWVhOTMwMDBhYmQzMWMzZDhmOWM0MTZkOWI0MmJkYTRkODEwZGZiNmZjNGQiCiAgICB9CiAgfQp9", "jLahDHyLmgUsNIWuIG53/xh71HcEPWVTA6tNH+cBFy02GZIbtwZHMKaVmOf6BIt/V+gvZlPyspcEpgDxlRmBrv55dahoHBw3UwfD4B3L9rmaSchazltaRYzH4e2AZcs/NJ5VOwI0+uBu6MPqqjg/3uv4dZ/GZ8zG0wcbNr990EIlTa6Nz6tG/x4XTQNBvQjlDoacxe9uqfiunhckTQmuVbS+aHzmvQY86pU7kDs1+ZZsjSj4Q1iTHj5qTOjSTltB7DKBWaBlcWc8/GfT2T8nWjyvgC6cHoS8z1XbsiHRpsOEppqQfi1sgZV3LzbJxNVrokQQKtZTHIreS+HVsGkmM+4giBRxsqvJE3sXw2xKTtwW3W74/K+sCJkAHJSdZ/v//n6TInqVhYVRzKXVz62qMNYpZo2LWt0jCTfIcfK8Z4o1sp/+6ec4s5Z2WC6F7Qk4WClQWhRzBsHT3UyXMoodLdP6G/WN2G6ENGdUViplM+IAMQL16FbIvjLZXICbjL1CIbnwn+4e0eO4EbVIuUxex7wGziWLx4EdXilZkrDNOZv6pU4qkflBjG6hxP+6OvhSQYQzJ6GTEorScFDdyGnEE5NxPXFjbBC1368yh8ukSvw4znfVnNV3UrwnuFMASc8FHw4WWwJqZ8xibwbq2TQnvpsuuZC/bRgXruM+QBm84MY=");
  4930. } elseif(name == "dark_mage") {
  4931. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYxMzg4NDI0MjQxMCwKICAicHJvZmlsZUlkIiA6ICJkNGY1ZGQ2YzVhYjE0NTNlYmJiNTg2ZTU2NzVkMDUyZSIsCiAgInByb2ZpbGVOYW1lIiA6ICIwMDAwMDAwMDAwMDAwMDBQIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2M2NmQ3N2ExZTlkMDk0ZDI4MThkYjI1YTViMmQ1ZWIzZWYwOGQ4NTBhOGUxNGNiZWE5MjZlMDNhYTI1MTFiNjgiCiAgICB9CiAgfQp9", "nwOMBhB4wmZq0aQXOe38+ekT716r1YSIMVs60F/OrrNQa+vIWlDPSRZFeTjIkAQr5d1pYl7YlVmiXxgIzJGLcZC5LyvihVgEwseAU8CZdTXSfQBu7OJjC/qrhGZnfDuw0fliSBx6S/hFaOjNWsMTbuESqNRbYUzSx0BjuGDeicrbXHme9tsI2/wTfERLuWnXoeruKyHKNy+j7cQ+/76Bpk1KoQmt2pqxv+o7KGYP7EFl1FpsPDZY5/nWT37r2KrFj0e6+kPy1w4nth80dgBN0da8KceW/ykoHXIDkgVr0xZu3eXpI0bl9LT3rROf1/W1YAiA5gABLU22sZTuBBZYMAbUVuXiwUBlbF2T5mEBNKHQF/1wO+q7oNR9mojVgBggBE4aqMrgNWpx5Vdc1cEmlPVmgt/27w880uPuWW51Ri2JCOdLg28ZY0RqLAIHL28j6rqoum3HLDTWLpEZ+9iAMNJ1toJgN34Ni5C2hSzo7SCLn5I4K5Z/jKfvFJKhF1mkt4yc/Rezl+T9z4FT9qTLfvSFTwsAbQRefnCTqYkiDs7I8WFdL1wymjkqgK75oOE3VWb7fASqpHBMpX9hz09nemx7x4lsHxquj0mctidNhDcrIMiCe0BMqbEoDCgil7iUaiMtGqz8U6KBaWR457XIABL8xThhOw0unNknoau7q0k=");
  4932. } elseif(name == "santa_marv") {
  4933. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYzNzI4NTI1MTMwMiwKICAicHJvZmlsZUlkIiA6ICJmYzUwMjkzYTVkMGI0NzViYWYwNDJhNzIwMWJhMzBkMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJDVUNGTDE3IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzYzYmMzNzczODg5YmRlNWFlZDA0NTliMWE5MWM5OWI1MTI4MDI1YzVmNTEwNDZjZjcxYjAxOWZhMTY2NWEyYTYiCiAgICB9CiAgfQp9", "r4SGS/TGW7tlibNTq4+uKg/v6oNc5eDD3BLbxIzcppll2tA9P4Za+16X968sgXQhrddNfdAh1zDui43WoON2Jrer797S1JzkddddISMiBq8CpjlUX77N6GvBOr5pBGgMKd0qLsDJUQF5Xa5FNun+ymwh1D57d0pb9eD0zNPIfD4V3REC1a9in1SHkoLfic11f8vCqBZ/oQ72eZ51GMYK1HWNSelCPGC1YQOEYI4WOD8suy44jRTrKO68cvmiizRBYykhJPP7Oqmcy2dOwXnDncif2vEEvTQVFp+uHolguIUOvKXy5lX7JIrZXsEgDaUHIAkQtMjO+9mH+qtkg2tniVTAUDFxQSdkbUY7kDfv40NipbiYgLyA4p+WPXr6BJyWGX6CCI8I71u7yUjOTH8pUt4OPVnGYUG0mT9kQO8P+vJIdW+Thg63/cTDHXmf8v+TDEdB2lyvjSdVeFD21C+MXXeM9yAWoZ370P1aLUar7dVUCRREpSBNpLFCo0wqpy1uiNYkO107LXD5wduxQJL1nQHVlym8+cvc7TyoRwEk7z6fL8NU+K8ijG/i9YhEUVPusCNhsbD33vJe2huroYMFx2DKHm9NeyTsTPsUmTu23bO4fZqttTdQohngbWYiDx0y8rDxakErF/gV4Ms38GVM80dAOde3dQpu0txYqGnPHxw=");
  4934. } elseif(name == "smith") {
  4935. citizen.setSkin(citizen, "eyJ0aW1lc3RhbXAiOjE1ODM1NTQzMTAxOTQsInByb2ZpbGVJZCI6IjIzZjFhNTlmNDY5YjQzZGRiZGI1MzdiZmVjMTA0NzFmIiwicHJvZmlsZU5hbWUiOiIyODA3Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84NDQ0NDQzMjlhZWM0OTYxYTJmMWYzZWNiYTBmYjJkZTE1NDU1Mzk5MTFmYjFlODA4ZmM4NzQ2NDNlNTRkZTY2In19fQ==", "qBm2/mxwTcJIEu8r13WohKEiByJQAx1K+5ciGEZQ08PRHbA0hWvuJfLWcAdOERsPARFCAhfzUZOjhOlKr28CNwTYnP7gTf6njP8Q9roSkwGSAH5PDH4mkiS9zmZQwYUJVyzn//srq6XsASNzGFq2ChgRZV+yGAVJFeSFpHAEnhQxhsSM3xltUo37aRjWNI4wlVSqzzQh+oJvB6IDWR6evrK1sNHByhX8/UNcx+XYL6PqN/51g16gJNmhppTu3YFj25dIBSiUTFFGViNMf7eAYrRS36ZkyUHlvAiC8leIOvC6cwtGGngOG6Vun2DtVI+9xyxqQhQURYIl+DrFt1cqSLDfEDVosKsfh3f5ynxaZ61fBZIz0hWxHmWw40SV+1wgfh0XD6jsusdXk/rf9zuRInhAvx/9cBnUNELfDfTeFmpkaZFo2LYwBawcKePVj7yqNborJ30mcyApO68mSIVzYLxO0aKfjRQYzrJx452iBRu4K87DbwvyLPowTzWrBh3HDUXdG4/Qn+W7eR3n7UYTFDeZUXURq6tDX8NEEj2giiBzonlkqpTECAXufabpHo+JvST4L97WKLP5omsKWyzVYTVILBn1On54gra6ZZwga7j+r3o67CQfOh8qDL6ZRoNRA9nBkUZzgjzHcfUAbUsqhYgkBpb/iEkqU6VU2Nc/+tA=");
  4936. } elseif(name == "casino") {
  4937. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTY0MjkwMTQ3NDQ4OCwKICAicHJvZmlsZUlkIiA6ICJjNTZlMjI0MmNiZWY0MWE2ODdlMzI2MGRjMGNmOTM2MSIsCiAgInByb2ZpbGVOYW1lIiA6ICJMSlI3MzEwMCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZTA3OTQ3ZTRhMmNkOGQ1NGVjZGE4N2ZiNTQxNTViODQ4Zjk4ZTE5ZDE1ZTBiOTVhYjAyOTAyNjEyM2JkODM5IgogICAgfQogIH0KfQ==", "H5PIINevEBYikUEDiKw388RE5pxSp07y1LidOW/uZJbBUXFCQoUWZTh3faR5uL51T5EXxyVWbiZD1LA14S3vIrtruW7yR+keJYGw5PCQDWaPi8Qq41wwtQ01GXnGviWIqrJ5CGjHBbSQ0jpfZ+wSs48rByKfoS35SFeYdPvJeAODj9Sz1BBrJ8D9hW+n6w721RkAMGtYHSDgjcjzB1on+li78RvSKa3kUm2jqU5jNdLURHoDJe5Yg3i2vfXGtHdspC6isgH5KVe2prwYlosanun0XIYc6L99u2deN88rF55IXWsE+12cVTzaMDj4/oQqFvyfd92TgCNmuTJvwQKG9bLyt8IXgb/E0sRLN5ymZ0gUIju1ZXeRYDppnxWiZlLV9KK1zpGQ82gLTtamfjpj7z3Sg9N51t3BhGCZ98Y2Rn6UDGJ//v/h0qm/tNP4trQEFp2qGpYW4hM/0sSHA8KvJlfGrHv22JboVNyOlXMEENpcp8KTpJfAD5mpYoLKM3CWFFN/yReTkdTFs3L/qvv1DtNsvunNqAd0NTwD5hzQoigt3Diq9ZyLgnmzCj6OISw6RQLMkdNNpeBgxorXpCJM+mqV5RmPQwU0EhTlnJD0RC8HfqTOmIREJ/aczd3DJ7rMiJpDaPqOpMnNetQR6m85k90pcDHY08UqB4ZfItChL9I=");
  4938. } elseif(name == "anna") {
  4939. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYwODY0MTkwMTQwNCwKICAicHJvZmlsZUlkIiA6ICI5MzZmMTA3MTEzOGM0YjMyYTg0OGY2NmE5Nzc2NDJhMiIsCiAgInByb2ZpbGVOYW1lIiA6ICIwMDAwMDAwMDAwMDAwMDB4IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzg1ZjVjZjBhYjIzMjBjYzYzNWRlMzk0ZjI5MGQxOGRiMjQ0OTQxMjE1NzgzM2I4MjBlNTBlNWI5ZGY2ZjAxOWIiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ==", "EqWlrWpzfw/O8/Z5Lzw46lfSoEXERZT02R44zMSHr/2zzKBOmCt4kkl3COwNfO5Fjpc7el/4YbJya3ZBpmiLuJzPgYVtCt0cWmbxK7NXA2662yFq2Gsr6JX7NweQ2B6vZ573nFIOf7o/bMp2VI0BRRqPDsAlV61A1QS/aGYLJo7Yoz4njBRVYqVnAOXxUz8ETTSSfwxRHZSzXsvJVlci2yCalGcbM8dlGqgC9jRvZ4RjEFivCM7ICZGP9pJy555yOdMQvjkvxhslDNMvgpBR1hHBZA93yhjcTIGjErhIy/YwU9X0rpT9VEVjhQuPP+DBmJDrxj2IkyAESKvrRTG6ziZw8XlbCcDz9Q0Ao9GWp+wRMzntNNeFkMi/oVmDgh2pKFgdD2OGlhpl01286Ixcvw3XU4pQYmkq9khqomwvwjxomE0H52IjHAiFn+fEdVEw5n1ZdKJsvHHs/brqgohpKE5s8C+Lh5KDy76IfCOeiQcbBgpDdm2P9XeiuVkjZX8Sht+e05/ctPQpNXh5jgyjvREbKzbisztkZWzEnYI+uCa15dIIVkS0gTc8kJYX9ZQ6Q5IMUPPVo3R0etWfJ2jVI+M947rtEeJ9tRKslVA1H5MmAh9mndYkbFrMwzS7BLWbp4lhU4L9EsoUpHvf2IxInuLD1sauhGjJmTLtibs9tu4=");
  4940. } elseif(name == "diver") {
  4941. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYxOTQ3NjExNDAyNCwKICAicHJvZmlsZUlkIiA6ICI5MzZmMTA3MTEzOGM0YjMyYTg0OGY2NmE5Nzc2NDJhMiIsCiAgInByb2ZpbGVOYW1lIiA6ICIwMDAwMDAwMDAwMDAwMDB4IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzJjM2VmZDUwOWY0N2YxYjk1ODdkZGNlOGNiODU1NTY4Njg2Y2ZhZDc0Y2I4ZWU3YzUxNjEwMjllMDRjZWU0ZSIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", "qjH2cxOet5xXuYr6lBX9f/2oXrDez4UcYiMoxo45Ocjd6xqwncH2hfHESmQBtUtfv7pOIf+dW901N6B5qWuA1uxuDLeTC5dTG/AQ3NJUTJQ6AtiRZ49EVJ1OkexYFD3G31+USLGSrqhvsMzHN6a9gtRD3xbLCezCivMsVA02FXNaHjYylTgOc0vPs4+YdMi1pR4NGgcTxxsE1g6felZCxBeh3oy5DIOSdDjFq8xl6y6Kejo/kIyppl7dzK3DDcC0KxR7A3ukfMcDc/OA84kZlqqYf9or9MoztJIA+W3AIAH0vwnG+2feNjojHab/Z2jptqS3tlgnEV3j3cjbiB6LeRDQEsfg8/V/y/agzIZbTfJx92QRyfEPsoIXgYfb5OtOLuU9G9q+EIVALo9KRXXJLCpeOWj+/sgoDtLnG6rMdx0jyStwstTjCgV3kAvVfpvS5gTXrQl5qAIAepB04I9XgdVIxQppK+ZmLTCKRPbXj5P5NUc/f+BjsAFPmxP+0X9sWkamHbahyjj1tatlaMJhLAPzxLYSH8d7/91ZOGzcQL61d21w4Hn0nOCSI7y5HXo/O/tvJYFSEWj6DP5ZOayI14csnEfTAGS4kOCOCedabqBJjJuGfGlTatJWAdqJIBcEtXvun1oN4f7b42wvtwv/vmpuIVH4aAeUXdGKhOi5G/c=");
  4942. } elseif(name == "mage_assistant") {
  4943. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTU5OTc0MzgxODcxMSwKICAicHJvZmlsZUlkIiA6ICJhMjk1ODZmYmU1ZDk0Nzk2OWZjOGQ4ZGE0NzlhNDNlZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJWaWVydGVsdG9hc3RpaWUiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmE3ODc4MjIxYWQ4MDg3ODkzNjlmMmVkZjRkZmJlNWU5N2UzODJiNzZjODVmZWIzZmQyY2FkODgyYzk1NTJhNyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", "g3Ik0BT6M5jeFf7dHJ4hlLSJdiC5ivPcAb7gFP9+tlzH72N3eYrz+irExxpGQUsiro0NVEmlNt1R8aSBcY/wQDdLBOy9LHHt5MNpja72DDlFJUAW2fpXwJgfnCmqHDXzmVu3dfwyE0efZKOscFQzJQ5zbIGrEXjA2tOqEI/ZZMNehF5pNJZnusjGIpE/Abn9PxafnX/rvZAWr0BCip4wCUGbnfbDHlcn561HW50CAE8k3siqc+RJXXbnC24kYmblzuSBcHw33nCHRmlUiddyhzOE6NoWiZu9kNecOAapZmSZXCGMxyfwdy2n2Yg7ydxM8WTO7LOG1/o+ft/Ag24YxtHFkE6T2R03LvVYCTdodLzVQbXLqqMvGYcM7A6b6TPaHkMZhyumfH+GRoCI8kmyDEIqHrDbZOYhTyrpFBdz8WOOj1e5oz8nXQODMAC4ZEccj/5JishwPXxRdc9YFBkPJ63lJNN4boetMTdhDe3xe8tp8CoeNH3CaMn8eN0hkwmzXKx4I2qQPIO4NxW+bhJ1U6+qp8M0yllI2mRpZrTmTIhGHfq3nxJtUU+JcLMIaYiItnKlENH8vRP2UZrGq6SxiK0tE4A4wKGitXK/BAljLoUFLx8a+B/rbnmK8lqpWofaMeTeFw1W7m497ZaT7d3HLL0Jb/OR1vhP1NpJKZYhaLU=");
  4944. } elseif(name == "mage_guard") {
  4945. citizen.setSkin(citizen, "eyJ0aW1lc3RhbXAiOjE1MzEyODIzODEyNTMsInByb2ZpbGVJZCI6ImNhYjI4ODVkMTUxNjQ1OTNhZmI2MDkwODJlOTE2NmU3IiwicHJvZmlsZU5hbWUiOiJGYW5jeV9MdWR3aWciLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2M0M2JmYTY1NTMyNWI3ZjFhMTE5YmQwZTYxNGM2NWI4NzFiMmFiZWFlNmI5YWZjOTRmNzJkZTRkMjRiYTAxODgifX19", "XkwrwdctRApUCGLH+sLKu85AlcL+hpNicYzKdjGhlUVuZ+qR4K5q3hdL0K5sivm2iwWXRQfGizgwOqyBEORJ4V0/EnTYBy/NheE4/Y4Kp1Fy/5+fVrktCRRzb2ha1GFUiq0VL0KvBo5zGeQTcibVn+KSw9mK01SQJK7zN/Rz9SSHIdJvj6D2Ckmqodrxo8LOgdrzkP9iKdgpAebG2fii90Uw38M5RMG/n0JcmnGFS1qKeQHIxNvdzqi12DJzLUoZ7FL+DS4JyX2fAZwEajCfS18zXZRNZ15b6Ba7hW35D+nEHtNM6AlHz0fHevaAnFpWsA3Q02sw29/2mUUSYkEVSbBz/Yf2EYOhlzzpCQnrHW9qqotS3bOcolezr6NEgmDp96THd6h1sIKrctVINzAUgBA+3EQbFVscTLkQEtcXkImuB9zJuErEJTrpzfYVZR72zSLZq0pElBFYs5mwArEGsDlqmWWKL0rHZ68rXMNdMYcZx7NjAjdQ6TTTVGxGngp/KwY3B65sUMqk57jQYSdvbaNnFUoBgJsO2SxQwO989O64WhuQcMRgLQ90pksgQXLnCUnZ2Er5uQGDGZndQF/EPpS8xNCsNu2iOHw9VbrpSDmYmTjBF0SOgNyV7k0xcYydksIv/rrDhWF/A073hKBkvnSpPqKIdJtYR0bmHUFGP68=");
  4946. } elseif(name == "notch") {
  4947. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYyNDUyNjI0NjM2MywKICAicHJvZmlsZUlkIiA6ICIwNjlhNzlmNDQ0ZTk0NzI2YTViZWZjYTkwZTM4YWFmNSIsCiAgInByb2ZpbGVOYW1lIiA6ICJOb3RjaCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8yOTIwMDlhNDkyNWI1OGYwMmM3N2RhZGMzZWNlZjA3ZWE0Yzc0NzJmNjRlMGZkYzMyY2U1NTIyNDg5MzYyNjgwIgogICAgfQogIH0KfQ==", "K76X+5wYgbcKhUxr5ZJuF4MXquYNPM5ypUf6DdNz2k0+XaJlobLVVdETe2LotlHyj6ABoU3//8mGZnfwhdj2BiulOErpB6cQR4pMmIrW6T3TLCt4L8d9juQy7xy7Dw9sQngXWm2h3Cazm+205qa0apnvA/i+IGv+WeutP52kfGhJBAN7uBUQaut0NWBfFPL8Jo7DhwBvWf/KWVpcT9UcVQuS/dVP/VE0rrTTSf3x2/jGI0ksBEdOz5lROARCHwOA1sRDvP1nQHhZD1Uekj4Bmo6rsAjJCrzr++nK2IcaPMv1uTLv0sbsGe4JF884rqWHYzs7/Cc5lGv8FNy+QjHmTcISfjnlxwJIkI48KOmAjuaova+tU1gBHRFHqJR186Vw8gtIGHusitFr6rUuutODaHyJ1C9VnItyk5RF3eznsh+uUHSkT9NOCTAhx11UhaFjlIHgqHG3rRVmeFWyEKHE8Pk2yEAlROGPedp+oYEwMFbM97Q+og7W/RtSH+kYl9vNwpLrQEG2F0bQUtulwQrWzk8T2fKgPHncZIDS2YvQjrrHjjlG0bLbiakHGvRrMrLbrVtmQrKjOjLuc5j4M/quMoZpFz98q4uftCmNOyN9ZmoEjgFv5fOdsJDGJawSaug9VEieCWhuuPnXPx19GpT1TRzGRjDW9DqO08kNeCcRxq0=");
  4948. } elseif(name == "oldman1") {
  4949. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTU4OTAxMTIxMjA2NCwKICAicHJvZmlsZUlkIiA6ICI5MWYwNGZlOTBmMzY0M2I1OGYyMGUzMzc1Zjg2ZDM5ZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJTdG9ybVN0b3JteSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS85YWZhODBlNjA0NTExNmEyMDhjNTBiOTllZGM0MWE0Yjg4MTZlODgxNjAxMWMxY2Q0MGYyMmY3YThkOTZlODUyIgogICAgfQogIH0KfQ==", "AZP+lLAvazx7YRzKtNYZ2y6gxfkxvyJce7LC7O0Q3BOKj80kbBEgOmA3m2yDSOJUm6hLlGND8nIReifHua0I1xkajnoUfBQmiptyGNby+LIpwORn4RHtes80fe1ZFbzg4icXDknRetINlMnGw+QAg/m+cKpP+ydpBoIOONz1EWhV3sEOpsxIKns+HVxJ4XBFvIy+bCGGylJFtqSK1z6Z2cM8Y//Uv4p1nN+71N3OI7RPuQiG4/8edaYce7ufxmbGc8wROnm6yjRLS749D5XG/z4eppe9FjptkY0S2m6R5JDRZ69kziI1VmKViSBbcrNTwOnXuCtdCvbALRy77QsO7pJvg2RvHXPi9lz+c1/lKiHq7Xy2KncmioBbC1Jap/5lJW094HrLf35kYmbav//8TWA9itUJzhdik+NfU6r1Q7wPeNG8Z8hZZ5ELxK+G5BCJqxsJTFdF23tkp7KoA7yOuNdtPaay48h1pBpk66oIo6ump5ON+KSNSPJ5IM5hn6lwy7fQ+IzTcLgeeXU2rs7ju/vIcVhUat/UvGl9oWKnFB7bhaJARNRIwrWTg3OiYAC9GMHOvoutYQJyJVmJ46gA5D2uwUwvtkphDR3bjuX9RD/7/b2qRtpMszgkx0j9alO2pK4ZTV70MbX2QX38ghLaXu1HAPshSRSp6Ox5V2gJb0s=");
  4950. } elseif(name == "oldman2") {
  4951. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYxNDA4ODgxMjk5NiwKICAicHJvZmlsZUlkIiA6ICIyYzEwNjRmY2Q5MTc0MjgyODRlM2JmN2ZhYTdlM2UxYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJOYWVtZSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jM2ZjNDJhNGJiY2EwNTk2MTRmYjZlMGQ2NWQxMmU4NTFiYTM2YTA2ZjAyMzVkZGI2OTlhNWE2ZDFhMzgzNmMyIgogICAgfQogIH0KfQ==", "Ucbd0D4Nb8lGoZ9UF3A5yi00IfK0O7YcBrHO7osRimtISi92dhkKThJtjq7ibXf+8qu1a7wWrwgNpFHLtz5g1vcbJfkuzfHxuRQN+jcZIZt8skV+vujUP3eS1wezQATHuvhA3wBztn3UuTl7tCZXFEoq/ywcWN9qZH3QRljnWu88VOXHKtoBrkMPHO3t7BXaXyRMl5+wpkzWdSJIYD/wXop7yys78R2e6MAiPeKBsr+Bh5rNUIsUSUi80vAo51dH3aSzY0LW43m99UG1P9w2U56IfqJetpvrTVHm1xwNoyHcyQGXSeVlTXJkpCzFHdOlT8L5Pi6EbkyozxKTod/gH3PzhpYMlVCsqs/c3qBHma3GmL5+mppCdrulQnY5jkltIkp1wikXxneo3tRAIWpTVDrSFwhjZ6TLD/hL8By5i/xohgmpTFXl1rQZVJFoti1kd764vLDZyuuswXe33txS6+gV2eA6XR2DUnOpcoFcLF4kx10PubtSt32WAKDShhv6lu/f8ciYMNjk2ZBR1PZ+meeIqW9n10T5x21JRbDg3bUV1d9kd0wuliuBeEu6/2D9sB7c1JSQ3NtShacQHEHMr/2xBrE3beKd/MKNzWEjAkZsitiTuobWrFvb9gK6jxgfdX1CSXc6x8iZBeyMrrGYLj221SHY08CDMkoGvqbXfBM=");
  4952. } elseif(name == "oldman3") {
  4953. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTY4ODY2Njc5MDMyNiwKICAicHJvZmlsZUlkIiA6ICJmZjQ3NzI5YmQwZDI0YWYwOThiMTFjMGE3ZTFiMGVlZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJtYXRzY2FuIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzEyOTg5ZjMxOTQ3NmQ1NDk1MmUwOTQ5ZWEzMGIyZTQ3N2M5NDE4YjBiOGFiOTc0YmU2YzFmOWYwMGQ4NWMzMTYiCiAgICB9CiAgfQp9", "inFYrkbI1KbykFuDWprHxnDRpaLxOYuQLUC/w8mFMR8/joqRyBkqAOgnt4PlgG/KrBOYLwSgQ4VZbqkzGXTcuX+FkJAlXU0jNY6/GAyX686YhjP2OACXCE9AzUMhoWHHhNd5zlBNef3RGei9jIR7bZdJmGBfp6zNHT9ZGHGBBy3kFhmpg6wEJ3zSF2YnWAvAlZ+nxSbNMkn+Zb/hwIGV0pRjFKLX59ubS6wYZYeduxNLJjM9VcP3SZDu1YK4hsyo0crbFtX1GIIfUKgKvqGyJMsx2tmgbzPuSfcObaLBYWam3okcIkBsf9zqvhp/qY9jHB85+F1NZhx7axR53oEgOnv90n3hLOTKI01we1nSuFirg3LiOeH5rteEfCFuZVpb2/WrJ1JqF+0dwQU5H0qEuRbSgJlR2BYv7F/THs69MCB0wlfdIX5IddUhJj7n9dcHkp38YkfP595SGDhdcCMZvZL1OYOUMwJ1qhaXZLhNTSIZo1jnLtsqpUbk5ny78E/u5oyyRrvJAMf+6N8Gjx5S7JLpSgM2TX1rmiGe0GS9HoLF+Gd8sbe2A3gJJxPR1P2R9Q1HXG7opYEPPyUM2WCdzfg8kKpaPUfX5M3Kudm7rjPCG+2z3krbEbtbYLchFwpUn3wmZwybX9R/Xzv3HsI0mzOGk+WgxBRY804L1UGzVpo=");
  4954. } elseif(name == "miner2") {
  4955. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc0NDU5MDcwNCwKICAicHJvZmlsZUlkIiA6ICJiZDE1ZDAxODA0YzA0MmIxYmUzZmEyMWRhZmI0ZDE0ZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWwyOCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8yMzU3ZGQ4N2JmZmZlNjRhYzllYTkwM2Y3MjlhOThhNTExZmJjNmYyZDg4YjM4MmE5MmViMGI5ZjhiZTdkNjRjIgogICAgfQogIH0KfQ==", "F8DMxRODIh1ODYumldhr3KxwuOmVB3sKR9CAZNjn/ZFZIZo5GyRVexH7ITY1FQovFf9PCVyVMbQwXv6Xw4Hpsqp9ZokFPB6sT0fVjg4TDw3lygsEZJoKQacb2RDBTnTl8QgTXcPHj14jIw00KO9qIeC+nSL0FyunN6eC/Rgj451lvzynUZniYtLLvQK+1O+K4egqh+cpL2yC8svTpbITz97Y71RY8l2kxKgyPZlrvxFE2ngwitntSKCU8eOd/pDycqsc/VywTutL7cQgrFBg+S/JWoz8uY4Fn7jyuG+3aeEbJ/MUPv+RZ2/Zr+ymXlVJAjNj3Gs4q1N/rzVgq43zciiQZuYX0EnxzTtrygET/vyUfqWtsCuzbwS4W1yt2sixqKZVC3CXFA4UUVlwN0ZGrXMijagY2vgUM0CuxRTJTKE1dDN0Ztlj0WsIdVpa/n3Qlk1Kww0Xf5Qk0ZAxddT9CPRNDRNy3nRrD+eAnnOCIyWiCVFQG6xVtBJQoZNFR7k4SIUkPV6IvEszDuYQOMSz0TLNJtrDDmQGg+Ya+LP7BmtcRUzV7ReOPRjdIw4Yn0O++uPvBrizDg5kQSwd8zQLsbrXLSby3+rJxdrfk0950V2NZz/3BDSesUY3cwgII4YJlM9tIfp9djeiwpoOq0uNRETKeXMQHC94f4NaKpUWjjQ=");
  4956. } elseif(name == "marvinius") {
  4957. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODE4NDAxNCwKICAicHJvZmlsZUlkIiA6ICI5ZTA5YzM4ZGUzZTY0MDA2OTAwYzAwZTJiOTQ3ZTQwMyIsCiAgInByb2ZpbGVOYW1lIiA6ICJ4RFRPTUFTX1lUIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2UyYjI2MWE4OTM4ZTAyODdmZTRkZjI0MWY1MWZlYjE1MTA1MGNlOTYyNGE4ZDhhZGI0ZWI5M2EyZDAwYzhjMTUiCiAgICB9CiAgfQp9", "CSsd1bBr7HduBUUIm4M4RJo488Qkv5rMMCQQqqen64yBK5S8C9aZJAcHyWZ14Hcw8JQ8FI033zpzou9odoVkUGKNfZxTAsEvMb6pMtECKtO6VpTyt0rh4WcJ3LTgRXpCtRu+lmKvucUQcFgLAgbbxa1F8PuGzsIfT7B9Nk/Z6Ps3XbGKftbtBbTOrWKjulR9lrFRhQe92U/fmh7VbU2x61icJyK7t/VxMW+GKn0fq4f+E1UPKIcXDqUSF6UX1SXpKPw/e/N6kZ2bgUoTrBaqPIT4Jo+W2OuqNx/jAmMnxaUUlGnHiEAno0f4yMDm6DNngweLMkgWpwWUrPYEuaTjZqWkdfpUmz3a9EIE8ZD5hUWiyRZNawQfFuGd3E3ZrjiP5cQzZ2xa9+wOfyqYNVGO9SB8Ip/Exs7jFAs1N4BChrcGgycDgLlLofeK8mqbMKuXO7jdAHBBiPbxtahegOn9YKAzeIdvRjAWy/B6pQx0wfnxpwWltSs4SNA/x5kZnunh1YqvdxkU3ACCRiNpIEzdiV9FJQhUoEUy0ziI6KPVrQZM8L4Qwv58zwtc9zR7rO/5dCsYY7JQghd+PqNJvShhYMXiKUYcfykKJs6vqlTGIWGeD32JrC/5BZRXTLiQgJU0lVV+qBq8HSS/r9co933pBhv5CQVmCrQlMm6rPo/z58s=");
  4958. } elseif(name == "mareeeen") {
  4959. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODMyNzA0NSwKICAicHJvZmlsZUlkIiA6ICJlODhjMjBiOTUyMTA0NTA0OThkMDU4OTA5ODVhOTQ2OSIsCiAgInByb2ZpbGVOYW1lIiA6ICJTY2huZWxsZXJUYWc0MjciLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODVlMjdhM2NhM2E4YWY3ODMyYjkwZjhhMmE3MTRlN2ZiMDE2YmI3M2JlNWY3OGIwZjVhZDJhOTMwM2EwOTY3NSIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", "LUccDCWbqkNJ6s+4fSk39iBNaaN4M4w1jxRDioAOsGgYaWS+K9l55+SlWdDc7VzotE7m6hws/JM6h1uOt8LtIRcRHivH72GqRQXZmq2FbL7vv+E5O8W1tlJQlU24UwGLj29S5zEDEhBFXdXU5+5nK/83pVoYx01x3e8mA0sBikafpUYsvsR1jhb8Zw53LNYUvpyPMZTPKirQPvjlUOlAJhH7iVbhPMgWC/9QZWbRJ8T//MVJedvopPbg2v21SDwk6YvmZwo61RDTMkAwZsjkD5bBGOlvvbLcmk/oJPPLziHFoD2B09OZNWgWTZdbxnObD7iZMbhbkMWCE6HfyY34lwacrxtp1ssV2JWPcc2Mmp3iD3Mixlrp9fxWfNTbc0h25uIQWw9r2/3rsG845grQgh62Zem7pVWqi8S/Cfl7Y6a5wYfLiX2HrjHeoBQlZIZMAQPme5oT2zTTdxBTBwcyjn3vN76CVzYmhvWus81pM9X/1ZbgohkRy4Nge+u45EfZ5RvQXI7PSsaQiW4M19eULeDywPgSq0YTrRfjlvmZzv6hjH2rESjNSYvmUVkdTM1e+iu69fPqGXFShJXL9v7/KxzKwUpabO6rL+5oGzjCy/OVbZMVOIUgtPNTrmVbtsv+xg6QZeRXpSwa3OPfIEwUAKqhjh2EeOmworrANT5jWeQ=");
  4960. } elseif(name == "sirterence7") {
  4961. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODM1MzY2NiwKICAicHJvZmlsZUlkIiA6ICIxNDU1MDNhNDRjZmI0NzcwYmM3NWNjMTRjYjUwMDE4NyIsCiAgInByb2ZpbGVOYW1lIiA6ICJMaWtlbHlFcmljIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2VkMjI0OGZkNzA5MDU0ZmMwMTJhNzdlMDg2ZDcwZjEyMjA0MjU2ZDZhNDg0Y2E2MzIwZTMzZjkzOWRkNTNjMjciCiAgICB9CiAgfQp9", "Cgaoe8gmJqfeRFi/5yt9W6FlE3/tgcStT/yKVAQN6PABHfuIOS00AmVrTwn8VEO26bLhH5v4iqFDK0w3hDTLryA8wWY07n3ct++j+HZZk1f7oDlFFKIGtAYrAgzGIltrS1o3fMa+JQxwqQUfcbREaVdZLBMBfAjfCdnxk6Mf3XVXHaP+qDcMIfrZlrDzN8LPXcUgBuPLBYJ8/WLYn5g+Ua/iVupKYzdoS7r2Kwfg2EtoFGOoLEPLtZ3orrflXxCcAX0leA2oTQtg8UvxRBnoZUtSNxnFk77e2KpMPhC33tO1TFsUe9LNnCnQg+sZoE5VTqV4yEfEGXzh8SYcztO+SZHKeQSbm8oOfYWtyXnQiDVLIbyA4zaeu1aUlWEKEqRDieawJp3AxRTd25vskdqxO+1LG91cQGEYyvnJAmq8cUHetSE68TMgt1NWnn92cv8ZGP/9ux0JWgT9Yf8o0gblr3CRvV+QKRgFl7z8hvvY81T52zJpIgBQLCCSeNgvNDPmAtKwWTORWuxLc12eQO2tUf4AjdgFbBqUAhIKdGr+as92ai+NWyzyems2+4tohRXrRkTbytgYvsu23AIUBhvQdkh5CmASVgjXgzgzztitR2AHxQaq5sW23SSx1TKcDYjV68YU6lm+enlsrnnA1iOo3JxUdl6sciAEYEnIu3peukI=");
  4962. } elseif(name == "eropster") {
  4963. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODQ5OTExOSwKICAicHJvZmlsZUlkIiA6ICJmYjNhZTU0OTU3ODQ0MGVlODIzODJlMDY2MzlhYTkzMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJXZWx0ZXJ3ZWlnaHQiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzg1MjIxOTc1YzYxYTI0ZTVkM2QyZjk3ZjZlYjcwYmZhYmRjNDJmNWZhODczYWM0YWI1YTcwOWQxZmZkNDZjIgogICAgfQogIH0KfQ==", "CNf2gpk+SxDEAqhEihbXlFWfclU9Oh4epq1piekO6P6xFvAmW5sayCslTaJw27+FQL32bFCWR+ZeqBswJ/bKLll24YItj1ag20K5xkBJXFInJ97e55rcbZ5hJ5wnR6+4pooBi6WLdxNTmP/Eb65dlY2thewhW2jqFWmix29Z8fYZsZI6SJ/Eyz6X2eEtlaMBcPLg+07NNfOY/fH8OHSxGwTvB+F9ZBtjCKh0ryaXPgdYfWqsTI0NW5h03pha/EIhQzCC0UT3vol3zu+iYduwXUtHLCGhRO4IC3EOEkGNNjG4+a7aorOqt3c38K0L8gfLNraMV2RHAIiMXorWCsm86pWWUdxNuTTkklbyaUAMT1ns1R5cHZdAIX3CYhDLnQL8ZqioovbNHuuQrpRpYjxguM1NP2/x6NDSilnUUzJQZ8ECg82gg1YEHt2OFLxqYWfxj4/K4ybEobCQ9qyTAc9bKvMp3yF5xpRZYvOTH0LRTsjZCsTWlkL+EevTsPn7zHnhCA4Eil6BIn1X7qD/Zbs1bkp17PK5nPMBa8zv1l6BvErX29BBvaBlxdSeErPIK8dqNAi42JqMVS/uTwT/a/AqHoq5k9jFvVXEz5zBtr3Xy0B9gWZqxA+2ZLayL3IcpBoapOPbIkSn4sW1b8/HYoFUjptRf8V0QtsU+V18MHqQ4U4=");
  4964. } elseif(name == "mentormentos") {
  4965. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODUxMTExMiwKICAicHJvZmlsZUlkIiA6ICJkZmU5ODdkZjMzZjM0YTU2YWQyZmY5NThmYTBmZmVkYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJLaW5nUG90dGVyIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzNkMjNlMzM5ZWFiYzljNTkwNzJjZGQ4NTg1YjYzODI1NzJiZWFjYWRmOWQxZmFkMzIxZDE4OWY1ZWZmMjMzYWQiCiAgICB9CiAgfQp9", "aH7Wq8FQORkDi2nzTinPbRZX98F/yi62FZ4UHv15a42yPN9qIYs/jXJJD+7Vt4YHrB/bvtvzjNThTI2T6pzimFq7GXkrOROqOJfK2YL55W3UPM0jO3vB/g6bAaDUJMj7X4LtzIB46y/2FFSJh7B6U1Ae7riZ6NU+4G0/KmNNM63mNGcGdhiT25/DpOMurEjKVEpBRTlvSdj8dDQ5i9KsVFKfCIHvWwuzJ14KI0zenwrUzyqe3PDZyDZAodwCnk3ljKRZ1ifR44aoPes2P3tb00h/47gBzptJwdLLtINdUNS9v4euSVrDO1OJI0Gks3n+SN/3cOaRuqiXSI9xBkRrLxQmrZAsP+QjmMrywBtO0RsxNoh519f2GCw0aNl1p16MJP3Ww8AoQNrhm0ykXjF69TlZDsgOnxrc/N7Qr1UWcAFFmw6KEj0QKJNAStw5o92ZHGf3Wi21O2XzJB9rVkn4Z5VnITrBoubYEJK+qQv3lwt0gvIgPLfnu5g16AXTPttYsNcZ1Vq1xTZBAudaJ+6baCsjJSUmyKecP3sS0sNiHWCJ6gxD9o1o9qqmCG/NCuoHCL+f3I6ErhjCCp8pRA0DPI6mfuTB6XMSq2H5O/gB9nHPxmrsQNTcpiBKUP0HQg691zuY4GhRKgQp9NMocq77ADcz/EMT2m471iBrUi5/yyI=");
  4966. } elseif(name == "kajetanjohannes") {
  4967. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODQ5MjI4MSwKICAicHJvZmlsZUlkIiA6ICJkZTU3MWExMDJjYjg0ODgwOGZlN2M5ZjQ0OTZlY2RhZCIsCiAgInByb2ZpbGVOYW1lIiA6ICJNSEZfTWluZXNraW4iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzIwOTBmNTM1OGRlOGIyNTZiY2Y2YmU5MzA1Yzg2YjE0YjA4MTJmMmFhZjk4MzEyMjI5YzdiNmExYzVjZGQwNSIKICAgIH0KICB9Cn0=", "lT4YppbKGCzA9knunjsxeBvjGRGzFB5yYN9BgHmNI+QC/Ls17o/sJdAvbCR0fsUnOj07NQeyePsTKgPpL39DRx2AdBC20iGXSvAKvvzHPljiMpEPipL7oHjQmgpOLJF3B1zdAseR2/ifhiKGsVOcBxBDpyLcLozcvNb7y5f8gLZHTNugw3kzHiXbv3RHqtL7844dOx4ZcvAxINd9AOP4ePnBYTslrLumNrx3pDkLYxcltEepqqm4ATyJvJ47q+Bc6BiUwHWaNIsG7bLVo3jW8Gapk58u7YQx3aXl7HgW/9hzainVEzgNvZ4NwWPFl5p1QYb7m+WFBuuybBRAbxOcb7LBhkXpWw+ncm7pAQzDjrTeAS4q4/xJ7V2D2YQcG1AqcTvvm0DJI89z3LqVRDF9J2ntvIGD0DGojB2XFR5G6ojpSK9fx+Uee++9PkwTDUBWZva6XjLqNqZ2znhlbSURqim35Qd77UhVOiznb1TfrP58zIMIDFlaP52/ny/p2GLeNa+gSsXS9ZIM4AYe8f4oEPOfeBka3DFN9TQRvlNptBt8hXSqdx5HkblFzkzaWS3z52yN+/dYvFrbnm9cLcdjtqoTuE49FWtxlKj6HDJFv6e8qpEmSTfJuxnnZPk0Q/uCQNrLa4XKwCapYey9Oa+H2mtwEbKXQb9kTnoVLf4PQUA=");
  4968. }else {
  4969. msg.action(player, "Not supported name.");
  4970. }
  4971. goto("wait");
  4972. }
  4973. }
  4974. goto("humanhelp");
  4975. @answer
  4976. if(player.isMuted(player)) {
  4977. msg.prefix(player, prefix_commands, "You are muted.");
  4978. goto("wait");
  4979. }
  4980. if(size < 1) {
  4981. msg.prefix(sender, prefix_commands, "/answer <message>");
  4982. goto("wait");
  4983. }
  4984. player_uuid = player.getUuid(sender);
  4985. p_uuid = map.get(answer_map, player_uuid);
  4986. if(p_uuid == null) {
  4987. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  4988. goto("wait");
  4989. }
  4990. string_message = string.concatList(string_args, " ", 0, size - 1);
  4991. string_message = string.concat("§e", string_message);
  4992. message = getMessage(string_message);
  4993. p = player.get(p_uuid);
  4994. if(p == null) {
  4995. msg.prefix(sender, prefix_commands, "This player is not online.");
  4996. goto("wait");
  4997. }
  4998. msg(sender, text.merge(text.new(string.concat("§6[§cme §6-> §c", player.getName(p), "§6] §r")), message));
  4999. msg(p, text.merge(text.new(string.concat("§6[§c", player.getName(sender), " §6-> §cme§6] §r")), message));
  5000. map.add(answer_map, p_uuid, player_uuid);
  5001. map.add(answer_map, player_uuid, p_uuid);
  5002. goto("wait");
  5003. @msg
  5004. if(player.isMuted(sender)) {
  5005. msg.prefix(sender, "§6Commands", "You are muted.");
  5006. goto("wait");
  5007. }
  5008. if(size < 2) {
  5009. msg.prefix(sender, prefix_commands, "/msg <player> <message>");
  5010. if(perm.has("msg.team", player)) {
  5011. msg.prefix(sender, prefix_commands, "/msg team <message>");
  5012. }
  5013. goto("wait");
  5014. }
  5015. string_message = string.concatList(string_args, " ", 1, size - 1);
  5016. string_message = string.concat("§e", string_message);
  5017. message = getMessage(string_message);
  5018. p_name = list.getIndex(args, 0);
  5019. if(p_name == "team") {
  5020. msg.team(player, message);
  5021. goto("wait");
  5022. }
  5023. p_uuid = player.getUuid(p_name);
  5024. if(p_uuid == null) {
  5025. msg.prefix(sender, prefix_commands, "Unknown player.");
  5026. goto("wait");
  5027. }
  5028. p = read.player(p_name);
  5029. if(p == null) {
  5030. msg.prefix(sender, prefix_commands, "This player is not online. Send a /mail instead.");
  5031. goto("wait");
  5032. }
  5033. msg(p, text.merge(text.new(string.concat("§6[§c", player.getName(sender), " §6-> §cme§6] ")), message));
  5034. msg(sender, text.merge(text.new(string.concat("§6[§cme §6-> §c", player.getName(p), "§6] ")), message));
  5035. player_uuid = player.getUuid(sender);
  5036. map.add(answer_map, p_uuid, player_uuid);
  5037. map.add(answer_map, player_uuid, p_uuid);
  5038. goto("wait");
  5039. @list
  5040. list = players.toList();
  5041. size = list.getSize(list);
  5042. msg.string(sender, string.getSpacer());
  5043. if(size == 1) {
  5044. msg.string(sender, string.concat("§6There is ", string.number(size), " players online."));
  5045. } else {
  5046. msg.string(sender, string.concat("§6There are ", string.number(size), " players online."));
  5047. }
  5048. table = table.new("§f", 16, 16);
  5049. msg.string(sender, table.getStart(table));
  5050. for(i = 0; i < size; i++) {
  5051. p = list.getIndex(list, i++);
  5052. full_name = player.getFullName(p);
  5053. if(player.isAfk(p)) {
  5054. full_name = string.concat(full_name, " §5§o[Afk]");
  5055. }
  5056. if(i < size) {
  5057. p_2 = list.getIndex(list, i);
  5058. full_name_2 = player.getFullName(p_2);
  5059. if(player.isAfk(p_2)) {
  5060. full_name_2 = string.concat(full_name_2, " §5§o[Afk]");
  5061. }
  5062. } else {
  5063. full_name_2 = "";
  5064. }
  5065. msg.string(sender, table.get(table, full_name, full_name_2));
  5066. }
  5067. msg.string(sender, table.getEnd(table));
  5068. goto("wait");
  5069. @sign
  5070. if(size == 0) {
  5071. msg.prefix(player, prefix_commands, "/sign ...");
  5072. msg.string(player, "§6 - <FRONT/BACK> <row:1-4> [text] §rSet a sign line");
  5073. if(perm.has("sign.copy", player)) {
  5074. msg.string(player, "§6 - copy §rCopy a sign content");
  5075. msg.string(player, "§6 - paste §rPaste a sign content");
  5076. msg.string(player, "§6 - wax <true/false> §rWax a sign");
  5077. }
  5078. goto("wait");
  5079. }
  5080. block = player.getTargetBlock(player, 5);
  5081. if(block == null) {
  5082. msg.prefix(player, prefix_commands, "Look at a sign.");
  5083. goto("wait");
  5084. }
  5085. if(!block.hasTag(block, all_signs_tag)) {
  5086. msg.prefix(player, prefix_commands, "Look at a sign.");
  5087. goto("wait");
  5088. }
  5089. arg0 = string.toLowerCase(list.getIndex(args, 0));
  5090. if(arg0 == "copy") {
  5091. a = array.new(8);
  5092. a[0] = sign.getString(block, "FRONT", 0);
  5093. a[1] = sign.getString(block, "FRONT", 1);
  5094. a[2] = sign.getString(block, "FRONT", 2);
  5095. a[3] = sign.getString(block, "FRONT", 3);
  5096. a[4] = sign.getString(block, "BACK", 0);
  5097. a[5] = sign.getString(block, "BACK", 1);
  5098. a[6] = sign.getString(block, "BACK", 2);
  5099. a[7] = sign.getString(block, "BACK", 3);
  5100. map.add(sign_copy_map, player.getId(player), a);
  5101. msg.prefix(player, prefix_commands, "Sign copied.");
  5102. goto("wait");
  5103. }
  5104. if(arg0 == "paste") {
  5105. a = map.get(sign_copy_map, player.getId(player));
  5106. if(a == null) {
  5107. msg.prefix(player, prefix_commands, "Use '/sign copy' first.");
  5108. goto("wait");
  5109. }
  5110. sign.setString(block, "FRONT", 0, a[0]);
  5111. sign.setString(block, "FRONT", 1, a[1]);
  5112. sign.setString(block, "FRONT", 2, a[2]);
  5113. sign.setString(block, "FRONT", 3, a[3]);
  5114. sign.setString(block, "BACK", 0, a[4]);
  5115. sign.setString(block, "BACK", 1, a[5]);
  5116. sign.setString(block, "BACK", 2, a[6]);
  5117. sign.setString(block, "BACK", 3, a[7]);
  5118. msg.prefix(player, prefix_commands, "Sign pasted.");
  5119. goto("wait");
  5120. }
  5121. if(arg0 == "wax") {
  5122. if(size < 2) {
  5123. msg.prefix(player, prefix_datatools, "/sign wax <true/false>");
  5124. goto("wait");
  5125. }
  5126. bool = list.getIndex(args, 1);
  5127. if(bool != true && bool != false) {
  5128. msg.action(player, "True/False expected.");
  5129. goto("wait");
  5130. }
  5131. block.signSetWaxed(block, bool);
  5132. msg.prefix(player, prefix_commands, "Set sign wax.");
  5133. goto("wait");
  5134. }
  5135. if(size < 2) {
  5136. msg.prefix(player, prefix_datatools, "/sign <FRONT/BACK> <row:1-4> [text]");
  5137. goto("wait");
  5138. }
  5139. side = list.getIndex(args, 0);
  5140. if(side != "FRONT" && side != "BACK") {
  5141. msg.action(player, "FRONT/BACK expected.");
  5142. goto("wait");
  5143. }
  5144. line = list.getIndex(args, 1);
  5145. if(!isDouble(line)) {
  5146. msg.prefix(player, prefix_commands, "Number expected.");
  5147. goto("wait");
  5148. }
  5149. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  5150. msg.prefix(player, prefix_commands, "Number between 1 and 4 expected.");
  5151. goto("wait");
  5152. }
  5153. if(!player.hasBypass(player)) {
  5154. if(!plot.check(block.getLocation(block), player, 19, true)) {
  5155. msg.prefix(player, prefix_commands, "Not your plot.");
  5156. goto("wait");
  5157. }
  5158. }
  5159. string = "";
  5160. if(size > 2) {
  5161. for(i = 2; i < size; i++) {
  5162. arg = list.getIndex(string_args, i);
  5163. if(i == 2) {
  5164. string = arg;
  5165. } else {
  5166. string = string.concat(string, " ", arg);
  5167. }
  5168. }
  5169. }
  5170. string = string.replace(string, "&", "§");
  5171. block.setSign(block, side, line - 1, text.new(string));
  5172. block.signSetWaxed(block, true);
  5173. goto("wait");
  5174. @head
  5175. if(size != 1) {
  5176. msg.prefix(player, prefix_commands, "/head <player>");
  5177. goto("wait");
  5178. }
  5179. name = list.getIndex(args, 0);
  5180. uuid = player.getUuid(name);
  5181. if(uuid == null) {
  5182. head = read.item(string.concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}"));
  5183. } else {
  5184. head = player.getHead(uuid, name);
  5185. }
  5186. player.giveItem(player, head);
  5187. goto("wait");
  5188. @mute
  5189. if(size < 1) {
  5190. msg.prefix(sender, prefix_commands, "/mute <player> [message]");
  5191. goto("wait");
  5192. }
  5193. p_name = list.getIndex(args, 0);
  5194. if(!isOnline(p_name)) {
  5195. msg.prefix(sender, prefix_commands, "This player is not online.");
  5196. goto("wait");
  5197. }
  5198. p = read.player(p_name);
  5199. p_name = player.getName(p);
  5200. if(p_name == "marvinius") {
  5201. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5202. goto("wait");
  5203. }
  5204. sender_name = player.getName(sender);
  5205. player.mute(p, true);
  5206. if(size > 1) {
  5207. reason = string.concatList(args, " ", 1, size - 1);
  5208. msg.team(sender_name, string.concat("§cMuted ", p_name, ": ", reason));
  5209. } else {
  5210. msg.team(sender_name, string.concat("§cMuted ", p_name, "."));
  5211. }
  5212. goto("wait");
  5213. @unmute
  5214. if(size < 1) {
  5215. msg.prefix(sender, prefix_commands, "/unmute <player>");
  5216. goto("wait");
  5217. }
  5218. p_name = list.getIndex(args, 0);
  5219. if(!isOnline(p_name)) {
  5220. msg.prefix(sender, prefix_commands, "This player is not online.");
  5221. goto("wait");
  5222. }
  5223. p = read.player(p_name);
  5224. p_name = player.getName(p);
  5225. if(p_name == "marvinius") {
  5226. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5227. goto("wait");
  5228. }
  5229. msg.team(player.getName(sender), string.concat("§cUnmuted ", p_name, "."));
  5230. player.mute(p, false);
  5231. goto("wait");
  5232. @kick
  5233. if(size < 1) {
  5234. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  5235. goto("wait");
  5236. }
  5237. p_name = list.getIndex(args, 0);
  5238. if(!isOnline(p_name)) {
  5239. msg.prefix(sender, prefix_commands, "This player is not online.");
  5240. goto("wait");
  5241. }
  5242. p = read.player(p_name);
  5243. p_name = player.getName(p);
  5244. if(p_name == "marvinius") {
  5245. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5246. goto("wait");
  5247. }
  5248. sender_name = player.getName(sender);
  5249. if(size > 1) {
  5250. reason = string.concatList(args, " ", 1, size - 1);
  5251. msg.team(sender_name, string.concat("§c", p_name, " got kicked: ", reason));
  5252. } else {
  5253. reason = "You got kicked";
  5254. msg.team(sender_name, string.concat("§c", p_name, " got kicked."));
  5255. }
  5256. ban.kick(p, text.new(reason));
  5257. goto("wait");
  5258. @warn
  5259. if(size != 1) {
  5260. msg.prefix(sender, prefix_commands, "/warn <player>");
  5261. goto("wait");
  5262. }
  5263. p_name = list.getIndex(args, 0);
  5264. if(!isOnline(p_name)) {
  5265. msg.prefix(sender, prefix_commands, "This player is not online.");
  5266. goto("wait");
  5267. }
  5268. p = read.player(p_name);
  5269. p_name = player.getName(p);
  5270. if(p_name == "marvinius") {
  5271. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5272. goto("wait");
  5273. }
  5274. title.send(p, text.new(string.concat("§c", player.getName(sender))), text.new("is watching you"));
  5275. msg.prefix(sender, prefix_commands, "The player got warned.");
  5276. goto("wait");
  5277. @ban
  5278. if(size < 1) {
  5279. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  5280. goto("wait");
  5281. }
  5282. p_name = list.getIndex(args, 0);
  5283. if(!checkIfEverOnline(p_name)) {
  5284. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5285. goto("wait");
  5286. }
  5287. p_name = player.getName(player.getUuid(p_name));
  5288. if(p_name == "marvinius") {
  5289. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5290. goto("wait");
  5291. }
  5292. sender_name = player.getName(sender);
  5293. if(size > 1) {
  5294. reason = string.concatList(args, " ", 1, size - 1);
  5295. msg.team(sender_name, string.concat("§c", p_name, " got banned: ", reason));
  5296. } else {
  5297. reason = "You got banned.";
  5298. msg.team(sender_name, string.concat("§c", p_name, " got banned."));
  5299. }
  5300. ban.add(p_name, reason, sender_name);
  5301. if(isOnline(p_name)) {
  5302. p = read.player(p_name);
  5303. ban.kick(p, text.new(reason));
  5304. }
  5305. goto("wait");
  5306. @unban
  5307. if(size != 1) {
  5308. msg.prefix(sender, prefix_commands, "/unban <player>");
  5309. goto("wait");
  5310. }
  5311. p_name = list.getIndex(args, 0);
  5312. if(!checkIfEverOnline(p_name)) {
  5313. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5314. goto("wait");
  5315. }
  5316. p_uuid = player.getUuid(p_name);
  5317. p_name = player.getName(p_uuid);
  5318. ban.remove(p_uuid);
  5319. msg.team(player.getName(sender), string.concat("§cUnbanned ", p_name, "."));
  5320. goto("wait");
  5321. @tempban
  5322. if(size < 4) {
  5323. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  5324. goto("wait");
  5325. }
  5326. p_name = list.getIndex(args, 0);
  5327. if(!checkIfEverOnline(p_name)) {
  5328. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5329. goto("wait");
  5330. }
  5331. p_name = player.getName(player.getUuid(p_name));
  5332. if(p_name == "marvinius") {
  5333. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5334. goto("wait");
  5335. }
  5336. days = list.getIndex(args, 1);
  5337. hours = list.getIndex(args, 2);
  5338. minutes = list.getIndex(args, 3);
  5339. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  5340. msg.prefix(sender, prefix_commands, "Number expected.");
  5341. goto("wait");
  5342. }
  5343. if(days < 0 || hours < 0 || minutes < 0) {
  5344. msg.prefix(sender, prefix_commands, "Positive number expected.");
  5345. goto("wait");
  5346. }
  5347. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  5348. timestring = time.getString(endtime);
  5349. sender_name = player.getName(sender);
  5350. if(size > 4) {
  5351. reason = string.concatList(args, " ", 4, size - 1);
  5352. msg.team(sender_name, string.concat("§c", p_name, " got banned until ", timestring, ". Reason: ", reason));
  5353. } else {
  5354. reason = "You got banned.";
  5355. msg.team(sender_name, string.concat("§c", p_name, " got banned until ", timestring, "."));
  5356. }
  5357. calendar = time.new(endtime);
  5358. ban.add(p_name, reason, sender_name, calendar);
  5359. if(isOnline(p_name)) {
  5360. p = read.player(p_name);
  5361. ban.kick(p, text.new(reason));
  5362. }
  5363. goto("wait");
  5364. @ping
  5365. msg.string(player, "pong");
  5366. goto("wait");
  5367. @plot
  5368. if(size == 0) {
  5369. @plothelp
  5370. msg.prefix(player, prefix_plot, "/plot ...");
  5371. msg.string(player, "§d - info §rReturns info about current location");
  5372. if(!perm.has("plot.moreinfo", player)) {
  5373. msg.string(player, "§d - list §rLists your plots");
  5374. }
  5375. msg.string(player, "");
  5376. msg.string(player, "§d - pos1/pos2 §rSet corner points");
  5377. msg.string(player, "§d - create §rCreates a (sub-)plot (Y: -64 to 319)");
  5378. msg.string(player, "§d - create3D §rCreates a 3D (sub-)plot");
  5379. msg.string(player, "");
  5380. msg.string(player, "§d - remove [id] §rRemoves a plot");
  5381. msg.string(player, "§d - expand <value> [direction] [id] §rExpands a plot");
  5382. msg.string(player, "§d - name [id] <name> §rRenames a plot");
  5383. msg.string(player, "");
  5384. msg.string(player, "§d - share <player> [id] §rAdd a player to a plot");
  5385. msg.string(player, "§d - kick <player> [id] §rRemove a player from a plot");
  5386. msg.string(player, "§d - leader <player> [id] §rSet a new plot leader");
  5387. msg.string(player, "§d - mod <player> [id] §rPromote to plot mod");
  5388. msg.string(player, "§d - chest <player> [id] §rAllows a player to open chests");
  5389. msg.string(player, "");
  5390. msg.string(player, "§d - raise §rRaises a plot to a city. Costs §610 gold snuvis§r.");
  5391. msg.string(player, "§d - sell <price> §rSells a sub-plot");
  5392. msg.string(player, "");
  5393. if(perm.has("plot.moreinfo", player)) {
  5394. msg.string(player, "§d - list [player] §rLists all plots from a player");
  5395. msg.string(player, "§d - moreinfo [id] §rReturns more detailed infos");
  5396. msg.string(player, "§d - listall §rLists all plots");
  5397. msg.string(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  5398. msg.string(player, "§d - move <value> [direction] [id] §rMoves a block");
  5399. }
  5400. goto("wait");
  5401. }
  5402. arg0 = string.toLowerCase(list.getIndex(args, 0));
  5403. if(arg0 == "sell") {
  5404. if(size != 2) {
  5405. msg.prefix(player, prefix_commands, "/plot sell <price>");
  5406. goto("wait");
  5407. }
  5408. block = player.getTargetBlock(player, 5);
  5409. if(block == null) {
  5410. msg.prefix(player, prefix_commands, "Look at a sign.");
  5411. goto("wait");
  5412. }
  5413. if(!block.hasTag(block, sign_tag)) {
  5414. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  5415. goto("wait");
  5416. }
  5417. if(sign.getString(block, "FRONT", 0) != "" || sign.getString(block, 1) != "" || sign.getString(block, 2) != "" || sign.getString(block, 3) != "") {
  5418. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  5419. goto("wait");
  5420. }
  5421. sign_loc = block.getLocation(block);
  5422. plot_list = plot.get(sign_loc);
  5423. amount = list.getSize(plot_list);
  5424. if(amount == 0 || amount == 1) {
  5425. msg.prefix(player, prefix_plot, "You aren´t on a sub plot.");
  5426. goto("wait");
  5427. }
  5428. if(amount > 2) {
  5429. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  5430. goto("wait");
  5431. }
  5432. plot_1 = list.getIndex(plot_list, 0);
  5433. plot_2 = list.getIndex(plot_list, 1);
  5434. if(plot.isCity(plot_1)) {
  5435. city_plot = plot_1;
  5436. sell_plot = plot_2;
  5437. } elseif(plot.isCity(plot_2)) {
  5438. sell_plot = plot_1;
  5439. city_plot = plot_2;
  5440. } else {
  5441. msg.prefix(player, prefix_plot, "No city found.");
  5442. goto("wait");
  5443. }
  5444. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  5445. msg.prefix(player, prefix_plot, "You aren´t a city plot leader or mod.");
  5446. goto("wait");
  5447. }
  5448. snuvis = list.getIndex(args, 1);
  5449. if(!isDouble(snuvis) || snuvis < 0) {
  5450. msg.prefix(player, prefix_plot, "Positive number expected.");
  5451. goto("wait");
  5452. }
  5453. //Sell Plot
  5454. x1 = plot.getMinX(sell_plot);
  5455. y1 = plot.getMinY(sell_plot);
  5456. z1 = plot.getMinZ(sell_plot);
  5457. x2 = plot.getMaxX(sell_plot);
  5458. y2 = plot.getMaxY(sell_plot);
  5459. z2 = plot.getMaxZ(sell_plot);
  5460. length = math.abs(x1 - x2) + 1;
  5461. width = math.abs(z1 - z2) + 1;
  5462. high = math.abs(y1 - y2) + 1;
  5463. //Change plot settings
  5464. plot.setFree(sell_plot, true);
  5465. plot.setName(sell_plot, "Free Plot");
  5466. plot.removePlayer(sell_plot, player.getName(player));
  5467. //Label Sign
  5468. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  5469. block.setSign(sign_loc, 1, string.concat("§2", string.number(snuvis)));
  5470. if(high == 319) {
  5471. block.setSign(sign_loc, 2, string.concat(string.number(length), "x", string.number(width)));
  5472. } else {
  5473. block.setSign(sign_loc, 2, string.concat(string.number(length), "x", string.number(width), " (Y:", string.number(high), ")"));
  5474. }
  5475. block.setSign(sign_loc, 3, string.number(player.getId(player)));
  5476. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  5477. world = loc.getWorld(sign_loc);
  5478. plot.savePlots(world);
  5479. goto("wait");
  5480. }
  5481. if(arg0 == "raise") {
  5482. location = entity.getLocation(player);
  5483. plot_list = plot.get(location);
  5484. amount = list.getSize(plot_list);
  5485. if(amount == 0) {
  5486. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5487. goto("wait");
  5488. }
  5489. plot = list.getIndex(plot_list, 0);
  5490. if(plot.isCity(plot)) {
  5491. msg.prefix(player, prefix_plot, "This plot is already a city.");
  5492. goto("wait");
  5493. }
  5494. if(!plot.isLeader(plot, player)) {
  5495. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  5496. goto("wait");
  5497. }
  5498. if(amount > 1) {
  5499. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  5500. goto("wait");
  5501. }
  5502. x1 = plot.getMinX(plot);
  5503. z1 = plot.getMinZ(plot);
  5504. x2 = plot.getMaxX(plot);
  5505. z2 = plot.getMaxZ(plot);
  5506. length = math.abs(x1 - x2) + 1;
  5507. width = math.abs(z1 - z2) + 1;
  5508. plot_size = length * width;
  5509. if(plot_size < 2500) {
  5510. msg.prefix(player, prefix_plot, "Your plot must be over 2500m2.");
  5511. goto("wait");
  5512. }
  5513. snuvis = 40960;
  5514. if(!hasEnoughMoney(player, snuvis)) {
  5515. msg.prefix(player, prefix_plot, string.concat("You´ll need §6", string.number(snuvis), "§r snuvis for this."));
  5516. goto("wait");
  5517. }
  5518. offerRank(player, "rank.major");
  5519. player.setPlotRaised(player, true);
  5520. money.sub(player, snuvis);
  5521. plot.setCity(plot, true);
  5522. msg.prefix(player, prefix_plot, string.concat("City created. Spent §6", string.number(snuvis), "§r snuvis."));
  5523. world = loc.getWorld(location);
  5524. plot.savePlots(world);
  5525. goto("wait");
  5526. }
  5527. if(arg0 == "leader") {
  5528. if(size < 2) {
  5529. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  5530. goto("wait");
  5531. }
  5532. p_name = list.getIndex(args, 1);
  5533. p_uuid = player.getUuid(p_name);
  5534. if(p_uuid == null) {
  5535. msg.prefix(player, prefix_plot, "This player has never been online.");
  5536. goto("wait");
  5537. }
  5538. p_name = player.getName(p_uuid);
  5539. location = entity.getLocation(player);
  5540. world = loc.getWorld(location);
  5541. if(size == 2) {
  5542. plot_list = plot.get(location);
  5543. amount = list.getSize(plot_list);
  5544. if(amount == 0) {
  5545. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5546. goto("wait");
  5547. }
  5548. plot = list.getIndex(plot_list, 0);
  5549. if(amount > 1) {
  5550. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5551. for(i = 0; i < amount; i++) {
  5552. plot = list.getIndex(plot_list, i);
  5553. plot_id = plot.getId(plot);
  5554. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot leader ", p_name, " ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  5555. }
  5556. goto("wait");
  5557. }
  5558. } else {
  5559. if(size != 3) {
  5560. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  5561. goto("wait");
  5562. }
  5563. plot_id = list.getIndex(args, 2);
  5564. plot = plot.getFromId(plot_id, world);
  5565. if(plot == null) {
  5566. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5567. goto("wait");
  5568. }
  5569. }
  5570. player_id = player.getId(player);
  5571. if(!perm.has("plot.other", player)) {
  5572. if(!world.canUsePlots(world)) {
  5573. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5574. goto("wait");
  5575. }
  5576. if(!plot.isLeader(plot, player_id)) {
  5577. msg.prefix(player, prefix_plot, "You aren´t the plot leader.");
  5578. goto("wait");
  5579. }
  5580. player_name = player.getName(player);
  5581. if(player_name == p_name) {
  5582. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  5583. goto("wait");
  5584. }
  5585. }
  5586. p_id = player.getId(p_uuid);
  5587. if(plot.isLeader(plot, p_id)) {
  5588. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  5589. goto("wait");
  5590. }
  5591. old_leader = plot.getLeaderId(plot);
  5592. if(old_leader != null) {
  5593. plot.setMod(plot, old_leader);
  5594. }
  5595. plot.setLeader(plot, p_id);
  5596. plot.addPlayer(plot, p_name);
  5597. msg.prefix(player, prefix_plot, string.concat(p_name, " promoted to plot leader."));
  5598. plot.savePlots(world);
  5599. goto("wait");
  5600. }
  5601. if(arg0 == "mod") {
  5602. if(size < 2) {
  5603. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  5604. goto("wait");
  5605. }
  5606. p_name = list.getIndex(args, 1);
  5607. p_uuid = player.getUuid(p_name);
  5608. if(p_uuid == null) {
  5609. msg.prefix(player, prefix_plot, "This player has never been online.");
  5610. goto("wait");
  5611. }
  5612. p_name = player.getName(p_uuid);
  5613. location = entity.getLocation(player);
  5614. world = loc.getWorld(location);
  5615. if(size == 2) {
  5616. plot_list = plot.get(location);
  5617. amount = list.getSize(plot_list);
  5618. if(amount == 0) {
  5619. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5620. goto("wait");
  5621. }
  5622. plot = list.getIndex(plot_list, 0);
  5623. if(amount > 1) {
  5624. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5625. for(i = 0; i < amount; i++) {
  5626. plot = list.getIndex(plot_list, i);
  5627. plot_id = plot.getId(plot);
  5628. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot mod ", p_name, " ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  5629. }
  5630. goto("wait");
  5631. }
  5632. } else {
  5633. if(size != 3) {
  5634. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  5635. goto("wait");
  5636. }
  5637. plot_id = list.getIndex(args, 2);
  5638. plot = plot.getFromId(plot_id, world);
  5639. if(plot == null) {
  5640. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5641. goto("wait");
  5642. }
  5643. }
  5644. player_id = player.getId(player);
  5645. if(!perm.has("plot.other", player)) {
  5646. if(!world.canUsePlots(world)) {
  5647. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5648. goto("wait");
  5649. }
  5650. if(!plot.isLeader(plot, player_id)) {
  5651. msg.prefix(player, prefix_plot, "You aren´t the plot leader.");
  5652. goto("wait");
  5653. }
  5654. }
  5655. p_id = player.getId(p_uuid);
  5656. if(plot.isLeader(plot, p_id)) {
  5657. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  5658. goto("wait");
  5659. }
  5660. if(plot.isMod(plot, p_id)) {
  5661. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  5662. goto("wait");
  5663. }
  5664. plot.setMod(plot, p_id);
  5665. plot.addPlayer(plot, p_name);
  5666. msg.prefix(player, prefix_plot, string.concat(p_name, " promoted to plot mod."));
  5667. plot.savePlots(world);
  5668. goto("wait");
  5669. }
  5670. if(arg0 == "chest") {
  5671. if(size < 2) {
  5672. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5673. goto("wait");
  5674. }
  5675. p_name = list.getIndex(args, 1);
  5676. p_uuid = player.getUuid(p_name);
  5677. if(p_uuid == null) {
  5678. msg.prefix(player, prefix_plot, "This player has never been online.");
  5679. goto("wait");
  5680. }
  5681. p_name = player.getName(p_uuid);
  5682. location = entity.getLocation(player);
  5683. world = loc.getWorld(location);
  5684. if(size == 2) {
  5685. plot_list = plot.get(location);
  5686. amount = list.getSize(plot_list);
  5687. if(amount == 0) {
  5688. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5689. goto("wait");
  5690. }
  5691. plot = list.getIndex(plot_list, 0);
  5692. if(amount > 1) {
  5693. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5694. for(i = 0; i < amount; i++) {
  5695. plot = list.getIndex(plot_list, i);
  5696. plot_id = plot.getId(plot);
  5697. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot chest ", p_name, " ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  5698. }
  5699. goto("wait");
  5700. }
  5701. } else {
  5702. if(size != 3) {
  5703. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5704. goto("wait");
  5705. }
  5706. plot_id = list.getIndex(args, 2);
  5707. plot = plot.getFromId(plot_id, world);
  5708. if(plot == null) {
  5709. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5710. goto("wait");
  5711. }
  5712. }
  5713. player_id = player.getId(player);
  5714. if(!perm.has("plot.other", player)) {
  5715. if(!world.canUsePlots(world)) {
  5716. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5717. goto("wait");
  5718. }
  5719. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5720. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  5721. goto("wait");
  5722. }
  5723. }
  5724. p_id = player.getId(p_uuid);
  5725. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  5726. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  5727. goto("wait");
  5728. }
  5729. if(plot.canOpenChests(plot, p_id)) {
  5730. msg.prefix(player, prefix_plot, "This player already can open chests.");
  5731. goto("wait");
  5732. }
  5733. plot.setChest(plot, p_id);
  5734. msg.prefix(player, prefix_plot, string.concat(p_name, " can now open chests."));
  5735. goto("wait");
  5736. }
  5737. if(arg0 == "remove") {
  5738. location = entity.getLocation(player);
  5739. world = loc.getWorld(location);
  5740. if(size == 1) {
  5741. plot_list = plot.get(location);
  5742. amount = list.getSize(plot_list);
  5743. if(amount == 0) {
  5744. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5745. goto("wait");
  5746. }
  5747. plot = list.getIndex(plot_list, 0);
  5748. if(amount > 1) {
  5749. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5750. for(i = 0; i < amount; i++) {
  5751. plot = list.getIndex(plot_list, i);
  5752. plot_id = plot.getId(plot);
  5753. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot remove ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  5754. }
  5755. goto("wait");
  5756. }
  5757. } else {
  5758. if(size != 2) {
  5759. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  5760. goto("wait");
  5761. }
  5762. plot_id = list.getIndex(args, 1);
  5763. plot = plot.getFromId(plot_id, world);
  5764. if(plot == null) {
  5765. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5766. goto("wait");
  5767. }
  5768. }
  5769. if(!perm.has("plot.other", player)) {
  5770. if(!world.canUsePlots(world)) {
  5771. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5772. goto("wait");
  5773. }
  5774. player_id = player.getId(player);
  5775. if(!plot.isLeader(plot, player_id)) {
  5776. msg.prefix(player, prefix_plot, "You aren´t the plot leader.");
  5777. goto("wait");
  5778. }
  5779. }
  5780. if(plot.isCity(plot)) {
  5781. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  5782. iter = iterator(plot_list);
  5783. while(hasNext(iter)) {
  5784. sub_plot = next(iter);
  5785. plot.removeAllPlayers(sub_plot);
  5786. plot.remove(sub_plot, world);
  5787. }
  5788. }
  5789. //10% money back
  5790. x1 = plot.getMinX(plot);
  5791. z1 = plot.getMinZ(plot);
  5792. x2 = plot.getMaxX(plot);
  5793. z2 = plot.getMaxZ(plot);
  5794. length = x2 - x1 + 1;
  5795. width = z2 - z1 + 1;
  5796. snuvis = math.round(plot.calcCost(world, length, width) / 10);
  5797. leader_id = plot.getLeaderId(plot);
  5798. if(leader_id != null) {
  5799. money.add(leader_id, snuvis);
  5800. msg.prefix(player, prefix_plot, string.concat("Returned 10% of plot costs: ", money.getString(snuvis)));
  5801. }
  5802. //remove plot
  5803. plot.removeAllPlayers(plot);
  5804. plot.delMoveEvent(plot);
  5805. plot.remove(plot, world);
  5806. msg.prefix(player, prefix_plot, string.concat("Plot removed. #", string.number(plot.getId(plot)), " §6", plot.getName(plot)));
  5807. plot.savePlots(world);
  5808. goto("wait");
  5809. }
  5810. if(arg0 == "expand") {
  5811. if(size < 2) {
  5812. msg.prefix(player, prefix_commands, "/plot expand <value> [direction] [plot_id]");
  5813. goto("wait");
  5814. }
  5815. location = entity.getLocation(player);
  5816. world = loc.getWorld(location);
  5817. anzahl = list.getIndex(args, 1);
  5818. if(!isDouble(anzahl) || anzahl < 0) {
  5819. msg.prefix(player, prefix_plot, "Positive number expected.");
  5820. goto("wait");
  5821. }
  5822. if(size == 2) {
  5823. yaw = loc.getYaw(location);
  5824. direction = getDirection(yaw);
  5825. if(direction == null) {
  5826. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  5827. goto("wait");
  5828. }
  5829. plot_list = plot.get(location);
  5830. amount = list.getSize(plot_list);
  5831. if(amount == 0) {
  5832. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5833. goto("wait");
  5834. }
  5835. plot = list.getIndex(plot_list, 0);
  5836. if(amount > 1) {
  5837. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5838. for(i = 0; i < amount; i++) {
  5839. plot = list.getIndex(plot_list, i);
  5840. plot_id = plot.getId(plot);
  5841. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot expand ", anzahl, " ", direction, " ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  5842. }
  5843. goto("wait");
  5844. }
  5845. } else {
  5846. if(size != 4) {
  5847. msg.prefix(player, prefix_commands, "/plot expand <value> [<direction> <plot_id>]");
  5848. goto("wait");
  5849. }
  5850. direction = string.toLowerCase(list.getIndex(args, 2));
  5851. plot_id = list.getIndex(args, 3);
  5852. plot = plot.getFromId(plot_id, world);
  5853. if(plot == null) {
  5854. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5855. goto("wait");
  5856. }
  5857. }
  5858. if(plot.isSub(plot)) {
  5859. msg.prefix(player, prefix_plot, "Sub plots can´t be expanded.");
  5860. goto("wait");
  5861. }
  5862. x1 = plot.getMinX(plot);
  5863. y1 = plot.getMinY(plot);
  5864. z1 = plot.getMinZ(plot);
  5865. x2 = plot.getMaxX(plot);
  5866. y2 = plot.getMaxY(plot);
  5867. z2 = plot.getMaxZ(plot);
  5868. old_length = math.abs(x1 - x2) + 1;
  5869. old_width = math.abs(z1 - z2) + 1;
  5870. if(direction == "east") {
  5871. old_x2 = x2;
  5872. x2 += anzahl;
  5873. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  5874. } elseif(direction == "south") {
  5875. old_z2 = z2;
  5876. z2 += anzahl;
  5877. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  5878. } elseif(direction == "west") {
  5879. old_x1 = x1;
  5880. x1 -= anzahl;
  5881. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  5882. } elseif(direction == "north") {
  5883. old_z1 = z1;
  5884. z1 -= anzahl;
  5885. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  5886. } else {
  5887. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  5888. goto("wait");
  5889. }
  5890. if(!perm.has("plot.other", player)) {
  5891. if(list.getSize(list) > 0) {
  5892. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  5893. goto("wait");
  5894. }
  5895. if(!world.canUsePlots(world)) {
  5896. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5897. goto("wait");
  5898. }
  5899. player_id = player.getId(player);
  5900. if(!plot.isLeader(plot, player_id)) {
  5901. msg.prefix(player, prefix_plot, "You aren´t the plot leader.");
  5902. goto("wait");
  5903. }
  5904. //Calc costs
  5905. length = math.abs(x1 - x2) + 1;
  5906. width = math.abs(z1 - z2) + 1;
  5907. snuvis = plot.calcCost(world, length, width) - plot.calcCost(world, old_length, old_width);
  5908. if(!hasEnoughMoney(player, snuvis)) {
  5909. msg.prefix(player, prefix_plot, string.concat("You´ll need §6", string.number(snuvis), "§r snuvis for this."));
  5910. goto("wait");
  5911. }
  5912. money.sub(player, snuvis);
  5913. expand_message = string.concat("The plot has been expanded. Spent §6", string.number(snuvis), "§r snuvis.");
  5914. if(!player.hasBigPlotCreated(player)) {
  5915. plot_size = length * width;
  5916. if(plot_size >= 900) {
  5917. offerRank(player, "rank.colonizer");
  5918. player.setBigPlotCreated(player, true);
  5919. }
  5920. }
  5921. } else {
  5922. expand_message = string.concat("The plot has been expanded.");
  5923. }
  5924. //Expand plot
  5925. gs_edge1 = loc.new(world, x1, y1, z1);
  5926. gs_edge2 = loc.new(world, x2, y2, z2);
  5927. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  5928. plot.delMoveEvent(plot);
  5929. plot.setMoveEvent(new_plot, world);
  5930. msg.prefix(player, prefix_plot, expand_message);
  5931. plot.savePlots(world);
  5932. goto("wait");
  5933. }
  5934. if(arg0 == "move") {
  5935. if(!perm.has("plot.move", player)) {
  5936. perm.no("plot.move", player);
  5937. goto("wait");
  5938. }
  5939. if(size < 2) {
  5940. msg.prefix(player, prefix_commands, "/plot move <value> [direction] [plot_id]");
  5941. goto("wait");
  5942. }
  5943. location = entity.getLocation(player);
  5944. world = loc.getWorld(location);
  5945. anzahl = list.getIndex(args, 1);
  5946. if(!isDouble(anzahl) || anzahl < 0) {
  5947. msg.prefix(player, prefix_plot, "Positive number expected.");
  5948. goto("wait");
  5949. }
  5950. if(size == 2) {
  5951. yaw = loc.getYaw(location);
  5952. direction = getDirection(yaw);
  5953. if(direction == null) {
  5954. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  5955. goto("wait");
  5956. }
  5957. plot_list = plot.get(location);
  5958. amount = list.getSize(plot_list);
  5959. if(amount == 0) {
  5960. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5961. goto("wait");
  5962. }
  5963. plot = list.getIndex(plot_list, 0);
  5964. if(amount > 1) {
  5965. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5966. for(i = 0; i < amount; i++) {
  5967. plot = list.getIndex(plot_list, i);
  5968. plot_id = plot.getId(plot);
  5969. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot move ", anzahl, " ", direction, " ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  5970. }
  5971. goto("wait");
  5972. }
  5973. } else {
  5974. if(size != 4) {
  5975. msg.prefix(player, prefix_commands, "/plot move <value> [<direction> <plot_id>]");
  5976. goto("wait");
  5977. }
  5978. direction = string.toLowerCase(list.getIndex(args, 2));
  5979. plot_id = list.getIndex(args, 3);
  5980. plot = plot.getFromId(plot_id, world);
  5981. if(plot == null) {
  5982. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5983. goto("wait");
  5984. }
  5985. }
  5986. if(plot.isSub(plot)) {
  5987. msg.prefix(player, prefix_plot, "Sub plots can´t be moved.");
  5988. goto("wait");
  5989. }
  5990. x1 = plot.getMinX(plot);
  5991. y1 = plot.getMinY(plot);
  5992. z1 = plot.getMinZ(plot);
  5993. x2 = plot.getMaxX(plot);
  5994. y2 = plot.getMaxY(plot);
  5995. z2 = plot.getMaxZ(plot);
  5996. old_length = math.abs(x1 - x2) + 1;
  5997. old_width = math.abs(z1 - z2) + 1;
  5998. if(direction == "east") {
  5999. x1 += anzahl;
  6000. x2 += anzahl;
  6001. } elseif(direction == "south") {
  6002. z1 += anzahl;
  6003. z2 += anzahl;
  6004. } elseif(direction == "west") {
  6005. x1 -= anzahl;
  6006. x2 -= anzahl;
  6007. } elseif(direction == "north") {
  6008. z1 -= anzahl;
  6009. z2 -= anzahl;
  6010. } else {
  6011. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  6012. goto("wait");
  6013. }
  6014. //Move plot
  6015. gs_edge1 = loc.new(world, x1, y1, z1);
  6016. gs_edge2 = loc.new(world, x2, y2, z2);
  6017. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  6018. plot.delMoveEvent(plot);
  6019. plot.setMoveEvent(new_plot, world);
  6020. msg.prefix(player, prefix_plot, "The plot has been moved.");
  6021. plot.savePlots(world);
  6022. goto("wait");
  6023. }
  6024. if(arg0 == "share") {
  6025. if(size < 2) {
  6026. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  6027. goto("wait");
  6028. }
  6029. p_name = list.getIndex(args, 1);
  6030. p_uuid = player.getUuid(p_name);
  6031. if(p_uuid == null) {
  6032. msg.prefix(player, prefix_plot, "This player has never been online.");
  6033. goto("wait");
  6034. }
  6035. p_name = player.getName(p_uuid);
  6036. location = entity.getLocation(player);
  6037. world = loc.getWorld(location);
  6038. if(size == 2) {
  6039. plot_list = plot.get(location);
  6040. amount = list.getSize(plot_list);
  6041. if(amount == 0) {
  6042. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6043. goto("wait");
  6044. }
  6045. plot = list.getIndex(plot_list, 0);
  6046. if(amount > 1) {
  6047. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6048. for(i = 0; i < amount; i++) {
  6049. plot = list.getIndex(plot_list, i);
  6050. plot_id = plot.getId(plot);
  6051. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot share ", p_name, " ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  6052. }
  6053. goto("wait");
  6054. }
  6055. } else {
  6056. if(size != 3) {
  6057. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  6058. goto("wait");
  6059. }
  6060. plot_id = list.getIndex(args, 2);
  6061. plot = plot.getFromId(plot_id, world);
  6062. if(plot == null) {
  6063. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6064. goto("wait");
  6065. }
  6066. }
  6067. if(!perm.has("plot.other", player)) {
  6068. if(!world.canUsePlots(world)) {
  6069. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  6070. goto("wait");
  6071. }
  6072. player_id = player.getId(player);
  6073. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  6074. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  6075. goto("wait");
  6076. }
  6077. }
  6078. plot.addPlayer(plot, p_name);
  6079. msg.prefix(player, prefix_plot, string.concat(p_name, " added to the plot."));
  6080. plot.savePlots(world);
  6081. goto("wait");
  6082. }
  6083. if(arg0 == "kick") {
  6084. if(size < 2) {
  6085. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  6086. goto("wait");
  6087. }
  6088. p_name = list.getIndex(args, 1);
  6089. p_uuid = player.getUuid(p_name);
  6090. if(p_uuid == null) {
  6091. msg.prefix(player, prefix_plot, "This player has never been online.");
  6092. goto("wait");
  6093. }
  6094. p_name = player.getName(p_uuid);
  6095. location = entity.getLocation(player);
  6096. world = loc.getWorld(location);
  6097. if(size == 2) {
  6098. plot_list = plot.get(location);
  6099. amount = list.getSize(plot_list);
  6100. if(amount == 0) {
  6101. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6102. goto("wait");
  6103. }
  6104. plot = list.getIndex(plot_list, 0);
  6105. if(amount > 1) {
  6106. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6107. for(i = 0; i < amount; i++) {
  6108. plot = list.getIndex(plot_list, i);
  6109. plot_id = plot.getId(plot);
  6110. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot kick ", p_name, " ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  6111. }
  6112. goto("wait");
  6113. }
  6114. } else {
  6115. if(size != 3) {
  6116. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  6117. goto("wait");
  6118. }
  6119. plot_id = list.getIndex(args, 2);
  6120. plot = plot.getFromId(plot_id, world);
  6121. if(plot == null) {
  6122. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6123. goto("wait");
  6124. }
  6125. }
  6126. if(!perm.has("plot.other", player)) {
  6127. if(!world.canUsePlots(world)) {
  6128. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  6129. goto("wait");
  6130. }
  6131. if(!plot.isLeader(plot, player) && !plot.isMod(plot, player)) {
  6132. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  6133. goto("wait");
  6134. }
  6135. player_name = player.getName(player);
  6136. if(player_name == p_name) {
  6137. msg.prefix(player, prefix_plot, "You can´t kick yourself.");
  6138. goto("wait");
  6139. }
  6140. p_id = player.getId(p_uuid);
  6141. if(plot.isLeader(plot, p_id)) {
  6142. msg.prefix(player, prefix_plot, "You can´t kick the plot-leader.");
  6143. goto("wait");
  6144. }
  6145. }
  6146. plot.removePlayer(plot, p_name);
  6147. msg.prefix(player, prefix_plot, string.concat(p_name, " removed from this plot."));
  6148. plot.savePlots(world);
  6149. goto("wait");
  6150. }
  6151. if(arg0 == "name") {
  6152. if(size < 2) {
  6153. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  6154. goto("wait");
  6155. }
  6156. location = entity.getLocation(player);
  6157. world = loc.getWorld(location);
  6158. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  6159. if(size == 2) {
  6160. plot_list = plot.get(location);
  6161. amount = list.getSize(plot_list);
  6162. if(amount == 0) {
  6163. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6164. goto("wait");
  6165. }
  6166. plot = list.getIndex(plot_list, 0);
  6167. name = list.getIndex(args, 1);
  6168. if(amount > 1) {
  6169. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6170. for(i = 0; i < amount; i++) {
  6171. plot = list.getIndex(plot_list, i);
  6172. plot_id = plot.getId(plot);
  6173. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot name ", plot_id, " ", name)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  6174. }
  6175. goto("wait");
  6176. }
  6177. }
  6178. if(size > 2) {
  6179. plot_id = list.getIndex(args, 1);
  6180. if(isDouble(plot_id)) {
  6181. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  6182. plot = plot.getFromId(plot_id, world);
  6183. if(plot == null) {
  6184. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6185. goto("wait");
  6186. }
  6187. name = string.concatList(args, " ", 2, size - 1);
  6188. } else {
  6189. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  6190. name = string.concatList(args, " ", 1, size - 1);
  6191. plot_list = plot.get(location);
  6192. amount = list.getSize(plot_list);
  6193. if(amount == 0) {
  6194. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6195. goto("wait");
  6196. }
  6197. plot = list.getIndex(plot_list, 0);
  6198. if(amount > 1) {
  6199. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6200. for(i = 0; i < amount; i++) {
  6201. plot = list.getIndex(plot_list, i);
  6202. plot_id = plot.getId(plot);
  6203. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot name ", plot_id, " ", name)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  6204. }
  6205. goto("wait");
  6206. }
  6207. }
  6208. }
  6209. if(!perm.has("plot.other", player)) {
  6210. if(!world.canUsePlots(world)) {
  6211. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  6212. goto("wait");
  6213. }
  6214. player_id = player.getId(player);
  6215. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  6216. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  6217. goto("wait");
  6218. }
  6219. }
  6220. plot.setName(plot, name);
  6221. msg.prefix(player, prefix_plot, string.concat("Plot renamed to ", name, "."));
  6222. plot.savePlots(world);
  6223. goto("wait");
  6224. }
  6225. if(arg0 == "create" || arg0 == "create3d") {
  6226. player_id = player.getId(player);
  6227. loc1 = map.get(plotpos1, player_id);
  6228. loc2 = map.get(plotpos2, player_id);
  6229. if(loc1 == null || loc2 == null) {
  6230. msg.prefix(player, prefix_plot, "Set corners points with §d/p pos1 §rand §d/p pos2§r.");
  6231. goto("wait");
  6232. }
  6233. world1 = loc.getWorld(loc1);
  6234. if(world1 != loc.getWorld(loc2)) {
  6235. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  6236. goto("wait");
  6237. }
  6238. x1 = loc.getX(loc1);
  6239. z1 = loc.getZ(loc1);
  6240. x2 = loc.getX(loc2);
  6241. z2 = loc.getZ(loc2);
  6242. if(arg0 == "create") {
  6243. y1 = -64;
  6244. y2 = 319;
  6245. loc.setY(loc1, y1);
  6246. loc.setY(loc2, y2);
  6247. } else {
  6248. y1 = loc.getY(loc1);
  6249. y2 = loc.getY(loc2);
  6250. }
  6251. create_message = "Plot created.";
  6252. sub_plot = false;
  6253. if(!perm.has("plot.other", player)) {
  6254. world_name = world.getName(world1);
  6255. if(!world.canUsePlots(world1)) {
  6256. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  6257. goto("wait");
  6258. }
  6259. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  6260. if(list.getSize(list) > 0) {
  6261. city_plot = list.getIndex(list, 0);
  6262. if(plot.isCity(city_plot)) {
  6263. if(!plot.isLeader(city_plot, player_id) && !plot.isMod(city_plot, player_id)) {
  6264. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  6265. goto("wait");
  6266. }
  6267. city_id = plot.getId(city_plot);
  6268. if(!loc.hasPlotId(loc1, city_id)) {
  6269. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  6270. goto("wait");
  6271. }
  6272. if(!loc.hasPlotId(loc2, city_id)) {
  6273. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  6274. goto("wait");
  6275. }
  6276. sub_plot = true;
  6277. } else {
  6278. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  6279. goto("wait");
  6280. }
  6281. }
  6282. if(!sub_plot) {
  6283. //Calc costs
  6284. length = math.abs(x1 - x2) + 1;
  6285. width = math.abs(z1 - z2) + 1;
  6286. if(length < 3 || width < 3) {
  6287. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  6288. goto("wait");
  6289. }
  6290. snuvis = plot.calcCost(world1, length, width);
  6291. free_plot_used = player.usedHisFreePlot(player_id);
  6292. if(!free_plot_used && world_name != "creative") {
  6293. snuvis -= plot.calcCost(world1, 16, 16);
  6294. if(snuvis < 0) {
  6295. snuvis = 0;
  6296. }
  6297. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  6298. }
  6299. if(!hasEnoughMoney(player, snuvis)) {
  6300. msg.prefix(player, prefix_plot, string.concat("You´ll need ", money.getString(snuvis), " snuvis for this."));
  6301. goto("wait");
  6302. }
  6303. create_message = string.concat("Plot created. Spent ", money.getString(snuvis), " snuvis.");
  6304. money.sub(player, snuvis);
  6305. if(!free_plot_used && world_name != "creative") {
  6306. player.setUsedFreePlot(player_id, true);
  6307. offerRank(player, "rank.settler");
  6308. }
  6309. if(!player.hasBigPlotCreated(player)) {
  6310. plot_size = length * width;
  6311. if(plot_size >= 900) {
  6312. offerRank(player, "rank.colonizer");
  6313. player.setBigPlotCreated(player, true);
  6314. }
  6315. }
  6316. }
  6317. }
  6318. //Create plot
  6319. map.remove(plotpos1, player_id);
  6320. map.remove(plotpos2, player_id);
  6321. plot = plot.add(loc1, loc2);
  6322. if(sub_plot) {
  6323. plot.setSub(plot, true);
  6324. }
  6325. plot.setMoveEvent(plot, world1);
  6326. player_name = player.getName(player);
  6327. plot.setName(plot, string.concat("Plot of ", player_name));
  6328. plot.addPlayer(plot, player_name);
  6329. plot.setLeader(plot, player_id);
  6330. msg.prefix(player, prefix_plot, create_message);
  6331. plot.savePlots(world1);
  6332. goto("wait");
  6333. }
  6334. if(arg0 == "pos1" || arg0 == "pos2") {
  6335. loc = entity.getLocation(player);
  6336. loc = getBlockLocation(loc);
  6337. player_id = player.getId(player);
  6338. if(arg0 == "pos1") {
  6339. map.add(plotpos1, player_id, loc);
  6340. pos_string = "Pos1";
  6341. } elseif(arg0 == "pos2") {
  6342. map.add(plotpos2, player_id, loc);
  6343. pos_string = "Pos2";
  6344. }
  6345. x = string.number(loc.getX(loc));
  6346. y = string.number(loc.getY(loc));
  6347. z = string.number(loc.getZ(loc));
  6348. msg.prefix(player, prefix_plot, string.concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  6349. loc1 = map.get(plotpos1, player_id);
  6350. loc2 = map.get(plotpos2, player_id);
  6351. if(loc1 != null && loc2 != null) {
  6352. world1 = loc.getWorld(loc1);
  6353. snuvis = plot.calcCost(world1, loc1, loc2);
  6354. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  6355. snuvis -= plot.calcCost(world1, 16, 16);
  6356. if(snuvis < 0) {
  6357. snuvis = 0;
  6358. }
  6359. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  6360. }
  6361. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  6362. snuvis = 0;
  6363. }
  6364. msg.prefix(player, prefix_plot, string.concat("This plot will cost ", money.getString(snuvis), " snuvis."));
  6365. }
  6366. goto("wait");
  6367. }
  6368. if(arg0 == "flags") {
  6369. if(!perm.has("plot.moreinfo", player)) {
  6370. perm.no("plot.moreinfo", player);
  6371. goto("wait");
  6372. }
  6373. if(size < 3 || size > 4) {
  6374. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  6375. goto("wait");
  6376. }
  6377. flags = list.getIndex(args, 1);
  6378. if(!isDouble(flags) || flags < 0) {
  6379. msg.prefix(player, prefix_commands, "Positive number expected.");
  6380. goto("wait");
  6381. }
  6382. boolean = list.getIndex(args, 2);
  6383. if(!(boolean == true || boolean == false)) {
  6384. msg.prefix(player, prefix_commands, "Boolean expected.");
  6385. goto("wait");
  6386. }
  6387. location = entity.getLocation(player);
  6388. world = loc.getWorld(location);
  6389. if(size == 3) {
  6390. plot_list = plot.get(location);
  6391. amount = list.getSize(plot_list);
  6392. if(amount == 0) {
  6393. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6394. goto("wait");
  6395. }
  6396. plot = list.getIndex(plot_list, 0);
  6397. if(amount > 1) {
  6398. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6399. for(i = 0; i < amount; i++) {
  6400. plot = list.getIndex(plot_list, i);
  6401. plot_id = plot.getId(plot);
  6402. x = loc.getX(location);
  6403. y = loc.getY(location);
  6404. z = loc.getZ(location);
  6405. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot flags ", flags, " ", boolean, " ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)))));
  6406. }
  6407. goto("wait");
  6408. }
  6409. } else {
  6410. plot_id = list.getIndex(args, 3);
  6411. plot = plot.getFromId(plot_id, world);
  6412. if(plot == null) {
  6413. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6414. goto("wait");
  6415. }
  6416. }
  6417. plot.setFlags(plot, flags, boolean);
  6418. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  6419. plot.savePlots(world);
  6420. goto("wait");
  6421. }
  6422. if(arg0 == "list") {
  6423. if(size == 1) {
  6424. p_name = player.getName(player);
  6425. } else {
  6426. if(!perm.has("plot.moreinfo", player)) {
  6427. perm.no("plot.moreinfo", player);
  6428. goto("wait");
  6429. }
  6430. p_name = list.getIndex(args, 1);
  6431. }
  6432. p_uuid = player.getUuid(p_name);
  6433. if(p_uuid == null) {
  6434. msg.prefix(player, prefix_plot, "This player has never been online.");
  6435. goto("wait");
  6436. }
  6437. p_name = player.getName(p_uuid);
  6438. msg.prefix(player, prefix_commands, string.concat("Plots of ", p_name, ":"));
  6439. world = loc.getWorld(entity.getLocation(player));
  6440. iter = plot.iterator(world, p_uuid);
  6441. while(hasNext(iter)) {
  6442. plot = next(iter);
  6443. msg.string(player, string.concat(" - #", string.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  6444. }
  6445. goto("wait");
  6446. }
  6447. if(arg0 == "listall") {
  6448. if(!perm.has("plot.moreinfo", player)) {
  6449. perm.no("plot.moreinfo", player);
  6450. goto("wait");
  6451. }
  6452. if(size != 1) {
  6453. msg.prefix(player, prefix_commands, "/plot listall");
  6454. goto("wait");
  6455. }
  6456. world = loc.getWorld(entity.getLocation(player));
  6457. msg.prefix(player, prefix_commands, string.concat("All plots in this world: ", world.getName(world)));
  6458. iterator = plot.iterator(world);
  6459. while(hasNext(iterator)) {
  6460. plot = next(iterator);
  6461. plot_id = plot.getId(plot);
  6462. msg.string(player, string.concat(" - #", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  6463. }
  6464. goto("wait");
  6465. }
  6466. if(arg0 == "moreinfo" || arg0 == "mi") {
  6467. if(!perm.has("plot.moreinfo", player)) {
  6468. perm.no("plot.moreinfo", player);
  6469. goto("wait");
  6470. }
  6471. location = entity.getLocation(player);
  6472. world = loc.getWorld(location);
  6473. if(size == 1) {
  6474. plot_list = plot.get(location);
  6475. amount = list.getSize(plot_list);
  6476. if(amount == 0) {
  6477. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6478. goto("wait");
  6479. }
  6480. plot = list.getIndex(plot_list, 0);
  6481. if(amount > 1) {
  6482. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6483. for(i = 0; i < amount; i++) {
  6484. plot = list.getIndex(plot_list, i);
  6485. plot_id = plot.getId(plot);
  6486. msg(player, text.merge(string.getClickText(" [§cSelect§r] ", string.concat("/plot moreinfo ", plot_id)), text.new(string.concat("#", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)))));
  6487. }
  6488. goto("wait");
  6489. }
  6490. } else {
  6491. if(size != 2) {
  6492. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  6493. goto("wait");
  6494. }
  6495. plot_id = list.getIndex(args, 1);
  6496. plot = plot.getFromId(plot_id, world);
  6497. if(plot == null) {
  6498. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6499. goto("wait");
  6500. }
  6501. }
  6502. owners = "";
  6503. owners_list = plot.getOwners(plot);
  6504. copy_list = list.copy(owners_list);
  6505. plot_id = plot.getId(plot);
  6506. x1 = plot.getMinX(plot);
  6507. y1 = plot.getMinY(plot);
  6508. z1 = plot.getMinZ(plot);
  6509. x2 = plot.getMaxX(plot);
  6510. y2 = plot.getMaxY(plot);
  6511. z2 = plot.getMaxZ(plot);
  6512. length = x2 - x1 + 1;
  6513. width = z2 - z1 + 1;
  6514. msg.string(player, string.concat(" - #", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", string.number(length), "x", string.number(width)));
  6515. owners_list = plot.getOwners(plot);
  6516. copy_list = list.copy(owners_list);
  6517. msg.string(player, string.concat(" §dW §r", world.getName(world)));
  6518. msg.string(player, string.concat(" §dX1 §r", string.number(x1), " §dY1 §r", string.number(y1), " §dZ1 §r", string.number(z1)));
  6519. msg.string(player, string.concat(" §dX2 §r", string.number(x2), " §dY2 §r", string.number(y2), " §dZ2 §r", string.number(z2)));
  6520. leader_name = plot.getLeaderName(plot);
  6521. if(leader_name != "") {
  6522. msg.string(player, string.concat(" §dLeader: §r", leader_name));
  6523. list.remove(copy_list, player.getUuid(leader_name));
  6524. }
  6525. mods_list = plot.getMods(plot);
  6526. mods_amount = list.getSize(mods_list);
  6527. if(mods_amount != 0) {
  6528. iter = iterator(mods_list);
  6529. mods_string = "";
  6530. while(hasNext(iter)) {
  6531. p_name = player.getNameFromId(next(iter));
  6532. p_uuid = player.getUuid(p_name);
  6533. list.remove(copy_list, p_uuid);
  6534. if(mods_string == "") {
  6535. mods_string = p_name;
  6536. } else {
  6537. mods_string = string.concat(mods_string, " / ", p_name);
  6538. }
  6539. }
  6540. msg.string(player, string.concat(" §dMods: §r", mods_string));
  6541. }
  6542. members_amount = list.getSize(copy_list);
  6543. if(members_amount != 0) {
  6544. iter = iterator(copy_list);
  6545. members_string = "";
  6546. while(hasNext(iter)) {
  6547. p_name = player.getName(next(iter));
  6548. if(members_string == "") {
  6549. members_string = p_name;
  6550. } else {
  6551. members_string = string.concat(members_string, " / ", p_name);
  6552. }
  6553. }
  6554. msg.string(player, string.concat(" §dMembers: §r", members_string));
  6555. }
  6556. chests_list = plot.getChestRanks(plot);
  6557. chests_amount = list.getSize(chests_list);
  6558. if(chests_amount != 0) {
  6559. iter = iterator(chests_list);
  6560. chests_string = "";
  6561. while(hasNext(iter)) {
  6562. p_name = player.getNameFromId(next(iter));
  6563. if(chests_string == "") {
  6564. chests_string = p_name;
  6565. } else {
  6566. chests_string = string.concat(chests_string, " / ", p_name);
  6567. }
  6568. }
  6569. msg.string(player, string.concat(" §dOnly chest: §r", chests_string));
  6570. }
  6571. a = getFlagLists(plot);
  6572. flags_true = a[0];
  6573. flags_false = a[1];
  6574. x = loc.getX(location);
  6575. y = loc.getY(location);
  6576. z = loc.getZ(location);
  6577. msg.string(player, " §dFlags true:");
  6578. iter = iterator(flags_true);
  6579. while(hasNext(iter)) {
  6580. array = next(iter);
  6581. flag_number = array[0];
  6582. flag_name = array[1];
  6583. msg(player, text.merge(text.new(" "), string.getClickText(string.concat(" §d[§r", flag_name, "§d] "), string.concat("/plot flags ", flag_number, " false ", plot_id))));
  6584. }
  6585. msg.string(player, " §dFlags false:");
  6586. iter = iterator(flags_false);
  6587. while(hasNext(iter)) {
  6588. array = next(iter);
  6589. flag_number = array[0];
  6590. flag_name = array[1];
  6591. msg(player, text.merge(text.new(" "), string.getClickText(string.concat(" §d[§r", flag_name, "§d] "), string.concat("/plot flags ", flag_number, " true ", plot_id))));
  6592. }
  6593. goto("wait");
  6594. }
  6595. if(arg0 == "info" || arg0 == "i") {
  6596. location = entity.getLocation(player);
  6597. list = plot.get(location);
  6598. world = loc.getWorld(location);
  6599. size = list.getSize(list);
  6600. if(size == 0) {
  6601. msg.prefix(player, prefix_plot, "No plots found.");
  6602. goto("wait");
  6603. }
  6604. if(size == 1) {
  6605. msg.prefix(player, prefix_plot, string.concat(string.number(size), " plot found:"));
  6606. } else {
  6607. msg.prefix(player, prefix_plot, string.concat(string.number(size), " plots found:"));
  6608. }
  6609. for(i = 0; i < size; i++) {
  6610. plot = list.getIndex(list, i);
  6611. plot_id = plot.getId(plot);
  6612. x1 = plot.getMinX(plot);
  6613. y1 = plot.getMinY(plot);
  6614. z1 = plot.getMinZ(plot);
  6615. x2 = plot.getMaxX(plot);
  6616. y2 = plot.getMaxY(plot);
  6617. z2 = plot.getMaxZ(plot);
  6618. length = x2 - x1 + 1;
  6619. width = z2 - z1 + 1;
  6620. msg.string(player, string.concat(" - #", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", string.number(length), "x", string.number(width)));
  6621. owners_list = plot.getOwners(plot);
  6622. copy_list = list.copy(owners_list);
  6623. msg.string(player, string.concat(" §dW §r", world.getName(world)));
  6624. msg.string(player, string.concat(" §dX1 §r", string.number(x1), " §dY1 §r", string.number(y1), " §dZ1 §r", string.number(z1)));
  6625. msg.string(player, string.concat(" §dX2 §r", string.number(x2), " §dY2 §r", string.number(y2), " §dZ2 §r", string.number(z2)));
  6626. leader_name = plot.getLeaderName(plot);
  6627. if(leader_name != "") {
  6628. msg.string(player, string.concat(" §dLeader: §r", leader_name));
  6629. list.remove(copy_list, player.getUuid(leader_name));
  6630. }
  6631. mods_list = plot.getMods(plot);
  6632. mods_amount = list.getSize(mods_list);
  6633. if(mods_amount != 0) {
  6634. iter = iterator(mods_list);
  6635. mods_string = "";
  6636. while(hasNext(iter)) {
  6637. p_name = player.getNameFromId(next(iter));
  6638. p_uuid = player.getUuid(p_name);
  6639. list.remove(copy_list, p_uuid);
  6640. if(mods_string == "") {
  6641. mods_string = p_name;
  6642. } else {
  6643. mods_string = string.concat(mods_string, " / ", p_name);
  6644. }
  6645. }
  6646. msg.string(player, string.concat(" §dMods: §r", mods_string));
  6647. }
  6648. members_amount = list.getSize(copy_list);
  6649. if(members_amount != 0) {
  6650. iter = iterator(copy_list);
  6651. members_string = "";
  6652. while(hasNext(iter)) {
  6653. p_name = player.getName(next(iter));
  6654. if(members_string == "") {
  6655. members_string = p_name;
  6656. } else {
  6657. members_string = string.concat(members_string, " / ", p_name);
  6658. }
  6659. }
  6660. msg.string(player, string.concat(" §dMembers: §r", members_string));
  6661. }
  6662. chests_list = plot.getChestRanks(plot);
  6663. chests_amount = list.getSize(chests_list);
  6664. if(chests_amount != 0) {
  6665. iter = iterator(chests_list);
  6666. chests_string = "";
  6667. while(hasNext(iter)) {
  6668. p_name = player.getNameFromId(next(iter));
  6669. if(chests_string == "") {
  6670. chests_string = p_name;
  6671. } else {
  6672. chests_string = string.concat(chests_string, " / ", p_name);
  6673. }
  6674. }
  6675. msg.string(player, string.concat(" §dOnly chest: §r", chests_string));
  6676. }
  6677. }
  6678. goto("wait");
  6679. }
  6680. goto("plothelp");
  6681. @stopadventure
  6682. removeAdventureDisplay(player);
  6683. player.setAdventure(player, false);
  6684. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  6685. goto("wait");
  6686. @speed
  6687. if(size < 1 || size > 2) {
  6688. if(perm.has("speed.other", player)) {
  6689. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  6690. } else {
  6691. msg.prefix(player, prefix_commands, "/speed <1-10>");
  6692. }
  6693. goto("wait");
  6694. }
  6695. speed = list.getIndex(args, 0);
  6696. if(!isDouble(speed)) {
  6697. msg.prefix(player, prefix_commands, "Number expected.");
  6698. goto("wait");
  6699. }
  6700. if(speed < 1) {
  6701. speed = 1;
  6702. }
  6703. if(speed > 10) {
  6704. speed = 10;
  6705. }
  6706. if(size < 2) {
  6707. p = player;
  6708. }
  6709. if(size == 2) {
  6710. if(!perm.has("speed.other", player)) {
  6711. perm.no("speed.other", player);
  6712. goto("wait");
  6713. }
  6714. p_name = list.getIndex(args, 1);
  6715. p = read.player(p_name);
  6716. if(p == null) {
  6717. msg.prefix(player, prefix_commands, "This player is not online.");
  6718. goto("wait");
  6719. }
  6720. }
  6721. player.setSpeed(p, speed);
  6722. msg.prefix(p, prefix_commands, string.concat("Set your speed to ", string.number(speed), "."));
  6723. if(p != player) {
  6724. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " set your speed to ", string.number(speed), "."));
  6725. }
  6726. goto("wait");
  6727. @butcher
  6728. loc = entity.getLocation(player);
  6729. world = loc.getWorld(loc);
  6730. list = world.getEntities(world);
  6731. size = list.getSize(list);
  6732. killed = 0;
  6733. for(i = 0; i < size; i++) {
  6734. element = list.getIndex(list, i);
  6735. if(isLiving(element)) {
  6736. entity_type = entity.getType(element);
  6737. if(set.contains(butcher_set, entity_type)) {
  6738. entity.remove(element);
  6739. killed++;
  6740. }
  6741. }
  6742. }
  6743. msg.prefix(player, prefix_commands, string.concat(string.number(killed), " mobs killed."));
  6744. goto("wait");
  6745. @enchant
  6746. if(size != 2) {
  6747. msg.prefix(player, prefix_commands, "/enchant <enchantment> <level>");
  6748. goto("wait");
  6749. }
  6750. ench_string = list.getIndex(args, 0);
  6751. ench = enchantment.get(ench_string);
  6752. if(ench == null) {
  6753. msg.prefix(player, prefix_commands, "Unknown enchantment");
  6754. goto("wait");
  6755. }
  6756. lvl = list.getIndex(args, 1);
  6757. if(!isDouble(lvl) || lvl < 1 || lvl > 100) {
  6758. msg.prefix(sender, prefix_commands, "Number greater than 0 and less than 101 expected.");
  6759. goto("wait");
  6760. }
  6761. item = living.getHand(player);
  6762. if(item.isAir(item)) {
  6763. msg.prefix(sender, prefix_commands, "You need to hold an item in your hand.");
  6764. goto("wait");
  6765. }
  6766. enchantment.add(ench, item, lvl);
  6767. goto("wait");
  6768. @enderchest
  6769. if(size < 1 || size > 2) {
  6770. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  6771. goto("wait");
  6772. }
  6773. if(size == 1) {
  6774. from_name = list.getIndex(args, 0);
  6775. p = player;
  6776. }
  6777. elseif(size == 2) {
  6778. p_name = list.getIndex(args, 0);
  6779. from_name = list.getIndex(args, 1);
  6780. p = read.player(p_name);
  6781. if(p == null) {
  6782. msg.prefix(player, prefix_commands, "This player is not online.");
  6783. goto("wait");
  6784. }
  6785. }
  6786. from_player = read.player(from_name);
  6787. if(from_player == null) {
  6788. msg.prefix(player, prefix_commands, "This player is not online.");
  6789. goto("wait");
  6790. }
  6791. ender_inv = player.getEnderInv(from_player);
  6792. inv.open(ender_inv, p);
  6793. goto("wait");
  6794. @gamemode
  6795. if(size < 1 || size > 2) {
  6796. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  6797. goto("wait");
  6798. }
  6799. if(size == 1) {
  6800. p = player;
  6801. } elseif(size == 2) {
  6802. if(!perm.has("gamemode.other", player)) {
  6803. perm.no("gamemode.other", player);
  6804. goto("wait");
  6805. }
  6806. p_name = list.getIndex(args, 1);
  6807. p = read.player(p_name);
  6808. if(p == null) {
  6809. msg.prefix(player, prefix_commands, "This player is not online.");
  6810. goto("wait");
  6811. }
  6812. }
  6813. mode = list.getIndex(args, 0);
  6814. if(isDouble(mode)) {
  6815. mode = string.number(mode);
  6816. } else {
  6817. mode = string.toLowerCase(mode);
  6818. }
  6819. if(mode == "s" || mode == "0" || mode == "survival") {
  6820. mode = "SURVIVAL";
  6821. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  6822. mode = "CREATIVE";
  6823. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  6824. mode = "ADVENTURE";
  6825. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  6826. mode = "SPECTATOR";
  6827. } else {
  6828. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  6829. goto("wait");
  6830. }
  6831. player.setGamemode(p, mode);
  6832. if(p != player) {
  6833. p_name = player.getName(p);
  6834. msg.prefix(player, prefix_commands, string.concat("Gamemode of ", p_name, " set to ", mode, "."));
  6835. }
  6836. msg.prefix(p, prefix_commands, string.concat("Set your gamemode to ", mode, "."));
  6837. goto("wait");
  6838. @home
  6839. if(size == 0) {
  6840. @homesyntax
  6841. msg.prefix(player, prefix_commands, "/home ...");
  6842. msg.string(player, "§6 - set <name> §rSets a home");
  6843. if(perm.has("home.other", player)) {
  6844. msg.string(player, "§6 - delete <name> [player] §rDeletes a home");
  6845. msg.string(player, "§6 - list [player] §rLists all homes");
  6846. msg.string(player, "§6 - <name> [player] §rTeleports to a home");
  6847. } else {
  6848. msg.string(player, "§6 - delete <name> §rDeletes a home");
  6849. msg.string(player, "§6 - list §rLists your homes");
  6850. msg.string(player, "§6 - <name> §rTeleports to your home");
  6851. }
  6852. goto("wait");
  6853. }
  6854. arg0 = string.toLowerCase(list.getIndex(args, 0));
  6855. if(arg0 == "del" || arg0 == "delete") {
  6856. if(size < 2) {
  6857. goto("homesyntax");
  6858. }
  6859. if(size == 2) {
  6860. player_id = player.getId(player);
  6861. } else {
  6862. if(!perm.has("home.other", player)) {
  6863. perm.no("home.other", player);
  6864. goto("wait");
  6865. }
  6866. p_name = string.toLowerCase(list.getIndex(args, 2));
  6867. p_uuid = player.getUuid(p_name);
  6868. if(p_uuid == null) {
  6869. msg.prefix(player, prefix_commands, "This player has never been online.");
  6870. goto("wait");
  6871. }
  6872. player_id = player.getId(p_uuid);
  6873. }
  6874. name = string.toLowerCase(list.getIndex(args, 1));
  6875. if(!home.exists(player_id, name)) {
  6876. msg.prefix(player, prefix_commands, string.concat("Home ", name, " doesn´t exist."));
  6877. goto("wait");
  6878. }
  6879. home.delete(player_id, name);
  6880. msg.prefix(player, prefix_commands, string.concat("Home ", name, " deleted."));
  6881. goto("wait");
  6882. }
  6883. if(arg0 == "list") {
  6884. if(size < 2) {
  6885. p_uuid = player.getUuid(player);
  6886. }
  6887. if(size == 2) {
  6888. if(!perm.has("home.other", player)) {
  6889. perm.no("home.other", player);
  6890. goto("wait");
  6891. }
  6892. p_name = string.toLowerCase(list.getIndex(args, 1));
  6893. p_uuid = player.getUuid(p_name);
  6894. if(p_uuid == null) {
  6895. msg.prefix(player, prefix_commands, "This player has never been online.");
  6896. goto("wait");
  6897. }
  6898. }
  6899. id = player.getId(p_uuid);
  6900. homes_list = home.getList(id);
  6901. home_amount = list.getSize(homes_list);
  6902. if(home_amount == 0) {
  6903. msg.prefix(player, prefix_commands, "No homes existing.");
  6904. } else {
  6905. msg.prefix(player, prefix_commands, string.concat("Homes of ", player.getName(p_uuid), ":"));
  6906. for(i = 0; i < home_amount; i++) {
  6907. msg.string(player, string.concat("§6 - §r", list.getIndex(homes_list, i)));
  6908. }
  6909. }
  6910. goto("wait");
  6911. }
  6912. location = entity.getLocation(player);
  6913. world_name = world.getName(loc.getWorld(location));
  6914. if(!world.isSurvName(world_name)) {
  6915. msg.prefix(player, prefix_commands, "You can´t use this command in this world.");
  6916. goto("wait");
  6917. }
  6918. if(arg0 == "set") {
  6919. if(size < 2) {
  6920. goto("homesyntax");
  6921. }
  6922. player_id = player.getId(player);
  6923. homes_list = home.getList(player_id);
  6924. home_amount = list.getSize(homes_list);
  6925. if(perm.has("isTeam", player)) {
  6926. max_homes = 20;
  6927. } else {
  6928. max_homes = 1;
  6929. }
  6930. max_homes += getAdditionalVoteHomes();
  6931. if(home_amount >= max_homes) {
  6932. msg.prefix(player, prefix_commands, string.concat("You can only set ", string.number(max_homes), " homes."));
  6933. goto("wait");
  6934. }
  6935. name = string.toLowerCase(list.getIndex(args, 1));
  6936. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  6937. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  6938. goto("wait");
  6939. }
  6940. if(!string.onlyletters(name)) {
  6941. msg.prefix(player, prefix_commands, "Only letters allowed.");
  6942. goto("wait");
  6943. }
  6944. if(string.length(name) > 20) {
  6945. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  6946. goto("wait");
  6947. }
  6948. if(home.exists(player_id, name)) {
  6949. msg.prefix(player, prefix_commands, string.concat("Home ", name, " already exists."));
  6950. goto("wait");
  6951. }
  6952. home.set(player_id, name, location);
  6953. msg.prefix(player, prefix_commands, string.concat("Home ", name, " set."));
  6954. goto("wait");
  6955. }
  6956. //Teleportation
  6957. if(size < 2) {
  6958. p_name = player.getName(player);
  6959. }
  6960. if(size == 2) {
  6961. p_name = string.toLowerCase(list.getIndex(args, 1));
  6962. }
  6963. p_uuid = player.getUuid(p_name);
  6964. if(p_uuid == null) {
  6965. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  6966. goto("wait");
  6967. }
  6968. player_id = player.getId(p_uuid);
  6969. location = home.getLocation(player_id, arg0);
  6970. if(location == null) {
  6971. msg.prefix(player, prefix_commands, "Home doesn´t exist."); //oder die welt ist nicht geladen
  6972. goto("wait");
  6973. }
  6974. player.teleport(player, location, true);
  6975. goto("wait");
  6976. @icon
  6977. msg.string(player, string.getSpacer());
  6978. msg.string(player, "Icons - Click to Copy");
  6979. msg(player, text.merge(
  6980. string.getClipBoardText(icon.getGoldCoin(), icon.getGoldCoin()), text.new(" "),
  6981. string.getClipBoardText(icon.getSilverCoin(), icon.getSilverCoin()), text.new(" "),
  6982. string.getClipBoardText(icon.getCopperCoin(), icon.getCopperCoin()), text.new(" "),
  6983. string.getClipBoardText(icon.getExp(), icon.getExp()), text.new(" "),
  6984. string.getClipBoardText(icon.getBookshelf(), icon.getBookshelf()), text.new(" "),
  6985. string.getClipBoardText(icon.getCraftingTable(), icon.getCraftingTable())
  6986. ));
  6987. msg(player, text.merge(
  6988. string.getClipBoardText(icon.getCompass(), icon.getCompass()), text.new(" "),
  6989. string.getClipBoardText(icon.getCake(), icon.getCake()), text.new(" "),
  6990. string.getClipBoardText(icon.getEnderpearl(), icon.getEnderpearl()), text.new(" "),
  6991. string.getClipBoardText(icon.getHeart(), icon.getHeart()), text.new(" "),
  6992. string.getClipBoardText(icon.getHalfHeart(), icon.getHalfHeart()), text.new(" "),
  6993. string.getClipBoardText(icon.getEmptyHeart(), icon.getEmptyHeart())
  6994. ));
  6995. goto("wait");
  6996. @tpa
  6997. if(size != 1) {
  6998. msg.prefix(player, prefix_commands, "/tpa <player>");
  6999. goto("wait");
  7000. }
  7001. p_name = list.getIndex(args, 0);
  7002. p_uuid = player.getUuid(p_name);
  7003. if(p_uuid == null) {
  7004. msg.prefix(player, prefix_commands, "This player has never been online.");
  7005. goto("wait");
  7006. }
  7007. p_name = player.getName(p_uuid);
  7008. p = read.player(p_name);
  7009. if(p == null) {
  7010. msg.prefix(player, prefix_commands, "This player is not online.");
  7011. goto("wait");
  7012. }
  7013. if(!player.doesAcceptTpaRequests(p)) {
  7014. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r rejects teleport requests."));
  7015. goto("wait");
  7016. }
  7017. if(!player.canTeleport(p)) {
  7018. msg.prefix(player, prefix_commands, "This player can´t teleport now.");
  7019. goto("wait");
  7020. }
  7021. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7022. if(world.isGamesName(world_name)) {
  7023. msg.prefix(player, prefix_commands, "You can´t teleport in this world.");
  7024. goto("wait");
  7025. }
  7026. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  7027. if(world.isGamesName(world_name)) {
  7028. msg.prefix(player, prefix_commands, "You can´t teleport to this world.");
  7029. goto("wait");
  7030. }
  7031. addTpaRequest(player.getUuid(player), p_uuid);
  7032. player_name = player.getName(player);
  7033. msg.string(player, string.concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  7034. msg(p, text.merge(text.new(string.concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6] ")), string.getClickText("§6[§aAccept§6]", string.concat("/tpaccept ", player_name))));
  7035. goto("wait");
  7036. @tpahere
  7037. if(size != 1) {
  7038. msg.prefix(player, prefix_commands, "/tpahere <player>");
  7039. goto("wait");
  7040. }
  7041. p_name = list.getIndex(args, 0);
  7042. p_uuid = player.getUuid(p_name);
  7043. if(p_uuid == null) {
  7044. msg.prefix(player, prefix_commands, "This player has never been online.");
  7045. goto("wait");
  7046. }
  7047. p_name = player.getName(p_uuid);
  7048. p = read.player(p_name);
  7049. if(p == null) {
  7050. msg.prefix(player, prefix_commands, "This player is not online.");
  7051. goto("wait");
  7052. }
  7053. if(!player.canTeleport(p)) {
  7054. msg.prefix(player, prefix_commands, "This player can´t teleport now.");
  7055. goto("wait");
  7056. }
  7057. if(!player.doesAcceptTpaRequests(p)) {
  7058. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r rejects teleport requests."));
  7059. goto("wait");
  7060. }
  7061. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7062. if(world.isGamesName(world_name)) {
  7063. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r isn´t allowed to teleport to this world."));
  7064. goto("wait");
  7065. }
  7066. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  7067. if(world.isGamesName(world_name)) {
  7068. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r isn´t allowed to teleport from their world."));
  7069. goto("wait");
  7070. }
  7071. addTpaRequest(p_uuid, player.getUuid(player));
  7072. player_name = player.getName(player);
  7073. msg.string(player, string.concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  7074. msg(p, text.merge(text.new(string.concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6] ")), string.getClickText("§6[§aAccept§6]", string.concat("/tpaccepthere ", player_name))));
  7075. goto("wait");
  7076. @tpaccept
  7077. if(size != 1) {
  7078. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  7079. goto("wait");
  7080. }
  7081. p_name = list.getIndex(args, 0);
  7082. p_uuid = player.getUuid(p_name);
  7083. if(p_uuid == null) {
  7084. msg.prefix(player, prefix_commands, "This player has never been online.");
  7085. goto("wait");
  7086. }
  7087. p_name = player.getName(p_uuid);
  7088. p = read.player(p_name);
  7089. if(p == null) {
  7090. msg.prefix(player, prefix_commands, "This player is not online.");
  7091. goto("wait");
  7092. }
  7093. if(!player.canTeleport(player)) {
  7094. msg.prefix(player, prefix_commands, "This player can´t teleport to you now.");
  7095. goto("wait");
  7096. }
  7097. if(!player.canTeleport(p)) {
  7098. msg.prefix(player, prefix_commands, "This player can´t teleport to you now.");
  7099. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  7100. }
  7101. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7102. if(world.isGamesName(world_name)) {
  7103. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r isn´t allowed to teleport to your world."));
  7104. goto("wait");
  7105. }
  7106. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  7107. if(world.isGamesName(world_name)) {
  7108. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r isn´t allowed to teleport from their world."));
  7109. goto("wait");
  7110. }
  7111. player_uuid = player.getUuid(player);
  7112. if(!hasTpaRequest(p_uuid, player_uuid)) {
  7113. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  7114. goto("wait");
  7115. }
  7116. location = entity.getLocation(player);
  7117. player.teleport(p, location, true);
  7118. goto("wait");
  7119. @tpaccepthere
  7120. if(size != 1) {
  7121. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  7122. goto("wait");
  7123. }
  7124. p_name = list.getIndex(args, 0);
  7125. p_uuid = player.getUuid(p_name);
  7126. if(p_uuid == null) {
  7127. msg.prefix(player, prefix_commands, "This player has never been online.");
  7128. goto("wait");
  7129. }
  7130. p_name = player.getName(p_uuid);
  7131. p = read.player(p_name);
  7132. if(p == null) {
  7133. msg.prefix(player, prefix_commands, "This player is not online.");
  7134. goto("wait");
  7135. }
  7136. if(!player.canTeleport(player)) {
  7137. msg.prefix(p, prefix_commands, "This player can´t teleport to you now.");
  7138. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  7139. }
  7140. if(!player.canTeleport(p)) {
  7141. msg.prefix(player, prefix_commands, "You must not teleport to this player now.");
  7142. goto("wait");
  7143. }
  7144. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7145. if(world.isGamesName(world_name)) {
  7146. msg.prefix(player, prefix_commands, "You can´t teleport in this world.");
  7147. goto("wait");
  7148. }
  7149. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  7150. if(world.isGamesName(world_name)) {
  7151. msg.prefix(player, prefix_commands, "You can´t teleport to this world.");
  7152. goto("wait");
  7153. }
  7154. player_uuid = player.getUuid(player);
  7155. if(!hasTpaRequest(player_uuid, p_uuid)) {
  7156. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  7157. goto("wait");
  7158. }
  7159. location = entity.getLocation(p);
  7160. player.teleport(player, location, true);
  7161. goto("wait");
  7162. @tp
  7163. if(size < 1 || size > 2) {
  7164. if(perm.has("tp.other", player)) {
  7165. msg.prefix(player, prefix_commands, "/tp [player] <to-player>");
  7166. } else {
  7167. msg.prefix(player, prefix_commands, "/tp <player>");
  7168. }
  7169. goto("wait");
  7170. }
  7171. if(size == 1) {
  7172. to_name = list.getIndex(args, 0);
  7173. p = player;
  7174. }
  7175. elseif(size == 2) {
  7176. if(!perm.has("tp.other", player)) {
  7177. perm.no("tp.other", player);
  7178. goto("wait");
  7179. }
  7180. p_name = list.getIndex(args, 0);
  7181. p = read.player(p_name);
  7182. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  7183. to_name = list.getIndex(args, 1);
  7184. if(p == null) {
  7185. msg.prefix(player, prefix_commands, "This player is not online.");
  7186. goto("wait");
  7187. }
  7188. }
  7189. if(player.hasMinigame(p)) {
  7190. if(size == 2) {
  7191. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  7192. goto("wait");
  7193. }
  7194. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  7195. goto("wait");
  7196. }
  7197. to_player = read.player(to_name);
  7198. if(to_player == null) {
  7199. msg.prefix(player, prefix_commands, "This player is not online.");
  7200. goto("wait");
  7201. }
  7202. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  7203. to_name = player.getName(to_player);
  7204. location = entity.getLocation(to_player);
  7205. if(player.teleport(p, location, true)) {
  7206. if(player != p) {
  7207. msg.prefix(player, prefix_commands, string.concat("Teleported ", player.getName(p), " to ", to_name, "."));
  7208. }
  7209. msg.prefix(p, prefix_commands, string.concat("Teleported you to ", to_name, "."));
  7210. }
  7211. goto("wait");
  7212. @say
  7213. if(size == 0) {
  7214. msg.prefix(sender, prefix_commands, "/say <text>");
  7215. goto("wait");
  7216. }
  7217. msg.online("§cServer", string.concatList(args, " ", 0, size - 1));
  7218. goto("wait");
  7219. @warp
  7220. if(size == 0) {
  7221. @warpsyntax
  7222. msg.prefix(player, prefix_commands, "/warp ...");
  7223. if(perm.has("warp.create", player)) {
  7224. msg.string(player, "§6 - set <warp> §rSets a warp");
  7225. msg.string(player, "§6 - delete <warp> §rDeletes a warp");
  7226. }
  7227. msg.string(player, "§6 - <warp> §rTeleports to a warp");
  7228. msg.string(player, "§6 - list §rLists all warps");
  7229. goto("wait");
  7230. }
  7231. arg0 = string.toLowerCase(list.getIndex(args, 0));
  7232. if(arg0 == "delete") {
  7233. if(!perm.has("warp.create", player)) {
  7234. perm.no("warp.create", player);
  7235. goto("wait");
  7236. }
  7237. if(size != 2) {
  7238. goto("warpsyntax");
  7239. }
  7240. warp_name = string.toLowerCase(list.getIndex(args, 1));
  7241. if(warp.delete(warp_name)) {
  7242. msg.prefix(player, prefix_commands, string.concat("Warp ", warp_name, " deleted."));
  7243. } else {
  7244. msg.prefix(player, prefix_commands, "Warpname doesn´t exist.");
  7245. }
  7246. goto("wait");
  7247. }
  7248. if(arg0 == "list") {
  7249. warps_list = warp.getList();
  7250. if(list.getSize(warps_list) == 0) {
  7251. msg.prefix(player, prefix_commands, "No warps existing.");
  7252. goto("wait");
  7253. }
  7254. msg.prefix(player, prefix_commands, string.concat("§6Warps:"));
  7255. for(i = 0; i < list.getSize(warps_list); i++) {
  7256. msg.string(player, string.concat("§6 - §r", list.getIndex(warps_list, i)));
  7257. }
  7258. goto("wait");
  7259. }
  7260. if(arg0 == "set") {
  7261. if(!perm.has("warp.create", player)) {
  7262. perm.no("warp.create", player);
  7263. goto("wait");
  7264. }
  7265. if(size != 2) {
  7266. goto("warpsyntax");
  7267. }
  7268. warp_name = string.toLowerCase(list.getIndex(args, 1));
  7269. if(warp.exists(warp_name)) {
  7270. msg.prefix(player, prefix_commands, "Warpname already exists.");
  7271. goto("wait");
  7272. }
  7273. warp.create(warp_name, entity.getLocation(player));
  7274. msg.prefix(player, prefix_commands, string.concat("Warp ", warp_name, " set."));
  7275. goto("wait");
  7276. }
  7277. //Teleportation
  7278. warp_name = string.toLowerCase(arg0);
  7279. warp_loc = warp.get(warp_name);
  7280. if(warp_loc == null) {
  7281. msg.prefix(player, prefix_commands, "Warpname doesn´t exist.");
  7282. goto("wait");
  7283. }
  7284. if(!perm.has("warp.create", player)) {
  7285. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7286. if(world.isGamesName(world_name)) {
  7287. msg.prefix(player, prefix_commands, "You can´t teleport in this world.");
  7288. goto("wait");
  7289. }
  7290. world_name = world.getName(loc.getWorld(warp_loc));
  7291. if(world.isGamesName(world_name)) {
  7292. msg.prefix(player, prefix_commands, "You can´t teleport to this world.");
  7293. goto("wait");
  7294. }
  7295. }
  7296. if(player.teleport(player, warp_loc, true)) {
  7297. msg.prefix(player, prefix_commands, string.concat("You have been teleported to warp §7", warp_name, "."));
  7298. }
  7299. goto("wait");
  7300. @databank
  7301. if(size == 0) {
  7302. @databankhelp
  7303. msg.prefix(player, prefix_commands, "/databank...");
  7304. msg.string(player, "§6 - showtables §rShows all tables");
  7305. msg.string(player, "§6 - showfields §rShows fields from a table");
  7306. msg.string(player, "§6 - showdatatypes §rShows dataypes from a table");
  7307. goto("wait");
  7308. }
  7309. arg0 = string.toLowerCase(list.getIndex(args, 0));
  7310. if(arg0 == "showtables") {
  7311. msg.string(player, string.getSpacer());
  7312. stmt = databank.prepare("SHOW TABLES");
  7313. result = databank.execute(stmt);
  7314. while(databank.next(result)) {
  7315. msg.string(player, databank.getString(result, 1));
  7316. }
  7317. databank.close(result);
  7318. databank.close(stmt);
  7319. goto("wait");
  7320. }
  7321. if(arg0 == "showfields") {
  7322. if(size < 2) {
  7323. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  7324. goto("wait");
  7325. }
  7326. table = list.getIndex(args, 1);
  7327. if(!databank.isExistingTable(table)) {
  7328. msg.prefix(player, prefix_commands, "This in no existing table.");
  7329. goto("wait");
  7330. }
  7331. msg.string(player, string.getSpacer());
  7332. fields = databank.getTableFields(table);
  7333. iter = iterator(fields);
  7334. while(hasNext(iter)) {
  7335. msg.string(player, next(iter));
  7336. }
  7337. goto("wait");
  7338. }
  7339. if(arg0 == "showdatatypes") {
  7340. if(size < 2) {
  7341. msg.prefix(player, prefix_commands, "/databank showdatatypes <table>");
  7342. goto("wait");
  7343. }
  7344. table = list.getIndex(args, 1);
  7345. if(!databank.isExistingTable(table)) {
  7346. msg.prefix(player, prefix_commands, "This in no existing table.");
  7347. goto("wait");
  7348. }
  7349. msg.string(player, string.getSpacer());
  7350. msg.string(player, databank.getTableDatatypes(table));
  7351. goto("wait");
  7352. }
  7353. goto("databankhelp");
  7354. @seen
  7355. if(size != 1) {
  7356. msg.prefix(player, prefix_commands, "/seen <player>");
  7357. goto("wait");
  7358. }
  7359. seen_name = list.getIndex(args, 0);
  7360. seen_uuid = player.getUuid(seen_name);
  7361. if(seen_uuid == null) {
  7362. msg.prefix(player, prefix_commands, "This player has never been online.");
  7363. goto("wait");
  7364. }
  7365. if(read.player(seen_name) != null) {
  7366. msg.prefix(player, prefix_commands, "This player is online.");
  7367. goto("wait");
  7368. }
  7369. seenStatement = databank.prepare("SELECT MAX(leave_time) FROM playtime WHERE player_id = ?;");
  7370. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  7371. result = databank.execute(seenStatement);
  7372. if(databank.next(result)) {
  7373. time = databank.getLong(result, 1);
  7374. msg.prefix(player, prefix_commands, string.concat(seen_name, " was seen at §e", time.getString(time), "."));
  7375. } else {
  7376. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  7377. }
  7378. databank.close(result);
  7379. databank.close(seenStatement);
  7380. goto("wait");
  7381. @lastseen
  7382. if(size != 1) {
  7383. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  7384. goto("wait");
  7385. }
  7386. amount = list.getIndex(args, 0);
  7387. if(!isDouble(amount)) {
  7388. msg.prefix(sender, prefix_commands, "Number expected.");
  7389. goto("wait");
  7390. }
  7391. if(amount < 1) {
  7392. msg.prefix(sender, prefix_commands, "Positive number expected.");
  7393. goto("wait");
  7394. }
  7395. modTimer(-5);
  7396. msg.prefix(sender, prefix_commands, "These players were last seen:");
  7397. table = table.new("§f", 12, 12);
  7398. msg.string(sender, table.getStart(table));
  7399. msg.string(sender, table.get(table, "Player", "Date"));
  7400. msg.string(sender, table.getMiddle(table));
  7401. lastseenStatement = databank.prepare("SELECT player_id, MAX(leave_time) AS max_time FROM playtime GROUP BY player_id ORDER BY max_time DESC LIMIT ?;");
  7402. databank.setInt(lastseenStatement, 1, amount);
  7403. result = databank.execute(lastseenStatement);
  7404. while(databank.next(result)) {
  7405. id = databank.getInt(result, 1);
  7406. time = databank.getLong(result, 2);
  7407. msg.string(sender, table.get(table, string.concat("§a", player.getNameFromId(id)), string.concat("§e", time.getString(time))));
  7408. }
  7409. msg.string(sender, table.getEnd(table));
  7410. databank.close(result);
  7411. databank.close(lastseenStatement);
  7412. goto("wait");
  7413. @feed
  7414. if(size > 1) {
  7415. msg.prefix(player, prefix_commands, "/feed [player]");
  7416. goto("wait");
  7417. }
  7418. if(size == 0) {
  7419. p = player;
  7420. }
  7421. if(size == 1) {
  7422. p_name = list.getIndex(args, 0);
  7423. p = read.player(p_name);
  7424. if(p == null) {
  7425. msg.prefix(player, prefix_commands, "This player is not online.");
  7426. goto("wait");
  7427. }
  7428. if(player != p) {
  7429. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " has been feed."));
  7430. }
  7431. }
  7432. player.setHunger(p, 20);
  7433. player.setSaturation(p, 5);
  7434. msg.prefix(p, prefix_commands, "You have been feed.");
  7435. goto("wait");
  7436. @tempfly
  7437. if(size < 2) {
  7438. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  7439. goto("wait");
  7440. }
  7441. p_name = list.getIndex(args, 0);
  7442. if(!checkIfEverOnline(p_name)) {
  7443. msg.prefix(sender, prefix_commands, "This player has never been online.");
  7444. goto("wait");
  7445. }
  7446. p = read.player(p_name);
  7447. if(p == null) {
  7448. msg.prefix(sender, prefix_commands, "This player is not online.");
  7449. goto("wait");
  7450. }
  7451. p_name = player.getName(player.getUuid(p_name));
  7452. if(player.hasMinigame(p)) {
  7453. msg.prefix(player, prefix_commands, "This player can´t fly now.");
  7454. goto("wait");
  7455. }
  7456. sec = list.getIndex(args, 1);
  7457. if(!isDouble(sec) || sec < 0) {
  7458. msg.prefix(sender, prefix_commands, "Positive number expected.");
  7459. goto("wait");
  7460. }
  7461. msg.prefix(sender, prefix_commands, string.concat(p_name, " can now fly for ", string.number(sec), " seconds."));
  7462. msg.prefix(p, prefix_commands, string.concat("You can now fly for ", string.number(sec), " seconds."));
  7463. player.setFly(p, true);
  7464. duration = sec * 20;
  7465. data.setTimer(p, "fly", duration);
  7466. //status.addTimed(player, 55, duration, "Fly");
  7467. goto("wait");
  7468. @fly
  7469. if(size > 2) {
  7470. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  7471. goto("wait");
  7472. }
  7473. if(size >= 1) {
  7474. if(!perm.has("fly.other", player)) {
  7475. perm.no("fly.other", player);
  7476. goto("wait");
  7477. }
  7478. p_name = list.getIndex(args, 0);
  7479. p = read.player(p_name);
  7480. if(p == null) {
  7481. msg.prefix(player, prefix_commands, "This player is not online.");
  7482. goto("wait");
  7483. }
  7484. } else {
  7485. p = player;
  7486. }
  7487. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7488. if(world.isGamesName(world_name)) {
  7489. if(player.hasMinigame(p) || (perm.has("fly", p) && !perm.has("isTeam", p))) {
  7490. if(size == 2) {
  7491. msg.prefix(player, prefix_commands, "This player can´t fly now.");
  7492. } else {
  7493. msg.prefix(player, prefix_commands, "You can´t fly now.");
  7494. }
  7495. goto("wait");
  7496. }
  7497. }
  7498. if(size < 2) {
  7499. new_state = player.toggleFly(p);
  7500. } else {
  7501. new_state = false;
  7502. if(list.getIndex(args, 1) == "on") {
  7503. new_state = true;
  7504. }
  7505. player.setFly(p, new_state);
  7506. }
  7507. if(new_state) {
  7508. msg.prefix(p, prefix_commands, "You can fly now.");
  7509. if(player != p) {
  7510. p_name = player.getName(p);
  7511. msg.prefix(player, prefix_commands, string.concat(p_name, " can fly now."));
  7512. }
  7513. } else {
  7514. msg.prefix(p, prefix_commands, "You can´t fly anymore.");
  7515. if(player != p) {
  7516. p_name = player.getName(p);
  7517. msg.prefix(player, prefix_commands, string.concat(p_name, " can´t fly anymore."));
  7518. }
  7519. }
  7520. goto("wait");
  7521. @tppos
  7522. if(size < 3 || size > 5) {
  7523. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  7524. goto("wait");
  7525. }
  7526. x = list.getIndex(args, 0);
  7527. y = list.getIndex(args, 1);
  7528. z = list.getIndex(args, 2);
  7529. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  7530. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  7531. goto("wait");
  7532. }
  7533. if(size >= 4) {
  7534. worldname = list.getIndex(args, 3);
  7535. world = world.get(worldname);
  7536. if(world == null) {
  7537. msg.prefix(player, prefix_commands, "This world is not loaded.");
  7538. goto("wait");
  7539. }
  7540. } else {
  7541. world = loc.getWorld(entity.getLocation(player));
  7542. }
  7543. if(x < -32000) {
  7544. x = -32000;
  7545. } elseif(x > 32000) {
  7546. x = 32000;
  7547. }
  7548. if(y < -64) {
  7549. y = -64;
  7550. } elseif(y > 319) {
  7551. y = 319;
  7552. }
  7553. if(z < -32000) {
  7554. z = -32000;
  7555. } elseif(z > 32000) {
  7556. z = 32000;
  7557. }
  7558. location = loc.new(world, x, y, z);
  7559. if(size == 5) {
  7560. p_name = list.getIndex(args, 4);
  7561. p = read.player(p_name);
  7562. if(p == null) {
  7563. msg.prefix(player, prefix_commands, "This player is not online.");
  7564. goto("wait");
  7565. }
  7566. } else {
  7567. p = player;
  7568. }
  7569. if(player.hasMinigame(p)) {
  7570. if(size == 5) {
  7571. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  7572. goto("wait");
  7573. }
  7574. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  7575. goto("wait");
  7576. }
  7577. if(player.teleport(p, location, true)) {
  7578. if(player != p) {
  7579. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was teleported."));
  7580. }
  7581. }
  7582. goto("wait");
  7583. @back
  7584. if(size > 0) {
  7585. msg.prefix(player, prefix_commands, "/back");
  7586. goto("wait");
  7587. }
  7588. if(!player.canTeleport(player)) {
  7589. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  7590. goto("wait");
  7591. }
  7592. hasPerms = perm.has("isTeam", player);
  7593. if(!hasPerms) {
  7594. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7595. if(world.isGamesName(world_name)) {
  7596. msg.prefix(player, prefix_commands, "You can´t use /back in this world.");
  7597. goto("wait");
  7598. }
  7599. }
  7600. location = player.getBackPos(player);
  7601. if(location == null) {
  7602. msg.prefix(player, prefix_commands, "No back-location available.");
  7603. goto("wait");
  7604. }
  7605. world = loc.getWorld(location);
  7606. if(world == null) {
  7607. msg.prefix(player, prefix_commands, "This world is not loaded.");
  7608. goto("wait");
  7609. }
  7610. if(!hasPerms) {
  7611. world_name = world.getName(world);
  7612. if(world.isGamesName(world_name)) {
  7613. msg.prefix(player, prefix_commands, "You can´t teleport to this world.");
  7614. goto("wait");
  7615. }
  7616. }
  7617. player.teleport(player, location, true);
  7618. goto("wait");
  7619. @clan
  7620. if(size == 0) {
  7621. @clanhelp
  7622. msg.prefix(player, prefix_clan, "/clan...");
  7623. msg.string(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  7624. msg.string(player, "§2 - list §rLists all clans");
  7625. msg.string(player, "");
  7626. msg.string(player, "§2 - create <name> <tag> §rCreates a clan. Costs §64096 §rsnuvis.");
  7627. msg.string(player, "§2 - invite <name> §rInvites a player");
  7628. msg.string(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  7629. msg.string(player, "");
  7630. msg.string(player, "§2 - kick <name> §rKicks a player");
  7631. msg.string(player, "§2 - leader <name> §rPromote to clan-leader");
  7632. msg.string(player, "§2 - mod <name> §rPromote to clan-mod");
  7633. msg.string(player, "§2 - degrade <name> §rDemote a clan-mod");
  7634. msg.string(player, "§2 - leave §rLeave a clan");
  7635. msg.string(player, "");
  7636. msg.string(player, "§2 - rename <name> <tag> §rRenames a clan. Costs §664 §rsnuvis.");
  7637. msg.string(player, "§2 - setspawn §rSets a clan-spawn");
  7638. msg.string(player, "§2 - spawn §rTeleports to clan-spawn");
  7639. msg.string(player, "§2 - disband §rDisband a clan");
  7640. msg.string(player, "");
  7641. msg.string(player, "§2 - deposit <money> §rDeposit money to the clan account");
  7642. msg.string(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  7643. msg.string(player, "§2 - msg <message> §rSends a clan-message");
  7644. msg.string(player, "§2 - mail <message> §rSends a clan-mail");
  7645. msg.string(player, "§2 - shout <message> §rSends a message to all online players. Costs §664 §rsnuvis.");
  7646. msg.string(player, "§2 - party §rInvites all online members to a party");
  7647. goto("wait");
  7648. }
  7649. arg0 = string.toLowerCase(list.getIndex(args, 0));
  7650. if(arg0 == "invite") {
  7651. if(size != 2) {
  7652. msg.prefix(player, prefix_commands, "/clan invite <name>");
  7653. goto("wait");
  7654. }
  7655. if(!player.isInClan(player)) {
  7656. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7657. goto("wait");
  7658. }
  7659. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7660. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7661. goto("wait");
  7662. }
  7663. p_name = list.getIndex(args, 1);
  7664. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  7665. msg.prefix(player, prefix_clan, "You can´t invite yourself.");
  7666. goto("wait");
  7667. }
  7668. if(!checkIfEverOnline(p_name)) {
  7669. msg.prefix(sender, prefix_clan, "This player has never been online.");
  7670. goto("wait");
  7671. }
  7672. if(!isOnline(p_name)) {
  7673. msg.prefix(player, prefix_clan, "This player has to be online.");
  7674. goto("wait");
  7675. }
  7676. p = read.player(p_name);
  7677. if(player.isClanMember(player)) {
  7678. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  7679. goto("wait");
  7680. }
  7681. clan_id = player.getClanId(player);
  7682. p_id = player.getId(p);
  7683. if(player.hasClanInvitation(p_id, clan_id)) {
  7684. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  7685. goto("wait");
  7686. }
  7687. player.addClanInvitation(p_id, clan_id);
  7688. clan_name = clan.getName(clan_id);
  7689. msg.prefix(player, prefix_clan, string.concat("You invited §7", p_name, "§r to your clan."));
  7690. msg.prefix(p, prefix_clan, string.concat("You got an clan invitation by §7", clan_name, "§r."));
  7691. msg.string(p, string.getClickText("§r[§aAccept§r]", string.concat("/clan accept ", clan_id)));
  7692. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  7693. goto("wait");
  7694. }
  7695. if(arg0 == "accept") {
  7696. if(size != 2) {
  7697. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  7698. goto("wait");
  7699. }
  7700. if(player.isInClan(player)) {
  7701. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7702. goto("wait");
  7703. }
  7704. arg1 = list.getIndex(args, 1);
  7705. if(isDouble(arg1)) {
  7706. clan_id = arg1;
  7707. clan_name = clan.getName(clan_id);
  7708. if(clan_name == null) {
  7709. msg.prefix(player, prefix_clan, "Unknown clan.");
  7710. goto("wait");
  7711. }
  7712. } else {
  7713. clan_id = clan.getIdFromName(arg1);
  7714. if(clan_id == null) {
  7715. clan_id = clan.getIdFromTag(arg1);
  7716. if(clan_id == null) {
  7717. msg.prefix(player, prefix_clan, "Unknown clan.");
  7718. goto("wait");
  7719. }
  7720. }
  7721. }
  7722. player_id = player.getId(player);
  7723. if(!player.hasClanInvitation(player_id, clan_id)) {
  7724. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  7725. goto("wait");
  7726. }
  7727. clan.addMember(clan_id, player, "member");
  7728. player.setHeadName(player);
  7729. clan.msg(clan_id, string.concat("§7", player.getName(player), "§r joined the clan."));
  7730. msg.prefix(player, prefix_clan, string.concat("You joined §7", clan_name, "§r."));
  7731. clan_size = clan.getMembersAmount(clan_id);
  7732. if(clan_size >= 15) {
  7733. rank.offerClan(clan_id, "rank.lord");
  7734. } elseif(clan_size >= 10) {
  7735. rank.offerClan(clan_id, "rank.chief");
  7736. } elseif(clan_size >= 5) {
  7737. rank.offerClan(clan_id, "rank.commander");
  7738. }
  7739. goto("wait");
  7740. }
  7741. if(arg0 == "create") {
  7742. if(size != 3) {
  7743. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  7744. goto("wait");
  7745. }
  7746. if(player.isInClan(player)) {
  7747. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7748. goto("wait");
  7749. }
  7750. clan_name = list.getIndex(args, 1);
  7751. if(string.length(clan_name) > 20) {
  7752. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7753. goto("wait");
  7754. }
  7755. if(!string.onlyletters(clan_name)) {
  7756. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7757. goto("wait");
  7758. }
  7759. if(clan.isExistingName(clan_name)) {
  7760. msg.prefix(player, prefix_clan, "This name already exists.");
  7761. goto("wait");
  7762. }
  7763. clan_tag = list.getIndex(args, 2);
  7764. tag_length = string.length(clan_tag);
  7765. if(tag_length < 3 || tag_length > 4) {
  7766. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7767. goto("wait");
  7768. }
  7769. if(!string.onlyletters(clan_tag)) {
  7770. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7771. goto("wait");
  7772. }
  7773. if(clan.isExistingTag(clan_tag)) {
  7774. msg.prefix(player, prefix_clan, "This tag already exists.");
  7775. goto("wait");
  7776. }
  7777. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  7778. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  7779. goto("wait");
  7780. }
  7781. money.sub(player, 4096);
  7782. clan_id = clan.create(clan_name, clan_tag);
  7783. clan.addMember(clan_id, player, "leader");
  7784. player.setHeadName(player);
  7785. msg.prefix(player, prefix_clan, "Clan successful created.");
  7786. goto("wait");
  7787. }
  7788. if(arg0 == "info") {
  7789. if(size == 1) {
  7790. if(!player.isInClan(player)) {
  7791. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  7792. goto("wait");
  7793. }
  7794. clan_id = player.getClanId(player);
  7795. clan_name = clan.getName(clan_id);
  7796. clan_tag = clan.getTag(clan_id);
  7797. }
  7798. if(size == 2) {
  7799. arg1 = list.getIndex(args, 1);
  7800. if(isDouble(arg1)) {
  7801. clan_id = arg1;
  7802. clan_name = clan.getName(clan_id);
  7803. if(clan_name == null) {
  7804. msg.prefix(player, prefix_clan, "Unknown clan.");
  7805. goto("wait");
  7806. }
  7807. } else {
  7808. clan_id = clan.getIdFromName(arg1);
  7809. if(clan_id == null) {
  7810. clan_id = clan.getIdFromTag(arg1);
  7811. if(clan_id == null) {
  7812. msg.prefix(player, prefix_clan, "Unknown clan.");
  7813. goto("wait");
  7814. }
  7815. }
  7816. clan_name = clan.getName(clan_id);
  7817. }
  7818. clan_tag = clan.getTag(clan_id);
  7819. }
  7820. list = clan.getMembersList(clan_id);
  7821. mod_list = list.new();
  7822. members_list = list.new();
  7823. iter = iterator(list);
  7824. while(hasNext(iter)) {
  7825. player_uuid = next(iter);
  7826. player_name = player.getName(player_uuid);
  7827. player_id = player.getId(player_uuid);
  7828. if(player.isClanLeader(player_id)) {
  7829. leader = player_name;
  7830. } else {
  7831. if(player.isClanMod(player_id)) {
  7832. list.add(mod_list, player_name);
  7833. } else {
  7834. list.add(members_list, player_name);
  7835. }
  7836. }
  7837. }
  7838. if(list.getSize(mod_list) == 0) {
  7839. mods = "-";
  7840. } else {
  7841. mods = string.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  7842. }
  7843. if(list.getSize(members_list) == 0) {
  7844. members = "-";
  7845. } else {
  7846. members = string.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  7847. }
  7848. msg.string(player, string.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", string.number(clan_id), ")"));
  7849. msg.string(player, "§6Leader");
  7850. msg.string(player, leader);
  7851. msg.string(player, "§6Mods");
  7852. msg.string(player, mods);
  7853. msg.string(player, "§6Members");
  7854. msg.string(player, members);
  7855. msg.string(player, "§6Money");
  7856. msg.string(player, string.number(clan.getMoney(clan_id)));
  7857. goto("wait");
  7858. }
  7859. if(arg0 == "rename") {
  7860. if(!player.isInClan(player)) {
  7861. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7862. goto("wait");
  7863. }
  7864. if(!player.isClanLeader(player)) {
  7865. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7866. goto("wait");
  7867. }
  7868. if(size != 3) {
  7869. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  7870. goto("wait");
  7871. }
  7872. clan_name = list.getIndex(args, 1);
  7873. if(string.length(clan_name) > 20) {
  7874. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7875. goto("wait");
  7876. }
  7877. if(!string.onlyletters(clan_name)) {
  7878. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7879. goto("wait");
  7880. }
  7881. if(clan.isExistingName(clan_name)) {
  7882. msg.prefix(player, prefix_clan, "This name already exists.");
  7883. goto("wait");
  7884. }
  7885. clan_tag = list.getIndex(args, 2);
  7886. tag_length = string.length(clan_tag);
  7887. if(tag_length < 3 || tag_length > 4) {
  7888. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7889. goto("wait");
  7890. }
  7891. if(!string.onlyletters(clan_tag)) {
  7892. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7893. goto("wait");
  7894. }
  7895. if(clan.isExistingTag(clan_tag)) {
  7896. msg.prefix(player, prefix_clan, "This tag already exists.");
  7897. goto("wait");
  7898. }
  7899. clan_id = player.getClanId(player);
  7900. if(clan.getMoney(clan_id) < 64) {
  7901. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7902. goto("wait");
  7903. }
  7904. clan.subMoney(clan_id, 64);
  7905. clan.setName(clan_id, clan_name);
  7906. clan.setTag(clan_id, clan_tag);
  7907. clan.msg(clan_id, string.concat("Clan renamed to §7", clan_name, "§r."));
  7908. //New tag for online players
  7909. clan.updateHeadNames(clan_id);
  7910. goto("wait");
  7911. }
  7912. if(arg0 == "msg") {
  7913. if(!player.isInClan(player)) {
  7914. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7915. goto("wait");
  7916. }
  7917. if(size < 2) {
  7918. msg.prefix(player, prefix_commands, "/clan msg <message>");
  7919. goto("wait");
  7920. }
  7921. clan_id = player.getClanId(player);
  7922. clan.msg(clan_id, string.concat(player.getName(player), ": ", string.concatList(args, " ", 1, size - 1)));
  7923. goto("wait");
  7924. }
  7925. if(arg0 == "mail") {
  7926. if(!player.isInClan(player)) {
  7927. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7928. goto("wait");
  7929. }
  7930. if(size < 2) {
  7931. msg.prefix(player, prefix_commands, "/clan mail <message>");
  7932. goto("wait");
  7933. }
  7934. if(player.isClanMember(player)) {
  7935. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7936. goto("wait");
  7937. }
  7938. clan_id = player.getClanId(player);
  7939. clan.mail(clan_id, player.getName(player), string.concatList(args, " ", 1, size - 1));
  7940. goto("wait");
  7941. }
  7942. if(arg0 == "shout") {
  7943. if(!player.isInClan(player)) {
  7944. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7945. goto("wait");
  7946. }
  7947. if(size < 2) {
  7948. msg.prefix(player, prefix_commands, "/clan shout <message>");
  7949. goto("wait");
  7950. }
  7951. if(player.isClanMember(player)) {
  7952. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7953. goto("wait");
  7954. }
  7955. clan_id = player.getClanId(player);
  7956. if(clan.getMoney(clan_id) < 64) {
  7957. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7958. goto("wait");
  7959. }
  7960. clan.subMoney(clan_id, 64);
  7961. msg.prefix("online", prefix_clan, string.concat(clan.getTag(clan_id), ": ", string.concatList(args, " ", 1, size - 1)));
  7962. goto("wait");
  7963. }
  7964. if(arg0 == "deposit") {
  7965. if(!player.isInClan(player)) {
  7966. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7967. goto("wait");
  7968. }
  7969. if(size != 2) {
  7970. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  7971. goto("wait");
  7972. }
  7973. money = list.getIndex(args, 1);
  7974. if(!isDouble(money) || money < 0) {
  7975. msg.prefix(player, prefix_clan, "Positive number expected.");
  7976. goto("wait");
  7977. }
  7978. if(!hasEnoughMoney(player, money)) {
  7979. msg.prefix(player, prefix_clan, "You can´t transfer more money than you have.");
  7980. goto("wait");
  7981. }
  7982. clan_id = player.getClanId(player);
  7983. clan.addMoney(clan_id, money);
  7984. money.sub(player, money);
  7985. clan.msg(clan_id, string.concat("§7", player.getName(player), "§r transferred §7", string.number(money), "§r snuvis."));
  7986. goto("wait");
  7987. }
  7988. if(arg0 == "party") {
  7989. counter = 0;
  7990. clan_id = player.getClanId(player);
  7991. list = clan.getMembersList(clan_id);
  7992. iter = iterator(list);
  7993. while(hasNext(iter)) {
  7994. p = player.get(next(iter));
  7995. if(p != null) {
  7996. temp = party.invitePlayer(player, p);
  7997. if(temp == true) {
  7998. counter++;
  7999. }
  8000. }
  8001. }
  8002. msg.prefix(player, prefix_clan, string.concat(string.number(counter), " online clan members invited to a party."));
  8003. goto("wait");
  8004. }
  8005. if(arg0 == "withdraw") {
  8006. if(!player.isInClan(player)) {
  8007. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8008. goto("wait");
  8009. }
  8010. if(!player.isClanLeader(player)) {
  8011. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8012. goto("wait");
  8013. }
  8014. if(size != 2) {
  8015. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  8016. goto("wait");
  8017. }
  8018. money = list.getIndex(args, 1);
  8019. if(!isDouble(money) || money < 0) {
  8020. msg.prefix(player, prefix_clan, "Positive number expected.");
  8021. goto("wait");
  8022. }
  8023. clan_id = player.getClanId(player);
  8024. clan_money = clan.getMoney(clan_id);
  8025. if(clan_money < money) {
  8026. msg.prefix(player, prefix_clan, string.concat("There are only §7", string.number(clan_money), "§r snuvis on the clan account."));
  8027. goto("wait");
  8028. }
  8029. clan.subMoney(clan_id, money);
  8030. money.add(player, money);
  8031. msg.prefix(player, prefix_clan, string.concat("You have withdrawn §7", string.number(money), "§r snuvis."));
  8032. goto("wait");
  8033. }
  8034. if(arg0 == "leader") {
  8035. if(!player.isInClan(player)) {
  8036. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8037. goto("wait");
  8038. }
  8039. if(!player.isClanLeader(player)) {
  8040. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8041. goto("wait");
  8042. }
  8043. if(size != 2) {
  8044. msg.prefix(player, prefix_commands, "/clan leader <name>");
  8045. goto("wait");
  8046. }
  8047. p_name = list.getIndex(args, 1);
  8048. if(!checkIfEverOnline(p_name)) {
  8049. msg.prefix(player, prefix_clan, "This player has never been online.");
  8050. goto("wait");
  8051. }
  8052. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  8053. msg.prefix(player, prefix_clan, "You can´t do this for yourself.");
  8054. goto("wait");
  8055. }
  8056. p_uuid = player.getUuid(p_name);
  8057. p_id = player.getId(p_uuid);
  8058. if(!player.isSameClan(player, p_id)) {
  8059. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  8060. goto("wait");
  8061. }
  8062. player.setClanRole(p_id, "leader");
  8063. player.setClanRole(player, "mod");
  8064. clan_id = player.getClanId(player);
  8065. clan.msg(clan_id, string.concat("§7", p_name, "§r was set to clan leader."));
  8066. goto("wait");
  8067. }
  8068. if(arg0 == "mod") {
  8069. if(!player.isInClan(player)) {
  8070. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8071. goto("wait");
  8072. }
  8073. if(!player.isClanLeader(player)) {
  8074. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8075. goto("wait");
  8076. }
  8077. if(size != 2) {
  8078. msg.prefix(player, prefix_commands, "/clan leader <name>");
  8079. goto("wait");
  8080. }
  8081. p_name = list.getIndex(args, 1);
  8082. if(!checkIfEverOnline(p_name)) {
  8083. msg.prefix(player, prefix_clan, "This player has never been online.");
  8084. goto("wait");
  8085. }
  8086. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  8087. msg.prefix(player, prefix_clan, "You can´t do this for yourself.");
  8088. goto("wait");
  8089. }
  8090. p_uuid = player.getUuid(p_name);
  8091. p_id = player.getId(p_uuid);
  8092. if(!player.isSameClan(player, p_id)) {
  8093. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  8094. goto("wait");
  8095. }
  8096. player.setClanRole(p_id, "mod");
  8097. clan_id = player.getClanId(player);
  8098. clan.msg(clan_id, string.concat("§7", p_name, "§r was set to clan mod."));
  8099. goto("wait");
  8100. }
  8101. if(arg0 == "degrade") {
  8102. if(!player.isInClan(player)) {
  8103. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8104. goto("wait");
  8105. }
  8106. if(!player.isClanLeader(player)) {
  8107. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8108. goto("wait");
  8109. }
  8110. if(size != 2) {
  8111. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  8112. goto("wait");
  8113. }
  8114. p_name = list.getIndex(args, 1);
  8115. if(!checkIfEverOnline(p_name)) {
  8116. msg.prefix(player, prefix_clan, "This player has never been online.");
  8117. goto("wait");
  8118. }
  8119. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  8120. msg.prefix(player, prefix_clan, "You can´t do this for yourself.");
  8121. goto("wait");
  8122. }
  8123. p_uuid = player.getUuid(p_name);
  8124. p_id = player.getId(p_uuid);
  8125. if(!player.isSameClan(player, p_id)) {
  8126. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  8127. goto("wait");
  8128. }
  8129. player.setClanRole(p_id, "member");
  8130. clan_id = player.getClanId(player);
  8131. clan.msg(clan_id, string.concat("§7", p_name, "§r was degraded."));
  8132. goto("wait");
  8133. }
  8134. if(arg0 == "kick") {
  8135. if(!player.isInClan(player)) {
  8136. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8137. goto("wait");
  8138. }
  8139. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  8140. msg.prefix(player, prefix_clan, "You have no permission for this.");
  8141. goto("wait");
  8142. }
  8143. if(size != 2) {
  8144. msg.prefix(player, prefix_commands, "/clan kick <name>");
  8145. goto("wait");
  8146. }
  8147. p_name = list.getIndex(args, 1);
  8148. if(!checkIfEverOnline(p_name)) {
  8149. msg.prefix(player, prefix_clan, "This player has never been online.");
  8150. goto("wait");
  8151. }
  8152. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  8153. msg.prefix(player, prefix_clan, "You can´t do this for yourself.");
  8154. goto("wait");
  8155. }
  8156. p_uuid = player.getUuid(p_name);
  8157. p_id = player.getId(p_uuid);
  8158. if(!player.isSameClan(player, p_id)) {
  8159. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  8160. goto("wait");
  8161. }
  8162. if(player.isClanLeader(p_id)) {
  8163. msg.prefix(player, prefix_clan, "You can´t kick the leader.");
  8164. goto("wait");
  8165. }
  8166. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  8167. msg.prefix(player, prefix_clan, "You can´t kick another mod.");
  8168. goto("wait");
  8169. }
  8170. clan_id = player.getClanId(player);
  8171. clan.msg(clan_id, string.concat("§7", p_name, "§r got kicked out of the clan."));
  8172. clan.removeMember(clan_id, p_id);
  8173. p = read.player(p_name);
  8174. if(p_name != null) {
  8175. player.setHeadName(p);
  8176. }
  8177. goto("wait");
  8178. }
  8179. if(arg0 == "disband") {
  8180. if(!player.isInClan(player)) {
  8181. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8182. goto("wait");
  8183. }
  8184. if(!player.isClanLeader(player)) {
  8185. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8186. goto("wait");
  8187. }
  8188. clan_id = player.getClanId(player);
  8189. clan.msg(clan_id, "Clan disbanded.");
  8190. list = clan.getMembersList(clan_id);
  8191. clan.delete(clan_id);
  8192. iter = iterator(list);
  8193. while(hasNext(iter)) {
  8194. p = player.get(next(iter));
  8195. if(p != null) {
  8196. player.setHeadName(p);
  8197. }
  8198. }
  8199. goto("wait");
  8200. }
  8201. if(arg0 == "leave") {
  8202. if(!player.isInClan(player)) {
  8203. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8204. goto("wait");
  8205. }
  8206. if(player.isClanLeader(player)) {
  8207. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  8208. goto("wait");
  8209. }
  8210. clan_id = player.getClanId(player);
  8211. clan.msg(clan_id, string.concat("§7", player.getName(player), "§r left the clan."));
  8212. clan.removeMember(clan_id, player);
  8213. player.setHeadName(player);
  8214. goto("wait");
  8215. }
  8216. if(arg0 == "list") {
  8217. table = table.new("§b", 2, 6, 4, 5);
  8218. msg.string(player, table.getStart(table));
  8219. msg.string(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  8220. msg.string(player, table.getMiddle(table));
  8221. list = clan.getIdList();
  8222. iter = iterator(list);
  8223. while(hasNext(iter)) {
  8224. clan_id = next(iter);
  8225. name = clan.getName(clan_id);
  8226. tag = clan.getTag(clan_id);
  8227. amount = clan.getMembersAmount(clan_id);
  8228. msg.string(player, table.get(table, string.number(clan_id), name, tag, string.number(amount)));
  8229. }
  8230. msg.string(player, table.getEnd(table));
  8231. goto("wait");
  8232. }
  8233. if(arg0 == "setspawn") {
  8234. if(!player.isInClan(player)) {
  8235. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8236. goto("wait");
  8237. }
  8238. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  8239. msg.prefix(player, prefix_clan, "You have no permission for this.");
  8240. goto("wait");
  8241. }
  8242. clan_id = player.getClanId(player);
  8243. clan.setSpawn(clan_id, entity.getLocation(player));
  8244. msg.prefix(player, prefix_clan, "New clan spawn set.");
  8245. goto("wait");
  8246. }
  8247. if(arg0 == "spawn") {
  8248. if(!player.isInClan(player)) {
  8249. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8250. goto("wait");
  8251. }
  8252. clan_id = player.getClanId(player);
  8253. spawn_loc = clan.getSpawn(clan_id);
  8254. if(spawn_loc == null) {
  8255. msg.prefix(player, prefix_clan, "No clan spawn set.");
  8256. goto("wait");
  8257. }
  8258. if(!perm.has("isTeam", player)) {
  8259. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  8260. if(world.isGamesName(world_name)) {
  8261. msg.prefix(player, prefix_commands, "You can´t teleport in this world.");
  8262. goto("wait");
  8263. }
  8264. }
  8265. player.teleport(player, spawn_loc, true);
  8266. goto("wait");
  8267. }
  8268. goto("clanhelp");
  8269. @remove_clan_invitation
  8270. list.removeIndex(clan_invitations, 0);
  8271. goto("wait");
  8272. @color
  8273. msg.string(player, string.getSpacer());
  8274. msg.string(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  8275. msg.string(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  8276. msg.string(player, " &l §l(bold)");
  8277. msg.string(player, " &m §m(strikethrough)");
  8278. msg.string(player, " &n §n(underline)");
  8279. msg.string(player, " &o §o(italic)");
  8280. goto("wait");
  8281. @comeback
  8282. if(player.isOnAdventure(player)) {
  8283. msg.prefix(player, prefix_skill, "Comeback not allowed during adventure.");
  8284. goto("wait");
  8285. }
  8286. amount = skill.getAmount(player, "skill.comeback");
  8287. if(amount <= 0) {
  8288. msg.prefix(player, prefix_skill, "You have not bought that skill.");
  8289. goto("wait");
  8290. }
  8291. loc = player.getDeathLoc(player);
  8292. if(loc == null) {
  8293. msg.prefix(player, prefix_skill, "No death location found.");
  8294. goto("wait");
  8295. }
  8296. new_amount = amount - 1;
  8297. skill.setAmount(player, "skill.comeback", new_amount);
  8298. msg.prefix(player, prefix_skill, string.concat("Used Comeback. New amount: ", string.number(new_amount)));
  8299. entity.teleport(player, loc);
  8300. player.resetDeathLoc(player);
  8301. goto("wait");
  8302. @setspawn
  8303. if(size != 1) {
  8304. @setspawnhelp
  8305. msg.prefix(player, prefix_commands, "/setspawn ...");
  8306. msg.string(player, "§6 - server");
  8307. msg.string(player, "§6 - games");
  8308. msg.string(player, "§6 - creative");
  8309. goto("wait");
  8310. }
  8311. arg0 = string.toLowerCase(list.getIndex(args, 0));
  8312. new_spawn = string.location(entity.getLocation(player));
  8313. config = getServerConfig();
  8314. if(arg0 == "games") {
  8315. config.set(config, "gamesspawn", new_spawn);
  8316. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  8317. } elseif(arg0 == "server") {
  8318. config.set(config, "serverspawn", new_spawn);
  8319. msg.prefix(player, prefix_commands, "New main Spawn set.");
  8320. } elseif(arg0 == "creative") {
  8321. config.set(config, "creativespawn", new_spawn);
  8322. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  8323. } else {
  8324. goto("setspawnhelp");
  8325. }
  8326. config.saveAsync(config);
  8327. goto("wait");
  8328. @heal
  8329. if(size > 1) {
  8330. msg.prefix(player, prefix_commands, "/heal [player]");
  8331. goto("wait");
  8332. }
  8333. if(size == 0) {
  8334. p = player;
  8335. } elseif(size == 1) {
  8336. p_name = list.getIndex(args, 0);
  8337. p = read.player(p_name);
  8338. if(p == null) {
  8339. msg.prefix(player, prefix_commands, "This player is not online.");
  8340. goto("wait");
  8341. }
  8342. if(player != p) {
  8343. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was healed."));
  8344. }
  8345. }
  8346. living.heal(p, 50);
  8347. player.setHunger(p, 20);
  8348. player.setSaturation(p, 5);
  8349. living.clearEffects(p);
  8350. entity.setBurning(p, 0);
  8351. msg.prefix(p, prefix_commands, "You have been healed.");
  8352. goto("wait");
  8353. @inv
  8354. if(size == 0) {
  8355. @invhelp
  8356. msg.prefix(player, prefix_commands, "/inv ...");
  8357. if(perm.has("inv.backups", player)) {
  8358. msg.string(player, "§6 - backups <player> §rLists backup invs of a player");
  8359. }
  8360. if(perm.has("inv.ignore", player)) {
  8361. msg.string(player, "§6 - ignore §rToggles inventory change on world change");
  8362. }
  8363. if(perm.has("inv.see", player)) {
  8364. msg.string(player, "§6 - see <player> §rOpens an inventory of a player");
  8365. }
  8366. if(perm.has("inv.reload", player)) {
  8367. msg.string(player, "§6 - reload <player> §rReloads an inventory of a player");
  8368. }
  8369. if(perm.has("inv.saveFor", player)) {
  8370. msg.string(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  8371. }
  8372. if(perm.has("inv.loadFrom", player)) {
  8373. msg.string(player, "§6 - loadFrom <player> <world> §rLoads an inventory of a player for you");
  8374. }
  8375. goto("wait");
  8376. }
  8377. arg0 = string.toLowerCase(list.getIndex(args, 0));
  8378. if(arg0 == "backups") {
  8379. if(!perm.has("inv.backups", player)) {
  8380. perm.no("inv.backups", player);
  8381. goto("wait");
  8382. }
  8383. if(size < 2) {
  8384. msg.prefix(player, prefix_commands, "/inv backups <player>");
  8385. goto("wait");
  8386. }
  8387. p_name = list.getIndex(args, 1);
  8388. p_uuid = player.getUuid(p_name);
  8389. if(p_uuid == null) {
  8390. msg.prefix(player, prefix_commands, "This player has never been online.");
  8391. goto("wait");
  8392. }
  8393. player_id = player.getId(p_uuid);
  8394. dir = file.new(string.concat("scripts/configs/inv_data/backup/", player_id));
  8395. if(!file.exists(dir)) {
  8396. msg.prefix(player, prefix_commands, "No backups available.");
  8397. goto("wait");
  8398. }
  8399. file_list = file.getList(dir);
  8400. if(list.getSize(file_list) == 0) {
  8401. msg.prefix(player, prefix_commands, "No backups available.");
  8402. goto("wait");
  8403. }
  8404. f_map = map.new();
  8405. table = table.new("§b", 3, 14);
  8406. msg.string(player, table.getStart(table));
  8407. msg.string(player, table.get(table, "#", p_name));
  8408. msg.string(player, table.getMiddle(table));
  8409. iter = iterator(file_list);
  8410. while(hasNext(iter)) {
  8411. f = next(iter);
  8412. f_name = file.getName(f);
  8413. split_array = string.split("_", f_name);
  8414. time_array = string.split("-", split_array[2]);
  8415. year = time_array[0];
  8416. month = time.getStringFromNumber(read.number(time_array[1]));
  8417. day = time.getStringFromNumber(read.number(time_array[2]));
  8418. hour = time.getStringFromNumber(read.number(time_array[3]));
  8419. minute = time.getStringFromNumber(read.number(time_array[4]));
  8420. second = time.getStringFromNumber(read.number(time_array[5]));
  8421. time_string = string.concat(day, ".", month, ".", year, " ", hour, ":", minute, ":", second);
  8422. map.add(f_map, read.number(split_array[1]), time_string);
  8423. }
  8424. for(i = 1; i <= 10; i++) {
  8425. time_string = map.get(f_map, i);
  8426. msg.string(player, table.get(table, string.number(i), time_string));
  8427. }
  8428. msg.string(player, table.getEnd(table));
  8429. goto("wait");
  8430. }
  8431. if(arg0 == "ignore") {
  8432. if(!perm.has("inv.ignore", player)) {
  8433. perm.no("inv.ignore", player);
  8434. goto("wait");
  8435. }
  8436. ignore = player.hasInvIgnore(player);
  8437. if(ignore == null) {
  8438. ignore = false;
  8439. }
  8440. if(ignore) {
  8441. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  8442. } else {
  8443. msg.prefix(player, prefix_commands, "You´ll keep your inventory on joining another world.");
  8444. }
  8445. player.invIgnore(player, !ignore);
  8446. goto("wait");
  8447. }
  8448. if(arg0 == "see") {
  8449. if(!perm.has("inv.see", player)) {
  8450. perm.no("inv.see", player);
  8451. goto("wait");
  8452. }
  8453. if(size < 2) {
  8454. msg.prefix(player, prefix_commands, "/inv see <player>");
  8455. goto("wait");
  8456. }
  8457. p_name = list.getIndex(args, 1);
  8458. p_uuid = player.getUuid(p_name);
  8459. if(p_uuid == null) {
  8460. msg.prefix(player, prefix_commands, "This player has never been online.");
  8461. goto("wait");
  8462. }
  8463. p = read.player(p_name);
  8464. if(p == null) {
  8465. msg.prefix(player, prefix_commands, "This player is not online.");
  8466. goto("wait");
  8467. }
  8468. inv.show(p, player);
  8469. goto("wait");
  8470. }
  8471. if(arg0 == "reload") {
  8472. if(!perm.has("inv.reload", player)) {
  8473. perm.no("inv.reload", player);
  8474. goto("wait");
  8475. }
  8476. if(size < 2) {
  8477. msg.prefix(player, prefix_commands, "/inv reload <player>");
  8478. goto("wait");
  8479. }
  8480. p_name = list.getIndex(args, 1);
  8481. p_uuid = player.getUuid(p_name);
  8482. if(p_uuid == null) {
  8483. msg.prefix(player, prefix_commands, "This player has never been online.");
  8484. goto("wait");
  8485. }
  8486. p = read.player(p_name);
  8487. if(p == null) {
  8488. msg.prefix(player, prefix_commands, "This player is not online.");
  8489. goto("wait");
  8490. }
  8491. world = loc.getWorld(entity.getLocation(p));
  8492. inv.loadFromPlayer(p, p, world);
  8493. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  8494. goto("wait");
  8495. }
  8496. if(arg0 == "savefor") {
  8497. if(size != 1 && size != 3) {
  8498. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  8499. goto("wait");
  8500. }
  8501. if(size == 1) {
  8502. for_player_or_id = player.getId(player);
  8503. world = loc.getWorld(entity.getLocation(player));
  8504. }
  8505. if(size == 3) {
  8506. if(!perm.has("inv.saveFor", player)) {
  8507. perm.no("inv.saveFor", player);
  8508. goto("wait");
  8509. }
  8510. p_name = list.getIndex(args, 1);
  8511. p_uuid = player.getUuid(p_name);
  8512. if(p_uuid == null) {
  8513. msg.prefix(player, prefix_commands, "This player has never been online.");
  8514. goto("wait");
  8515. }
  8516. p = read.player(p_name);
  8517. if(p != null) {
  8518. msg.prefix(player, prefix_commands, "This player is online. Use /inv see to change this inventory.");
  8519. goto("wait");
  8520. }
  8521. for_player_or_id = player.getId(p_uuid);
  8522. world_name = list.getIndex(args, 2);
  8523. world = world.get(world_name);
  8524. if(world == null) {
  8525. msg.prefix(player, prefix_world, "This world is not loaded.");
  8526. goto("wait");
  8527. }
  8528. }
  8529. inv.saveForPlayer(player, for_player_or_id, world);
  8530. msg.prefix(player, prefix_commands, "Inventory saved.");
  8531. goto("wait");
  8532. }
  8533. if(arg0 == "loadfrom") {
  8534. if(size != 1 && size != 3) {
  8535. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  8536. goto("wait");
  8537. }
  8538. if(size == 1) {
  8539. from_player_or_id = player.getId(player);
  8540. world = loc.getWorld(entity.getLocation(player));
  8541. }
  8542. if(size == 3) {
  8543. if(!perm.has("inv.loadFrom", player)) {
  8544. perm.no("inv.loadFrom", player);
  8545. goto("wait");
  8546. }
  8547. p_name = list.getIndex(args, 1);
  8548. p_uuid = player.getUuid(p_name);
  8549. if(p_uuid == null) {
  8550. msg.prefix(player, prefix_commands, "This player has never been online.");
  8551. goto("wait");
  8552. }
  8553. p = read.player(p_name);
  8554. if(p != null) {
  8555. msg.prefix(player, prefix_commands, "§cThis player is online. Loaded inventory can differ from /inv see!");
  8556. }
  8557. from_player_or_id = player.getId(p_uuid);
  8558. world_name = list.getIndex(args, 2);
  8559. world = world.get(world_name);
  8560. if(world == null) {
  8561. msg.prefix(player, prefix_world, "This world is not loaded.");
  8562. goto("wait");
  8563. }
  8564. }
  8565. inv.loadFromPlayer(player, from_player_or_id, world);
  8566. msg.prefix(player, prefix_commands, "Inventory loaded.");
  8567. goto("wait");
  8568. }
  8569. goto("wait");
  8570. @sponsor
  8571. msg.prefix(sender, prefix_commands, "Be a fancy sponsor and ...");
  8572. msg.string(sender, string.concat(" §a+ §cUse §dcolors §rand §bicons§r", icon.getGoldCoin(), icon.getCraftingTable(), icon.getHeart()));
  8573. msg.string(sender, " §a+ §rEquip your head with §b/hat");
  8574. msg.string(sender, " §a+ §rGet all online players in a party with §b/joinme");
  8575. msg.string(sender, " §a+ §rSet your own §bjoin, leave §rand §bdeath message");
  8576. goto("wait");
  8577. @dev
  8578. if(size == 0) {
  8579. @dev_syntax
  8580. msg.prefix(sender, prefix_commands, "/dev ...");
  8581. msg.string(sender, "§6 - boost §rBoosts you up to the clouds");
  8582. msg.string(sender, "§6 - debug <list/clear> §rManages logged debug messages");
  8583. msg.string(sender, "§6 - entities <world> §rLists all entities in a world");
  8584. msg.string(sender, "§6 - logo §rGives the Mundus Crassus logo on a banner");
  8585. msg.string(sender, "§6 - yeet §rThrows you in sight");
  8586. goto("wait");
  8587. }
  8588. arg0 = string.toLowerCase(list.getIndex(args, 0));
  8589. if(arg0 == "logo") {
  8590. player.giveItem(player, logo);
  8591. goto("wait");
  8592. }
  8593. if(arg0 == "boost") {
  8594. entity.setMotion(player, 0, 5, 0);
  8595. goto("wait");
  8596. }
  8597. if(arg0 == "yeet") {
  8598. if(size != 2){
  8599. msg.prefix(player, prefix_commands, "/dev yeet <strength>");
  8600. goto("wait");
  8601. }
  8602. yeet_strength = list.getIndex(args, 1);
  8603. yeet(player,math.abs(yeet_strength));
  8604. msg.string(player, "§4YEET");
  8605. goto("wait");
  8606. }
  8607. if(arg0 == "debug") {
  8608. arg1 = string.toLowerCase(list.getIndex(args, 1));
  8609. if(arg1 == "list") {
  8610. error_size = debug.getSize();
  8611. if(error_size == 0) {
  8612. msg.prefix(player, prefix_commands, "No debugs logged.");
  8613. goto("wait");
  8614. }
  8615. for(i = 0; i < error_size; i++) {
  8616. msg.string(player, debug.getIndex(i));
  8617. }
  8618. goto("wait");
  8619. }
  8620. if(arg1 == "clear") {
  8621. debug.clear();
  8622. msg.prefix(player, prefix_commands, "All logged debugs deleted.");
  8623. goto("wait");
  8624. }
  8625. goto("wait");
  8626. }
  8627. if(arg0 == "entities") {
  8628. if(size != 2) {
  8629. msg.prefix(player, prefix_commands, "/dev entities <world>");
  8630. goto("wait");
  8631. }
  8632. world_name = string.toLowerCase(list.getIndex(args, 1));
  8633. world = world.get(world_name);
  8634. if(world == null) {
  8635. msg.prefix(player, prefix_world, "This world is not loaded.");
  8636. goto("wait");
  8637. }
  8638. list = world.getEntities(world);
  8639. size = list.getSize(list);
  8640. map = map.new();
  8641. living = 0;
  8642. for(i = 0; i < size; i++) {
  8643. element = list.getIndex(list, i);
  8644. if(isLiving(element)) {
  8645. living++;
  8646. entity_type = entity.getType(element);
  8647. n = map.get(map, entity_type);
  8648. if(n == null) {
  8649. map.add(map, entity_type, 1);
  8650. } else {
  8651. map.add(map, entity_type, n + 1);
  8652. }
  8653. }
  8654. }
  8655. msg.string(player, "§0-------------------------------------------------");
  8656. msg.string(player, string.concat("Living: ", living));
  8657. iter = map.iterator(map);
  8658. table = table.new("§b", 14, 14);
  8659. msg.string(player, table.getStart(table));
  8660. while(hasNext(iter)) {
  8661. element1 = next(iter);
  8662. if(hasNext(iter)) {
  8663. element2 = next(iter);
  8664. } else {
  8665. element2 = "";
  8666. }
  8667. msg.string(player, table.get(table, element1, element2));
  8668. }
  8669. msg.string(player, table.getEnd(table));
  8670. goto("wait");
  8671. }
  8672. goto("dev_syntax");
  8673. function yeet(player, strength){
  8674. array = entity.getLook(player);
  8675. x = array[0] * (math.log(strength) + 1);
  8676. y = math.abs(array[1]) * (math.log(strength) + 1);
  8677. z = array[2] * (math.log(strength) + 1);
  8678. entity.setMotion(player, x, y, z);
  8679. }
  8680. @memory
  8681. msg.prefix(sender, prefix_commands, string.concat("Used RAM: ", string.number(usedMemory()), " / ", string.number(math.round(allocatedMemory())), " MB"));
  8682. goto("wait");
  8683. @world
  8684. if(size == 0) {
  8685. @world_syntax
  8686. msg.prefix(sender, prefix_world, "/world ...");
  8687. msg.string(sender, "§b - info [world] §rShows info about a world");
  8688. msg.string(sender, "§b - tp <world> [player] §rTeleports a player to a world");
  8689. msg.string(sender, "§b - list §rShows all loaded worlds");
  8690. msg.string(sender, "§b - setspawn §rSets the spawn of a world");
  8691. msg.string(sender, "§b - diffi <world> <diffi> §rSets the difficulty of a world");
  8692. goto("wait");
  8693. }
  8694. arg0 = string.toLowerCase(list.getIndex(args, 0));
  8695. if(arg0 == "info") {
  8696. if(size == 1) {
  8697. if(!isPlayer(sender)) {
  8698. msg.string(sender, "Not possible on console.");
  8699. goto("wait");
  8700. }
  8701. world = loc.getWorld(entity.getLocation(player));
  8702. } else {
  8703. worldname = list.getIndex(args, 1);
  8704. world = world.get(worldname);
  8705. if(world == null) {
  8706. msg.prefix(sender, prefix_world, "This world is not loaded.");
  8707. goto("wait");
  8708. }
  8709. }
  8710. msg.string(sender, string.getSpacer());
  8711. msg.string(sender, string.concat("§6World: §r", world.getName(world)));
  8712. msg.string(sender, string.concat("§6Thunder: §r", world.hasThunder(world)));
  8713. msg.string(sender, string.concat("§6Rain: §r", world.hasRain(world)));
  8714. chunks = world.getLoadedChunks(world);
  8715. forced = 0;
  8716. for(i = 0; i < array.getSize(chunks); i++) {
  8717. if(world.isForceLoadedChunk(chunks[i])) {
  8718. forced++;
  8719. }
  8720. }
  8721. msg.string(sender, string.concat("§6Chunks: §r", string.number(forced), "/", string.number(array.getSize(chunks))));
  8722. time = world.getTime(world);
  8723. while(time >= 24000) {
  8724. time -= 24000;
  8725. }
  8726. msg.string(sender, string.concat("§6Time: §r", string.number(time)));
  8727. goto("wait");
  8728. }
  8729. if(arg0 == "tp") {
  8730. if(size < 2 || size > 3) {
  8731. msg.prefix(sender, prefix_world, "/world tp <world> [player]");
  8732. goto("wait");
  8733. }
  8734. if(size >= 2) {
  8735. world_name = string.toLowerCase(list.getIndex(args, 1));
  8736. world = world.get(world_name);
  8737. if(world == null) {
  8738. msg.prefix(sender, prefix_world, "This world is not loaded.");
  8739. goto("wait");
  8740. }
  8741. }
  8742. if(size > 2) {
  8743. p_name = list.getIndex(args, 2);
  8744. p = read.player(p_name);
  8745. if(p == null) {
  8746. msg.prefix(sender, prefix_world, "This player is not online.");
  8747. goto("wait");
  8748. }
  8749. } else {
  8750. if(!isPlayer(sender)) {
  8751. msg.string(sender, "Not possible on console.");
  8752. goto("wait");
  8753. }
  8754. p = sender;
  8755. }
  8756. if(!player.canTeleport(p)) {
  8757. if(size == 3) {
  8758. msg.prefix(sender, prefix_commands, "This player can´t be teleported now.");
  8759. goto("wait");
  8760. }
  8761. msg.prefix(sender, prefix_commands, "You can´t teleport now.");
  8762. goto("wait");
  8763. }
  8764. if(sender != p) {
  8765. msg.prefix(sender, prefix_world, string.concat(player.getName(p), " was teleported to the spawn of the world ", world_name, "."));
  8766. }
  8767. if(world_name == "games") {
  8768. loc = world.getGamesSpawn();
  8769. } elseif(world_name == "creative") {
  8770. loc = world.getCreativeSpawn();
  8771. } else {
  8772. loc = world.getSpawn(world);
  8773. }
  8774. player.teleport(p, loc, true);
  8775. goto("wait");
  8776. }
  8777. if(arg0 == "list") {
  8778. msg.prefix(sender, prefix_world, "Loaded worlds:");
  8779. worldlist = world.getAll();
  8780. for(i = 0; i < list.getSize(worldlist); i++) {
  8781. msg.string(sender, string.concat(" - ", world.getName(list.getIndex(worldlist, i))));
  8782. }
  8783. msg.string(sender, string.getSpacer());
  8784. goto("wait");
  8785. }
  8786. if(arg0 == "setspawn") {
  8787. if(!isPlayer(sender)) {
  8788. msg.string(sender, "Not possible on console.");
  8789. goto("wait");
  8790. }
  8791. location = entity.getLocation(sender);
  8792. world = loc.getWorld(location);
  8793. world.setSpawn(location, world);
  8794. msg.prefix(sender, prefix_world, string.concat("New spawn of the world ", world.getName(world), " set."));
  8795. goto("wait");
  8796. }
  8797. if(arg0 == "diffi") {
  8798. if(size != 3) {
  8799. msg.prefix(sender, prefix_world, "/world diffi <world> <diffi>");
  8800. goto("wait");
  8801. }
  8802. worldname = list.getIndex(args, 1);
  8803. world = world.get(worldname);
  8804. if(world == null) {
  8805. msg.prefix(sender, prefix_world, "This world is not loaded.");
  8806. goto("wait");
  8807. }
  8808. diffi_string = list.getIndex(args, 2);
  8809. if(!(diffi_string == "PEACEFUL" || diffi_string == "EASY" || diffi_string == "NORMAL" || diffi_string == "HARD")) {
  8810. msg.prefix(sender, prefix_world, "False input.");
  8811. goto("wait");
  8812. }
  8813. world.setDifficulty(world, diffi_string);
  8814. msg.prefix(sender, prefix_world, "Difficulty changed.");
  8815. goto("wait");
  8816. }
  8817. goto("world_syntax");
  8818. @giveup
  8819. script_id = quest.getFromPlayer(player);
  8820. if(script_id == null) {
  8821. msg.prefix(player, prefix_quest, "You are not in a quest.");
  8822. goto("wait");
  8823. }
  8824. script = script.getFromId(script_id);
  8825. if(script == null) {
  8826. msg.dev("Player used giveup on corrupt quest");
  8827. quest.removePlayer(player); //in case of corrupt quest
  8828. msg.prefix(player, prefix_quest, "You have no quest.");
  8829. goto("wait");
  8830. }
  8831. setScriptVar("player", player);
  8832. modTimer.scriptCallEvent("quest_term", script);
  8833. quest.term(script, player);
  8834. msg.prefix(player, prefix_quest, "Quest termed.");
  8835. goto("wait");
  8836. @leave
  8837. set = player.getMinigameIds(player);
  8838. iter = iterator(set);
  8839. if(hasNext(iter)) {
  8840. script_id = next(iter);
  8841. script = script.getFromId(script_id);
  8842. if(script == null) {
  8843. msg.dev(string.concat("Player left game without existing gamescript ", set));
  8844. msg.prefix(player, prefix_commands, "An error occured and some displays may not have been reset. So please panic and call for an admin! No, please don´t do that.");
  8845. player.resetMinigames(player);
  8846. entity.teleport(player, world.getGamesSpawn());
  8847. goto("wait");
  8848. }
  8849. minigame.hub(script, player);
  8850. goto("wait");
  8851. }
  8852. msg.prefix(player, "§dScript", "You are not in a minigame.");
  8853. goto("wait");
  8854. function minigame.hub(script, player) {
  8855. script.setVar(script, "player", player);
  8856. modTimer.scriptCallEvent("player_giveup", script);
  8857. }
  8858. @jail
  8859. if(size != 1) {
  8860. msg.prefix(player, prefix_commands, "/jail <player>");
  8861. } else {
  8862. p_name = list.getIndex(args, 0);
  8863. if(!checkIfEverOnline(p_name)) {
  8864. msg.prefix(player, prefix_jail, "This player has never been online.");
  8865. goto("wait");
  8866. }
  8867. p_uuid = player.getUuid(p_name);
  8868. if(isJailed(p_uuid)) {
  8869. msg.prefix(player, prefix_jail, "This player is already jailed.");
  8870. goto("wait");
  8871. }
  8872. player_name = player.getName(player);
  8873. if(player_name == p_name) {
  8874. msg.prefix(player, prefix_jail, "Self-Jailing isn´t a good idea.");
  8875. goto("wait");
  8876. }
  8877. if(!isOnline(p_name)) {
  8878. msg.prefix(player, prefix_jail, "This player is not online.");
  8879. goto("wait");
  8880. }
  8881. p = read.player(p_name);
  8882. if(perm.has("jail", p)) {
  8883. msg.prefix(player, prefix_jail, "You can´t jail this player.");
  8884. goto("wait");
  8885. }
  8886. list.add(jailed_list, p_uuid);
  8887. msg.prefix(player, prefix_jail, string.concat(p_name, " wurde gejailt"));
  8888. showJail(p_name);
  8889. if(!jail_loop_active) {
  8890. sgoto(5, "jailloop");
  8891. }
  8892. }
  8893. goto("wait");
  8894. @unjail
  8895. if(size != 1) {
  8896. msg.prefix(player, prefix_commands, "/unjail <player>");
  8897. } else {
  8898. p_name = list.getIndex(args, 0);
  8899. if(!checkIfEverOnline(p_name)) {
  8900. msg.prefix(player, prefix_jail, "This player has never been online.");
  8901. goto("wait");
  8902. }
  8903. p_uuid = player.getUuid(p_name);
  8904. if(!isJailed(p_uuid)) {
  8905. msg.prefix(player, prefix_jail, "This player is not jailed.");
  8906. goto("wait");
  8907. }
  8908. list.remove(jailed_list, p_uuid);
  8909. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  8910. }
  8911. goto("wait");
  8912. function inv.show(from_player, to_player) {
  8913. player_inv = player.getInv(from_player);
  8914. inv = inv.new("222222222222222222222222222222222222222222222", text.new(string.concat("Inventory of ", player.getName(from_player))));
  8915. set.add($invseeids, inv.getId(inv));
  8916. setInvItem(inv, 0, living.getEquip(from_player, read.slot("HEAD")));
  8917. setInvItem(inv, 1, living.getEquip(from_player, read.slot("CHEST")));
  8918. setInvItem(inv, 2, living.getEquip(from_player, read.slot("LEGS")));
  8919. setInvItem(inv, 3, living.getEquip(from_player, read.slot("FEET")));
  8920. setInvItem(inv, 4, living.getOffHand(from_player));
  8921. for(slot = 0; slot <= 8; slot++) {
  8922. setInvItem(inv, slot + 36, inv.getItem(player_inv, slot));
  8923. }
  8924. for(slot = 9; slot <= 35; slot++) {
  8925. setInvItem(inv, slot, inv.getItem(player_inv, slot));
  8926. }
  8927. inv.open(inv, to_player);
  8928. }
  8929. function setInvItem(inv, slot, item) {
  8930. if(item == null || item.isAir(item)) {
  8931. return;
  8932. }
  8933. inv.setItem(inv, slot, item);
  8934. }
  8935. function rank.add(index, tech_rank, chat_rank) {
  8936. $rank_array[index, 0] = tech_rank;
  8937. $rank_array[index, 1] = chat_rank;
  8938. }
  8939. //--------------------------------------------------
  8940. //Vote-Utils
  8941. //--------------------------------------------------
  8942. function vote.register(name, time) {
  8943. uuid = player.getUuid(name);
  8944. if(uuid == null) {
  8945. stmt = databank.prepare("INSERT INTO votes (name, time) VALUES(?,?);");
  8946. databank.setString(stmt, 1, name);
  8947. databank.setLong(stmt, 2, time);
  8948. databank.workerExecute(stmt);
  8949. return;
  8950. }
  8951. stmt = databank.prepare("INSERT INTO votes (name, player_id, time) VALUES(?,?,?);");
  8952. id = player.getId(uuid);
  8953. databank.setString(stmt, 1, name);
  8954. databank.setInt(stmt, 2, id);
  8955. databank.setLong(stmt, 3, time);
  8956. databank.workerExecute(stmt);
  8957. }
  8958. //--------------------------------------------------
  8959. //LoginRequests-Utils
  8960. //--------------------------------------------------
  8961. function loginrequests.getPlayer(player_id, amount, result) {
  8962. list = list.new();
  8963. if(result == null) {
  8964. stmt = databank.prepare("SELECT player_id,time,result FROM login_requests WHERE player_id = ? ORDER BY TIME DESC LIMIT ?;");
  8965. databank.setInt(stmt, 1, player_id);
  8966. databank.setInt(stmt, 2, amount);
  8967. } else {
  8968. stmt = databank.prepare("SELECT player_id,time,result FROM login_requests WHERE player_id = ? AND result = ? ORDER BY TIME DESC LIMIT ?;");
  8969. databank.setInt(stmt, 1, player_id);
  8970. databank.setString(stmt, 2, result);
  8971. databank.setInt(stmt, 3, amount);
  8972. }
  8973. result = databank.execute(stmt);
  8974. while(databank.next(result)) {
  8975. a = array.new(3);
  8976. a[0] = databank.getInt(result, 1); //player_id
  8977. a[1] = databank.getLong(result, 2); //time
  8978. a[2] = databank.getString(result, 3); //result
  8979. list.add(list, a);
  8980. }
  8981. databank.close(stmt);
  8982. databank.close(result);
  8983. return list;
  8984. }
  8985. function loginrequests.getAll(amount, result) {
  8986. list = list.new();
  8987. if(result == null) {
  8988. stmt = databank.prepare("SELECT player_id,time,result FROM login_requests ORDER BY TIME DESC LIMIT ?;");
  8989. databank.setInt(stmt, 1, amount);
  8990. } else {
  8991. stmt = databank.prepare("SELECT player_id,time,result FROM login_requests WHERE result = ? ORDER BY TIME DESC LIMIT ?;");
  8992. databank.setString(stmt, 1, result);
  8993. databank.setInt(stmt, 2, amount);
  8994. }
  8995. result = databank.execute(stmt);
  8996. while(databank.next(result)) {
  8997. a = array.new(3);
  8998. a[0] = databank.getInt(result, 1); //player_id
  8999. a[1] = databank.getLong(result, 2); //time
  9000. a[2] = databank.getString(result, 3); //result
  9001. list.add(list, a);
  9002. }
  9003. databank.close(stmt);
  9004. databank.close(result);
  9005. return list;
  9006. }
  9007. //--------------------------------------------------
  9008. //Tip-Utils
  9009. //--------------------------------------------------
  9010. function tip.setLoop(tipp_key, boolean) {
  9011. stmt = databank.prepare("UPDATE tipps SET tipp_loop = ? WHERE tipp_key = ?;");
  9012. databank.setBool(stmt, 1, boolean);
  9013. databank.setString(stmt, 2, tipp_key);
  9014. databank.workerExecute(stmt);
  9015. }
  9016. function tip.remove(tipp_key) {
  9017. stmt = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  9018. databank.setString(stmt, 1, tipp_key);
  9019. databank.workerExecute(stmt);
  9020. }
  9021. function tip.getAll() {
  9022. list = list.new();
  9023. stmt = databank.prepare("SELECT * FROM tipps;");
  9024. result = databank.execute(stmt);
  9025. while(databank.next(result)) {
  9026. a = array.new(3);
  9027. a[0] = databank.getString(result, 1);
  9028. a[1] = databank.getString(result, 2);
  9029. a[2] = databank.getBool(result, 3);
  9030. list.add(list, a);
  9031. }
  9032. databank.close(stmt);
  9033. databank.close(result);
  9034. return list;
  9035. }
  9036. //--------------------------------------------------
  9037. //Databank-Utils
  9038. //--------------------------------------------------
  9039. function databank.isExistingTable(table) {
  9040. temp = false;
  9041. stmt = databank.prepare("SHOW TABLES");
  9042. result = databank.execute(stmt);
  9043. while(databank.next(result)) {
  9044. if(table == databank.getString(result, 1)) {
  9045. temp = true;
  9046. break;
  9047. }
  9048. }
  9049. databank.close(result);
  9050. databank.close(stmt);
  9051. return temp;
  9052. }
  9053. function databank.getTableFields(table) {
  9054. fields = list.new();
  9055. stmt = databank.prepare(string.concat("SHOW FIELDS FROM ", table));
  9056. result = databank.execute(stmt);
  9057. while(databank.next(result)) {
  9058. list.add(fields, databank.getString(result, 1));
  9059. }
  9060. databank.close(result);
  9061. databank.close(stmt);
  9062. return fields;
  9063. }
  9064. function databank.getTableDatatypes(table) {
  9065. stmt = databank.prepare(string.concat("SHOW CREATE TABLE ", table));
  9066. result = databank.execute(stmt);
  9067. if(databank.next(result)) {
  9068. temp = databank.getString(result, 2);
  9069. }
  9070. databank.close(result);
  9071. databank.close(stmt);
  9072. return temp;
  9073. }
  9074. //--------------------------------------------------
  9075. //Tipp-Utils
  9076. //--------------------------------------------------
  9077. function tipp.register(tipp_key, tipp_value) {
  9078. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  9079. databank.setString(stmt, 1, tipp_key);
  9080. databank.setString(stmt, 2, tipp_value);
  9081. databank.setString(stmt, 3, tipp_value);
  9082. databank.workerExecute(stmt);
  9083. }
  9084. function tipp.get(tipp_key) {
  9085. tipp_value = null;
  9086. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  9087. databank.setString(stmt, 1, tipp_key);
  9088. result = databank.execute(stmt);
  9089. if(databank.next(result)) {
  9090. tipp_value = databank.getString(result, 1);
  9091. }
  9092. databank.close(result);
  9093. databank.close(stmt);
  9094. return tipp_value;
  9095. }
  9096. function tipp.exists(tipp_key) {
  9097. stmt = databank.prepare("SELECT tipp_key FROM tipps WHERE tipp_key = ?;");
  9098. databank.setString(stmt, 1, tipp_key);
  9099. result = databank.execute(stmt);
  9100. temp = false;
  9101. if(databank.next(result)) {
  9102. temp = true;
  9103. }
  9104. databank.close(result);
  9105. databank.close(stmt);
  9106. return temp;
  9107. }
  9108. //--------------------------------------------------
  9109. //Warp-Utils
  9110. //--------------------------------------------------
  9111. function warp.create(warp_name, location) {
  9112. config = config.new(string.concat("scripts/configs/warps"), warp_name);
  9113. config.set(config, "world", world.getName(loc.getWorld(location)));
  9114. config.set(config, "x", loc.getX(location));
  9115. config.set(config, "y", loc.getY(location));
  9116. config.set(config, "z", loc.getZ(location));
  9117. config.set(config, "yaw", loc.getYaw(location));
  9118. config.set(config, "pitch", loc.getPitch(location));
  9119. config.saveAsync(config);
  9120. }
  9121. function warp.exists(warp_name) {
  9122. config = config.new(string.concat("scripts/configs/warps"), warp_name);
  9123. return config.exists(config);
  9124. }
  9125. function warp.get(warp_name) {
  9126. config = config.new(string.concat("scripts/configs/warps"), warp_name);
  9127. if(config.exists(config)) {
  9128. config.load(config);
  9129. }
  9130. world_name = config.getString(config, "world", "null");
  9131. if(world_name == "null") {
  9132. return null;
  9133. }
  9134. world = world.get(world_name);
  9135. x = config.getDouble(config, "x", 0);
  9136. y = config.getDouble(config, "y", 100);
  9137. z = config.getDouble(config, "z", 0);
  9138. yaw = config.getDouble(config, "yaw", 0);
  9139. pitch = config.getDouble(config, "pitch", 0);
  9140. return loc.new(world, x, y, z, yaw, pitch);
  9141. }
  9142. function warp.delete(warp_name) {
  9143. config = config.new(string.concat("scripts/configs/warps"), warp_name);
  9144. if(!config.exists(config)) {
  9145. return false;
  9146. }
  9147. config.delete(config);
  9148. return true;
  9149. }
  9150. function warp.getList() {
  9151. dir = file.new(string.concat("scripts/configs/warps"));
  9152. warps_list = list.new();
  9153. if(file.exists(dir)) {
  9154. file_list = file.getList(dir);
  9155. iter = iterator(file_list);
  9156. while(hasNext(iter)) {
  9157. warp = file.getName(next(iter));
  9158. warp = string.replace(warp, ".snuvic", "");
  9159. list.add(warps_list, warp);
  9160. }
  9161. }
  9162. return warps_list;
  9163. }
  9164. //--------------------------------------------------
  9165. //Home-Utils
  9166. //--------------------------------------------------
  9167. function home.set(player_id, home_name, location) {
  9168. stmt = databank.prepare("INSERT INTO new_homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  9169. databank.setInt(stmt, 1, player_id);
  9170. databank.setString(stmt, 2, home_name);
  9171. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  9172. databank.setInt(stmt, 4, loc.getX(location));
  9173. databank.setInt(stmt, 5, loc.getY(location));
  9174. databank.setInt(stmt, 6, loc.getZ(location));
  9175. databank.setInt(stmt, 7, loc.getYaw(location));
  9176. databank.setInt(stmt, 8, loc.getPitch(location));
  9177. databank.workerExecute(stmt);
  9178. }
  9179. function home.delete(player_id, home_name) {
  9180. stmt = databank.prepare("DELETE FROM new_homes WHERE player_id = ? AND name = ?;");
  9181. databank.setInt(stmt, 1, player_id);
  9182. databank.setString(stmt, 2, home_name);
  9183. databank.workerExecute(stmt);
  9184. }
  9185. function home.getLocation(player_id, home_name) {
  9186. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM new_homes WHERE player_id = ? AND name = ?;");
  9187. databank.setInt(stmt, 1, player_id);
  9188. databank.setString(stmt, 2, home_name);
  9189. result = databank.execute(stmt);
  9190. if(databank.next(result)) {
  9191. world = world.get(databank.getString(result, 1));
  9192. if(world == null) {
  9193. return null;
  9194. }
  9195. x = databank.getDouble(result, 2);
  9196. y = databank.getDouble(result, 3);
  9197. z = databank.getDouble(result, 4);
  9198. yaw = databank.getDouble(result, 5);
  9199. pitch = databank.getDouble(result, 6);
  9200. location = loc.new(world, x, y, z, yaw, pitch);
  9201. }
  9202. databank.close(result);
  9203. databank.close(stmt);
  9204. return location;
  9205. }
  9206. function home.exists(player_id, home_name) {
  9207. stmt = databank.prepare("SELECT player_id FROM new_homes WHERE player_id = ? AND name = ?;");
  9208. databank.setInt(stmt, 1, player_id);
  9209. databank.setString(stmt, 2, home_name);
  9210. result = databank.execute(stmt);
  9211. if(databank.next(result)) {
  9212. temp = true;
  9213. } else {
  9214. temp = false;
  9215. }
  9216. databank.close(result);
  9217. databank.close(stmt);
  9218. return temp;
  9219. }
  9220. function home.getList(player_id) {
  9221. homes_list = list.new();
  9222. stmt = databank.prepare("SELECT name FROM new_homes WHERE player_id = ?;");
  9223. databank.setInt(stmt, 1, player_id);
  9224. result = databank.execute(stmt);
  9225. while(databank.next(result)) {
  9226. list.add(homes_list, databank.getString(result, 1));
  9227. }
  9228. databank.close(result);
  9229. databank.close(stmt);
  9230. return homes_list;
  9231. }
  9232. function hasTpaRequest(player_uuid, aim_uuid) {
  9233. for(i = 0; i < list.getSize($tpa_request); i++) {
  9234. array = list.getIndex($tpa_request, i);
  9235. if(array[0] == player_uuid && array[1] == aim_uuid) {
  9236. list.removeIndex($tpa_request, i);
  9237. return true;
  9238. }
  9239. }
  9240. return false;
  9241. }
  9242. function addTpaRequest(player_uuid, aim_uuid) {
  9243. array = array.new(2);
  9244. array[0] = player_uuid;
  9245. array[1] = aim_uuid;
  9246. list.add($tpa_request, array);
  9247. }
  9248. function showJail(player_name) {
  9249. if(isOnline(player_name)) {
  9250. inv.open($jailmenu, read.player(player_name));
  9251. }
  9252. }
  9253. function isJailed(player_uuid) {
  9254. return(list.contains($jailed_list, player_uuid));
  9255. }
  9256. function command.register(command, description) {
  9257. command.add(command);
  9258. list.add($command_list, command);
  9259. map.add($command_map, command, description);
  9260. }
  9261. function command.registerAlias(alias, command) {
  9262. command.add(alias);
  9263. map.add($alias_map, alias, command);
  9264. }
  9265. //--------------------------------------------------
  9266. //Time-Utils
  9267. //--------------------------------------------------
  9268. //Spielzeit aller Online-Spieler
  9269. function playtime.getTotalOnlineMinutes() {
  9270. minutes = 0;
  9271. iter = iterator(players.toList());
  9272. while(hasNext(iter)) {
  9273. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  9274. }
  9275. return minutes;
  9276. }
  9277. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  9278. function playtime.getInterval(from_cal, to_cal) {
  9279. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  9280. databank.setLong(stmt, 1, time.from(from_cal));
  9281. databank.setLong(stmt, 2, time.from(to_cal));
  9282. result = databank.execute(stmt);
  9283. if(databank.next(result)) {
  9284. minutes = databank.getLong(result, 1) / 1000 / 60;
  9285. } else {
  9286. minutes = 0;
  9287. }
  9288. databank.close(result);
  9289. databank.close(stmt);
  9290. return minutes;
  9291. }
  9292. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  9293. function playtime.getTotal() {
  9294. minutes = playtime.getTotalOnlineMinutes();
  9295. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  9296. result = databank.execute(stmt);
  9297. if(databank.next(result)) {
  9298. minutes += databank.getLong(result, 1) / 1000 / 60;
  9299. }
  9300. databank.close(result);
  9301. databank.close(stmt);
  9302. return minutes;
  9303. }
  9304. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  9305. function playtime.getPlayerInterval(player_id, from_cal, to_cal) {
  9306. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  9307. databank.setInt(stmt, 1, player_id);
  9308. databank.setLong(stmt, 2, time.from(from_cal));
  9309. databank.setLong(stmt, 3, time.from(to_cal));
  9310. result = databank.execute(stmt);
  9311. if(databank.next(result)) {
  9312. minutes = databank.getLong(result, 1) / 1000 / 60;
  9313. } else {
  9314. minutes = 0;
  9315. }
  9316. databank.close(result);
  9317. databank.close(stmt);
  9318. return minutes;
  9319. }
  9320. function playtime.getPlayersPerInterval(from_cal, to_cal) {
  9321. set = set.new();
  9322. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  9323. databank.setLong(stmt, 1, time.from(from_cal));
  9324. databank.setLong(stmt, 2, time.from(to_cal));
  9325. result = databank.execute(stmt);
  9326. while(databank.next(result)) {
  9327. set.add(set, databank.getInt(result, 1));
  9328. }
  9329. databank.close(result);
  9330. databank.close(stmt);
  9331. return set.getSize(set);
  9332. }
  9333. function time.getYearDays(year) {
  9334. days = 365;
  9335. if(year % 4 == 0) {
  9336. days++;
  9337. }
  9338. return days;
  9339. }
  9340. function time.getMonthDays(month, year) {
  9341. days = month.getDays(month);
  9342. //Schaltjahre
  9343. if(month == 2 && year % 4 == 0) {
  9344. days++;
  9345. }
  9346. return days;
  9347. }
  9348. function month.register(month_index, shortname, days) {
  9349. $month_array[month_index, 0] = shortname;
  9350. $month_array[month_index, 1] = days;
  9351. }
  9352. function month.getShortName(month) {
  9353. return $month_array[month - 1, 0];
  9354. }
  9355. function month.getDays(month) {
  9356. return $month_array[month - 1, 1];
  9357. }
  9358. //--------------------------------------------------
  9359. //Player-Utils
  9360. //--------------------------------------------------
  9361. function player.hasClanInvitation(player_or_id, clan_id) {
  9362. if(isPlayer(player_or_id)) {
  9363. player_id = player.getId(player_or_id);
  9364. } else {
  9365. player_id = player_or_id;
  9366. }
  9367. iter = iterator($clan_invitations);
  9368. while(hasNext(iter)) {
  9369. invitation = next(iter);
  9370. p_id = invitation[0];
  9371. c_id = invitation[1];
  9372. if(player_id == p_id && clan_id == c_id) {
  9373. return true;
  9374. }
  9375. }
  9376. return false;
  9377. }
  9378. function player.addClanInvitation(player_id, clan_id) {
  9379. invitation = array.new(2);
  9380. invitation[0] = player_id;
  9381. invitation[1] = clan_id;
  9382. list.add($clan_invitations, invitation);
  9383. }
  9384. //--------------------------------------------------
  9385. //Party-Utils
  9386. //--------------------------------------------------
  9387. function party.invitePlayer(inviter, invitee) {
  9388. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  9389. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  9390. //Ansonsten neue Party-ID vergeben.
  9391. inviter_uuid = player.getUuid(inviter);
  9392. if(player.isInParty(inviter)) {
  9393. party_id = player.getPartyId(inviter);
  9394. } else {
  9395. party_id = map.get($party_invite_ids, inviter_uuid);
  9396. if(party_id == null) {
  9397. party_id = ++$party_counter;
  9398. }
  9399. }
  9400. if(invitee == null) {
  9401. return "inviteeNotOnline";
  9402. }
  9403. if(inviter == invitee) {
  9404. return "inviterEqualsInvitee";
  9405. }
  9406. if(player.isInParty(inviter)) {
  9407. if(!player.isPartyLeaderOrMod(inviter)) {
  9408. return "inviterNotPermitted";
  9409. }
  9410. }
  9411. if(player.isInParty(invitee)) {
  9412. return "inviteeAlreadyInParty";
  9413. }
  9414. invitee_uuid = player.getUuid(invitee);
  9415. list = map.get($party_invitations, invitee_uuid);
  9416. if(list == null) {
  9417. list = list.new();
  9418. map.add($party_invitations, invitee_uuid, list);
  9419. }
  9420. if(list.contains(list, inviter_uuid)) {
  9421. return "inviteeAlreadyInvited";
  9422. }
  9423. list.add(list, inviter_uuid);
  9424. list.add($deluuid, inviter_uuid);
  9425. list.add($delkeytime, time.getMillis());
  9426. list = map.get($delkeytimes, invitee_uuid);
  9427. if(list == null) {
  9428. list = list.new();
  9429. map.add($delkeytimes, invitee_uuid, list);
  9430. }
  9431. list.add(list, time.getMillis());
  9432. map.add($party_invite_ids, inviter_uuid, party_id);
  9433. inviter_name = player.getName(inviter);
  9434. msg.prefix(invitee, $prefix_party, string.concat(inviter_name, " invites you to a party."));
  9435. msg(invitee, text.merge(text.new(" §5=> §rAccept ? "), string.getClickText("[§aYes§r] ", string.concat("/party accept ", inviter_name)), string.getClickText("[§cNo§r]", string.concat("/party deny ", inviter_name))));
  9436. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  9437. return true;
  9438. }
  9439. function party.kickPlayer(player, reason) {
  9440. party_id = player.getPartyId(player);
  9441. //Nachrichten
  9442. player_name = player.getName(player);
  9443. if(reason == "kick") {
  9444. message = string.concat("§r", player_name, " has been kicked out of the party.");
  9445. } else {
  9446. message = string.concat("§r", player_name, " has left the party.");
  9447. }
  9448. party.sendMessage(party_id, message);
  9449. player_uuid = player.getUuid(player_name);
  9450. //aus Partyliste entfernen
  9451. party_list = party.getList(party_id);
  9452. list.remove(party_list, player_uuid);
  9453. //ID und Rang entfernen
  9454. rank = player.getPartyRank(player);
  9455. player.delPartyRank(player);
  9456. player.delPartyId(player);
  9457. //Einladungen löschen
  9458. map.remove($party_invitations, player_uuid);
  9459. map.remove($delkeytimes, player_uuid);
  9460. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  9461. if(list.getSize(party_list) < 2) {
  9462. party.delete(party_id);
  9463. return;
  9464. }
  9465. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  9466. if(rank == "Leader") {
  9467. new_player = player.get(list.getIndex(party_list, 0));
  9468. player.setPartyRank(new_player, "Leader");
  9469. party.sendMessage(party_id, string.concat("§r", player.getName(new_player), " is now Leader."));
  9470. }
  9471. }
  9472. function party.sendMessage(party_id, message) {
  9473. iter = iterator(party.getList(party_id));
  9474. while(hasNext(iter)) {
  9475. msg.prefix(player.get(next(iter)), $prefix_party, message);
  9476. }
  9477. }
  9478. function party.delete(party_id) {
  9479. party.sendMessage(party_id, "Party disbanded.");
  9480. iter = iterator(party.getList(party_id));
  9481. while(hasNext(iter)) {
  9482. player = player.get(next(iter));
  9483. player.delPartyRank(player);
  9484. player.delPartyId(player);
  9485. }
  9486. }
  9487. @deletePartyInvitation
  9488. player_uuid = list.getIndex(deluuid, 0);
  9489. invitations = map.get(party_invitations, player_uuid);
  9490. keytimes = map.get(delkeytimes, player_uuid);
  9491. if(invitations != null) {
  9492. if(list.getSize(invitations) != 0) {
  9493. keytime = list.getIndex(delkeytime, 0);
  9494. keytime2 = list.getIndex(keytimes, 0);
  9495. list.remove(delkeytime, keytime);
  9496. if(keytime == keytime2) {
  9497. index = list.getIndexOf(keytimes, keytime2);
  9498. list.remove(keytimes, keytime2);
  9499. list.removeIndex(invitations, index);
  9500. }
  9501. }
  9502. }
  9503. goto("wait");
  9504. //--------------------------------------------------
  9505. //Plot-Utils
  9506. //--------------------------------------------------
  9507. function plot.registerMoveEvents(world) {
  9508. if(world == null) {
  9509. return;
  9510. }
  9511. iter = plot.iterator(world);
  9512. while(hasNext(iter)) {
  9513. plot = next(iter);
  9514. plot.setMoveEvent(plot, world);
  9515. }
  9516. }
  9517. function plot.delMoveEvent(plot) {
  9518. plot_id = plot.getId(plot);
  9519. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  9520. a = list.getIndex($plot_move_ids_list, i);
  9521. if(a[1] == plot_id) {
  9522. event.removeMoveData(a[0]);
  9523. list.removeIndex($plot_move_ids_list, i);
  9524. break;
  9525. }
  9526. }
  9527. }
  9528. function plot.setMoveEvent(plot, world) {
  9529. if(!plot.isCity(plot) && !plot.isPlot(plot)) {
  9530. return;
  9531. }
  9532. x1 = plot.getMinX(plot);
  9533. y1 = plot.getMinY(plot);
  9534. z1 = plot.getMinZ(plot);
  9535. x2 = plot.getMaxX(plot);
  9536. y2 = plot.getMaxY(plot);
  9537. z2 = plot.getMaxZ(plot);
  9538. loc1 = loc.new(world, x1, y1, z1);
  9539. loc2 = loc.new(world, x2, y2, z2);
  9540. move_id = event.addMoveData(loc1, loc2, 100, -1);
  9541. plot_id = plot.getId(plot);
  9542. a = array.new(2);
  9543. a[0] = move_id;
  9544. a[1] = plot_id;
  9545. list.add($plot_move_ids_list, a);
  9546. }
  9547. function plot.getPlotIdFromMoveId(move_id) {
  9548. iter = iterator($plot_move_ids_list);
  9549. while(hasNext(iter)) {
  9550. a = next(iter);
  9551. if(a[0] == move_id) {
  9552. return a[1];
  9553. }
  9554. }
  9555. return null;
  9556. }
  9557. function plot.getMoveIdFromPlotId(plot_id) {
  9558. iter = iterator($plot_move_ids_list);
  9559. while(hasNext(iter)) {
  9560. a = next(iter);
  9561. if(a[1] == plot_id) {
  9562. return a[0];
  9563. }
  9564. }
  9565. return null;
  9566. }
  9567. @checkForPlot
  9568. player_uuid = list.getIndex(check_for_plot_list, 0);
  9569. list.removeIndex(check_for_plot_list, 0);
  9570. player = player.get(player_uuid);
  9571. if(player == null) {
  9572. map.remove(actual_move_id, player_uuid);
  9573. goto("wait");
  9574. }
  9575. player_loc = entity.getLocation(player);
  9576. plot_list = plot.get(player_loc);
  9577. if(list.getSize(plot_list) == 0) {
  9578. map.remove(actual_move_id, player_uuid);
  9579. } else {
  9580. list.add(check_for_plot_list, player_uuid);
  9581. sgoto(100, "checkForPlot");
  9582. }
  9583. goto("wait");
  9584. function tpBottom(player) {
  9585. player_loc = entity.getLocation(player);
  9586. y = loc.getY(player_loc);
  9587. while(y > -64 && block.isAir(block.get(player_loc))) {
  9588. loc.setY(player_loc, y);
  9589. y--;
  9590. }
  9591. if(y <= 0) {
  9592. return;
  9593. }
  9594. loc.addY(player_loc, 1);
  9595. entity.teleport(player, player_loc);
  9596. }
  9597. //--------------------------------------------------
  9598. //Mailbox-Utils
  9599. //--------------------------------------------------
  9600. function mailbox.sendItem(player_id, item) {
  9601. index = mailbox.getFreeIndex(player_id);
  9602. if(index == -1) {
  9603. return false;
  9604. }
  9605. mailbox.setItem(player_id, index, item);
  9606. return true;
  9607. }
  9608. function mailbox.clear(player_id) {
  9609. pfad = "scripts/configs/inv_data/mailbox";
  9610. config = config.new(pfad, player_id);
  9611. if(config.exists(config)) {
  9612. config.load(config);
  9613. }
  9614. for(index = 0; index < 27; index++) {
  9615. config.set(config, string.concat("item-", string.number(index)), "null");
  9616. }
  9617. config.saveAsync(config);
  9618. }
  9619. function mailbox.setItem(player_id, index, item) {
  9620. pfad = "scripts/configs/inv_data/mailbox";
  9621. config = config.new(pfad, player_id);
  9622. if(config.exists(config)) {
  9623. config.load(config);
  9624. }
  9625. item_string = string.item(item);
  9626. config.set(config, string.concat("item-", string.number(index)), item_string);
  9627. config.saveAsync(config);
  9628. }
  9629. function mailbox.removeItem(player_id, index) {
  9630. pfad = "scripts/configs/inv_data/mailbox";
  9631. config = config.new(pfad, player_id);
  9632. if(config.exists(config)) {
  9633. config.load(config);
  9634. }
  9635. config.set(config, string.concat("item-", string.number(index)), "null");
  9636. config.saveAsync(config);
  9637. }
  9638. function mailbox.getFreeIndex(player_id) {
  9639. pfad = "scripts/configs/inv_data/mailbox";
  9640. config = config.new(pfad, player_id);
  9641. if(config.exists(config)) {
  9642. config.load(config);
  9643. }
  9644. for(i = 0; i < 27; i++) {
  9645. item_string = config.getString(config, string.concat("item-", string.number(i)), "null");
  9646. if(item_string == "null") {
  9647. return i;
  9648. }
  9649. }
  9650. return -1;
  9651. }
  9652. function mailbox.show(to_player, player_id, bool) {
  9653. pfad = "scripts/configs/inv_data/mailbox";
  9654. config = config.new(pfad, player_id);
  9655. if(config.exists(config)) {
  9656. config.load(config);
  9657. }
  9658. if(bool) {
  9659. inv = inv.new("222222222222222222222222222", text.new(string.concat("Mailbox from ", player.getNameFromId(player_id))));
  9660. } else {
  9661. inv = inv.new("111111111111111111111111111", text.new(string.concat("Mailbox from ", player.getNameFromId(player_id))));
  9662. }
  9663. for(i = 0; i < 27; i++) {
  9664. item_string = config.getString(config, string.concat("item-", string.number(i)), "null");
  9665. if(item_string == "null") {
  9666. continue;
  9667. }
  9668. item = read.item(item_string);
  9669. if(item == null) {
  9670. continue;
  9671. }
  9672. setInvItem(inv, i, item);
  9673. }
  9674. inv.open(inv, to_player);
  9675. }
  9676. function updateVoteInv() {
  9677. lore_list = list.new();
  9678. list.add(lore_list, text.new("§fCost: §e1 VP"));
  9679. list.add(lore_list, text.new(string.concat("§fCounter: §e", string.number(getHomeBoost()))));
  9680. list.add(lore_list, text.new("§5Every 20 VP the possible homes increase by one."));
  9681. list.add(lore_list, text.new("§5Counter automatically shrinks by one every day."));
  9682. list.add(lore_list, text.new("§5The counter is shared with everybody on the server."));
  9683. inv.setItem($vote_inv, 2, item.create("RED_BED", 1, "§aMore Homes", lore_list));
  9684. }
  9685. function getAdditionalVoteHomes() {
  9686. return math.roundDown(getHomeBoost() / 20);
  9687. }
  9688. function getHomeBoost() {
  9689. config = getServerConfig();
  9690. return config.getDouble(config, "homeBoostPoints", 0);
  9691. }
  9692. function increaseHomeBoost() {
  9693. config = getServerConfig();
  9694. points = config.getDouble(config, "homeBoostPoints", 0) + 1;
  9695. config.set(config, "homeBoostPoints", points);
  9696. config.saveAsync(config);
  9697. updateVoteInv();
  9698. }
  9699. function decreaseHomeBoost() {
  9700. config = getServerConfig();
  9701. points = config.getDouble(config, "homeBoostPoints", 0) - 1;
  9702. if(points < 0) {
  9703. points = 0;
  9704. }
  9705. config.set(config, "homeBoostPoints", points);
  9706. config.saveAsync(config);
  9707. updateVoteInv();
  9708. }
  9709. function block.isLockable(block) {
  9710. return set.contains($lockable_containers, block.getType(block));
  9711. }