commands.txt 341 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006
  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("infopoint11");
  47. command.add("infopoint12");
  48. //Overwrite vanilla
  49. command.add("butcher");
  50. //--- Register commands shown on /help here ---
  51. alias_map = map.new();
  52. command_list = list.new();
  53. command_map = map.new();
  54. command.register("afk", "Toggles afk");
  55. command.register("allsounds", "Plays all sounds");
  56. command.register("answer", "Answers the last private message");
  57. command.register("armorstand", "Armorstand commands");
  58. command.register("ass", "Armor Stand Signs");
  59. command.register("back", "Teleports to the last position");
  60. command.register("ban", "Bans a player");
  61. command.register("block", "Block commands");
  62. //command.register("clan", "Clan-Commands");
  63. command.register("color", "Shows all colors");
  64. command.register("comeback", "Teleports to your death location");
  65. command.register("copyisland", "Copyisland-Commands");
  66. command.register("creative", "Teleports to creative-spawn");
  67. command.register("customitems", "Shows all custom items");
  68. command.register("databank", "Databank-Commands");
  69. command.register("datatools", "Datatools-Commands");
  70. command.register("dev", "Dev-Commands");
  71. command.register("enchant", "Enchants an item in your hand");
  72. command.register("enderchest", "Shows enderchests");
  73. command.register("error", "Error-Logger");
  74. command.register("feed", "Fills hunger bar");
  75. command.register("fly", "Toggles fly");
  76. command.register("friend", "Friend-Commands");
  77. command.register("game", "marvs minigame shit");
  78. command.register("gamemode", "Change gamemode");
  79. command.register("gamerule", "Manage gamerules");
  80. command.register("games", "Teleports to games-spawn");
  81. command.register("minigames", "Teleports to games-spawn");
  82. command.register("giveup", "Giveup a quest");
  83. command.register("grow", "Grow seeds");
  84. command.register("hat", "Be fame with a new hat");
  85. command.register("head", "Gives you the head of a player");
  86. command.register("heal", "Heals, fills hunger bar and remove effects");
  87. command.register("help", "Shows this help");
  88. command.register("home", "Manage your homes");
  89. command.register("icon", "Shows all icons");
  90. command.register("live", "Toggles Live-Mode");
  91. command.register("lag", "Executes a lag test");
  92. command.register("leave", "Leaves a minigame");
  93. command.register("loginrequests", "Lists the last login requests");
  94. command.register("human", "Human-Commands");
  95. command.register("inv", "Inv-Commands");
  96. command.register("iteminfo", "Returns information about an item");
  97. command.register("jail", "Sends a player to jail");
  98. command.register("joinme", "Sends a party invitation to all online players");
  99. command.register("jumpto", "Jumps to a block in sight");
  100. command.register("kick", "Kicks a player");
  101. command.register("lastseen", "Shows the last players online");
  102. command.register("lightning", "Summons a lightning_bolt");
  103. command.register("list", "List all players online");
  104. command.register("mail", "Mail-Commands");
  105. command.register("mailbox", "Mailbox-Commands");
  106. command.register("memory", "Returns RAM-usage");
  107. command.register("msg", "Send a private message");
  108. command.register("mute", "Mutes a player");
  109. command.register("news", "Send Push-News to all players");
  110. command.register("nickname", "Set a nickname");
  111. command.register("nowb", "Sends no 'is back' message if afk");
  112. command.register("party", "Party-Commands");
  113. command.register("perm", "Manage permissions");
  114. command.register("playtime", "Shows your playtime");
  115. command.register("plot", "Plot-Commands");
  116. command.register("potion", "Adds a potion effects to an item");
  117. command.register("pvp", "Toggles pvp");
  118. command.register("quest", "Quest-Commands");
  119. command.register("rank", "Shows your available ranks");
  120. command.register("repair", "Repairs your item in mainhand");
  121. command.register("ride", "Rides an entity");
  122. command.register("say", "[Server] chat message");
  123. command.register("script", "Script-Commands");
  124. command.register("settings", "Opens settings menu");
  125. command.register("seen", "Returns the last date the player was online");
  126. //command.register("senditem", "Sends an itemstack to another player");
  127. command.register("setmessage", "Set your join/leave-message");
  128. command.register("setrank", "");
  129. command.register("setservermessage", "Sets the server-message in the serverlist");
  130. command.register("setspawn", "Changes a spawn");
  131. command.register("shop", "Shop-Commands");
  132. command.register("sign", "Edit a sign");
  133. command.register("silentjoin", "Toggles your silentjoins");
  134. command.register("skills", "Shows all skills");
  135. command.register("skipnight", "Skips the night");
  136. command.register("spawn", "Teleports to spawn");
  137. command.register("speed", "Sets your speed");
  138. command.register("sponsor", "See what a sponsor can do");
  139. command.register("start", "Starts a script");
  140. command.register("startgame", "Reduces start-countdown for a minigame");
  141. command.register("stats", "Statistics-Commands");
  142. //command.register("stopadventure", "Stops an adventure");
  143. command.register("suicide", "Kill yourself");
  144. command.register("support", "Creates a ticket for support");
  145. command.register("stop", "Stops the server organized");
  146. command.register("tempban", "Bans a player temporarly");
  147. command.register("tempfly", "Let a player temporarly fly");
  148. command.register("ticket", "Ticket-Commands");
  149. command.register("time", "Time-Commands");
  150. command.register("tip", "Tip-Commands");
  151. command.register("top", "Teleports to to highest point at the current position");
  152. command.register("tp", "Teleport command");
  153. command.register("tpa", "Sends a teleport request to a player");
  154. command.register("tpahere", "Sends a teleport request to a player");
  155. command.register("tpaccept", "Accepts a teleport request");
  156. command.register("tpaccepthere", "Accepts a teleport request");
  157. command.register("tppos", "Teleports to coordinates");
  158. command.register("unban", "Unbans a player");
  159. command.register("unjail", "Releases a player from jail");
  160. command.register("unmute", "Unmutes a player");
  161. command.register("user", "Returns infos about a user");
  162. command.register("vanish", "Vanishes a player");
  163. command.register("var", "Reads variables from a scripts");
  164. command.register("vote", "Show vote links");
  165. command.register("voteshop", "Show vote rewars");
  166. command.register("warn", "Warns a player");
  167. command.register("warp", "Warp-Commands");
  168. command.register("weather", "Weather-Commands");
  169. command.register("world", "World-Commands");
  170. command.registerAlias("as", "armorstand");
  171. command.registerAlias("h", "home");
  172. command.registerAlias("skull", "head");
  173. command.registerAlias("r", "answer");
  174. command.registerAlias("pardon", "unban");
  175. command.registerAlias("j", "jumpto");
  176. command.registerAlias("mimimi", "help");
  177. command.registerAlias("ci", "copyisland");
  178. command.registerAlias("mem", "memory");
  179. command.registerAlias("ram", "memory");
  180. command.registerAlias("colour", "color");
  181. command.registerAlias("gm", "gamemode");
  182. command.registerAlias("p", "plot");
  183. command.registerAlias("dt", "datatools");
  184. command.registerAlias("l", "leave");
  185. command.registerAlias("hub", "leave");
  186. command.registerAlias("v", "vanish");
  187. command.registerAlias("fuckit", "giveup");
  188. command.registerAlias("thor", "lightning");
  189. composter_par = particle.get("COMPOSTER");
  190. wall_signs_tag = block.getTag("minecraft:wall_signs");
  191. beds_tag = block.getTag("minecraft:beds");
  192. chest_tag = block.getTag("km:container");
  193. all_signs_tag = block.getTag("minecraft:all_signs");
  194. sign_tag = block.getTag("minecraft:signs");
  195. //dirt_tag = block.getTag("minecraft:dirt");
  196. prefix_shop = "§6Shop";
  197. prefix_clan = "§2Clan";
  198. prefix_tips = "§eTips";
  199. prefix_lock = "§eLock";
  200. prefix_commands = "§6Commands";
  201. prefix_vote = "§dVote";
  202. prefix_friends = "§5Friends";
  203. prefix_world = "§bWorld";
  204. prefix_jail = "§5Jail";
  205. prefix_quest = "§dQuest";
  206. prefix_perms = "§6Perms";
  207. prefix_datatools = "§6DataTools";
  208. prefix_human = "§6Human";
  209. prefix_plot = "§dPlots";
  210. prefix_party = "§5Party";
  211. prefix_skill = "§2Skill";
  212. initPlotFlags();
  213. initAllSounds();
  214. allsounds_list = getAllSounds();
  215. allsounds_indizes = map.new();
  216. allsounds_uuids = list.new();
  217. allsounds_uuids_cross_check = list.new();
  218. party_ids = getScriptVar("party_ids");
  219. if(party_ids == null) {
  220. party_ids = map.new();
  221. setScriptVar("party_ids", map.new()); //Player, partyid
  222. }
  223. party_lists = getScriptVar("party_lists");
  224. if(party_lists == null) {
  225. party_lists = map.new();
  226. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  227. }
  228. party_ranks = getScriptVar("party_ranks");
  229. if(party_ranks == null) {
  230. party_ranks = map.new();
  231. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  232. }
  233. party_counter = getScriptVar("party_counter");
  234. if(party_counter == null) {
  235. party_counter = 0;
  236. setScriptVar("party_counter", party_counter); //Player, partyid
  237. }
  238. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  239. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  240. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  241. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  242. party_invite_ids = map.new(); //Player_uuid, partyid
  243. sign_copy_map = map.new();
  244. list = getScriptVar("block_commands_list");
  245. if(list == null) {
  246. list = list.new();
  247. setScriptVar("block_commands_list", list);
  248. }
  249. live_set = getScriptVar("live_set");
  250. if(live_set == null) {
  251. live_set = set.new();
  252. setScriptVar("live_set", live_set);
  253. } else {
  254. //Register all Live-Players again
  255. iter = iterator(live_set);
  256. while(hasNext(iter)) {
  257. player = player.get(next(iter));
  258. if(player != null) {
  259. player.setLive(player, true);
  260. }
  261. }
  262. }
  263. afk_loop_active = false;
  264. afk_map = getScriptVar("afk_map");
  265. if(afk_map == null) {
  266. afk_map = map.new();
  267. setScriptVar("afk_map", afk_map);
  268. } else {
  269. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  270. iter = map.iterator(afk_map);
  271. while(hasNext(iter)) {
  272. element = next(iter);
  273. player = player.get(map.getKey(element));
  274. if(player != null) {
  275. player.setAfk(player, true);
  276. afk_loop_active = true;
  277. }
  278. }
  279. }
  280. if(afk_loop_active) {
  281. sgoto(30, "afk_loop");
  282. }
  283. setScriptVar("ha_data_lists", map.new());
  284. setScriptVar("ha_undo_lists", map.new());
  285. money.setBoostFactor(1);
  286. sgoto(200, "sb_title_loop");
  287. sgoto(100, "coordsloop");
  288. sgoto(1200, "afk_checker_loop");
  289. sgoto(1200, "minute_loop");
  290. 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}]}}}");
  291. lag_list = list.new();
  292. clan_invitations = list.new();
  293. friend_requests = map.new();
  294. lock_chests = map.new();
  295. chatbuffer = map.new();
  296. tpa_request = list.new();
  297. answer_map = map.new();
  298. plotpos1 = map.new();
  299. plotpos2 = map.new();
  300. invseeids = set.new();
  301. fields = set.new();
  302. vanish_set = set.new();
  303. failed_cmds = set.new();
  304. skip_night_set = set.new();
  305. afk_checker_map = map.new();
  306. butcher_set = set.new();
  307. set.add(butcher_set, "zombie");
  308. set.add(butcher_set, "zombie_villager");
  309. set.add(butcher_set, "husk");
  310. set.add(butcher_set, "skeleton");
  311. set.add(butcher_set, "creeper");
  312. set.add(butcher_set, "enderman");
  313. set.add(butcher_set, "pillager");
  314. set.add(butcher_set, "spider");
  315. set.add(butcher_set, "phantom");
  316. set.add(butcher_set, "witch");
  317. set.add(butcher_set, "stray");
  318. set.add(butcher_set, "drowned");
  319. set.add(butcher_set, "wither");
  320. set.add(butcher_set, "silverfish");
  321. set.add(butcher_set, "zombified_piglin");
  322. set.add(butcher_set, "cod");
  323. set.add(butcher_set, "guardian");
  324. attribut_set = set.new();
  325. set.add(attribut_set, "GENERIC_ARMOR");
  326. set.add(attribut_set, "GENERIC_ARMOR_TOUGHNESS");
  327. set.add(attribut_set, "GENERIC_ATTACK_DAMAGE");
  328. set.add(attribut_set, "GENERIC_ATTACK_KNOCKBACK");
  329. set.add(attribut_set, "GENERIC_ATTACK_SPEED");
  330. set.add(attribut_set, "GENERIC_FLYING_SPEED");
  331. set.add(attribut_set, "GENERIC_FOLLOW_RANGE");
  332. set.add(attribut_set, "GENERIC_KNOCKBACK_RESISTANCE");
  333. set.add(attribut_set, "GENERIC_LUCK");
  334. set.add(attribut_set, "GENERIC_MAX_HEALTH");
  335. set.add(attribut_set, "GENERIC_MOVEMENT_SPEED");
  336. set.add(attribut_set, "HORSE_JUMP_STRENGTH");
  337. set.add(attribut_set, "ZOMBIE_SPAWN_REINFORCEMENTS");
  338. operation_set = set.new();
  339. set.add(operation_set, "ADD_NUMBER");
  340. set.add(operation_set, "ADD_SCALAR");
  341. set.add(operation_set, "MULTIPLY_SCALAR_1");
  342. not_blocked_cmd = set.new();
  343. set.add(not_blocked_cmd, "leave");
  344. set.add(not_blocked_cmd, "ban");
  345. set.add(not_blocked_cmd, "kick");
  346. set.add(not_blocked_cmd, "warn");
  347. set.add(not_blocked_cmd, "tempban");
  348. set.add(not_blocked_cmd, "mute");
  349. set.add(not_blocked_cmd, "unmute");
  350. set.add(not_blocked_cmd, "unban");
  351. set.add(not_blocked_cmd, "tip");
  352. set.add(not_blocked_cmd, "var");
  353. set.add(not_blocked_cmd, "quest");
  354. set.add(not_blocked_cmd, "msg");
  355. set.add(not_blocked_cmd, "help");
  356. rank_array = array.new(28, 2);
  357. //Playtime
  358. rank.add(0, "rank.owner", "4Owner");
  359. rank.add(1, "rank.admin", "cAdmin");
  360. rank.add(2, "rank.moderator", "9Moderator");
  361. rank.add(3, "rank.supporter", "bSupporter");
  362. rank.add(4, "rank.dev", "5Developer");
  363. rank.add(5, "rank.builder", "5Builder");
  364. rank.add(6, "rank.vip", "dVIP");
  365. rank.add(7, "rank.influencer", "dInfluencer");
  366. rank.add(8, "rank.sponsor", "dSponsor");
  367. rank.add(9, "rank.legend", "2Legend");
  368. rank.add(10, "rank.pioneer", "2Pioneer");
  369. rank.add(11, "rank.lord", "2Lord");
  370. rank.add(12, "rank.altruist", "2Altruist");
  371. rank.add(13, "rank.major", "2Major");
  372. rank.add(14, "rank.frequenter", "6Frequenter");
  373. rank.add(15, "rank.explorer", "6Explorer");
  374. rank.add(16, "rank.chief", "6Chief");
  375. rank.add(17, "rank.friend", "6Friend");
  376. rank.add(18, "rank.colonizer", "6Colonizer");
  377. rank.add(19, "rank.newcomer", "eNewcomer");
  378. rank.add(20, "rank.adventurer", "eAdventurer");
  379. rank.add(21, "rank.commander", "eCommander");
  380. rank.add(22, "rank.volunteer", "eVolunteer");
  381. rank.add(23, "rank.settler", "eSettler");
  382. rank.add(24, "rank.user", "3User");
  383. rank.add(25, "rank.challenger", "5Challenger");
  384. rank.add(26, "rank.mobhunter", "6Mobhunter");
  385. rank.add(27, "rank.collector", "2Collector");
  386. setScriptVar("ranks", rank_array);
  387. month_array = array.new(12, 2);
  388. month.register(0, "Jan", 31);
  389. month.register(1, "Feb", 28);
  390. month.register(2, "Mar", 31);
  391. month.register(3, "Apr", 30);
  392. month.register(4, "May", 31);
  393. month.register(5, "Jun", 30);
  394. month.register(6, "Jul", 31);
  395. month.register(7, "Aug", 31);
  396. month.register(8, "Sep", 30);
  397. month.register(9, "Oct", 31);
  398. month.register(10, "Nov", 30);
  399. month.register(11, "Dec", 31);
  400. jailed_list = list.new();
  401. ironbars = item.create("minecraft:iron_bars", 1, "§r", null);
  402. jailmenu = inv.new("00000000", text.new("§8Jail"));
  403. inv.setItem(jailmenu, 0, ironbars);
  404. inv.setItem(jailmenu, 1, ironbars);
  405. inv.setItem(jailmenu, 2, ironbars);
  406. inv.setItem(jailmenu, 3, ironbars);
  407. inv.setItem(jailmenu, 4, ironbars);
  408. inv.setItem(jailmenu, 5, ironbars);
  409. inv.setItem(jailmenu, 6, ironbars);
  410. inv.setItem(jailmenu, 7, ironbars);
  411. inv.setItem(jailmenu, 8, ironbars);
  412. skip_night_inv = inv.new("002020200", text.new("Skip Night?"));
  413. inv.setItem(skip_night_inv, 2, item.custom.create("CHECK_GREEN", 1, "§fYes", null));
  414. inv.setItem(skip_night_inv, 4, item.create("clay_ball", 1, "§fI don´t care", null));
  415. inv.setItem(skip_night_inv, 6, item.custom.create("CROSS_RED", 1, "§fNo", null));
  416. skip_night_inv_id = inv.getId(skip_night_inv);
  417. vote_inv = inv.new("222222222", text.new("§8Voteshop"));
  418. lore_list = list.new();
  419. list.add(lore_list, text.new("§fCost: §e6 VP"));
  420. list.add(lore_list, text.new("§5Doubles incoming money for 10 minutes."));
  421. list.add(lore_list, text.new("§5Effects quests, minigames and mobarena."));
  422. inv.setItem(vote_inv, 0, item.custom.create("GOLD_COIN", 1, "§aMoney Booster", lore_list));
  423. lore_list = list.new();
  424. list.add(lore_list, text.new("§fCost: §e2 VP"));
  425. list.add(lore_list, text.new("§5Rickroles every player on the server."));
  426. inv.setItem(vote_inv, 1, item.create("JUKEBOX", 1, "§aRick is in the house", lore_list));
  427. updateVoteInv();
  428. lore_list = list.new();
  429. list.add(lore_list, text.new("§fCost: §e2 VP"));
  430. list.add(lore_list, text.new("§5Be a kiddie and enjoy it."));
  431. inv.setItem(vote_inv, 3, item.create("JUKEBOX", 1, "§aBi Ba Bobby Car", lore_list));
  432. lore_list = list.new();
  433. list.add(lore_list, text.new("§fCost: §e1 VP"));
  434. list.add(lore_list, text.new("§5Plays a creeper sound for each player."));
  435. inv.setItem(vote_inv, 4, item.create("JUKEBOX", 1, "§aFalse Alarm", lore_list));
  436. lore_list = list.new();
  437. list.add(lore_list, text.new("§fCost: §e1 VP"));
  438. list.add(lore_list, text.new("§5Opens your enderchest."));
  439. inv.setItem(vote_inv, 5, item.create("ENDER_CHEST", 1, "§aMobile Enderchest", lore_list));
  440. lore_list = list.new();
  441. list.add(lore_list, text.new("§fCost: §e7 VP"));
  442. list.add(lore_list, text.new("§5A sapphire for your armor."));
  443. list.add(lore_list, text.new("§5To use at jewelry smith."));
  444. inv.setItem(vote_inv, 6, item.custom.create("SAPPHIRE", 1, "§aSapphire", lore_list));
  445. vote_inv_id = inv.getId(vote_inv);
  446. consoleCommands = set.new();
  447. set.add(consoleCommands, "ban");
  448. set.add(consoleCommands, "help");
  449. set.add(consoleCommands, "kick");
  450. set.add(consoleCommands, "lastseen");
  451. set.add(consoleCommands, "list");
  452. set.add(consoleCommands, "memory");
  453. set.add(consoleCommands, "mute");
  454. set.add(consoleCommands, "say");
  455. set.add(consoleCommands, "start");
  456. set.add(consoleCommands, "tempban");
  457. set.add(consoleCommands, "tempfly");
  458. set.add(consoleCommands, "unban");
  459. set.add(consoleCommands, "unmute");
  460. set.add(consoleCommands, "user");
  461. set.add(consoleCommands, "warn");
  462. set.add(consoleCommands, "world");
  463. databank.workerExecute(databank.prepare("
  464. CREATE TABLE IF NOT EXISTS friends (
  465. player_id INT NOT NULL,
  466. friend_id INT NOT NULL,
  467. time BIGINT NOT NULL,
  468. PRIMARY KEY (player_id, friend_id)
  469. );
  470. "));
  471. databank.workerExecute(databank.prepare("
  472. CREATE TABLE IF NOT EXISTS new_plotranks (
  473. plot_id INT NOT NULL,
  474. player_id INT NOT NULL,
  475. rank VARCHAR(10),
  476. PRIMARY KEY (plot_id, player_id)
  477. );
  478. "));
  479. databank.workerExecute(databank.prepare("
  480. CREATE TABLE IF NOT EXISTS new_homes (
  481. player_id INT NOT NULL,
  482. name VARCHAR(20) NOT NULL,
  483. world_name VARCHAR(20) NOT NULL,
  484. x DOUBLE NOT NULL,
  485. y DOUBLE NOT NULL,
  486. z DOUBLE NOT NULL,
  487. yaw DOUBLE NOT NULL,
  488. pitch DOUBLE NOT NULL,
  489. PRIMARY KEY (player_id, name)
  490. );
  491. "));
  492. databank.workerExecute(databank.prepare("
  493. CREATE TABLE IF NOT EXISTS votes (
  494. id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  495. name VARCHAR(20) NOT NULL,
  496. player_id INT,
  497. time BIGINT NOT NULL
  498. );
  499. "));
  500. databank.workerExecute(databank.prepare("
  501. CREATE TABLE IF NOT EXISTS newbies (
  502. id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  503. player_id INT NOT NULL,
  504. time BIGINT NOT NULL
  505. );
  506. "));
  507. //plot ranks cachen
  508. plot_ranks_map = map.new();
  509. stmt = databank.prepare("SELECT plot_id, player_id, rank FROM new_plotranks");
  510. result = databank.execute(stmt);
  511. while(databank.next(result)) {
  512. plot_id = databank.getInt(result, 1);
  513. player_id = databank.getInt(result, 2);
  514. rank = databank.getString(result, 3);
  515. map = map.get(plot_ranks_map, plot_id);
  516. if(map == null) {
  517. map = map.new();
  518. }
  519. map.add(map, player_id, rank);
  520. map.add(plot_ranks_map, plot_id, map);
  521. }
  522. databank.close(result);
  523. databank.close(stmt);
  524. setScriptVar("plot_ranks", plot_ranks_map);
  525. last_skip_night = 0;
  526. skip_night_started = false;
  527. jail_loop_active = false;
  528. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  529. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  530. check_for_plot_list = list.new();
  531. plot.registerMoveEvents(world.getOverworld());
  532. plot.registerMoveEvents(world.getTheNether());
  533. plot.registerMoveEvents(world.getTheEnd());
  534. plot.registerMoveEvents(world.getCreative());
  535. RickRollSounds = getRickRollSounds();
  536. RickRollSoundDists = getRickRollSoundDists();
  537. rick_sounds_amount = list.getSize(RickRollSoundDists);
  538. bobbyCarSounds = getBobbyCarSounds();
  539. bobbyCarSoundDists = getBobbyCarSoundDists();
  540. bcar_sounds_amount = list.getSize(bobbyCarSoundDists);
  541. item_flags = getItemFlags();
  542. sound_category_master = sound.getCategory("MASTER");
  543. sound_flute = sound.get("BLOCK_NOTE_BLOCK_FLUTE");
  544. sound_harp = sound.get("BLOCK_NOTE_BLOCK_HARP");
  545. sound_pling = sound.get("BLOCK_NOTE_BLOCK_PLING");
  546. creeper_primed = sound.get("ENTITY_CREEPER_PRIMED");
  547. event.load("player_move");
  548. event.load("snuvi_click");
  549. event.load("inv_close");
  550. event.load("missing_perm");
  551. event.load("missing_command");
  552. event.load("command");
  553. event.load("custom_command");
  554. event.load("block_click");
  555. event.load("player_quit");
  556. event.load("vote");
  557. msg("dev", text.new("§bCommands §rloaded."));
  558. @wait
  559. wait();
  560. if(event == "command") {
  561. if(string.startsWith(permission, "worldedit", 0)) {
  562. if(perm.has("creative.we", player)) {
  563. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  564. if(!world.isCreativeName(world_name)) {
  565. cancel = true;
  566. msg.prefix(player, prefix_commands, "You are not in the creative world.");
  567. goto("wait");
  568. }
  569. }
  570. }
  571. goto("wait");
  572. }
  573. if(event == "custom_command") {
  574. //Permission-Check
  575. command = string.toLowerCase(command);
  576. command = map.getOrDefault(alias_map, command, command);
  577. size = list.getSize(args);
  578. if(isPlayer(sender)) {
  579. player = sender;
  580. } else {
  581. if(!set.contains(consoleCommands, command)) {
  582. msg.string(sender, "Sorry. Not a console command yet. Go and tell marvinius.");
  583. goto("wait");
  584. }
  585. player = null;
  586. }
  587. if(!perm.has(command, sender)) {
  588. perm.no(command, sender);
  589. goto("wait");
  590. }
  591. if(set.contains(failed_cmds, command)) {
  592. msg.prefix(sender, prefix_commands, "§cCommand temporarly deactivated due to failure.");
  593. goto("wait");
  594. }
  595. if(player.isCommandBlocked(sender)) {
  596. if(!set.contains(not_blocked_cmd, command)) {
  597. msg.prefix(sender, prefix_commands, "The most important rule in competition: Sabotage!");
  598. goto("wait");
  599. }
  600. }
  601. ignoreGoto(command);
  602. goto("wait");
  603. }
  604. if(event == "vote") {
  605. now_time = time.getMillis();
  606. vote.register(name, now_time);
  607. p_uuid = player.getUuid(name);
  608. if(p_uuid != null) {
  609. p_id = player.getId(p_uuid);
  610. player.addVotePoints(p_id, 1);
  611. if(from == "minecraft-server.eu") {
  612. 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")));
  613. } else {
  614. 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/")));
  615. }
  616. last_vote_time = player.getLastVoteTime(p_id);
  617. new_streak = player.getVoteStreak(p_id);
  618. if(last_vote_time == 0) {
  619. new_streak++;
  620. } elseif(isFollowingDay(last_vote_time, now_time)) {
  621. new_streak++;
  622. } elseif(!isSameDay(last_vote_time, now_time)) {
  623. new_streak = 1;
  624. }
  625. if(new_streak % 7 == 0) {
  626. msg.online(prefix_vote, string.concat(player.getName(p_uuid), " reached a votestreak of 7 and gets an additional votepoint."));
  627. player.addVotePoints(p_id, 1);
  628. }
  629. player.setVoteStreak(p_id, new_streak);
  630. player.setLastVoteTime(p_id, now_time);
  631. }
  632. goto("wait");
  633. }
  634. if(event == "player_move") {
  635. player_uuid = player.getUuid(player);
  636. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  637. if(last_move_id == id) {
  638. goto("wait");
  639. }
  640. player_loc = entity.getLocation(player);
  641. new_plot_id = plot.getPlotIdFromMoveId(id);
  642. new_plot = plot.getFromId(new_plot_id, loc.getWorld(player_loc));
  643. if(new_plot == null) {
  644. goto("wait");
  645. }
  646. high_plot_id = plot.getHighestId(player_loc);
  647. if(new_plot_id < high_plot_id) {
  648. goto("wait");
  649. }
  650. if(plot.isCity(new_plot)) {
  651. color_code = "§c";
  652. } else {
  653. color_code = "§e";
  654. }
  655. title.send(player, text.new(""), text.new(string.concat("You entered ", color_code, plot.getName(new_plot), ".")));
  656. map.add(actual_move_id, player_uuid, id);
  657. list.add(check_for_plot_list, player_uuid);
  658. sgoto(100, "checkForPlot");
  659. goto("wait");
  660. }
  661. if(event == "block_click") {
  662. if(block == null) {
  663. goto("wait");
  664. }
  665. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  666. if(action == "RIGHT_CLICK_BLOCK" && !world.isSurvName(world_name) && block.hasTag(block, beds_tag)) {
  667. cancel = true;
  668. goto("wait");
  669. }
  670. if(player.hasBypass(player)) {
  671. goto("wait");
  672. }
  673. if(block.hasTag(block, chest_tag)) {
  674. block_loc = block.getLocation(block);
  675. if(plot.check(block_loc, player, 16, true)) {
  676. cancel = false;
  677. goto("wait");
  678. }
  679. player_id = player.getId(player);
  680. player_uuid = player.getUuid(player);
  681. list = plot.get(block_loc);
  682. if(list.getSize(list) > 0) {
  683. iter = iterator(list);
  684. access = false;
  685. while(hasNext(iter)) {
  686. plot = next(iter);
  687. canOpenChests = plot.canOpenChests(plot, player_id);
  688. if(plot.isSub(plot)) {
  689. if(canOpenChests) {
  690. cancel = false;
  691. goto("wait");
  692. }
  693. cancel = true;
  694. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  695. goto("wait");
  696. }
  697. if(canOpenChests) {
  698. access = true;
  699. cancel = false;
  700. }
  701. }
  702. if(!access && !plot.hasBlock(block_loc)) {
  703. if(!world.isGamesName(world_name)) {
  704. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  705. }
  706. }
  707. }
  708. goto("wait");
  709. }
  710. if(action == "RIGHT_CLICK_BLOCK" && block.hasTag(block, sign_tag)) {
  711. line0 = sign.getString(block, "FRONT", 0);
  712. if(line0 != "§3[§bFree Plot§3]") {
  713. goto("wait");
  714. }
  715. price = read.number(string.removeFormat(sign.getString(block, "FRONT", 1)));
  716. if(price == null || !isDouble(price) || price < 0) {
  717. msg.prefix(player, prefix_plot, "Positive number expected.");
  718. goto("wait");
  719. }
  720. p_id = read.number(sign.getString(block, "FRONT", 3));
  721. if(p_id == null || !isDouble(p_id)) {
  722. msg.prefix(player, prefix_plot, "Invalid city owner.");
  723. goto("wait");
  724. }
  725. if(player.getNameFromId(p_id) == null) {
  726. msg.prefix(player, prefix_plot, "Invalid city owner.");
  727. goto("wait");
  728. }
  729. if(!hasEnoughMoney(player, price)) {
  730. msg.prefix(player, prefix_plot, string.concat("You´ll need §6", string.number(price), "§r snuvis for this."));
  731. goto("wait");
  732. }
  733. block_loc = block.getLocation(block);
  734. plot_list = plot.get(block_loc);
  735. iter = iterator(plot_list);
  736. while(hasNext(iter)) {
  737. plot = next(iter);
  738. if(plot.isFree(plot)) {
  739. break;
  740. }
  741. }
  742. if(!plot.isFree(plot)) {
  743. msg.prefix(player, prefix_plot, "You aren´t on a free plot.");
  744. goto("wait");
  745. }
  746. //Plot claimen
  747. money.sub(player, price);
  748. money.add(p_id, price);
  749. plot.setSub(plot, true);
  750. plot.setLeader(plot, player.getId(player));
  751. player_name = player.getName(player);
  752. plot.addPlayer(plot, player_name);
  753. plot.setName(plot, string.concat("Plot of ", player_name));
  754. msg.prefix(player, prefix_plot, string.concat("Plot claimed. Spent §6", string.number(price), "§r snuvis."));
  755. goto("wait");
  756. }
  757. goto("wait");
  758. }
  759. if(event == "missing_command") {
  760. msg.prefix(sender, prefix_commands, string.concat("No command ", command));
  761. goto("wait");
  762. }
  763. if(event == "player_quit") {
  764. map.remove(afk_checker_map, uuid);
  765. player.setAfk(player, false);
  766. list.remove(jailed_list, player.getUuid(player));
  767. if(player.hasQuest(player)) {
  768. script_id = quest.getFromPlayer(player);
  769. script = script.getFromId(script_id);
  770. if(script == null) {
  771. msg.dev("Player logged out with corrupt quest");
  772. quest.removePlayer(player); //in case of corrupt quest
  773. goto("wait");
  774. }
  775. setScriptVar("player", player);
  776. modTimer.scriptCallEvent("quest_term", script);
  777. quest.term(script, player);
  778. }
  779. if(player.isInParty(player)) {
  780. party.kickPlayer(player, "logout");
  781. }
  782. goto("wait");
  783. }
  784. if(event == "missing_perm") {
  785. perm.no(command, sender);
  786. msg.prefix(sender, prefix_perms, string.concat("Missing Perm: §c", perm));
  787. goto("wait");
  788. }
  789. if(event == "snuvi_click") {
  790. inv_id = inv.getId(inv);
  791. item = inv.getItem(inv, inv_slot);
  792. if(item == null) {
  793. goto("wait");
  794. }
  795. title_string = string.text(inv_title);
  796. if(string.startsWith(title_string, "Mailbox", 0)) {
  797. item.removeFlag(item, "HIDE_DESTROYS");
  798. if(click == "SHIFT_LEFT") {
  799. //Clone item
  800. player.safeGiveItem(player, item);
  801. goto("wait");
  802. }
  803. //Take item
  804. player.safeGiveItem(player, item);
  805. inv.setItem(inv, inv_slot, item.create("BLACK_STAINED_GLASS_PANE", 1, "", null));
  806. split_array = string.split(" ", title_string);
  807. p_name = split_array[2];
  808. p_uuid = player.getUuid(p_name);
  809. if(p_uuid == null) {
  810. inv.close(player);
  811. msg.prefix(player, prefix_commands, "Mailbox closed. Unknown player.");
  812. goto("wait");
  813. }
  814. p_id = player.getId(p_uuid);
  815. mailbox.removeItem(p_id, inv_slot);
  816. goto("wait");
  817. }
  818. if(string.startsWith(title_string, "Customitems", 0)) {
  819. item = inv.getItem(inv, inv_slot);
  820. if(item != null) {
  821. player.safeGiveItem(player, item);
  822. }
  823. goto("wait");
  824. }
  825. if(set.contains(invseeids, inv_id)) {
  826. if(!perm.has("inv.see.plus", player)) {
  827. perm.no("inv.see.plus", player);
  828. goto("wait");
  829. }
  830. split_array = string.split(" ", title_string);
  831. p_name = split_array[2];
  832. p = read.player(p_name);
  833. if(p == null) {
  834. inv.close(player);
  835. msg.prefix(player, prefix_commands, "This player is no longer online. Use /inv to load and overwrite an inventory of a offline player.");
  836. goto("wait");
  837. }
  838. item.removeFlag(item, "HIDE_DESTROYS");
  839. if(click == "SHIFT_LEFT") {
  840. //Clone item
  841. player.safeGiveItem(player, item);
  842. goto("wait");
  843. }
  844. //Transmit item
  845. player.removeItem(p, item);
  846. player.safeGiveItem(player, item);
  847. inv.setItem(inv, inv_slot, item.create("BLACK_STAINED_GLASS_PANE", 1, "", null));
  848. goto("wait");
  849. }
  850. if(inv_id == vote_inv_id) {
  851. if(inv_slot == 0) {
  852. if(money.getBoostFactor() > 1) {
  853. msg.prefix(player, prefix_commands, "Boost already active.");
  854. goto("wait");
  855. }
  856. vp = player.getVotePoints(player);
  857. if(vp < 6) {
  858. msg.prefix(player, prefix_commands, "Not enough vote points.");
  859. goto("wait");
  860. }
  861. player.setVotePoints(player, vp - 6);
  862. msg.online(prefix_vote, string.concat(player.getName(player), " activated §dMoney Booster§r."));
  863. money.setBoostFactor(2);
  864. online_list = players.toList();
  865. iter = iterator(online_list);
  866. while(hasNext(iter)) {
  867. p = next(iter);
  868. sb.add(p, 5, "§6Money Booster +100%");
  869. }
  870. sgoto(12000, "resetMoneyBoost");
  871. goto("wait");
  872. }
  873. if(inv_slot == 1) {
  874. vp = player.getVotePoints(player);
  875. if(vp < 2) {
  876. msg.prefix(player, prefix_commands, "Not enough vote points.");
  877. goto("wait");
  878. }
  879. msg.online(prefix_vote, string.concat(player.getName(player), " activated §dRick is in the house§r."));
  880. player.setVotePoints(player, vp - 2);
  881. rickIndex = 0;
  882. goto("RickRole_play");
  883. }
  884. if(inv_slot == 2) {
  885. vp = player.getVotePoints(player);
  886. if(vp < 1) {
  887. msg.prefix(player, prefix_commands, "Not enough vote points.");
  888. goto("wait");
  889. }
  890. player.setVotePoints(player, vp - 1);
  891. increaseHomeBoost();
  892. msg.online(prefix_vote, string.concat(player.getName(player), " spend their votepoints to §dMore Homes§r."));
  893. goto("wait");
  894. }
  895. if(inv_slot == 3) {
  896. vp = player.getVotePoints(player);
  897. if(vp < 2) {
  898. msg.prefix(player, prefix_commands, "Not enough vote points.");
  899. goto("wait");
  900. }
  901. msg.online(prefix_vote, string.concat(player.getName(player), " activated §dBi Ba Bobby Car§r."));
  902. player.setVotePoints(player, vp - 2);
  903. bobbycarIndex = 0;
  904. goto("bobbycar_play");
  905. }
  906. if(inv_slot == 4) {
  907. vp = player.getVotePoints(player);
  908. if(vp < 1) {
  909. msg.prefix(player, prefix_commands, "Not enough vote points.");
  910. goto("wait");
  911. }
  912. msg.online(prefix_vote, string.concat(player.getName(player), " activated §dFalse Alarm§r."));
  913. player.setVotePoints(player, vp - 1);
  914. iter = iterator(players.toList());
  915. while(hasNext(iter)) {
  916. sound.spawnForPlayer(next(iter), creeper_primed, sound_category_master);
  917. }
  918. goto("wait");
  919. }
  920. if(inv_slot == 5) {
  921. vp = player.getVotePoints(player);
  922. if(vp < 1) {
  923. msg.prefix(player, prefix_commands, "Not enough vote points.");
  924. goto("wait");
  925. }
  926. player.setVotePoints(player, vp - 1);
  927. inv.open(player.getEnderInv(player), player);
  928. goto("wait");
  929. }
  930. if(inv_slot == 6) {
  931. vp = player.getVotePoints(player);
  932. if(vp < 7) {
  933. msg.prefix(player, prefix_commands, "Not enough vote points.");
  934. goto("wait");
  935. }
  936. msg.online(prefix_vote, string.concat(player.getName(player), " spend their votepoints to §dSapphire§r."));
  937. player.setVotePoints(player, vp - 7);
  938. player.giveItem(player, item.getSapphire());
  939. goto("wait");
  940. }
  941. goto("wait");
  942. }
  943. if(inv_id == skip_night_inv_id) {
  944. world = world.getOverWorld();
  945. world_time = world.getTime(world);
  946. while(world_time >= 24000) {
  947. world_time -= 24000;
  948. }
  949. if(world_time <= 12500) {
  950. goto("wait");
  951. }
  952. player_uuid = player.getUuid(player);
  953. if(set.contains(skip_night_set, player_uuid)) {
  954. msg.prefix(player, prefix_commands, "Already voted.");
  955. goto("wait");
  956. }
  957. if(!skip_night_started) {
  958. skip_night_yes_list = list.new();
  959. world.addTimedStatus(world, 49, 300, "Skip night?");
  960. msg("online", text.merge(text.new(string.getPrefix(prefix_commands)), text.new(" Skip night? Vote within 15 seconds. "), string.getClickText("[§cClick§r]", "/skipnight")));
  961. skip_night_counter = 15;
  962. skip_night_yes = 0;
  963. skip_night_no = 0;
  964. skip_night_no_care = 0;
  965. skip_night_started = true;
  966. sgoto(20, "skip_night_loop");
  967. }
  968. if(inv_slot == 2) {
  969. skip_night_yes++;
  970. inv.close(player);
  971. set.add(skip_night_set, player_uuid);
  972. list.add(skip_night_yes_list, player_uuid);
  973. goto("wait");
  974. }
  975. if(inv_slot == 4) {
  976. skip_night_no_care++;
  977. inv.close(player);
  978. set.add(skip_night_set, player_uuid);
  979. goto("wait");
  980. }
  981. if(inv_slot == 6) {
  982. skip_night_no++;
  983. inv.close(player);
  984. set.add(skip_night_set, player_uuid);
  985. goto("wait");
  986. }
  987. goto("wait");
  988. }
  989. if(title_string == "Skills") {
  990. if(item == null) {
  991. goto("wait");
  992. }
  993. skill_name = string.removeFormat(string.text(item.getName(item)));
  994. if(skill_name == "") {
  995. goto("wait");
  996. }
  997. tech_name = skill.getTechName(skill_name);
  998. //Toggle skills
  999. if(skill.isToggleable(tech_name)) {
  1000. if(skill.isActivated(player, tech_name)) {
  1001. skill.setActivated(player, tech_name, false);
  1002. } else {
  1003. skill.setActivated(player, tech_name, true);
  1004. }
  1005. inv.setItem(inv, inv_slot, skill.getSettingsItem(player, tech_name));
  1006. goto("wait");
  1007. }
  1008. //Activate skill
  1009. if(skill.isActive(tech_name)) {
  1010. player_loc = entity.getLocation(player);
  1011. world_name = world.getName(loc.getWorld(player_loc));
  1012. if(!world.isSurvName(world_name)) {
  1013. msg.prefix(player, prefix_skill, "You can´t use this in this world.");
  1014. goto("wait");
  1015. }
  1016. goto("wait");
  1017. if(tech_name == "skill.fire_arrow") {
  1018. duration = data.getTimer(player, tech_name);
  1019. if(duration > 0) {
  1020. msg.prefix(player, prefix_skill, "Skill already active.");
  1021. goto("wait");
  1022. }
  1023. amount = skill.getAmount(player, tech_name);
  1024. if(amount > 0) {
  1025. status.addTimed(player, 54, 1200, skill_name);
  1026. data.setTimer(player, tech_name, 1200);
  1027. new_amount = amount - 1;
  1028. skill.setAmount(player, tech_name, new_amount);
  1029. msg.prefix(player, prefix_skill, string.concat("Used ", skill_name, ". New amount: ", string.number(new_amount)));
  1030. }
  1031. goto("wait");
  1032. }
  1033. if(tech_name == "skill.fly10min") {
  1034. duration = data.getTimer(player, "fly");
  1035. if(duration > 0) {
  1036. msg.prefix(player, prefix_skill, "Skill already active.");
  1037. goto("wait");
  1038. }
  1039. amount = skill.getAmount(player, "skill.fly10min");
  1040. if(amount > 0) {
  1041. status.addTimed(player, 50, 12000, "Fly");
  1042. data.setTimer(player, "fly", 12000);
  1043. player.setFly(player, true);
  1044. new_amount = amount - 1;
  1045. skill.setAmount(player, "skill.fly10min", new_amount);
  1046. msg.prefix(player, prefix_skill, string.concat("Used Fly 10min. New amount: ", string.number(new_amount)));
  1047. }
  1048. goto("wait");
  1049. }
  1050. if(tech_name == "skill.grow") {
  1051. amount = skill.getAmount(player, "skill.grow");
  1052. if(amount > 0) {
  1053. grow(player_loc, 5);
  1054. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  1055. new_amount = amount - 1;
  1056. skill.setAmount(player, "skill.grow", new_amount);
  1057. msg.prefix(player, prefix_skill, string.concat("Used Grow. New amount: ", string.number(new_amount)));
  1058. }
  1059. goto("wait");
  1060. }
  1061. if(tech_name == "skill.haste") {
  1062. amount = skill.getAmount(player, "skill.haste");
  1063. if(amount > 0) {
  1064. entity.addEffect(player, "haste", 2400, 0);
  1065. new_amount = amount - 1;
  1066. skill.setAmount(player, "skill.haste", new_amount);
  1067. msg.prefix(player, prefix_skill, string.concat("Used Haste. New amount: ", string.number(new_amount)));
  1068. }
  1069. goto("wait");
  1070. }
  1071. if(tech_name == "skill.speed") {
  1072. amount = skill.getAmount(player, "skill.speed");
  1073. if(amount > 0) {
  1074. entity.addEffect(player, "speed", 2400, 0);
  1075. new_amount = amount - 1;
  1076. skill.setAmount(player, "skill.speed", new_amount);
  1077. msg.prefix(player, prefix_skill, string.concat("Used Speed. New amount: ", string.number(new_amount)));
  1078. }
  1079. goto("wait");
  1080. }
  1081. if(tech_name == "skill.jump_boost") {
  1082. amount = skill.getAmount(player, "skill.jump_boost");
  1083. if(amount > 0) {
  1084. entity.addEffect(player, "jump_boost", 2400, 1);
  1085. new_amount = amount - 1;
  1086. skill.setAmount(player, "skill.jump_boost", new_amount);
  1087. msg.prefix(player, prefix_skill, string.concat("Used Jump Boost. New amount: ", string.number(new_amount)));
  1088. }
  1089. goto("wait");
  1090. }
  1091. if(tech_name == "skill.dolphin") {
  1092. amount = skill.getAmount(player, "skill.dolphin");
  1093. if(amount > 0) {
  1094. entity.addEffect(player, "dolphins_grace", 1200, 0);
  1095. new_amount = amount - 1;
  1096. skill.setAmount(player, "skill.dolphin", new_amount);
  1097. msg.prefix(player, prefix_skill, string.concat("Used Dolphin. New amount: ", string.number(new_amount)));
  1098. }
  1099. goto("wait");
  1100. }
  1101. if(tech_name == "skill.block_up") {
  1102. duration = data.getTimer(player, "block_up");
  1103. if(duration > 0) {
  1104. msg.prefix(player, prefix_skill, "Skill already active.");
  1105. goto("wait");
  1106. }
  1107. amount = skill.getAmount(player, "skill.block_up");
  1108. if(amount > 0) {
  1109. status.addTimed(player, 51, 1200, "Block Up");
  1110. data.setTimer(player, "block_up", 1200);
  1111. new_amount = amount - 1;
  1112. skill.setAmount(player, "skill.block_up", new_amount);
  1113. msg.prefix(player, prefix_skill, string.concat("Used Block Up. New amount: ", string.number(new_amount)));
  1114. }
  1115. goto("wait");
  1116. }
  1117. if(tech_name == "skill.block_down") {
  1118. duration = data.getTimer(player, "block_down");
  1119. if(duration > 0) {
  1120. msg.prefix(player, prefix_skill, "Skill already active.");
  1121. goto("wait");
  1122. }
  1123. amount = skill.getAmount(player, "skill.block_down");
  1124. if(amount > 0) {
  1125. status.addTimed(player, 52, 1200, "Block Down");
  1126. data.setTimer(player, "block_down", 1200);
  1127. new_amount = amount - 1;
  1128. skill.setAmount(player, "skill.block_down", new_amount);
  1129. msg.prefix(player, prefix_skill, string.concat("Used Block Down. New amount: ", string.number(new_amount)));
  1130. }
  1131. goto("wait");
  1132. }
  1133. }
  1134. goto("wait");
  1135. }
  1136. if(title_string == "§8Settings") {
  1137. if(inv_slot == 0) {
  1138. new_value = !player.getAutoCloseDoor(player);
  1139. player.setAutoCloseDoor(player, new_value);
  1140. inv.setItem(inv, inv_slot, item.create("minecraft:oak_door", 1, "§fAutomatic Doors", item.createLore(new_value)));
  1141. }
  1142. elseif(inv_slot == 1) {
  1143. new_value = !player.doesAcceptTpaRequests(player);
  1144. player.acceptTpaRequests(player, new_value);
  1145. inv.setItem(inv, inv_slot, item.create("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", item.createLore(new_value)));
  1146. }
  1147. elseif(inv_slot == 2) {
  1148. new_value = !player.getShowcoords(player);
  1149. player.setShowcoords(player, new_value);
  1150. inv.setItem(inv, inv_slot, item.create("minecraft:compass", 1, "§fShow Coords", item.createLore(new_value)));
  1151. if(!new_value) {
  1152. sb.remove(player, 2);
  1153. sb.remove(player, 3);
  1154. }
  1155. }
  1156. elseif(inv_slot == 3) {
  1157. new_value = !player.hasSittingActivated(player);
  1158. player.activateSitting(player, new_value);
  1159. inv.setItem(inv, inv_slot, item.create("minecraft:oak_stairs", 1, "§fStair-Sitting", item.createLore(new_value)));
  1160. }
  1161. elseif(inv_slot == 4) {
  1162. new_value = !hasPvpOn(player);
  1163. setPvp(player, new_value);
  1164. inv.setItem(inv, inv_slot, item.create("minecraft:iron_sword", 1, "§fPvP", item.createLore(new_value)));
  1165. }
  1166. elseif(inv_slot == 5) {
  1167. new_value = !player.getNoPetDamage(player);
  1168. player.setNoPetDamage(player, new_value);
  1169. inv.setItem(inv, inv_slot, item.create("minecraft:bone", 1, "§fNo Pet Damage", item.createLore(new_value)));
  1170. }
  1171. elseif(inv_slot == 6) {
  1172. new_value = !player.getTipLoop(player);
  1173. player.setTipLoop(player, new_value);
  1174. inv.setItem(inv, inv_slot, item.create("minecraft:oak_sign", 1, "§fShow tip loop", item.createLore(new_value)));
  1175. }
  1176. elseif(inv_slot == 7) {
  1177. new_value = !player.usesCustomMessage(player);
  1178. player.activateCustomMessage(player, new_value);
  1179. inv.setItem(inv, inv_slot, item.create("minecraft:oak_sign", 1, "§fUse custom messages", item.createLore(new_value)));
  1180. }
  1181. }
  1182. goto("wait");
  1183. }
  1184. if(event == "inv_close") {
  1185. if(set.contains(invseeids, inv_id)) {
  1186. set.remove(invseeids, inv_id);
  1187. }
  1188. goto("wait");
  1189. }
  1190. goto("wait");
  1191. @block
  1192. if(size == 0) {
  1193. @blockhelp
  1194. msg.prefix(player, prefix_plot, "/block ...");
  1195. msg.string(player, "§d - info §rPrints info about a block");
  1196. msg.string(player, "§d - public §rMakes a block public");
  1197. msg.string(player, "§d - remove §rRemoves a block from public list");
  1198. if(perm.has("block.fix", player)) {
  1199. msg.string(player, "§d - fix §rRemoves all air blocks from public list");
  1200. }
  1201. goto("wait");
  1202. }
  1203. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1204. if(arg0 == "info") {
  1205. block = player.getTargetBlock(player, 5);
  1206. if(block == null) {
  1207. msg.prefix(player, prefix_commands, "No block in sight.");
  1208. goto("wait");
  1209. }
  1210. target_loc = block.getLocation(block);
  1211. msg.string(player, string.getSpacer());
  1212. x = string.number(loc.getX(target_loc));
  1213. y = string.number(loc.getY(target_loc));
  1214. z = string.number(loc.getZ(target_loc));
  1215. msg.string(player, string.concat("§6W §r", world.getName(loc.getWorld(target_loc))));
  1216. msg.string(player, string.concat("§6X §r", x, " §6Y §r", y, " §6Z §r", z));
  1217. msg.string(player, string.concat("§6Type: §r", block.getType(block)));
  1218. msg.string(player, string.concat("§6Public: §r", plot.hasBlock(target_loc)));
  1219. msg.string(player, string.concat("§6Data: §r", block.getData(block)));
  1220. goto("wait");
  1221. }
  1222. if(arg0 == "public") {
  1223. if(size != 1) {
  1224. msg.prefix(player, prefix_commands, "/block public");
  1225. goto("wait");
  1226. }
  1227. block = player.getTargetBlock(player, 5);
  1228. if(block == null) {
  1229. msg.prefix(player, prefix_commands, "No block in sight.");
  1230. goto("wait");
  1231. }
  1232. location = block.getLocation(block);
  1233. plot.addBlock(location);
  1234. msg.prefix(player, prefix_commands, "Block whitelisted for interaction.");
  1235. plot.saveBlocks(loc.getWorld(location));
  1236. goto("wait");
  1237. }
  1238. if(arg0 == "remove") {
  1239. if(size != 1) {
  1240. msg.prefix(player, prefix_commands, "/block remove");
  1241. goto("wait");
  1242. }
  1243. block = player.getTargetBlock(player, 5);
  1244. if(block == null) {
  1245. msg.prefix(player, prefix_commands, "No block in sight.");
  1246. goto("wait");
  1247. }
  1248. location = block.getLocation(block);
  1249. plot.removeBlock(location);
  1250. msg.prefix(player, prefix_commands, "Block no longer whitelisted for interaction.");
  1251. plot.saveBlocks(loc.getWorld(location));
  1252. goto("wait");
  1253. }
  1254. if(arg0 == "fix") {
  1255. if(!perm.has("block.fix", player)) {
  1256. perm.no("block.fix", player);
  1257. goto("wait");
  1258. }
  1259. //temp_list verhindern concurrent modification
  1260. temp_list = list.new();
  1261. world = world.getOverWorld();
  1262. c = 0;
  1263. iter = plot.blockIterator(world);
  1264. while(hasNext(iter)) {
  1265. pos = next(iter);
  1266. x = plot.position.getX(pos);
  1267. y = plot.position.getY(pos);
  1268. z = plot.position.getZ(pos);
  1269. loc = loc.new(world, x, y, z);
  1270. block = block.get(loc);
  1271. if(block.isAir(block)) {
  1272. c++;
  1273. list.add(temp_list, loc);
  1274. }
  1275. }
  1276. iter = iterator(temp_list);
  1277. while(hasNext(iter)) {
  1278. plot.removeBlock(next(iter));
  1279. }
  1280. msg.prefix(player, prefix_commands, string.concat("Removed ", string.number(c), " blocks."));
  1281. goto("wait");
  1282. }
  1283. goto("blockhelp");
  1284. @settings
  1285. inv = inv.new("222222222", text.new("§8Settings"));
  1286. inv.setItem(inv, 0, item.create("minecraft:oak_door", 1, "§fAutomatic Doors", item.createLore(player.getAutoCloseDoor(player))));
  1287. inv.setItem(inv, 1, item.create("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", item.createLore(player.doesAcceptTpaRequests(player))));
  1288. inv.setItem(inv, 2, item.create("minecraft:compass", 1, "§fShow Coords", item.createLore(player.getShowcoords(player))));
  1289. inv.setItem(inv, 3, item.create("minecraft:oak_stairs", 1, "§fStair-Sitting", item.createLore(player.hasSittingActivated(player))));
  1290. inv.setItem(inv, 4, item.create("minecraft:iron_sword", 1, "§fPvP", item.createLore(hasPvpOn(player))));
  1291. inv.setItem(inv, 5, item.create("minecraft:bone", 1, "§fNo Pet Damage", item.createLore(player.getNoPetDamage(player))));
  1292. inv.setItem(inv, 6, item.create("minecraft:oak_sign", 1, "§fShow tip loop", item.createLore(player.getTipLoop(player))));
  1293. inv.setItem(inv, 7, item.create("minecraft:oak_sign", 1, "§fUse custom messages", item.createLore(player.usesCustomMessage(player))));
  1294. inv.open(inv, player);
  1295. goto("wait");
  1296. @loginrequests
  1297. if(size < 2) {
  1298. msg.prefix(sender, prefix_commands, "/loginrequests <player/all> <amount> [result]");
  1299. goto("wait");
  1300. }
  1301. amount = list.getIndex(args, 1);
  1302. if(!isDouble(amount) || amount < 0) {
  1303. msg.prefix(player, prefix_shop, "Positive number expected.");
  1304. goto("wait");
  1305. }
  1306. result = null;
  1307. if(size == 3) {
  1308. result = list.getIndex(args, 2);
  1309. if(result != "ALLOWED" &&
  1310. result != "KICK_FULL" &&
  1311. result != "KICK_BANNED" &&
  1312. result != "KICK_WHITELIST" &&
  1313. result != "KICK_OTHER") {
  1314. msg.prefix(player, prefix_shop, "No valid result.");
  1315. goto("wait");
  1316. }
  1317. }
  1318. p_name = list.getIndex(args, 0);
  1319. if(p_name == "all") {
  1320. list = loginrequests.getAll(amount, result);
  1321. } else {
  1322. p_uuid = player.getUuid(p_name);
  1323. if(p_uuid == null) {
  1324. msg.prefix(player, prefix_tips, "This player has never been online.");
  1325. goto("wait");
  1326. }
  1327. p_id = player.getId(p_uuid);
  1328. list = loginrequests.getPlayer(p_id, amount, result);
  1329. }
  1330. table = table.new("§b", 10, 11, 10);
  1331. msg.string(player, table.getStart(table));
  1332. msg.string(player, table.get(table, "Player", "Time", "Result"));
  1333. msg.string(player, table.getMiddle(table));
  1334. iter = iterator(list);
  1335. while(hasNext(iter)) {
  1336. a = next(iter);
  1337. msg.string(player, table.get(table, player.getNameFromId(a[0]), time.getString(a[1]), a[2]));
  1338. }
  1339. msg.string(player, table.getEnd(table));
  1340. goto("wait");
  1341. @shop
  1342. if(size == 0) {
  1343. @shop_help
  1344. msg.prefix(player, prefix_shop, "/shop ...");
  1345. msg.string(player, "§6 - create §rCreates a shop");
  1346. msg.string(player, "§6 - buy <amount> <price> §rSet buy settings");
  1347. msg.string(player, "§6 - sell <amount> <price> §rSet sell settings");
  1348. msg.string(player, "§6 - remove <buy/sell> §rRemove settings");
  1349. if(perm.has("shop.owner", player)) {
  1350. msg.string(player, "§6 - owner <player> §rSet shop owner");
  1351. }
  1352. goto("wait");
  1353. }
  1354. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1355. if(arg0 == "create") {
  1356. if(size != 1) {
  1357. msg.prefix(player, prefix_shop, "§6/shop create");
  1358. goto("wait");
  1359. }
  1360. sign_block = player.getTargetBlock(player, 5, false, false);
  1361. if(!block.isWallSign(sign_block)) {
  1362. msg.prefix(player, prefix_shop, "Look at a wall sign.");
  1363. goto("wait");
  1364. }
  1365. chest_block = block.mod(sign_block, 0, -1, 0);
  1366. if(!block.isChest(chest_block)) {
  1367. msg.prefix(player, prefix_shop, "No chest under sign.");
  1368. goto("wait");
  1369. }
  1370. if(sign.getString(sign_block, "FRONT", 0) != "") {
  1371. msg.prefix(player, prefix_shop, "Sign is not empty.");
  1372. goto("wait");
  1373. }
  1374. sign_loc = block.getLocation(sign_block);
  1375. sign.setString(sign_block, "FRONT", 0, "[Shop]");
  1376. sign.setString(sign_block, "FRONT", 3, string.number(player.getId(player)));
  1377. block.signSetWaxed(sign_block, true);
  1378. msg.prefix(player, prefix_shop, "Created Shop.");
  1379. goto("wait");
  1380. }
  1381. if(arg0 == "buy" || arg0 == "sell") {
  1382. if(size != 3) {
  1383. msg.prefix(player, prefix_shop, string.concat("§6/shop ", arg0, " <amount> <price>"));
  1384. goto("wait");
  1385. }
  1386. amount = list.getIndex(args, 1);
  1387. price = list.getIndex(args, 2);
  1388. if(!isDouble(amount) || !isDouble(price)) {
  1389. msg.prefix(player, prefix_shop, "Number expected.");
  1390. goto("wait");
  1391. }
  1392. amount = math.round(amount);
  1393. if(amount < 0) {
  1394. msg.prefix(player, prefix_shop, "Positive number expected.");
  1395. goto("wait");
  1396. }
  1397. if(price < 0) {
  1398. msg.prefix(player, prefix_shop, "Positive number expected.");
  1399. goto("wait");
  1400. }
  1401. if(price > 266304) {
  1402. msg.prefix(player, prefix_shop, string.concat("Maximum ", money.getString(266304), " allowed."));
  1403. goto("wait");
  1404. }
  1405. sign_block = player.getTargetBlock(player, 5, false, false);
  1406. if(!block.isWallSign(sign_block)) {
  1407. msg.prefix(player, prefix_shop, "Look at a wall sign.");
  1408. goto("wait");
  1409. }
  1410. chest_block = block.mod(sign_block, 0, -1, 0);
  1411. if(!block.isChest(chest_block)) {
  1412. msg.prefix(player, prefix_shop, "No chest under sign.");
  1413. goto("wait");
  1414. }
  1415. if(!shop.isOwner(player, sign_block)) {
  1416. msg.prefix(player, prefix_shop, "You are not the owner.");
  1417. goto("wait");
  1418. }
  1419. if(arg0 == "buy") {
  1420. sign.setString(sign_block, "FRONT", 1, string.concat("Buy ", string.number(amount), " for ", string.number(price)));
  1421. } else {
  1422. sign.setString(sign_block, "FRONT", 2, string.concat("Sell ", string.number(amount), " for ", string.number(price)));
  1423. }
  1424. msg.prefix(player, prefix_shop, "Price set.");
  1425. goto("wait");
  1426. }
  1427. if(arg0 == "remove") {
  1428. if(size != 2) {
  1429. msg.prefix(player, prefix_shop, "§6/shop remove <buy/sell>");
  1430. goto("wait");
  1431. }
  1432. sign_block = player.getTargetBlock(player, 5, false, false);
  1433. if(!block.isWallSign(sign_block)) {
  1434. msg.prefix(player, prefix_shop, "Look at a wall sign.");
  1435. goto("wait");
  1436. }
  1437. chest_block = block.mod(sign_block, 0, -1, 0);
  1438. if(!block.isChest(chest_block)) {
  1439. msg.prefix(player, prefix_shop, "No chest under sign.");
  1440. goto("wait");
  1441. }
  1442. if(!shop.isOwner(player, sign_block)) {
  1443. msg.prefix(player, prefix_shop, "You are not the owner.");
  1444. goto("wait");
  1445. }
  1446. arg1 = string.toLowerCase(list.getIndex(args, 1));
  1447. if(arg1 == "buy") {
  1448. sign.setString(sign_block, "FRONT", 1, "");
  1449. } elseif(arg1 == "sell") {
  1450. sign.setString(sign_block, "FRONT", 2, "");
  1451. } else {
  1452. msg.prefix(player, prefix_shop, "§6/shop remove <buy/sell>");
  1453. goto("wait");
  1454. }
  1455. msg.prefix(player, prefix_shop, "Price removed.");
  1456. goto("wait");
  1457. }
  1458. if(arg0 == "owner") {
  1459. if(!perm.has("shop.owner", player)) {
  1460. perm.no("shop.owner", player);
  1461. goto("wait");
  1462. }
  1463. if(size != 2) {
  1464. msg.prefix(player, prefix_shop, "§6/shop owner <player>");
  1465. goto("wait");
  1466. }
  1467. p_name = list.getIndex(args, 1);
  1468. p_uuid = player.getUuid(p_name);
  1469. if(p_uuid == null) {
  1470. msg.prefix(player, prefix_shop, "This player has never been online.");
  1471. goto("wait");
  1472. }
  1473. sign_block = player.getTargetBlock(player, 5, false, false);
  1474. if(!block.isWallSign(sign_block)) {
  1475. msg.prefix(player, prefix_shop, "Look at a wall sign.");
  1476. goto("wait");
  1477. }
  1478. sign.setString(sign_block, "FRONT", 3, string.number(player.getId(p_uuid)));
  1479. goto("wait");
  1480. }
  1481. goto("shop_help");
  1482. @mailbox
  1483. location = entity.getLocation(player);
  1484. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1485. if(!world.isSurvName(world_name)) {
  1486. msg.prefix(player, prefix_commands, "You can´t use this command in this world.");
  1487. goto("wait");
  1488. }
  1489. if(player.isOnAdventure(player) && !perm.has("mailbox.other", player)) {
  1490. msg.prefix(player, prefix_commands, "You can´t use the mailbox while on adventure.");
  1491. goto("wait");
  1492. }
  1493. if(size == 0) {
  1494. msg.prefix(player, prefix_commands, "/mailbox...");
  1495. if(perm.has("mailbox.other", player)) {
  1496. msg.string(player, "§6 - show [player] §rOpens a mailbox of a player.");
  1497. } else {
  1498. msg.string(player, "§6 - show §rOpens your mailbox.");
  1499. }
  1500. msg.string(player, "§6 - send <player> §rSends the item in your hand to a mailbox of a player.");
  1501. goto("wait");
  1502. }
  1503. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1504. if(arg0 == "send") {
  1505. if(size != 2) {
  1506. msg.prefix(player, prefix_commands, "/mailbox send <player>");
  1507. goto("wait");
  1508. }
  1509. item = living.getHand(player);
  1510. if(item.isAir(item)) {
  1511. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1512. goto("wait");
  1513. }
  1514. to_name = list.getIndex(args, 1);
  1515. if(!checkIfEverOnline(to_name)) {
  1516. msg.prefix(player, prefix_commands, "This player has never been online.");
  1517. goto("wait");
  1518. }
  1519. to_player_id = player.getId(player.getUuid(to_name));
  1520. if(!mailbox.sendItem(to_player_id, item)) {
  1521. msg.prefix(player, prefix_commands, "No free space in mailbox.");
  1522. goto("wait");
  1523. }
  1524. living.setEquip(player, read.slot("HAND"), null);
  1525. msg.send(player, to_name, prefix_commands, string.concat(player.getName(player), " sent you items to your mailbox."), true);
  1526. msg.prefix(player, prefix_commands, "Item sent to player.");
  1527. goto("wait");
  1528. }
  1529. if(arg0 == "show") {
  1530. if(size == 1) {
  1531. player_id = player.getId(player);
  1532. mailbox.show(player, player_id, false);
  1533. mailbox.clear(player_id);
  1534. goto("wait");
  1535. }
  1536. if(size == 2) {
  1537. if(!perm.has("mailbox.other", player)) {
  1538. perm.no("mailbox.other", player);
  1539. goto("wait");
  1540. }
  1541. from_name = list.getIndex(args, 1);
  1542. if(!checkIfEverOnline(from_name)) {
  1543. msg.prefix(player, prefix_commands, "This player has never been online.");
  1544. goto("wait");
  1545. }
  1546. from_player_id = player.getId(player.getUuid(from_name));
  1547. mailbox.show(player, from_player_id, true);
  1548. goto("wait");
  1549. }
  1550. if(perm.has("mailbox.other", player)) {
  1551. msg.prefix(player, prefix_commands, "/mailbox show [player]");
  1552. } else {
  1553. msg.prefix(player, prefix_commands, "/mailbox show");
  1554. }
  1555. }
  1556. goto("wait");
  1557. @RickRole_play
  1558. if(rickIndex < rick_sounds_amount) {
  1559. pitch = list.getIndex(RickRollSounds, rickIndex);
  1560. PlayVoteSound(pitch);
  1561. ticks = 2 + list.getIndex(RickRollSoundDists, rickIndex);
  1562. sgoto(ticks, "RickRole_play");
  1563. }
  1564. rickIndex++;
  1565. goto("wait");
  1566. @bobbycar_play
  1567. if(bobbycarIndex < bcar_sounds_amount) {
  1568. pitch = list.getIndex(bobbyCarSounds, bobbycarIndex);
  1569. PlayVoteSound(pitch);
  1570. ticks = list.getIndex(bobbyCarSoundDists, bobbycarIndex);
  1571. sgoto(ticks, "bobbycar_play");
  1572. }
  1573. bobbycarIndex++;
  1574. goto("wait");
  1575. function PlayVoteSound(pitch) {
  1576. iter = iterator(players.toList());
  1577. while(hasNext(iter)) {
  1578. online_player = next(iter);
  1579. if(online_player == null) {
  1580. continue;
  1581. }
  1582. sound.spawnForPlayer(online_player, $sound_flute, $sound_category_master, 1, pitch);
  1583. sound.spawnForPlayer(online_player, $sound_harp, $sound_category_master, 1, pitch);
  1584. sound.spawnForPlayer(online_player, $sound_pling, $sound_category_master, 1, pitch);
  1585. }
  1586. }
  1587. @resetMoneyBoost
  1588. money.setBoostFactor(1);
  1589. online_list = players.toList();
  1590. iter = iterator(online_list);
  1591. while(hasNext(iter)) {
  1592. p = next(iter);
  1593. sb.remove(p, 5);
  1594. }
  1595. goto("wait");
  1596. @skip_night_loop
  1597. skip_night_counter--;
  1598. if(skip_night_counter == 0) {
  1599. msg.online(prefix_commands, "Skip night results:");
  1600. msg("online", text.new(string.concat("§e - §rYes: §e", string.number(skip_night_yes))));
  1601. msg("online", text.new(string.concat("§e - §rNo: §e", string.number(skip_night_no))));
  1602. msg("online", text.new(string.concat("§e - §rI don´t care: §e", string.number(skip_night_no_care))));
  1603. if(skip_night_yes > skip_night_no) {
  1604. world = world.getOverWorld();
  1605. world.setTime(world, 0);
  1606. }
  1607. set.clear(skip_night_set);
  1608. last_skip_night = time.getMillis();
  1609. iter = iterator(skip_night_yes_list);
  1610. while(hasNext(iter)) {
  1611. p = player.get(next(iter));
  1612. if(p != null) {
  1613. player.resetSleep(p);
  1614. }
  1615. }
  1616. sgoto(8400, "reset_skip_night");
  1617. goto("wait");
  1618. }
  1619. sgoto(20, "skip_night_loop");
  1620. goto("wait");
  1621. @reset_skip_night
  1622. skip_night_started = false;
  1623. goto("wait");
  1624. @skills
  1625. //skills [player]
  1626. if(size == 0) {
  1627. skill.showAll(player, player);
  1628. goto("wait");
  1629. }
  1630. if(!perm.has("skills.other", player)) {
  1631. perm.no("skills.other", player);
  1632. goto("wait");
  1633. }
  1634. p_name = list.getIndex(args, 0);
  1635. p_uuid = player.getUuid(p_name);
  1636. if(p_uuid == null) {
  1637. msg.prefix(player, prefix_tips, "This player has never been online.");
  1638. goto("wait");
  1639. }
  1640. from_p_id = player.getId(p_uuid);
  1641. skill.showAll(from_p_id, player);
  1642. goto("wait");
  1643. @infopoint1
  1644. msg.string(player, string.getSpacer());
  1645. msg.prefix(player, "§eSurvival", "§aEnjoy classic survival extended by our plugin.");
  1646. goto("wait");
  1647. @infopoint2
  1648. msg.string(player, string.getSpacer());
  1649. 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.");
  1650. goto("wait");
  1651. @infopoint3
  1652. msg.string(player, string.getSpacer());
  1653. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  1654. goto("wait");
  1655. @infopoint4
  1656. msg.string(player, string.getSpacer());
  1657. 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.");
  1658. goto("wait");
  1659. @infopoint5
  1660. msg.string(player, string.getSpacer());
  1661. 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.");
  1662. goto("wait");
  1663. @infopoint6
  1664. msg.string(player, string.getSpacer());
  1665. msg.prefix(player, "§eShops", "§aUse our admin-shop to trade, or create an own shop with /shop. We might do a YT-tutorial on this.");
  1666. goto("wait");
  1667. @infopoint7
  1668. msg.string(player, string.getSpacer());
  1669. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  1670. goto("wait");
  1671. @infopoint8
  1672. msg.string(player, string.getSpacer());
  1673. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  1674. goto("wait");
  1675. @infopoint9
  1676. msg.string(player, string.getSpacer());
  1677. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  1678. goto("wait");
  1679. @infopoint10
  1680. msg.string(player, string.getSpacer());
  1681. msg.prefix(player, "§eRules", "§aWe have no rules, except to be respectful. Look at our jokes instead.");
  1682. goto("wait");
  1683. @infopoint11
  1684. msg.string(player, string.getSpacer());
  1685. msg.prefix(player, "§eNote", "§aEverything is self-coded. Worldedit is the only external mod we use.");
  1686. goto("wait");
  1687. @infopoint12
  1688. msg.string(player, string.getSpacer());
  1689. msg.prefix(player, "§eNote", "§aBe Creative in our creative world.");
  1690. goto("wait");
  1691. @party
  1692. if(size == 0) {
  1693. @partyhelp
  1694. msg.prefix(player, prefix_party, "/party ...");
  1695. msg.string(player, "§5 - invite <player> §rInvite a player");
  1696. msg.string(player, "§5 - invite friends §rInvites all online friends");
  1697. msg.string(player, "§5 - accept <player> §rAccept an invitation");
  1698. msg.string(player, "§5 - deny <player> §rDeny an invitation");
  1699. msg.string(player, "§5 - kick <player> §rKick a player");
  1700. msg.string(player, "§5 - leave §rLeave the party");
  1701. msg.string(player, "§5 - promote <player> §rPromote a player");
  1702. msg.string(player, "§5 - demote <player> §rDemote a player");
  1703. msg.string(player, "§5 - disband §rDisband a party");
  1704. msg.string(player, "§5 - list §rParty information");
  1705. msg.string(player, "§5 - <message> §rSends a party message");
  1706. goto("wait");
  1707. }
  1708. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1709. if(arg0 == "list") {
  1710. if(size != 1) {
  1711. msg.prefix(player, prefix_party, "§5/party list");
  1712. } else {
  1713. if(!player.isInParty(player)) {
  1714. msg.prefix(player, prefix_party, "You are not in a party.");
  1715. goto("wait");
  1716. }
  1717. list = party.getList(player.getPartyId(player));
  1718. width = 1;
  1719. if(list.getSize(list) > 9) {
  1720. width = 2;
  1721. }
  1722. table = table.new("§5", width, 13, 7);
  1723. msg.string(player, table.getStart(table));
  1724. msg.string(player, table.get(table, "§d#", "§d§lName", "§d§lRole"));
  1725. msg.string(player, table.getMiddle(table));
  1726. iter = iterator(list);
  1727. c = 0;
  1728. while(hasNext(iter)) {
  1729. c++;
  1730. p = player.get(next(iter));
  1731. msg.string(player, table.get(table, string.number(c), player.getName(p), player.getPartyRank(p)));
  1732. }
  1733. msg.string(player, table.getEnd(table));
  1734. }
  1735. goto("wait");
  1736. }
  1737. if(arg0 == "leave") {
  1738. if(size != 1) {
  1739. msg.prefix(player, prefix_party, "§5/party leave");
  1740. } else {
  1741. if(!player.isInParty(player)) {
  1742. msg.prefix(player, prefix_party, "You are not in a party.");
  1743. goto("wait");
  1744. }
  1745. party.kickPlayer(player, "leave");
  1746. }
  1747. goto("wait");
  1748. }
  1749. if(arg0 == "disband") {
  1750. if(size != 1) {
  1751. msg.prefix(player, prefix_party, "§5/party disband");
  1752. } else {
  1753. if(!player.isInParty(player)) {
  1754. msg.prefix(player, prefix_party, "You are not in a party.");
  1755. goto("wait");
  1756. }
  1757. if(!player.isPartyLeader(player)) {
  1758. msg.prefix(player, prefix_party, "You are not the party leader.");
  1759. goto("wait");
  1760. }
  1761. party.delete(player.getPartyId(player));
  1762. }
  1763. goto("wait");
  1764. }
  1765. if(arg0 == "kick") {
  1766. if(size != 2) {
  1767. msg.prefix(player, prefix_party, "§5/party kick <player>");
  1768. } else {
  1769. if(!player.isInParty(player)) {
  1770. msg.prefix(player, prefix_party, "You are not in a party.");
  1771. goto("wait");
  1772. }
  1773. if(!player.isPartyLeaderOrMod(player)) {
  1774. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1775. goto("wait");
  1776. }
  1777. pname = list.getIndex(args, 1);
  1778. if(!checkIfEverOnline(pname)) {
  1779. msg.prefix(player, prefix_party, "This player has never been online.");
  1780. goto("wait");
  1781. }
  1782. p = read.player(pname);
  1783. if(p == null) {
  1784. msg.prefix(player, prefix_party, "This player is not online.");
  1785. goto("wait");
  1786. }
  1787. if(player == p) {
  1788. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1789. goto("wait");
  1790. }
  1791. if(!party.same(p, player)) {
  1792. msg.prefix(player, prefix_party, "This player is not in your party.");
  1793. goto("wait");
  1794. }
  1795. ownrank = player.getPartyRank(player);
  1796. if(ownrank == "Moderator") {
  1797. if(player.isPartyLeaderOrMod(p)) {
  1798. msg.prefix(player, prefix_party, "You can´t kick this player.");
  1799. goto("wait");
  1800. }
  1801. }
  1802. party.kickPlayer(p, "kick");
  1803. }
  1804. goto("wait");
  1805. }
  1806. if(arg0 == "promote" || arg0 == "demote") {
  1807. if(size != 2) {
  1808. msg.prefix(player, prefix_party, string.concat("§5/party ", arg0, " <player>"));
  1809. } else {
  1810. pname = list.getIndex(args, 1);
  1811. if(!player.isInParty(player)) {
  1812. msg.prefix(player, prefix_party, "You are not in a party.");
  1813. goto("wait");
  1814. }
  1815. if(!player.isPartyLeader(player)) {
  1816. msg.prefix(player, prefix_party, "You are not the party leader.");
  1817. goto("wait");
  1818. }
  1819. if(!checkIfEverOnline(pname)) {
  1820. msg.prefix(player, prefix_party, "This player has never been online.");
  1821. goto("wait");
  1822. }
  1823. p = read.player(pname);
  1824. if(p == null) {
  1825. msg.prefix(player, prefix_party, "This player is not online.");
  1826. goto("wait");
  1827. }
  1828. if(player == p) {
  1829. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1830. goto("wait");
  1831. }
  1832. if(!party.same(p, player)) {
  1833. msg.prefix(player, prefix_party, "This player is not in your party.");
  1834. goto("wait");
  1835. }
  1836. partyid = player.getPartyId(player);
  1837. rank = player.getPartyRank(p);
  1838. if(arg0 == "promote") {
  1839. if(rank == "Player") {
  1840. player.setPartyRank(p, "Moderator");
  1841. party.sendMessage(partyid, string.concat("§r", pname, " is now Moderator."));
  1842. } elseif(rank == "Moderator") {
  1843. player.setPartyRank(p, "Leader");
  1844. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1845. party.sendMessage(partyid, string.concat("§r", pname, " is now Leader."));
  1846. }
  1847. } elseif(arg0 == "demote") {
  1848. if(rank == "Moderator") {
  1849. player.setPartyRank(p, "Player");
  1850. party.sendMessage(partyid, string.concat("§r", pname, " is no longer Moderator."));
  1851. } else {
  1852. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1853. }
  1854. }
  1855. }
  1856. goto("wait");
  1857. }
  1858. if(arg0 == "invite") {
  1859. if(size != 2) {
  1860. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1861. } else {
  1862. arg1 = list.getIndex(args, 1);
  1863. if(arg1 == "friends") {
  1864. player_id = player.getId(player);
  1865. friends = friend.getListOnline(player_id);
  1866. iter = iterator(friends);
  1867. while(hasNext(iter)) {
  1868. f_name = next(iter);
  1869. f = read.player(f_name);
  1870. party.invitePlayer(player, f);
  1871. }
  1872. msg.prefix(player, prefix_party, "All online friends invited.");
  1873. goto("wait");
  1874. }
  1875. p_name = arg1;
  1876. if(!checkIfEverOnline(p_name)) {
  1877. msg.prefix(player, prefix_party, "This player has never been online.");
  1878. goto("wait");
  1879. }
  1880. p = read.player(p_name);
  1881. temp = party.invitePlayer(player, p);
  1882. if(temp == "inviteeNotOnline") {
  1883. msg.prefix(player, prefix_party, "This player is not online.");
  1884. } elseif(temp == "inviterEqualsInvitee") {
  1885. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1886. } elseif(temp == "inviterNotPermitted") {
  1887. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1888. } elseif(temp == "inviteeAlreadyInParty") {
  1889. msg.prefix(player, prefix_party, "This player is already in your party.");
  1890. } elseif(temp == "inviteeAlreadyInvited") {
  1891. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1892. } else {
  1893. msg.prefix(player, prefix_party, "Invitation sent.");
  1894. }
  1895. }
  1896. goto("wait");
  1897. }
  1898. if(arg0 == "accept") {
  1899. if(size != 2) {
  1900. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1901. } else {
  1902. if(player.isInParty(player)) {
  1903. msg.prefix(player, prefix_party, "You are already in a party.");
  1904. goto("wait");
  1905. }
  1906. pname = list.getIndex(args, 1);
  1907. if(!checkIfEverOnline(pname)) {
  1908. msg.prefix(player, prefix_party, "This player has never been online.");
  1909. goto("wait");
  1910. }
  1911. p = read.player(pname);
  1912. if(p == null) {
  1913. msg.prefix(player, prefix_party, "This player is no longer online.");
  1914. goto("wait");
  1915. }
  1916. player_uuid = player.getUuid(player);
  1917. p_uuid = player.getUuid(p);
  1918. list = map.get(party_invitations, player_uuid);
  1919. if(list == null || !list.contains(list, p_uuid)) {
  1920. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1921. goto("wait");
  1922. }
  1923. if(player.isInParty(p)) { //wenn einlader bereits in party
  1924. partyid = player.getPartyId(p);
  1925. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1926. party.addPlayer(partyid, player);
  1927. player.setPartyRank(player, "Player");
  1928. } else {
  1929. msg.prefix(player, prefix_party, "This player is already in another party.");
  1930. goto("wait");
  1931. }
  1932. } else {
  1933. partyid = map.get(party_invite_ids, p_uuid);
  1934. party.setList(partyid, list.new());
  1935. party.addPlayer(partyid, p);
  1936. party.addPlayer(partyid, player);
  1937. player.setPartyRank(p, "Leader");
  1938. player.setPartyRank(player, "Player");
  1939. msg.prefix(p, prefix_party, "The party was created.");
  1940. }
  1941. list.clear(list); //Einladungs-Liste von oben
  1942. party.sendMessage(partyid, string.concat("§r", player.getName(player), " joined the party."));
  1943. }
  1944. goto("wait");
  1945. }
  1946. if(arg0 == "deny") {
  1947. if(size != 2) {
  1948. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1949. } else {
  1950. player_uuid = player.getUuid(player);
  1951. list = map.get(party_invitations, player_uuid);
  1952. if(list != null) {
  1953. pname = list.getIndex(args, 1);
  1954. p = read.player(pname);
  1955. if(p == null) {
  1956. msg.prefix(player, prefix_party, "This player is no longer online.");
  1957. goto("wait");
  1958. }
  1959. p_uuid = player.getUuid(p);
  1960. if(list == null || !list.contains(list, p_uuid)) {
  1961. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1962. goto("wait");
  1963. }
  1964. index = list.getIndexOf(list, p_uuid);
  1965. list.remove(list, p_uuid);
  1966. keytimes = map.get(delkeytimes, player_uuid);
  1967. list.removeIndex(keytimes, index);
  1968. p = read.player(pname);
  1969. if(p != null) {
  1970. msg.prefix(p, prefix_party, string.concat("§r", player.getName(player), " has denied your invitation."));
  1971. }
  1972. msg.prefix(player, prefix_party, string.concat("Invitation from ", pname, " denied."));
  1973. }
  1974. }
  1975. goto("wait");
  1976. }
  1977. if(player.isInParty(player)) {
  1978. message = string.concat(player.getName(player), " §1| §r", string.concatList(args, " ", 0, list.getSize(args) - 1));
  1979. party.sendMessage(player.getPartyId(player), message);
  1980. goto("wait");
  1981. }
  1982. goto("partyhelp");
  1983. @setmessage
  1984. if(size == 0) {
  1985. @setmessagehelp
  1986. msg.prefix(player, prefix_commands, "/setmessage ...");
  1987. msg.string(player, "§e- join <message> §rSets your join message");
  1988. msg.string(player, "§e- leave <message> §rSets your leave message");
  1989. msg.string(player, "§e- death <message> §rSets your death message");
  1990. msg.string(player, "§e- info §rShows you set messages");
  1991. if(perm.has("setmessage.delete", player)) {
  1992. msg.string(player, "§e- delete <player> §rDeletes a players messages");
  1993. }
  1994. goto("wait");
  1995. }
  1996. arg0 = string.toLowerCase(list.getIndex(args, 0));
  1997. if(arg0 == "info") {
  1998. if(player.usesCustomMessage(player)) {
  1999. msg.prefix(player, prefix_commands, "Custom messages are activated.");
  2000. } else {
  2001. msg.prefix(player, prefix_commands, "Custom messages are deactivated. /settings");
  2002. }
  2003. fullname = player.getFullName(player);
  2004. message = player.getJoinMessage(player);
  2005. if(message == null) {
  2006. msg.prefix(player, prefix_commands, "No join message set.");
  2007. } else {
  2008. msg.prefix(player, prefix_commands, string.concat("§a§l> §r", fullname, " §9", message));
  2009. }
  2010. message = player.getLeaveMessage(player);
  2011. if(message == null) {
  2012. msg.prefix(player, prefix_commands, "No leave message set.");
  2013. } else {
  2014. msg.prefix(player, prefix_commands, string.concat("§c§l> §r", fullname, " §9", message));
  2015. }
  2016. message = player.getDeathMessage(player);
  2017. if(message == null) {
  2018. msg.prefix(player, prefix_commands, "No death message set.");
  2019. } else {
  2020. msg.prefix(player, prefix_commands, string.concat("§0§lx §r", fullname, " §9", message));
  2021. }
  2022. goto("wait");
  2023. }
  2024. if(arg0 == "join") {
  2025. if(size < 2) {
  2026. goto("setmessagehelp");
  2027. }
  2028. message = string.concatList(args, " ", 1, size - 1);
  2029. player.setJoinMessage(player, message);
  2030. msg.prefix(player, prefix_commands, "Join message set.");
  2031. goto("wait");
  2032. }
  2033. if(arg0 == "leave") {
  2034. if(size < 2) {
  2035. goto("setmessagehelp");
  2036. }
  2037. message = string.concatList(args, " ", 1, size - 1);
  2038. player.setLeaveMessage(player, message);
  2039. msg.prefix(player, prefix_commands, "Leave message set.");
  2040. goto("wait");
  2041. }
  2042. if(arg0 == "death") {
  2043. if(size < 2) {
  2044. goto("setmessagehelp");
  2045. }
  2046. message = string.concatList(args, " ", 1, size - 1);
  2047. player.setDeathMessage(player, message);
  2048. msg.prefix(player, prefix_commands, "Death message set.");
  2049. goto("wait");
  2050. }
  2051. if(arg0 == "delete") {
  2052. if(size == 1) {
  2053. p_uuid = player.getUuid(player);
  2054. } elseif(size == 2) {
  2055. if(!perm.has("setmessage.delete", player)) {
  2056. perm.no("setmessage.delete", player);
  2057. goto("wait");
  2058. }
  2059. p_name = list.getIndex(args, 1);
  2060. if(!checkIfEverOnline(p_name)) {
  2061. msg.prefix(player, prefix_commands, "This player has never been online.");
  2062. goto("wait");
  2063. }
  2064. p_uuid = player.getUuid(p_name);
  2065. } else {
  2066. goto("setmessagehelp");
  2067. }
  2068. p_id = player.getId(p_uuid);
  2069. player.setJoinMessage(p_id, "null");
  2070. player.setLeaveMessage(p_id, "null");
  2071. msg.prefix(player, prefix_commands, "Messages deleted.");
  2072. goto("wait");
  2073. }
  2074. goto("wait");
  2075. @lag
  2076. msg.prefix(player, prefix_commands, "Lag test is performed. Please wait...");
  2077. a = array.new(2);
  2078. a[0] = player.getUuid(player);
  2079. a[1] = time.getMillis();
  2080. list.add(lag_list, a);
  2081. sgoto(100, "do_lag_test");
  2082. goto("wait");
  2083. @do_lag_test
  2084. t = time.getMillis();
  2085. a = list.getIndex(lag_list, 0);
  2086. list.removeIndex(lag_list, 0);
  2087. p_uuid = a[0];
  2088. t_old = a[1];
  2089. t = math.roundComma((t - t_old) / 50 / 5, 2); //ms -> ticks
  2090. t = 40 - t;
  2091. p = player.get(p_uuid);
  2092. if(p != null) {
  2093. msg.prefix(p, prefix_commands, "Expected: 20 ticks/sec");
  2094. msg.prefix(p, prefix_commands, string.concat("Measured: ", string.number(t), " ticks/sec"));
  2095. }
  2096. goto("wait");
  2097. @live
  2098. boolean = !player.isLive(player);
  2099. player.setLive(player, boolean);
  2100. player.setHeadName(player);
  2101. player.setTabName(player);
  2102. msg.prefix(player, prefix_commands, "Live toggled.");
  2103. goto("wait");
  2104. @lightning
  2105. block = player.getTargetBlock(player, 50);
  2106. if(block == null) {
  2107. msg.prefix(player, prefix_commands, "No block in sight.");
  2108. goto("wait");
  2109. }
  2110. entity.spawn(block.getLocation(block), "LIGHTNING");
  2111. goto("wait");
  2112. @ride
  2113. entity = player.getTargetEntity(player, 5);
  2114. if(entity == null) {
  2115. msg.prefix(player, prefix_commands, "No entity found.");
  2116. goto("wait");
  2117. }
  2118. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  2119. if(world.isGamesName(world_name)) {
  2120. if(player.hasMinigame(player) || (perm.has("ride", player) && !perm.has("isTeam", player))) {
  2121. msg.prefix(player, prefix_commands, "You can´t use this now.");
  2122. goto("wait");
  2123. }
  2124. }
  2125. entity.mount(player, entity);
  2126. goto("wait");
  2127. @vanish
  2128. //vanish [on/off] [player]
  2129. if(size == 0) {
  2130. if(set.contains(vanish_set, player.getUuid(player))) {
  2131. bool = "off";
  2132. } else {
  2133. bool = "on";
  2134. }
  2135. }
  2136. if(size >= 1) {
  2137. bool = list.getIndex(args, 0);
  2138. }
  2139. if(size > 1) {
  2140. p_name = list.getIndex(args, 1);
  2141. p = read.player(p_name);
  2142. if(p == null) {
  2143. msg.prefix(player, prefix_commands, "This player is not online.");
  2144. goto("wait");
  2145. }
  2146. } else {
  2147. p = player;
  2148. }
  2149. p_name = player.getName(p);
  2150. player_name = player.getName(player);
  2151. if(bool == "on") {
  2152. if(p != player) {
  2153. msg.prefix(player, prefix_commands, string.concat(p_name, " has been vanished."));
  2154. msg.prefix(p, prefix_commands, string.concat("You have been vanished by ", player_name, "."));
  2155. } else {
  2156. msg.prefix(p, prefix_commands, "You are vanished.");
  2157. }
  2158. set.add(vanish_set, player.getUuid(p));
  2159. player.hideOnline(p);
  2160. } elseif(bool == "off") {
  2161. if(p != player) {
  2162. msg.prefix(player, prefix_commands, string.concat(p_name, " is no longer vanished."));
  2163. msg.prefix(p, prefix_commands, string.concat("You are no longer vanished caused by ", player_name, "."));
  2164. } else {
  2165. msg.prefix(p, prefix_commands, "You are no longer vanished.");
  2166. }
  2167. set.remove(vanish_set, player.getUuid(p));
  2168. player.showOnline(p);
  2169. } else {
  2170. msg.prefix(player, prefix_commands, "/vanish [on/off] [player]");
  2171. }
  2172. goto("wait");
  2173. @user
  2174. if(size == 0) {
  2175. @user_help
  2176. msg.prefix(sender, prefix_commands, "/user ...");
  2177. if(perm.has("user.other", player)) {
  2178. msg.string(sender, "§6 - info [player] §rReturns info about a user");
  2179. } else {
  2180. msg.string(sender, "§6 - info §rReturns info about you");
  2181. }
  2182. if(perm.has("user.money", player)) {
  2183. msg.string(sender, "§6 - addmoney <player> <money> §rAdds money to a player");
  2184. msg.string(sender, "§6 - setmoney <player> <money> §rSets the money of a player");
  2185. }
  2186. goto("wait");
  2187. }
  2188. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2189. if(arg0 == "info") {
  2190. if(size < 2) {
  2191. if(!isPlayer(sender)) {
  2192. msg.prefix(sender, prefix_commands, "/user info <player>");
  2193. goto("wait");
  2194. }
  2195. p_name = player.getName(player);
  2196. p_uuid = player.getUuid(p_name);
  2197. } else {
  2198. if(!perm.has("user.other", sender)) {
  2199. perm.no("user.other", sender);
  2200. goto("wait");
  2201. }
  2202. p_name = list.getIndex(args, 1);
  2203. if(!checkIfEverOnline(p_name)) {
  2204. msg.prefix(sender, prefix_commands, "This player has never been online.");
  2205. goto("wait");
  2206. }
  2207. p_uuid = player.getUuid(p_name);
  2208. p_name = player.getName(p_uuid);
  2209. }
  2210. p = read.player(p_name);
  2211. p_id = player.getId(p_uuid);
  2212. if(p == null) {
  2213. p_or_id = p_id;
  2214. } else {
  2215. p_or_id = p;
  2216. }
  2217. table = table.new("§8", 7, 24);
  2218. msg.string(sender, table.getStart(table));
  2219. msg.string(sender, table.get(table, "Player", p_name));
  2220. msg.string(sender, table.getMiddle(table));
  2221. msg.string(sender, table.get(table, "Playtime", string.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  2222. msg.string(sender, table.get(table, "Joins", string.number(player.getJoins(p_or_id))));
  2223. msg.string(sender, table.get(table, "First Join", time.getDateString(player.getFirstJoin(p_or_id))));
  2224. msg.string(sender, table.get(table, "Last Join", time.getDateString(player.getLastJoin(p_or_id))));
  2225. if(perm.has("user.other", sender)) {
  2226. msg.string(sender, table.get(table, "UUID", p_uuid));
  2227. msg.string(sender, table.get(table, "ID", string.number(p_id)));
  2228. if(player.isLive(sender)) {
  2229. msg.string(sender, table.get(table, "IP", "§7§oHidden"));
  2230. } else {
  2231. msg.string(sender, table.get(table, "IP", player.getLoggedIp(p_or_id)));
  2232. }
  2233. snuvis = money.get(p_or_id);
  2234. msg.string(sender, table.get(table, "Money", string.concat(money.getString(snuvis), " (",string.number(snuvis), ")")));
  2235. }
  2236. msg.string(sender, table.get(table, "Rank", getRank(p_or_id)));
  2237. msg.string(sender, table.get(table, "PvP", hasPvpOn(p_or_id)));
  2238. msg.string(sender, table.get(table, "Quests", string.number(quest.getCounter(p_or_id))));
  2239. msg.string(sender, table.get(table, "Adventures", string.number(player.getAdventureAmounts(p_or_id))));
  2240. msg.string(sender, table.getEnd(table));
  2241. goto("wait");
  2242. }
  2243. if(arg0 == "addmoney") {
  2244. if(!perm.has("user.money", sender)) {
  2245. perm.no("user.money", sender);
  2246. goto("wait");
  2247. }
  2248. if(size != 3) {
  2249. msg.prefix(sender, prefix_commands, "/user addmoney <player> <money>");
  2250. goto("wait");
  2251. }
  2252. p_name = list.getIndex(args, 1);
  2253. if(!checkIfEverOnline(p_name)) {
  2254. msg.prefix(sender, prefix_commands, "This player has never been online.");
  2255. goto("wait");
  2256. }
  2257. money = list.getIndex(args, 2);
  2258. if(!isDouble(money)) {
  2259. msg.prefix(sender, prefix_commands, "Number expected.");
  2260. goto("wait");
  2261. }
  2262. p_uuid = player.getUuid(p_name);
  2263. p_id = player.getId(p_uuid);
  2264. money.add(p_id, money);
  2265. msg.prefix(sender, prefix_commands, string.concat("Added ", money.getString(money), " to ", player.getName(p_uuid), "."));
  2266. goto("wait");
  2267. }
  2268. if(arg0 == "setmoney") {
  2269. if(!perm.has("user.money", sender)) {
  2270. perm.no("user.money", sender);
  2271. goto("wait");
  2272. }
  2273. if(size != 3) {
  2274. msg.prefix(sender, prefix_commands, "/user setmoney <player> <money>");
  2275. goto("wait");
  2276. }
  2277. p_name = list.getIndex(args, 1);
  2278. if(!checkIfEverOnline(p_name)) {
  2279. msg.prefix(sender, prefix_commands, "This player has never been online.");
  2280. goto("wait");
  2281. }
  2282. money = list.getIndex(args, 2);
  2283. if(!isDouble(money)) {
  2284. msg.prefix(sender, prefix_commands, "Number expected.");
  2285. goto("wait");
  2286. }
  2287. p_uuid = player.getUuid(p_name);
  2288. p_id = player.getId(p_uuid);
  2289. setMoney(p_id, money);
  2290. msg.prefix(sender, prefix_commands, string.concat("Set ", string.number(money), " snuvis for ", player.getName(p_uuid), "."));
  2291. goto("wait");
  2292. }
  2293. goto("user_help");
  2294. @quest
  2295. if(size == 0) {
  2296. @quest_syntax
  2297. msg.prefix(player, prefix_quest, "/quest ...");
  2298. msg.string(player, "§5 - see §rSee all active quests");
  2299. msg.string(player, "§5 - term <player> §rTerminates a quest of a player");
  2300. goto("wait");
  2301. }
  2302. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2303. if(arg0 == "see") {
  2304. if(size != 1) {
  2305. msg.prefix(player, prefix_quest, "/quest see");
  2306. goto("wait");
  2307. }
  2308. msg.prefix(player, prefix_quest, "Active quests:");
  2309. quest_map = quest.getIds();
  2310. iter = map.iterator(quest_map);
  2311. while(hasNext(iter)) {
  2312. element = next(iter);
  2313. key = map.getKey(element);
  2314. value = map.getValue(element);
  2315. script = script.getFromId(value);
  2316. if(script == null) {
  2317. continue;
  2318. }
  2319. q_name = script.getVar(script, "quest_name");
  2320. stage = script.getVar(script, "stage");
  2321. all_stages = script.getVar(script, "all_stages");
  2322. msg.string(player, string.concat( "§d- §r", player.getName(key), " ", string.number(value), " ", q_name, " (", string.number(stage), "/", string.number(all_stages), ")"));
  2323. }
  2324. goto("wait");
  2325. }
  2326. if(arg0 == "term") {
  2327. if(size != 2) {
  2328. msg.prefix(player, prefix_quest, "/quest term <player>");
  2329. goto("wait");
  2330. }
  2331. p_name = list.getIndex(args, 1);
  2332. if(!checkIfEverOnline(p_name)) {
  2333. msg.prefix(player, prefix_quest, "This player has never been online.");
  2334. goto("wait");
  2335. }
  2336. p = read.player(p_name);
  2337. if(p == null) {
  2338. msg.prefix(player, prefix_quest, "This player is not online.");
  2339. goto("wait");
  2340. }
  2341. script_id = quest.getFromPlayer(p);
  2342. if(script_id == null) {
  2343. msg.prefix(player, prefix_quest, "This player has no quest.");
  2344. goto("wait");
  2345. }
  2346. script = script.getFromId(script_id);
  2347. if(script == null) {
  2348. quest.removePlayer(p);
  2349. msg.prefix(player, prefix_quest, "Corrupt quest terminated.");
  2350. goto("wait");
  2351. }
  2352. setScriptVar("player", p);
  2353. modTimer.scriptCallEvent("quest_term", script);
  2354. quest.term(script, player);
  2355. msg.prefix(player, prefix_quest, "Quest terminated.");
  2356. goto("wait");
  2357. }
  2358. goto("quest_syntax");
  2359. @friend
  2360. if(size == 0) {
  2361. @friend_syntax
  2362. msg.prefix(player, prefix_friends, "/friend ...");
  2363. msg.string(player, "§5 - add <player> §rAdds a friend");
  2364. msg.string(player, "§5 - remove <player> §rRemoves a friend");
  2365. msg.string(player, "§5 - list §rLists all your friends");
  2366. goto("wait");
  2367. }
  2368. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2369. if(arg0 == "add") {
  2370. if(size != 2) {
  2371. msg.prefix(player, prefix_friends, "/friend add <player>");
  2372. goto("wait");
  2373. }
  2374. friend_name = list.getIndex(args, 1);
  2375. player_name = player.getName(player);
  2376. if(player_name == friend_name) {
  2377. msg.prefix(player, prefix_friends, "You can´t invite yourself.");
  2378. goto("wait");
  2379. }
  2380. player_id = player.getId(player);
  2381. if(!checkIfEverOnline(friend_name)) {
  2382. msg.prefix(player, prefix_friends, "This player has never been online.");
  2383. goto("wait");
  2384. }
  2385. friend_id = player.getId(player.getUuid(friend_name));
  2386. if(friend.check(player_id, friend_id)) {
  2387. msg.prefix(player, prefix_friends, "This player is already your friend.");
  2388. goto("wait");
  2389. }
  2390. if(map.contains(friend_requests, friend_id)) {
  2391. if(map.get(friend_requests, friend_id) == player_id) {
  2392. friend.add(player_id, friend_id);
  2393. map.remove(friend_requests, friend_id);
  2394. msg.prefix(player, prefix_friends, string.concat("§7", friend_name, "§r is your friend now."));
  2395. msg.send(player, friend_name, prefix_friends, string.concat("§7", player_name, "§r is your friend now."), true);
  2396. goto("wait");
  2397. }
  2398. }
  2399. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  2400. friend = read.player(friend_name);
  2401. msg.prefix(player, prefix_friends, string.concat("You sent an invitation to §7", friend_name, "§r."));
  2402. if(friend != null) {
  2403. 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))));
  2404. }
  2405. goto("wait");
  2406. }
  2407. if(arg0 == "remove") {
  2408. if(size != 2) {
  2409. msg.prefix(player, prefix_friends, "/friend remove <player>");
  2410. goto("wait");
  2411. }
  2412. friend_name = list.getIndex(args, 1);
  2413. player_id = player.getId(player);
  2414. if(!checkIfEverOnline(friend_name)) {
  2415. msg.prefix(player, prefix_friends, "This player has never been online.");
  2416. goto("wait");
  2417. }
  2418. friend_id = player.getId(player.getUuid(friend_name));
  2419. if(!friend.check(player_id, friend_id)) {
  2420. msg.prefix(player, prefix_friends, "This player isn´t your friend.");
  2421. goto("wait");
  2422. }
  2423. friend.delete(player_id, friend_id);
  2424. msg.prefix(player, prefix_friends, string.concat("§7", friend_name, "§r is no longer your friend."));
  2425. msg.send(player, friend_name, prefix_friends, string.concat("§7", player.getName(player), "§r is no longer your friend."), true);
  2426. goto("wait");
  2427. }
  2428. if(arg0 == "list") {
  2429. if(size != 1) {
  2430. msg.prefix(player, prefix_friends, "/friend list");
  2431. goto("wait");
  2432. }
  2433. player_id = player.getId(player);
  2434. friendlist = friend.getList(player_id);
  2435. listsize = list.getSize(friendlist);
  2436. if(listsize == 0) {
  2437. msg.prefix(player, prefix_friends, "You have no friends yet.");
  2438. goto("wait");
  2439. }
  2440. msg.string(player, "§5Friends:");
  2441. for(i = 0; i <= listsize - 1; i++) {
  2442. friend_name = player.getNameFromId(list.getIndex(friendlist, i));
  2443. if(friend_name != null) {
  2444. msg.string(player, string.concat("- ", friend_name));
  2445. }
  2446. }
  2447. goto("wait");
  2448. }
  2449. goto("friend_syntax");
  2450. @var
  2451. if(size != 2) {
  2452. msg.prefix(player, prefix_commands, "/var <id> <varname>");
  2453. goto("wait");
  2454. }
  2455. script_id = list.getIndex(args, 0);
  2456. script = script.getFromId(script_id);
  2457. if(script == null) {
  2458. msg.prefix(player, "§dScript", "Invalid id");
  2459. goto("wait");
  2460. }
  2461. var_name = list.getIndex(args, 1);
  2462. var = script.getVar(script, var_name);
  2463. msg.prefix(player, "§dScript", string.concat(var_name, " = ", var));
  2464. goto("wait");
  2465. @vote
  2466. msg.string(player, string.getSpacer());
  2467. if(size == 0) {
  2468. link1 = "https://minecraft-server.eu/vote/index/2227F";
  2469. link2 = "https://minecraft-server-list.com/server/478200/vote/";
  2470. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), string.getLinkText("§r<§dminecraft-server.eu§r>", link1)));
  2471. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), string.getLinkText("§r<§dminecraft-server-list.com§r>", link2)));
  2472. p_id = player.getId(player);
  2473. } else {
  2474. if(!perm.has("user.other", player)) {
  2475. perm.no("user.other", player);
  2476. goto("wait");
  2477. }
  2478. p_name = list.getIndex(args, 0);
  2479. if(!checkIfEverOnline(p_name)) {
  2480. msg.prefix(player, prefix_commands, "This player has never been online.");
  2481. goto("wait");
  2482. }
  2483. p_id = player.getId(player.getUuid(p_name));
  2484. }
  2485. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), text.new(string.concat("Votepoints: §6", string.number(player.getVotePoints(p_id))))));
  2486. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), text.new(string.concat("Votestreak: §6", string.number(player.getVoteStreak(p_id))))));
  2487. last_vote_time = player.getLastVoteTime(p_id);
  2488. if(last_vote_time == 0) {
  2489. last_vote_time = "-";
  2490. } else {
  2491. last_vote_time = time.getString(last_vote_time);
  2492. }
  2493. msg(player, text.merge(text.new(string.getPrefix(prefix_vote)), text.new(" "), text.new(string.concat("Last vote: §6", last_vote_time))));
  2494. goto("wait");
  2495. @voteshop
  2496. inv.open(vote_inv, player, string.concat("Your vote points: §6", string.number(player.getVotePoints(player))));
  2497. goto("wait");
  2498. @setservermessage
  2499. if(size < 1) {
  2500. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  2501. goto("wait");
  2502. }
  2503. message = string.concatList(args, " ", 0, size - 1);
  2504. message = string.replace(message, "&", "§");
  2505. setMOTD(message);
  2506. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  2507. goto("wait");
  2508. @error
  2509. if(size < 1) {
  2510. msg.prefix(player, "§cError", "/error ...");
  2511. msg.string(player, "§c - list §rLists all errors");
  2512. msg.string(player, "§c - clear §rDeletes all errors");
  2513. goto("wait");
  2514. }
  2515. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2516. if(arg0 == "list") {
  2517. error_size = error.getSize();
  2518. if(error_size == 0) {
  2519. msg.prefix(player, "§cError", "No errors existing.");
  2520. goto("wait");
  2521. }
  2522. for(i = 0; i < error_size; i++) {
  2523. msg.string(player, error.getIndex(i));
  2524. }
  2525. goto("wait");
  2526. }
  2527. if(arg0 == "clear") {
  2528. error.clear();
  2529. msg.prefix(player, "§cError", "All errors deleted.");
  2530. goto("wait");
  2531. }
  2532. goto("wait");
  2533. @hat
  2534. item = living.getHand(player);
  2535. if(item.isAir(item)) {
  2536. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  2537. goto("wait");
  2538. }
  2539. head_slot = slot.getHead();
  2540. head_item = living.getEquip(player, head_slot);
  2541. living.setEquip(player, head_slot, item);
  2542. living.setEquip(player, slot.getHand(), head_item);
  2543. goto("wait");
  2544. @news
  2545. if(size < 1) {
  2546. msg.prefix(player, prefix_commands, "/news <text>");
  2547. goto("wait");
  2548. }
  2549. message = string.concatList(args, " ", 0, size - 1);
  2550. online_list = players.toList();
  2551. iter = iterator(online_list);
  2552. while(hasNext(iter)) {
  2553. p = next(iter);
  2554. title.send(p, text.new("§cNews"), text.new(string.concat("by ", player.getName(player))));
  2555. msg.prefix(p, "§4News", string.concat("§c", message));
  2556. }
  2557. goto("wait");
  2558. @skipnight
  2559. player_loc = entity.getLocation(player);
  2560. world_name = world.getName(loc.getWorld(player_loc));
  2561. if(!world.isSurvName(world_name)) {
  2562. msg.prefix(player, prefix_commands, "Not possible in this world.");
  2563. goto("wait");
  2564. }
  2565. world_time = world.getTime(world.getOverWorld());
  2566. while(world_time >= 24000) {
  2567. world_time -= 24000;
  2568. }
  2569. if(world_time <= 12500) {
  2570. msg.prefix(player, prefix_commands, "Only during night possible.");
  2571. goto("wait");
  2572. }
  2573. player_uuid = player.getUuid(player);
  2574. if(set.contains(skip_night_set, player_uuid)) {
  2575. msg.prefix(player, prefix_commands, "Already voted.");
  2576. goto("wait");
  2577. }
  2578. if(time.getMillis() - last_skip_night < 420000) {
  2579. msg.prefix(player, prefix_commands, "Only once per night possible.");
  2580. goto("wait");
  2581. }
  2582. inv.open(skip_night_inv, player);
  2583. goto("wait");
  2584. @spawn
  2585. if(size == 0) {
  2586. p = player;
  2587. }
  2588. if(size == 1) {
  2589. if(!perm.has("tp.other", player)) {
  2590. perm.no("tp.other", player);
  2591. goto("wait");
  2592. }
  2593. p_name = list.getIndex(args, 0);
  2594. p = read.player(p_name);
  2595. if(p == null) {
  2596. msg.prefix(player, prefix_commands, "This player is not online.");
  2597. goto("wait");
  2598. }
  2599. }
  2600. if(player.hasMinigame(p)) {
  2601. if(size == 1) {
  2602. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  2603. goto("wait");
  2604. }
  2605. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  2606. goto("wait");
  2607. }
  2608. if(player.teleport(p, world.getServerSpawn(), true)) {
  2609. if(player == p) {
  2610. msg.prefix(p, prefix_commands, "You have been teleported to the spawn.");
  2611. } else {
  2612. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was teleported to the spawn."));
  2613. }
  2614. }
  2615. goto("wait");
  2616. @rank
  2617. msg.string(player, string.getSpacer());
  2618. rank = getRank(player);
  2619. msg.string(player, string.concat("§6Current rank: §r[", rank, "§r]"));
  2620. msg.string(player, "Choose a rank:");
  2621. rank.showAll(player);
  2622. goto("wait");
  2623. @setrank
  2624. if(size < 2) {
  2625. msg.prefix(player, prefix_commands, "/setrank <player> <rank>");
  2626. goto("wait");
  2627. }
  2628. p_name = list.getIndex(args, 0);
  2629. if(!checkIfEverOnline(p_name)) {
  2630. msg.prefix(player, prefix_commands, "This player has never been online.");
  2631. goto("wait");
  2632. }
  2633. p = read.player(p_name);
  2634. if(p == null) {
  2635. msg.prefix(player, prefix_commands, "This player is not online.");
  2636. goto("wait");
  2637. }
  2638. p_name = player.getName(p);
  2639. rank = string.concatList(args, " ", 1, size - 1);
  2640. if(!perm.has("setrank.other", player)) {
  2641. if(player.getName(player) != p_name) {
  2642. perm.no("setrank.other", player);
  2643. goto("wait");
  2644. }
  2645. colored = string.startsWith(rank, "&", 0);
  2646. if(colored) {
  2647. rank = string.subString(rank, 1, string.length(rank));
  2648. }
  2649. a = rank.getRankArray();
  2650. a_size = array.getSize(a);
  2651. for(i = 0; i < a_size; i++) {
  2652. tech_name = a[i, 0];
  2653. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  2654. perm.no(tech_name, p);
  2655. goto("wait");
  2656. }
  2657. }
  2658. if(colored) {
  2659. rank = string.concat("&", rank);
  2660. }
  2661. }
  2662. if(string.length(rank) >= 30) {
  2663. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  2664. goto("wait");
  2665. }
  2666. rank = string.replace(rank, "&", "§");
  2667. setRank(p, rank);
  2668. player.setTabName(p);
  2669. msg.prefix(player, prefix_commands, string.concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  2670. goto("wait");
  2671. @nowb
  2672. if(player.isAfk(player)) {
  2673. player.setAfk(player, false);
  2674. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  2675. player.setTabName(player);
  2676. } else {
  2677. msg.prefix(player, prefix_commands, "You are not afk.");
  2678. }
  2679. goto("wait");
  2680. @afk
  2681. if(player.hasMinigame(player)) {
  2682. msg.prefix(player, prefix_commands, "No afk while in a minigame :P");
  2683. goto("wait");
  2684. }
  2685. nickname = player.getNickname(player);
  2686. if(player.isAfk(player)) {
  2687. msg.prefix("online", prefix_commands, string.concat(nickname, "§7 is back."));
  2688. player.setAfk(player, false);
  2689. } else {
  2690. msg.prefix("online", prefix_commands, string.concat(nickname, "§7 is now afk."));
  2691. player.setAfk(player, true);
  2692. if(!afk_loop_active) {
  2693. afk_loop_active = true;
  2694. sgoto(30, "afk_loop");
  2695. }
  2696. }
  2697. player.setTabName(player);
  2698. goto("wait");
  2699. @silentjoin
  2700. silentjoin = player.getSilentJoin(player);
  2701. if(silentjoin) {
  2702. player.setSilentJoin(player, false);
  2703. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  2704. } else {
  2705. player.setSilentJoin(player, true);
  2706. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  2707. }
  2708. goto("wait");
  2709. @joinme
  2710. list = players.toList();
  2711. iter = iterator(list);
  2712. while(hasNext(iter)) {
  2713. invitee = next(iter);
  2714. if(player == invitee) {
  2715. continue;
  2716. }
  2717. party.invitePlayer(player, invitee);
  2718. }
  2719. msg.prefix(player, prefix_party, "Party invitation sent to all online players.");
  2720. goto("wait");
  2721. @jumpto
  2722. block = player.getTargetBlock(player, 100);
  2723. if(block == null) {
  2724. msg.prefix(player, prefix_commands, "No block in sight.");
  2725. goto("wait");
  2726. }
  2727. loc = block.getLocation(block);
  2728. y = loc.getY(loc);
  2729. while(y < 319 && !block.isAir(block.get(loc))) {
  2730. loc.setY(loc, y);
  2731. y++;
  2732. }
  2733. player.teleport(player, loc.mod(loc, 0, 1, 0), true);
  2734. goto("wait");
  2735. @jailloop
  2736. size = list.getSize(jailed_list);
  2737. for(i = 0; i < size; i++) {
  2738. p_name = player.getName(list.getIndex(jailed_list, i));
  2739. showJail(p_name);
  2740. }
  2741. if(size > 0) {
  2742. jail_loop_active = true;
  2743. sgoto(5, "jailloop");
  2744. } else {
  2745. jail_loop_active = false;
  2746. }
  2747. goto("wait");
  2748. @sb_title_loop
  2749. list = players.toList();
  2750. iter = iterator(list);
  2751. if(title_a == null) {
  2752. while(hasNext(iter)) {
  2753. p = next(iter);
  2754. sb.setTitle(p, text.new("§c§k# §6minecraft§c.§6marvin§c.§6lu §c§k#"));
  2755. title_a = true;
  2756. }
  2757. } else {
  2758. while(hasNext(iter)) {
  2759. p = next(iter);
  2760. sb.setTitle(p, text.new(string.concat(icon.getHeart(), "§6Mundus §cCrassus§f", icon.getHeart())));
  2761. title_a = null;
  2762. }
  2763. }
  2764. sgoto(200, "sb_title_loop");
  2765. goto("wait");
  2766. @coordsloop
  2767. list = players.toList();
  2768. size = list.getSize(list);
  2769. for(i = 0; i < size; i++) {
  2770. p = list.getIndex(list, i);
  2771. if(player.getShowcoords(p)) {
  2772. p_loc = entity.getLocation(p);
  2773. 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))));
  2774. sb.add(p, 2, string.concat(icon.getCompass(), " ", getDirectionExact(loc.getYaw(p_loc))));
  2775. }
  2776. }
  2777. sgoto(15, "coordsloop");
  2778. goto("wait");
  2779. @customitems
  2780. inv = inv.new("222222222222222222222222222222222222222222222222222222", text.new("Customitems"));
  2781. a = item.custom.getAll();
  2782. for(i = 0; i < array.getSize(a); i++) {
  2783. item = item.custom.new(a[i]);
  2784. item.setAmount(item, item.getMaxAmount(item));
  2785. inv.setItem(inv, i, item);
  2786. if(i > 53) {
  2787. msg.dev("More customitems than can be shown in one inv");
  2788. break;
  2789. }
  2790. }
  2791. inv.open(inv, player);
  2792. goto("wait");
  2793. @afk_loop
  2794. if(!afk_loop_active) {
  2795. goto("wait");
  2796. }
  2797. afk_map = getScriptVar("afk_map");
  2798. iter = map.iterator(afk_map);
  2799. while(hasNext(iter)) {
  2800. element = next(iter);
  2801. yaw = map.getValue(element);
  2802. player = player.get(map.getKey(element));
  2803. if(player != null) {
  2804. if(yaw != loc.getYaw(entity.getLocation(player))) {
  2805. nickname = player.getNickname(player);
  2806. msg.prefix("online", prefix_commands, string.concat(nickname, "§7 is back."));
  2807. remove(iter);
  2808. player.setAfk(player, false);
  2809. player.setTabName(player);
  2810. }
  2811. }
  2812. }
  2813. size = map.getSize(afk_map);
  2814. if(size > 0) {
  2815. afk_loop_active = true;
  2816. sgoto(30, "afk_loop");
  2817. } else {
  2818. afk_loop_active = false;
  2819. }
  2820. goto("wait");
  2821. @minute_loop
  2822. cal = time.new(time.getMillis());
  2823. timer_day = time.getDay(cal);
  2824. if(old_timer_day == null) {
  2825. old_timer_day = timer_day;
  2826. }
  2827. if(timer_day != old_timer_day) {
  2828. old_timer_day = timer_day;
  2829. //Tageswechsel
  2830. decreaseHomeBoost();
  2831. }
  2832. sgoto(1200, "minute_loop");
  2833. goto("wait");
  2834. @afk_checker_loop
  2835. online_list = players.toList();
  2836. iter = iterator(online_list);
  2837. while(hasNext(iter)) {
  2838. uuid = next(iter);
  2839. p = player.get(uuid);
  2840. if(player.hasMinigame(p)) {
  2841. continue;
  2842. }
  2843. yaw = loc.getYaw(entity.getLocation(p));
  2844. a = map.get(afk_checker_map, uuid);
  2845. if(a == null) {
  2846. a = array.new(2);
  2847. a[0] = yaw;
  2848. a[1] = 0;
  2849. map.add(afk_checker_map, uuid, a);
  2850. continue;
  2851. }
  2852. last_yaw = a[0];
  2853. counter = a[1];
  2854. if(last_yaw == yaw) {
  2855. counter++;
  2856. } else {
  2857. counter = 0;
  2858. }
  2859. a[0] = yaw;
  2860. a[1] = counter;
  2861. map.add(afk_checker_map, uuid, a);
  2862. if(counter == 5) {
  2863. nickname = player.getNickname(p);
  2864. if(player.isAfk(p)) {
  2865. continue;
  2866. }
  2867. msg.prefix("online", prefix_commands, string.concat(nickname, "§7 is now afk."));
  2868. player.setAfk(p, true);
  2869. player.setTabName(p);
  2870. if(!afk_loop_active) {
  2871. afk_loop_active = true;
  2872. sgoto(30, "afk_loop");
  2873. }
  2874. }
  2875. }
  2876. sgoto(1200, "afk_checker_loop");
  2877. goto("wait");
  2878. @armorstand
  2879. if(size == 0) {
  2880. @armorstand_syntax
  2881. msg.prefix(player, prefix_datatools, "/armorstand ...");
  2882. msg.string(player, "§6 - name <name> §rSets the name");
  2883. msg.string(player, "§6 - visible <true/false> §rSets if is visible");
  2884. msg.string(player, "§6 - arms <true/false> §rSets if has arms");
  2885. msg.string(player, "§6 - small <true/false> §rSets if is small");
  2886. msg.string(player, "§6 - baseplate <true/false> §rSets if has baseplate");
  2887. msg.string(player, "§6 - marker <true/false> §rSets if is marker");
  2888. msg.string(player, "§6 - move <true/false> §rSets if can move");
  2889. msg.string(player, "§6 - tick <true/false> §rSets if can tick");
  2890. msg.string(player, "§6 - setpose <bodypart> <x> <y> <z> §rSets the pose");
  2891. msg.string(player, "§6 - addpose <bodypart> <x> <y> <z> §rSets the pose");
  2892. goto("wait");
  2893. }
  2894. player_loc = entity.getLocation(player);
  2895. player_world = loc.getWorld(player_loc);
  2896. player_world_name = world.getName(player_world);
  2897. if(!perm.has("plot.bypass", player)){
  2898. if(!(world.isSurvName(player_world_name) || world.isCreativeName(player_world_name))){
  2899. msg.action(player, "Wrong world.");
  2900. goto("wait");
  2901. }
  2902. if (!plot.check(player_loc, player, 0, true)){
  2903. msg.action(player, "You do not have permission for that on this plot.");
  2904. goto("wait");
  2905. }
  2906. }
  2907. as = player.getTargetEntity(player, 5);
  2908. if(!entity.isArmorstand(entity)) {
  2909. location = entity.getLocation(player);
  2910. as = entity.get(location, 3, "org.bukkit.entity.ArmorStand");
  2911. if(as == null) {
  2912. msg.action(player, "No armorstand found.");
  2913. goto("wait");
  2914. }
  2915. }
  2916. arg0 = string.toLowerCase(list.getIndex(args, 0));
  2917. if(arg0 == "name") {
  2918. if(size < 2) {
  2919. msg.prefix(player, prefix_datatools, "/armorstand name <name>");
  2920. goto("wait");
  2921. }
  2922. name = string.concatList(args, " ", 1, size - 1);
  2923. name = string.replace(name, "&", "§");
  2924. entity.setName(as, text.new(name), true);
  2925. msg.action(player, string.concat("Armorstand renamed to ", name, "§r."));
  2926. goto("wait");
  2927. }
  2928. if(arg0 == "visible") {
  2929. if(size < 2) {
  2930. msg.prefix(player, prefix_datatools, "/armorstand visible <true/false>");
  2931. goto("wait");
  2932. }
  2933. bool = list.getIndex(args, 1);
  2934. if(bool != true && bool != false) {
  2935. msg.action(player, "True/False expected.");
  2936. goto("wait");
  2937. }
  2938. living.setInvisible(as, !bool);
  2939. msg.action(player, "Visibility set.");
  2940. goto("wait");
  2941. }
  2942. if(arg0 == "arms") {
  2943. if(size < 2) {
  2944. msg.prefix(player, prefix_datatools, "/armorstand arms <true/false>");
  2945. goto("wait");
  2946. }
  2947. bool = list.getIndex(args, 1);
  2948. if(bool != true && bool != false) {
  2949. msg.action(player, "True/False expected.");
  2950. goto("wait");
  2951. }
  2952. as.setArms(as, bool);
  2953. msg.action(player, "Arms set.");
  2954. goto("wait");
  2955. }
  2956. if(arg0 == "small") {
  2957. if(size < 2) {
  2958. msg.prefix(player, prefix_datatools, "/armorstand small <true/false>");
  2959. goto("wait");
  2960. }
  2961. bool = list.getIndex(args, 1);
  2962. if(bool != true && bool != false) {
  2963. msg.action(player, "True/False expected.");
  2964. goto("wait");
  2965. }
  2966. as.setSmall(as, bool);
  2967. msg.action(player, "Small set.");
  2968. goto("wait");
  2969. }
  2970. if(arg0 == "baseplate") {
  2971. if(size < 2) {
  2972. msg.prefix(player, prefix_datatools, "/armorstand baseplate <true/false>");
  2973. goto("wait");
  2974. }
  2975. bool = list.getIndex(args, 1);
  2976. if(bool != true && bool != false) {
  2977. msg.action(player, "True/False expected.");
  2978. goto("wait");
  2979. }
  2980. as.setBasePlate(as, bool);
  2981. msg.action(player, "Baseplate set.");
  2982. goto("wait");
  2983. }
  2984. if(arg0 == "marker") {
  2985. if(size < 2) {
  2986. msg.prefix(player, prefix_datatools, "/armorstand marker <true/false>");
  2987. goto("wait");
  2988. }
  2989. bool = list.getIndex(args, 1);
  2990. if(bool != true && bool != false) {
  2991. msg.action(player, "True/False expected.");
  2992. goto("wait");
  2993. }
  2994. as.setMarker(as, bool);
  2995. msg.action(player, "Marker set.");
  2996. goto("wait");
  2997. }
  2998. if(arg0 == "move") {
  2999. if(size < 2) {
  3000. msg.prefix(player, prefix_datatools, "/armorstand move <true/false>");
  3001. goto("wait");
  3002. }
  3003. bool = list.getIndex(args, 1);
  3004. if(bool != true && bool != false) {
  3005. msg.action(player, "True/False expected.");
  3006. goto("wait");
  3007. }
  3008. as.canMove(as, bool);
  3009. msg.action(player, "Move set.");
  3010. goto("wait");
  3011. }
  3012. if(arg0 == "tick") {
  3013. if(size < 2) {
  3014. msg.prefix(player, prefix_datatools, "/armorstand tick <true/false>");
  3015. goto("wait");
  3016. }
  3017. bool = list.getIndex(args, 1);
  3018. if(bool != true && bool != false) {
  3019. msg.action(player, "True/False expected.");
  3020. goto("wait");
  3021. }
  3022. as.canTick(as, bool);
  3023. msg.action(player, "Tick set.");
  3024. goto("wait");
  3025. }
  3026. if(arg0 == "setpose") {
  3027. if(size < 5) {
  3028. msg.prefix(player, prefix_datatools, "/armorstand setpose <bodypart> <x> <y> <z>");
  3029. goto("wait");
  3030. }
  3031. x = list.getIndex(args, 2);
  3032. if(!isDouble(x) || x < -360 || x > 360) {
  3033. msg.action(player, "Number between -360 and 360 expected.");
  3034. goto("wait");
  3035. }
  3036. x *= math.pi() / 180;
  3037. y = list.getIndex(args, 3);
  3038. if(!isDouble(y) || y < -360 || y > 360) {
  3039. msg.action(player, "Number between -360 and 360 expected.");
  3040. goto("wait");
  3041. }
  3042. y *= math.pi() / 180;
  3043. z = list.getIndex(args, 4);
  3044. if(!isDouble(z) || z < -360 || z > 360) {
  3045. player.action(player, "Number between -360 and 360 expected.");
  3046. goto("wait");
  3047. }
  3048. z *= math.pi() / 180;
  3049. euler_angle = euler.new(x, y, z);
  3050. bodypart = list.getIndex(args, 1);
  3051. if(bodypart == "head") {
  3052. as.setHeadPose(as, euler_angle);
  3053. } elseif(bodypart == "body") {
  3054. as.setBodyPose(as, euler_angle);
  3055. } elseif(bodypart == "leftleg") {
  3056. as.setLeftLegPose(as, euler_angle);
  3057. } elseif(bodypart == "rightleg") {
  3058. as.setRightLegPose(as, euler_angle);
  3059. } elseif(bodypart == "leftarm") {
  3060. as.setLeftArmPose(as, euler_angle);
  3061. } elseif(bodypart == "rightarm") {
  3062. as.setRightArmPose(as, euler_angle);
  3063. } else {
  3064. msg.action(player, "Not a legit bodypart.");
  3065. goto("wait");
  3066. }
  3067. msg.action(player, "Pose set.");
  3068. goto("wait");
  3069. }
  3070. if(arg0 == "addpose") {
  3071. if(size < 5) {
  3072. msg.prefix(player, prefix_datatools, "/armorstand addpose <bodypart> <x> <y> <z>");
  3073. goto("wait");
  3074. }
  3075. x = list.getIndex(args, 2);
  3076. if(!isDouble(x) || x < -360 || x > 360) {
  3077. msg.action(player, "Number between -360 and 360 expected.");
  3078. goto("wait");
  3079. }
  3080. x *= math.pi() / 180;
  3081. y = list.getIndex(args, 3);
  3082. if(!isDouble(y) || y < -360 || y > 360) {
  3083. msg.action(player, "Number between -360 and 360 expected.");
  3084. goto("wait");
  3085. }
  3086. y *= math.pi() / 180;
  3087. z = list.getIndex(args, 4);
  3088. if(!isDouble(z) || z < -360 || z > 360) {
  3089. msg.action(player, "Number between -360 and 360 expected.");
  3090. goto("wait");
  3091. }
  3092. z *= math.pi() / 180;
  3093. bodypart = list.getIndex(args, 1);
  3094. if(bodypart == "head") {
  3095. euler_angle = as.getHeadPose(as);
  3096. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3097. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3098. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3099. as.setHeadPose(as, euler_angle);
  3100. } elseif(bodypart == "body") {
  3101. euler_angle = as.getBodyPose(as);
  3102. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3103. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3104. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3105. as.setBodyPose(as, euler_angle);
  3106. } elseif(bodypart == "leftleg") {
  3107. euler_angle = as.getLeftLegPose(as);
  3108. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3109. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3110. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3111. as.setLeftLegPose(as, euler_angle);
  3112. } elseif(bodypart == "rightleg") {
  3113. euler_angle = as.getRightLegPose(as);
  3114. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3115. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3116. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3117. as.setRightLegPose(as, euler_angle);
  3118. } elseif(bodypart == "leftarm") {
  3119. euler_angle = as.getLeftArmPose(as);
  3120. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3121. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3122. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3123. as.setLeftArmPose(as, euler_angle);
  3124. } elseif(bodypart == "rightarm") {
  3125. euler_angle = as.getRightArmPose(as);
  3126. euler_angle = euler.setX(euler_angle, euler.getX(euler_angle) + x);
  3127. euler_angle = euler.setY(euler_angle, euler.getY(euler_angle) + y);
  3128. euler_angle = euler.setZ(euler_angle, euler.getZ(euler_angle) + z);
  3129. as.setRightArmPose(as, euler_angle);
  3130. } else {
  3131. msg.action(player, "Not a legit bodypart.");
  3132. goto("wait");
  3133. }
  3134. msg.action(player, "Pose set.");
  3135. goto("wait");
  3136. }
  3137. goto("armorstand_syntax");
  3138. @ass
  3139. if(size == 0) {
  3140. msg.prefix(player, prefix_commands, "§r/ass ...");
  3141. msg.string(player, " - set <name>");
  3142. msg.string(player, " - name <name>");
  3143. msg.string(player, " - remove");
  3144. goto("wait");
  3145. }
  3146. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3147. if(arg0 == "set") {
  3148. if(size < 2) {
  3149. msg.prefix(player, prefix_datatools, "/ass set <name>");
  3150. goto("wait");
  3151. }
  3152. name = string.concatList(string_args, " ", 1, size - 1);
  3153. name = string.replace(name, "&", "§");
  3154. as = entity.spawn(entity.getLocation(player), "ARMOR_STAND");
  3155. entity.setGravity(as, false);
  3156. entity.setName(as, text.new(name), true);
  3157. living.setInvisible(as, true);
  3158. as.setMarker(as, true);
  3159. as.canTick(as, false);
  3160. goto("wait");
  3161. }
  3162. as = player.getTargetEntity(player, 5);
  3163. if(!entity.isArmorstand(entity)) {
  3164. location = entity.getLocation(player);
  3165. as = entity.get(location, 3, "org.bukkit.entity.ArmorStand");
  3166. if(as == null) {
  3167. msg.action(player, "No armorstand found.");
  3168. goto("wait");
  3169. }
  3170. }
  3171. if(arg0 == "name") {
  3172. if(size < 2) {
  3173. msg.prefix(player, prefix_datatools, "/ass name <name>");
  3174. goto("wait");
  3175. }
  3176. name = string.concatList(string_args, " ", 1, size - 1);
  3177. name = string.replace(name, "&", "§");
  3178. entity.setName(as, text.new(name), true);
  3179. msg.action(player, "Armorstand renamed.");
  3180. goto("wait");
  3181. }
  3182. if(arg0 == "remove") {
  3183. entity.remove(as);
  3184. msg.action(player, "Armorstand removed.");
  3185. goto("wait");
  3186. }
  3187. goto("wait");
  3188. @potion
  3189. if(size != 3) {
  3190. msg.prefix(player, prefix_perms, "/potion <potion_name> <duration> <power>");
  3191. goto("wait");
  3192. }
  3193. item = living.getHand(player);
  3194. if(item.getType(item) == null || !(item.isType(item, "POTION") || item.isType(item, "SPLASH_POTION") || item.isType(item, "LINGERING_POTION"))) {
  3195. msg.prefix(player, prefix_commands, "You need to hold an potion in your hand.");
  3196. goto("wait");
  3197. }
  3198. potion_name = list.getIndex(args, 0);
  3199. list = getPotionTypes();
  3200. if(!list.contains(list, potion_name)) {
  3201. msg.prefix(player, prefix_commands, "Not an potion effect type.");
  3202. goto("wait");
  3203. }
  3204. duration = list.getIndex(args, 1);
  3205. if(!isDouble(duration) || duration < 0) {
  3206. msg.prefix(player, prefix_commands, "Positive number expected.");
  3207. goto("wait");
  3208. }
  3209. power = list.getIndex(args, 2);
  3210. if(!isDouble(power) || power < 0) {
  3211. msg.prefix(player, prefix_commands, "Positive number expected.");
  3212. goto("wait");
  3213. }
  3214. item.addPotion(item, potion_name, duration, power);
  3215. goto("wait");
  3216. @pvp
  3217. if(size == 0) {
  3218. if(hasPvpOn(player)) {
  3219. mode = "off";
  3220. } else {
  3221. mode = "on";
  3222. }
  3223. p = player;
  3224. } elseif(size == 1) {
  3225. mode = list.getIndex(args, 0);
  3226. if(!(mode == "on" || mode == "off")) {
  3227. goto("pvphelp");
  3228. }
  3229. p = player;
  3230. } elseif(size == 2) {
  3231. if(!perm.has("pvp.other", player)) {
  3232. perm.no("pvp.other", player);
  3233. goto("wait");
  3234. }
  3235. mode = list.getIndex(args, 0);
  3236. if(!(mode == "on" || mode == "off")) {
  3237. goto("pvphelp");
  3238. }
  3239. p_name = list.getIndex(args, 1);
  3240. if(!checkIfEverOnline(p_name)) {
  3241. msg.prefix(player, prefix_commands, "This player has never been online.");
  3242. goto("wait");
  3243. }
  3244. p = read.player(p_name);
  3245. if(p == null) {
  3246. msg.prefix(player, prefix_commands, "This player is not online.");
  3247. goto("wait");
  3248. }
  3249. } else {
  3250. @pvphelp
  3251. if(perm.has("pvp.other", player)) {
  3252. msg.prefix(player, prefix_commands, "/pvp [on/off] [player]");
  3253. } else {
  3254. msg.prefix(player, prefix_commands, "/pvp [on/off]");
  3255. }
  3256. goto("wait");
  3257. }
  3258. if(mode == "on") {
  3259. setPvp(p, true);
  3260. msg.prefix(p, prefix_commands, "You have enabled PvP!");
  3261. if(p != player) {
  3262. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " has now enabled PvP!"));
  3263. }
  3264. } else {
  3265. setPvp(p, false);
  3266. msg.prefix(p, prefix_commands, "You have PvP disabled!");
  3267. if(p != player) {
  3268. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " has now disabled PvP!"));
  3269. }
  3270. }
  3271. goto("wait");
  3272. @suicide
  3273. if(size < 0 || size > 1) {
  3274. msg.prefix(player, prefix_commands, "/suicide [player]");
  3275. goto("wait");
  3276. }
  3277. if(size == 0) {
  3278. p = player;
  3279. }
  3280. if(size == 1) {
  3281. if(!perm.has("suicide.other", player)) {
  3282. perm.no("suicide.other", player);
  3283. goto("wait");
  3284. }
  3285. p_name = list.getIndex(args, 0);
  3286. p = read.player(p_name);
  3287. if(p == null) {
  3288. msg.prefix(player, prefix_commands, "This player is not online.");
  3289. goto("wait");
  3290. }
  3291. }
  3292. if(p != player) {
  3293. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " has been killed."));
  3294. msg.prefix(p, prefix_commands, string.concat("You have been killed by ", player.getName(player), "."));
  3295. } else {
  3296. msg.prefix(p, prefix_commands, "You killed yourself.");
  3297. }
  3298. living.damage(p, 1000, damage.get("generic"));
  3299. goto("wait");
  3300. @nickname
  3301. if(size < 1) {
  3302. msg.prefix(player, "§eNickname", "/nickname ...");
  3303. msg.string(player, string.concat("§e - <name> ", "Sets a nickname"));
  3304. msg.string(player, string.concat("§e - remove ", "Removes a nickname"));
  3305. goto("wait");
  3306. }
  3307. nickname = string.replace(string.concatList(args, " ", 0, size - 1), "&", "§");
  3308. if(nickname == "remove") {
  3309. player.removeNickName(player);
  3310. msg.prefix(player, prefix_commands, string.concat("Your nickname was removed."));
  3311. } else {
  3312. player.setNickName(player, nickname);
  3313. msg.prefix(player, prefix_commands, string.concat("Your nickname was changed to ", nickname, "§r."));
  3314. }
  3315. player.setTabName(player);
  3316. player.setHeadName(player);
  3317. goto("wait");
  3318. @iteminfo
  3319. item = living.getHand(player);
  3320. string = string.item(item);
  3321. string = string.replace(string, "\"", "'");
  3322. msg(player, string.getClipBoardText(string, string));
  3323. item_type = string(item.getType(item));
  3324. msg(player, string.getClipBoardText(item_type, item_type));
  3325. goto("wait");
  3326. @perm
  3327. if(size == 0) {
  3328. @perm_syntax
  3329. msg.prefix(player, prefix_perms, "/perm ...");
  3330. if(perm.has("perm.give", player)) {
  3331. msg.string(player, "§6 - give <player> <perm>");
  3332. }
  3333. if(perm.has("perm.remove", player)) {
  3334. msg.string(player, "§6 - remove <player> <perm>");
  3335. }
  3336. if(perm.has("perm.removeall", player)) {
  3337. msg.string(player, "§6 - removeall <player>");
  3338. }
  3339. if(perm.has("perm.list", player)) {
  3340. msg.string(player, "§6 - list <player>");
  3341. }
  3342. if(perm.has("perm.toggle", player)) {
  3343. msg.string(player, "§6 - toggle");
  3344. }
  3345. goto("wait");
  3346. }
  3347. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3348. if(arg0 == "give") {
  3349. if(!perm.has("perm.give", player)) {
  3350. perm.no("perm.give", player);
  3351. goto("wait");
  3352. }
  3353. if(size != 3) {
  3354. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  3355. goto("wait");
  3356. }
  3357. p_name = list.getIndex(args, 1);
  3358. perm = list.getIndex(args, 2);
  3359. if(!checkIfEverOnline(p_name)) {
  3360. msg.prefix(player, prefix_perms, "This player has never been online.");
  3361. goto("wait");
  3362. }
  3363. if(!perm.isGroupName(perm)) {
  3364. msg.prefix(player, prefix_perms, "This is not a permission group.");
  3365. goto("wait");
  3366. }
  3367. if(!perm.has("isOwner", player)) {
  3368. if(perm == "owner") {
  3369. msg.prefix(player, prefix_perms, "Only owners can give this permission group.");
  3370. goto("wait");
  3371. }
  3372. }
  3373. if(!perm.has("isAdmin", player)) {
  3374. if(perm == "admin" || perm == "mod") {
  3375. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  3376. goto("wait");
  3377. }
  3378. }
  3379. p_uuid = player.getUuid(p_name);
  3380. p_id = player.getId(p_uuid);
  3381. p_name = player.getName(p_uuid);
  3382. perm_id = perm.getIdFromGroupname(perm);
  3383. if(player.hasPermGroup(p_id, perm_id)) {
  3384. msg.prefix(player, prefix_perms, "Perm already added.");
  3385. goto("wait");
  3386. }
  3387. if(isOnline(p_name)) {
  3388. p = read.player(p_name);
  3389. rank = perm.getRankFromGroupname(perm);
  3390. if(rank != null) {
  3391. offerRank(p, rank.getTechName(rank));
  3392. }
  3393. if(perm == "creative") {
  3394. if(loc.isInCreativeWorld(entity.getLocation(p))) {
  3395. player.setGamemode(p, "CREATIVE");
  3396. }
  3397. }
  3398. }
  3399. perm.addGroupToPlayer(p_id, perm_id);
  3400. msg.prefix(player, prefix_perms, string.concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  3401. goto("wait");
  3402. }
  3403. if(arg0 == "remove") {
  3404. if(!perm.has("perm.remove", player)) {
  3405. perm.no("perm.remove", player);
  3406. goto("wait");
  3407. }
  3408. if(size != 3) {
  3409. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  3410. goto("wait");
  3411. }
  3412. p_name = list.getIndex(args, 1);
  3413. perm = list.getIndex(args, 2);
  3414. if(!checkIfEverOnline(p_name)) {
  3415. msg.prefix(player, prefix_perms, "This player has never been online.");
  3416. goto("wait");
  3417. }
  3418. if(!perm.isGroupName(perm)) {
  3419. msg.prefix(player, prefix_perms, "This is not a permission group.");
  3420. goto("wait");
  3421. }
  3422. if(!perm.has("isOwner", player)) {
  3423. if(perm == "owner") {
  3424. msg.prefix(player, prefix_perms, "Only owners can remove this permission group.");
  3425. goto("wait");
  3426. }
  3427. }
  3428. if(!perm.has("isAdmin", player)) {
  3429. if(perm == "admin" || perm == "mod") {
  3430. msg.prefix(player, prefix_perms, "Only admins can remove this permission group.");
  3431. goto("wait");
  3432. }
  3433. }
  3434. p_uuid = player.getUuid(p_name);
  3435. p_id = player.getId(p_uuid);
  3436. p_name = player.getName(p_uuid);
  3437. perm_id = perm.getIdFromGroupname(perm);
  3438. if(!player.hasPermGroup(p_id, perm_id)) {
  3439. msg.prefix(player, prefix_perms, "This player doesn´t have that perm.");
  3440. goto("wait");
  3441. }
  3442. perm.removeGroupFromPlayer(p_id, perm_id);
  3443. msg.prefix(player, prefix_perms, string.concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  3444. goto("wait");
  3445. }
  3446. if(arg0 == "removeall") {
  3447. if(!perm.has("perm.removeall", player)) {
  3448. perm.no("perm.removeall", player);
  3449. goto("wait");
  3450. }
  3451. if(size != 2) {
  3452. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  3453. goto("wait");
  3454. }
  3455. p_name = list.getIndex(args, 1);
  3456. if(!checkIfEverOnline(p_name)) {
  3457. msg.prefix(player, prefix_perms, "This player has never been online.");
  3458. goto("wait");
  3459. }
  3460. p_id = player.getId(player.getUuid(p_name));
  3461. player.removeAllPerms(p_id);
  3462. msg.prefix(player, prefix_perms, string.concat("All perms of §7", p_name, " §rwere removed."));
  3463. goto("wait");
  3464. }
  3465. if(arg0 == "list") {
  3466. if(!perm.has("perm.list", player)) {
  3467. perm.no("perm.list", player);
  3468. goto("wait");
  3469. }
  3470. if(size != 2) {
  3471. msg.prefix(player, prefix_perms, "/perm list <player>");
  3472. goto("wait");
  3473. }
  3474. p_name = list.getIndex(args, 1);
  3475. if(!checkIfEverOnline(p_name)) {
  3476. msg.prefix(player, prefix_perms, "This player has never been online.");
  3477. goto("wait");
  3478. }
  3479. p_id = player.getId(player.getUuid(p_name));
  3480. permslist = player.getPerms(p_id);
  3481. listsize = list.getSize(permslist);
  3482. if(listsize == 0) {
  3483. msg.prefix(player, prefix_perms, "No permissions found.");
  3484. } else {
  3485. msg.prefix(player, prefix_perms, p_name);
  3486. for(i = 0; i < listsize; i++) {
  3487. msg.string(player, string.concat(" - ", perm.getNameFromId(list.getIndex(permslist, i))));
  3488. }
  3489. }
  3490. goto("wait");
  3491. }
  3492. if(arg0 == "toggle") {
  3493. if(!perm.has("perm.toggle", player)) {
  3494. perm.no("perm.toggle", player);
  3495. goto("wait");
  3496. }
  3497. if(perm.has("simuser", player)) {
  3498. perm.initPlayer(player);
  3499. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  3500. } else {
  3501. perm.simUser(player);
  3502. msg.prefix(player, prefix_commands, "Have fun as a user.");
  3503. }
  3504. goto("wait");
  3505. }
  3506. goto("perm_syntax");
  3507. @allsounds
  3508. if(size == 0) {
  3509. msg.prefix(player, prefix_commands, "§r/allsounds...");
  3510. msg.string(player, "§e - start §rStart all sounds loop");
  3511. msg.string(player, "§e - stop §rStop all sounds loop");
  3512. msg.string(player, "§e - play <sound> §rPlay a sound");
  3513. msg.string(player, "§e - show [page] §rClick on a sound");
  3514. goto("wait");
  3515. }
  3516. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3517. if(arg0 == "start") {
  3518. player_uuid = player.getUuid(player);
  3519. if(map.contains(allsounds_indizes, player_uuid)) {
  3520. msg.prefix(player, prefix_commands, "All sounds already started.");
  3521. goto("wait");
  3522. }
  3523. map.add(allsounds_indizes, player_uuid, 0);
  3524. list.add(allsounds_uuids, player_uuid);
  3525. list.add(allsounds_uuids_cross_check, player_uuid);
  3526. msg.prefix(player, prefix_commands, "All sounds started.");
  3527. goto("playallsounds");
  3528. }
  3529. if(arg0 == "stop") {
  3530. player_uuid = player.getUuid(player);
  3531. if(!list.contains(allsounds_uuids_cross_check, player_uuid)) {
  3532. msg.prefix(player, prefix_commands, "No sounds playing.");
  3533. goto("wait");
  3534. }
  3535. map.remove(allsounds_indizes, player_uuid);
  3536. list.remove(allsounds_uuids_cross_check, player_uuid);
  3537. msg.prefix(player, prefix_commands, "All sounds stopped.");
  3538. goto("wait");
  3539. }
  3540. if(arg0 == "play") {
  3541. if(size != 2) {
  3542. msg.prefix(player, prefix_perms, "/allsounds player <sound>");
  3543. goto("wait");
  3544. }
  3545. sound_name = list.getIndex(args, 1);
  3546. sound_name = string.replace(sound_name, "minecraft:", "");
  3547. sound_name = string.replace(sound_name, "[.]", "_");
  3548. sound_name = string.toUpperCase(sound_name);
  3549. if(!list.contains(allsounds_list, sound_name)) {
  3550. msg.prefix(sender, prefix_commands, "Not a known sound.");
  3551. goto("wait");
  3552. }
  3553. sound = sound.get(sound_name);
  3554. sound.spawnForPlayer(player, sound, sound_category_master);
  3555. goto("wait");
  3556. }
  3557. if(arg0 == "show") {
  3558. amount_sounds = list.getSize(allsounds_list);
  3559. max_side = amount_sounds / 10;
  3560. if(size == 1) {
  3561. side = 1;
  3562. print_side = side - 1;
  3563. } else {
  3564. side = list.getIndex(args, 1);
  3565. if(!isDouble(side)) {
  3566. msg.prefix(sender, prefix_commands, "/allsounds show [side]");
  3567. goto("wait");
  3568. }
  3569. print_side = side - 1;
  3570. if(print_side < 0 || print_side > max_side) {
  3571. msg.prefix(sender, prefix_commands, string.concat("Possible: 1 - ", string.number(math.roundDown(max_side + 1))));
  3572. goto("wait");
  3573. }
  3574. }
  3575. msg.string(sender, string.concat("§a --- All Sounds ", string.number(side), " ---"));
  3576. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  3577. if(i < amount_sounds) {
  3578. sound_name = list.getIndex(allsounds_list, i);
  3579. msg(sender, string.getClickText(string.concat(" ", sound_name), string.concat("/allsounds play ", sound_name)));
  3580. }
  3581. }
  3582. if(side == 1) {
  3583. backward = text.new("§c<<Backward<<");
  3584. forward = string.getClickText("§b>>Forward>>", string.concat("/allsounds show ", side + 1));
  3585. } elseif(side > max_side) {
  3586. backward = string.getClickText("§b<<Backward<<", string.concat("/allsounds show ", side - 1));
  3587. forward = text.new("§c>>Forward>>");
  3588. } else {
  3589. backward = string.getClickText("§b<<Backward<<", string.concat("/allsounds show ", side - 1));
  3590. forward = string.getClickText("§b>>Forward>>", string.concat("/allsounds show ", side + 1));
  3591. }
  3592. msg(sender, text.merge(backward, text.new(" "), forward));
  3593. goto("wait");
  3594. }
  3595. goto("wait");
  3596. @playallsounds
  3597. player_uuid = list.getIndex(allsounds_uuids, 0);
  3598. list.removeIndex(allsounds_uuids, 0);
  3599. if(!list.contains(allsounds_uuids_cross_check, player_uuid)) {
  3600. goto("wait");
  3601. }
  3602. player = player.get(player_uuid);
  3603. if(player == null) {
  3604. map.remove(allsounds_indizes, player_uuid);
  3605. goto("wait");
  3606. }
  3607. i = map.get(allsounds_indizes, player_uuid);
  3608. if(i == list.getSize(allsounds_list)) {
  3609. map.remove(allsounds_indizes, player_uuid);
  3610. msg.prefix(player, prefix_commands, "All sounds finished.");
  3611. goto("wait");
  3612. }
  3613. sound_name = list.getIndex(allsounds_list, i);
  3614. sound = sound.get(sound_name);
  3615. sound.spawnForPlayer(player, sound, sound_category_master);
  3616. msg.string(player, sound_name);
  3617. map.add(allsounds_indizes, player_uuid, i + 1);
  3618. list.add(allsounds_uuids, player_uuid);
  3619. sgoto(100, "playallsounds");
  3620. goto("wait");
  3621. @weather
  3622. if(size == 0) {
  3623. @weather_syntax
  3624. msg.prefix(player, "§eWeather", "/weather ...");
  3625. msg.string(player, "§e - clear [duration]");
  3626. msg.string(player, "§e - rain [duration]");
  3627. msg.string(player, "§e - thunder [duration]");
  3628. goto("wait");
  3629. }
  3630. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3631. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  3632. if(size == 2) {
  3633. duration = list.getIndex(args, 1);
  3634. if(!isDouble(duration)) {
  3635. msg.prefix(player, prefix_commands, "Number expected.");
  3636. goto("wait");
  3637. }
  3638. if(duration < 0) {
  3639. msg.prefix(player, prefix_commands, "Positive number expected.");
  3640. goto("wait");
  3641. }
  3642. } else {
  3643. duration = 12000;
  3644. }
  3645. world = loc.getWorld(entity.getLocation(player));
  3646. if(arg0 == "clear") {
  3647. if(size > 2) {
  3648. msg.prefix(player, prefix_commands, "/weather clear [duration]");
  3649. goto("wait");
  3650. }
  3651. world.clearWeather(world, duration);
  3652. msg.prefix(player, prefix_commands, "Weather cleared.");
  3653. goto("wait");
  3654. }
  3655. if(arg0 == "rain") {
  3656. if(size > 2) {
  3657. msg.prefix(player, prefix_commands, "/weather rain [duration]");
  3658. goto("wait");
  3659. }
  3660. world.setRain(world, duration);
  3661. msg.prefix(player, prefix_commands, "Weather set to rain.");
  3662. goto("wait");
  3663. }
  3664. if(arg0 == "thunder") {
  3665. if(size > 2) {
  3666. msg.prefix(player, prefix_commands, "/weather thunder [duration]");
  3667. goto("wait");
  3668. }
  3669. world.setThunder(world, duration);
  3670. msg.prefix(player, prefix_commands, "Weather set to thunder.");
  3671. goto("wait");
  3672. }
  3673. goto("wait");
  3674. }
  3675. goto("weather_syntax");
  3676. @time
  3677. if(size == 0) {
  3678. @time_syntax
  3679. msg.prefix(player, "§eTime", "/time ...");
  3680. msg.string(player, "§e - set <time>");
  3681. msg.string(player, "§e - add <time>");
  3682. msg.string(player, "§e - <day / noon / night / midnight>");
  3683. goto("wait");
  3684. }
  3685. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3686. if(arg0 == "set") {
  3687. if(size != 2) {
  3688. msg.prefix(player, prefix_commands, "/time set <time>");
  3689. goto("wait");
  3690. }
  3691. setTime = list.getIndex(args, 1);
  3692. if(!isDouble(setTime)) {
  3693. msg.prefix(player, prefix_commands, "Number expected.");
  3694. goto("wait");
  3695. }
  3696. if(setTime < 0) {
  3697. msg.prefix(player, prefix_commands, "Positive number expected.");
  3698. goto("wait");
  3699. }
  3700. world = loc.getWorld(entity.getLocation(player));
  3701. while(setTime >= 24000) {
  3702. setTime -= 24000;
  3703. }
  3704. world.setTime(world, setTime);
  3705. msg.prefix(player, prefix_commands, string.concat("Time set to ", string.number(setTime), "."));
  3706. goto("wait");
  3707. }
  3708. if(arg0 == "add") {
  3709. if(size != 2) {
  3710. msg.prefix(player, prefix_commands, "/time add <time>");
  3711. goto("wait");
  3712. }
  3713. addTime = list.getIndex(args, 1);
  3714. if(!isDouble(addTime)) {
  3715. msg.prefix(player, prefix_commands, "Number expected.");
  3716. goto("wait");
  3717. }
  3718. if(addTime < 0) {
  3719. msg.prefix(player, prefix_commands, "Positive number expected.");
  3720. goto("wait");
  3721. }
  3722. world = loc.getWorld(entity.getLocation(player));
  3723. newtime = world.getTime(world) + addTime;
  3724. while(newtime >= 24000) {
  3725. newtime -= 24000;
  3726. }
  3727. world.setTime(world, newtime);
  3728. msg.prefix(player, prefix_commands, string.concat("Time set to ", string.number(newtime), "."));
  3729. goto("wait");
  3730. }
  3731. newtime = null;
  3732. if(arg0 == "day") {
  3733. newtime = 1000;
  3734. } elseif(arg0 == "noon") {
  3735. newtime = 6000;
  3736. } elseif(arg0 == "night") {
  3737. newtime = 13000;
  3738. } elseif(arg0 == "midnight") {
  3739. newtime = 18000;
  3740. }
  3741. if(newtime != null) {
  3742. world = loc.getWorld(entity.getLocation(player));
  3743. world.setTime(world, newtime);
  3744. msg.prefix(player, prefix_commands, string.concat("Time set to ", string.number(newtime), "."));
  3745. goto("wait");
  3746. }
  3747. goto("time_syntax");
  3748. @gamerule
  3749. world = loc.getWorld(entity.getLocation(player));
  3750. if(size == 0) {
  3751. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  3752. goto("wait");
  3753. }
  3754. gamerule_string = list.getIndex(args, 0);
  3755. gamerule_key = gamerule.getKey(gamerule_string);
  3756. if(gamerule_key == null) {
  3757. msg.prefix(player, prefix_commands, "Gamerule doesn´t exist.");
  3758. goto("wait");
  3759. }
  3760. gamerule_value = gamerule.getValue(world, gamerule_key);
  3761. if(size == 1) {
  3762. if(isDouble(gamerule_value)) {
  3763. gamerule_value = string.number(gamerule_value);
  3764. }
  3765. msg.prefix(player, prefix_commands, string.concat(gamerule_string, " ", gamerule_value));
  3766. goto("wait");
  3767. }
  3768. if(size == 2) {
  3769. if(!perm.has("gamerule.write", player)) {
  3770. perm.no("gamerule.write", player);
  3771. goto("wait");
  3772. }
  3773. value = list.getIndex(args, 1);
  3774. if(isBool(gamerule_value)) {
  3775. gamerule.setBool(world, gamerule_key, value);
  3776. } elseif(isDouble(gamerule_value)) {
  3777. gamerule.setInt(world, gamerule_key, value);
  3778. value = string.number(value);
  3779. } else {
  3780. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  3781. goto("wait");
  3782. }
  3783. msg.prefix(player, prefix_commands, string.concat(gamerule_string, " set to ", value, "."));
  3784. }
  3785. goto("wait");
  3786. @tip
  3787. if(size == 0) {
  3788. msg.prefix(player, prefix_tips, "/tip ...");
  3789. msg.string(player, "§e - list §rList all tips");
  3790. msg.string(player, "§e - add <tip> <text> §rAdds a tip");
  3791. msg.string(player, "§e - remove <tip> §rRemoves a tip");
  3792. msg.string(player, "§e - loop <tip> <boolean> §rTrue shows on tip loop");
  3793. msg.string(player, "§e - <tip> [player] §rSends a tip to all/a player");
  3794. goto("wait");
  3795. }
  3796. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3797. if(arg0 == "list") {
  3798. msg.string(player, "--==§eTipps§r==--");
  3799. list = tip.getAll();
  3800. if(list.getSize(list) == 0) {
  3801. msg.prefix(player, prefix_tips, "No tips available.");
  3802. goto("wait");
  3803. }
  3804. iter = iterator(list);
  3805. while(hasNext(iter)) {
  3806. a = next(iter);
  3807. tipp_key = a[0];
  3808. tipp_value = a[1];
  3809. tipp_loop = a[2];
  3810. if(tipp_loop) {
  3811. tipp_loop = string.concat("§a", tipp_loop);
  3812. } else {
  3813. tipp_loop = string.concat("§c", tipp_loop);
  3814. }
  3815. msg(player, text.merge(text.new(string.concat(" ", tipp_loop, " §e", tipp_key, "§r : ")), string.getInterpretedText(tipp_value)));
  3816. }
  3817. goto("wait");
  3818. }
  3819. if(arg0 == "add") {
  3820. if(!perm.has("tip.mod", player)) {
  3821. perm.no("tip.mod", player);
  3822. goto("wait");
  3823. }
  3824. if(size < 3) {
  3825. msg.prefix(player, prefix_commands, "/tip add <name> <text>");
  3826. goto("wait");
  3827. }
  3828. tipp_key = list.getIndex(args, 1);
  3829. tipp_value = string.concatList(string_args, " ", 2, size - 1);
  3830. tipp_value = string.replace(tipp_value, "&", "§");
  3831. tipp.register(tipp_key, tipp_value);
  3832. msg.prefix(player, prefix_tips, "Tip added.");
  3833. goto("wait");
  3834. }
  3835. if(arg0 == "loop") {
  3836. if(!perm.has("tip.mod", player)) {
  3837. perm.no("tip.mod", player);
  3838. goto("wait");
  3839. }
  3840. if(size != 3) {
  3841. msg.prefix(player, prefix_commands, "/tip loop <tip> <boolean>");
  3842. goto("wait");
  3843. }
  3844. tipp_key = list.getIndex(args, 1);
  3845. if(!tipp.exists(tipp_key)) {
  3846. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3847. goto("wait");
  3848. }
  3849. boolean = list.getIndex(args, 2);
  3850. if(string.class(boolean) != "Boolean") {
  3851. msg.prefix(player, prefix_tips, "True or false expected.");
  3852. goto("wait");
  3853. }
  3854. if(boolean) {
  3855. tip.setLoop(tipp_key, boolean);
  3856. } else {
  3857. tip.setLoop(tipp_key, boolean);
  3858. }
  3859. msg.prefix(player, prefix_tips, "Tip settings changed.");
  3860. goto("wait");
  3861. }
  3862. if(arg0 == "remove") {
  3863. if(!perm.has("tip.mod", player)) {
  3864. perm.no("tip.mod", player);
  3865. goto("wait");
  3866. }
  3867. if(size != 2) {
  3868. msg.prefix(player, prefix_commands, "/tip remove <name>");
  3869. goto("wait");
  3870. }
  3871. tipp_key = list.getIndex(args, 1);
  3872. tip.remove(tipp_key);
  3873. msg.prefix(player, prefix_tips, "Tip removed.");
  3874. goto("wait");
  3875. }
  3876. tipp_key = arg0;
  3877. if(!tipp.exists(tipp_key)) {
  3878. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3879. goto("wait");
  3880. }
  3881. if(size == 1) {
  3882. p = "online";
  3883. } else {
  3884. p_name = list.getIndex(args, 1);
  3885. if(!isOnline(p_name)) {
  3886. msg.prefix(player, prefix_tips, "This player is not online.");
  3887. goto("wait");
  3888. }
  3889. p = read.player(p_name);
  3890. msg.prefix(player, prefix_tips, string.concat("Tip sent to §7", p_name, "§r."));
  3891. }
  3892. tipp_value = tipp.get(tipp_key);
  3893. msg(p, text.merge(text.new(string.concat(string.getPrefix(string.concat("§e", player.getName(player))), " ")), string.getInterpretedText(tipp_value)));
  3894. goto("wait");
  3895. @help
  3896. if(size > 1) {
  3897. msg.prefix(sender, prefix_commands, "/help [side]");
  3898. goto("wait");
  3899. }
  3900. //Auf Permission überprüfen
  3901. temp_list = list.new();
  3902. for(i = 0; i < list.getSize(command_list); i++) {
  3903. command = list.getIndex(command_list, i);
  3904. if(perm.has(command, sender)) {
  3905. list.add(temp_list, command);
  3906. }
  3907. }
  3908. list.sort(temp_list);
  3909. temp_size = list.getSize(temp_list);
  3910. max_side = temp_size / 10;
  3911. if(size == 0) {
  3912. side = 1;
  3913. print_side = side - 1;
  3914. } else {
  3915. side = list.getIndex(args, 0);
  3916. if(!isDouble(side)) {
  3917. msg.prefix(sender, prefix_commands, "/help [side]");
  3918. goto("wait");
  3919. }
  3920. print_side = side - 1;
  3921. if(print_side < 0 || print_side > max_side) {
  3922. msg.prefix(sender, prefix_commands, string.concat("Possible: 1 - ", string.number(math.roundDown(max_side + 1))));
  3923. goto("wait");
  3924. }
  3925. }
  3926. msg.string(sender, string.concat("§a --- Help ", string.number(side), " ---"));
  3927. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  3928. if(i < temp_size) {
  3929. command_string = list.getIndex(temp_list, i);
  3930. command = string.getHoverText(command_string, map.getOrDefault(command_map, command_string, ""));
  3931. msg(sender, text.merge(text.new(" /"), text.suggest(command, string.concat("/", command_string))));
  3932. }
  3933. }
  3934. if(side == 1) {
  3935. backward = text.new("§c<<Backward<<");
  3936. forward = string.getClickText("§b>>Forward>>", string.concat("/help ", side + 1));
  3937. } elseif(side > max_side) {
  3938. backward = string.getClickText("§b<<Backward<<", string.concat("/help ", side - 1));
  3939. forward = text.new("§c>>Forward>>");
  3940. } else {
  3941. backward = string.getClickText("§b<<Backward<<", string.concat("/help ", side - 1));
  3942. forward = string.getClickText("§b>>Forward>>", string.concat("/help ", side + 1));
  3943. }
  3944. msg(sender, text.merge(backward, text.new(" "), forward));
  3945. goto("wait");
  3946. @grow
  3947. if(size != 1) {
  3948. msg.prefix(player, prefix_commands, "/grow <radius>");
  3949. goto("wait");
  3950. }
  3951. radius = list.getIndex(args, 0);
  3952. if(!isDouble(radius)) {
  3953. msg.prefix(player, prefix_commands, "Number expected.");
  3954. goto("wait");
  3955. }
  3956. if(radius < 0) {
  3957. msg.prefix(player, prefix_commands, "Positive number expected.");
  3958. goto("wait");
  3959. }
  3960. center_loc = getBlockLocation(entity.getLocation(player));
  3961. grow(center_loc, radius);
  3962. msg.prefix(player, prefix_commands, "Field grown.");
  3963. goto("wait");
  3964. @start
  3965. if(size != 1) {
  3966. @starthelp
  3967. msg.prefix(sender, prefix_commands, "/start <name>");
  3968. goto("wait");
  3969. }
  3970. arg0 = string.toLowerCase(list.getIndex(args, 0));
  3971. modTimer(-500);
  3972. if(arg0 == "chat") {
  3973. script = script.get("Chat");
  3974. if(script != null) {
  3975. script.term(script);
  3976. }
  3977. script.startNamed("Chat", "utils/u_error", "system/chat", "utils/u_general");
  3978. }
  3979. elseif(arg0 == "challenges") {
  3980. script = script.get("Challenges");
  3981. if(script != null) {
  3982. script.term(script);
  3983. }
  3984. script.startNamed("Challenges", "utils/u_error", "survival/challenges", "utils/u_general");
  3985. script = script.get("AllDamageTypes");
  3986. if(script != null) {
  3987. script.term(script);
  3988. }
  3989. script.startNamed("AllDamageTypes", "utils/u_error", "challenges/all_damage_types", "utils/u_general");
  3990. script = script.get("AllEntities");
  3991. if(script != null) {
  3992. script.term(script);
  3993. }
  3994. script.startNamed("AllEntities", "utils/u_error", "challenges/all_entities", "utils/u_general");
  3995. script = script.get("AllItems");
  3996. if(script != null) {
  3997. script.term(script);
  3998. }
  3999. script.startNamed("AllItems", "utils/u_error", "challenges/all_items", "utils/u_general");
  4000. }
  4001. elseif(arg0 == "commands") {
  4002. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_commands", "utils/u_skills");
  4003. if(script == null) {
  4004. msg.dev("Old commands script still active due to error in new script");
  4005. goto("wait");
  4006. }
  4007. script.term(script.get());
  4008. }
  4009. elseif(arg0 == "commandhelp") {
  4010. if(players.getAmount() >= 0) {
  4011. msg.prefix(player, prefix_commands, "There are players online. Do /stop to restart the server.");
  4012. goto("wait");
  4013. }
  4014. script.startNamed("Commandhelp", "system/cmdhelp", "utils/u_general");
  4015. }
  4016. elseif(arg0 == "copyisland") {
  4017. script = script.get("Copyisland");
  4018. if(script != null) {
  4019. script.term(script);
  4020. }
  4021. script.startNamed("Copyisland", "system/copyisland", "utils/u_general");
  4022. }
  4023. elseif(arg0 == "creative") {
  4024. script = script.get("Creative");
  4025. if(script != null) {
  4026. script.term(script);
  4027. }
  4028. script.startNamed("Creative", "utils/u_error", "system/creative", "utils/u_general");
  4029. }
  4030. elseif(arg0 == "damage") {
  4031. script = script.get("Damage");
  4032. if(script != null) {
  4033. script.term(script);
  4034. }
  4035. script.startNamed("Damage", "utils/u_error", "system/damage", "utils/u_general");
  4036. }
  4037. elseif(arg0 == "doors") {
  4038. script = script.get("Doors");
  4039. if(script != null) {
  4040. script.term(script);
  4041. }
  4042. script.startNamed("Doors", "utils/u_error", "system/doors", "utils/u_general");
  4043. }
  4044. elseif(arg0 == "games") {
  4045. script = script.get("Gamecenter");
  4046. if(script != null) {
  4047. script.term(script);
  4048. }
  4049. script.startNamed("Gamecenter", "utils/u_error", "minigames/gamecenter", "utils/u_general", "utils/u_games");
  4050. }
  4051. elseif(arg0 == "gemstones") {
  4052. script = script.get("Gemstones");
  4053. if(script != null) {
  4054. script.term(script);
  4055. }
  4056. script.startNamed("Gemstones", "utils/u_error", "survival/gemstones", "utils/u_general");
  4057. }
  4058. elseif(arg0 == "harvest") {
  4059. script = script.get("Harvest");
  4060. if(script != null) {
  4061. script.term(script);
  4062. }
  4063. script.startNamed("Harvest", "utils/u_error", "survival/harvest", "utils/u_general");
  4064. }
  4065. elseif(arg0 == "herobrine") {
  4066. script = script.get("Herobrine");
  4067. if(script != null) {
  4068. script.term(script);
  4069. }
  4070. script.startNamed("Herobrine", "utils/u_error", "survival/herobrine", "utils/u_general");
  4071. }
  4072. elseif(arg0 == "humans") {
  4073. script = script.get("Humans");
  4074. if(script != null) {
  4075. script.term(script);
  4076. }
  4077. script.startNamed("Humans", "utils/u_error", "system/humans", "utils/u_general");
  4078. }
  4079. elseif(arg0 == "lectern") {
  4080. script = script.get("Lectern");
  4081. if(script != null) {
  4082. script.term(script);
  4083. }
  4084. script.startNamed("Lectern", "utils/u_error", "survival/lectern", "utils/u_general");
  4085. }
  4086. elseif(arg0 == "loginrequests") {
  4087. script = script.get("loginrequests");
  4088. if(script != null) {
  4089. script.term(script);
  4090. }
  4091. script.startNamed("LoginRequests", "system/login_requests", "utils/u_general");
  4092. }
  4093. elseif(arg0 == "loom") {
  4094. script = script.get("Loom");
  4095. if(script != null) {
  4096. script.term(script);
  4097. }
  4098. script.startNamed("Loom", "utils/u_error", "survival/loom", "utils/u_general");
  4099. }
  4100. elseif(arg0 == "perms") {
  4101. script = script.get("Perms");
  4102. if(script != null) {
  4103. script.term(script);
  4104. }
  4105. script.startNamed("Perms", "utils/u_error", "system/perms", "utils/u_general");
  4106. }
  4107. elseif(arg0 == "playerdata") {
  4108. script = script.get("Playerdata");
  4109. if(script != null) {
  4110. script.term(script);
  4111. }
  4112. script.startNamed("Playerdata", "utils/u_error", "system/player_data", "utils/u_general");
  4113. }
  4114. elseif(arg0 == "playtime") {
  4115. script = script.get("Playtime");
  4116. if(script != null) {
  4117. script.term(script);
  4118. }
  4119. script.startNamed("Playtime", "system/playtime", "utils/u_general");
  4120. }
  4121. elseif(arg0 == "pumpkin") {
  4122. script = script.get("Pumpkin");
  4123. if(script != null) {
  4124. script.term(script);
  4125. }
  4126. script.startNamed("Pumpkin", "utils/u_error", "survival/pumpkin", "utils/u_general");
  4127. }
  4128. elseif(arg0 == "recipes") {
  4129. script = script.get("Recipes");
  4130. if(script != null) {
  4131. script.term(script);
  4132. }
  4133. script.startNamed("Recipes", "survival/recipes");
  4134. }
  4135. elseif(arg0 == "stats") {
  4136. script = script.get("Ranklist");
  4137. if(script != null) {
  4138. script.term(script);
  4139. }
  4140. script.startNamed("Ranklist", "utils/u_error", "system/ranklist", "utils/u_general", "utils/u_games");
  4141. }
  4142. elseif(arg0 == "scheduler") {
  4143. script = script.get("Scheduler");
  4144. if(script != null) {
  4145. script.term(script);
  4146. }
  4147. script.startNamed("Scheduler", "utils/u_error", "system/scheduler", "utils/u_general");
  4148. }
  4149. elseif(arg0 == "shop") {
  4150. script = script.get("ChestShops");
  4151. if(script != null) {
  4152. script.term(script);
  4153. }
  4154. script.startNamed("ChestShops", "utils/u_error", "system/chestshops", "utils/u_general");
  4155. }
  4156. elseif(arg0 == "teleporter") {
  4157. script = script.get("Teleporter");
  4158. if(script != null) {
  4159. script.term(script);
  4160. }
  4161. script.startNamed("Teleporter", "utils/u_error", "survival/teleporter", "utils/u_general");
  4162. }
  4163. elseif(arg0 == "mails") {
  4164. script = script.get("Mails");
  4165. if(script != null) {
  4166. script.term(script);
  4167. }
  4168. script.startNamed("Mails", "utils/u_error", "system/mailsystem", "utils/u_general");
  4169. }
  4170. elseif(arg0 == "market") {
  4171. script = script.get("Market");
  4172. if(script != null) {
  4173. script.term(script);
  4174. }
  4175. script.startNamed("Market", "utils/u_error", "system/market", "utils/u_general");
  4176. }
  4177. elseif(arg0 == "mobarena") {
  4178. script = script.get("Mobarena");
  4179. if(script != null) {
  4180. script.term(script);
  4181. }
  4182. script.startNamed("Mobarena", "utils/u_error", "survival/mobarena", "utils/u_general");
  4183. }
  4184. elseif(arg0 == "ticket") {
  4185. script = script.get("Ticket");
  4186. if(script != null) {
  4187. script.term(script);
  4188. }
  4189. script.startNamed("Ticket", "utils/u_error", "system/tickets", "utils/u_general");
  4190. }
  4191. elseif(arg0 == "timber") {
  4192. script = script.get("Timber");
  4193. if(script != null) {
  4194. script.term(script);
  4195. }
  4196. script.startNamed("Timber", "utils/u_error", "survival/timber", "utils/u_general", "utils/u_skills");
  4197. }
  4198. elseif(arg0 == "tiploop") {
  4199. script = script.get("tiploop");
  4200. if(script != null) {
  4201. script.term(script);
  4202. }
  4203. script.startNamed("tiploop", "utils/u_error", "system/tiploop", "utils/u_general");
  4204. }
  4205. elseif(arg0 == "trader") {
  4206. script = script.get("Trader");
  4207. if(script != null) {
  4208. script.term(script);
  4209. }
  4210. script.startNamed("Trader", "utils/u_error", "survival/trader", "utils/u_general");
  4211. }
  4212. elseif(arg0 == "skills") {
  4213. script = script.get("Skills");
  4214. if(script != null) {
  4215. script.term(script);
  4216. }
  4217. script.startNamed("Skills", "utils/u_error", "survival/skills", "utils/u_general", "utils/u_skills", "utils/u_quest");
  4218. }
  4219. elseif(arg0 == "story") {
  4220. /*script = script.get("Story");
  4221. if(script != null) {
  4222. script.term(script);
  4223. }
  4224. script.startNamed("Story", "utils/u_error", "story/story", "utils/u_general");*/
  4225. script = script.get("QuestsAdmont");
  4226. if(script != null) {
  4227. script.term(script);
  4228. }
  4229. script.startNamed("QuestsAdmont", "utils/u_error", "story/admont/core", "utils/u_general", "utils/u_quest");
  4230. /*script = script.get("QuestsSchiffbruch");
  4231. if(script != null) {
  4232. script.term(script);
  4233. }
  4234. script.startNamed("QuestsSchiffbruch", "utils/u_error", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");*/
  4235. }
  4236. elseif(arg0 == "sitting") {
  4237. script = script.get("Sitting");
  4238. if(script != null) {
  4239. script.term(script);
  4240. }
  4241. script.startNamed("Sitting", "utils/u_error", "system/sitting", "utils/u_general");
  4242. }
  4243. elseif(arg0 == "survival") {
  4244. script = script.get("Survival");
  4245. if(script != null) {
  4246. script.term(script);
  4247. }
  4248. script.startNamed("Survival", "utils/u_error", "survival/survival", "utils/u_general", "utils/u_skills");
  4249. }
  4250. elseif(arg0 == "plots") {
  4251. script = script.get("Plots");
  4252. if(script != null) {
  4253. script.term(script);
  4254. }
  4255. script.startNamed("Plots", "utils/u_error", "system/plots", "utils/u_general");
  4256. }
  4257. else {
  4258. goto("starthelp");
  4259. }
  4260. goto("wait");
  4261. @stop
  4262. script.start("stop");
  4263. goto("wait");
  4264. @senditem
  4265. if(size != 1) {
  4266. msg.prefix(player, prefix_commands, "/senditem <player>");
  4267. goto("wait");
  4268. }
  4269. item = living.getHand(player);
  4270. if(item.isAir(item)) {
  4271. msg.prefix(player, prefix_commands, "You need to hold an item in your hand.");
  4272. goto("wait");
  4273. }
  4274. p_name = list.getIndex(args, 0);
  4275. p_uuid = player.getUuid(p_name);
  4276. if(p_uuid == null) {
  4277. msg.prefix(player, prefix_commands, "This player has never been online.");
  4278. goto("wait");
  4279. }
  4280. p = read.player(p_name);
  4281. if(p == null) {
  4282. msg.prefix(player, prefix_commands, "This player is not online.");
  4283. goto("wait");
  4284. }
  4285. player.safeGiveItem(p, item);
  4286. player.removeItem(player, item);
  4287. goto("wait");
  4288. @top
  4289. player_loc = entity.getLocation(player);
  4290. y = 319;
  4291. loc.setY(player_loc, y);
  4292. while(y > -64 && block.isAir(block.get(player_loc))) {
  4293. loc.setY(player_loc, y);
  4294. y--;
  4295. }
  4296. if(y == -64) {
  4297. msg.prefix(player, prefix_commands, "No block found.");
  4298. goto("wait");
  4299. }
  4300. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  4301. goto("wait");
  4302. @creative
  4303. crea_spawn = world.getCreativeSpawn();
  4304. world = loc.getWorld(crea_spawn);
  4305. if(world == null) {
  4306. msg.prefix(player, prefix_commands, "This world is not loaded.");
  4307. goto("wait");
  4308. }
  4309. if(size > 1) {
  4310. msg.prefix(player, prefix_commands, "/creative [player]");
  4311. goto("wait");
  4312. }
  4313. if(size == 0) {
  4314. p = player;
  4315. }
  4316. if(size == 1) {
  4317. p_name = list.getIndex(args, 0);
  4318. p = read.player(p_name);
  4319. if(p == null) {
  4320. msg.prefix(player, prefix_commands, "This player is not online.");
  4321. goto("wait");
  4322. }
  4323. if(!perm.has("tp.other", player)) {
  4324. perm.no("tp.other", player);
  4325. goto("wait");
  4326. }
  4327. }
  4328. if(player.hasMinigame(p)) {
  4329. if(size == 1) {
  4330. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  4331. goto("wait");
  4332. }
  4333. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  4334. goto("wait");
  4335. }
  4336. if(size == 1) {
  4337. if(player != p) {
  4338. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was teleported to the creative world."));
  4339. }
  4340. }
  4341. if(player.teleport(p, crea_spawn, true)) {
  4342. msg.prefix(p, prefix_commands, "You have been teleported to the creative world.");
  4343. }
  4344. goto("wait");
  4345. @minigames
  4346. @games
  4347. world = loc.getWorld(world.getGamesSpawn());
  4348. if(world == null) {
  4349. msg.prefix(player, prefix_commands, "This world is not loaded.");
  4350. goto("wait");
  4351. }
  4352. if(size > 1) {
  4353. msg.prefix(player, prefix_commands, "/games [player]");
  4354. goto("wait");
  4355. }
  4356. if(size == 0) {
  4357. p = player;
  4358. }
  4359. if(size == 1) {
  4360. p_name = list.getIndex(args, 0);
  4361. p = read.player(p_name);
  4362. if(p == null) {
  4363. msg.prefix(player, prefix_commands, "This player is not online.");
  4364. goto("wait");
  4365. }
  4366. if(!perm.has("tp.other", player)) {
  4367. perm.no("tp.other", player);
  4368. goto("wait");
  4369. }
  4370. }
  4371. if(player.hasMinigame(p)) {
  4372. if(size == 1) {
  4373. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  4374. goto("wait");
  4375. }
  4376. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  4377. goto("wait");
  4378. }
  4379. if(size == 1) {
  4380. if(player != p) {
  4381. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was teleported to the games world."));
  4382. }
  4383. }
  4384. if(player.teleport(p, world.getGamesSpawn(), true)) {
  4385. msg.prefix(p, prefix_commands, "You have been teleported to the games world.");
  4386. }
  4387. goto("wait");
  4388. @repair
  4389. item = living.getHand(player);
  4390. if(item.isAir(item)) {
  4391. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  4392. goto("wait");
  4393. }
  4394. item.setDamage(item, 0);
  4395. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  4396. goto("wait");
  4397. @playtime
  4398. if(size == 0) {
  4399. p_id = player.getId(player);
  4400. arg0 = player.getName(player);
  4401. } else {
  4402. arg0 = string.toLowerCase(list.getIndex(args, 0));
  4403. if(arg0 == "year") {
  4404. modTimer(-20);
  4405. if(!perm.has("playtime.year", player)) {
  4406. perm.no("playtime.year", player);
  4407. goto("wait");
  4408. }
  4409. calendar = time.new(time.getMillis());
  4410. now_month = time.getMonth(calendar);
  4411. now_year = time.getYear(calendar);
  4412. if(size == 1) {
  4413. year = now_year;
  4414. } else {
  4415. year = list.getIndex(args, 1);
  4416. if(!isDouble(year)) {
  4417. msg.prefix(player, prefix_commands, "Number expected.");
  4418. goto("wait");
  4419. }
  4420. if(year > now_year) {
  4421. year = now_year;
  4422. }
  4423. }
  4424. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  4425. since_minutes = playtime.getTotalOnlineMinutes();
  4426. //Tabelle erstellen
  4427. table = table.new("§8", 4, 5, 5);
  4428. msg.string(player, table.getStart(table));
  4429. msg.string(player, table.get(table, string.number(year), "Playtime", "Change"));
  4430. msg.string(player, table.getMiddle(table));
  4431. //Monats-Spielzeit berechnen
  4432. temp_list = list.new();
  4433. 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
  4434. for(i = 1; i <= 12; i++) {
  4435. midnight = time.getCal(year, i, 1, 0, 0, 0);
  4436. midnight_2 = time.getCal(year, i + 1, 1, 0, 0, 0);
  4437. minutes = playtime.getInterval(midnight, midnight_2);
  4438. list.add(temp_list, minutes);
  4439. if(i == now_month && year == now_year) {
  4440. minutes += since_minutes;
  4441. }
  4442. }
  4443. for(i = 1; i <= 12; i++) {
  4444. minutes = list.getIndex(temp_list, i);
  4445. hours = math.roundDown(minutes / 60);
  4446. mod_minutes = minutes % 60;
  4447. if(mod_minutes < 10) {
  4448. time_string = string.concat("§6", string.number(hours), ":0", string.number(mod_minutes), " h");
  4449. } else {
  4450. time_string = string.concat("§6", string.number(hours), ":", string.number(mod_minutes), " h");
  4451. }
  4452. pre_minutes = list.getIndex(temp_list, i - 1);
  4453. if(minutes >= pre_minutes) {
  4454. color = "§a+";
  4455. a = minutes;
  4456. b = pre_minutes;
  4457. } else {
  4458. color = "§c-";
  4459. a = pre_minutes;
  4460. b = minutes;
  4461. }
  4462. if(b == 0) {
  4463. change = "";
  4464. } else {
  4465. change = math.round(a / b * 100 - 100);
  4466. change = string.concat(color, string.number(change), " %");
  4467. }
  4468. msg.string(player, table.get(table, string.concat("§6", month.getShortName(i)), time_string, change));
  4469. if(i == now_month && year == now_year) {
  4470. break;
  4471. }
  4472. }
  4473. //Tabelle beenden
  4474. msg.string(player, table.getEnd(table));
  4475. goto("wait");
  4476. }
  4477. if(arg0 == "month") {
  4478. modTimer(-100);
  4479. if(!perm.has("playtime.month", player)) {
  4480. perm.no("playtime.month", player);
  4481. goto("wait");
  4482. }
  4483. calendar = time.new(time.getMillis());
  4484. now_day = time.getDay(calendar);
  4485. now_month = time.getMonth(calendar);
  4486. now_year = time.getYear(calendar);
  4487. year = now_year;
  4488. if(size == 1) {
  4489. month = now_month;
  4490. } else {
  4491. month = list.getIndex(args, 1);
  4492. if(!isDouble(month)) {
  4493. msg.prefix(player, prefix_commands, "Number expected.");
  4494. goto("wait");
  4495. }
  4496. if(month < 1) {
  4497. month = 1;
  4498. } elseif(month > 12) {
  4499. month = 12;
  4500. }
  4501. if(size == 3) {
  4502. year = list.getIndex(args, 2);
  4503. if(!isDouble(year)) {
  4504. msg.prefix(player, prefix_commands, "Number expected.");
  4505. goto("wait");
  4506. }
  4507. }
  4508. if(year > now_year ||(year >= now_year && month > now_month)) {
  4509. month = now_month;
  4510. year = now_year;
  4511. }
  4512. }
  4513. sum_minutes = 0;
  4514. sum_players = 0;
  4515. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  4516. since_minutes = playtime.getTotalOnlineMinutes();
  4517. //Tabelle erstellen
  4518. table = table.new("§8", 4, 5, 5);
  4519. msg.string(player, table.getStart(table));
  4520. msg.string(player, table.get(table, month.getShortName(month), "Playtime", "Players"));
  4521. msg.string(player, table.getMiddle(table));
  4522. //Tages-Spielzeit berechnen
  4523. month_days = time.getMonthDays(month, year);
  4524. for(i = 1; i <= month_days; i++) {
  4525. midnight = time.getCal(year, month, i, 0, 0, 0);
  4526. if(i == month_days) {
  4527. midnight_2 = time.getCal(year, month + 1, 1, 0, 0, 0);
  4528. } else {
  4529. midnight_2 = time.getCal(year, month, i + 1, 0, 0, 0);
  4530. }
  4531. players = playtime.getPlayersPerInterval(midnight, midnight_2);
  4532. sum_players += players;
  4533. minutes = playtime.getInterval(midnight, midnight_2);
  4534. if(i == now_day && month == now_month && year == now_year) {
  4535. minutes += since_minutes;
  4536. }
  4537. sum_minutes += minutes;
  4538. hours = math.roundDown(minutes / 60);
  4539. minutes = minutes % 60;
  4540. if(minutes < 10) {
  4541. time_string = string.concat("§6", string.number(hours), ":0", string.number(minutes), " h");
  4542. } else {
  4543. time_string = string.concat("§6", string.number(hours), ":", string.number(minutes), " h");
  4544. }
  4545. msg.string(player, table.get(table, string.concat("§6", string.number(i)), time_string, string.number(players)));
  4546. if(i == now_day && month == now_month && year == now_year) {
  4547. break;
  4548. }
  4549. }
  4550. //Average
  4551. avg_mins = sum_minutes / i;
  4552. avg_hours = math.roundDown(avg_mins / 60);
  4553. avg_mins = avg_mins % 60;
  4554. if(avg_mins < 10) {
  4555. avg_time_string = string.concat("§6", string.number(avg_hours), ":0", string.number(avg_mins), " h");
  4556. } else {
  4557. avg_time_string = string.concat("§6", string.number(avg_hours), ":", string.number(avg_mins), " h");
  4558. }
  4559. avg_players = sum_players / i;
  4560. msg.string(player, table.getMiddle(table));
  4561. msg.string(player, table.get(table, "§6Ø", avg_time_string, string.number(math.roundDown(avg_players))));
  4562. //Tabelle beenden
  4563. msg.string(player, table.getEnd(table));
  4564. goto("wait");
  4565. }
  4566. if(arg0 == "all") {
  4567. modTimer(-10);
  4568. msg.string(player, string.getSpacer());
  4569. msg.prefix(player, prefix_commands, "Server-Playtime");
  4570. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  4571. since_minutes = playtime.getTotalOnlineMinutes();
  4572. //Spielzeit heute
  4573. now_cal = time.new(time.getMillis());
  4574. now_day = time.getDay(now_cal);
  4575. now_month = time.getMonth(now_cal);
  4576. now_year = time.getYear(now_cal);
  4577. midnight = time.getCal(now_year, now_month, now_day, 0, 0, 0);
  4578. minutes = playtime.getInterval(midnight, now_cal) + since_minutes;
  4579. hours = string.number(math.roundDown(minutes / 60));
  4580. minutes = string.number(minutes % 60);
  4581. msg.string(player, string.concat("§6Today: §r", hours, " h ", minutes, " min"));
  4582. //Spielzeit 30 Tage für alle Spieler
  4583. year = now_year;
  4584. month = now_month;
  4585. day = now_day - 30;
  4586. if(day < 1) {
  4587. month -= 1;
  4588. if(month < 1) {
  4589. year -= 1;
  4590. month = 12;
  4591. }
  4592. day += time.getMonthDays(month, year);
  4593. }
  4594. thirtyDaysAgo = time.getCal(year, month, day, time.getHour(now_cal), time.getMinute(now_cal), time.getSecond(now_cal));
  4595. minutes = playtime.getInterval(thirtyDaysAgo, now_cal) + since_minutes;
  4596. hours = string.number(math.roundDown(minutes / 60));
  4597. minutes = string.number(minutes % 60);
  4598. msg.string(player, string.concat("§630 Days: §r", hours, " h ", minutes, " min"));
  4599. //Spielzeit gesamt
  4600. minutes = playtime.getTotal();
  4601. hours = string.number(math.roundDown(minutes / 60));
  4602. minutes = string.number(minutes % 60);
  4603. msg.string(player, string.concat("§6Total: §r", hours, " h ", minutes, " min"));
  4604. goto("wait");
  4605. }
  4606. if(!perm.has("playtime.other", player)) {
  4607. perm.no("playtime.other", player);
  4608. goto("wait");
  4609. }
  4610. }
  4611. if(!checkIfEverOnline(arg0)) {
  4612. msg.prefix(player, prefix_commands, "This player has never been online.");
  4613. goto("wait");
  4614. }
  4615. p_uuid = player.getUuid(arg0);
  4616. arg0 = player.getName(p_uuid);
  4617. p_id = player.getId(p_uuid);
  4618. msg.string(player, string.getSpacer());
  4619. msg.prefix(player, prefix_commands, string.concat("Playtime of ", player.getName(p_uuid)));
  4620. //Online seit
  4621. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  4622. if(isOnline(arg0)) {
  4623. since_hours = math.roundDown(since_minutes / 60);
  4624. mod_minutes = since_minutes % 60;
  4625. msg.string(player, string.concat("§aOnline since: §r", string.number(since_hours), " hours ", string.number(mod_minutes), " minutes"));
  4626. } else {
  4627. msg.string(player, "§6Status: §cOffline");
  4628. }
  4629. //Spielzeit heute
  4630. now_cal = time.new(time.getMillis());
  4631. now_day = time.getDay(now_cal);
  4632. now_month = time.getMonth(now_cal);
  4633. now_year = time.getYear(now_cal);
  4634. midnight = time.getCal(now_year, now_month, now_day, 0, 0, 0);
  4635. minutes = playtime.getPlayerInterval(p_id, midnight, now_cal) + since_minutes;
  4636. hours = string.number(math.roundDown(minutes / 60));
  4637. minutes = string.number(minutes % 60);
  4638. msg.string(player, string.concat("§6Today: §r", hours, " h ", minutes, " min"));
  4639. //Spielzeit 30 Tage
  4640. year = now_year;
  4641. month = now_month;
  4642. day = now_day - 30;
  4643. if(day < 1) {
  4644. month -= 1;
  4645. if(month < 1) {
  4646. year -= 1;
  4647. month = 12;
  4648. }
  4649. day += time.getMonthDays(month, year);
  4650. }
  4651. thirtyDaysAgo = time.getCal(year, month, day, time.getHour(now_cal), time.getMinute(now_cal), time.getSecond(now_cal));
  4652. minutes = playtime.getPlayerInterval(p_id, thirtyDaysAgo, now_cal) + since_minutes;
  4653. hours = string.number(math.roundDown(minutes / 60));
  4654. minutes = string.number(minutes % 60);
  4655. msg.string(player, string.concat("§630 Days: §r", hours, " h ", minutes, " min"));
  4656. //Spielzeit gesamt
  4657. minutes = playtime.getPlayerTotal(p_id);
  4658. hours = string.number(math.roundDown(minutes / 60));
  4659. minutes = string.number(minutes % 60);
  4660. msg.string(player, string.concat("§6Total: §r", hours, " h ", minutes, " min"));
  4661. goto("wait");
  4662. @datatools
  4663. if(size == 0) {
  4664. @datatoolshelp
  4665. msg.prefix(player, prefix_datatools, "/datatools ...");
  4666. msg.string(player, "§6 - item-flag <name> §rAdds a flag on an item");
  4667. msg.string(player, "§6 - item-name <name> §rRenames an item");
  4668. msg.string(player, "§6 - item-lore <lore> §rSets an item lore");
  4669. msg.string(player, "§6 - item-attribute <attribut> <slot> <double> <op> §rAdds an attribute to an item");
  4670. msg.string(player, "§6 - entity-hide §rHides an entity");
  4671. msg.string(player, "§6 - entity-show §rShows an entity");
  4672. msg.string(player, "§6 - entity-name <name> §rRenames an entity");
  4673. msg.string(player, "§6 - entity-print §rPrint entities nbt-tag");
  4674. msg.string(player, "§6 - frame-hide §rHides an item frame");
  4675. msg.string(player, "§6 - frame-show §rShows an item frame");
  4676. msg.string(player, "§6 - name-visibility <boolean> §rShow name (not) permanent");
  4677. goto("wait");
  4678. }
  4679. arg0 = string.toLowerCase(list.getIndex(args, 0));
  4680. if(arg0 == "item-flag") {
  4681. if(size < 2) {
  4682. msg.prefix(player, prefix_datatools, "/datatools item-flag <name>");
  4683. goto("wait");
  4684. }
  4685. item = living.getHand(player);
  4686. if(item.isAir(item)) {
  4687. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  4688. goto("wait");
  4689. }
  4690. name = string.concatList(args, " ", 1, size - 1);
  4691. if(!list.contains(item_flags, name)) {
  4692. msg.prefix(player, prefix_datatools, "You can´t add that flag.");
  4693. goto("wait");
  4694. }
  4695. item.addFlag(item, name);
  4696. msg.prefix(player, prefix_datatools, "Flag added.");
  4697. goto("wait");
  4698. }
  4699. if(arg0 == "item-attribute") {
  4700. if(size < 5) {
  4701. msg.prefix(player, prefix_datatools, "/datatools item-attribute <attribut> <slot> <double> <op>");
  4702. goto("wait");
  4703. }
  4704. item = living.getHand(player);
  4705. if(item.isAir(item)) {
  4706. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  4707. goto("wait");
  4708. }
  4709. double = list.getIndex(args, 3);
  4710. if(!isDouble(double) || double < 0) {
  4711. msg.prefix(player, prefix_datatools, "Natural number expected.");
  4712. goto("wait");
  4713. }
  4714. attribut = list.getIndex(args, 1);
  4715. if(!set.contains(attribut_set, attribut)) {
  4716. msg.prefix(player, prefix_datatools, "Unknown attribute.");
  4717. goto("wait");
  4718. }
  4719. slot = read.slot(list.getIndex(args, 2));
  4720. if(slot == null) {
  4721. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  4722. goto("wait");
  4723. }
  4724. operation = list.getIndex(args, 4);
  4725. if(!set.contains(operation_set, operation)) {
  4726. msg.prefix(player, prefix_datatools, "Unknown operation.");
  4727. goto("wait");
  4728. }
  4729. item.addAttribute(item, attribut, slot, double, operation);
  4730. msg.prefix(player, prefix_datatools, "Attribute added.");
  4731. goto("wait");
  4732. }
  4733. if(arg0 == "item-name") {
  4734. if(size < 2) {
  4735. msg.prefix(player, prefix_datatools, "/datatools item-name <name>");
  4736. goto("wait");
  4737. }
  4738. item = living.getHand(player);
  4739. if(item.isAir(item)) {
  4740. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4741. goto("wait");
  4742. }
  4743. name = string.concatList(args, " ", 1, size - 1);
  4744. name = string.replace(name, "&", "§");
  4745. name = string.replace(name, "\\n", "\n");
  4746. item.setName(item, text.new(name));
  4747. msg.prefix(player, prefix_datatools, string.concat("Item renamed to ", name, "§r."));
  4748. goto("wait");
  4749. }
  4750. if(arg0 == "entity-print") {
  4751. entity = player.getTargetEntity(player, 5);
  4752. if(entity == null) {
  4753. msg.prefix(player, prefix_commands, "No entity found.");
  4754. goto("wait");
  4755. }
  4756. txt_ent = string.entity(entity);
  4757. msg(player, string.getClipBoardText(txt_ent, txt_ent));
  4758. goto("wait");
  4759. }
  4760. if(arg0 == "item-lore") {
  4761. if(size < 2) {
  4762. msg.prefix(player, prefix_datatools, "/datatools item-lore <lore>");
  4763. goto("wait");
  4764. }
  4765. item = living.getHand(player);
  4766. if(item.isAir(item)) {
  4767. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4768. goto("wait");
  4769. }
  4770. lore = string.concatList(args, " ", 1, size - 1);
  4771. lore = string.replace(lore, "&", "§");
  4772. item.addLore(item, lore);
  4773. msg.prefix(player, prefix_datatools, "New lore added.");
  4774. goto("wait");
  4775. }
  4776. if(arg0 == "entity-name") {
  4777. if(size < 2) {
  4778. msg.prefix(player, prefix_datatools, "/datatools entity-name <name>");
  4779. goto("wait");
  4780. }
  4781. templist = living.near(player, 3);
  4782. list.remove(templist, player);
  4783. if(list.getSize(templist) == 0) {
  4784. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4785. goto("wait");
  4786. }
  4787. entity = list.getIndex(templist, 0);
  4788. name = string.concatList(args, " ", 1, size - 1);
  4789. name = string.replace(name, "&", "§");
  4790. entity.setName(entity, text.new(name), true);
  4791. msg.prefix(player, prefix_datatools, string.concat("Entity renamed to ", name, "§r."));
  4792. goto("wait");
  4793. }
  4794. if(arg0 == "name-visibility") {
  4795. if(size != 2) {
  4796. msg.prefix(player, prefix_datatools, "/datatools name-visibility <boolean>");
  4797. goto("wait");
  4798. }
  4799. templist = living.near(player, 3);
  4800. list.remove(templist, player);
  4801. if(list.getSize(templist) == 0) {
  4802. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4803. goto("wait");
  4804. }
  4805. entity = list.getIndex(templist, 0);
  4806. boolean = list.getIndex(args, 1);
  4807. name = entity.getName(entity);
  4808. entity.setName(entity, name, boolean);
  4809. msg.prefix(player, prefix_datatools, "Name-Visibility changed.");
  4810. goto("wait");
  4811. }
  4812. if(arg0 == "frame-hide") {
  4813. if(size != 1) {
  4814. msg.prefix(player, prefix_datatools, "/datatools frame-hide");
  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.hide(entity);
  4828. msg.prefix(player, prefix_datatools, "Item frame is now hidden.");
  4829. goto("wait");
  4830. }
  4831. if(arg0 == "frame-show") {
  4832. if(size != 1) {
  4833. msg.prefix(player, prefix_datatools, "/datatools frame-show");
  4834. goto("wait");
  4835. }
  4836. entity = player.getTargetEntity(player, 5);
  4837. if(entity == null) {
  4838. msg.prefix(player, prefix_datatools, "Not an item frame.");
  4839. goto("wait");
  4840. }
  4841. entity_type = entity.getType(entity);
  4842. if(entity_type != "item_frame" && entity_type != "glow_item_frame") {
  4843. msg.prefix(player, prefix_datatools, "Not an item frame.");
  4844. goto("wait");
  4845. }
  4846. entity.frame.show(entity);
  4847. msg.prefix(player, prefix_datatools, "Item frame now shown.");
  4848. goto("wait");
  4849. }
  4850. if(arg0 == "entity-hide") {
  4851. if(size != 1) {
  4852. msg.prefix(player, prefix_datatools, "/datatools entity-hide");
  4853. goto("wait");
  4854. }
  4855. templist = living.near(player, 3);
  4856. list.remove(templist, player);
  4857. if(list.getSize(templist) == 0) {
  4858. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4859. goto("wait");
  4860. }
  4861. entity = list.getIndex(templist, 0);
  4862. living.setInvisible(entity, true);
  4863. msg.prefix(player, prefix_datatools, "Entity is now hidden.");
  4864. goto("wait");
  4865. }
  4866. if(arg0 == "entity-show") {
  4867. if(size != 1) {
  4868. msg.prefix(player, prefix_datatools, "/datatools entity-show");
  4869. goto("wait");
  4870. }
  4871. templist = living.near(player, 3);
  4872. list.remove(templist, player);
  4873. if(list.getSize(templist) == 0) {
  4874. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4875. goto("wait");
  4876. }
  4877. entity = list.getIndex(templist, 0);
  4878. living.setInvisible(entity, false);
  4879. msg.prefix(player, prefix_datatools, "Entity is now visible.");
  4880. goto("wait");
  4881. }
  4882. goto("datatoolshelp");
  4883. @human
  4884. if(size == 0) {
  4885. @humanhelp
  4886. msg.prefix(player, prefix_human, "/human ...");
  4887. msg.string(player, string.concat("§6 - skin <name> §rSets the skin of a citizen"));
  4888. msg.string(player, string.concat("§6 - equip [bodypart] [itemstack] §rEquips a citizen"));
  4889. goto("wait");
  4890. }
  4891. arg0 = string.toLowerCase(list.getIndex(args, 0));
  4892. citizen = player.getTargetCitizen(player, 5);
  4893. if(!isCitizen(citizen)) {
  4894. msg.prefix(player, prefix_human, "No citizen.");
  4895. goto("wait");
  4896. }
  4897. elseif(arg0 == "equip") {
  4898. slot = "HAND";
  4899. if(size > 1) {
  4900. slot = string.toUpperCase(list.getIndex(args, 1));
  4901. if(slot != "BOOTS" && slot != "CHESTPLATE" && slot != "HAND" && slot != "HELMET" && slot != "LEGGINGS" && slot != "OFF_HAND") {
  4902. msg.prefix(player, prefix_commands, "Not supported bodypart.");
  4903. goto("wait");
  4904. }
  4905. }
  4906. if(size < 3) {
  4907. equip_item = living.getHand(player);
  4908. } elseif(size >= 3) {
  4909. arg2 = list.getIndex(args, 2);
  4910. equip_mat = material.get(arg2);
  4911. if(equip_mat == null) {
  4912. msg.prefix(player, prefix_commands, "Not a valid item.");
  4913. goto("wait");
  4914. }
  4915. equip_item = item.new(equip_mat);
  4916. }
  4917. citizen.setEquip(citizen, slot, equip_item);
  4918. goto("wait");
  4919. }
  4920. elseif(arg0 == "skin") {
  4921. if(size == 2) {
  4922. name = string.toLowerCase(list.getIndex(args, 1));
  4923. if(name == "farmer") {
  4924. 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=");
  4925. } elseif(name == "fisher") {
  4926. 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=");
  4927. } elseif(name == "baker") {
  4928. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYxNDcyMzU0NDIwNSwKICAicHJvZmlsZUlkIiA6ICI4NDMwMDNlM2JlNTY0M2Q5OTQxMTBkMzJhMzU2MTk2MCIsCiAgInByb2ZpbGVOYW1lIiA6ICJHYWJvTWNHYW1lciIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZjVkZTQ4ODJiYzBlZDNjOWY5N2RjNDBiN2RkZjdmMGQxMDk3MzM3ODUzZjQwOTFjMmYwZjUwNWE3ZjZkM2E4IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0=", "K42itRnrloSmCnA4JkVbRMpd1SK11xVjERFyDnDzE3fo+vnhfqumXv1bLFfgDbm6M1pHpSnB3nIHVGiFfHAnPAzScqgr3cvE9QTZRB81utbXZKfs1AyavpbikkoGgwv8zplxVJvBTrYBtFkt1TbNgndkqM7iJY+Q9OquL+WCa1LPJfquXI+0oRMlhJ7pTw7VddxFLPvuqHtGOXiaBi2da0pfM3M9sfZXXerlIpAC6I2oijo8psOJ+/gcdLMlzriCRkB//iEJTYP9fSsZYBWKSN4j4WEW+yvyMZZND0FZBVy5Ee11AEAbEgxUekvsyT3kiE2du9MXErG4URY4Mwvp7AtBZ0y0l4OR4dP23O2ioOqFTTV7DBuHPQmYvaugkSWwDMbiuY2a1N7m6X4wZPSWUTXqvHd2VO12Y+1T285AizxC4qZ7r1oNbpwpUZvZ+x3QF7cGhcqA53WJvYtypr9BYqvzrGduql/kei1I5kyynlSoTExjgwKN+j0g6TDdXf6ty9gzdDN0Y1DyUmk4xlCniSm7HaoSUKkk5fF1brApC216MzB5v9/cZDQAXDnjpWFbtmWALx5ueMhrTlEMnfbIIJfFnhRgmqYiS3ilCsG7I9ObRTR2+4eTlGnInR2TBcSHv8PcIW/vSIN0sOPTX3VHrlpc5kmW8+gc8J4dEt7yYqc=");
  4929. } elseif(name == "priest") {
  4930. citizen.setSkin(citizen, "eyJ0aW1lc3RhbXAiOjE1MDcxNzUzMjgzMjksInByb2ZpbGVJZCI6IjcwOTU2NDU0NTJkOTRiYTI5YzcwZDFmYTY3YjhkYTQyIiwicHJvZmlsZU5hbWUiOiJIaWRkdXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzU4MzgxOTdkNzBhNmQ2ZmYzODk3NGExYmEyZTM1NTJiOTBjNjRjZmE0ZGFlMjI5NGNmMmRjMTgwMTY5YzVlOCJ9fX0=", "ryT6EeGTuOOtYW0XiBszxWTI+CxwfVrkBfB4YlnPwjGyPjHAXzOmnZh8HKsBMHD5APd7zOEkU829E8uL8wJLmRjiVHKldOphQee44ZgNN1Y/8RymneghYEs7HNLyB2g4hEzHl7HWOCq1R9sNUUlWRAkREpHo4LzzGSP6+hcBHjS7Y+SYm/QTnwmUoSnhakijBWi8/dA9Uf37g5hyXdRUKbLtySoD/bMWkZlUgkmcl2ErPYl3E87Zt+4VGCP9lfoWE9zhP+SrXgdilXFbGYECpkDMyXqcVx1VjFmqG1zpdalfimWeJ8gwRwWmJWxU3g97UGJ7g/Wg7Kn2Ar0rkwx660pf4syESRJKx1MmrAICUxoj1CpLlZOcDhoDvFTqvcGSmo7gdrTk1qEdTq0oHfMuaJRFjBwophK+z0YOO4vzyFadB6nvtmBvT8TDSfp0hxsIzzPpIQ7B0BBdpqwklavktDPMT7qcR1pXpbh/7EhN0OcJtOXjzNH9Bjmd10UWb5XZmtO65ICr7Q947Wd5JezabLMR3L3CNSXPerSCcvxFMdx5s0Io7SNjvk38rranOEHdsG7Z950DclmbftIr0JlySSZt+PmKVOlvMFulOo9oagHial6S807sd5tziQ9Y/tuNpAYpWbtyEYSBmp8+ydhUyTsbVW0qSS8uY4Mqr0aNaWk=");
  4931. } elseif(name == "alena") {
  4932. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTU5NjIyODQ5NDI0NiwKICAicHJvZmlsZUlkIiA6ICJhMjk1ODZmYmU1ZDk0Nzk2OWZjOGQ4ZGE0NzlhNDNlZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJWaWVydGVsdG9hc3RpaWUiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWUwYjJmNzg5NDZkZThmZjg4YzFkYzI2OTkwMTgxNTEzMjE1NzQ3NDZmZjg1ZjQ1Y2U5Nzk1YzZmMjc4NDNiNyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", "kDLavxU1Et/E6Gak3MaUHsqrH91LcQyxNUy1hG8Vr/0CL4uqWXMYFT1SP9VDrkPbfnzpqQIDG7uTfEsIwrMS0fpsMugdEmlwXv4Omcc+4j6VYT1BNvchNrxyvc4otsY9fTjMHfyxvmTB2yjUQdlJEjHPKw17cbH2lpFgEiNi1SM+V+IVHfg/gXnEufjYaTek+3uNd6UUiukc6S6MTeGcstJ3qJh5DUk/PJKWqapgoVqBGFmFoyqPgb0Ns2LEqvKPJc+uGvB6FpUPLYkqC+8HokYnBTxAFOF0803Xh4y0E17I+GckFGJsa2EP40g0oj2aFnua+lchAU1d0B8RkN2u0yD4bqELQjjxLj26qnDvl6V3aJ00KD/BCIiaPMxfyYKI5BFceFRYU2qwNX83LorkFIzuFDhRtn1jyYn5fDGN3CtSdQ60q733N3jXA14sUntrKiIEUrwu+HN2Qo2765skEiXoBMc7blHfgh0RFt4g/S021xd1gyid7ZqftG5TXeyvGZQH3XuQcdZ6o1nB8g2mnT1w36wGaIcUdCV5VWD9YxI1zjbNKeAONpHOFmgZxgJpJGaaYqJeJe4KgtPlxM6WTQ6g6U60bG14IZ5ZRfbAggb3jOaTYAH0tIahOaKO9/2POR+hRVIQ2lpQE7iOsPWQOoBIV8fy8pQMhsvWuqKcrww=");
  4933. } elseif(name == "butcher") {
  4934. 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=");
  4935. } elseif(name == "girl") {
  4936. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcwOTA5MTI1MTkyMiwKICAicHJvZmlsZUlkIiA6ICI5ZTA5YzM4ZGUzZTY0MDA2OTAwYzAwZTJiOTQ3ZTQwMyIsCiAgInByb2ZpbGVOYW1lIiA6ICJ4RFRPTUFTX1lUIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzdjODRhMjE4YTMwZGY2MjUwNzM0NmI2NmJkMzRmMjIyMzZkZjkxYjE5ZGM5YmRjZTdhNGQ0MjhmODY0OGJhYzYiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ==", "h3c7bg2JO7gacUy8hc0iZOcs9z29xbYokKGnH6JyPwQ2JXDa1jFWmsIm/lC2SKJpKknvUNzXuNHBavjF4j0PVHpu0iVTkSruIjoMn1H20jN7vVqaTsojZGWk2050d8+zctWg7gUMx33pa1VwP+4DKU6QQ7/yaxdZKnIPW80UAm73eukiLx9B+GIlcHPfRcVHs4ee471l1d5pupSv7VAUI2ZSkzYarUfhZnXshaqIgD7LuS4PkdtiBNS2Qm/9vZ6fkpIGLIQrAlT0fE4j9T6qLwqtff43x6YfsVMpDL9Lo5MCaphcGoAo4txsC47MX0L19xbtnd6doQTmpLTnxivlLgaPyrzA/c1oeC5JujwsNGthq2CqHdzVPDAUQDADf8BrfYKrEd3DskWVZzGg7wzrdUfJPYPHkkqFxhPm0SAPwPOVJp33RhpzjkXLsae45QN6/UEcQaSi0tIxltSWfeAK5f6/3zixk/SES3fSpk5oHvTaJGVWs/lGRaE0AFAqwrWvp5yTW5CU4rmTrAFWu0KtkW4sI8Kur+xwKry24FQF6h+Luo26lvaXVo7zGCtl94zm4LuMBWNTq0RgLWc5Zj6VvW4vGIybPj2/fQwoJIfodqawxzJjVguSiRzF2AxwTKoMtAn2guDfQkULsRat012oU7qvyJWhi1HLm504am4PxkI=");
  4937. } elseif(name == "mason") {
  4938. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYwNDQ5MjYyMzQxOCwKICAicHJvZmlsZUlkIiA6ICJlNzkzYjJjYTdhMmY0MTI2YTA5ODA5MmQ3Yzk5NDE3YiIsCiAgInByb2ZpbGVOYW1lIiA6ICJUaGVfSG9zdGVyX01hbiIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS85ODI1ZTk3NTZjM2VhNjZjOGNjZmEyZmU4MDU4MzRmNGZhMDVhMGY0ODc0NTY3NTljMzY0MjcwODkwNTE0NzZlIgogICAgfQogIH0KfQ==", "RLLeCZVT2zj4DhvrVl4fTVy4BdjyK02tTX5u3PT0gNcbluSRDNUjwG+G/HttDVtPpyQuVOq/8aAFT/xdu+BZaiI3q3830BWqVe+CbSJuHorHPbPskJRV8+L+Ra6rJLA9LJQh5li5EZCwiAwqBSQwqycIU7032xjtoPjfOXio0gAnqKLffTEc2irDq4KzZGH9WZjYJrEfS9eCkQ1780jl96oEordJT940G/mgiB+XZdg1RQs+YuDprGvX1ILVZluoN+SFWji9l3aPmktwGoP9K5NDJr1Yjqqtr0QcXUvB3bqs4EDeYe7+NXCtE4eW1bupr22dKO9EERyrL4oOm8K1lgmFRupeSH66R0Ny5Io8NrscZSSH1XZncnj6SZfYskJWRNN//F9BxM86hL0MEPtloAB9o0oJWLyoaXszMb1iJC9RKbvK3c2nAdyjWtcWijRA5muEZszzOX5XngHlFPAYWDI33EuTvqbth3GqZ7kid24Zly6TQbSCrd30EiNTeXYTJ1T5Fx1GRIzEYW+60qf3f2e59SlcBf4D7eA4btIaCAvfx2bKxbZQsdsHKDphpxsr7nizA8iRroo37nBiJ97gYUF2GsL03bLuge4cFLROpb4oaKGyldPZ4cHq33b8sbFs0eQUiS9selDsyx8G8MrvKfhYACpjyBv+ZLlWa+QMF4s=");
  4939. } elseif(name == "mage") {
  4940. 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=");
  4941. } elseif(name == "banker") {
  4942. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTU5NzMyNzk4Njk0MCwKICAicHJvZmlsZUlkIiA6ICI5MThhMDI5NTU5ZGQ0Y2U2YjE2ZjdhNWQ1M2VmYjQxMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJCZWV2ZWxvcGVyIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2RlODk0Zjk5NGVlYjQyMjU0OWE2NTE2YjYyODg1MGQ4MmY3OTJhZmNkNzVlY2U1YmQzYmQ3ZGE4M2M1YzkyMjYiCiAgICB9CiAgfQp9", "WhygM8rofUCUv4GVMrSl7tGxMUx/jczsz7lixaGhZbDJtEzKTAQFY25TZBjMvxpFqLvwOfbEWDRn1wOjof5dt7CwYcwnBfrksHj1lkpp7oh8omUbdnA0TDZFLdSAvmvtViRFaH+neH08jFfl+XLx5BnfY/6XimxKwxPKBZnvAc1DlpubiBgHXmPKYigRFAKCPgHCf9cDRm6jDNyZTYgPUJElBN5TIHREponJhE4pMDm8qOkidiUsrfqjHYZvl767sLA1QA3HPHZKtvug6xSve9X/2n6Fr3dvhNUI0dqj4EtbJkSPD7uCUgIvtx5nN1iQXjXWgEEVZ0JnA1KMCfjfjQRx2nEOqe9OVwADvIIbE+Asc0qw+Zas1Ys+AP5rBH5qT8Lmh5Wi2Bn0yj6zEk/iluTbkmnzMVdICnBKVUF4wdLY/5vvxe1+abZM2xVQ5eoPoyyEsD1wYc9c4Uticpe3A+jy8p8+a7FfAPVILfV6MOhkQ0S5FCpEIj0DbSbBoNnDBODmTYpBKrouYNI/IZPnwBsKluy0zAgTJ5lMM7bptda1BQaJKpA2kSkCTvADQ72kwFoBlfhOluwvfvgTBgI8rnVNAfSu2sEIC6BhdaOG9iqocKRYL474zbYMPWW1Z7fF3jrsEWWTa3+swN+8K89XeLv/jHUqwfx+3Gb5YG8ZGX0=");
  4943. } elseif(name == "lumberjack") {
  4944. 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=");
  4945. } elseif(name == "miner") {
  4946. 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=");
  4947. } elseif(name == "librarian") {
  4948. 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=");
  4949. } elseif(name == "dark_mage") {
  4950. 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=");
  4951. } elseif(name == "santa_marv") {
  4952. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYzNzI4NTI1MTMwMiwKICAicHJvZmlsZUlkIiA6ICJmYzUwMjkzYTVkMGI0NzViYWYwNDJhNzIwMWJhMzBkMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJDVUNGTDE3IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzYzYmMzNzczODg5YmRlNWFlZDA0NTliMWE5MWM5OWI1MTI4MDI1YzVmNTEwNDZjZjcxYjAxOWZhMTY2NWEyYTYiCiAgICB9CiAgfQp9", "r4SGS/TGW7tlibNTq4+uKg/v6oNc5eDD3BLbxIzcppll2tA9P4Za+16X968sgXQhrddNfdAh1zDui43WoON2Jrer797S1JzkddddISMiBq8CpjlUX77N6GvBOr5pBGgMKd0qLsDJUQF5Xa5FNun+ymwh1D57d0pb9eD0zNPIfD4V3REC1a9in1SHkoLfic11f8vCqBZ/oQ72eZ51GMYK1HWNSelCPGC1YQOEYI4WOD8suy44jRTrKO68cvmiizRBYykhJPP7Oqmcy2dOwXnDncif2vEEvTQVFp+uHolguIUOvKXy5lX7JIrZXsEgDaUHIAkQtMjO+9mH+qtkg2tniVTAUDFxQSdkbUY7kDfv40NipbiYgLyA4p+WPXr6BJyWGX6CCI8I71u7yUjOTH8pUt4OPVnGYUG0mT9kQO8P+vJIdW+Thg63/cTDHXmf8v+TDEdB2lyvjSdVeFD21C+MXXeM9yAWoZ370P1aLUar7dVUCRREpSBNpLFCo0wqpy1uiNYkO107LXD5wduxQJL1nQHVlym8+cvc7TyoRwEk7z6fL8NU+K8ijG/i9YhEUVPusCNhsbD33vJe2huroYMFx2DKHm9NeyTsTPsUmTu23bO4fZqttTdQohngbWYiDx0y8rDxakErF/gV4Ms38GVM80dAOde3dQpu0txYqGnPHxw=");
  4953. } elseif(name == "smith") {
  4954. citizen.setSkin(citizen, "eyJ0aW1lc3RhbXAiOjE1ODM1NTQzMTAxOTQsInByb2ZpbGVJZCI6IjIzZjFhNTlmNDY5YjQzZGRiZGI1MzdiZmVjMTA0NzFmIiwicHJvZmlsZU5hbWUiOiIyODA3Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84NDQ0NDQzMjlhZWM0OTYxYTJmMWYzZWNiYTBmYjJkZTE1NDU1Mzk5MTFmYjFlODA4ZmM4NzQ2NDNlNTRkZTY2In19fQ==", "qBm2/mxwTcJIEu8r13WohKEiByJQAx1K+5ciGEZQ08PRHbA0hWvuJfLWcAdOERsPARFCAhfzUZOjhOlKr28CNwTYnP7gTf6njP8Q9roSkwGSAH5PDH4mkiS9zmZQwYUJVyzn//srq6XsASNzGFq2ChgRZV+yGAVJFeSFpHAEnhQxhsSM3xltUo37aRjWNI4wlVSqzzQh+oJvB6IDWR6evrK1sNHByhX8/UNcx+XYL6PqN/51g16gJNmhppTu3YFj25dIBSiUTFFGViNMf7eAYrRS36ZkyUHlvAiC8leIOvC6cwtGGngOG6Vun2DtVI+9xyxqQhQURYIl+DrFt1cqSLDfEDVosKsfh3f5ynxaZ61fBZIz0hWxHmWw40SV+1wgfh0XD6jsusdXk/rf9zuRInhAvx/9cBnUNELfDfTeFmpkaZFo2LYwBawcKePVj7yqNborJ30mcyApO68mSIVzYLxO0aKfjRQYzrJx452iBRu4K87DbwvyLPowTzWrBh3HDUXdG4/Qn+W7eR3n7UYTFDeZUXURq6tDX8NEEj2giiBzonlkqpTECAXufabpHo+JvST4L97WKLP5omsKWyzVYTVILBn1On54gra6ZZwga7j+r3o67CQfOh8qDL6ZRoNRA9nBkUZzgjzHcfUAbUsqhYgkBpb/iEkqU6VU2Nc/+tA=");
  4955. } elseif(name == "casino") {
  4956. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTY0MjkwMTQ3NDQ4OCwKICAicHJvZmlsZUlkIiA6ICJjNTZlMjI0MmNiZWY0MWE2ODdlMzI2MGRjMGNmOTM2MSIsCiAgInByb2ZpbGVOYW1lIiA6ICJMSlI3MzEwMCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZTA3OTQ3ZTRhMmNkOGQ1NGVjZGE4N2ZiNTQxNTViODQ4Zjk4ZTE5ZDE1ZTBiOTVhYjAyOTAyNjEyM2JkODM5IgogICAgfQogIH0KfQ==", "H5PIINevEBYikUEDiKw388RE5pxSp07y1LidOW/uZJbBUXFCQoUWZTh3faR5uL51T5EXxyVWbiZD1LA14S3vIrtruW7yR+keJYGw5PCQDWaPi8Qq41wwtQ01GXnGviWIqrJ5CGjHBbSQ0jpfZ+wSs48rByKfoS35SFeYdPvJeAODj9Sz1BBrJ8D9hW+n6w721RkAMGtYHSDgjcjzB1on+li78RvSKa3kUm2jqU5jNdLURHoDJe5Yg3i2vfXGtHdspC6isgH5KVe2prwYlosanun0XIYc6L99u2deN88rF55IXWsE+12cVTzaMDj4/oQqFvyfd92TgCNmuTJvwQKG9bLyt8IXgb/E0sRLN5ymZ0gUIju1ZXeRYDppnxWiZlLV9KK1zpGQ82gLTtamfjpj7z3Sg9N51t3BhGCZ98Y2Rn6UDGJ//v/h0qm/tNP4trQEFp2qGpYW4hM/0sSHA8KvJlfGrHv22JboVNyOlXMEENpcp8KTpJfAD5mpYoLKM3CWFFN/yReTkdTFs3L/qvv1DtNsvunNqAd0NTwD5hzQoigt3Diq9ZyLgnmzCj6OISw6RQLMkdNNpeBgxorXpCJM+mqV5RmPQwU0EhTlnJD0RC8HfqTOmIREJ/aczd3DJ7rMiJpDaPqOpMnNetQR6m85k90pcDHY08UqB4ZfItChL9I=");
  4957. } elseif(name == "anna") {
  4958. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYwODY0MTkwMTQwNCwKICAicHJvZmlsZUlkIiA6ICI5MzZmMTA3MTEzOGM0YjMyYTg0OGY2NmE5Nzc2NDJhMiIsCiAgInByb2ZpbGVOYW1lIiA6ICIwMDAwMDAwMDAwMDAwMDB4IiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzg1ZjVjZjBhYjIzMjBjYzYzNWRlMzk0ZjI5MGQxOGRiMjQ0OTQxMjE1NzgzM2I4MjBlNTBlNWI5ZGY2ZjAxOWIiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ==", "EqWlrWpzfw/O8/Z5Lzw46lfSoEXERZT02R44zMSHr/2zzKBOmCt4kkl3COwNfO5Fjpc7el/4YbJya3ZBpmiLuJzPgYVtCt0cWmbxK7NXA2662yFq2Gsr6JX7NweQ2B6vZ573nFIOf7o/bMp2VI0BRRqPDsAlV61A1QS/aGYLJo7Yoz4njBRVYqVnAOXxUz8ETTSSfwxRHZSzXsvJVlci2yCalGcbM8dlGqgC9jRvZ4RjEFivCM7ICZGP9pJy555yOdMQvjkvxhslDNMvgpBR1hHBZA93yhjcTIGjErhIy/YwU9X0rpT9VEVjhQuPP+DBmJDrxj2IkyAESKvrRTG6ziZw8XlbCcDz9Q0Ao9GWp+wRMzntNNeFkMi/oVmDgh2pKFgdD2OGlhpl01286Ixcvw3XU4pQYmkq9khqomwvwjxomE0H52IjHAiFn+fEdVEw5n1ZdKJsvHHs/brqgohpKE5s8C+Lh5KDy76IfCOeiQcbBgpDdm2P9XeiuVkjZX8Sht+e05/ctPQpNXh5jgyjvREbKzbisztkZWzEnYI+uCa15dIIVkS0gTc8kJYX9ZQ6Q5IMUPPVo3R0etWfJ2jVI+M947rtEeJ9tRKslVA1H5MmAh9mndYkbFrMwzS7BLWbp4lhU4L9EsoUpHvf2IxInuLD1sauhGjJmTLtibs9tu4=");
  4959. } elseif(name == "diver") {
  4960. 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=");
  4961. } elseif(name == "mage_assistant") {
  4962. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTU5OTc0MzgxODcxMSwKICAicHJvZmlsZUlkIiA6ICJhMjk1ODZmYmU1ZDk0Nzk2OWZjOGQ4ZGE0NzlhNDNlZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJWaWVydGVsdG9hc3RpaWUiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmE3ODc4MjIxYWQ4MDg3ODkzNjlmMmVkZjRkZmJlNWU5N2UzODJiNzZjODVmZWIzZmQyY2FkODgyYzk1NTJhNyIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", "g3Ik0BT6M5jeFf7dHJ4hlLSJdiC5ivPcAb7gFP9+tlzH72N3eYrz+irExxpGQUsiro0NVEmlNt1R8aSBcY/wQDdLBOy9LHHt5MNpja72DDlFJUAW2fpXwJgfnCmqHDXzmVu3dfwyE0efZKOscFQzJQ5zbIGrEXjA2tOqEI/ZZMNehF5pNJZnusjGIpE/Abn9PxafnX/rvZAWr0BCip4wCUGbnfbDHlcn561HW50CAE8k3siqc+RJXXbnC24kYmblzuSBcHw33nCHRmlUiddyhzOE6NoWiZu9kNecOAapZmSZXCGMxyfwdy2n2Yg7ydxM8WTO7LOG1/o+ft/Ag24YxtHFkE6T2R03LvVYCTdodLzVQbXLqqMvGYcM7A6b6TPaHkMZhyumfH+GRoCI8kmyDEIqHrDbZOYhTyrpFBdz8WOOj1e5oz8nXQODMAC4ZEccj/5JishwPXxRdc9YFBkPJ63lJNN4boetMTdhDe3xe8tp8CoeNH3CaMn8eN0hkwmzXKx4I2qQPIO4NxW+bhJ1U6+qp8M0yllI2mRpZrTmTIhGHfq3nxJtUU+JcLMIaYiItnKlENH8vRP2UZrGq6SxiK0tE4A4wKGitXK/BAljLoUFLx8a+B/rbnmK8lqpWofaMeTeFw1W7m497ZaT7d3HLL0Jb/OR1vhP1NpJKZYhaLU=");
  4963. } elseif(name == "mage_guard") {
  4964. 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=");
  4965. } elseif(name == "notch") {
  4966. 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=");
  4967. } elseif(name == "oldman1") {
  4968. 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=");
  4969. } elseif(name == "oldman2") {
  4970. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTYxNDA4ODgxMjk5NiwKICAicHJvZmlsZUlkIiA6ICIyYzEwNjRmY2Q5MTc0MjgyODRlM2JmN2ZhYTdlM2UxYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJOYWVtZSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jM2ZjNDJhNGJiY2EwNTk2MTRmYjZlMGQ2NWQxMmU4NTFiYTM2YTA2ZjAyMzVkZGI2OTlhNWE2ZDFhMzgzNmMyIgogICAgfQogIH0KfQ==", "Ucbd0D4Nb8lGoZ9UF3A5yi00IfK0O7YcBrHO7osRimtISi92dhkKThJtjq7ibXf+8qu1a7wWrwgNpFHLtz5g1vcbJfkuzfHxuRQN+jcZIZt8skV+vujUP3eS1wezQATHuvhA3wBztn3UuTl7tCZXFEoq/ywcWN9qZH3QRljnWu88VOXHKtoBrkMPHO3t7BXaXyRMl5+wpkzWdSJIYD/wXop7yys78R2e6MAiPeKBsr+Bh5rNUIsUSUi80vAo51dH3aSzY0LW43m99UG1P9w2U56IfqJetpvrTVHm1xwNoyHcyQGXSeVlTXJkpCzFHdOlT8L5Pi6EbkyozxKTod/gH3PzhpYMlVCsqs/c3qBHma3GmL5+mppCdrulQnY5jkltIkp1wikXxneo3tRAIWpTVDrSFwhjZ6TLD/hL8By5i/xohgmpTFXl1rQZVJFoti1kd764vLDZyuuswXe33txS6+gV2eA6XR2DUnOpcoFcLF4kx10PubtSt32WAKDShhv6lu/f8ciYMNjk2ZBR1PZ+meeIqW9n10T5x21JRbDg3bUV1d9kd0wuliuBeEu6/2D9sB7c1JSQ3NtShacQHEHMr/2xBrE3beKd/MKNzWEjAkZsitiTuobWrFvb9gK6jxgfdX1CSXc6x8iZBeyMrrGYLj221SHY08CDMkoGvqbXfBM=");
  4971. } elseif(name == "oldman3") {
  4972. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTY4ODY2Njc5MDMyNiwKICAicHJvZmlsZUlkIiA6ICJmZjQ3NzI5YmQwZDI0YWYwOThiMTFjMGE3ZTFiMGVlZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJtYXRzY2FuIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzEyOTg5ZjMxOTQ3NmQ1NDk1MmUwOTQ5ZWEzMGIyZTQ3N2M5NDE4YjBiOGFiOTc0YmU2YzFmOWYwMGQ4NWMzMTYiCiAgICB9CiAgfQp9", "inFYrkbI1KbykFuDWprHxnDRpaLxOYuQLUC/w8mFMR8/joqRyBkqAOgnt4PlgG/KrBOYLwSgQ4VZbqkzGXTcuX+FkJAlXU0jNY6/GAyX686YhjP2OACXCE9AzUMhoWHHhNd5zlBNef3RGei9jIR7bZdJmGBfp6zNHT9ZGHGBBy3kFhmpg6wEJ3zSF2YnWAvAlZ+nxSbNMkn+Zb/hwIGV0pRjFKLX59ubS6wYZYeduxNLJjM9VcP3SZDu1YK4hsyo0crbFtX1GIIfUKgKvqGyJMsx2tmgbzPuSfcObaLBYWam3okcIkBsf9zqvhp/qY9jHB85+F1NZhx7axR53oEgOnv90n3hLOTKI01we1nSuFirg3LiOeH5rteEfCFuZVpb2/WrJ1JqF+0dwQU5H0qEuRbSgJlR2BYv7F/THs69MCB0wlfdIX5IddUhJj7n9dcHkp38YkfP595SGDhdcCMZvZL1OYOUMwJ1qhaXZLhNTSIZo1jnLtsqpUbk5ny78E/u5oyyRrvJAMf+6N8Gjx5S7JLpSgM2TX1rmiGe0GS9HoLF+Gd8sbe2A3gJJxPR1P2R9Q1HXG7opYEPPyUM2WCdzfg8kKpaPUfX5M3Kudm7rjPCG+2z3krbEbtbYLchFwpUn3wmZwybX9R/Xzv3HsI0mzOGk+WgxBRY804L1UGzVpo=");
  4973. } elseif(name == "miner2") {
  4974. 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=");
  4975. } elseif(name == "marvinius") {
  4976. 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=");
  4977. } elseif(name == "mareeeen") {
  4978. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODMyNzA0NSwKICAicHJvZmlsZUlkIiA6ICJlODhjMjBiOTUyMTA0NTA0OThkMDU4OTA5ODVhOTQ2OSIsCiAgInByb2ZpbGVOYW1lIiA6ICJTY2huZWxsZXJUYWc0MjciLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODVlMjdhM2NhM2E4YWY3ODMyYjkwZjhhMmE3MTRlN2ZiMDE2YmI3M2JlNWY3OGIwZjVhZDJhOTMwM2EwOTY3NSIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", "LUccDCWbqkNJ6s+4fSk39iBNaaN4M4w1jxRDioAOsGgYaWS+K9l55+SlWdDc7VzotE7m6hws/JM6h1uOt8LtIRcRHivH72GqRQXZmq2FbL7vv+E5O8W1tlJQlU24UwGLj29S5zEDEhBFXdXU5+5nK/83pVoYx01x3e8mA0sBikafpUYsvsR1jhb8Zw53LNYUvpyPMZTPKirQPvjlUOlAJhH7iVbhPMgWC/9QZWbRJ8T//MVJedvopPbg2v21SDwk6YvmZwo61RDTMkAwZsjkD5bBGOlvvbLcmk/oJPPLziHFoD2B09OZNWgWTZdbxnObD7iZMbhbkMWCE6HfyY34lwacrxtp1ssV2JWPcc2Mmp3iD3Mixlrp9fxWfNTbc0h25uIQWw9r2/3rsG845grQgh62Zem7pVWqi8S/Cfl7Y6a5wYfLiX2HrjHeoBQlZIZMAQPme5oT2zTTdxBTBwcyjn3vN76CVzYmhvWus81pM9X/1ZbgohkRy4Nge+u45EfZ5RvQXI7PSsaQiW4M19eULeDywPgSq0YTrRfjlvmZzv6hjH2rESjNSYvmUVkdTM1e+iu69fPqGXFShJXL9v7/KxzKwUpabO6rL+5oGzjCy/OVbZMVOIUgtPNTrmVbtsv+xg6QZeRXpSwa3OPfIEwUAKqhjh2EeOmworrANT5jWeQ=");
  4979. } elseif(name == "sirterence7") {
  4980. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODM1MzY2NiwKICAicHJvZmlsZUlkIiA6ICIxNDU1MDNhNDRjZmI0NzcwYmM3NWNjMTRjYjUwMDE4NyIsCiAgInByb2ZpbGVOYW1lIiA6ICJMaWtlbHlFcmljIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2VkMjI0OGZkNzA5MDU0ZmMwMTJhNzdlMDg2ZDcwZjEyMjA0MjU2ZDZhNDg0Y2E2MzIwZTMzZjkzOWRkNTNjMjciCiAgICB9CiAgfQp9", "Cgaoe8gmJqfeRFi/5yt9W6FlE3/tgcStT/yKVAQN6PABHfuIOS00AmVrTwn8VEO26bLhH5v4iqFDK0w3hDTLryA8wWY07n3ct++j+HZZk1f7oDlFFKIGtAYrAgzGIltrS1o3fMa+JQxwqQUfcbREaVdZLBMBfAjfCdnxk6Mf3XVXHaP+qDcMIfrZlrDzN8LPXcUgBuPLBYJ8/WLYn5g+Ua/iVupKYzdoS7r2Kwfg2EtoFGOoLEPLtZ3orrflXxCcAX0leA2oTQtg8UvxRBnoZUtSNxnFk77e2KpMPhC33tO1TFsUe9LNnCnQg+sZoE5VTqV4yEfEGXzh8SYcztO+SZHKeQSbm8oOfYWtyXnQiDVLIbyA4zaeu1aUlWEKEqRDieawJp3AxRTd25vskdqxO+1LG91cQGEYyvnJAmq8cUHetSE68TMgt1NWnn92cv8ZGP/9ux0JWgT9Yf8o0gblr3CRvV+QKRgFl7z8hvvY81T52zJpIgBQLCCSeNgvNDPmAtKwWTORWuxLc12eQO2tUf4AjdgFbBqUAhIKdGr+as92ai+NWyzyems2+4tohRXrRkTbytgYvsu23AIUBhvQdkh5CmASVgjXgzgzztitR2AHxQaq5sW23SSx1TKcDYjV68YU6lm+enlsrnnA1iOo3JxUdl6sciAEYEnIu3peukI=");
  4981. } elseif(name == "eropster") {
  4982. 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=");
  4983. } elseif(name == "mentormentos") {
  4984. 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=");
  4985. } elseif(name == "kajetanjohannes") {
  4986. citizen.setSkin(citizen, "ewogICJ0aW1lc3RhbXAiIDogMTcxMTc1ODQ5MjI4MSwKICAicHJvZmlsZUlkIiA6ICJkZTU3MWExMDJjYjg0ODgwOGZlN2M5ZjQ0OTZlY2RhZCIsCiAgInByb2ZpbGVOYW1lIiA6ICJNSEZfTWluZXNraW4iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzIwOTBmNTM1OGRlOGIyNTZiY2Y2YmU5MzA1Yzg2YjE0YjA4MTJmMmFhZjk4MzEyMjI5YzdiNmExYzVjZGQwNSIKICAgIH0KICB9Cn0=", "lT4YppbKGCzA9knunjsxeBvjGRGzFB5yYN9BgHmNI+QC/Ls17o/sJdAvbCR0fsUnOj07NQeyePsTKgPpL39DRx2AdBC20iGXSvAKvvzHPljiMpEPipL7oHjQmgpOLJF3B1zdAseR2/ifhiKGsVOcBxBDpyLcLozcvNb7y5f8gLZHTNugw3kzHiXbv3RHqtL7844dOx4ZcvAxINd9AOP4ePnBYTslrLumNrx3pDkLYxcltEepqqm4ATyJvJ47q+Bc6BiUwHWaNIsG7bLVo3jW8Gapk58u7YQx3aXl7HgW/9hzainVEzgNvZ4NwWPFl5p1QYb7m+WFBuuybBRAbxOcb7LBhkXpWw+ncm7pAQzDjrTeAS4q4/xJ7V2D2YQcG1AqcTvvm0DJI89z3LqVRDF9J2ntvIGD0DGojB2XFR5G6ojpSK9fx+Uee++9PkwTDUBWZva6XjLqNqZ2znhlbSURqim35Qd77UhVOiznb1TfrP58zIMIDFlaP52/ny/p2GLeNa+gSsXS9ZIM4AYe8f4oEPOfeBka3DFN9TQRvlNptBt8hXSqdx5HkblFzkzaWS3z52yN+/dYvFrbnm9cLcdjtqoTuE49FWtxlKj6HDJFv6e8qpEmSTfJuxnnZPk0Q/uCQNrLa4XKwCapYey9Oa+H2mtwEbKXQb9kTnoVLf4PQUA=");
  4987. }else {
  4988. msg.action(player, "Not supported name.");
  4989. }
  4990. goto("wait");
  4991. }
  4992. }
  4993. goto("humanhelp");
  4994. @answer
  4995. if(player.isMuted(player)) {
  4996. msg.prefix(player, prefix_commands, "You are muted.");
  4997. goto("wait");
  4998. }
  4999. if(size < 1) {
  5000. msg.prefix(sender, prefix_commands, "/answer <message>");
  5001. goto("wait");
  5002. }
  5003. player_uuid = player.getUuid(sender);
  5004. p_uuid = map.get(answer_map, player_uuid);
  5005. if(p_uuid == null) {
  5006. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  5007. goto("wait");
  5008. }
  5009. string_message = string.concatList(string_args, " ", 0, size - 1);
  5010. string_message = string.concat("§e", string_message);
  5011. message = getMessage(string_message);
  5012. p = player.get(p_uuid);
  5013. if(p == null) {
  5014. msg.prefix(sender, prefix_commands, "This player is not online.");
  5015. goto("wait");
  5016. }
  5017. msg(sender, text.merge(text.new(string.concat("§6[§cme §6-> §c", player.getName(p), "§6] §r")), message));
  5018. msg(p, text.merge(text.new(string.concat("§6[§c", player.getName(sender), " §6-> §cme§6] §r")), message));
  5019. map.add(answer_map, p_uuid, player_uuid);
  5020. map.add(answer_map, player_uuid, p_uuid);
  5021. goto("wait");
  5022. @msg
  5023. if(player.isMuted(sender)) {
  5024. msg.prefix(sender, "§6Commands", "You are muted.");
  5025. goto("wait");
  5026. }
  5027. if(size < 2) {
  5028. msg.prefix(sender, prefix_commands, "/msg <player> <message>");
  5029. if(perm.has("msg.team", player)) {
  5030. msg.prefix(sender, prefix_commands, "/msg team <message>");
  5031. }
  5032. goto("wait");
  5033. }
  5034. string_message = string.concatList(string_args, " ", 1, size - 1);
  5035. string_message = string.concat("§e", string_message);
  5036. message = getMessage(string_message);
  5037. p_name = list.getIndex(args, 0);
  5038. if(p_name == "team") {
  5039. msg.team(player, message);
  5040. goto("wait");
  5041. }
  5042. p_uuid = player.getUuid(p_name);
  5043. if(p_uuid == null) {
  5044. msg.prefix(sender, prefix_commands, "Unknown player.");
  5045. goto("wait");
  5046. }
  5047. p = read.player(p_name);
  5048. if(p == null) {
  5049. msg.prefix(sender, prefix_commands, "This player is not online. Send a /mail instead.");
  5050. goto("wait");
  5051. }
  5052. msg(p, text.merge(text.new(string.concat("§6[§c", player.getName(sender), " §6-> §cme§6] ")), message));
  5053. msg(sender, text.merge(text.new(string.concat("§6[§cme §6-> §c", player.getName(p), "§6] ")), message));
  5054. player_uuid = player.getUuid(sender);
  5055. map.add(answer_map, p_uuid, player_uuid);
  5056. map.add(answer_map, player_uuid, p_uuid);
  5057. goto("wait");
  5058. @list
  5059. list = players.toList();
  5060. size = list.getSize(list);
  5061. msg.string(sender, string.getSpacer());
  5062. if(size == 1) {
  5063. msg.string(sender, string.concat("§6There is ", string.number(size), " players online."));
  5064. } else {
  5065. msg.string(sender, string.concat("§6There are ", string.number(size), " players online."));
  5066. }
  5067. table = table.new("§f", 16, 16);
  5068. msg.string(sender, table.getStart(table));
  5069. for(i = 0; i < size; i++) {
  5070. p = list.getIndex(list, i++);
  5071. full_name = player.getFullName(p);
  5072. if(player.isAfk(p)) {
  5073. full_name = string.concat(full_name, " §5§o[Afk]");
  5074. }
  5075. if(i < size) {
  5076. p_2 = list.getIndex(list, i);
  5077. full_name_2 = player.getFullName(p_2);
  5078. if(player.isAfk(p_2)) {
  5079. full_name_2 = string.concat(full_name_2, " §5§o[Afk]");
  5080. }
  5081. } else {
  5082. full_name_2 = "";
  5083. }
  5084. msg.string(sender, table.get(table, full_name, full_name_2));
  5085. }
  5086. msg.string(sender, table.getEnd(table));
  5087. goto("wait");
  5088. @sign
  5089. if(size == 0) {
  5090. msg.prefix(player, prefix_commands, "/sign ...");
  5091. msg.string(player, "§6 - <FRONT/BACK> <row:1-4> [text] §rSet a sign line");
  5092. if(perm.has("sign.copy", player)) {
  5093. msg.string(player, "§6 - copy §rCopy a sign content");
  5094. msg.string(player, "§6 - paste §rPaste a sign content");
  5095. msg.string(player, "§6 - wax <true/false> §rWax a sign");
  5096. }
  5097. goto("wait");
  5098. }
  5099. block = player.getTargetBlock(player, 5);
  5100. if(block == null) {
  5101. msg.prefix(player, prefix_commands, "Look at a sign.");
  5102. goto("wait");
  5103. }
  5104. if(!block.hasTag(block, all_signs_tag)) {
  5105. msg.prefix(player, prefix_commands, "Look at a sign.");
  5106. goto("wait");
  5107. }
  5108. arg0 = string.toLowerCase(list.getIndex(args, 0));
  5109. if(arg0 == "copy") {
  5110. a = array.new(8);
  5111. a[0] = sign.getString(block, "FRONT", 0);
  5112. a[1] = sign.getString(block, "FRONT", 1);
  5113. a[2] = sign.getString(block, "FRONT", 2);
  5114. a[3] = sign.getString(block, "FRONT", 3);
  5115. a[4] = sign.getString(block, "BACK", 0);
  5116. a[5] = sign.getString(block, "BACK", 1);
  5117. a[6] = sign.getString(block, "BACK", 2);
  5118. a[7] = sign.getString(block, "BACK", 3);
  5119. map.add(sign_copy_map, player.getId(player), a);
  5120. msg.prefix(player, prefix_commands, "Sign copied.");
  5121. goto("wait");
  5122. }
  5123. if(arg0 == "paste") {
  5124. a = map.get(sign_copy_map, player.getId(player));
  5125. if(a == null) {
  5126. msg.prefix(player, prefix_commands, "Use '/sign copy' first.");
  5127. goto("wait");
  5128. }
  5129. sign.setString(block, "FRONT", 0, a[0]);
  5130. sign.setString(block, "FRONT", 1, a[1]);
  5131. sign.setString(block, "FRONT", 2, a[2]);
  5132. sign.setString(block, "FRONT", 3, a[3]);
  5133. sign.setString(block, "BACK", 0, a[4]);
  5134. sign.setString(block, "BACK", 1, a[5]);
  5135. sign.setString(block, "BACK", 2, a[6]);
  5136. sign.setString(block, "BACK", 3, a[7]);
  5137. msg.prefix(player, prefix_commands, "Sign pasted.");
  5138. goto("wait");
  5139. }
  5140. if(arg0 == "wax") {
  5141. if(size < 2) {
  5142. msg.prefix(player, prefix_datatools, "/sign wax <true/false>");
  5143. goto("wait");
  5144. }
  5145. bool = list.getIndex(args, 1);
  5146. if(bool != true && bool != false) {
  5147. msg.action(player, "True/False expected.");
  5148. goto("wait");
  5149. }
  5150. block.signSetWaxed(block, bool);
  5151. msg.prefix(player, prefix_commands, "Set sign wax.");
  5152. goto("wait");
  5153. }
  5154. if(size < 2) {
  5155. msg.prefix(player, prefix_datatools, "/sign <FRONT/BACK> <row:1-4> [text]");
  5156. goto("wait");
  5157. }
  5158. side = list.getIndex(args, 0);
  5159. if(side != "FRONT" && side != "BACK") {
  5160. msg.action(player, "FRONT/BACK expected.");
  5161. goto("wait");
  5162. }
  5163. line = list.getIndex(args, 1);
  5164. if(!isDouble(line)) {
  5165. msg.prefix(player, prefix_commands, "Number expected.");
  5166. goto("wait");
  5167. }
  5168. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  5169. msg.prefix(player, prefix_commands, "Number between 1 and 4 expected.");
  5170. goto("wait");
  5171. }
  5172. if(!player.hasBypass(player)) {
  5173. if(!plot.check(block.getLocation(block), player, 19, true)) {
  5174. msg.prefix(player, prefix_commands, "Not your plot.");
  5175. goto("wait");
  5176. }
  5177. }
  5178. string = "";
  5179. if(size > 2) {
  5180. for(i = 2; i < size; i++) {
  5181. arg = list.getIndex(string_args, i);
  5182. if(i == 2) {
  5183. string = arg;
  5184. } else {
  5185. string = string.concat(string, " ", arg);
  5186. }
  5187. }
  5188. }
  5189. string = string.replace(string, "&", "§");
  5190. block.setSign(block, side, line - 1, text.new(string));
  5191. block.signSetWaxed(block, true);
  5192. goto("wait");
  5193. @head
  5194. if(size != 1) {
  5195. msg.prefix(player, prefix_commands, "/head <player>");
  5196. goto("wait");
  5197. }
  5198. name = list.getIndex(args, 0);
  5199. uuid = player.getUuid(name);
  5200. if(uuid == null) {
  5201. head = read.item(string.concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}"));
  5202. } else {
  5203. head = player.getHead(uuid, name);
  5204. }
  5205. player.giveItem(player, head);
  5206. goto("wait");
  5207. @mute
  5208. if(size < 1) {
  5209. msg.prefix(sender, prefix_commands, "/mute <player> [message]");
  5210. goto("wait");
  5211. }
  5212. p_name = list.getIndex(args, 0);
  5213. if(!isOnline(p_name)) {
  5214. msg.prefix(sender, prefix_commands, "This player is not online.");
  5215. goto("wait");
  5216. }
  5217. p = read.player(p_name);
  5218. p_name = player.getName(p);
  5219. if(p_name == "marvinius") {
  5220. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5221. goto("wait");
  5222. }
  5223. sender_name = player.getName(sender);
  5224. player.mute(p, true);
  5225. if(size > 1) {
  5226. reason = string.concatList(args, " ", 1, size - 1);
  5227. msg.team(sender_name, string.concat("§cMuted ", p_name, ": ", reason));
  5228. } else {
  5229. msg.team(sender_name, string.concat("§cMuted ", p_name, "."));
  5230. }
  5231. goto("wait");
  5232. @unmute
  5233. if(size < 1) {
  5234. msg.prefix(sender, prefix_commands, "/unmute <player>");
  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. msg.team(player.getName(sender), string.concat("§cUnmuted ", p_name, "."));
  5249. player.mute(p, false);
  5250. goto("wait");
  5251. @kick
  5252. if(size < 1) {
  5253. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  5254. goto("wait");
  5255. }
  5256. p_name = list.getIndex(args, 0);
  5257. if(!isOnline(p_name)) {
  5258. msg.prefix(sender, prefix_commands, "This player is not online.");
  5259. goto("wait");
  5260. }
  5261. p = read.player(p_name);
  5262. p_name = player.getName(p);
  5263. if(p_name == "marvinius") {
  5264. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5265. goto("wait");
  5266. }
  5267. sender_name = player.getName(sender);
  5268. if(size > 1) {
  5269. reason = string.concatList(args, " ", 1, size - 1);
  5270. msg.team(sender_name, string.concat("§c", p_name, " got kicked: ", reason));
  5271. } else {
  5272. reason = "You got kicked";
  5273. msg.team(sender_name, string.concat("§c", p_name, " got kicked."));
  5274. }
  5275. ban.kick(p, text.new(reason));
  5276. goto("wait");
  5277. @warn
  5278. if(size != 1) {
  5279. msg.prefix(sender, prefix_commands, "/warn <player>");
  5280. goto("wait");
  5281. }
  5282. p_name = list.getIndex(args, 0);
  5283. if(!isOnline(p_name)) {
  5284. msg.prefix(sender, prefix_commands, "This player is not online.");
  5285. goto("wait");
  5286. }
  5287. p = read.player(p_name);
  5288. p_name = player.getName(p);
  5289. if(p_name == "marvinius") {
  5290. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5291. goto("wait");
  5292. }
  5293. title.send(p, text.new(string.concat("§c", player.getName(sender))), text.new("is watching you"));
  5294. msg.prefix(sender, prefix_commands, "The player got warned.");
  5295. goto("wait");
  5296. @ban
  5297. if(size < 1) {
  5298. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  5299. goto("wait");
  5300. }
  5301. p_name = list.getIndex(args, 0);
  5302. if(!checkIfEverOnline(p_name)) {
  5303. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5304. goto("wait");
  5305. }
  5306. p_name = player.getName(player.getUuid(p_name));
  5307. if(p_name == "marvinius") {
  5308. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5309. goto("wait");
  5310. }
  5311. sender_name = player.getName(sender);
  5312. if(size > 1) {
  5313. reason = string.concatList(args, " ", 1, size - 1);
  5314. msg.team(sender_name, string.concat("§c", p_name, " got banned: ", reason));
  5315. } else {
  5316. reason = "You got banned.";
  5317. msg.team(sender_name, string.concat("§c", p_name, " got banned."));
  5318. }
  5319. ban.add(p_name, reason, sender_name);
  5320. if(isOnline(p_name)) {
  5321. p = read.player(p_name);
  5322. ban.kick(p, text.new(reason));
  5323. }
  5324. goto("wait");
  5325. @unban
  5326. if(size != 1) {
  5327. msg.prefix(sender, prefix_commands, "/unban <player>");
  5328. goto("wait");
  5329. }
  5330. p_name = list.getIndex(args, 0);
  5331. if(!checkIfEverOnline(p_name)) {
  5332. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5333. goto("wait");
  5334. }
  5335. p_uuid = player.getUuid(p_name);
  5336. p_name = player.getName(p_uuid);
  5337. ban.remove(p_uuid);
  5338. msg.team(player.getName(sender), string.concat("§cUnbanned ", p_name, "."));
  5339. goto("wait");
  5340. @tempban
  5341. if(size < 4) {
  5342. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  5343. goto("wait");
  5344. }
  5345. p_name = list.getIndex(args, 0);
  5346. if(!checkIfEverOnline(p_name)) {
  5347. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5348. goto("wait");
  5349. }
  5350. p_name = player.getName(player.getUuid(p_name));
  5351. if(p_name == "marvinius") {
  5352. msg.string(sender, "§cSorry §b¯\\_(._.)_/¯");
  5353. goto("wait");
  5354. }
  5355. days = list.getIndex(args, 1);
  5356. hours = list.getIndex(args, 2);
  5357. minutes = list.getIndex(args, 3);
  5358. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  5359. msg.prefix(sender, prefix_commands, "Number expected.");
  5360. goto("wait");
  5361. }
  5362. if(days < 0 || hours < 0 || minutes < 0) {
  5363. msg.prefix(sender, prefix_commands, "Positive number expected.");
  5364. goto("wait");
  5365. }
  5366. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  5367. timestring = time.getString(endtime);
  5368. sender_name = player.getName(sender);
  5369. if(size > 4) {
  5370. reason = string.concatList(args, " ", 4, size - 1);
  5371. msg.team(sender_name, string.concat("§c", p_name, " got banned until ", timestring, ". Reason: ", reason));
  5372. } else {
  5373. reason = "You got banned.";
  5374. msg.team(sender_name, string.concat("§c", p_name, " got banned until ", timestring, "."));
  5375. }
  5376. calendar = time.new(endtime);
  5377. ban.add(p_name, reason, sender_name, calendar);
  5378. if(isOnline(p_name)) {
  5379. p = read.player(p_name);
  5380. ban.kick(p, text.new(reason));
  5381. }
  5382. goto("wait");
  5383. @ping
  5384. msg.string(player, "pong");
  5385. goto("wait");
  5386. @plot
  5387. if(size == 0) {
  5388. @plothelp
  5389. msg.prefix(player, prefix_plot, "/plot ...");
  5390. msg.string(player, "§d - info §rReturns info about current location");
  5391. if(!perm.has("plot.moreinfo", player)) {
  5392. msg.string(player, "§d - list §rLists your plots");
  5393. }
  5394. msg.string(player, "");
  5395. msg.string(player, "§d - pos1/pos2 §rSet corner points");
  5396. msg.string(player, "§d - create §rCreates a (sub-)plot (Y: -64 to 319)");
  5397. msg.string(player, "§d - create3D §rCreates a 3D (sub-)plot");
  5398. msg.string(player, "");
  5399. msg.string(player, "§d - remove [id] §rRemoves a plot");
  5400. msg.string(player, "§d - expand <value> [direction] [id] §rExpands a plot");
  5401. msg.string(player, "§d - name [id] <name> §rRenames a plot");
  5402. msg.string(player, "");
  5403. msg.string(player, "§d - share <player> [id] §rAdd a player to a plot");
  5404. msg.string(player, "§d - kick <player> [id] §rRemove a player from a plot");
  5405. msg.string(player, "§d - leader <player> [id] §rSet a new plot leader");
  5406. msg.string(player, "§d - mod <player> [id] §rPromote to plot mod");
  5407. msg.string(player, "§d - chest <player> [id] §rAllows a player to open chests");
  5408. msg.string(player, "");
  5409. msg.string(player, "§d - raise §rRaises a plot to a city. Costs §610 gold snuvis§r.");
  5410. msg.string(player, "§d - sell <price> §rSells a sub-plot");
  5411. msg.string(player, "");
  5412. if(perm.has("plot.moreinfo", player)) {
  5413. msg.string(player, "§d - list [player] §rLists all plots from a player");
  5414. msg.string(player, "§d - moreinfo [id] §rReturns more detailed infos");
  5415. msg.string(player, "§d - listall §rLists all plots");
  5416. msg.string(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  5417. msg.string(player, "§d - move <value> [direction] [id] §rMoves a block");
  5418. }
  5419. goto("wait");
  5420. }
  5421. arg0 = string.toLowerCase(list.getIndex(args, 0));
  5422. if(arg0 == "sell") {
  5423. if(size != 2) {
  5424. msg.prefix(player, prefix_commands, "/plot sell <price>");
  5425. goto("wait");
  5426. }
  5427. block = player.getTargetBlock(player, 5);
  5428. if(block == null) {
  5429. msg.prefix(player, prefix_commands, "Look at a sign.");
  5430. goto("wait");
  5431. }
  5432. if(!block.hasTag(block, sign_tag)) {
  5433. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  5434. goto("wait");
  5435. }
  5436. if(sign.getString(block, "FRONT", 0) != "" || sign.getString(block, 1) != "" || sign.getString(block, 2) != "" || sign.getString(block, 3) != "") {
  5437. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  5438. goto("wait");
  5439. }
  5440. sign_loc = block.getLocation(block);
  5441. plot_list = plot.get(sign_loc);
  5442. amount = list.getSize(plot_list);
  5443. if(amount == 0 || amount == 1) {
  5444. msg.prefix(player, prefix_plot, "You aren´t on a sub plot.");
  5445. goto("wait");
  5446. }
  5447. if(amount > 2) {
  5448. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  5449. goto("wait");
  5450. }
  5451. plot_1 = list.getIndex(plot_list, 0);
  5452. plot_2 = list.getIndex(plot_list, 1);
  5453. if(plot.isCity(plot_1)) {
  5454. city_plot = plot_1;
  5455. sell_plot = plot_2;
  5456. } elseif(plot.isCity(plot_2)) {
  5457. sell_plot = plot_1;
  5458. city_plot = plot_2;
  5459. } else {
  5460. msg.prefix(player, prefix_plot, "No city found.");
  5461. goto("wait");
  5462. }
  5463. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  5464. msg.prefix(player, prefix_plot, "You aren´t a city plot leader or mod.");
  5465. goto("wait");
  5466. }
  5467. snuvis = list.getIndex(args, 1);
  5468. if(!isDouble(snuvis) || snuvis < 0) {
  5469. msg.prefix(player, prefix_plot, "Positive number expected.");
  5470. goto("wait");
  5471. }
  5472. //Sell Plot
  5473. x1 = plot.getMinX(sell_plot);
  5474. y1 = plot.getMinY(sell_plot);
  5475. z1 = plot.getMinZ(sell_plot);
  5476. x2 = plot.getMaxX(sell_plot);
  5477. y2 = plot.getMaxY(sell_plot);
  5478. z2 = plot.getMaxZ(sell_plot);
  5479. length = math.abs(x1 - x2) + 1;
  5480. width = math.abs(z1 - z2) + 1;
  5481. high = math.abs(y1 - y2) + 1;
  5482. //Change plot settings
  5483. plot.setFree(sell_plot, true);
  5484. plot.setName(sell_plot, "Free Plot");
  5485. plot.removePlayer(sell_plot, player.getName(player));
  5486. //Label Sign
  5487. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  5488. block.setSign(sign_loc, 1, string.concat("§2", string.number(snuvis)));
  5489. if(high == 319) {
  5490. block.setSign(sign_loc, 2, string.concat(string.number(length), "x", string.number(width)));
  5491. } else {
  5492. block.setSign(sign_loc, 2, string.concat(string.number(length), "x", string.number(width), " (Y:", string.number(high), ")"));
  5493. }
  5494. block.setSign(sign_loc, 3, string.number(player.getId(player)));
  5495. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  5496. world = loc.getWorld(sign_loc);
  5497. plot.savePlots(world);
  5498. goto("wait");
  5499. }
  5500. if(arg0 == "raise") {
  5501. location = entity.getLocation(player);
  5502. plot_list = plot.get(location);
  5503. amount = list.getSize(plot_list);
  5504. if(amount == 0) {
  5505. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5506. goto("wait");
  5507. }
  5508. plot = list.getIndex(plot_list, 0);
  5509. if(plot.isCity(plot)) {
  5510. msg.prefix(player, prefix_plot, "This plot is already a city.");
  5511. goto("wait");
  5512. }
  5513. if(!plot.isLeader(plot, player)) {
  5514. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  5515. goto("wait");
  5516. }
  5517. if(amount > 1) {
  5518. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  5519. goto("wait");
  5520. }
  5521. x1 = plot.getMinX(plot);
  5522. z1 = plot.getMinZ(plot);
  5523. x2 = plot.getMaxX(plot);
  5524. z2 = plot.getMaxZ(plot);
  5525. length = math.abs(x1 - x2) + 1;
  5526. width = math.abs(z1 - z2) + 1;
  5527. plot_size = length * width;
  5528. if(plot_size < 2500) {
  5529. msg.prefix(player, prefix_plot, "Your plot must be over 2500m2.");
  5530. goto("wait");
  5531. }
  5532. snuvis = 40960;
  5533. if(!hasEnoughMoney(player, snuvis)) {
  5534. msg.prefix(player, prefix_plot, string.concat("You´ll need §6", string.number(snuvis), "§r snuvis for this."));
  5535. goto("wait");
  5536. }
  5537. offerRank(player, "rank.major");
  5538. player.setPlotRaised(player, true);
  5539. money.sub(player, snuvis);
  5540. plot.setCity(plot, true);
  5541. msg.prefix(player, prefix_plot, string.concat("City created. Spent §6", string.number(snuvis), "§r snuvis."));
  5542. world = loc.getWorld(location);
  5543. plot.savePlots(world);
  5544. goto("wait");
  5545. }
  5546. if(arg0 == "leader") {
  5547. if(size < 2) {
  5548. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  5549. goto("wait");
  5550. }
  5551. p_name = list.getIndex(args, 1);
  5552. p_uuid = player.getUuid(p_name);
  5553. if(p_uuid == null) {
  5554. msg.prefix(player, prefix_plot, "This player has never been online.");
  5555. goto("wait");
  5556. }
  5557. p_name = player.getName(p_uuid);
  5558. location = entity.getLocation(player);
  5559. world = loc.getWorld(location);
  5560. if(size == 2) {
  5561. plot_list = plot.get(location);
  5562. amount = list.getSize(plot_list);
  5563. if(amount == 0) {
  5564. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5565. goto("wait");
  5566. }
  5567. plot = list.getIndex(plot_list, 0);
  5568. if(amount > 1) {
  5569. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5570. for(i = 0; i < amount; i++) {
  5571. plot = list.getIndex(plot_list, i);
  5572. plot_id = plot.getId(plot);
  5573. 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)))));
  5574. }
  5575. goto("wait");
  5576. }
  5577. } else {
  5578. if(size != 3) {
  5579. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  5580. goto("wait");
  5581. }
  5582. plot_id = list.getIndex(args, 2);
  5583. plot = plot.getFromId(plot_id, world);
  5584. if(plot == null) {
  5585. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5586. goto("wait");
  5587. }
  5588. }
  5589. player_id = player.getId(player);
  5590. if(!perm.has("plot.other", player)) {
  5591. if(!world.canUsePlots(world)) {
  5592. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5593. goto("wait");
  5594. }
  5595. if(!plot.isLeader(plot, player_id)) {
  5596. msg.prefix(player, prefix_plot, "You aren´t the plot leader.");
  5597. goto("wait");
  5598. }
  5599. player_name = player.getName(player);
  5600. if(player_name == p_name) {
  5601. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  5602. goto("wait");
  5603. }
  5604. }
  5605. p_id = player.getId(p_uuid);
  5606. if(plot.isLeader(plot, p_id)) {
  5607. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  5608. goto("wait");
  5609. }
  5610. old_leader = plot.getLeaderId(plot);
  5611. if(old_leader != null) {
  5612. plot.setMod(plot, old_leader);
  5613. }
  5614. plot.setLeader(plot, p_id);
  5615. plot.addPlayer(plot, p_name);
  5616. msg.prefix(player, prefix_plot, string.concat(p_name, " promoted to plot leader."));
  5617. plot.savePlots(world);
  5618. goto("wait");
  5619. }
  5620. if(arg0 == "mod") {
  5621. if(size < 2) {
  5622. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  5623. goto("wait");
  5624. }
  5625. p_name = list.getIndex(args, 1);
  5626. p_uuid = player.getUuid(p_name);
  5627. if(p_uuid == null) {
  5628. msg.prefix(player, prefix_plot, "This player has never been online.");
  5629. goto("wait");
  5630. }
  5631. p_name = player.getName(p_uuid);
  5632. location = entity.getLocation(player);
  5633. world = loc.getWorld(location);
  5634. if(size == 2) {
  5635. plot_list = plot.get(location);
  5636. amount = list.getSize(plot_list);
  5637. if(amount == 0) {
  5638. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5639. goto("wait");
  5640. }
  5641. plot = list.getIndex(plot_list, 0);
  5642. if(amount > 1) {
  5643. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5644. for(i = 0; i < amount; i++) {
  5645. plot = list.getIndex(plot_list, i);
  5646. plot_id = plot.getId(plot);
  5647. 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)))));
  5648. }
  5649. goto("wait");
  5650. }
  5651. } else {
  5652. if(size != 3) {
  5653. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  5654. goto("wait");
  5655. }
  5656. plot_id = list.getIndex(args, 2);
  5657. plot = plot.getFromId(plot_id, world);
  5658. if(plot == null) {
  5659. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5660. goto("wait");
  5661. }
  5662. }
  5663. player_id = player.getId(player);
  5664. if(!perm.has("plot.other", player)) {
  5665. if(!world.canUsePlots(world)) {
  5666. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5667. goto("wait");
  5668. }
  5669. if(!plot.isLeader(plot, player_id)) {
  5670. msg.prefix(player, prefix_plot, "You aren´t the plot leader.");
  5671. goto("wait");
  5672. }
  5673. }
  5674. p_id = player.getId(p_uuid);
  5675. if(plot.isLeader(plot, p_id)) {
  5676. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  5677. goto("wait");
  5678. }
  5679. if(plot.isMod(plot, p_id)) {
  5680. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  5681. goto("wait");
  5682. }
  5683. plot.setMod(plot, p_id);
  5684. plot.addPlayer(plot, p_name);
  5685. msg.prefix(player, prefix_plot, string.concat(p_name, " promoted to plot mod."));
  5686. plot.savePlots(world);
  5687. goto("wait");
  5688. }
  5689. if(arg0 == "chest") {
  5690. if(size < 2) {
  5691. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5692. goto("wait");
  5693. }
  5694. p_name = list.getIndex(args, 1);
  5695. p_uuid = player.getUuid(p_name);
  5696. if(p_uuid == null) {
  5697. msg.prefix(player, prefix_plot, "This player has never been online.");
  5698. goto("wait");
  5699. }
  5700. p_name = player.getName(p_uuid);
  5701. location = entity.getLocation(player);
  5702. world = loc.getWorld(location);
  5703. if(size == 2) {
  5704. plot_list = plot.get(location);
  5705. amount = list.getSize(plot_list);
  5706. if(amount == 0) {
  5707. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5708. goto("wait");
  5709. }
  5710. plot = list.getIndex(plot_list, 0);
  5711. if(amount > 1) {
  5712. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5713. for(i = 0; i < amount; i++) {
  5714. plot = list.getIndex(plot_list, i);
  5715. plot_id = plot.getId(plot);
  5716. 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)))));
  5717. }
  5718. goto("wait");
  5719. }
  5720. } else {
  5721. if(size != 3) {
  5722. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5723. goto("wait");
  5724. }
  5725. plot_id = list.getIndex(args, 2);
  5726. plot = plot.getFromId(plot_id, world);
  5727. if(plot == null) {
  5728. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5729. goto("wait");
  5730. }
  5731. }
  5732. player_id = player.getId(player);
  5733. if(!perm.has("plot.other", player)) {
  5734. if(!world.canUsePlots(world)) {
  5735. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5736. goto("wait");
  5737. }
  5738. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5739. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  5740. goto("wait");
  5741. }
  5742. }
  5743. p_id = player.getId(p_uuid);
  5744. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  5745. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  5746. goto("wait");
  5747. }
  5748. if(plot.canOpenChests(plot, p_id)) {
  5749. msg.prefix(player, prefix_plot, "This player already can open chests.");
  5750. goto("wait");
  5751. }
  5752. plot.setChest(plot, p_id);
  5753. msg.prefix(player, prefix_plot, string.concat(p_name, " can now open chests."));
  5754. goto("wait");
  5755. }
  5756. if(arg0 == "remove") {
  5757. location = entity.getLocation(player);
  5758. world = loc.getWorld(location);
  5759. if(size == 1) {
  5760. plot_list = plot.get(location);
  5761. amount = list.getSize(plot_list);
  5762. if(amount == 0) {
  5763. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5764. goto("wait");
  5765. }
  5766. plot = list.getIndex(plot_list, 0);
  5767. if(amount > 1) {
  5768. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5769. for(i = 0; i < amount; i++) {
  5770. plot = list.getIndex(plot_list, i);
  5771. plot_id = plot.getId(plot);
  5772. 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)))));
  5773. }
  5774. goto("wait");
  5775. }
  5776. } else {
  5777. if(size != 2) {
  5778. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  5779. goto("wait");
  5780. }
  5781. plot_id = list.getIndex(args, 1);
  5782. plot = plot.getFromId(plot_id, world);
  5783. if(plot == null) {
  5784. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5785. goto("wait");
  5786. }
  5787. }
  5788. if(!perm.has("plot.other", player)) {
  5789. if(!world.canUsePlots(world)) {
  5790. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5791. goto("wait");
  5792. }
  5793. player_id = player.getId(player);
  5794. if(!plot.isLeader(plot, player_id)) {
  5795. msg.prefix(player, prefix_plot, "You aren´t the plot leader.");
  5796. goto("wait");
  5797. }
  5798. }
  5799. if(plot.isCity(plot)) {
  5800. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  5801. iter = iterator(plot_list);
  5802. while(hasNext(iter)) {
  5803. sub_plot = next(iter);
  5804. plot.removeAllPlayers(sub_plot);
  5805. plot.remove(sub_plot, world);
  5806. }
  5807. }
  5808. //10% money back
  5809. x1 = plot.getMinX(plot);
  5810. z1 = plot.getMinZ(plot);
  5811. x2 = plot.getMaxX(plot);
  5812. z2 = plot.getMaxZ(plot);
  5813. length = x2 - x1 + 1;
  5814. width = z2 - z1 + 1;
  5815. snuvis = math.round(plot.calcCost(world, length, width) / 10);
  5816. leader_id = plot.getLeaderId(plot);
  5817. if(leader_id != null) {
  5818. money.add(leader_id, snuvis);
  5819. msg.prefix(player, prefix_plot, string.concat("Returned 10% of plot costs: ", money.getString(snuvis)));
  5820. }
  5821. //remove plot
  5822. plot.removeAllPlayers(plot);
  5823. plot.delMoveEvent(plot);
  5824. plot.remove(plot, world);
  5825. msg.prefix(player, prefix_plot, string.concat("Plot removed. #", string.number(plot.getId(plot)), " §6", plot.getName(plot)));
  5826. plot.savePlots(world);
  5827. goto("wait");
  5828. }
  5829. if(arg0 == "expand") {
  5830. if(size < 2) {
  5831. msg.prefix(player, prefix_commands, "/plot expand <value> [direction] [plot_id]");
  5832. goto("wait");
  5833. }
  5834. location = entity.getLocation(player);
  5835. world = loc.getWorld(location);
  5836. anzahl = list.getIndex(args, 1);
  5837. if(!isDouble(anzahl) || anzahl < 0) {
  5838. msg.prefix(player, prefix_plot, "Positive number expected.");
  5839. goto("wait");
  5840. }
  5841. if(size == 2) {
  5842. yaw = loc.getYaw(location);
  5843. direction = getDirection(yaw);
  5844. if(direction == null) {
  5845. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  5846. goto("wait");
  5847. }
  5848. plot_list = plot.get(location);
  5849. amount = list.getSize(plot_list);
  5850. if(amount == 0) {
  5851. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5852. goto("wait");
  5853. }
  5854. plot = list.getIndex(plot_list, 0);
  5855. if(amount > 1) {
  5856. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5857. for(i = 0; i < amount; i++) {
  5858. plot = list.getIndex(plot_list, i);
  5859. plot_id = plot.getId(plot);
  5860. 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)))));
  5861. }
  5862. goto("wait");
  5863. }
  5864. } else {
  5865. if(size != 4) {
  5866. msg.prefix(player, prefix_commands, "/plot expand <value> [<direction> <plot_id>]");
  5867. goto("wait");
  5868. }
  5869. direction = string.toLowerCase(list.getIndex(args, 2));
  5870. plot_id = list.getIndex(args, 3);
  5871. plot = plot.getFromId(plot_id, world);
  5872. if(plot == null) {
  5873. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5874. goto("wait");
  5875. }
  5876. }
  5877. if(plot.isSub(plot)) {
  5878. msg.prefix(player, prefix_plot, "Sub plots can´t be expanded.");
  5879. goto("wait");
  5880. }
  5881. x1 = plot.getMinX(plot);
  5882. y1 = plot.getMinY(plot);
  5883. z1 = plot.getMinZ(plot);
  5884. x2 = plot.getMaxX(plot);
  5885. y2 = plot.getMaxY(plot);
  5886. z2 = plot.getMaxZ(plot);
  5887. old_length = math.abs(x1 - x2) + 1;
  5888. old_width = math.abs(z1 - z2) + 1;
  5889. if(direction == "east") {
  5890. old_x2 = x2;
  5891. x2 += anzahl;
  5892. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  5893. } elseif(direction == "south") {
  5894. old_z2 = z2;
  5895. z2 += anzahl;
  5896. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  5897. } elseif(direction == "west") {
  5898. old_x1 = x1;
  5899. x1 -= anzahl;
  5900. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  5901. } elseif(direction == "north") {
  5902. old_z1 = z1;
  5903. z1 -= anzahl;
  5904. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  5905. } else {
  5906. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  5907. goto("wait");
  5908. }
  5909. if(!perm.has("plot.other", player)) {
  5910. if(list.getSize(list) > 0) {
  5911. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  5912. goto("wait");
  5913. }
  5914. if(!world.canUsePlots(world)) {
  5915. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5916. goto("wait");
  5917. }
  5918. player_id = player.getId(player);
  5919. if(!plot.isLeader(plot, player_id)) {
  5920. msg.prefix(player, prefix_plot, "You aren´t the plot leader.");
  5921. goto("wait");
  5922. }
  5923. //Calc costs
  5924. length = math.abs(x1 - x2) + 1;
  5925. width = math.abs(z1 - z2) + 1;
  5926. snuvis = plot.calcCost(world, length, width) - plot.calcCost(world, old_length, old_width);
  5927. if(!hasEnoughMoney(player, snuvis)) {
  5928. msg.prefix(player, prefix_plot, string.concat("You´ll need §6", string.number(snuvis), "§r snuvis for this."));
  5929. goto("wait");
  5930. }
  5931. money.sub(player, snuvis);
  5932. expand_message = string.concat("The plot has been expanded. Spent §6", string.number(snuvis), "§r snuvis.");
  5933. if(!player.hasBigPlotCreated(player)) {
  5934. plot_size = length * width;
  5935. if(plot_size >= 900) {
  5936. offerRank(player, "rank.colonizer");
  5937. player.setBigPlotCreated(player, true);
  5938. }
  5939. }
  5940. } else {
  5941. expand_message = string.concat("The plot has been expanded.");
  5942. }
  5943. //Expand plot
  5944. gs_edge1 = loc.new(world, x1, y1, z1);
  5945. gs_edge2 = loc.new(world, x2, y2, z2);
  5946. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  5947. plot.delMoveEvent(plot);
  5948. plot.setMoveEvent(new_plot, world);
  5949. msg.prefix(player, prefix_plot, expand_message);
  5950. plot.savePlots(world);
  5951. goto("wait");
  5952. }
  5953. if(arg0 == "move") {
  5954. if(!perm.has("plot.move", player)) {
  5955. perm.no("plot.move", player);
  5956. goto("wait");
  5957. }
  5958. if(size < 2) {
  5959. msg.prefix(player, prefix_commands, "/plot move <value> [direction] [plot_id]");
  5960. goto("wait");
  5961. }
  5962. location = entity.getLocation(player);
  5963. world = loc.getWorld(location);
  5964. anzahl = list.getIndex(args, 1);
  5965. if(!isDouble(anzahl) || anzahl < 0) {
  5966. msg.prefix(player, prefix_plot, "Positive number expected.");
  5967. goto("wait");
  5968. }
  5969. if(size == 2) {
  5970. yaw = loc.getYaw(location);
  5971. direction = getDirection(yaw);
  5972. if(direction == null) {
  5973. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  5974. goto("wait");
  5975. }
  5976. plot_list = plot.get(location);
  5977. amount = list.getSize(plot_list);
  5978. if(amount == 0) {
  5979. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  5980. goto("wait");
  5981. }
  5982. plot = list.getIndex(plot_list, 0);
  5983. if(amount > 1) {
  5984. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5985. for(i = 0; i < amount; i++) {
  5986. plot = list.getIndex(plot_list, i);
  5987. plot_id = plot.getId(plot);
  5988. 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)))));
  5989. }
  5990. goto("wait");
  5991. }
  5992. } else {
  5993. if(size != 4) {
  5994. msg.prefix(player, prefix_commands, "/plot move <value> [<direction> <plot_id>]");
  5995. goto("wait");
  5996. }
  5997. direction = string.toLowerCase(list.getIndex(args, 2));
  5998. plot_id = list.getIndex(args, 3);
  5999. plot = plot.getFromId(plot_id, world);
  6000. if(plot == null) {
  6001. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6002. goto("wait");
  6003. }
  6004. }
  6005. if(plot.isSub(plot)) {
  6006. msg.prefix(player, prefix_plot, "Sub plots can´t be moved.");
  6007. goto("wait");
  6008. }
  6009. x1 = plot.getMinX(plot);
  6010. y1 = plot.getMinY(plot);
  6011. z1 = plot.getMinZ(plot);
  6012. x2 = plot.getMaxX(plot);
  6013. y2 = plot.getMaxY(plot);
  6014. z2 = plot.getMaxZ(plot);
  6015. old_length = math.abs(x1 - x2) + 1;
  6016. old_width = math.abs(z1 - z2) + 1;
  6017. if(direction == "east") {
  6018. x1 += anzahl;
  6019. x2 += anzahl;
  6020. } elseif(direction == "south") {
  6021. z1 += anzahl;
  6022. z2 += anzahl;
  6023. } elseif(direction == "west") {
  6024. x1 -= anzahl;
  6025. x2 -= anzahl;
  6026. } elseif(direction == "north") {
  6027. z1 -= anzahl;
  6028. z2 -= anzahl;
  6029. } else {
  6030. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  6031. goto("wait");
  6032. }
  6033. //Move plot
  6034. gs_edge1 = loc.new(world, x1, y1, z1);
  6035. gs_edge2 = loc.new(world, x2, y2, z2);
  6036. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  6037. plot.delMoveEvent(plot);
  6038. plot.setMoveEvent(new_plot, world);
  6039. msg.prefix(player, prefix_plot, "The plot has been moved.");
  6040. plot.savePlots(world);
  6041. goto("wait");
  6042. }
  6043. if(arg0 == "share") {
  6044. if(size < 2) {
  6045. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  6046. goto("wait");
  6047. }
  6048. p_name = list.getIndex(args, 1);
  6049. p_uuid = player.getUuid(p_name);
  6050. if(p_uuid == null) {
  6051. msg.prefix(player, prefix_plot, "This player has never been online.");
  6052. goto("wait");
  6053. }
  6054. p_name = player.getName(p_uuid);
  6055. location = entity.getLocation(player);
  6056. world = loc.getWorld(location);
  6057. if(size == 2) {
  6058. plot_list = plot.get(location);
  6059. amount = list.getSize(plot_list);
  6060. if(amount == 0) {
  6061. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6062. goto("wait");
  6063. }
  6064. plot = list.getIndex(plot_list, 0);
  6065. if(amount > 1) {
  6066. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6067. for(i = 0; i < amount; i++) {
  6068. plot = list.getIndex(plot_list, i);
  6069. plot_id = plot.getId(plot);
  6070. 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)))));
  6071. }
  6072. goto("wait");
  6073. }
  6074. } else {
  6075. if(size != 3) {
  6076. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  6077. goto("wait");
  6078. }
  6079. plot_id = list.getIndex(args, 2);
  6080. plot = plot.getFromId(plot_id, world);
  6081. if(plot == null) {
  6082. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6083. goto("wait");
  6084. }
  6085. }
  6086. if(!perm.has("plot.other", player)) {
  6087. if(!world.canUsePlots(world)) {
  6088. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  6089. goto("wait");
  6090. }
  6091. player_id = player.getId(player);
  6092. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  6093. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  6094. goto("wait");
  6095. }
  6096. }
  6097. plot.addPlayer(plot, p_name);
  6098. msg.prefix(player, prefix_plot, string.concat(p_name, " added to the plot."));
  6099. plot.savePlots(world);
  6100. goto("wait");
  6101. }
  6102. if(arg0 == "kick") {
  6103. if(size < 2) {
  6104. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  6105. goto("wait");
  6106. }
  6107. p_name = list.getIndex(args, 1);
  6108. p_uuid = player.getUuid(p_name);
  6109. if(p_uuid == null) {
  6110. msg.prefix(player, prefix_plot, "This player has never been online.");
  6111. goto("wait");
  6112. }
  6113. p_name = player.getName(p_uuid);
  6114. location = entity.getLocation(player);
  6115. world = loc.getWorld(location);
  6116. if(size == 2) {
  6117. plot_list = plot.get(location);
  6118. amount = list.getSize(plot_list);
  6119. if(amount == 0) {
  6120. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6121. goto("wait");
  6122. }
  6123. plot = list.getIndex(plot_list, 0);
  6124. if(amount > 1) {
  6125. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6126. for(i = 0; i < amount; i++) {
  6127. plot = list.getIndex(plot_list, i);
  6128. plot_id = plot.getId(plot);
  6129. 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)))));
  6130. }
  6131. goto("wait");
  6132. }
  6133. } else {
  6134. if(size != 3) {
  6135. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  6136. goto("wait");
  6137. }
  6138. plot_id = list.getIndex(args, 2);
  6139. plot = plot.getFromId(plot_id, world);
  6140. if(plot == null) {
  6141. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6142. goto("wait");
  6143. }
  6144. }
  6145. if(!perm.has("plot.other", player)) {
  6146. if(!world.canUsePlots(world)) {
  6147. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  6148. goto("wait");
  6149. }
  6150. if(!plot.isLeader(plot, player) && !plot.isMod(plot, player)) {
  6151. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  6152. goto("wait");
  6153. }
  6154. player_name = player.getName(player);
  6155. if(player_name == p_name) {
  6156. msg.prefix(player, prefix_plot, "You can´t kick yourself.");
  6157. goto("wait");
  6158. }
  6159. p_id = player.getId(p_uuid);
  6160. if(plot.isLeader(plot, p_id)) {
  6161. msg.prefix(player, prefix_plot, "You can´t kick the plot-leader.");
  6162. goto("wait");
  6163. }
  6164. }
  6165. plot.removePlayer(plot, p_name);
  6166. msg.prefix(player, prefix_plot, string.concat(p_name, " removed from this plot."));
  6167. plot.savePlots(world);
  6168. goto("wait");
  6169. }
  6170. if(arg0 == "name") {
  6171. if(size < 2) {
  6172. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  6173. goto("wait");
  6174. }
  6175. location = entity.getLocation(player);
  6176. world = loc.getWorld(location);
  6177. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  6178. if(size == 2) {
  6179. plot_list = plot.get(location);
  6180. amount = list.getSize(plot_list);
  6181. if(amount == 0) {
  6182. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6183. goto("wait");
  6184. }
  6185. plot = list.getIndex(plot_list, 0);
  6186. name = list.getIndex(args, 1);
  6187. if(amount > 1) {
  6188. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6189. for(i = 0; i < amount; i++) {
  6190. plot = list.getIndex(plot_list, i);
  6191. plot_id = plot.getId(plot);
  6192. 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)))));
  6193. }
  6194. goto("wait");
  6195. }
  6196. }
  6197. if(size > 2) {
  6198. plot_id = list.getIndex(args, 1);
  6199. if(isDouble(plot_id)) {
  6200. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  6201. plot = plot.getFromId(plot_id, world);
  6202. if(plot == null) {
  6203. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6204. goto("wait");
  6205. }
  6206. name = string.concatList(args, " ", 2, size - 1);
  6207. } else {
  6208. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  6209. name = string.concatList(args, " ", 1, size - 1);
  6210. plot_list = plot.get(location);
  6211. amount = list.getSize(plot_list);
  6212. if(amount == 0) {
  6213. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6214. goto("wait");
  6215. }
  6216. plot = list.getIndex(plot_list, 0);
  6217. if(amount > 1) {
  6218. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6219. for(i = 0; i < amount; i++) {
  6220. plot = list.getIndex(plot_list, i);
  6221. plot_id = plot.getId(plot);
  6222. 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)))));
  6223. }
  6224. goto("wait");
  6225. }
  6226. }
  6227. }
  6228. if(!perm.has("plot.other", player)) {
  6229. if(!world.canUsePlots(world)) {
  6230. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  6231. goto("wait");
  6232. }
  6233. player_id = player.getId(player);
  6234. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  6235. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  6236. goto("wait");
  6237. }
  6238. }
  6239. plot.setName(plot, name);
  6240. msg.prefix(player, prefix_plot, string.concat("Plot renamed to ", name, "."));
  6241. plot.savePlots(world);
  6242. goto("wait");
  6243. }
  6244. if(arg0 == "create" || arg0 == "create3d") {
  6245. player_id = player.getId(player);
  6246. loc1 = map.get(plotpos1, player_id);
  6247. loc2 = map.get(plotpos2, player_id);
  6248. if(loc1 == null || loc2 == null) {
  6249. msg.prefix(player, prefix_plot, "Set corners points with §d/p pos1 §rand §d/p pos2§r.");
  6250. goto("wait");
  6251. }
  6252. world1 = loc.getWorld(loc1);
  6253. if(world1 != loc.getWorld(loc2)) {
  6254. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  6255. goto("wait");
  6256. }
  6257. x1 = loc.getX(loc1);
  6258. z1 = loc.getZ(loc1);
  6259. x2 = loc.getX(loc2);
  6260. z2 = loc.getZ(loc2);
  6261. if(arg0 == "create") {
  6262. y1 = -64;
  6263. y2 = 319;
  6264. loc.setY(loc1, y1);
  6265. loc.setY(loc2, y2);
  6266. } else {
  6267. y1 = loc.getY(loc1);
  6268. y2 = loc.getY(loc2);
  6269. }
  6270. create_message = "Plot created.";
  6271. sub_plot = false;
  6272. if(!perm.has("plot.other", player)) {
  6273. world_name = world.getName(world1);
  6274. if(!world.canUsePlots(world1)) {
  6275. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  6276. goto("wait");
  6277. }
  6278. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  6279. if(list.getSize(list) > 0) {
  6280. city_plot = list.getIndex(list, 0);
  6281. if(plot.isCity(city_plot)) {
  6282. if(!plot.isLeader(city_plot, player_id) && !plot.isMod(city_plot, player_id)) {
  6283. msg.prefix(player, prefix_plot, "You aren´t a plot leader or mod.");
  6284. goto("wait");
  6285. }
  6286. city_id = plot.getId(city_plot);
  6287. if(!loc.hasPlotId(loc1, city_id)) {
  6288. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  6289. goto("wait");
  6290. }
  6291. if(!loc.hasPlotId(loc2, city_id)) {
  6292. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  6293. goto("wait");
  6294. }
  6295. sub_plot = true;
  6296. } else {
  6297. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  6298. goto("wait");
  6299. }
  6300. }
  6301. if(!sub_plot) {
  6302. //Calc costs
  6303. length = math.abs(x1 - x2) + 1;
  6304. width = math.abs(z1 - z2) + 1;
  6305. if(length < 3 || width < 3) {
  6306. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  6307. goto("wait");
  6308. }
  6309. snuvis = plot.calcCost(world1, length, width);
  6310. free_plot_used = player.usedHisFreePlot(player_id);
  6311. if(!free_plot_used && world_name != "creative") {
  6312. snuvis -= plot.calcCost(world1, 16, 16);
  6313. if(snuvis < 0) {
  6314. snuvis = 0;
  6315. }
  6316. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  6317. }
  6318. if(!hasEnoughMoney(player, snuvis)) {
  6319. msg.prefix(player, prefix_plot, string.concat("You´ll need ", money.getString(snuvis), " snuvis for this."));
  6320. goto("wait");
  6321. }
  6322. create_message = string.concat("Plot created. Spent ", money.getString(snuvis), " snuvis.");
  6323. money.sub(player, snuvis);
  6324. if(!free_plot_used && world_name != "creative") {
  6325. player.setUsedFreePlot(player_id, true);
  6326. offerRank(player, "rank.settler");
  6327. }
  6328. if(!player.hasBigPlotCreated(player)) {
  6329. plot_size = length * width;
  6330. if(plot_size >= 900) {
  6331. offerRank(player, "rank.colonizer");
  6332. player.setBigPlotCreated(player, true);
  6333. }
  6334. }
  6335. }
  6336. }
  6337. //Create plot
  6338. map.remove(plotpos1, player_id);
  6339. map.remove(plotpos2, player_id);
  6340. plot = plot.add(loc1, loc2);
  6341. if(sub_plot) {
  6342. plot.setSub(plot, true);
  6343. }
  6344. plot.setMoveEvent(plot, world1);
  6345. player_name = player.getName(player);
  6346. plot.setName(plot, string.concat("Plot of ", player_name));
  6347. plot.addPlayer(plot, player_name);
  6348. plot.setLeader(plot, player_id);
  6349. msg.prefix(player, prefix_plot, create_message);
  6350. plot.savePlots(world1);
  6351. goto("wait");
  6352. }
  6353. if(arg0 == "pos1" || arg0 == "pos2") {
  6354. loc = entity.getLocation(player);
  6355. loc = getBlockLocation(loc);
  6356. player_id = player.getId(player);
  6357. if(arg0 == "pos1") {
  6358. map.add(plotpos1, player_id, loc);
  6359. pos_string = "Pos1";
  6360. } elseif(arg0 == "pos2") {
  6361. map.add(plotpos2, player_id, loc);
  6362. pos_string = "Pos2";
  6363. }
  6364. x = string.number(loc.getX(loc));
  6365. y = string.number(loc.getY(loc));
  6366. z = string.number(loc.getZ(loc));
  6367. msg.prefix(player, prefix_plot, string.concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  6368. loc1 = map.get(plotpos1, player_id);
  6369. loc2 = map.get(plotpos2, player_id);
  6370. if(loc1 != null && loc2 != null) {
  6371. world1 = loc.getWorld(loc1);
  6372. snuvis = plot.calcCost(world1, loc1, loc2);
  6373. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  6374. snuvis -= plot.calcCost(world1, 16, 16);
  6375. if(snuvis < 0) {
  6376. snuvis = 0;
  6377. }
  6378. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  6379. }
  6380. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  6381. snuvis = 0;
  6382. }
  6383. msg.prefix(player, prefix_plot, string.concat("This plot will cost ", money.getString(snuvis), " snuvis."));
  6384. }
  6385. goto("wait");
  6386. }
  6387. if(arg0 == "flags") {
  6388. if(!perm.has("plot.moreinfo", player)) {
  6389. perm.no("plot.moreinfo", player);
  6390. goto("wait");
  6391. }
  6392. if(size < 3 || size > 4) {
  6393. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  6394. goto("wait");
  6395. }
  6396. flags = list.getIndex(args, 1);
  6397. if(!isDouble(flags) || flags < 0) {
  6398. msg.prefix(player, prefix_commands, "Positive number expected.");
  6399. goto("wait");
  6400. }
  6401. boolean = list.getIndex(args, 2);
  6402. if(!(boolean == true || boolean == false)) {
  6403. msg.prefix(player, prefix_commands, "Boolean expected.");
  6404. goto("wait");
  6405. }
  6406. location = entity.getLocation(player);
  6407. world = loc.getWorld(location);
  6408. if(size == 3) {
  6409. plot_list = plot.get(location);
  6410. amount = list.getSize(plot_list);
  6411. if(amount == 0) {
  6412. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6413. goto("wait");
  6414. }
  6415. plot = list.getIndex(plot_list, 0);
  6416. if(amount > 1) {
  6417. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6418. for(i = 0; i < amount; i++) {
  6419. plot = list.getIndex(plot_list, i);
  6420. plot_id = plot.getId(plot);
  6421. x = loc.getX(location);
  6422. y = loc.getY(location);
  6423. z = loc.getZ(location);
  6424. 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)))));
  6425. }
  6426. goto("wait");
  6427. }
  6428. } else {
  6429. plot_id = list.getIndex(args, 3);
  6430. plot = plot.getFromId(plot_id, world);
  6431. if(plot == null) {
  6432. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6433. goto("wait");
  6434. }
  6435. }
  6436. plot.setFlags(plot, flags, boolean);
  6437. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  6438. plot.savePlots(world);
  6439. goto("wait");
  6440. }
  6441. if(arg0 == "list") {
  6442. if(size == 1) {
  6443. p_name = player.getName(player);
  6444. } else {
  6445. if(!perm.has("plot.moreinfo", player)) {
  6446. perm.no("plot.moreinfo", player);
  6447. goto("wait");
  6448. }
  6449. p_name = list.getIndex(args, 1);
  6450. }
  6451. p_uuid = player.getUuid(p_name);
  6452. if(p_uuid == null) {
  6453. msg.prefix(player, prefix_plot, "This player has never been online.");
  6454. goto("wait");
  6455. }
  6456. p_name = player.getName(p_uuid);
  6457. msg.prefix(player, prefix_commands, string.concat("Plots of ", p_name, ":"));
  6458. world = loc.getWorld(entity.getLocation(player));
  6459. iter = plot.iterator(world, p_uuid);
  6460. while(hasNext(iter)) {
  6461. plot = next(iter);
  6462. msg.string(player, string.concat(" - #", string.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  6463. }
  6464. goto("wait");
  6465. }
  6466. if(arg0 == "listall") {
  6467. if(!perm.has("plot.moreinfo", player)) {
  6468. perm.no("plot.moreinfo", player);
  6469. goto("wait");
  6470. }
  6471. if(size != 1) {
  6472. msg.prefix(player, prefix_commands, "/plot listall");
  6473. goto("wait");
  6474. }
  6475. world = loc.getWorld(entity.getLocation(player));
  6476. msg.prefix(player, prefix_commands, string.concat("All plots in this world: ", world.getName(world)));
  6477. iterator = plot.iterator(world);
  6478. while(hasNext(iterator)) {
  6479. plot = next(iterator);
  6480. plot_id = plot.getId(plot);
  6481. msg.string(player, string.concat(" - #", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  6482. }
  6483. goto("wait");
  6484. }
  6485. if(arg0 == "moreinfo" || arg0 == "mi") {
  6486. if(!perm.has("plot.moreinfo", player)) {
  6487. perm.no("plot.moreinfo", player);
  6488. goto("wait");
  6489. }
  6490. location = entity.getLocation(player);
  6491. world = loc.getWorld(location);
  6492. if(size == 1) {
  6493. plot_list = plot.get(location);
  6494. amount = list.getSize(plot_list);
  6495. if(amount == 0) {
  6496. msg.prefix(player, prefix_plot, "You aren´t on a plot.");
  6497. goto("wait");
  6498. }
  6499. plot = list.getIndex(plot_list, 0);
  6500. if(amount > 1) {
  6501. msg.prefix(player, prefix_plot, "Multiple plots present:");
  6502. for(i = 0; i < amount; i++) {
  6503. plot = list.getIndex(plot_list, i);
  6504. plot_id = plot.getId(plot);
  6505. 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)))));
  6506. }
  6507. goto("wait");
  6508. }
  6509. } else {
  6510. if(size != 2) {
  6511. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  6512. goto("wait");
  6513. }
  6514. plot_id = list.getIndex(args, 1);
  6515. plot = plot.getFromId(plot_id, world);
  6516. if(plot == null) {
  6517. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  6518. goto("wait");
  6519. }
  6520. }
  6521. owners = "";
  6522. owners_list = plot.getOwners(plot);
  6523. copy_list = list.copy(owners_list);
  6524. plot_id = plot.getId(plot);
  6525. x1 = plot.getMinX(plot);
  6526. y1 = plot.getMinY(plot);
  6527. z1 = plot.getMinZ(plot);
  6528. x2 = plot.getMaxX(plot);
  6529. y2 = plot.getMaxY(plot);
  6530. z2 = plot.getMaxZ(plot);
  6531. length = x2 - x1 + 1;
  6532. width = z2 - z1 + 1;
  6533. msg.string(player, string.concat(" - #", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", string.number(length), "x", string.number(width)));
  6534. owners_list = plot.getOwners(plot);
  6535. copy_list = list.copy(owners_list);
  6536. msg.string(player, string.concat(" §dW §r", world.getName(world)));
  6537. msg.string(player, string.concat(" §dX1 §r", string.number(x1), " §dY1 §r", string.number(y1), " §dZ1 §r", string.number(z1)));
  6538. msg.string(player, string.concat(" §dX2 §r", string.number(x2), " §dY2 §r", string.number(y2), " §dZ2 §r", string.number(z2)));
  6539. leader_name = plot.getLeaderName(plot);
  6540. if(leader_name != "") {
  6541. msg.string(player, string.concat(" §dLeader: §r", leader_name));
  6542. list.remove(copy_list, player.getUuid(leader_name));
  6543. }
  6544. mods_list = plot.getMods(plot);
  6545. mods_amount = list.getSize(mods_list);
  6546. if(mods_amount != 0) {
  6547. iter = iterator(mods_list);
  6548. mods_string = "";
  6549. while(hasNext(iter)) {
  6550. p_name = player.getNameFromId(next(iter));
  6551. p_uuid = player.getUuid(p_name);
  6552. list.remove(copy_list, p_uuid);
  6553. if(mods_string == "") {
  6554. mods_string = p_name;
  6555. } else {
  6556. mods_string = string.concat(mods_string, " / ", p_name);
  6557. }
  6558. }
  6559. msg.string(player, string.concat(" §dMods: §r", mods_string));
  6560. }
  6561. members_amount = list.getSize(copy_list);
  6562. if(members_amount != 0) {
  6563. iter = iterator(copy_list);
  6564. members_string = "";
  6565. while(hasNext(iter)) {
  6566. p_name = player.getName(next(iter));
  6567. if(members_string == "") {
  6568. members_string = p_name;
  6569. } else {
  6570. members_string = string.concat(members_string, " / ", p_name);
  6571. }
  6572. }
  6573. msg.string(player, string.concat(" §dMembers: §r", members_string));
  6574. }
  6575. chests_list = plot.getChestRanks(plot);
  6576. chests_amount = list.getSize(chests_list);
  6577. if(chests_amount != 0) {
  6578. iter = iterator(chests_list);
  6579. chests_string = "";
  6580. while(hasNext(iter)) {
  6581. p_name = player.getNameFromId(next(iter));
  6582. if(chests_string == "") {
  6583. chests_string = p_name;
  6584. } else {
  6585. chests_string = string.concat(chests_string, " / ", p_name);
  6586. }
  6587. }
  6588. msg.string(player, string.concat(" §dOnly chest: §r", chests_string));
  6589. }
  6590. a = getFlagLists(plot);
  6591. flags_true = a[0];
  6592. flags_false = a[1];
  6593. x = loc.getX(location);
  6594. y = loc.getY(location);
  6595. z = loc.getZ(location);
  6596. msg.string(player, " §dFlags true:");
  6597. iter = iterator(flags_true);
  6598. while(hasNext(iter)) {
  6599. array = next(iter);
  6600. flag_number = array[0];
  6601. flag_name = array[1];
  6602. msg(player, text.merge(text.new(" "), string.getClickText(string.concat(" §d[§r", flag_name, "§d] "), string.concat("/plot flags ", flag_number, " false ", plot_id))));
  6603. }
  6604. msg.string(player, " §dFlags false:");
  6605. iter = iterator(flags_false);
  6606. while(hasNext(iter)) {
  6607. array = next(iter);
  6608. flag_number = array[0];
  6609. flag_name = array[1];
  6610. msg(player, text.merge(text.new(" "), string.getClickText(string.concat(" §d[§r", flag_name, "§d] "), string.concat("/plot flags ", flag_number, " true ", plot_id))));
  6611. }
  6612. goto("wait");
  6613. }
  6614. if(arg0 == "info" || arg0 == "i") {
  6615. location = entity.getLocation(player);
  6616. list = plot.get(location);
  6617. world = loc.getWorld(location);
  6618. size = list.getSize(list);
  6619. if(size == 0) {
  6620. msg.prefix(player, prefix_plot, "No plots found.");
  6621. goto("wait");
  6622. }
  6623. if(size == 1) {
  6624. msg.prefix(player, prefix_plot, string.concat(string.number(size), " plot found:"));
  6625. } else {
  6626. msg.prefix(player, prefix_plot, string.concat(string.number(size), " plots found:"));
  6627. }
  6628. for(i = 0; i < size; i++) {
  6629. plot = list.getIndex(list, i);
  6630. plot_id = plot.getId(plot);
  6631. x1 = plot.getMinX(plot);
  6632. y1 = plot.getMinY(plot);
  6633. z1 = plot.getMinZ(plot);
  6634. x2 = plot.getMaxX(plot);
  6635. y2 = plot.getMaxY(plot);
  6636. z2 = plot.getMaxZ(plot);
  6637. length = x2 - x1 + 1;
  6638. width = z2 - z1 + 1;
  6639. msg.string(player, string.concat(" - #", string.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", string.number(length), "x", string.number(width)));
  6640. owners_list = plot.getOwners(plot);
  6641. copy_list = list.copy(owners_list);
  6642. msg.string(player, string.concat(" §dW §r", world.getName(world)));
  6643. msg.string(player, string.concat(" §dX1 §r", string.number(x1), " §dY1 §r", string.number(y1), " §dZ1 §r", string.number(z1)));
  6644. msg.string(player, string.concat(" §dX2 §r", string.number(x2), " §dY2 §r", string.number(y2), " §dZ2 §r", string.number(z2)));
  6645. leader_name = plot.getLeaderName(plot);
  6646. if(leader_name != "") {
  6647. msg.string(player, string.concat(" §dLeader: §r", leader_name));
  6648. list.remove(copy_list, player.getUuid(leader_name));
  6649. }
  6650. mods_list = plot.getMods(plot);
  6651. mods_amount = list.getSize(mods_list);
  6652. if(mods_amount != 0) {
  6653. iter = iterator(mods_list);
  6654. mods_string = "";
  6655. while(hasNext(iter)) {
  6656. p_name = player.getNameFromId(next(iter));
  6657. p_uuid = player.getUuid(p_name);
  6658. list.remove(copy_list, p_uuid);
  6659. if(mods_string == "") {
  6660. mods_string = p_name;
  6661. } else {
  6662. mods_string = string.concat(mods_string, " / ", p_name);
  6663. }
  6664. }
  6665. msg.string(player, string.concat(" §dMods: §r", mods_string));
  6666. }
  6667. members_amount = list.getSize(copy_list);
  6668. if(members_amount != 0) {
  6669. iter = iterator(copy_list);
  6670. members_string = "";
  6671. while(hasNext(iter)) {
  6672. p_name = player.getName(next(iter));
  6673. if(members_string == "") {
  6674. members_string = p_name;
  6675. } else {
  6676. members_string = string.concat(members_string, " / ", p_name);
  6677. }
  6678. }
  6679. msg.string(player, string.concat(" §dMembers: §r", members_string));
  6680. }
  6681. chests_list = plot.getChestRanks(plot);
  6682. chests_amount = list.getSize(chests_list);
  6683. if(chests_amount != 0) {
  6684. iter = iterator(chests_list);
  6685. chests_string = "";
  6686. while(hasNext(iter)) {
  6687. p_name = player.getNameFromId(next(iter));
  6688. if(chests_string == "") {
  6689. chests_string = p_name;
  6690. } else {
  6691. chests_string = string.concat(chests_string, " / ", p_name);
  6692. }
  6693. }
  6694. msg.string(player, string.concat(" §dOnly chest: §r", chests_string));
  6695. }
  6696. }
  6697. goto("wait");
  6698. }
  6699. goto("plothelp");
  6700. @stopadventure
  6701. removeAdventureDisplay(player);
  6702. player.setAdventure(player, false);
  6703. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  6704. goto("wait");
  6705. @speed
  6706. if(size < 1 || size > 2) {
  6707. if(perm.has("speed.other", player)) {
  6708. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  6709. } else {
  6710. msg.prefix(player, prefix_commands, "/speed <1-10>");
  6711. }
  6712. goto("wait");
  6713. }
  6714. speed = list.getIndex(args, 0);
  6715. if(!isDouble(speed)) {
  6716. msg.prefix(player, prefix_commands, "Number expected.");
  6717. goto("wait");
  6718. }
  6719. if(speed < 1) {
  6720. speed = 1;
  6721. }
  6722. if(speed > 10) {
  6723. speed = 10;
  6724. }
  6725. if(size < 2) {
  6726. p = player;
  6727. }
  6728. if(size == 2) {
  6729. if(!perm.has("speed.other", player)) {
  6730. perm.no("speed.other", player);
  6731. goto("wait");
  6732. }
  6733. p_name = list.getIndex(args, 1);
  6734. p = read.player(p_name);
  6735. if(p == null) {
  6736. msg.prefix(player, prefix_commands, "This player is not online.");
  6737. goto("wait");
  6738. }
  6739. }
  6740. player.setSpeed(p, speed);
  6741. msg.prefix(p, prefix_commands, string.concat("Set your speed to ", string.number(speed), "."));
  6742. if(p != player) {
  6743. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " set your speed to ", string.number(speed), "."));
  6744. }
  6745. goto("wait");
  6746. @butcher
  6747. loc = entity.getLocation(player);
  6748. world = loc.getWorld(loc);
  6749. list = world.getEntities(world);
  6750. size = list.getSize(list);
  6751. killed = 0;
  6752. for(i = 0; i < size; i++) {
  6753. element = list.getIndex(list, i);
  6754. if(isLiving(element)) {
  6755. entity_type = entity.getType(element);
  6756. if(set.contains(butcher_set, entity_type)) {
  6757. entity.remove(element);
  6758. killed++;
  6759. }
  6760. }
  6761. }
  6762. msg.prefix(player, prefix_commands, string.concat(string.number(killed), " mobs killed."));
  6763. goto("wait");
  6764. @enchant
  6765. if(size != 2) {
  6766. msg.prefix(player, prefix_commands, "/enchant <enchantment> <level>");
  6767. goto("wait");
  6768. }
  6769. ench_string = list.getIndex(args, 0);
  6770. ench = enchantment.get(ench_string);
  6771. if(ench == null) {
  6772. msg.prefix(player, prefix_commands, "Unknown enchantment");
  6773. goto("wait");
  6774. }
  6775. lvl = list.getIndex(args, 1);
  6776. if(!isDouble(lvl) || lvl < 1 || lvl > 100) {
  6777. msg.prefix(sender, prefix_commands, "Number greater than 0 and less than 101 expected.");
  6778. goto("wait");
  6779. }
  6780. item = living.getHand(player);
  6781. if(item.isAir(item)) {
  6782. msg.prefix(sender, prefix_commands, "You need to hold an item in your hand.");
  6783. goto("wait");
  6784. }
  6785. enchantment.add(ench, item, lvl);
  6786. goto("wait");
  6787. @enderchest
  6788. if(size < 1 || size > 2) {
  6789. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  6790. goto("wait");
  6791. }
  6792. if(size == 1) {
  6793. from_name = list.getIndex(args, 0);
  6794. p = player;
  6795. }
  6796. elseif(size == 2) {
  6797. p_name = list.getIndex(args, 0);
  6798. from_name = list.getIndex(args, 1);
  6799. p = read.player(p_name);
  6800. if(p == null) {
  6801. msg.prefix(player, prefix_commands, "This player is not online.");
  6802. goto("wait");
  6803. }
  6804. }
  6805. from_player = read.player(from_name);
  6806. if(from_player == null) {
  6807. msg.prefix(player, prefix_commands, "This player is not online.");
  6808. goto("wait");
  6809. }
  6810. ender_inv = player.getEnderInv(from_player);
  6811. inv.open(ender_inv, p);
  6812. goto("wait");
  6813. @gamemode
  6814. if(size < 1 || size > 2) {
  6815. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  6816. goto("wait");
  6817. }
  6818. if(size == 1) {
  6819. p = player;
  6820. } elseif(size == 2) {
  6821. if(!perm.has("gamemode.other", player)) {
  6822. perm.no("gamemode.other", player);
  6823. goto("wait");
  6824. }
  6825. p_name = list.getIndex(args, 1);
  6826. p = read.player(p_name);
  6827. if(p == null) {
  6828. msg.prefix(player, prefix_commands, "This player is not online.");
  6829. goto("wait");
  6830. }
  6831. }
  6832. mode = list.getIndex(args, 0);
  6833. if(isDouble(mode)) {
  6834. mode = string.number(mode);
  6835. } else {
  6836. mode = string.toLowerCase(mode);
  6837. }
  6838. if(mode == "s" || mode == "0" || mode == "survival") {
  6839. mode = "SURVIVAL";
  6840. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  6841. mode = "CREATIVE";
  6842. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  6843. mode = "ADVENTURE";
  6844. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  6845. mode = "SPECTATOR";
  6846. } else {
  6847. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  6848. goto("wait");
  6849. }
  6850. player.setGamemode(p, mode);
  6851. if(p != player) {
  6852. p_name = player.getName(p);
  6853. msg.prefix(player, prefix_commands, string.concat("Gamemode of ", p_name, " set to ", mode, "."));
  6854. }
  6855. msg.prefix(p, prefix_commands, string.concat("Set your gamemode to ", mode, "."));
  6856. goto("wait");
  6857. @home
  6858. if(size == 0) {
  6859. @homesyntax
  6860. msg.prefix(player, prefix_commands, "/home ...");
  6861. msg.string(player, "§6 - set <name> §rSets a home");
  6862. if(perm.has("home.other", player)) {
  6863. msg.string(player, "§6 - delete <name> [player] §rDeletes a home");
  6864. msg.string(player, "§6 - list [player] §rLists all homes");
  6865. msg.string(player, "§6 - <name> [player] §rTeleports to a home");
  6866. } else {
  6867. msg.string(player, "§6 - delete <name> §rDeletes a home");
  6868. msg.string(player, "§6 - list §rLists your homes");
  6869. msg.string(player, "§6 - <name> §rTeleports to your home");
  6870. }
  6871. goto("wait");
  6872. }
  6873. arg0 = string.toLowerCase(list.getIndex(args, 0));
  6874. if(arg0 == "del" || arg0 == "delete") {
  6875. if(size < 2) {
  6876. goto("homesyntax");
  6877. }
  6878. if(size == 2) {
  6879. player_id = player.getId(player);
  6880. } else {
  6881. if(!perm.has("home.other", player)) {
  6882. perm.no("home.other", player);
  6883. goto("wait");
  6884. }
  6885. p_name = string.toLowerCase(list.getIndex(args, 2));
  6886. p_uuid = player.getUuid(p_name);
  6887. if(p_uuid == null) {
  6888. msg.prefix(player, prefix_commands, "This player has never been online.");
  6889. goto("wait");
  6890. }
  6891. player_id = player.getId(p_uuid);
  6892. }
  6893. name = string.toLowerCase(list.getIndex(args, 1));
  6894. if(!home.exists(player_id, name)) {
  6895. msg.prefix(player, prefix_commands, string.concat("Home ", name, " doesn´t exist."));
  6896. goto("wait");
  6897. }
  6898. home.delete(player_id, name);
  6899. msg.prefix(player, prefix_commands, string.concat("Home ", name, " deleted."));
  6900. goto("wait");
  6901. }
  6902. if(arg0 == "list") {
  6903. if(size < 2) {
  6904. p_uuid = player.getUuid(player);
  6905. }
  6906. if(size == 2) {
  6907. if(!perm.has("home.other", player)) {
  6908. perm.no("home.other", player);
  6909. goto("wait");
  6910. }
  6911. p_name = string.toLowerCase(list.getIndex(args, 1));
  6912. p_uuid = player.getUuid(p_name);
  6913. if(p_uuid == null) {
  6914. msg.prefix(player, prefix_commands, "This player has never been online.");
  6915. goto("wait");
  6916. }
  6917. }
  6918. id = player.getId(p_uuid);
  6919. homes_list = home.getList(id);
  6920. home_amount = list.getSize(homes_list);
  6921. if(home_amount == 0) {
  6922. msg.prefix(player, prefix_commands, "No homes existing.");
  6923. } else {
  6924. msg.prefix(player, prefix_commands, string.concat("Homes of ", player.getName(p_uuid), ":"));
  6925. for(i = 0; i < home_amount; i++) {
  6926. msg.string(player, string.concat("§6 - §r", list.getIndex(homes_list, i)));
  6927. }
  6928. }
  6929. goto("wait");
  6930. }
  6931. location = entity.getLocation(player);
  6932. world_name = world.getName(loc.getWorld(location));
  6933. if(!world.isSurvName(world_name)) {
  6934. msg.prefix(player, prefix_commands, "You can´t use this command in this world.");
  6935. goto("wait");
  6936. }
  6937. if(arg0 == "set") {
  6938. if(size < 2) {
  6939. goto("homesyntax");
  6940. }
  6941. player_id = player.getId(player);
  6942. homes_list = home.getList(player_id);
  6943. home_amount = list.getSize(homes_list);
  6944. if(perm.has("isTeam", player)) {
  6945. max_homes = 20;
  6946. } else {
  6947. max_homes = 1;
  6948. }
  6949. max_homes += getAdditionalVoteHomes();
  6950. if(home_amount >= max_homes) {
  6951. msg.prefix(player, prefix_commands, string.concat("You can only set ", string.number(max_homes), " homes."));
  6952. goto("wait");
  6953. }
  6954. name = string.toLowerCase(list.getIndex(args, 1));
  6955. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  6956. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  6957. goto("wait");
  6958. }
  6959. if(!string.onlyletters(name)) {
  6960. msg.prefix(player, prefix_commands, "Only letters allowed.");
  6961. goto("wait");
  6962. }
  6963. if(string.length(name) > 20) {
  6964. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  6965. goto("wait");
  6966. }
  6967. if(home.exists(player_id, name)) {
  6968. msg.prefix(player, prefix_commands, string.concat("Home ", name, " already exists."));
  6969. goto("wait");
  6970. }
  6971. home.set(player_id, name, location);
  6972. msg.prefix(player, prefix_commands, string.concat("Home ", name, " set."));
  6973. goto("wait");
  6974. }
  6975. //Teleportation
  6976. if(size < 2) {
  6977. p_name = player.getName(player);
  6978. }
  6979. if(size == 2) {
  6980. p_name = string.toLowerCase(list.getIndex(args, 1));
  6981. }
  6982. p_uuid = player.getUuid(p_name);
  6983. if(p_uuid == null) {
  6984. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  6985. goto("wait");
  6986. }
  6987. player_id = player.getId(p_uuid);
  6988. location = home.getLocation(player_id, arg0);
  6989. if(location == null) {
  6990. msg.prefix(player, prefix_commands, "Home doesn´t exist."); //oder die welt ist nicht geladen
  6991. goto("wait");
  6992. }
  6993. player.teleport(player, location, true);
  6994. goto("wait");
  6995. @icon
  6996. msg.string(player, string.getSpacer());
  6997. msg.string(player, "Icons - Click to Copy");
  6998. msg(player, text.merge(
  6999. string.getClipBoardText(icon.getGoldCoin(), icon.getGoldCoin()), text.new(" "),
  7000. string.getClipBoardText(icon.getSilverCoin(), icon.getSilverCoin()), text.new(" "),
  7001. string.getClipBoardText(icon.getCopperCoin(), icon.getCopperCoin()), text.new(" "),
  7002. string.getClipBoardText(icon.getExp(), icon.getExp()), text.new(" "),
  7003. string.getClipBoardText(icon.getBookshelf(), icon.getBookshelf()), text.new(" "),
  7004. string.getClipBoardText(icon.getCraftingTable(), icon.getCraftingTable())
  7005. ));
  7006. msg(player, text.merge(
  7007. string.getClipBoardText(icon.getCompass(), icon.getCompass()), text.new(" "),
  7008. string.getClipBoardText(icon.getCake(), icon.getCake()), text.new(" "),
  7009. string.getClipBoardText(icon.getEnderpearl(), icon.getEnderpearl()), text.new(" "),
  7010. string.getClipBoardText(icon.getHeart(), icon.getHeart()), text.new(" "),
  7011. string.getClipBoardText(icon.getHalfHeart(), icon.getHalfHeart()), text.new(" "),
  7012. string.getClipBoardText(icon.getEmptyHeart(), icon.getEmptyHeart())
  7013. ));
  7014. goto("wait");
  7015. @tpa
  7016. if(size != 1) {
  7017. msg.prefix(player, prefix_commands, "/tpa <player>");
  7018. goto("wait");
  7019. }
  7020. p_name = list.getIndex(args, 0);
  7021. p_uuid = player.getUuid(p_name);
  7022. if(p_uuid == null) {
  7023. msg.prefix(player, prefix_commands, "This player has never been online.");
  7024. goto("wait");
  7025. }
  7026. p_name = player.getName(p_uuid);
  7027. p = read.player(p_name);
  7028. if(p == null) {
  7029. msg.prefix(player, prefix_commands, "This player is not online.");
  7030. goto("wait");
  7031. }
  7032. if(!player.doesAcceptTpaRequests(p)) {
  7033. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r rejects teleport requests."));
  7034. goto("wait");
  7035. }
  7036. if(!player.canTeleport(p)) {
  7037. msg.prefix(player, prefix_commands, "This player can´t teleport now.");
  7038. goto("wait");
  7039. }
  7040. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7041. if(world.isGamesName(world_name)) {
  7042. msg.prefix(player, prefix_commands, "You can´t teleport in this world.");
  7043. goto("wait");
  7044. }
  7045. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  7046. if(world.isGamesName(world_name)) {
  7047. msg.prefix(player, prefix_commands, "You can´t teleport to this world.");
  7048. goto("wait");
  7049. }
  7050. addTpaRequest(player.getUuid(player), p_uuid);
  7051. player_name = player.getName(player);
  7052. msg.string(player, string.concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  7053. 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))));
  7054. goto("wait");
  7055. @tpahere
  7056. if(size != 1) {
  7057. msg.prefix(player, prefix_commands, "/tpahere <player>");
  7058. goto("wait");
  7059. }
  7060. p_name = list.getIndex(args, 0);
  7061. p_uuid = player.getUuid(p_name);
  7062. if(p_uuid == null) {
  7063. msg.prefix(player, prefix_commands, "This player has never been online.");
  7064. goto("wait");
  7065. }
  7066. p_name = player.getName(p_uuid);
  7067. p = read.player(p_name);
  7068. if(p == null) {
  7069. msg.prefix(player, prefix_commands, "This player is not online.");
  7070. goto("wait");
  7071. }
  7072. if(!player.canTeleport(p)) {
  7073. msg.prefix(player, prefix_commands, "This player can´t teleport now.");
  7074. goto("wait");
  7075. }
  7076. if(!player.doesAcceptTpaRequests(p)) {
  7077. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r rejects teleport requests."));
  7078. goto("wait");
  7079. }
  7080. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7081. if(world.isGamesName(world_name)) {
  7082. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r isn´t allowed to teleport to this world."));
  7083. goto("wait");
  7084. }
  7085. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  7086. if(world.isGamesName(world_name)) {
  7087. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r isn´t allowed to teleport from their world."));
  7088. goto("wait");
  7089. }
  7090. addTpaRequest(p_uuid, player.getUuid(player));
  7091. player_name = player.getName(player);
  7092. msg.string(player, string.concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  7093. 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))));
  7094. goto("wait");
  7095. @tpaccept
  7096. if(size != 1) {
  7097. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  7098. goto("wait");
  7099. }
  7100. p_name = list.getIndex(args, 0);
  7101. p_uuid = player.getUuid(p_name);
  7102. if(p_uuid == null) {
  7103. msg.prefix(player, prefix_commands, "This player has never been online.");
  7104. goto("wait");
  7105. }
  7106. p_name = player.getName(p_uuid);
  7107. p = read.player(p_name);
  7108. if(p == null) {
  7109. msg.prefix(player, prefix_commands, "This player is not online.");
  7110. goto("wait");
  7111. }
  7112. if(!player.canTeleport(player)) {
  7113. msg.prefix(player, prefix_commands, "This player can´t teleport to you now.");
  7114. goto("wait");
  7115. }
  7116. if(!player.canTeleport(p)) {
  7117. msg.prefix(player, prefix_commands, "This player can´t teleport to you now.");
  7118. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  7119. }
  7120. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7121. if(world.isGamesName(world_name)) {
  7122. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r isn´t allowed to teleport to your world."));
  7123. goto("wait");
  7124. }
  7125. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  7126. if(world.isGamesName(world_name)) {
  7127. msg.prefix(player, prefix_commands, string.concat("§c", p_name, "§r isn´t allowed to teleport from their world."));
  7128. goto("wait");
  7129. }
  7130. player_uuid = player.getUuid(player);
  7131. if(!hasTpaRequest(p_uuid, player_uuid)) {
  7132. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  7133. goto("wait");
  7134. }
  7135. location = entity.getLocation(player);
  7136. player.teleport(p, location, true);
  7137. goto("wait");
  7138. @tpaccepthere
  7139. if(size != 1) {
  7140. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  7141. goto("wait");
  7142. }
  7143. p_name = list.getIndex(args, 0);
  7144. p_uuid = player.getUuid(p_name);
  7145. if(p_uuid == null) {
  7146. msg.prefix(player, prefix_commands, "This player has never been online.");
  7147. goto("wait");
  7148. }
  7149. p_name = player.getName(p_uuid);
  7150. p = read.player(p_name);
  7151. if(p == null) {
  7152. msg.prefix(player, prefix_commands, "This player is not online.");
  7153. goto("wait");
  7154. }
  7155. if(!player.canTeleport(player)) {
  7156. msg.prefix(p, prefix_commands, "This player can´t teleport to you now.");
  7157. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  7158. }
  7159. if(!player.canTeleport(p)) {
  7160. msg.prefix(player, prefix_commands, "You must not teleport to this player now.");
  7161. goto("wait");
  7162. }
  7163. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7164. if(world.isGamesName(world_name)) {
  7165. msg.prefix(player, prefix_commands, "You can´t teleport in this world.");
  7166. goto("wait");
  7167. }
  7168. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  7169. if(world.isGamesName(world_name)) {
  7170. msg.prefix(player, prefix_commands, "You can´t teleport to this world.");
  7171. goto("wait");
  7172. }
  7173. player_uuid = player.getUuid(player);
  7174. if(!hasTpaRequest(player_uuid, p_uuid)) {
  7175. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  7176. goto("wait");
  7177. }
  7178. location = entity.getLocation(p);
  7179. player.teleport(player, location, true);
  7180. goto("wait");
  7181. @tp
  7182. if(size < 1 || size > 2) {
  7183. if(perm.has("tp.other", player)) {
  7184. msg.prefix(player, prefix_commands, "/tp [player] <to-player>");
  7185. } else {
  7186. msg.prefix(player, prefix_commands, "/tp <player>");
  7187. }
  7188. goto("wait");
  7189. }
  7190. if(size == 1) {
  7191. to_name = list.getIndex(args, 0);
  7192. p = player;
  7193. }
  7194. elseif(size == 2) {
  7195. if(!perm.has("tp.other", player)) {
  7196. perm.no("tp.other", player);
  7197. goto("wait");
  7198. }
  7199. p_name = list.getIndex(args, 0);
  7200. p = read.player(p_name);
  7201. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  7202. to_name = list.getIndex(args, 1);
  7203. if(p == null) {
  7204. msg.prefix(player, prefix_commands, "This player is not online.");
  7205. goto("wait");
  7206. }
  7207. }
  7208. if(player.hasMinigame(p)) {
  7209. if(size == 2) {
  7210. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  7211. goto("wait");
  7212. }
  7213. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  7214. goto("wait");
  7215. }
  7216. to_player = read.player(to_name);
  7217. if(to_player == null) {
  7218. msg.prefix(player, prefix_commands, "This player is not online.");
  7219. goto("wait");
  7220. }
  7221. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  7222. to_name = player.getName(to_player);
  7223. location = entity.getLocation(to_player);
  7224. if(player.teleport(p, location, true)) {
  7225. if(player != p) {
  7226. msg.prefix(player, prefix_commands, string.concat("Teleported ", player.getName(p), " to ", to_name, "."));
  7227. }
  7228. msg.prefix(p, prefix_commands, string.concat("Teleported you to ", to_name, "."));
  7229. }
  7230. goto("wait");
  7231. @say
  7232. if(size == 0) {
  7233. msg.prefix(sender, prefix_commands, "/say <text>");
  7234. goto("wait");
  7235. }
  7236. msg.online("§cServer", string.concatList(args, " ", 0, size - 1));
  7237. goto("wait");
  7238. @warp
  7239. if(size == 0) {
  7240. @warpsyntax
  7241. msg.prefix(player, prefix_commands, "/warp ...");
  7242. if(perm.has("warp.create", player)) {
  7243. msg.string(player, "§6 - set <warp> §rSets a warp");
  7244. msg.string(player, "§6 - delete <warp> §rDeletes a warp");
  7245. }
  7246. msg.string(player, "§6 - <warp> §rTeleports to a warp");
  7247. msg.string(player, "§6 - list §rLists all warps");
  7248. goto("wait");
  7249. }
  7250. arg0 = string.toLowerCase(list.getIndex(args, 0));
  7251. if(arg0 == "delete") {
  7252. if(!perm.has("warp.create", player)) {
  7253. perm.no("warp.create", player);
  7254. goto("wait");
  7255. }
  7256. if(size != 2) {
  7257. goto("warpsyntax");
  7258. }
  7259. warp_name = string.toLowerCase(list.getIndex(args, 1));
  7260. if(warp.delete(warp_name)) {
  7261. msg.prefix(player, prefix_commands, string.concat("Warp ", warp_name, " deleted."));
  7262. } else {
  7263. msg.prefix(player, prefix_commands, "Warpname doesn´t exist.");
  7264. }
  7265. goto("wait");
  7266. }
  7267. if(arg0 == "list") {
  7268. warps_list = warp.getList();
  7269. if(list.getSize(warps_list) == 0) {
  7270. msg.prefix(player, prefix_commands, "No warps existing.");
  7271. goto("wait");
  7272. }
  7273. msg.prefix(player, prefix_commands, string.concat("§6Warps:"));
  7274. for(i = 0; i < list.getSize(warps_list); i++) {
  7275. msg.string(player, string.concat("§6 - §r", list.getIndex(warps_list, i)));
  7276. }
  7277. goto("wait");
  7278. }
  7279. if(arg0 == "set") {
  7280. if(!perm.has("warp.create", player)) {
  7281. perm.no("warp.create", player);
  7282. goto("wait");
  7283. }
  7284. if(size != 2) {
  7285. goto("warpsyntax");
  7286. }
  7287. warp_name = string.toLowerCase(list.getIndex(args, 1));
  7288. if(warp.exists(warp_name)) {
  7289. msg.prefix(player, prefix_commands, "Warpname already exists.");
  7290. goto("wait");
  7291. }
  7292. warp.create(warp_name, entity.getLocation(player));
  7293. msg.prefix(player, prefix_commands, string.concat("Warp ", warp_name, " set."));
  7294. goto("wait");
  7295. }
  7296. //Teleportation
  7297. warp_name = string.toLowerCase(arg0);
  7298. warp_loc = warp.get(warp_name);
  7299. if(warp_loc == null) {
  7300. msg.prefix(player, prefix_commands, "Warpname doesn´t exist.");
  7301. goto("wait");
  7302. }
  7303. if(!perm.has("warp.create", player)) {
  7304. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7305. if(world.isGamesName(world_name)) {
  7306. msg.prefix(player, prefix_commands, "You can´t teleport in this world.");
  7307. goto("wait");
  7308. }
  7309. world_name = world.getName(loc.getWorld(warp_loc));
  7310. if(world.isGamesName(world_name)) {
  7311. msg.prefix(player, prefix_commands, "You can´t teleport to this world.");
  7312. goto("wait");
  7313. }
  7314. }
  7315. if(player.teleport(player, warp_loc, true)) {
  7316. msg.prefix(player, prefix_commands, string.concat("You have been teleported to warp §7", warp_name, "."));
  7317. }
  7318. goto("wait");
  7319. @databank
  7320. if(size == 0) {
  7321. @databankhelp
  7322. msg.prefix(player, prefix_commands, "/databank...");
  7323. msg.string(player, "§6 - showtables §rShows all tables");
  7324. msg.string(player, "§6 - showfields §rShows fields from a table");
  7325. msg.string(player, "§6 - showdatatypes §rShows dataypes from a table");
  7326. goto("wait");
  7327. }
  7328. arg0 = string.toLowerCase(list.getIndex(args, 0));
  7329. if(arg0 == "showtables") {
  7330. msg.string(player, string.getSpacer());
  7331. stmt = databank.prepare("SHOW TABLES");
  7332. result = databank.execute(stmt);
  7333. while(databank.next(result)) {
  7334. msg.string(player, databank.getString(result, 1));
  7335. }
  7336. databank.close(result);
  7337. databank.close(stmt);
  7338. goto("wait");
  7339. }
  7340. if(arg0 == "showfields") {
  7341. if(size < 2) {
  7342. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  7343. goto("wait");
  7344. }
  7345. table = list.getIndex(args, 1);
  7346. if(!databank.isExistingTable(table)) {
  7347. msg.prefix(player, prefix_commands, "This in no existing table.");
  7348. goto("wait");
  7349. }
  7350. msg.string(player, string.getSpacer());
  7351. fields = databank.getTableFields(table);
  7352. iter = iterator(fields);
  7353. while(hasNext(iter)) {
  7354. msg.string(player, next(iter));
  7355. }
  7356. goto("wait");
  7357. }
  7358. if(arg0 == "showdatatypes") {
  7359. if(size < 2) {
  7360. msg.prefix(player, prefix_commands, "/databank showdatatypes <table>");
  7361. goto("wait");
  7362. }
  7363. table = list.getIndex(args, 1);
  7364. if(!databank.isExistingTable(table)) {
  7365. msg.prefix(player, prefix_commands, "This in no existing table.");
  7366. goto("wait");
  7367. }
  7368. msg.string(player, string.getSpacer());
  7369. msg.string(player, databank.getTableDatatypes(table));
  7370. goto("wait");
  7371. }
  7372. goto("databankhelp");
  7373. @seen
  7374. if(size != 1) {
  7375. msg.prefix(player, prefix_commands, "/seen <player>");
  7376. goto("wait");
  7377. }
  7378. seen_name = list.getIndex(args, 0);
  7379. seen_uuid = player.getUuid(seen_name);
  7380. if(seen_uuid == null) {
  7381. msg.prefix(player, prefix_commands, "This player has never been online.");
  7382. goto("wait");
  7383. }
  7384. if(read.player(seen_name) != null) {
  7385. msg.prefix(player, prefix_commands, "This player is online.");
  7386. goto("wait");
  7387. }
  7388. seenStatement = databank.prepare("SELECT MAX(leave_time) FROM playtime WHERE player_id = ?;");
  7389. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  7390. result = databank.execute(seenStatement);
  7391. if(databank.next(result)) {
  7392. time = databank.getLong(result, 1);
  7393. msg.prefix(player, prefix_commands, string.concat(seen_name, " was seen at §e", time.getString(time), "."));
  7394. } else {
  7395. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  7396. }
  7397. databank.close(result);
  7398. databank.close(seenStatement);
  7399. goto("wait");
  7400. @lastseen
  7401. if(size != 1) {
  7402. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  7403. goto("wait");
  7404. }
  7405. amount = list.getIndex(args, 0);
  7406. if(!isDouble(amount)) {
  7407. msg.prefix(sender, prefix_commands, "Number expected.");
  7408. goto("wait");
  7409. }
  7410. if(amount < 1) {
  7411. msg.prefix(sender, prefix_commands, "Positive number expected.");
  7412. goto("wait");
  7413. }
  7414. modTimer(-5);
  7415. msg.prefix(sender, prefix_commands, "These players were last seen:");
  7416. table = table.new("§f", 12, 12);
  7417. msg.string(sender, table.getStart(table));
  7418. msg.string(sender, table.get(table, "Player", "Date"));
  7419. msg.string(sender, table.getMiddle(table));
  7420. lastseenStatement = databank.prepare("SELECT player_id, MAX(leave_time) AS max_time FROM playtime GROUP BY player_id ORDER BY max_time DESC LIMIT ?;");
  7421. databank.setInt(lastseenStatement, 1, amount);
  7422. result = databank.execute(lastseenStatement);
  7423. while(databank.next(result)) {
  7424. id = databank.getInt(result, 1);
  7425. time = databank.getLong(result, 2);
  7426. msg.string(sender, table.get(table, string.concat("§a", player.getNameFromId(id)), string.concat("§e", time.getString(time))));
  7427. }
  7428. msg.string(sender, table.getEnd(table));
  7429. databank.close(result);
  7430. databank.close(lastseenStatement);
  7431. goto("wait");
  7432. @feed
  7433. if(size > 1) {
  7434. msg.prefix(player, prefix_commands, "/feed [player]");
  7435. goto("wait");
  7436. }
  7437. if(size == 0) {
  7438. p = player;
  7439. }
  7440. if(size == 1) {
  7441. p_name = list.getIndex(args, 0);
  7442. p = read.player(p_name);
  7443. if(p == null) {
  7444. msg.prefix(player, prefix_commands, "This player is not online.");
  7445. goto("wait");
  7446. }
  7447. if(player != p) {
  7448. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " has been feed."));
  7449. }
  7450. }
  7451. player.setHunger(p, 20);
  7452. player.setSaturation(p, 5);
  7453. msg.prefix(p, prefix_commands, "You have been feed.");
  7454. goto("wait");
  7455. @tempfly
  7456. if(size < 2) {
  7457. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  7458. goto("wait");
  7459. }
  7460. p_name = list.getIndex(args, 0);
  7461. if(!checkIfEverOnline(p_name)) {
  7462. msg.prefix(sender, prefix_commands, "This player has never been online.");
  7463. goto("wait");
  7464. }
  7465. p = read.player(p_name);
  7466. if(p == null) {
  7467. msg.prefix(sender, prefix_commands, "This player is not online.");
  7468. goto("wait");
  7469. }
  7470. p_name = player.getName(player.getUuid(p_name));
  7471. if(player.hasMinigame(p)) {
  7472. msg.prefix(player, prefix_commands, "This player can´t fly now.");
  7473. goto("wait");
  7474. }
  7475. sec = list.getIndex(args, 1);
  7476. if(!isDouble(sec) || sec < 0) {
  7477. msg.prefix(sender, prefix_commands, "Positive number expected.");
  7478. goto("wait");
  7479. }
  7480. msg.prefix(sender, prefix_commands, string.concat(p_name, " can now fly for ", string.number(sec), " seconds."));
  7481. msg.prefix(p, prefix_commands, string.concat("You can now fly for ", string.number(sec), " seconds."));
  7482. player.setFly(p, true);
  7483. duration = sec * 20;
  7484. data.setTimer(p, "fly", duration);
  7485. //status.addTimed(player, 55, duration, "Fly");
  7486. goto("wait");
  7487. @fly
  7488. if(size > 2) {
  7489. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  7490. goto("wait");
  7491. }
  7492. if(size >= 1) {
  7493. if(!perm.has("fly.other", player)) {
  7494. perm.no("fly.other", player);
  7495. goto("wait");
  7496. }
  7497. p_name = list.getIndex(args, 0);
  7498. p = read.player(p_name);
  7499. if(p == null) {
  7500. msg.prefix(player, prefix_commands, "This player is not online.");
  7501. goto("wait");
  7502. }
  7503. } else {
  7504. p = player;
  7505. }
  7506. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7507. if(world.isGamesName(world_name)) {
  7508. if(player.hasMinigame(p) || (perm.has("fly", p) && !perm.has("isTeam", p))) {
  7509. if(size == 2) {
  7510. msg.prefix(player, prefix_commands, "This player can´t fly now.");
  7511. } else {
  7512. msg.prefix(player, prefix_commands, "You can´t fly now.");
  7513. }
  7514. goto("wait");
  7515. }
  7516. }
  7517. if(size < 2) {
  7518. new_state = player.toggleFly(p);
  7519. } else {
  7520. new_state = false;
  7521. if(list.getIndex(args, 1) == "on") {
  7522. new_state = true;
  7523. }
  7524. player.setFly(p, new_state);
  7525. }
  7526. if(new_state) {
  7527. msg.prefix(p, prefix_commands, "You can fly now.");
  7528. if(player != p) {
  7529. p_name = player.getName(p);
  7530. msg.prefix(player, prefix_commands, string.concat(p_name, " can fly now."));
  7531. }
  7532. } else {
  7533. msg.prefix(p, prefix_commands, "You can´t fly anymore.");
  7534. if(player != p) {
  7535. p_name = player.getName(p);
  7536. msg.prefix(player, prefix_commands, string.concat(p_name, " can´t fly anymore."));
  7537. }
  7538. }
  7539. goto("wait");
  7540. @tppos
  7541. if(size < 3 || size > 5) {
  7542. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  7543. goto("wait");
  7544. }
  7545. x = list.getIndex(args, 0);
  7546. y = list.getIndex(args, 1);
  7547. z = list.getIndex(args, 2);
  7548. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  7549. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  7550. goto("wait");
  7551. }
  7552. if(size >= 4) {
  7553. worldname = list.getIndex(args, 3);
  7554. world = world.get(worldname);
  7555. if(world == null) {
  7556. msg.prefix(player, prefix_commands, "This world is not loaded.");
  7557. goto("wait");
  7558. }
  7559. } else {
  7560. world = loc.getWorld(entity.getLocation(player));
  7561. }
  7562. if(x < -32000) {
  7563. x = -32000;
  7564. } elseif(x > 32000) {
  7565. x = 32000;
  7566. }
  7567. if(y < -64) {
  7568. y = -64;
  7569. } elseif(y > 319) {
  7570. y = 319;
  7571. }
  7572. if(z < -32000) {
  7573. z = -32000;
  7574. } elseif(z > 32000) {
  7575. z = 32000;
  7576. }
  7577. location = loc.new(world, x, y, z);
  7578. if(size == 5) {
  7579. p_name = list.getIndex(args, 4);
  7580. p = read.player(p_name);
  7581. if(p == null) {
  7582. msg.prefix(player, prefix_commands, "This player is not online.");
  7583. goto("wait");
  7584. }
  7585. } else {
  7586. p = player;
  7587. }
  7588. if(player.hasMinigame(p)) {
  7589. if(size == 5) {
  7590. msg.prefix(player, prefix_commands, "This player can´t be teleported now.");
  7591. goto("wait");
  7592. }
  7593. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  7594. goto("wait");
  7595. }
  7596. if(player.teleport(p, location, true)) {
  7597. if(player != p) {
  7598. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was teleported."));
  7599. }
  7600. }
  7601. goto("wait");
  7602. @back
  7603. if(size > 0) {
  7604. msg.prefix(player, prefix_commands, "/back");
  7605. goto("wait");
  7606. }
  7607. if(!player.canTeleport(player)) {
  7608. msg.prefix(player, prefix_commands, "You can´t teleport now.");
  7609. goto("wait");
  7610. }
  7611. hasPerms = perm.has("isTeam", player);
  7612. if(!hasPerms) {
  7613. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7614. if(world.isGamesName(world_name)) {
  7615. msg.prefix(player, prefix_commands, "You can´t use /back in this world.");
  7616. goto("wait");
  7617. }
  7618. }
  7619. location = player.getBackPos(player);
  7620. if(location == null) {
  7621. msg.prefix(player, prefix_commands, "No back-location available.");
  7622. goto("wait");
  7623. }
  7624. world = loc.getWorld(location);
  7625. if(world == null) {
  7626. msg.prefix(player, prefix_commands, "This world is not loaded.");
  7627. goto("wait");
  7628. }
  7629. if(!hasPerms) {
  7630. world_name = world.getName(world);
  7631. if(world.isGamesName(world_name)) {
  7632. msg.prefix(player, prefix_commands, "You can´t teleport to this world.");
  7633. goto("wait");
  7634. }
  7635. }
  7636. player.teleport(player, location, true);
  7637. goto("wait");
  7638. @clan
  7639. if(size == 0) {
  7640. @clanhelp
  7641. msg.prefix(player, prefix_clan, "/clan...");
  7642. msg.string(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  7643. msg.string(player, "§2 - list §rLists all clans");
  7644. msg.string(player, "");
  7645. msg.string(player, "§2 - create <name> <tag> §rCreates a clan. Costs §64096 §rsnuvis.");
  7646. msg.string(player, "§2 - invite <name> §rInvites a player");
  7647. msg.string(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  7648. msg.string(player, "");
  7649. msg.string(player, "§2 - kick <name> §rKicks a player");
  7650. msg.string(player, "§2 - leader <name> §rPromote to clan-leader");
  7651. msg.string(player, "§2 - mod <name> §rPromote to clan-mod");
  7652. msg.string(player, "§2 - degrade <name> §rDemote a clan-mod");
  7653. msg.string(player, "§2 - leave §rLeave a clan");
  7654. msg.string(player, "");
  7655. msg.string(player, "§2 - rename <name> <tag> §rRenames a clan. Costs §664 §rsnuvis.");
  7656. msg.string(player, "§2 - setspawn §rSets a clan-spawn");
  7657. msg.string(player, "§2 - spawn §rTeleports to clan-spawn");
  7658. msg.string(player, "§2 - disband §rDisband a clan");
  7659. msg.string(player, "");
  7660. msg.string(player, "§2 - deposit <money> §rDeposit money to the clan account");
  7661. msg.string(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  7662. msg.string(player, "§2 - msg <message> §rSends a clan-message");
  7663. msg.string(player, "§2 - mail <message> §rSends a clan-mail");
  7664. msg.string(player, "§2 - shout <message> §rSends a message to all online players. Costs §664 §rsnuvis.");
  7665. msg.string(player, "§2 - party §rInvites all online members to a party");
  7666. goto("wait");
  7667. }
  7668. arg0 = string.toLowerCase(list.getIndex(args, 0));
  7669. if(arg0 == "invite") {
  7670. if(size != 2) {
  7671. msg.prefix(player, prefix_commands, "/clan invite <name>");
  7672. goto("wait");
  7673. }
  7674. if(!player.isInClan(player)) {
  7675. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7676. goto("wait");
  7677. }
  7678. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7679. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7680. goto("wait");
  7681. }
  7682. p_name = list.getIndex(args, 1);
  7683. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  7684. msg.prefix(player, prefix_clan, "You can´t invite yourself.");
  7685. goto("wait");
  7686. }
  7687. if(!checkIfEverOnline(p_name)) {
  7688. msg.prefix(sender, prefix_clan, "This player has never been online.");
  7689. goto("wait");
  7690. }
  7691. if(!isOnline(p_name)) {
  7692. msg.prefix(player, prefix_clan, "This player has to be online.");
  7693. goto("wait");
  7694. }
  7695. p = read.player(p_name);
  7696. if(player.isClanMember(player)) {
  7697. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  7698. goto("wait");
  7699. }
  7700. clan_id = player.getClanId(player);
  7701. p_id = player.getId(p);
  7702. if(player.hasClanInvitation(p_id, clan_id)) {
  7703. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  7704. goto("wait");
  7705. }
  7706. player.addClanInvitation(p_id, clan_id);
  7707. clan_name = clan.getName(clan_id);
  7708. msg.prefix(player, prefix_clan, string.concat("You invited §7", p_name, "§r to your clan."));
  7709. msg.prefix(p, prefix_clan, string.concat("You got an clan invitation by §7", clan_name, "§r."));
  7710. msg.string(p, string.getClickText("§r[§aAccept§r]", string.concat("/clan accept ", clan_id)));
  7711. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  7712. goto("wait");
  7713. }
  7714. if(arg0 == "accept") {
  7715. if(size != 2) {
  7716. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  7717. goto("wait");
  7718. }
  7719. if(player.isInClan(player)) {
  7720. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7721. goto("wait");
  7722. }
  7723. arg1 = list.getIndex(args, 1);
  7724. if(isDouble(arg1)) {
  7725. clan_id = arg1;
  7726. clan_name = clan.getName(clan_id);
  7727. if(clan_name == null) {
  7728. msg.prefix(player, prefix_clan, "Unknown clan.");
  7729. goto("wait");
  7730. }
  7731. } else {
  7732. clan_id = clan.getIdFromName(arg1);
  7733. if(clan_id == null) {
  7734. clan_id = clan.getIdFromTag(arg1);
  7735. if(clan_id == null) {
  7736. msg.prefix(player, prefix_clan, "Unknown clan.");
  7737. goto("wait");
  7738. }
  7739. }
  7740. }
  7741. player_id = player.getId(player);
  7742. if(!player.hasClanInvitation(player_id, clan_id)) {
  7743. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  7744. goto("wait");
  7745. }
  7746. clan.addMember(clan_id, player, "member");
  7747. player.setHeadName(player);
  7748. clan.msg(clan_id, string.concat("§7", player.getName(player), "§r joined the clan."));
  7749. msg.prefix(player, prefix_clan, string.concat("You joined §7", clan_name, "§r."));
  7750. clan_size = clan.getMembersAmount(clan_id);
  7751. if(clan_size >= 15) {
  7752. rank.offerClan(clan_id, "rank.lord");
  7753. } elseif(clan_size >= 10) {
  7754. rank.offerClan(clan_id, "rank.chief");
  7755. } elseif(clan_size >= 5) {
  7756. rank.offerClan(clan_id, "rank.commander");
  7757. }
  7758. goto("wait");
  7759. }
  7760. if(arg0 == "create") {
  7761. if(size != 3) {
  7762. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  7763. goto("wait");
  7764. }
  7765. if(player.isInClan(player)) {
  7766. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7767. goto("wait");
  7768. }
  7769. clan_name = list.getIndex(args, 1);
  7770. if(string.length(clan_name) > 20) {
  7771. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7772. goto("wait");
  7773. }
  7774. if(!string.onlyletters(clan_name)) {
  7775. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7776. goto("wait");
  7777. }
  7778. if(clan.isExistingName(clan_name)) {
  7779. msg.prefix(player, prefix_clan, "This name already exists.");
  7780. goto("wait");
  7781. }
  7782. clan_tag = list.getIndex(args, 2);
  7783. tag_length = string.length(clan_tag);
  7784. if(tag_length < 3 || tag_length > 4) {
  7785. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7786. goto("wait");
  7787. }
  7788. if(!string.onlyletters(clan_tag)) {
  7789. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7790. goto("wait");
  7791. }
  7792. if(clan.isExistingTag(clan_tag)) {
  7793. msg.prefix(player, prefix_clan, "This tag already exists.");
  7794. goto("wait");
  7795. }
  7796. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  7797. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  7798. goto("wait");
  7799. }
  7800. money.sub(player, 4096);
  7801. clan_id = clan.create(clan_name, clan_tag);
  7802. clan.addMember(clan_id, player, "leader");
  7803. player.setHeadName(player);
  7804. msg.prefix(player, prefix_clan, "Clan successful created.");
  7805. goto("wait");
  7806. }
  7807. if(arg0 == "info") {
  7808. if(size == 1) {
  7809. if(!player.isInClan(player)) {
  7810. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  7811. goto("wait");
  7812. }
  7813. clan_id = player.getClanId(player);
  7814. clan_name = clan.getName(clan_id);
  7815. clan_tag = clan.getTag(clan_id);
  7816. }
  7817. if(size == 2) {
  7818. arg1 = list.getIndex(args, 1);
  7819. if(isDouble(arg1)) {
  7820. clan_id = arg1;
  7821. clan_name = clan.getName(clan_id);
  7822. if(clan_name == null) {
  7823. msg.prefix(player, prefix_clan, "Unknown clan.");
  7824. goto("wait");
  7825. }
  7826. } else {
  7827. clan_id = clan.getIdFromName(arg1);
  7828. if(clan_id == null) {
  7829. clan_id = clan.getIdFromTag(arg1);
  7830. if(clan_id == null) {
  7831. msg.prefix(player, prefix_clan, "Unknown clan.");
  7832. goto("wait");
  7833. }
  7834. }
  7835. clan_name = clan.getName(clan_id);
  7836. }
  7837. clan_tag = clan.getTag(clan_id);
  7838. }
  7839. list = clan.getMembersList(clan_id);
  7840. mod_list = list.new();
  7841. members_list = list.new();
  7842. iter = iterator(list);
  7843. while(hasNext(iter)) {
  7844. player_uuid = next(iter);
  7845. player_name = player.getName(player_uuid);
  7846. player_id = player.getId(player_uuid);
  7847. if(player.isClanLeader(player_id)) {
  7848. leader = player_name;
  7849. } else {
  7850. if(player.isClanMod(player_id)) {
  7851. list.add(mod_list, player_name);
  7852. } else {
  7853. list.add(members_list, player_name);
  7854. }
  7855. }
  7856. }
  7857. if(list.getSize(mod_list) == 0) {
  7858. mods = "-";
  7859. } else {
  7860. mods = string.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  7861. }
  7862. if(list.getSize(members_list) == 0) {
  7863. members = "-";
  7864. } else {
  7865. members = string.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  7866. }
  7867. msg.string(player, string.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", string.number(clan_id), ")"));
  7868. msg.string(player, "§6Leader");
  7869. msg.string(player, leader);
  7870. msg.string(player, "§6Mods");
  7871. msg.string(player, mods);
  7872. msg.string(player, "§6Members");
  7873. msg.string(player, members);
  7874. msg.string(player, "§6Money");
  7875. msg.string(player, string.number(clan.getMoney(clan_id)));
  7876. goto("wait");
  7877. }
  7878. if(arg0 == "rename") {
  7879. if(!player.isInClan(player)) {
  7880. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7881. goto("wait");
  7882. }
  7883. if(!player.isClanLeader(player)) {
  7884. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7885. goto("wait");
  7886. }
  7887. if(size != 3) {
  7888. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  7889. goto("wait");
  7890. }
  7891. clan_name = list.getIndex(args, 1);
  7892. if(string.length(clan_name) > 20) {
  7893. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7894. goto("wait");
  7895. }
  7896. if(!string.onlyletters(clan_name)) {
  7897. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7898. goto("wait");
  7899. }
  7900. if(clan.isExistingName(clan_name)) {
  7901. msg.prefix(player, prefix_clan, "This name already exists.");
  7902. goto("wait");
  7903. }
  7904. clan_tag = list.getIndex(args, 2);
  7905. tag_length = string.length(clan_tag);
  7906. if(tag_length < 3 || tag_length > 4) {
  7907. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7908. goto("wait");
  7909. }
  7910. if(!string.onlyletters(clan_tag)) {
  7911. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7912. goto("wait");
  7913. }
  7914. if(clan.isExistingTag(clan_tag)) {
  7915. msg.prefix(player, prefix_clan, "This tag already exists.");
  7916. goto("wait");
  7917. }
  7918. clan_id = player.getClanId(player);
  7919. if(clan.getMoney(clan_id) < 64) {
  7920. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7921. goto("wait");
  7922. }
  7923. clan.subMoney(clan_id, 64);
  7924. clan.setName(clan_id, clan_name);
  7925. clan.setTag(clan_id, clan_tag);
  7926. clan.msg(clan_id, string.concat("Clan renamed to §7", clan_name, "§r."));
  7927. //New tag for online players
  7928. clan.updateHeadNames(clan_id);
  7929. goto("wait");
  7930. }
  7931. if(arg0 == "msg") {
  7932. if(!player.isInClan(player)) {
  7933. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7934. goto("wait");
  7935. }
  7936. if(size < 2) {
  7937. msg.prefix(player, prefix_commands, "/clan msg <message>");
  7938. goto("wait");
  7939. }
  7940. clan_id = player.getClanId(player);
  7941. clan.msg(clan_id, string.concat(player.getName(player), ": ", string.concatList(args, " ", 1, size - 1)));
  7942. goto("wait");
  7943. }
  7944. if(arg0 == "mail") {
  7945. if(!player.isInClan(player)) {
  7946. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7947. goto("wait");
  7948. }
  7949. if(size < 2) {
  7950. msg.prefix(player, prefix_commands, "/clan mail <message>");
  7951. goto("wait");
  7952. }
  7953. if(player.isClanMember(player)) {
  7954. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7955. goto("wait");
  7956. }
  7957. clan_id = player.getClanId(player);
  7958. clan.mail(clan_id, player.getName(player), string.concatList(args, " ", 1, size - 1));
  7959. goto("wait");
  7960. }
  7961. if(arg0 == "shout") {
  7962. if(!player.isInClan(player)) {
  7963. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7964. goto("wait");
  7965. }
  7966. if(size < 2) {
  7967. msg.prefix(player, prefix_commands, "/clan shout <message>");
  7968. goto("wait");
  7969. }
  7970. if(player.isClanMember(player)) {
  7971. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7972. goto("wait");
  7973. }
  7974. clan_id = player.getClanId(player);
  7975. if(clan.getMoney(clan_id) < 64) {
  7976. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7977. goto("wait");
  7978. }
  7979. clan.subMoney(clan_id, 64);
  7980. msg.prefix("online", prefix_clan, string.concat(clan.getTag(clan_id), ": ", string.concatList(args, " ", 1, size - 1)));
  7981. goto("wait");
  7982. }
  7983. if(arg0 == "deposit") {
  7984. if(!player.isInClan(player)) {
  7985. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7986. goto("wait");
  7987. }
  7988. if(size != 2) {
  7989. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  7990. goto("wait");
  7991. }
  7992. money = list.getIndex(args, 1);
  7993. if(!isDouble(money) || money < 0) {
  7994. msg.prefix(player, prefix_clan, "Positive number expected.");
  7995. goto("wait");
  7996. }
  7997. if(!hasEnoughMoney(player, money)) {
  7998. msg.prefix(player, prefix_clan, "You can´t transfer more money than you have.");
  7999. goto("wait");
  8000. }
  8001. clan_id = player.getClanId(player);
  8002. clan.addMoney(clan_id, money);
  8003. money.sub(player, money);
  8004. clan.msg(clan_id, string.concat("§7", player.getName(player), "§r transferred §7", string.number(money), "§r snuvis."));
  8005. goto("wait");
  8006. }
  8007. if(arg0 == "party") {
  8008. counter = 0;
  8009. clan_id = player.getClanId(player);
  8010. list = clan.getMembersList(clan_id);
  8011. iter = iterator(list);
  8012. while(hasNext(iter)) {
  8013. p = player.get(next(iter));
  8014. if(p != null) {
  8015. temp = party.invitePlayer(player, p);
  8016. if(temp == true) {
  8017. counter++;
  8018. }
  8019. }
  8020. }
  8021. msg.prefix(player, prefix_clan, string.concat(string.number(counter), " online clan members invited to a party."));
  8022. goto("wait");
  8023. }
  8024. if(arg0 == "withdraw") {
  8025. if(!player.isInClan(player)) {
  8026. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8027. goto("wait");
  8028. }
  8029. if(!player.isClanLeader(player)) {
  8030. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8031. goto("wait");
  8032. }
  8033. if(size != 2) {
  8034. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  8035. goto("wait");
  8036. }
  8037. money = list.getIndex(args, 1);
  8038. if(!isDouble(money) || money < 0) {
  8039. msg.prefix(player, prefix_clan, "Positive number expected.");
  8040. goto("wait");
  8041. }
  8042. clan_id = player.getClanId(player);
  8043. clan_money = clan.getMoney(clan_id);
  8044. if(clan_money < money) {
  8045. msg.prefix(player, prefix_clan, string.concat("There are only §7", string.number(clan_money), "§r snuvis on the clan account."));
  8046. goto("wait");
  8047. }
  8048. clan.subMoney(clan_id, money);
  8049. money.add(player, money);
  8050. msg.prefix(player, prefix_clan, string.concat("You have withdrawn §7", string.number(money), "§r snuvis."));
  8051. goto("wait");
  8052. }
  8053. if(arg0 == "leader") {
  8054. if(!player.isInClan(player)) {
  8055. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8056. goto("wait");
  8057. }
  8058. if(!player.isClanLeader(player)) {
  8059. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8060. goto("wait");
  8061. }
  8062. if(size != 2) {
  8063. msg.prefix(player, prefix_commands, "/clan leader <name>");
  8064. goto("wait");
  8065. }
  8066. p_name = list.getIndex(args, 1);
  8067. if(!checkIfEverOnline(p_name)) {
  8068. msg.prefix(player, prefix_clan, "This player has never been online.");
  8069. goto("wait");
  8070. }
  8071. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  8072. msg.prefix(player, prefix_clan, "You can´t do this for yourself.");
  8073. goto("wait");
  8074. }
  8075. p_uuid = player.getUuid(p_name);
  8076. p_id = player.getId(p_uuid);
  8077. if(!player.isSameClan(player, p_id)) {
  8078. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  8079. goto("wait");
  8080. }
  8081. player.setClanRole(p_id, "leader");
  8082. player.setClanRole(player, "mod");
  8083. clan_id = player.getClanId(player);
  8084. clan.msg(clan_id, string.concat("§7", p_name, "§r was set to clan leader."));
  8085. goto("wait");
  8086. }
  8087. if(arg0 == "mod") {
  8088. if(!player.isInClan(player)) {
  8089. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8090. goto("wait");
  8091. }
  8092. if(!player.isClanLeader(player)) {
  8093. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8094. goto("wait");
  8095. }
  8096. if(size != 2) {
  8097. msg.prefix(player, prefix_commands, "/clan leader <name>");
  8098. goto("wait");
  8099. }
  8100. p_name = list.getIndex(args, 1);
  8101. if(!checkIfEverOnline(p_name)) {
  8102. msg.prefix(player, prefix_clan, "This player has never been online.");
  8103. goto("wait");
  8104. }
  8105. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  8106. msg.prefix(player, prefix_clan, "You can´t do this for yourself.");
  8107. goto("wait");
  8108. }
  8109. p_uuid = player.getUuid(p_name);
  8110. p_id = player.getId(p_uuid);
  8111. if(!player.isSameClan(player, p_id)) {
  8112. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  8113. goto("wait");
  8114. }
  8115. player.setClanRole(p_id, "mod");
  8116. clan_id = player.getClanId(player);
  8117. clan.msg(clan_id, string.concat("§7", p_name, "§r was set to clan mod."));
  8118. goto("wait");
  8119. }
  8120. if(arg0 == "degrade") {
  8121. if(!player.isInClan(player)) {
  8122. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8123. goto("wait");
  8124. }
  8125. if(!player.isClanLeader(player)) {
  8126. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8127. goto("wait");
  8128. }
  8129. if(size != 2) {
  8130. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  8131. goto("wait");
  8132. }
  8133. p_name = list.getIndex(args, 1);
  8134. if(!checkIfEverOnline(p_name)) {
  8135. msg.prefix(player, prefix_clan, "This player has never been online.");
  8136. goto("wait");
  8137. }
  8138. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  8139. msg.prefix(player, prefix_clan, "You can´t do this for yourself.");
  8140. goto("wait");
  8141. }
  8142. p_uuid = player.getUuid(p_name);
  8143. p_id = player.getId(p_uuid);
  8144. if(!player.isSameClan(player, p_id)) {
  8145. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  8146. goto("wait");
  8147. }
  8148. player.setClanRole(p_id, "member");
  8149. clan_id = player.getClanId(player);
  8150. clan.msg(clan_id, string.concat("§7", p_name, "§r was degraded."));
  8151. goto("wait");
  8152. }
  8153. if(arg0 == "kick") {
  8154. if(!player.isInClan(player)) {
  8155. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8156. goto("wait");
  8157. }
  8158. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  8159. msg.prefix(player, prefix_clan, "You have no permission for this.");
  8160. goto("wait");
  8161. }
  8162. if(size != 2) {
  8163. msg.prefix(player, prefix_commands, "/clan kick <name>");
  8164. goto("wait");
  8165. }
  8166. p_name = list.getIndex(args, 1);
  8167. if(!checkIfEverOnline(p_name)) {
  8168. msg.prefix(player, prefix_clan, "This player has never been online.");
  8169. goto("wait");
  8170. }
  8171. if(string.toLowerCase(player.getName(player)) == string.toLowerCase(p_name)) {
  8172. msg.prefix(player, prefix_clan, "You can´t do this for yourself.");
  8173. goto("wait");
  8174. }
  8175. p_uuid = player.getUuid(p_name);
  8176. p_id = player.getId(p_uuid);
  8177. if(!player.isSameClan(player, p_id)) {
  8178. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  8179. goto("wait");
  8180. }
  8181. if(player.isClanLeader(p_id)) {
  8182. msg.prefix(player, prefix_clan, "You can´t kick the leader.");
  8183. goto("wait");
  8184. }
  8185. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  8186. msg.prefix(player, prefix_clan, "You can´t kick another mod.");
  8187. goto("wait");
  8188. }
  8189. clan_id = player.getClanId(player);
  8190. clan.msg(clan_id, string.concat("§7", p_name, "§r got kicked out of the clan."));
  8191. clan.removeMember(clan_id, p_id);
  8192. p = read.player(p_name);
  8193. if(p_name != null) {
  8194. player.setHeadName(p);
  8195. }
  8196. goto("wait");
  8197. }
  8198. if(arg0 == "disband") {
  8199. if(!player.isInClan(player)) {
  8200. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8201. goto("wait");
  8202. }
  8203. if(!player.isClanLeader(player)) {
  8204. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  8205. goto("wait");
  8206. }
  8207. clan_id = player.getClanId(player);
  8208. clan.msg(clan_id, "Clan disbanded.");
  8209. list = clan.getMembersList(clan_id);
  8210. clan.delete(clan_id);
  8211. iter = iterator(list);
  8212. while(hasNext(iter)) {
  8213. p = player.get(next(iter));
  8214. if(p != null) {
  8215. player.setHeadName(p);
  8216. }
  8217. }
  8218. goto("wait");
  8219. }
  8220. if(arg0 == "leave") {
  8221. if(!player.isInClan(player)) {
  8222. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8223. goto("wait");
  8224. }
  8225. if(player.isClanLeader(player)) {
  8226. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  8227. goto("wait");
  8228. }
  8229. clan_id = player.getClanId(player);
  8230. clan.msg(clan_id, string.concat("§7", player.getName(player), "§r left the clan."));
  8231. clan.removeMember(clan_id, player);
  8232. player.setHeadName(player);
  8233. goto("wait");
  8234. }
  8235. if(arg0 == "list") {
  8236. table = table.new("§b", 2, 6, 4, 5);
  8237. msg.string(player, table.getStart(table));
  8238. msg.string(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  8239. msg.string(player, table.getMiddle(table));
  8240. list = clan.getIdList();
  8241. iter = iterator(list);
  8242. while(hasNext(iter)) {
  8243. clan_id = next(iter);
  8244. name = clan.getName(clan_id);
  8245. tag = clan.getTag(clan_id);
  8246. amount = clan.getMembersAmount(clan_id);
  8247. msg.string(player, table.get(table, string.number(clan_id), name, tag, string.number(amount)));
  8248. }
  8249. msg.string(player, table.getEnd(table));
  8250. goto("wait");
  8251. }
  8252. if(arg0 == "setspawn") {
  8253. if(!player.isInClan(player)) {
  8254. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8255. goto("wait");
  8256. }
  8257. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  8258. msg.prefix(player, prefix_clan, "You have no permission for this.");
  8259. goto("wait");
  8260. }
  8261. clan_id = player.getClanId(player);
  8262. clan.setSpawn(clan_id, entity.getLocation(player));
  8263. msg.prefix(player, prefix_clan, "New clan spawn set.");
  8264. goto("wait");
  8265. }
  8266. if(arg0 == "spawn") {
  8267. if(!player.isInClan(player)) {
  8268. msg.prefix(player, prefix_clan, "You are not in a clan.");
  8269. goto("wait");
  8270. }
  8271. clan_id = player.getClanId(player);
  8272. spawn_loc = clan.getSpawn(clan_id);
  8273. if(spawn_loc == null) {
  8274. msg.prefix(player, prefix_clan, "No clan spawn set.");
  8275. goto("wait");
  8276. }
  8277. if(!perm.has("isTeam", player)) {
  8278. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  8279. if(world.isGamesName(world_name)) {
  8280. msg.prefix(player, prefix_commands, "You can´t teleport in this world.");
  8281. goto("wait");
  8282. }
  8283. }
  8284. player.teleport(player, spawn_loc, true);
  8285. goto("wait");
  8286. }
  8287. goto("clanhelp");
  8288. @remove_clan_invitation
  8289. list.removeIndex(clan_invitations, 0);
  8290. goto("wait");
  8291. @color
  8292. msg.string(player, string.getSpacer());
  8293. msg.string(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  8294. msg.string(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  8295. msg.string(player, " &l §l(bold)");
  8296. msg.string(player, " &m §m(strikethrough)");
  8297. msg.string(player, " &n §n(underline)");
  8298. msg.string(player, " &o §o(italic)");
  8299. goto("wait");
  8300. @comeback
  8301. if(player.isOnAdventure(player)) {
  8302. msg.prefix(player, prefix_skill, "Comeback not allowed during adventure.");
  8303. goto("wait");
  8304. }
  8305. amount = skill.getAmount(player, "skill.comeback");
  8306. if(amount <= 0) {
  8307. msg.prefix(player, prefix_skill, "You have not bought that skill.");
  8308. goto("wait");
  8309. }
  8310. loc = player.getDeathLoc(player);
  8311. if(loc == null) {
  8312. msg.prefix(player, prefix_skill, "No death location found.");
  8313. goto("wait");
  8314. }
  8315. new_amount = amount - 1;
  8316. skill.setAmount(player, "skill.comeback", new_amount);
  8317. msg.prefix(player, prefix_skill, string.concat("Used Comeback. New amount: ", string.number(new_amount)));
  8318. entity.teleport(player, loc);
  8319. player.resetDeathLoc(player);
  8320. goto("wait");
  8321. @setspawn
  8322. if(size != 1) {
  8323. @setspawnhelp
  8324. msg.prefix(player, prefix_commands, "/setspawn ...");
  8325. msg.string(player, "§6 - server");
  8326. msg.string(player, "§6 - games");
  8327. msg.string(player, "§6 - creative");
  8328. goto("wait");
  8329. }
  8330. arg0 = string.toLowerCase(list.getIndex(args, 0));
  8331. new_spawn = string.location(entity.getLocation(player));
  8332. config = getServerConfig();
  8333. if(arg0 == "games") {
  8334. config.set(config, "gamesspawn", new_spawn);
  8335. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  8336. } elseif(arg0 == "server") {
  8337. config.set(config, "serverspawn", new_spawn);
  8338. msg.prefix(player, prefix_commands, "New main Spawn set.");
  8339. } elseif(arg0 == "creative") {
  8340. config.set(config, "creativespawn", new_spawn);
  8341. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  8342. } else {
  8343. goto("setspawnhelp");
  8344. }
  8345. config.saveAsync(config);
  8346. goto("wait");
  8347. @heal
  8348. if(size > 1) {
  8349. msg.prefix(player, prefix_commands, "/heal [player]");
  8350. goto("wait");
  8351. }
  8352. if(size == 0) {
  8353. p = player;
  8354. } elseif(size == 1) {
  8355. p_name = list.getIndex(args, 0);
  8356. p = read.player(p_name);
  8357. if(p == null) {
  8358. msg.prefix(player, prefix_commands, "This player is not online.");
  8359. goto("wait");
  8360. }
  8361. if(player != p) {
  8362. msg.prefix(player, prefix_commands, string.concat(player.getName(p), " was healed."));
  8363. }
  8364. }
  8365. living.heal(p, 50);
  8366. player.setHunger(p, 20);
  8367. player.setSaturation(p, 5);
  8368. living.clearEffects(p);
  8369. entity.setBurning(p, 0);
  8370. msg.prefix(p, prefix_commands, "You have been healed.");
  8371. goto("wait");
  8372. @inv
  8373. if(size == 0) {
  8374. @invhelp
  8375. msg.prefix(player, prefix_commands, "/inv ...");
  8376. if(perm.has("inv.backups", player)) {
  8377. msg.string(player, "§6 - backups <player> §rLists backup invs of a player");
  8378. }
  8379. if(perm.has("inv.ignore", player)) {
  8380. msg.string(player, "§6 - ignore §rToggles inventory change on world change");
  8381. }
  8382. if(perm.has("inv.see", player)) {
  8383. msg.string(player, "§6 - see <player> §rOpens an inventory of a player");
  8384. }
  8385. if(perm.has("inv.reload", player)) {
  8386. msg.string(player, "§6 - reload <player> §rReloads an inventory of a player");
  8387. }
  8388. if(perm.has("inv.saveFor", player)) {
  8389. msg.string(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  8390. }
  8391. if(perm.has("inv.loadFrom", player)) {
  8392. msg.string(player, "§6 - loadFrom <player> <world> §rLoads an inventory of a player for you");
  8393. }
  8394. goto("wait");
  8395. }
  8396. arg0 = string.toLowerCase(list.getIndex(args, 0));
  8397. if(arg0 == "backups") {
  8398. if(!perm.has("inv.backups", player)) {
  8399. perm.no("inv.backups", player);
  8400. goto("wait");
  8401. }
  8402. if(size < 2) {
  8403. msg.prefix(player, prefix_commands, "/inv backups <player>");
  8404. goto("wait");
  8405. }
  8406. p_name = list.getIndex(args, 1);
  8407. p_uuid = player.getUuid(p_name);
  8408. if(p_uuid == null) {
  8409. msg.prefix(player, prefix_commands, "This player has never been online.");
  8410. goto("wait");
  8411. }
  8412. player_id = player.getId(p_uuid);
  8413. dir = file.new(string.concat("scripts/configs/inv_data/backup/", player_id));
  8414. if(!file.exists(dir)) {
  8415. msg.prefix(player, prefix_commands, "No backups available.");
  8416. goto("wait");
  8417. }
  8418. file_list = file.getList(dir);
  8419. if(list.getSize(file_list) == 0) {
  8420. msg.prefix(player, prefix_commands, "No backups available.");
  8421. goto("wait");
  8422. }
  8423. f_map = map.new();
  8424. table = table.new("§b", 3, 14);
  8425. msg.string(player, table.getStart(table));
  8426. msg.string(player, table.get(table, "#", p_name));
  8427. msg.string(player, table.getMiddle(table));
  8428. iter = iterator(file_list);
  8429. while(hasNext(iter)) {
  8430. f = next(iter);
  8431. f_name = file.getName(f);
  8432. split_array = string.split("_", f_name);
  8433. time_array = string.split("-", split_array[2]);
  8434. year = time_array[0];
  8435. month = time.getStringFromNumber(read.number(time_array[1]));
  8436. day = time.getStringFromNumber(read.number(time_array[2]));
  8437. hour = time.getStringFromNumber(read.number(time_array[3]));
  8438. minute = time.getStringFromNumber(read.number(time_array[4]));
  8439. second = time.getStringFromNumber(read.number(time_array[5]));
  8440. time_string = string.concat(day, ".", month, ".", year, " ", hour, ":", minute, ":", second);
  8441. map.add(f_map, read.number(split_array[1]), time_string);
  8442. }
  8443. for(i = 1; i <= 10; i++) {
  8444. time_string = map.get(f_map, i);
  8445. msg.string(player, table.get(table, string.number(i), time_string));
  8446. }
  8447. msg.string(player, table.getEnd(table));
  8448. goto("wait");
  8449. }
  8450. if(arg0 == "ignore") {
  8451. if(!perm.has("inv.ignore", player)) {
  8452. perm.no("inv.ignore", player);
  8453. goto("wait");
  8454. }
  8455. ignore = player.hasInvIgnore(player);
  8456. if(ignore == null) {
  8457. ignore = false;
  8458. }
  8459. if(ignore) {
  8460. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  8461. } else {
  8462. msg.prefix(player, prefix_commands, "You´ll keep your inventory on joining another world.");
  8463. }
  8464. player.invIgnore(player, !ignore);
  8465. goto("wait");
  8466. }
  8467. if(arg0 == "see") {
  8468. if(!perm.has("inv.see", player)) {
  8469. perm.no("inv.see", player);
  8470. goto("wait");
  8471. }
  8472. if(size < 2) {
  8473. msg.prefix(player, prefix_commands, "/inv see <player>");
  8474. goto("wait");
  8475. }
  8476. p_name = list.getIndex(args, 1);
  8477. p_uuid = player.getUuid(p_name);
  8478. if(p_uuid == null) {
  8479. msg.prefix(player, prefix_commands, "This player has never been online.");
  8480. goto("wait");
  8481. }
  8482. p = read.player(p_name);
  8483. if(p == null) {
  8484. msg.prefix(player, prefix_commands, "This player is not online.");
  8485. goto("wait");
  8486. }
  8487. inv.show(p, player);
  8488. goto("wait");
  8489. }
  8490. if(arg0 == "reload") {
  8491. if(!perm.has("inv.reload", player)) {
  8492. perm.no("inv.reload", player);
  8493. goto("wait");
  8494. }
  8495. if(size < 2) {
  8496. msg.prefix(player, prefix_commands, "/inv reload <player>");
  8497. goto("wait");
  8498. }
  8499. p_name = list.getIndex(args, 1);
  8500. p_uuid = player.getUuid(p_name);
  8501. if(p_uuid == null) {
  8502. msg.prefix(player, prefix_commands, "This player has never been online.");
  8503. goto("wait");
  8504. }
  8505. p = read.player(p_name);
  8506. if(p == null) {
  8507. msg.prefix(player, prefix_commands, "This player is not online.");
  8508. goto("wait");
  8509. }
  8510. world = loc.getWorld(entity.getLocation(p));
  8511. inv.loadFromPlayer(p, p, world);
  8512. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  8513. goto("wait");
  8514. }
  8515. if(arg0 == "savefor") {
  8516. if(size != 1 && size != 3) {
  8517. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  8518. goto("wait");
  8519. }
  8520. if(size == 1) {
  8521. for_player_or_id = player.getId(player);
  8522. world = loc.getWorld(entity.getLocation(player));
  8523. }
  8524. if(size == 3) {
  8525. if(!perm.has("inv.saveFor", player)) {
  8526. perm.no("inv.saveFor", player);
  8527. goto("wait");
  8528. }
  8529. p_name = list.getIndex(args, 1);
  8530. p_uuid = player.getUuid(p_name);
  8531. if(p_uuid == null) {
  8532. msg.prefix(player, prefix_commands, "This player has never been online.");
  8533. goto("wait");
  8534. }
  8535. p = read.player(p_name);
  8536. if(p != null) {
  8537. msg.prefix(player, prefix_commands, "This player is online. Use /inv see to change this inventory.");
  8538. goto("wait");
  8539. }
  8540. for_player_or_id = player.getId(p_uuid);
  8541. world_name = list.getIndex(args, 2);
  8542. world = world.get(world_name);
  8543. if(world == null) {
  8544. msg.prefix(player, prefix_world, "This world is not loaded.");
  8545. goto("wait");
  8546. }
  8547. }
  8548. inv.saveForPlayer(player, for_player_or_id, world);
  8549. msg.prefix(player, prefix_commands, "Inventory saved.");
  8550. goto("wait");
  8551. }
  8552. if(arg0 == "loadfrom") {
  8553. if(size != 1 && size != 3) {
  8554. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  8555. goto("wait");
  8556. }
  8557. if(size == 1) {
  8558. from_player_or_id = player.getId(player);
  8559. world = loc.getWorld(entity.getLocation(player));
  8560. }
  8561. if(size == 3) {
  8562. if(!perm.has("inv.loadFrom", player)) {
  8563. perm.no("inv.loadFrom", player);
  8564. goto("wait");
  8565. }
  8566. p_name = list.getIndex(args, 1);
  8567. p_uuid = player.getUuid(p_name);
  8568. if(p_uuid == null) {
  8569. msg.prefix(player, prefix_commands, "This player has never been online.");
  8570. goto("wait");
  8571. }
  8572. p = read.player(p_name);
  8573. if(p != null) {
  8574. msg.prefix(player, prefix_commands, "§cThis player is online. Loaded inventory can differ from /inv see!");
  8575. }
  8576. from_player_or_id = player.getId(p_uuid);
  8577. world_name = list.getIndex(args, 2);
  8578. world = world.get(world_name);
  8579. if(world == null) {
  8580. msg.prefix(player, prefix_world, "This world is not loaded.");
  8581. goto("wait");
  8582. }
  8583. }
  8584. inv.loadFromPlayer(player, from_player_or_id, world);
  8585. msg.prefix(player, prefix_commands, "Inventory loaded.");
  8586. goto("wait");
  8587. }
  8588. goto("wait");
  8589. @sponsor
  8590. msg.prefix(sender, prefix_commands, "Be a fancy sponsor and ...");
  8591. msg.string(sender, string.concat(" §a+ §cUse §dcolors §rand §bicons§r", icon.getGoldCoin(), icon.getCraftingTable(), icon.getHeart()));
  8592. msg.string(sender, " §a+ §rEquip your head with §b/hat");
  8593. msg.string(sender, " §a+ §rGet all online players in a party with §b/joinme");
  8594. msg.string(sender, " §a+ §rSet your own §bjoin, leave §rand §bdeath message");
  8595. goto("wait");
  8596. @dev
  8597. if(size == 0) {
  8598. @dev_syntax
  8599. msg.prefix(sender, prefix_commands, "/dev ...");
  8600. msg.string(sender, "§6 - boost §rBoosts you up to the clouds");
  8601. msg.string(sender, "§6 - debug <list/clear> §rManages logged debug messages");
  8602. msg.string(sender, "§6 - entities <world> §rLists all entities in a world");
  8603. msg.string(sender, "§6 - logo §rGives the Mundus Crassus logo on a banner");
  8604. msg.string(sender, "§6 - yeet §rThrows you in sight");
  8605. goto("wait");
  8606. }
  8607. arg0 = string.toLowerCase(list.getIndex(args, 0));
  8608. if(arg0 == "logo") {
  8609. player.giveItem(player, logo);
  8610. goto("wait");
  8611. }
  8612. if(arg0 == "boost") {
  8613. entity.setMotion(player, 0, 5, 0);
  8614. goto("wait");
  8615. }
  8616. if(arg0 == "yeet") {
  8617. if(size != 2){
  8618. msg.prefix(player, prefix_commands, "/dev yeet <strength>");
  8619. goto("wait");
  8620. }
  8621. yeet_strength = list.getIndex(args, 1);
  8622. yeet(player,math.abs(yeet_strength));
  8623. msg.string(player, "§4YEET");
  8624. goto("wait");
  8625. }
  8626. if(arg0 == "debug") {
  8627. arg1 = string.toLowerCase(list.getIndex(args, 1));
  8628. if(arg1 == "list") {
  8629. error_size = debug.getSize();
  8630. if(error_size == 0) {
  8631. msg.prefix(player, prefix_commands, "No debugs logged.");
  8632. goto("wait");
  8633. }
  8634. for(i = 0; i < error_size; i++) {
  8635. msg.string(player, debug.getIndex(i));
  8636. }
  8637. goto("wait");
  8638. }
  8639. if(arg1 == "clear") {
  8640. debug.clear();
  8641. msg.prefix(player, prefix_commands, "All logged debugs deleted.");
  8642. goto("wait");
  8643. }
  8644. goto("wait");
  8645. }
  8646. if(arg0 == "entities") {
  8647. if(size != 2) {
  8648. msg.prefix(player, prefix_commands, "/dev entities <world>");
  8649. goto("wait");
  8650. }
  8651. world_name = string.toLowerCase(list.getIndex(args, 1));
  8652. world = world.get(world_name);
  8653. if(world == null) {
  8654. msg.prefix(player, prefix_world, "This world is not loaded.");
  8655. goto("wait");
  8656. }
  8657. list = world.getEntities(world);
  8658. size = list.getSize(list);
  8659. map = map.new();
  8660. living = 0;
  8661. for(i = 0; i < size; i++) {
  8662. element = list.getIndex(list, i);
  8663. if(isLiving(element)) {
  8664. living++;
  8665. entity_type = entity.getType(element);
  8666. n = map.get(map, entity_type);
  8667. if(n == null) {
  8668. map.add(map, entity_type, 1);
  8669. } else {
  8670. map.add(map, entity_type, n + 1);
  8671. }
  8672. }
  8673. }
  8674. msg.string(player, "§0-------------------------------------------------");
  8675. msg.string(player, string.concat("Living: ", living));
  8676. iter = map.iterator(map);
  8677. table = table.new("§b", 14, 14);
  8678. msg.string(player, table.getStart(table));
  8679. while(hasNext(iter)) {
  8680. element1 = next(iter);
  8681. if(hasNext(iter)) {
  8682. element2 = next(iter);
  8683. } else {
  8684. element2 = "";
  8685. }
  8686. msg.string(player, table.get(table, element1, element2));
  8687. }
  8688. msg.string(player, table.getEnd(table));
  8689. goto("wait");
  8690. }
  8691. goto("dev_syntax");
  8692. function yeet(player, strength){
  8693. array = entity.getLook(player);
  8694. x = array[0] * (math.log(strength) + 1);
  8695. y = math.abs(array[1]) * (math.log(strength) + 1);
  8696. z = array[2] * (math.log(strength) + 1);
  8697. entity.setMotion(player, x, y, z);
  8698. }
  8699. @memory
  8700. msg.prefix(sender, prefix_commands, string.concat("Used RAM: ", string.number(usedMemory()), " / ", string.number(math.round(allocatedMemory())), " MB"));
  8701. goto("wait");
  8702. @world
  8703. if(size == 0) {
  8704. @world_syntax
  8705. msg.prefix(sender, prefix_world, "/world ...");
  8706. msg.string(sender, "§b - info [world] §rShows info about a world");
  8707. msg.string(sender, "§b - tp <world> [player] §rTeleports a player to a world");
  8708. msg.string(sender, "§b - list §rShows all loaded worlds");
  8709. msg.string(sender, "§b - setspawn §rSets the spawn of a world");
  8710. msg.string(sender, "§b - diffi <world> <diffi> §rSets the difficulty of a world");
  8711. goto("wait");
  8712. }
  8713. arg0 = string.toLowerCase(list.getIndex(args, 0));
  8714. if(arg0 == "info") {
  8715. if(size == 1) {
  8716. if(!isPlayer(sender)) {
  8717. msg.string(sender, "Not possible on console.");
  8718. goto("wait");
  8719. }
  8720. world = loc.getWorld(entity.getLocation(player));
  8721. } else {
  8722. worldname = list.getIndex(args, 1);
  8723. world = world.get(worldname);
  8724. if(world == null) {
  8725. msg.prefix(sender, prefix_world, "This world is not loaded.");
  8726. goto("wait");
  8727. }
  8728. }
  8729. msg.string(sender, string.getSpacer());
  8730. msg.string(sender, string.concat("§6World: §r", world.getName(world)));
  8731. msg.string(sender, string.concat("§6Thunder: §r", world.hasThunder(world)));
  8732. msg.string(sender, string.concat("§6Rain: §r", world.hasRain(world)));
  8733. chunks = world.getLoadedChunks(world);
  8734. forced = 0;
  8735. for(i = 0; i < array.getSize(chunks); i++) {
  8736. if(world.isForceLoadedChunk(chunks[i])) {
  8737. forced++;
  8738. }
  8739. }
  8740. msg.string(sender, string.concat("§6Chunks: §r", string.number(forced), "/", string.number(array.getSize(chunks))));
  8741. time = world.getTime(world);
  8742. while(time >= 24000) {
  8743. time -= 24000;
  8744. }
  8745. msg.string(sender, string.concat("§6Time: §r", string.number(time)));
  8746. goto("wait");
  8747. }
  8748. if(arg0 == "tp") {
  8749. if(size < 2 || size > 3) {
  8750. msg.prefix(sender, prefix_world, "/world tp <world> [player]");
  8751. goto("wait");
  8752. }
  8753. if(size >= 2) {
  8754. world_name = string.toLowerCase(list.getIndex(args, 1));
  8755. world = world.get(world_name);
  8756. if(world == null) {
  8757. msg.prefix(sender, prefix_world, "This world is not loaded.");
  8758. goto("wait");
  8759. }
  8760. }
  8761. if(size > 2) {
  8762. p_name = list.getIndex(args, 2);
  8763. p = read.player(p_name);
  8764. if(p == null) {
  8765. msg.prefix(sender, prefix_world, "This player is not online.");
  8766. goto("wait");
  8767. }
  8768. } else {
  8769. if(!isPlayer(sender)) {
  8770. msg.string(sender, "Not possible on console.");
  8771. goto("wait");
  8772. }
  8773. p = sender;
  8774. }
  8775. if(!player.canTeleport(p)) {
  8776. if(size == 3) {
  8777. msg.prefix(sender, prefix_commands, "This player can´t be teleported now.");
  8778. goto("wait");
  8779. }
  8780. msg.prefix(sender, prefix_commands, "You can´t teleport now.");
  8781. goto("wait");
  8782. }
  8783. if(sender != p) {
  8784. msg.prefix(sender, prefix_world, string.concat(player.getName(p), " was teleported to the spawn of the world ", world_name, "."));
  8785. }
  8786. if(world_name == "games") {
  8787. loc = world.getGamesSpawn();
  8788. } elseif(world_name == "creative") {
  8789. loc = world.getCreativeSpawn();
  8790. } else {
  8791. loc = world.getSpawn(world);
  8792. }
  8793. player.teleport(p, loc, true);
  8794. goto("wait");
  8795. }
  8796. if(arg0 == "list") {
  8797. msg.prefix(sender, prefix_world, "Loaded worlds:");
  8798. worldlist = world.getAll();
  8799. for(i = 0; i < list.getSize(worldlist); i++) {
  8800. msg.string(sender, string.concat(" - ", world.getName(list.getIndex(worldlist, i))));
  8801. }
  8802. msg.string(sender, string.getSpacer());
  8803. goto("wait");
  8804. }
  8805. if(arg0 == "setspawn") {
  8806. if(!isPlayer(sender)) {
  8807. msg.string(sender, "Not possible on console.");
  8808. goto("wait");
  8809. }
  8810. location = entity.getLocation(sender);
  8811. world = loc.getWorld(location);
  8812. world.setSpawn(location, world);
  8813. msg.prefix(sender, prefix_world, string.concat("New spawn of the world ", world.getName(world), " set."));
  8814. goto("wait");
  8815. }
  8816. if(arg0 == "diffi") {
  8817. if(size != 3) {
  8818. msg.prefix(sender, prefix_world, "/world diffi <world> <diffi>");
  8819. goto("wait");
  8820. }
  8821. worldname = list.getIndex(args, 1);
  8822. world = world.get(worldname);
  8823. if(world == null) {
  8824. msg.prefix(sender, prefix_world, "This world is not loaded.");
  8825. goto("wait");
  8826. }
  8827. diffi_string = list.getIndex(args, 2);
  8828. if(!(diffi_string == "PEACEFUL" || diffi_string == "EASY" || diffi_string == "NORMAL" || diffi_string == "HARD")) {
  8829. msg.prefix(sender, prefix_world, "False input.");
  8830. goto("wait");
  8831. }
  8832. world.setDifficulty(world, diffi_string);
  8833. msg.prefix(sender, prefix_world, "Difficulty changed.");
  8834. goto("wait");
  8835. }
  8836. goto("world_syntax");
  8837. @giveup
  8838. script_id = quest.getFromPlayer(player);
  8839. if(script_id == null) {
  8840. msg.prefix(player, prefix_quest, "You are not in a quest.");
  8841. goto("wait");
  8842. }
  8843. script = script.getFromId(script_id);
  8844. if(script == null) {
  8845. msg.dev("Player used giveup on corrupt quest");
  8846. quest.removePlayer(player); //in case of corrupt quest
  8847. msg.prefix(player, prefix_quest, "You have no quest.");
  8848. goto("wait");
  8849. }
  8850. setScriptVar("player", player);
  8851. modTimer.scriptCallEvent("quest_term", script);
  8852. quest.term(script, player);
  8853. msg.prefix(player, prefix_quest, "Quest termed.");
  8854. goto("wait");
  8855. @leave
  8856. set = player.getMinigameIds(player);
  8857. iter = iterator(set);
  8858. if(hasNext(iter)) {
  8859. script_id = next(iter);
  8860. script = script.getFromId(script_id);
  8861. if(script == null) {
  8862. msg.dev(string.concat("Player left game without existing gamescript ", set));
  8863. 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.");
  8864. player.resetMinigames(player);
  8865. entity.teleport(player, world.getGamesSpawn());
  8866. goto("wait");
  8867. }
  8868. minigame.hub(script, player);
  8869. goto("wait");
  8870. }
  8871. msg.prefix(player, "§dScript", "You are not in a minigame.");
  8872. goto("wait");
  8873. function minigame.hub(script, player) {
  8874. script.setVar(script, "player", player);
  8875. modTimer.scriptCallEvent("player_giveup", script);
  8876. }
  8877. @jail
  8878. if(size != 1) {
  8879. msg.prefix(player, prefix_commands, "/jail <player>");
  8880. } else {
  8881. p_name = list.getIndex(args, 0);
  8882. if(!checkIfEverOnline(p_name)) {
  8883. msg.prefix(player, prefix_jail, "This player has never been online.");
  8884. goto("wait");
  8885. }
  8886. p_uuid = player.getUuid(p_name);
  8887. if(isJailed(p_uuid)) {
  8888. msg.prefix(player, prefix_jail, "This player is already jailed.");
  8889. goto("wait");
  8890. }
  8891. player_name = player.getName(player);
  8892. if(player_name == p_name) {
  8893. msg.prefix(player, prefix_jail, "Self-Jailing isn´t a good idea.");
  8894. goto("wait");
  8895. }
  8896. if(!isOnline(p_name)) {
  8897. msg.prefix(player, prefix_jail, "This player is not online.");
  8898. goto("wait");
  8899. }
  8900. p = read.player(p_name);
  8901. if(perm.has("jail", p)) {
  8902. msg.prefix(player, prefix_jail, "You can´t jail this player.");
  8903. goto("wait");
  8904. }
  8905. list.add(jailed_list, p_uuid);
  8906. msg.prefix(player, prefix_jail, string.concat(p_name, " wurde gejailt"));
  8907. showJail(p_name);
  8908. if(!jail_loop_active) {
  8909. sgoto(5, "jailloop");
  8910. }
  8911. }
  8912. goto("wait");
  8913. @unjail
  8914. if(size != 1) {
  8915. msg.prefix(player, prefix_commands, "/unjail <player>");
  8916. } else {
  8917. p_name = list.getIndex(args, 0);
  8918. if(!checkIfEverOnline(p_name)) {
  8919. msg.prefix(player, prefix_jail, "This player has never been online.");
  8920. goto("wait");
  8921. }
  8922. p_uuid = player.getUuid(p_name);
  8923. if(!isJailed(p_uuid)) {
  8924. msg.prefix(player, prefix_jail, "This player is not jailed.");
  8925. goto("wait");
  8926. }
  8927. list.remove(jailed_list, p_uuid);
  8928. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  8929. }
  8930. goto("wait");
  8931. function inv.show(from_player, to_player) {
  8932. player_inv = player.getInv(from_player);
  8933. inv = inv.new("222222222222222222222222222222222222222222222", text.new(string.concat("Inventory of ", player.getName(from_player))));
  8934. set.add($invseeids, inv.getId(inv));
  8935. setInvItem(inv, 0, living.getEquip(from_player, read.slot("HEAD")));
  8936. setInvItem(inv, 1, living.getEquip(from_player, read.slot("CHEST")));
  8937. setInvItem(inv, 2, living.getEquip(from_player, read.slot("LEGS")));
  8938. setInvItem(inv, 3, living.getEquip(from_player, read.slot("FEET")));
  8939. setInvItem(inv, 4, living.getOffHand(from_player));
  8940. for(slot = 0; slot <= 8; slot++) {
  8941. setInvItem(inv, slot + 36, inv.getItem(player_inv, slot));
  8942. }
  8943. for(slot = 9; slot <= 35; slot++) {
  8944. setInvItem(inv, slot, inv.getItem(player_inv, slot));
  8945. }
  8946. inv.open(inv, to_player);
  8947. }
  8948. function setInvItem(inv, slot, item) {
  8949. if(item == null || item.isAir(item)) {
  8950. return;
  8951. }
  8952. inv.setItem(inv, slot, item);
  8953. }
  8954. function rank.add(index, tech_rank, chat_rank) {
  8955. $rank_array[index, 0] = tech_rank;
  8956. $rank_array[index, 1] = chat_rank;
  8957. }
  8958. //--------------------------------------------------
  8959. //Vote-Utils
  8960. //--------------------------------------------------
  8961. function vote.register(name, time) {
  8962. uuid = player.getUuid(name);
  8963. if(uuid == null) {
  8964. stmt = databank.prepare("INSERT INTO votes (name, time) VALUES(?,?);");
  8965. databank.setString(stmt, 1, name);
  8966. databank.setLong(stmt, 2, time);
  8967. databank.workerExecute(stmt);
  8968. return;
  8969. }
  8970. stmt = databank.prepare("INSERT INTO votes (name, player_id, time) VALUES(?,?,?);");
  8971. id = player.getId(uuid);
  8972. databank.setString(stmt, 1, name);
  8973. databank.setInt(stmt, 2, id);
  8974. databank.setLong(stmt, 3, time);
  8975. databank.workerExecute(stmt);
  8976. }
  8977. //--------------------------------------------------
  8978. //LoginRequests-Utils
  8979. //--------------------------------------------------
  8980. function loginrequests.getPlayer(player_id, amount, result) {
  8981. list = list.new();
  8982. if(result == null) {
  8983. stmt = databank.prepare("SELECT player_id,time,result FROM login_requests WHERE player_id = ? ORDER BY TIME DESC LIMIT ?;");
  8984. databank.setInt(stmt, 1, player_id);
  8985. databank.setInt(stmt, 2, amount);
  8986. } else {
  8987. stmt = databank.prepare("SELECT player_id,time,result FROM login_requests WHERE player_id = ? AND result = ? ORDER BY TIME DESC LIMIT ?;");
  8988. databank.setInt(stmt, 1, player_id);
  8989. databank.setString(stmt, 2, result);
  8990. databank.setInt(stmt, 3, amount);
  8991. }
  8992. result = databank.execute(stmt);
  8993. while(databank.next(result)) {
  8994. a = array.new(3);
  8995. a[0] = databank.getInt(result, 1); //player_id
  8996. a[1] = databank.getLong(result, 2); //time
  8997. a[2] = databank.getString(result, 3); //result
  8998. list.add(list, a);
  8999. }
  9000. databank.close(stmt);
  9001. databank.close(result);
  9002. return list;
  9003. }
  9004. function loginrequests.getAll(amount, result) {
  9005. list = list.new();
  9006. if(result == null) {
  9007. stmt = databank.prepare("SELECT player_id,time,result FROM login_requests ORDER BY TIME DESC LIMIT ?;");
  9008. databank.setInt(stmt, 1, amount);
  9009. } else {
  9010. stmt = databank.prepare("SELECT player_id,time,result FROM login_requests WHERE result = ? ORDER BY TIME DESC LIMIT ?;");
  9011. databank.setString(stmt, 1, result);
  9012. databank.setInt(stmt, 2, amount);
  9013. }
  9014. result = databank.execute(stmt);
  9015. while(databank.next(result)) {
  9016. a = array.new(3);
  9017. a[0] = databank.getInt(result, 1); //player_id
  9018. a[1] = databank.getLong(result, 2); //time
  9019. a[2] = databank.getString(result, 3); //result
  9020. list.add(list, a);
  9021. }
  9022. databank.close(stmt);
  9023. databank.close(result);
  9024. return list;
  9025. }
  9026. //--------------------------------------------------
  9027. //Tip-Utils
  9028. //--------------------------------------------------
  9029. function tip.setLoop(tipp_key, boolean) {
  9030. stmt = databank.prepare("UPDATE tipps SET tipp_loop = ? WHERE tipp_key = ?;");
  9031. databank.setBool(stmt, 1, boolean);
  9032. databank.setString(stmt, 2, tipp_key);
  9033. databank.workerExecute(stmt);
  9034. }
  9035. function tip.remove(tipp_key) {
  9036. stmt = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  9037. databank.setString(stmt, 1, tipp_key);
  9038. databank.workerExecute(stmt);
  9039. }
  9040. function tip.getAll() {
  9041. list = list.new();
  9042. stmt = databank.prepare("SELECT * FROM tipps;");
  9043. result = databank.execute(stmt);
  9044. while(databank.next(result)) {
  9045. a = array.new(3);
  9046. a[0] = databank.getString(result, 1);
  9047. a[1] = databank.getString(result, 2);
  9048. a[2] = databank.getBool(result, 3);
  9049. list.add(list, a);
  9050. }
  9051. databank.close(stmt);
  9052. databank.close(result);
  9053. return list;
  9054. }
  9055. //--------------------------------------------------
  9056. //Databank-Utils
  9057. //--------------------------------------------------
  9058. function databank.isExistingTable(table) {
  9059. temp = false;
  9060. stmt = databank.prepare("SHOW TABLES");
  9061. result = databank.execute(stmt);
  9062. while(databank.next(result)) {
  9063. if(table == databank.getString(result, 1)) {
  9064. temp = true;
  9065. break;
  9066. }
  9067. }
  9068. databank.close(result);
  9069. databank.close(stmt);
  9070. return temp;
  9071. }
  9072. function databank.getTableFields(table) {
  9073. fields = list.new();
  9074. stmt = databank.prepare(string.concat("SHOW FIELDS FROM ", table));
  9075. result = databank.execute(stmt);
  9076. while(databank.next(result)) {
  9077. list.add(fields, databank.getString(result, 1));
  9078. }
  9079. databank.close(result);
  9080. databank.close(stmt);
  9081. return fields;
  9082. }
  9083. function databank.getTableDatatypes(table) {
  9084. stmt = databank.prepare(string.concat("SHOW CREATE TABLE ", table));
  9085. result = databank.execute(stmt);
  9086. if(databank.next(result)) {
  9087. temp = databank.getString(result, 2);
  9088. }
  9089. databank.close(result);
  9090. databank.close(stmt);
  9091. return temp;
  9092. }
  9093. //--------------------------------------------------
  9094. //Tipp-Utils
  9095. //--------------------------------------------------
  9096. function tipp.register(tipp_key, tipp_value) {
  9097. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  9098. databank.setString(stmt, 1, tipp_key);
  9099. databank.setString(stmt, 2, tipp_value);
  9100. databank.setString(stmt, 3, tipp_value);
  9101. databank.workerExecute(stmt);
  9102. }
  9103. function tipp.get(tipp_key) {
  9104. tipp_value = null;
  9105. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  9106. databank.setString(stmt, 1, tipp_key);
  9107. result = databank.execute(stmt);
  9108. if(databank.next(result)) {
  9109. tipp_value = databank.getString(result, 1);
  9110. }
  9111. databank.close(result);
  9112. databank.close(stmt);
  9113. return tipp_value;
  9114. }
  9115. function tipp.exists(tipp_key) {
  9116. stmt = databank.prepare("SELECT tipp_key FROM tipps WHERE tipp_key = ?;");
  9117. databank.setString(stmt, 1, tipp_key);
  9118. result = databank.execute(stmt);
  9119. temp = false;
  9120. if(databank.next(result)) {
  9121. temp = true;
  9122. }
  9123. databank.close(result);
  9124. databank.close(stmt);
  9125. return temp;
  9126. }
  9127. //--------------------------------------------------
  9128. //Warp-Utils
  9129. //--------------------------------------------------
  9130. function warp.create(warp_name, location) {
  9131. config = config.new(string.concat("scripts/configs/warps"), warp_name);
  9132. config.set(config, "world", world.getName(loc.getWorld(location)));
  9133. config.set(config, "x", loc.getX(location));
  9134. config.set(config, "y", loc.getY(location));
  9135. config.set(config, "z", loc.getZ(location));
  9136. config.set(config, "yaw", loc.getYaw(location));
  9137. config.set(config, "pitch", loc.getPitch(location));
  9138. config.saveAsync(config);
  9139. }
  9140. function warp.exists(warp_name) {
  9141. config = config.new(string.concat("scripts/configs/warps"), warp_name);
  9142. return config.exists(config);
  9143. }
  9144. function warp.get(warp_name) {
  9145. config = config.new(string.concat("scripts/configs/warps"), warp_name);
  9146. if(config.exists(config)) {
  9147. config.load(config);
  9148. }
  9149. world_name = config.getString(config, "world", "null");
  9150. if(world_name == "null") {
  9151. return null;
  9152. }
  9153. world = world.get(world_name);
  9154. x = config.getDouble(config, "x", 0);
  9155. y = config.getDouble(config, "y", 100);
  9156. z = config.getDouble(config, "z", 0);
  9157. yaw = config.getDouble(config, "yaw", 0);
  9158. pitch = config.getDouble(config, "pitch", 0);
  9159. return loc.new(world, x, y, z, yaw, pitch);
  9160. }
  9161. function warp.delete(warp_name) {
  9162. config = config.new(string.concat("scripts/configs/warps"), warp_name);
  9163. if(!config.exists(config)) {
  9164. return false;
  9165. }
  9166. config.delete(config);
  9167. return true;
  9168. }
  9169. function warp.getList() {
  9170. dir = file.new(string.concat("scripts/configs/warps"));
  9171. warps_list = list.new();
  9172. if(file.exists(dir)) {
  9173. file_list = file.getList(dir);
  9174. iter = iterator(file_list);
  9175. while(hasNext(iter)) {
  9176. warp = file.getName(next(iter));
  9177. warp = string.replace(warp, ".snuvic", "");
  9178. list.add(warps_list, warp);
  9179. }
  9180. }
  9181. return warps_list;
  9182. }
  9183. //--------------------------------------------------
  9184. //Home-Utils
  9185. //--------------------------------------------------
  9186. function home.set(player_id, home_name, location) {
  9187. stmt = databank.prepare("INSERT INTO new_homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  9188. databank.setInt(stmt, 1, player_id);
  9189. databank.setString(stmt, 2, home_name);
  9190. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  9191. databank.setInt(stmt, 4, loc.getX(location));
  9192. databank.setInt(stmt, 5, loc.getY(location));
  9193. databank.setInt(stmt, 6, loc.getZ(location));
  9194. databank.setInt(stmt, 7, loc.getYaw(location));
  9195. databank.setInt(stmt, 8, loc.getPitch(location));
  9196. databank.workerExecute(stmt);
  9197. }
  9198. function home.delete(player_id, home_name) {
  9199. stmt = databank.prepare("DELETE FROM new_homes WHERE player_id = ? AND name = ?;");
  9200. databank.setInt(stmt, 1, player_id);
  9201. databank.setString(stmt, 2, home_name);
  9202. databank.workerExecute(stmt);
  9203. }
  9204. function home.getLocation(player_id, home_name) {
  9205. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM new_homes WHERE player_id = ? AND name = ?;");
  9206. databank.setInt(stmt, 1, player_id);
  9207. databank.setString(stmt, 2, home_name);
  9208. result = databank.execute(stmt);
  9209. if(databank.next(result)) {
  9210. world = world.get(databank.getString(result, 1));
  9211. if(world == null) {
  9212. return null;
  9213. }
  9214. x = databank.getDouble(result, 2);
  9215. y = databank.getDouble(result, 3);
  9216. z = databank.getDouble(result, 4);
  9217. yaw = databank.getDouble(result, 5);
  9218. pitch = databank.getDouble(result, 6);
  9219. location = loc.new(world, x, y, z, yaw, pitch);
  9220. }
  9221. databank.close(result);
  9222. databank.close(stmt);
  9223. return location;
  9224. }
  9225. function home.exists(player_id, home_name) {
  9226. stmt = databank.prepare("SELECT player_id FROM new_homes WHERE player_id = ? AND name = ?;");
  9227. databank.setInt(stmt, 1, player_id);
  9228. databank.setString(stmt, 2, home_name);
  9229. result = databank.execute(stmt);
  9230. if(databank.next(result)) {
  9231. temp = true;
  9232. } else {
  9233. temp = false;
  9234. }
  9235. databank.close(result);
  9236. databank.close(stmt);
  9237. return temp;
  9238. }
  9239. function home.getList(player_id) {
  9240. homes_list = list.new();
  9241. stmt = databank.prepare("SELECT name FROM new_homes WHERE player_id = ?;");
  9242. databank.setInt(stmt, 1, player_id);
  9243. result = databank.execute(stmt);
  9244. while(databank.next(result)) {
  9245. list.add(homes_list, databank.getString(result, 1));
  9246. }
  9247. databank.close(result);
  9248. databank.close(stmt);
  9249. return homes_list;
  9250. }
  9251. function hasTpaRequest(player_uuid, aim_uuid) {
  9252. for(i = 0; i < list.getSize($tpa_request); i++) {
  9253. array = list.getIndex($tpa_request, i);
  9254. if(array[0] == player_uuid && array[1] == aim_uuid) {
  9255. list.removeIndex($tpa_request, i);
  9256. return true;
  9257. }
  9258. }
  9259. return false;
  9260. }
  9261. function addTpaRequest(player_uuid, aim_uuid) {
  9262. array = array.new(2);
  9263. array[0] = player_uuid;
  9264. array[1] = aim_uuid;
  9265. list.add($tpa_request, array);
  9266. }
  9267. function showJail(player_name) {
  9268. if(isOnline(player_name)) {
  9269. inv.open($jailmenu, read.player(player_name));
  9270. }
  9271. }
  9272. function isJailed(player_uuid) {
  9273. return(list.contains($jailed_list, player_uuid));
  9274. }
  9275. function command.register(command, description) {
  9276. command.add(command);
  9277. list.add($command_list, command);
  9278. map.add($command_map, command, description);
  9279. }
  9280. function command.registerAlias(alias, command) {
  9281. command.add(alias);
  9282. map.add($alias_map, alias, command);
  9283. }
  9284. //--------------------------------------------------
  9285. //Time-Utils
  9286. //--------------------------------------------------
  9287. //Spielzeit aller Online-Spieler
  9288. function playtime.getTotalOnlineMinutes() {
  9289. minutes = 0;
  9290. iter = iterator(players.toList());
  9291. while(hasNext(iter)) {
  9292. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  9293. }
  9294. return minutes;
  9295. }
  9296. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  9297. function playtime.getInterval(from_cal, to_cal) {
  9298. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  9299. databank.setLong(stmt, 1, time.from(from_cal));
  9300. databank.setLong(stmt, 2, time.from(to_cal));
  9301. result = databank.execute(stmt);
  9302. if(databank.next(result)) {
  9303. minutes = databank.getLong(result, 1) / 1000 / 60;
  9304. } else {
  9305. minutes = 0;
  9306. }
  9307. databank.close(result);
  9308. databank.close(stmt);
  9309. return minutes;
  9310. }
  9311. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  9312. function playtime.getTotal() {
  9313. minutes = playtime.getTotalOnlineMinutes();
  9314. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  9315. result = databank.execute(stmt);
  9316. if(databank.next(result)) {
  9317. minutes += databank.getLong(result, 1) / 1000 / 60;
  9318. }
  9319. databank.close(result);
  9320. databank.close(stmt);
  9321. return minutes;
  9322. }
  9323. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  9324. function playtime.getPlayerInterval(player_id, from_cal, to_cal) {
  9325. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  9326. databank.setInt(stmt, 1, player_id);
  9327. databank.setLong(stmt, 2, time.from(from_cal));
  9328. databank.setLong(stmt, 3, time.from(to_cal));
  9329. result = databank.execute(stmt);
  9330. if(databank.next(result)) {
  9331. minutes = databank.getLong(result, 1) / 1000 / 60;
  9332. } else {
  9333. minutes = 0;
  9334. }
  9335. databank.close(result);
  9336. databank.close(stmt);
  9337. return minutes;
  9338. }
  9339. function playtime.getPlayersPerInterval(from_cal, to_cal) {
  9340. set = set.new();
  9341. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  9342. databank.setLong(stmt, 1, time.from(from_cal));
  9343. databank.setLong(stmt, 2, time.from(to_cal));
  9344. result = databank.execute(stmt);
  9345. while(databank.next(result)) {
  9346. set.add(set, databank.getInt(result, 1));
  9347. }
  9348. databank.close(result);
  9349. databank.close(stmt);
  9350. return set.getSize(set);
  9351. }
  9352. function time.getYearDays(year) {
  9353. days = 365;
  9354. if(year % 4 == 0) {
  9355. days++;
  9356. }
  9357. return days;
  9358. }
  9359. function time.getMonthDays(month, year) {
  9360. days = month.getDays(month);
  9361. //Schaltjahre
  9362. if(month == 2 && year % 4 == 0) {
  9363. days++;
  9364. }
  9365. return days;
  9366. }
  9367. function month.register(month_index, shortname, days) {
  9368. $month_array[month_index, 0] = shortname;
  9369. $month_array[month_index, 1] = days;
  9370. }
  9371. function month.getShortName(month) {
  9372. return $month_array[month - 1, 0];
  9373. }
  9374. function month.getDays(month) {
  9375. return $month_array[month - 1, 1];
  9376. }
  9377. //--------------------------------------------------
  9378. //Player-Utils
  9379. //--------------------------------------------------
  9380. function player.hasClanInvitation(player_or_id, clan_id) {
  9381. if(isPlayer(player_or_id)) {
  9382. player_id = player.getId(player_or_id);
  9383. } else {
  9384. player_id = player_or_id;
  9385. }
  9386. iter = iterator($clan_invitations);
  9387. while(hasNext(iter)) {
  9388. invitation = next(iter);
  9389. p_id = invitation[0];
  9390. c_id = invitation[1];
  9391. if(player_id == p_id && clan_id == c_id) {
  9392. return true;
  9393. }
  9394. }
  9395. return false;
  9396. }
  9397. function player.addClanInvitation(player_id, clan_id) {
  9398. invitation = array.new(2);
  9399. invitation[0] = player_id;
  9400. invitation[1] = clan_id;
  9401. list.add($clan_invitations, invitation);
  9402. }
  9403. //--------------------------------------------------
  9404. //Party-Utils
  9405. //--------------------------------------------------
  9406. function party.invitePlayer(inviter, invitee) {
  9407. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  9408. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  9409. //Ansonsten neue Party-ID vergeben.
  9410. inviter_uuid = player.getUuid(inviter);
  9411. if(player.isInParty(inviter)) {
  9412. party_id = player.getPartyId(inviter);
  9413. } else {
  9414. party_id = map.get($party_invite_ids, inviter_uuid);
  9415. if(party_id == null) {
  9416. party_id = ++$party_counter;
  9417. }
  9418. }
  9419. if(invitee == null) {
  9420. return "inviteeNotOnline";
  9421. }
  9422. if(inviter == invitee) {
  9423. return "inviterEqualsInvitee";
  9424. }
  9425. if(player.isInParty(inviter)) {
  9426. if(!player.isPartyLeaderOrMod(inviter)) {
  9427. return "inviterNotPermitted";
  9428. }
  9429. }
  9430. if(player.isInParty(invitee)) {
  9431. return "inviteeAlreadyInParty";
  9432. }
  9433. invitee_uuid = player.getUuid(invitee);
  9434. list = map.get($party_invitations, invitee_uuid);
  9435. if(list == null) {
  9436. list = list.new();
  9437. map.add($party_invitations, invitee_uuid, list);
  9438. }
  9439. if(list.contains(list, inviter_uuid)) {
  9440. return "inviteeAlreadyInvited";
  9441. }
  9442. list.add(list, inviter_uuid);
  9443. list.add($deluuid, inviter_uuid);
  9444. list.add($delkeytime, time.getMillis());
  9445. list = map.get($delkeytimes, invitee_uuid);
  9446. if(list == null) {
  9447. list = list.new();
  9448. map.add($delkeytimes, invitee_uuid, list);
  9449. }
  9450. list.add(list, time.getMillis());
  9451. map.add($party_invite_ids, inviter_uuid, party_id);
  9452. inviter_name = player.getName(inviter);
  9453. msg.prefix(invitee, $prefix_party, string.concat(inviter_name, " invites you to a party."));
  9454. 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))));
  9455. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  9456. return true;
  9457. }
  9458. function party.kickPlayer(player, reason) {
  9459. party_id = player.getPartyId(player);
  9460. //Nachrichten
  9461. player_name = player.getName(player);
  9462. if(reason == "kick") {
  9463. message = string.concat("§r", player_name, " has been kicked out of the party.");
  9464. } else {
  9465. message = string.concat("§r", player_name, " has left the party.");
  9466. }
  9467. party.sendMessage(party_id, message);
  9468. player_uuid = player.getUuid(player_name);
  9469. //aus Partyliste entfernen
  9470. party_list = party.getList(party_id);
  9471. list.remove(party_list, player_uuid);
  9472. //ID und Rang entfernen
  9473. rank = player.getPartyRank(player);
  9474. player.delPartyRank(player);
  9475. player.delPartyId(player);
  9476. //Einladungen löschen
  9477. map.remove($party_invitations, player_uuid);
  9478. map.remove($delkeytimes, player_uuid);
  9479. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  9480. if(list.getSize(party_list) < 2) {
  9481. party.delete(party_id);
  9482. return;
  9483. }
  9484. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  9485. if(rank == "Leader") {
  9486. new_player = player.get(list.getIndex(party_list, 0));
  9487. player.setPartyRank(new_player, "Leader");
  9488. party.sendMessage(party_id, string.concat("§r", player.getName(new_player), " is now Leader."));
  9489. }
  9490. }
  9491. function party.sendMessage(party_id, message) {
  9492. iter = iterator(party.getList(party_id));
  9493. while(hasNext(iter)) {
  9494. msg.prefix(player.get(next(iter)), $prefix_party, message);
  9495. }
  9496. }
  9497. function party.delete(party_id) {
  9498. party.sendMessage(party_id, "Party disbanded.");
  9499. iter = iterator(party.getList(party_id));
  9500. while(hasNext(iter)) {
  9501. player = player.get(next(iter));
  9502. player.delPartyRank(player);
  9503. player.delPartyId(player);
  9504. }
  9505. }
  9506. @deletePartyInvitation
  9507. player_uuid = list.getIndex(deluuid, 0);
  9508. invitations = map.get(party_invitations, player_uuid);
  9509. keytimes = map.get(delkeytimes, player_uuid);
  9510. if(invitations != null) {
  9511. if(list.getSize(invitations) != 0) {
  9512. keytime = list.getIndex(delkeytime, 0);
  9513. keytime2 = list.getIndex(keytimes, 0);
  9514. list.remove(delkeytime, keytime);
  9515. if(keytime == keytime2) {
  9516. index = list.getIndexOf(keytimes, keytime2);
  9517. list.remove(keytimes, keytime2);
  9518. list.removeIndex(invitations, index);
  9519. }
  9520. }
  9521. }
  9522. goto("wait");
  9523. //--------------------------------------------------
  9524. //Plot-Utils
  9525. //--------------------------------------------------
  9526. function plot.registerMoveEvents(world) {
  9527. if(world == null) {
  9528. return;
  9529. }
  9530. iter = plot.iterator(world);
  9531. while(hasNext(iter)) {
  9532. plot = next(iter);
  9533. plot.setMoveEvent(plot, world);
  9534. }
  9535. }
  9536. function plot.delMoveEvent(plot) {
  9537. plot_id = plot.getId(plot);
  9538. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  9539. a = list.getIndex($plot_move_ids_list, i);
  9540. if(a[1] == plot_id) {
  9541. event.removeMoveData(a[0]);
  9542. list.removeIndex($plot_move_ids_list, i);
  9543. break;
  9544. }
  9545. }
  9546. }
  9547. function plot.setMoveEvent(plot, world) {
  9548. if(!plot.isCity(plot) && !plot.isPlot(plot)) {
  9549. return;
  9550. }
  9551. x1 = plot.getMinX(plot);
  9552. y1 = plot.getMinY(plot);
  9553. z1 = plot.getMinZ(plot);
  9554. x2 = plot.getMaxX(plot);
  9555. y2 = plot.getMaxY(plot);
  9556. z2 = plot.getMaxZ(plot);
  9557. loc1 = loc.new(world, x1, y1, z1);
  9558. loc2 = loc.new(world, x2, y2, z2);
  9559. move_id = event.addMoveData(loc1, loc2, 100, -1);
  9560. plot_id = plot.getId(plot);
  9561. a = array.new(2);
  9562. a[0] = move_id;
  9563. a[1] = plot_id;
  9564. list.add($plot_move_ids_list, a);
  9565. }
  9566. function plot.getPlotIdFromMoveId(move_id) {
  9567. iter = iterator($plot_move_ids_list);
  9568. while(hasNext(iter)) {
  9569. a = next(iter);
  9570. if(a[0] == move_id) {
  9571. return a[1];
  9572. }
  9573. }
  9574. return null;
  9575. }
  9576. function plot.getMoveIdFromPlotId(plot_id) {
  9577. iter = iterator($plot_move_ids_list);
  9578. while(hasNext(iter)) {
  9579. a = next(iter);
  9580. if(a[1] == plot_id) {
  9581. return a[0];
  9582. }
  9583. }
  9584. return null;
  9585. }
  9586. @checkForPlot
  9587. player_uuid = list.getIndex(check_for_plot_list, 0);
  9588. list.removeIndex(check_for_plot_list, 0);
  9589. player = player.get(player_uuid);
  9590. if(player == null) {
  9591. map.remove(actual_move_id, player_uuid);
  9592. goto("wait");
  9593. }
  9594. player_loc = entity.getLocation(player);
  9595. plot_list = plot.get(player_loc);
  9596. if(list.getSize(plot_list) == 0) {
  9597. map.remove(actual_move_id, player_uuid);
  9598. } else {
  9599. list.add(check_for_plot_list, player_uuid);
  9600. sgoto(100, "checkForPlot");
  9601. }
  9602. goto("wait");
  9603. function tpBottom(player) {
  9604. player_loc = entity.getLocation(player);
  9605. y = loc.getY(player_loc);
  9606. while(y > -64 && block.isAir(block.get(player_loc))) {
  9607. loc.setY(player_loc, y);
  9608. y--;
  9609. }
  9610. if(y <= 0) {
  9611. return;
  9612. }
  9613. loc.addY(player_loc, 1);
  9614. entity.teleport(player, player_loc);
  9615. }
  9616. //--------------------------------------------------
  9617. //Mailbox-Utils
  9618. //--------------------------------------------------
  9619. function mailbox.sendItem(player_id, item) {
  9620. index = mailbox.getFreeIndex(player_id);
  9621. if(index == -1) {
  9622. return false;
  9623. }
  9624. mailbox.setItem(player_id, index, item);
  9625. return true;
  9626. }
  9627. function mailbox.clear(player_id) {
  9628. pfad = "scripts/configs/inv_data/mailbox";
  9629. config = config.new(pfad, player_id);
  9630. if(config.exists(config)) {
  9631. config.load(config);
  9632. }
  9633. for(index = 0; index < 27; index++) {
  9634. config.set(config, string.concat("item-", string.number(index)), "null");
  9635. }
  9636. config.saveAsync(config);
  9637. }
  9638. function mailbox.setItem(player_id, index, item) {
  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. item_string = string.item(item);
  9645. config.set(config, string.concat("item-", string.number(index)), item_string);
  9646. config.saveAsync(config);
  9647. }
  9648. function mailbox.removeItem(player_id, index) {
  9649. pfad = "scripts/configs/inv_data/mailbox";
  9650. config = config.new(pfad, player_id);
  9651. if(config.exists(config)) {
  9652. config.load(config);
  9653. }
  9654. config.set(config, string.concat("item-", string.number(index)), "null");
  9655. config.saveAsync(config);
  9656. }
  9657. function mailbox.getFreeIndex(player_id) {
  9658. pfad = "scripts/configs/inv_data/mailbox";
  9659. config = config.new(pfad, player_id);
  9660. if(config.exists(config)) {
  9661. config.load(config);
  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. return i;
  9667. }
  9668. }
  9669. return -1;
  9670. }
  9671. function mailbox.show(to_player, player_id, bool) {
  9672. pfad = "scripts/configs/inv_data/mailbox";
  9673. config = config.new(pfad, player_id);
  9674. if(config.exists(config)) {
  9675. config.load(config);
  9676. }
  9677. if(bool) {
  9678. inv = inv.new("222222222222222222222222222", text.new(string.concat("Mailbox from ", player.getNameFromId(player_id))));
  9679. } else {
  9680. inv = inv.new("111111111111111111111111111", text.new(string.concat("Mailbox from ", player.getNameFromId(player_id))));
  9681. }
  9682. for(i = 0; i < 27; i++) {
  9683. item_string = config.getString(config, string.concat("item-", string.number(i)), "null");
  9684. if(item_string == "null") {
  9685. continue;
  9686. }
  9687. item = read.item(item_string);
  9688. if(item == null) {
  9689. continue;
  9690. }
  9691. setInvItem(inv, i, item);
  9692. }
  9693. inv.open(inv, to_player);
  9694. }
  9695. function updateVoteInv() {
  9696. lore_list = list.new();
  9697. list.add(lore_list, text.new("§fCost: §e1 VP"));
  9698. list.add(lore_list, text.new(string.concat("§fCounter: §e", string.number(getHomeBoost()))));
  9699. list.add(lore_list, text.new("§5Every 20 VP the possible homes increase by one."));
  9700. list.add(lore_list, text.new("§5Counter automatically shrinks by one every day."));
  9701. inv.setItem($vote_inv, 2, item.create("RED_BED", 1, "§aMore Homes", lore_list));
  9702. }
  9703. function getAdditionalVoteHomes() {
  9704. return math.roundDown(getHomeBoost() / 20);
  9705. }
  9706. function getHomeBoost() {
  9707. config = getServerConfig();
  9708. return config.getDouble(config, "homeBoostPoints", 0);
  9709. }
  9710. function increaseHomeBoost() {
  9711. config = getServerConfig();
  9712. points = config.getDouble(config, "homeBoostPoints", 0) + 1;
  9713. config.set(config, "homeBoostPoints", points);
  9714. config.saveAsync(config);
  9715. updateVoteInv();
  9716. }
  9717. function decreaseHomeBoost() {
  9718. config = getServerConfig();
  9719. points = config.getDouble(config, "homeBoostPoints", 0) - 1;
  9720. if(points < 0) {
  9721. points = 0;
  9722. }
  9723. config.set(config, "homeBoostPoints", points);
  9724. config.saveAsync(config);
  9725. updateVoteInv();
  9726. }