commands.txt 323 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378
  1. error_counter = 0;
  2. @on_error
  3. error_counter++;
  4. if(error_counter > 1) {
  5. snuvi.debug("Error Handler activated");
  6. if(event == "custom_command") {
  7. set.add(failed_cmds, command);
  8. goto("wait");
  9. }
  10. snuvi.debug("Restarting script...");
  11. error_counter++;
  12. if(error_counter >= 100) {
  13. snuvi.debug("Script terminated. Endless loop.");
  14. term();
  15. }
  16. }
  17. waitfor(5); //Verhindert Endlos-Schleife durch "/start commands"
  18. setCommandHelps();
  19. command.clear();
  20. //--- Register commands not shown on /help here ---
  21. command.add("hack");
  22. //Games
  23. command.add("nextplayer");
  24. command.add("invstats");
  25. command.add("topinvstats");
  26. command.add("removeinvstats");
  27. command.add("sfstats");
  28. command.add("topsfstats");
  29. command.add("removesfstats");
  30. command.add("questanswer");
  31. command.add("infopoint1");
  32. command.add("infopoint2");
  33. command.add("infopoint3");
  34. command.add("infopoint4");
  35. command.add("infopoint5");
  36. command.add("infopoint6");
  37. command.add("infopoint7");
  38. command.add("infopoint8");
  39. command.add("infopoint9");
  40. command.add("infopoint10");
  41. command.add("infopoint11");
  42. command.add("infopoint12");
  43. //Vanilla überschreiben
  44. command.add("help");
  45. command.add("butcher");
  46. //--- Register commands shown on /help here ---
  47. alias_map = map.new();
  48. command_list = list.new();
  49. command_map = map.new();
  50. command.register("afk", "Toggles afk");
  51. command.register("allsounds", "Plays all sounds");
  52. command.register("answer", "Answers the last private message");
  53. command.register("ass", "Armor Stand Signs");
  54. command.register("back", "Teleports to the last position");
  55. command.register("ban", "Bans a player");
  56. command.register("boost", "Boosts you up to the clouds");
  57. command.register("bug", "Report a bug");
  58. command.register("clan", "Clan-Commands");
  59. command.register("cli", "Clears items in a radius");
  60. command.register("color", "Shows all colors");
  61. command.register("coords", "Shows infos for the targeted block");
  62. command.register("copyisland", "Copyisland-Commands");
  63. command.register("creative", "Teleports to creative-spawn");
  64. command.register("databank", "Databank-Commands");
  65. command.register("datatools", "Datatools-Commands");
  66. command.register("enchant", "Enchants an item in your hand");
  67. command.register("enderchest", "Shows enderchests");
  68. command.register("entities", "Lists all entities in a world");
  69. command.register("error", "Error-Logger");
  70. command.register("errordebug", "Debug-Logger");
  71. command.register("feed", "Fills hunger bar");
  72. command.register("fly", "Toggles fly");
  73. command.register("friend", "Friend-Commands");
  74. command.register("game", "marvs minigame shit");
  75. command.register("gamemode", "Change gamemode");
  76. command.register("gamerule", "Manage gamerules");
  77. command.register("games", "Teleports to games-spawn");
  78. command.register("giveup", "Giveup a quest");
  79. command.register("grow", "Grow seeds");
  80. command.register("hat", "Be fame with a new hat");
  81. command.register("hawkeye", "Rollback griefings");
  82. command.register("head", "Gives you a player's head");
  83. command.register("heal", "Heals, fills hunger bar and remove effects");
  84. command.register("home", "Manage your homes");
  85. command.register("live", "Toggles Live-Mode");
  86. command.register("lag", "Executes a lag test");
  87. command.register("leave", "Leave a minigame");
  88. command.register("human", "Human-Commands");
  89. command.register("inv", "Inv-Commands");
  90. command.register("iteminfo", "Returns information about an item");
  91. command.register("jail", "Sends a player to jail");
  92. command.register("jumpto", "Jumps to a block in sight");
  93. command.register("kick", "Kicks a player");
  94. command.register("lastseen", "Shows the last players online");
  95. command.register("lightning", "Summons a lightning_bolt");
  96. command.register("list", "List all players online");
  97. command.register("mail", "Mail-Commands");
  98. command.register("mailbox", "Mailbox-Commands");
  99. command.register("memory", "Returns RAM-usage");
  100. command.register("msg", "Send a private message");
  101. command.register("mute", "Mutes a player");
  102. command.register("news", "Send Push-News to all players");
  103. command.register("nickname", "Set a nickname");
  104. command.register("nowb", "Sends no 'is back' message if afk");
  105. command.register("party", "Party-Commands");
  106. command.register("perm", "Manage permissions");
  107. command.register("plant", "Plant seeds");
  108. command.register("playtime", "Shows your playtime");
  109. command.register("plot", "Plot-Commands");
  110. command.register("plough", "Plough dirt around you");
  111. command.register("pvp", "Toggles pvp");
  112. command.register("quest", "Quest-Commands");
  113. command.register("rank", "Shows your available ranks");
  114. command.register("repair", "Repairs your item in mainhand");
  115. command.register("report", "Report whatever you want");
  116. command.register("ride", "Rides an entity");
  117. command.register("say", "[Server] chat message");
  118. command.register("script", "Script-Commands");
  119. command.register("seen", "Returns the last date the player was online");
  120. command.register("senditem", "Sends an itemstack to another player");
  121. command.register("setmessage", "Set your join/leave-message");
  122. command.register("setrank", "");
  123. command.register("setservermessage", "Sets the server-message in the serverlist");
  124. command.register("setspawn", "Changes a spawn");
  125. command.register("shop", "Shop-Commands");
  126. command.register("sign", "Edit a sign");
  127. command.register("silentban", "Silently bans a player");
  128. command.register("silentjoin", "Toggled Silentjoins");
  129. command.register("silentkick", "Silently kicks a player");
  130. command.register("skills", "Shows all skills");
  131. command.register("spawn", "Teleports to spawn");
  132. command.register("speed", "Sets your speed");
  133. command.register("start", "Starts a script");
  134. command.register("startgame", "Reduces start-countdown for a minigame");
  135. command.register("stats", "Statistics-Commands");
  136. command.register("stopadventure", "Stops an adventure");
  137. command.register("story", "Teleports to story-spawn");
  138. command.register("suicide", "Kill yourself");
  139. command.register("teleport", "Teleports a player to a player");
  140. command.register("tempban", "Bans a player temporarly");
  141. command.register("tempfly", "Let a player temporarly fly");
  142. command.register("ticket", "Ticket-Commands");
  143. command.register("time", "Time-Commands");
  144. command.register("tip", "Tip-Commands");
  145. command.register("top", "Teleports to to highest point at the current position");
  146. command.register("tpa", "Sends a teleport request to a player");
  147. command.register("tpahere", "Sends a teleport request to a player");
  148. command.register("tpaccept", "Accepts a teleport request");
  149. command.register("tpaccepthere", "Accepts a teleport request");
  150. command.register("tppos", "Teleports to coordinates");
  151. command.register("unban", "Unbans a player");
  152. command.register("unjail", "Releases a player from jail");
  153. command.register("unmute", "Unmutes a player");
  154. command.register("user", "Returns infos about a user");
  155. command.register("vanish", "Vanishes a player");
  156. command.register("var", "Reads variables from a scripts");
  157. command.register("vote", "Show vote links");
  158. command.register("voteshop", "Show vote rewars");
  159. command.register("voxel", "Set radius for voxel");
  160. command.register("warn", "Warns a player");
  161. command.register("warp", "Warp-Commands");
  162. command.register("weather", "Weather-Commands");
  163. command.register("world", "World-Commands");
  164. command.register("yeet", "Throws you in sight");
  165. command.registerAlias("afklo", "afk");
  166. command.registerAlias("itemdb", "iteminfo");
  167. command.registerAlias("ha", "hawkeye");
  168. command.registerAlias("skull", "head");
  169. command.registerAlias("skick", "silentkick");
  170. command.registerAlias("sban", "silentban");
  171. command.registerAlias("tell", "msg");
  172. command.registerAlias("r", "answer");
  173. command.registerAlias("pardon", "unban");
  174. command.registerAlias("j", "jumpto");
  175. command.registerAlias("mimimi", "help");
  176. command.registerAlias("ci", "copyisland");
  177. command.registerAlias("mem", "memory");
  178. command.registerAlias("tp", "teleport");
  179. command.registerAlias("homes", "home");
  180. command.registerAlias("colour", "color");
  181. command.registerAlias("gm", "gamemode");
  182. command.registerAlias("p", "plot");
  183. command.registerAlias("coord", "coords");
  184. command.registerAlias("dt", "datatools");
  185. command.registerAlias("f", "friend");
  186. command.registerAlias("l", "leave");
  187. command.registerAlias("v", "vanish");
  188. command.registerAlias("hub", "leave");
  189. command.registerAlias("fuckit", "giveup");
  190. command.registerAlias("ram", "memory");
  191. command.registerAlias("thor", "lightning");
  192. composter_par = particle.get("composter");
  193. wall_signs_tag = block.getTag("minecraft:wall_signs");
  194. beds_tag = block.getTag("minecraft:beds");
  195. chest_tag = block.getTag("forge:chests");
  196. sign_tag = block.getTag("minecraft:signs");
  197. dirt_tag = block.getTag("forge:dirt");
  198. gamesspawn = world.getGamesSpawn();
  199. serverspawn = world.getServerSpawn();
  200. prefix_clan = "§2Clan";
  201. prefix_tips = "§eTips";
  202. prefix_lock = "§eLock";
  203. prefix_hawkeye = "§cHawkeye";
  204. prefix_commands = "§6Commands";
  205. prefix_vote = "§dVote";
  206. prefix_friends = "§5Friends";
  207. prefix_world = "§bWorld";
  208. prefix_jail = "§5Jail";
  209. prefix_quest = "§dQuest";
  210. prefix_perms = "§6Perms";
  211. prefix_datatools = "§6DataTools";
  212. prefix_human = "§6Human";
  213. prefix_plot = "§dPlots";
  214. prefix_party = "§5Party";
  215. prefix_skill = "§2Skill";
  216. party_ids = getScriptVar("party_ids");
  217. if(party_ids == null) {
  218. party_ids = map.new();
  219. setScriptVar("party_ids", map.new()); //Player, partyid
  220. }
  221. party_lists = getScriptVar("party_lists");
  222. if(party_lists == null) {
  223. party_lists = map.new();
  224. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  225. }
  226. party_ranks = getScriptVar("party_ranks");
  227. if(party_ranks == null) {
  228. party_ranks = map.new();
  229. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  230. }
  231. party_counter = getScriptVar("party_counter");
  232. if(party_counter == null) {
  233. party_counter = 0;
  234. setScriptVar("party_counter", party_counter); //Player, partyid
  235. }
  236. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  237. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  238. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  239. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  240. party_invite_ids = map.new(); //Player_uuid, partyid
  241. list = getScriptVar("block_commands_list");
  242. if(list == null) {
  243. list = list.new();
  244. setScriptVar("block_commands_list", list);
  245. }
  246. live_set = getScriptVar("live_set");
  247. if(live_set == null) {
  248. live_set = set.new();
  249. setScriptVar("live_set", live_set);
  250. } else {
  251. //Register all Live-Players again
  252. iter = set.iterator(live_set);
  253. while(hasNext(iter)) {
  254. player = player.get(next(iter));
  255. if(player != null) {
  256. player.setLive(player, true);
  257. }
  258. }
  259. }
  260. afk_loop_active = false;
  261. afk_map = getScriptVar("afk_map");
  262. if(afk_map == null) {
  263. afk_map = map.new();
  264. setScriptVar("afk_map", afk_map);
  265. } else {
  266. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  267. iter = map.iterator(afk_map);
  268. while(hasNext(iter)) {
  269. element = next(iter);
  270. player = player.get(map.getKey(element));
  271. if(player != null) {
  272. player.setAfk(player, true);
  273. afk_loop_active = true;
  274. }
  275. }
  276. }
  277. if(afk_loop_active) {
  278. sgoto(30, "afk_loop");
  279. }
  280. setScriptVar("ha_data_lists", map.new());
  281. setScriptVar("ha_undo_lists", map.new());
  282. money.setBoostFactor(1);
  283. sgoto(100, "coordsloop");
  284. sgoto(1200, "afk_checker_loop");
  285. sgoto(1200, "minute_loop");
  286. lag_list = list.new();
  287. clan_invitations = list.new();
  288. friend_requests = map.new();
  289. lock_chests = map.new();
  290. chatbuffer = map.new();
  291. tpa_request = list.new();
  292. answer_map = map.new();
  293. warninglist = list.new();
  294. plotpos1 = map.new();
  295. plotpos2 = map.new();
  296. invseeids = set.new();
  297. ride_set = set.new();
  298. fields = set.new();
  299. vanish_set = set.new();
  300. failed_cmds = set.new();
  301. skip_night_set = set.new();
  302. afk_checker_map = map.new();
  303. butcher_set = set.new();
  304. set.add(butcher_set, "zombie");
  305. set.add(butcher_set, "zombie_villager");
  306. set.add(butcher_set, "husk");
  307. set.add(butcher_set, "skeleton");
  308. set.add(butcher_set, "creeper");
  309. set.add(butcher_set, "enderman");
  310. set.add(butcher_set, "pillager");
  311. set.add(butcher_set, "spider");
  312. set.add(butcher_set, "phantom");
  313. set.add(butcher_set, "witch");
  314. set.add(butcher_set, "stray");
  315. set.add(butcher_set, "drowned");
  316. set.add(butcher_set, "wither");
  317. set.add(butcher_set, "silverfish");
  318. set.add(butcher_set, "zombified_piglin");
  319. set.add(butcher_set, "cod");
  320. set.add(butcher_set, "guardian");
  321. attribut_set = set.new();
  322. set.add(attribut_set, "generic.armor");
  323. set.add(attribut_set, "generic.armor_toughness");
  324. set.add(attribut_set, "generic.attack_damage");
  325. set.add(attribut_set, "generic.knockback_resistance");
  326. set.add(attribut_set, "generic.max_health");
  327. set.add(attribut_set, "generic.movement_speed");
  328. set.add(attribut_set, "generic.attack_speed");
  329. set.add(attribut_set, "generic.luck");
  330. not_blocked_cmd = set.new();
  331. set.add(not_blocked_cmd, "leave");
  332. set.add(not_blocked_cmd, "ban");
  333. set.add(not_blocked_cmd, "silentban");
  334. set.add(not_blocked_cmd, "kick");
  335. set.add(not_blocked_cmd, "silentkick");
  336. set.add(not_blocked_cmd, "warn");
  337. set.add(not_blocked_cmd, "tempban");
  338. set.add(not_blocked_cmd, "mute");
  339. set.add(not_blocked_cmd, "unmute");
  340. set.add(not_blocked_cmd, "unban");
  341. set.add(not_blocked_cmd, "tip");
  342. set.add(not_blocked_cmd, "var");
  343. set.add(not_blocked_cmd, "quest");
  344. set.add(not_blocked_cmd, "msg");
  345. set.add(not_blocked_cmd, "help");
  346. rank_array = array.new(25, 2);
  347. //Playtime
  348. rank.add(0, "rank.owner", "4Owner");
  349. rank.add(1, "rank.admin", "cAdmin");
  350. rank.add(2, "rank.moderator", "9Moderator");
  351. rank.add(3, "rank.supporter", "bSupporter");
  352. rank.add(4, "rank.dev", "5Developer");
  353. rank.add(5, "rank.builder", "5Builder");
  354. rank.add(6, "rank.vip", "dVIP");
  355. rank.add(7, "rank.influencer", "dInfluencer");
  356. rank.add(8, "rank.sponsor", "dSponsor");
  357. rank.add(9, "rank.legend", "2Legend");
  358. rank.add(10, "rank.pioneer", "2Pioneer");
  359. rank.add(11, "rank.lord", "2Lord");
  360. rank.add(12, "rank.altruist", "2Altruist");
  361. rank.add(13, "rank.major", "2Major");
  362. rank.add(14, "rank.frequenter", "6Frequenter");
  363. rank.add(15, "rank.explorer", "6Explorer");
  364. rank.add(16, "rank.chief", "6Chief");
  365. rank.add(17, "rank.friend", "6Friend");
  366. rank.add(18, "rank.colonizer", "6Colonizer");
  367. rank.add(19, "rank.newcomer", "eNewcomer");
  368. rank.add(20, "rank.adventurer", "eAdventurer");
  369. rank.add(21, "rank.commander", "eCommander");
  370. rank.add(22, "rank.volunteer", "eVolunteer");
  371. rank.add(23, "rank.settler", "eSettler");
  372. rank.add(24, "rank.user", "3User");
  373. setScriptVar("ranks", rank_array);
  374. month_array = array.new(12, 2);
  375. month.add(0, "Jan", 31);
  376. month.add(1, "Feb", 28);
  377. month.add(2, "Mar", 31);
  378. month.add(3, "Apr", 30);
  379. month.add(4, "May", 31);
  380. month.add(5, "Jun", 30);
  381. month.add(6, "Jul", 31);
  382. month.add(7, "Aug", 31);
  383. month.add(8, "Sep", 30);
  384. month.add(9, "Oct", 31);
  385. month.add(10, "Nov", 30);
  386. month.add(11, "Dec", 31);
  387. jailed_list = list.new();
  388. ironbars = read.item("minecraft:iron_bars", 1, "§r");
  389. jailmenu = inv.new("222222222");
  390. inv.setItem(jailmenu, 0, ironbars);
  391. inv.setItem(jailmenu, 1, ironbars);
  392. inv.setItem(jailmenu, 2, ironbars);
  393. inv.setItem(jailmenu, 3, ironbars);
  394. inv.setItem(jailmenu, 4, ironbars);
  395. inv.setItem(jailmenu, 5, ironbars);
  396. inv.setItem(jailmenu, 6, ironbars);
  397. inv.setItem(jailmenu, 7, ironbars);
  398. inv.setItem(jailmenu, 8, ironbars);
  399. skip_night_inv = inv.new("002020200");
  400. inv.setItem(skip_night_inv, 0, read.item("km:check_green", 1, "§fYes"));
  401. inv.setItem(skip_night_inv, 1, read.item("km:gem_stone", 1, "§fI don't care"));
  402. inv.setItem(skip_night_inv, 2, read.item("km:cross_red", 1, "§fNo"));
  403. skip_night_inv_id = inv.getId(skip_night_inv);
  404. vote_inv = inv.new("222222222");
  405. inv.setItem(vote_inv, 0, read.item("km:coin_gold", 1, "§aMoney Booster", "§fCost: §e6 VP", "Doubles incoming money for 10 minutes."));
  406. inv.setItem(vote_inv, 1, read.item("minecraft:jukebox", 1, "§aRick is in the house", "§fCost: §e2 VP", "Rickroles every player on the server."));
  407. updateVoteInv();
  408. vote_inv_id = inv.getId(vote_inv);
  409. ha_tool = read.item("km:guild_block", 1, "§cHawkeye Tool", "Hawkeye Tool");
  410. consoleCommands = set.new();
  411. set.add(consoleCommands, "answer");
  412. set.add(consoleCommands, "ban");
  413. set.add(consoleCommands, "kick");
  414. set.add(consoleCommands, "lastseen");
  415. set.add(consoleCommands, "list");
  416. set.add(consoleCommands, "msg");
  417. set.add(consoleCommands, "say");
  418. set.add(consoleCommands, "silentban");
  419. set.add(consoleCommands, "silentkick");
  420. set.add(consoleCommands, "start");
  421. set.add(consoleCommands, "tempban");
  422. set.add(consoleCommands, "tempfly");
  423. set.add(consoleCommands, "unban");
  424. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS friends (player_id INT NOT NULL, friend_id INT NOT NULL, time BIGINT NOT NULL, PRIMARY KEY (player_id, friend_id), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  425. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS logoutdata (player_id INT NOT NULL PRIMARY KEY, logouttime BIGINT, FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  426. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS tipps (tipp_key VARCHAR(20) PRIMARY KEY, tipp_value VARCHAR(255), tipp_loop BOOLEAN NOT NULL DEFAULT true);"));
  427. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS plotranks (plot_id INT NOT NULL, player_id INT NOT NULL, rank VARCHAR(10), PRIMARY KEY (plot_id, player_id), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  428. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS homes (player_id INT NOT NULL, name VARCHAR(20) NOT NULL, world_name VARCHAR(20) NOT NULL, x DOUBLE NOT NULL, y DOUBLE NOT NULL, z DOUBLE NOT NULL, yaw DOUBLE NOT NULL, pitch DOUBLE NOT NULL, PRIMARY KEY (player_id, name), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  429. last_skip_night = 0;
  430. skip_night_started = false;
  431. jail_loop_active = false;
  432. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  433. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  434. check_for_plot_list = list.new();
  435. plot.registerMoveEvents(world.get("overworld"));
  436. plot.registerMoveEvents(world.get("the_nether"));
  437. plot.registerMoveEvents(world.get("the_end"));
  438. plot.registerMoveEvents(world.get("creative"));
  439. RickRollSounds = list.new();
  440. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  441. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  442. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  443. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  444. list.add(RickRollSounds, math.pow(2, 3 / 12));//15
  445. list.add(RickRollSounds, math.pow(2, 3 / 12));//15
  446. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  447. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  448. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  449. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  450. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  451. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  452. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  453. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  454. list.add(RickRollSounds, math.pow(2, -2 / 12));//10
  455. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  456. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  457. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  458. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  459. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  460. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  461. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  462. list.add(RickRollSounds, math.pow(2, -2 / 12));//10
  463. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  464. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  465. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  466. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  467. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  468. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  469. //6,8,11,8,15,15,13,6,8,11,8,13,13,11,10,8,6,8,11,8,11,13,10,8,6,6,6,13,11
  470. RickRollSoundDists = list.new();
  471. list.add(RickRollSoundDists, 2);//1
  472. list.add(RickRollSoundDists, 2);//1
  473. list.add(RickRollSoundDists, 2);//1
  474. list.add(RickRollSoundDists, 2);//1
  475. list.add(RickRollSoundDists, 6);//3
  476. list.add(RickRollSoundDists, 6);//3
  477. list.add(RickRollSoundDists, 12);//6
  478. list.add(RickRollSoundDists, 2);//1
  479. list.add(RickRollSoundDists, 2);//1
  480. list.add(RickRollSoundDists, 2);//1
  481. list.add(RickRollSoundDists, 2);//1
  482. list.add(RickRollSoundDists, 6);//3
  483. list.add(RickRollSoundDists, 6);//3
  484. list.add(RickRollSoundDists, 6);//3
  485. list.add(RickRollSoundDists, 2);//1
  486. list.add(RickRollSoundDists, 6);//3
  487. list.add(RickRollSoundDists, 2);//1
  488. list.add(RickRollSoundDists, 2);//1
  489. list.add(RickRollSoundDists, 2);//1
  490. list.add(RickRollSoundDists, 2);//1
  491. list.add(RickRollSoundDists, 8);//4
  492. list.add(RickRollSoundDists, 4);//2
  493. list.add(RickRollSoundDists, 6);//3
  494. list.add(RickRollSoundDists, 2);//1
  495. list.add(RickRollSoundDists, 4);//2
  496. list.add(RickRollSoundDists, 4);//2
  497. list.add(RickRollSoundDists, 6);//3
  498. list.add(RickRollSoundDists, 8);//4
  499. list.add(RickRollSoundDists, 2);//1
  500. //2,2,2,2,2,6,6,12,2,2,2,2,6,6,6,2,6,2,2,2,2,8,4,6,2,4,4,6,8
  501. rick_sounds_amount = list.getSize(RickRollSoundDists);
  502. sound_category_master = sound.getCategory("master");
  503. sound_flute = sound.get("block.note_block.flute");
  504. sound_harp = sound.get("block.note_block.harp");
  505. sound_pling = sound.get("block.note_block.pling");
  506. event_map = map.new(); //für hawkeye
  507. map.add(event_map, 1, "block_break");
  508. map.add(event_map, 2, "block_place");
  509. event.load("entity_click");
  510. event.load("player_move");
  511. event.load("inv_click");
  512. event.load("inv_close");
  513. event.load("function_key");
  514. event.load("missing_perm");
  515. event.load("missing_command");
  516. event.load("custom_command");
  517. event.load("block_click");
  518. event.load("player_logout");
  519. event.load("player_data_tick");
  520. event.load("vote");
  521. msg("dev", "§bCommands §rloaded.");
  522. @wait
  523. wait();
  524. if(event == "custom_command") {
  525. //Permission-Check
  526. command = text.toLowerCase(command);
  527. command = map.getOrDefault(alias_map, command, command);
  528. size = list.getSize(args);
  529. if(player == null) {
  530. sender = "SERVER";
  531. sender_name = "SERVER";
  532. if(set.contains(consoleCommands, command)) {
  533. ignoreGoto(command);
  534. goto("wait");
  535. }
  536. msg("SERVER", "Sorry. Not a console-command yet. Go and tell marvinius.");
  537. goto("wait");
  538. }
  539. if(!perm.has(player, command)) {
  540. perm.no(player, command);
  541. goto("wait");
  542. }
  543. if(set.contains(failed_cmds, command)) {
  544. msg.prefix(player, prefix_commands, "§cCommand temporarly deactivated due to failure.");
  545. goto("wait");
  546. }
  547. sender = player;
  548. sender_name = player.getName(player);
  549. affectedname = player.getName(player);
  550. player_name = player.getName(player);
  551. affectedplayer = player;
  552. if(player.isCommandBlocked(player)) {
  553. if(!set.contains(not_blocked_cmd, command)) {
  554. msg.prefix(player, prefix_commands, "The most important rule in competition: Sabotage!");
  555. goto("wait");
  556. }
  557. }
  558. ignoreGoto(command);
  559. goto("wait");
  560. }
  561. if(event == "vote") {
  562. p_uuid = player.getUuid(name);
  563. if(p_uuid != null) {
  564. p_id = player.getId(p_uuid);
  565. player.addVotePoints(p_id, 1);
  566. msg.prefix("online", prefix_vote, concat("§b", name, "§r hat gerade gevoted!"));
  567. if(from == "minecraft-server.eu") {
  568. msg("online", "[", prefix_vote, "§r] " , text.link("minecraft-server.eu", "https://minecraft-server.eu/vote/index/2227F"));
  569. } else {
  570. msg("online", "[", prefix_vote, "§r] " , text.link("minecraft-server-list.com", "https://minecraft-server-list.com/server/478200/vote/"));
  571. }
  572. now_time = time.getMillis();
  573. new_streak = player.getVoteStreak(p_id);
  574. if(isFollowingDay(now_time, player.getLastVoteTime(p_id))) {
  575. new_streak++;
  576. }
  577. if(new_streak == 14) {
  578. new_streak = 0;
  579. msg.survival(prefix_vote, concat(player.getName(p_uuid), " reached a votestreak of 14 and each player online (survival) gets a sapphire."));
  580. sapphire = item.getSapphire();
  581. world.giveItem(world.getOverWorld(), sapphire);
  582. world.giveItem(world.getTheNether(), sapphire);
  583. world.giveItem(world.getTheEnd(), sapphire);
  584. }
  585. player.setVoteStreak(p_id, new_streak);
  586. player.setLastVoteTime(p_id, now_time);
  587. }
  588. goto("wait");
  589. }
  590. if(event == "player_move") {
  591. player_uuid = player.getUuid(player);
  592. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  593. if(last_move_id == id) {
  594. goto("wait");
  595. }
  596. world = loc.getWorld(entity.getLocation(player));
  597. plot_id = plot.getPlotIdFromMoveId(id);
  598. plot = plot.getFromId(plot_id, world);
  599. if(plot == null) {
  600. goto("wait");
  601. }
  602. if(plot.isCity(plot)) {
  603. color_code = "§c";
  604. } else {
  605. color_code = "§e";
  606. }
  607. title.reset(player);
  608. title.setSub(player, concat("You entered ", color_code, plot.getName(plot), "."));
  609. title.send(player, "");
  610. map.add(actual_move_id, player_uuid, id);
  611. list.add(check_for_plot_list, player_uuid);
  612. sgoto(100, "checkForPlot");
  613. goto("wait");
  614. }
  615. if(event == "block_click") {
  616. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  617. if(action == "right" && !world.isSurvName(world_name) && block.hasTag(beds_tag, block)) {
  618. cancel = true;
  619. goto("wait");
  620. }
  621. if(perm.has(player, "plot.bypass")) {
  622. goto("wait");
  623. }
  624. if(block.hasTag(chest_tag, block)) {
  625. sign_loc = loc.mod(block_loc, 0, 1, 0);
  626. if(isAWallSign(sign_loc) && isAdminShop(sign_loc)) {
  627. cancel = true;
  628. goto("wait");
  629. }
  630. if(plot.check(block_loc, player, 16, true)) {
  631. cancel = false;
  632. goto("wait");
  633. }
  634. player_id = player.getId(player);
  635. player_uuid = player.getUuid(player);
  636. list = plot.get(block_loc);
  637. if(list.getSize(list) > 0) {
  638. iter = list.iterator(list);
  639. access = false;
  640. while(hasNext(iter)) {
  641. plot = next(iter);
  642. canOpenChests = plot.canOpenChests(plot, player_id);
  643. if(plot.isSub(plot)) {
  644. if(canOpenChests) {
  645. cancel = false;
  646. goto("wait");
  647. }
  648. cancel = true;
  649. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  650. goto("wait");
  651. }
  652. if(canOpenChests) {
  653. access = true;
  654. cancel = false;
  655. }
  656. }
  657. if(!access) {
  658. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  659. }
  660. }
  661. goto("wait");
  662. }
  663. if(action == "right" && block.hasTag(sign_tag, block)) {
  664. line0 = block.getSign(block_loc, 0);
  665. if(line0 != "§3[§bFree Plot§3]") {
  666. goto("wait");
  667. }
  668. price = text.convert(removeFormat(block.getSign(block_loc, 1)));
  669. if(!isDouble(price) || price < 0) {
  670. msg.prefix(player, prefix_plot, "Positive number expected.");
  671. goto("wait");
  672. }
  673. p_id = text.convert(block.getSign(block_loc, 3));
  674. if(!isDouble(p_id)) {
  675. msg.prefix(player, prefix_plot, "Invalid city owner.");
  676. goto("wait");
  677. }
  678. if(player.getNameFromId(p_id) == null) {
  679. msg.prefix(player, prefix_plot, "Invalid city owner.");
  680. goto("wait");
  681. }
  682. if(!hasEnoughMoney(player, price)) {
  683. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(price), "§r snuvis for this."));
  684. goto("wait");
  685. }
  686. plot_list = plot.get(block_loc);
  687. iter = list.iterator(plot_list);
  688. while(hasNext(iter)) {
  689. plot = next(iter);
  690. if(plot.isFree(plot)) {
  691. break;
  692. }
  693. }
  694. if(!plot.isFree(plot)) {
  695. msg.prefix(player, prefix_plot, "You aren't on a free plot.");
  696. goto("wait");
  697. }
  698. //Plot claimen
  699. subMoney(player, price);
  700. addMoney(p_id, price);
  701. plot.setSub(plot, true);
  702. plot.setLeader(plot, player.getId(player));
  703. player_name = player.getName(player);
  704. plot.addPlayer(plot, player_name);
  705. plot.setName(plot, concat(player_name, "'s plot"));
  706. msg.prefix(player, prefix_plot, concat("Plot claimed. Spent §6", text.number(price), "§r snuvis."));
  707. goto("wait");
  708. }
  709. goto("wait");
  710. }
  711. if(event == "missing_command") {
  712. if(player == null) { //--> Server
  713. player = "SERVER";
  714. if(command_name == null) {
  715. msg.prefix(player, prefix_commands, concat("Missing Command"));
  716. goto("wait");
  717. }
  718. }
  719. msg.prefix(player, prefix_commands, concat("No command ", command_name));
  720. goto("wait");
  721. }
  722. if(event == "player_logout") {
  723. map.remove(afk_checker_map, uuid);
  724. player.setAfk(player, false);
  725. list.remove(jailed_list, player.getUuid(player));
  726. if(player.hasQuest2(player)) {
  727. script_id = quest.getFromPlayer(player);
  728. script = script.getFromId(script_id);
  729. if(script == null) {
  730. snuvi.debug("Player logged out with corrupt quest");
  731. quest.removePlayer(player); //in case of corrupt quest
  732. goto("wait");
  733. }
  734. setScriptVar("player", player);
  735. modTimer.scriptCallEvent("quest_term", script);
  736. quest.term(script, player);
  737. }
  738. if(player.isInParty(player)) {
  739. party.kickPlayer(player, "logout");
  740. }
  741. goto("wait");
  742. }
  743. if(event == "missing_perm") {
  744. if(player == null) { //--> Server
  745. player = "SERVER";
  746. if(command_name == null) {
  747. msg.prefix(player, prefix_commands, concat("Missing Perm"));
  748. goto("wait");
  749. }
  750. }
  751. perm.no(player, command_name);
  752. goto("wait");
  753. }
  754. if(event == "entity_click") {
  755. player_uuid = player.getUuid(player);
  756. if(set.contains(ride_set, player_uuid)) {
  757. set.remove(ride_set, player_uuid);
  758. entity.mount(player, entity);
  759. }
  760. goto("wait");
  761. }
  762. if(event == "inv_click") {
  763. //mailbox
  764. if(text.startsWith(inv_name, "Mailbox", 0)) {
  765. if(player.isOnAdventure(player)) {
  766. msg.prefix(player, prefix_commands, "You can't use the mailbox while on adventure.");
  767. goto("wait");
  768. }
  769. if(click_type == "QUICK_MOVE") {
  770. if(perm.has(player, "mailbox.other")) {
  771. //Clone item
  772. player.safeGiveItem(player, item);
  773. inv.update(player);
  774. goto("wait");
  775. }
  776. }
  777. //Take item
  778. player.safeGiveItem(player, item);
  779. inv.setItem(inv, inv_slot, item.getAir());
  780. inv.update(player);
  781. split_list = text.split(" ", inv_name);
  782. p_name = list.getIndex(split_list, 2);
  783. p_uuid = player.getUuid(p_name);
  784. if(p_uuid == null) {
  785. inv.close(player);
  786. msg.prefix(player, prefix_commands, "Mailbox closed. Unknown player.");
  787. goto("wait");
  788. }
  789. p_id = player.getId(p_uuid);
  790. mailbox.setItem(p_id, inv_slot, item.getAir());
  791. goto("wait");
  792. }
  793. //inv see
  794. if(set.contains(invseeids, inv_id)) {
  795. //On inv_click in an invsee inventory
  796. split_list = text.split(" ", inv_name);
  797. p_name = list.getIndex(split_list, 2);
  798. p = read.player(p_name);
  799. if(p == null) {
  800. inv.close(player);
  801. msg.prefix(sender_name, prefix_commands, "This player is no longer online. Use /inv load <player> and /inv save <player> to overwrite an offline player's inventory.");
  802. goto("wait");
  803. }
  804. if(click_type == "QUICK_MOVE") {
  805. //Clone item
  806. player.safeGiveItem(player, item);
  807. inv.update(player);
  808. goto("wait");
  809. }
  810. //Transmit item
  811. player.removeItem(p, item);
  812. player.safeGiveItem(player, item);
  813. inv.setItem(inv, inv_slot, read.item("minecraft:air"));
  814. inv.update(player);
  815. goto("wait");
  816. }
  817. if(inv_id == vote_inv_id) {
  818. if(inv_slot == 0) {
  819. if(money.getBoostFactor() > 1) {
  820. msg.prefix(player, prefix_commands, "Boost already active.");
  821. goto("wait");
  822. }
  823. vp = player.getVotePoints(player);
  824. if(vp < 6) {
  825. msg.prefix(player, prefix_commands, "Not enough vote points.");
  826. goto("wait");
  827. }
  828. player.setVotePoints(player, vp - 6);
  829. msg.online(prefix_vote, concat(player.getName(player), " activated §dMoney Booster§r."));
  830. money.setBoostFactor(2);
  831. status.addTimed("online", 56, 12000, "Money Booster");
  832. sgoto(12000, "resetMoneyBoost");
  833. goto("wait");
  834. }
  835. if(inv_slot == 1) {
  836. vp = player.getVotePoints(player);
  837. if(vp < 2) {
  838. msg.prefix(player, prefix_commands, "Not enough vote points.");
  839. goto("wait");
  840. }
  841. msg.online(prefix_vote, concat(player.getName(player), " activated §dRick is in the house§r."));
  842. player.setVotePoints(player, vp - 2);
  843. rickIndex = 0;
  844. goto("RickRole_play");
  845. }
  846. if(inv_slot == 2) {
  847. vp = player.getVotePoints(player);
  848. if(vp < 1) {
  849. msg.prefix(player, prefix_commands, "Not enough vote points.");
  850. goto("wait");
  851. }
  852. player.setVotePoints(player, vp - 1);
  853. increaseHomeBoost();
  854. inv.update(player);
  855. msg.online(prefix_vote, concat(player.getName(player), " spend their votepoints to §dMore Homes§r."));
  856. }
  857. goto("wait");
  858. }
  859. if(inv_id == skip_night_inv_id) {
  860. world = world.getOverWorld();
  861. world_time = world.getTime(world);
  862. while(world_time >= 24000) {
  863. world_time -= 24000;
  864. }
  865. if(world_time <= 12500) {
  866. goto("wait");
  867. }
  868. player_uuid = player.getUuid(player);
  869. if(set.contains(skip_night_set, player_uuid)) {
  870. msg.prefix(player, prefix_commands, "Already voted.");
  871. goto("wait");
  872. }
  873. if(!skip_night_started) {
  874. world.addTimedStatus(world, 49, 300, "Skip night?");
  875. msg.survival("[§6Commands§r] Skip night? Vote within 15 seconds.");
  876. skip_night_counter = 15;
  877. skip_night_yes = 0;
  878. skip_night_no = 0;
  879. skip_night_no_care = 0;
  880. skip_night_started = true;
  881. sgoto(20, "skip_night_loop");
  882. }
  883. if(inv_slot == 0) {
  884. skip_night_yes++;
  885. inv.close(player);
  886. set.add(skip_night_set, player_uuid);
  887. goto("wait");
  888. }
  889. if(inv_slot == 1) {
  890. skip_night_no_care++;
  891. inv.close(player);
  892. set.add(skip_night_set, player_uuid);
  893. goto("wait");
  894. }
  895. if(inv_slot == 2) {
  896. skip_night_no++;
  897. inv.close(player);
  898. set.add(skip_night_set, player_uuid);
  899. goto("wait");
  900. }
  901. goto("wait");
  902. }
  903. if(inv_name == "Skills") {
  904. if(item.getType(item) == "minecraft:air") {
  905. goto("wait");
  906. }
  907. skill_name = removeFormat(item.getName(item));
  908. tech_name = skill.getTechName(skill_name);
  909. //Toggle skills
  910. if(skill.isToggleable(skill_name)) {
  911. if(skill.isActivated(player, tech_name)) {
  912. skill.setActivated(player, tech_name, false);
  913. } else {
  914. skill.setActivated(player, tech_name, true);
  915. }
  916. inv.setItem(inv, inv_slot, skill.getShopItem(player, tech_name));
  917. inv.update(player);
  918. goto("wait");
  919. }
  920. //Activate skill
  921. if(skill.isActive(skill_name)) {
  922. player_loc = entity.getLocation(player);
  923. world_name = world.getName(loc.getWorld(player_loc));
  924. if(!world.isSurvName(world_name)) {
  925. msg.prefix(player, prefix_skill, "You can't use this in this world.");
  926. goto("wait");
  927. }
  928. if(tech_name == "skill.fire_arrow") {
  929. duration = data.getTimer(player, tech_name);
  930. if(duration > 0) {
  931. msg.prefix(player, prefix_skill, "Skill already active.");
  932. goto("wait");
  933. }
  934. amount = skill.getAmount(player, tech_name);
  935. if(amount > 0) {
  936. status.addTimed(player, 54, 1200, skill_name);
  937. data.setTimer(player, tech_name, 1200);
  938. new_amount = amount - 1;
  939. skill.setAmount(player, tech_name, new_amount);
  940. msg.prefix(player, prefix_skill, concat("Used ", skill_name, ". New amount: ", text.number(new_amount)));
  941. }
  942. goto("wait");
  943. }
  944. if(tech_name == "skill.timber") {
  945. duration = data.getTimer(player, "timber");
  946. if(duration > 0) {
  947. msg.prefix(player, prefix_skill, "Skill already active.");
  948. goto("wait");
  949. }
  950. amount = skill.getAmount(player, "skill.timber");
  951. if(amount > 0) {
  952. status.addTimed(player, 53, 1200, "Timber");
  953. data.setTimer(player, "timber", 1200);
  954. new_amount = amount - 1;
  955. skill.setAmount(player, "skill.timber", new_amount);
  956. msg.prefix(player, prefix_skill, concat("Used Timber. New amount: ", text.number(new_amount)));
  957. }
  958. goto("wait");
  959. }
  960. if(tech_name == "skill.fly10min") {
  961. duration = data.getTimer(player, "fly");
  962. if(duration > 0) {
  963. msg.prefix(player, prefix_skill, "Skill already active.");
  964. goto("wait");
  965. }
  966. amount = skill.getAmount(player, "skill.fly10min");
  967. if(amount > 0) {
  968. status.addTimed(player, 50, 12000, "Fly");
  969. data.setTimer(player, "fly", 12000);
  970. player.setFly(player, true);
  971. new_amount = amount - 1;
  972. skill.setAmount(player, "skill.fly10min", new_amount);
  973. msg.prefix(player, prefix_skill, concat("Used Fly 10min. New amount: ", text.number(new_amount)));
  974. }
  975. goto("wait");
  976. }
  977. if(tech_name == "skill.grow") {
  978. amount = skill.getAmount(player, "skill.grow");
  979. if(amount > 0) {
  980. grow(player_loc, 5);
  981. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  982. new_amount = amount - 1;
  983. skill.setAmount(player, "skill.grow", new_amount);
  984. msg.prefix(player, prefix_skill, concat("Used Grow. New amount: ", text.number(new_amount)));
  985. }
  986. goto("wait");
  987. }
  988. if(tech_name == "skill.haste") {
  989. amount = skill.getAmount(player, "skill.haste");
  990. if(amount > 0) {
  991. entity.addEffect(player, "haste", 2400, 0);
  992. new_amount = amount - 1;
  993. skill.setAmount(player, "skill.haste", new_amount);
  994. msg.prefix(player, prefix_skill, concat("Used Haste. New amount: ", text.number(new_amount)));
  995. }
  996. goto("wait");
  997. }
  998. if(tech_name == "skill.speed") {
  999. amount = skill.getAmount(player, "skill.speed");
  1000. if(amount > 0) {
  1001. entity.addEffect(player, "speed", 2400, 0);
  1002. new_amount = amount - 1;
  1003. skill.setAmount(player, "skill.speed", new_amount);
  1004. msg.prefix(player, prefix_skill, concat("Used Speed. New amount: ", text.number(new_amount)));
  1005. }
  1006. goto("wait");
  1007. }
  1008. if(tech_name == "skill.jump_boost") {
  1009. amount = skill.getAmount(player, "skill.jump_boost");
  1010. if(amount > 0) {
  1011. entity.addEffect(player, "jump_boost", 2400, 1);
  1012. new_amount = amount - 1;
  1013. skill.setAmount(player, "skill.jump_boost", new_amount);
  1014. msg.prefix(player, prefix_skill, concat("Used Jump Boost. New amount: ", text.number(new_amount)));
  1015. }
  1016. goto("wait");
  1017. }
  1018. if(tech_name == "skill.dolphin") {
  1019. amount = skill.getAmount(player, "skill.dolphin");
  1020. if(amount > 0) {
  1021. entity.addEffect(player, "dolphins_grace", 1200, 0);
  1022. new_amount = amount - 1;
  1023. skill.setAmount(player, "skill.dolphin", new_amount);
  1024. msg.prefix(player, prefix_skill, concat("Used Dolphin. New amount: ", text.number(new_amount)));
  1025. }
  1026. goto("wait");
  1027. }
  1028. if(tech_name == "skill.block_up") {
  1029. duration = data.getTimer(player, "block_up");
  1030. if(duration > 0) {
  1031. msg.prefix(player, prefix_skill, "Skill already active.");
  1032. goto("wait");
  1033. }
  1034. amount = skill.getAmount(player, "skill.block_up");
  1035. if(amount > 0) {
  1036. status.addTimed(player, 51, 1200, "Block Up");
  1037. data.setTimer(player, "block_up", 1200);
  1038. new_amount = amount - 1;
  1039. skill.setAmount(player, "skill.block_up", new_amount);
  1040. msg.prefix(player, prefix_skill, concat("Used Block Up. New amount: ", text.number(new_amount)));
  1041. }
  1042. goto("wait");
  1043. }
  1044. if(tech_name == "skill.block_down") {
  1045. duration = data.getTimer(player, "block_down");
  1046. if(duration > 0) {
  1047. msg.prefix(player, prefix_skill, "Skill already active.");
  1048. goto("wait");
  1049. }
  1050. amount = skill.getAmount(player, "skill.block_down");
  1051. if(amount > 0) {
  1052. status.addTimed(player, 52, 1200, "Block Down");
  1053. data.setTimer(player, "block_down", 1200);
  1054. new_amount = amount - 1;
  1055. skill.setAmount(player, "skill.block_down", new_amount);
  1056. msg.prefix(player, prefix_skill, concat("Used Block Down. New amount: ", text.number(new_amount)));
  1057. }
  1058. goto("wait");
  1059. }
  1060. }
  1061. goto("wait");
  1062. }
  1063. if(inv_name == "§8Settings") {
  1064. if(inv_slot == 0) {
  1065. new_value = !player.getAutoCloseDoor(player);
  1066. player.setAutoCloseDoor(player, new_value);
  1067. inv.setItem(inv, inv_slot, read.item("minecraft:oak_door", 1, "§fAutomatic Doors", new_value));
  1068. }
  1069. elseif(inv_slot == 1) {
  1070. new_value = !player.doesAcceptTpaRequests(player);
  1071. player.acceptTpaRequests(player, new_value);
  1072. inv.setItem(inv, inv_slot, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", new_value));
  1073. }
  1074. elseif(inv_slot == 2) {
  1075. new_value = !player.getShowcoords(player);
  1076. player.setShowcoords(player, new_value);
  1077. inv.setItem(inv, inv_slot, read.item("minecraft:compass", 1, "§fShow Coords", new_value));
  1078. if(!new_value) {
  1079. display.remove(player, 30);
  1080. }
  1081. }
  1082. elseif(inv_slot == 3) {
  1083. new_value = !player.hasSittingActivated(player);
  1084. player.activateSitting(player, new_value);
  1085. inv.setItem(inv, inv_slot, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", new_value));
  1086. }
  1087. elseif(inv_slot == 4) {
  1088. new_value = !hasPvpOn(player);
  1089. setPvp(player, new_value);
  1090. inv.setItem(inv, inv_slot, read.item("minecraft:iron_sword", 1, "§fPvP", new_value));
  1091. }
  1092. elseif(inv_slot == 5) {
  1093. new_value = !player.getNoPetDamage(player);
  1094. player.setNoPetDamage(player, new_value);
  1095. inv.setItem(inv, inv_slot, read.item("minecraft:bone", 1, "§fNo Pet Damage", new_value));
  1096. }
  1097. elseif(inv_slot == 6) {
  1098. new_value = !player.getTipLoop(player);
  1099. player.setTipLoop(player, new_value);
  1100. inv.setItem(inv, inv_slot, read.item("minecraft:oak_sign", 1, "§fShow tip loop", new_value));
  1101. }
  1102. inv.update(player);
  1103. }
  1104. goto("wait");
  1105. }
  1106. if(event == "inv_close") {
  1107. if(set.contains(invseeids, inv_id)) {
  1108. set.remove(invseeids, inv_id);
  1109. }
  1110. goto("wait");
  1111. }
  1112. if(event == "function_key") {
  1113. if(player.hasMinigame(player)) {
  1114. goto("wait");
  1115. }
  1116. if(key == 1) {
  1117. inv = inv.new("333333333");
  1118. inv.setItem(inv, 0, read.item("minecraft:oak_door", 1, "§fAutomatic Doors", player.getAutoCloseDoor(player)));
  1119. inv.setItem(inv, 1, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", player.doesAcceptTpaRequests(player)));
  1120. inv.setItem(inv, 2, read.item("minecraft:compass", 1, "§fShow Coords", player.getShowcoords(player)));
  1121. inv.setItem(inv, 3, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", player.hasSittingActivated(player)));
  1122. inv.setItem(inv, 4, read.item("minecraft:iron_sword", 1, "§fPvP", hasPvpOn(player)));
  1123. inv.setItem(inv, 5, read.item("minecraft:bone", 1, "§fNo Pet Damage", player.getNoPetDamage(player)));
  1124. inv.setItem(inv, 6, read.item("minecraft:oak_sign", 1, "§fShow tip loop", player.getTipLoop(player)));
  1125. inv.open(inv, player, "§8Settings");
  1126. goto("wait");
  1127. }
  1128. if(key == 2) {
  1129. player_loc = entity.getLocation(player);
  1130. world_name = world.getName(loc.getWorld(player_loc));
  1131. if(world.isSurvName(world_name) || world_name == "story") {
  1132. skill.showAll(player, player);
  1133. }
  1134. goto("wait");
  1135. }
  1136. if(key == 3) {
  1137. player_loc = entity.getLocation(player);
  1138. world_name = world.getName(loc.getWorld(player_loc));
  1139. if(!world.isSurvName(world_name)) {
  1140. goto("wait");
  1141. }
  1142. world_time = world.getTime(world.getOverWorld());
  1143. while(world_time >= 24000) {
  1144. world_time -= 24000;
  1145. }
  1146. if(world_time <= 12500) {
  1147. msg.prefix(player, prefix_commands, "Only during night possible.");
  1148. goto("wait");
  1149. }
  1150. player_uuid = player.getUuid(player);
  1151. if(set.contains(skip_night_set, player_uuid)) {
  1152. msg.prefix(player, prefix_commands, "Already voted.");
  1153. goto("wait");
  1154. }
  1155. if(time.getMillis() - last_skip_night < 420000) {
  1156. msg.prefix(player, prefix_commands, "Only once per night possible.");
  1157. goto("wait");
  1158. }
  1159. inv.open(skip_night_inv, player, "Skip Night?");
  1160. goto("wait");
  1161. }
  1162. goto("wait");
  1163. }
  1164. if(event == "player_data_tick") {
  1165. if(var == "fly") {
  1166. tpBottom(player);
  1167. player.setFly(player, false);
  1168. }
  1169. }
  1170. goto("wait");
  1171. @mailbox
  1172. location = entity.getLocation(player);
  1173. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1174. if(!world.isSurvName(world_name)) {
  1175. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  1176. goto("wait");
  1177. }
  1178. if(size == 0) {
  1179. msg.prefix(player, prefix_commands, "/mailbox...");
  1180. if(perm.has(player, "mailbox.other")) {
  1181. msg(player, "§6 - show [player] §rOpen a players mailbox.");
  1182. } else {
  1183. msg(player, "§6 - show §rOpen your mailbox.");
  1184. }
  1185. msg(player, "§6 - send <player> §rSend the item in your mainhand to a mailbox.");
  1186. goto("wait");
  1187. }
  1188. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1189. if(arg0 == "send") {
  1190. if(size != 2) {
  1191. msg.prefix(player, prefix_commands, "/mailbox send <player>");
  1192. goto("wait");
  1193. }
  1194. item = living.getHand(player);
  1195. if(item.getType(item) == "minecraft:air") {
  1196. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1197. goto("wait");
  1198. }
  1199. to_name = list.getIndex(args, 1);
  1200. if(!checkIfEverOnline(to_name)) {
  1201. msg.prefix(player, prefix_commands, "This player has never been online.");
  1202. goto("wait");
  1203. }
  1204. to_player_id = player.getId(player.getUuid(to_name));
  1205. index = mailbox.getFreeIndex(to_player_id);
  1206. if(index == -1) {
  1207. msg.prefix(player, prefix_commands, "No free space in mailbox.");
  1208. goto("wait");
  1209. }
  1210. living.setEquip(player, "hand", item.getAir());
  1211. mailbox.setItem(to_player_id, index, item);
  1212. msg.send(player, to_name, prefix_commands, concat(player.getName(player), " sent you items to your mailbox."), true);
  1213. msg.prefix(player, prefix_commands, "Item sent to player.");
  1214. goto("wait");
  1215. }
  1216. if(arg0 == "show") {
  1217. if(size == 1) {
  1218. from_player_id = player.getId(player);
  1219. } elseif(size == 2) {
  1220. if(!perm.has(player, "mailbox.other")) {
  1221. perm.no(player, "mailbox.other");
  1222. goto("wait");
  1223. }
  1224. from_name = list.getIndex(args, 1);
  1225. if(!checkIfEverOnline(from_name)) {
  1226. msg.prefix(player, prefix_commands, "This player has never been online.");
  1227. goto("wait");
  1228. }
  1229. from_player_id = player.getId(player.getUuid(from_name));
  1230. } else {
  1231. if(perm.has(player, "mailbox.other")) {
  1232. msg.prefix(player, prefix_commands, "/mailbox show [player]");
  1233. } else {
  1234. msg.prefix(player, prefix_commands, "/mailbox show");
  1235. }
  1236. goto("wait");
  1237. }
  1238. mailbox.show(player, from_player_id);
  1239. goto("wait");
  1240. }
  1241. goto("wait");
  1242. @entities
  1243. if(size != 1) {
  1244. msg.prefix(player, prefix_quest, "/entities <world>");
  1245. goto("wait");
  1246. }
  1247. world_name = text.toLowerCase(list.getIndex(args, 0));
  1248. world = world.get(world_name);
  1249. if(world == null) {
  1250. msg.prefix(player, prefix_world, "This world is not loaded.");
  1251. goto("wait");
  1252. }
  1253. list = world.getEntities(world);
  1254. size = list.getSize(list);
  1255. map = map.new();
  1256. living = 0;
  1257. for(i = 0; i < size; i++) {
  1258. element = list.getIndex(list, i);
  1259. if(isLiving(element)) {
  1260. living++;
  1261. //living.removeAi(element);
  1262. entity_type = entity.getType(element);
  1263. n = map.get(map, entity_type);
  1264. if(n == null) {
  1265. map.add(map, entity_type, 1);
  1266. } else {
  1267. map.add(map, entity_type, n + 1);
  1268. }
  1269. }
  1270. }
  1271. msg(player, "§0-------------------------------------------------");
  1272. msg(player, "Living: ", living);
  1273. iter = map.iterator(map);
  1274. table = table.new("§b", 14, 14);
  1275. msg(player, table.getStart(table));
  1276. while(hasNext(iter)) {
  1277. element1 = next(iter);
  1278. if(hasNext(iter)) {
  1279. element2 = next(iter);
  1280. } else {
  1281. element2 = "";
  1282. }
  1283. msg(player, table.get(table, element1, element2));
  1284. }
  1285. msg(player, table.getEnd(table));
  1286. goto("wait");
  1287. @RickRole_play
  1288. if(rickIndex < rick_sounds_amount) {
  1289. pitch = list.getIndex(RickRollSounds, rickIndex);
  1290. RickSound(pitch);
  1291. ticks = 2 + list.getIndex(RickRollSoundDists, rickIndex);
  1292. sgoto(ticks, "RickRole_play");
  1293. }
  1294. rickIndex++;
  1295. goto("wait");
  1296. function RickSound(pitch) {
  1297. iter = list.iterator(players.toList());
  1298. while(hasNext(iter)) {
  1299. online_player = next(iter);
  1300. if(online_player == null) {
  1301. continue;
  1302. }
  1303. sound.spawnForPlayer(online_player, $sound_flute, $sound_category_master, 1, pitch);
  1304. sound.spawnForPlayer(online_player, $sound_harp, $sound_category_master, 1, pitch);
  1305. sound.spawnForPlayer(online_player, $sound_pling, $sound_category_master, 1, pitch);
  1306. }
  1307. }
  1308. @hack
  1309. msg.prefix(player, prefix_commands, "Your pc got hacked now.");
  1310. goto("wait");
  1311. @resetMoneyBoost
  1312. money.setBoostFactor(1);
  1313. goto("wait");
  1314. @skip_night_loop
  1315. skip_night_counter--;
  1316. if(skip_night_counter == 0) {
  1317. msg.survival("[§6Commands§r] Skip night results:");
  1318. msg.survival(concat("§e - §rYes: §e", text.number(skip_night_yes)));
  1319. msg.survival(concat("§e - §rNo: §e", text.number(skip_night_no)));
  1320. msg.survival(concat("§e - §rI don't care: §e", text.number(skip_night_no_care)));
  1321. if(skip_night_yes > skip_night_no) {
  1322. world = world.getOverWorld();
  1323. world.setTime(world, 0);
  1324. }
  1325. set.clear(skip_night_set);
  1326. last_skip_night = time.getMillis();
  1327. sgoto(8400, "reset_skip_night");
  1328. goto("wait");
  1329. }
  1330. sgoto(20, "skip_night_loop");
  1331. goto("wait");
  1332. @reset_skip_night
  1333. skip_night_started = false;
  1334. goto("wait");
  1335. @skills
  1336. //skills [player]
  1337. if(size == 0) {
  1338. skill.showAll(player, player);
  1339. goto("wait");
  1340. }
  1341. if(!perm.has(player, "skills.other")) {
  1342. perm.no(player, "skills.other");
  1343. goto("wait");
  1344. }
  1345. p_name = list.getIndex(args, 0);
  1346. p_uuid = player.getUuid(p_name);
  1347. if(p_uuid == null) {
  1348. msg.prefix(player, prefix_tips, "This player has never been online.");
  1349. goto("wait");
  1350. }
  1351. from_p_id = player.getId(p_uuid);
  1352. skill.showAll(from_p_id, player);
  1353. goto("wait");
  1354. @infopoint1
  1355. msg(player, getSpacer());
  1356. msg.prefix(player, "§eSurvival", "§aEnjoy our modded survival feeling. New ores, items and displays, and we are still beginner friendly.");
  1357. goto("wait");
  1358. @infopoint2
  1359. msg(player, getSpacer());
  1360. 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.");
  1361. goto("wait");
  1362. @infopoint3
  1363. msg(player, getSpacer());
  1364. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  1365. goto("wait");
  1366. @infopoint4
  1367. msg(player, getSpacer());
  1368. 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.");
  1369. goto("wait");
  1370. @infopoint5
  1371. msg(player, getSpacer());
  1372. msg.prefix(player, "§eCities", "§aAs a clan leader you can raise your plots to big cities. Create sub-plots and sell them to other players.");
  1373. goto("wait");
  1374. @infopoint6
  1375. msg(player, getSpacer());
  1376. 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.");
  1377. goto("wait");
  1378. @infopoint7
  1379. msg(player, getSpacer());
  1380. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  1381. goto("wait");
  1382. @infopoint8
  1383. msg(player, getSpacer());
  1384. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  1385. goto("wait");
  1386. @infopoint9
  1387. msg(player, getSpacer());
  1388. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  1389. goto("wait");
  1390. @infopoint10
  1391. msg(player, getSpacer());
  1392. msg.prefix(player, "§eRules", "§aThere is at least one rule: Be respectful. Look at our fake rules.");
  1393. goto("wait");
  1394. @infopoint11
  1395. msg(player, getSpacer());
  1396. msg.prefix(player, "§eNote", "§aEverything is self-coded. Worldedit is the only external mod we use.");
  1397. goto("wait");
  1398. @infopoint12
  1399. msg(player, getSpacer());
  1400. msg.prefix(player, "§eNote", "§aBe Creative in our creative world.");
  1401. goto("wait");
  1402. @party
  1403. if(size == 0) {
  1404. @partyhelp
  1405. msg.prefix(player, prefix_party, "/party ...");
  1406. msg(player, "§5 - invite <player> §rInvite a player");
  1407. msg(player, "§5 - accept <player> §rAccept an invitation");
  1408. msg(player, "§5 - deny <player> §rDeny an invitation");
  1409. msg(player, "§5 - kick <player> §rKick a player");
  1410. msg(player, "§5 - leave §rLeave the party");
  1411. msg(player, "§5 - promote <player> §rPromote a player");
  1412. msg(player, "§5 - demote <player> §rDemote a player");
  1413. msg(player, "§5 - disband §rDisband a party");
  1414. msg(player, "§5 - list §rParty information");
  1415. msg(player, "§5 - <message> §rSends a party message");
  1416. goto("wait");
  1417. }
  1418. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1419. if(arg0 == "list") {
  1420. if(size != 1) {
  1421. msg.prefix(player, prefix_party, "§5/party list");
  1422. } else {
  1423. if(!player.isInParty(player)) {
  1424. msg.prefix(player, prefix_party, "You are not in a party.");
  1425. goto("wait");
  1426. }
  1427. list = party.getList(player.getPartyId(player));
  1428. width = 1;
  1429. if(list.getSize(list) > 9) {
  1430. width = 2;
  1431. }
  1432. table = table.new("§5", width, 13, 7);
  1433. msg(player, table.getStart(table));
  1434. msg(player, table.get(table, "§d#", "§d§lName", "§d§lRole"));
  1435. msg(player, table.getMiddle(table));
  1436. iter = list.iterator(list);
  1437. c = 0;
  1438. while(hasNext(iter)) {
  1439. c++;
  1440. p = player.get(next(iter));
  1441. msg(player, table.get(table, text.number(c), player.getName(p), player.getPartyRank(p)));
  1442. }
  1443. msg(player, table.getEnd(table));
  1444. }
  1445. goto("wait");
  1446. }
  1447. if(arg0 == "leave") {
  1448. if(size != 1) {
  1449. msg.prefix(player, prefix_party, "§5/party leave");
  1450. } else {
  1451. if(!player.isInParty(player)) {
  1452. msg.prefix(player, prefix_party, "You are not in a party.");
  1453. goto("wait");
  1454. }
  1455. party.kickPlayer(player, "leave");
  1456. }
  1457. goto("wait");
  1458. }
  1459. if(arg0 == "disband") {
  1460. if(size != 1) {
  1461. msg.prefix(player, prefix_party, "§5/party disband");
  1462. } else {
  1463. if(!player.isInParty(player)) {
  1464. msg.prefix(player, prefix_party, "You are not in a party.");
  1465. goto("wait");
  1466. }
  1467. if(!player.isPartyLeader(player)) {
  1468. msg.prefix(player, prefix_party, "You are not the party leader.");
  1469. goto("wait");
  1470. }
  1471. party.delete(player.getPartyId(player));
  1472. }
  1473. goto("wait");
  1474. }
  1475. if(arg0 == "kick") {
  1476. if(size != 2) {
  1477. msg.prefix(player, prefix_party, "§5/party kick <player>");
  1478. } else {
  1479. if(!player.isInParty(player)) {
  1480. msg.prefix(player, prefix_party, "You are not in a party.");
  1481. goto("wait");
  1482. }
  1483. if(!player.isPartyLeaderOrMod(player)) {
  1484. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1485. goto("wait");
  1486. }
  1487. pname = list.getIndex(args, 1);
  1488. if(!checkIfEverOnline(pname)) {
  1489. msg.prefix(player, prefix_party, "This player has never been online.");
  1490. goto("wait");
  1491. }
  1492. p = read.player(pname);
  1493. if(p == null) {
  1494. msg.prefix(player, prefix_party, "This player is not online.");
  1495. goto("wait");
  1496. }
  1497. if(player == p) {
  1498. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1499. goto("wait");
  1500. }
  1501. if(!party.same(p, player)) {
  1502. msg.prefix(player, prefix_party, "This player is not in your party.");
  1503. goto("wait");
  1504. }
  1505. ownrank = player.getPartyRank(player);
  1506. if(ownrank == "Moderator") {
  1507. if(player.isPartyLeaderOrMod(p)) {
  1508. msg.prefix(player, prefix_party, "You can't kick this player.");
  1509. goto("wait");
  1510. }
  1511. }
  1512. party.kickPlayer(p, "kick");
  1513. }
  1514. goto("wait");
  1515. }
  1516. if(arg0 == "promote" || arg0 == "demote") {
  1517. if(size != 2) {
  1518. msg.prefix(player, prefix_party, concat("§5/party ", arg0, " <player>"));
  1519. } else {
  1520. pname = list.getIndex(args, 1);
  1521. if(!player.isInParty(player)) {
  1522. msg.prefix(player, prefix_party, "You are not in a party.");
  1523. goto("wait");
  1524. }
  1525. if(!player.isPartyLeader(player)) {
  1526. msg.prefix(player, prefix_party, "You are not the party leader.");
  1527. goto("wait");
  1528. }
  1529. if(!checkIfEverOnline(pname)) {
  1530. msg.prefix(player, prefix_party, "This player has never been online.");
  1531. goto("wait");
  1532. }
  1533. p = read.player(pname);
  1534. if(p == null) {
  1535. msg.prefix(player, prefix_party, "This player is not online.");
  1536. goto("wait");
  1537. }
  1538. if(player == p) {
  1539. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1540. goto("wait");
  1541. }
  1542. if(!party.same(p, player)) {
  1543. msg.prefix(player, prefix_party, "This player is not in your party.");
  1544. goto("wait");
  1545. }
  1546. partyid = player.getPartyId(player);
  1547. rank = player.getPartyRank(p);
  1548. if(arg0 == "promote") {
  1549. if(rank == "Player") {
  1550. player.setPartyRank(p, "Moderator");
  1551. party.sendMessage(partyid, concat("§r", pname, " is now Moderator."));
  1552. } elseif(rank == "Moderator") {
  1553. player.setPartyRank(p, "Leader");
  1554. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1555. party.sendMessage(partyid, concat("§r", pname, " is now Leader."));
  1556. }
  1557. } elseif(arg0 == "demote") {
  1558. if(rank == "Moderator") {
  1559. player.setPartyRank(p, "Player");
  1560. party.sendMessage(partyid, concat("§r", pname, " is no longer Moderator."));
  1561. } else {
  1562. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1563. }
  1564. }
  1565. }
  1566. goto("wait");
  1567. }
  1568. if(arg0 == "invite") {
  1569. if(size != 2) {
  1570. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1571. } else {
  1572. p_name = list.getIndex(args, 1);
  1573. if(!checkIfEverOnline(p_name)) {
  1574. msg.prefix(player, prefix_party, "This player has never been online.");
  1575. goto("wait");
  1576. }
  1577. p = read.player(p_name);
  1578. temp = party.invitePlayer(player, p);
  1579. if(temp == "inviteeNotOnline") {
  1580. msg.prefix(player, prefix_party, "This player is not online.");
  1581. } elseif(temp == "inviterEqualsInvitee") {
  1582. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1583. } elseif(temp == "inviterNotPermitted") {
  1584. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1585. } elseif(temp == "inviteeAlreadyInParty") {
  1586. msg.prefix(player, prefix_party, "This player is already in your party.");
  1587. } elseif(temp == "inviteeAlreadyInvited") {
  1588. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1589. } else {
  1590. msg.prefix(player, prefix_party, "Invitation sent.");
  1591. }
  1592. }
  1593. goto("wait");
  1594. }
  1595. if(arg0 == "accept") {
  1596. if(size != 2) {
  1597. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1598. } else {
  1599. if(player.isInParty(player)) {
  1600. msg.prefix(player, prefix_party, "You are already in a party.");
  1601. goto("wait");
  1602. }
  1603. pname = list.getIndex(args, 1);
  1604. if(!checkIfEverOnline(pname)) {
  1605. msg.prefix(player, prefix_party, "This player has never been online.");
  1606. goto("wait");
  1607. }
  1608. p = read.player(pname);
  1609. if(p == null) {
  1610. msg.prefix(player, prefix_party, "This player is no longer online.");
  1611. goto("wait");
  1612. }
  1613. player_uuid = player.getUuid(player);
  1614. p_uuid = player.getUuid(p);
  1615. list = map.get(party_invitations, player_uuid);
  1616. if(list == null || !list.contains(list, p_uuid)) {
  1617. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1618. goto("wait");
  1619. }
  1620. if(player.isInParty(p)) { //wenn einlader bereits in party
  1621. partyid = player.getPartyId(p);
  1622. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1623. party.addPlayer(partyid, player);
  1624. player.setPartyRank(player, "Player");
  1625. } else {
  1626. msg.prefix(player, prefix_party, "This player is already in another party.");
  1627. goto("wait");
  1628. }
  1629. } else {
  1630. partyid = map.get(party_invite_ids, p_uuid);
  1631. party.setList(partyid, list.new());
  1632. party.addPlayer(partyid, p);
  1633. party.addPlayer(partyid, player);
  1634. player.setPartyRank(p, "Leader");
  1635. player.setPartyRank(player, "Player");
  1636. msg.prefix(p, prefix_party, "The party was created.");
  1637. }
  1638. list.clear(list); //Einladungs-Liste von oben
  1639. party.sendMessage(partyid, concat("§r", player_name, " joined the party."));
  1640. }
  1641. goto("wait");
  1642. }
  1643. if(arg0 == "deny") {
  1644. if(size != 2) {
  1645. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1646. } else {
  1647. player_uuid = player.getUuid(player);
  1648. list = map.get(party_invitations, player_uuid);
  1649. if(list != null) {
  1650. pname = list.getIndex(args, 1);
  1651. p = read.player(pname);
  1652. if(p == null) {
  1653. msg.prefix(player, prefix_party, "This player is no longer online.");
  1654. goto("wait");
  1655. }
  1656. p_uuid = player.getUuid(p);
  1657. if(list == null || !list.contains(list, p_uuid)) {
  1658. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1659. goto("wait");
  1660. }
  1661. index = list.getIndexOf(list, p_uuid);
  1662. list.remove(list, p_uuid);
  1663. keytimes = map.get(delkeytimes, player_uuid);
  1664. list.removeIndex(keytimes, index);
  1665. p = read.player(pname);
  1666. if(p != null) {
  1667. msg.prefix(p, prefix_party, concat("§r", player_name, " has denied your invitation."));
  1668. }
  1669. msg.prefix(player, prefix_party, concat("Invitation from ", pname, " denied."));
  1670. }
  1671. }
  1672. goto("wait");
  1673. }
  1674. if(player.isInParty(player)) {
  1675. message = concat(player.getName(player), " §1| §r", text.concatList(args, " ", 0, list.getSize(args) - 1));
  1676. party.sendMessage(player.getPartyId(player), message);
  1677. goto("wait");
  1678. }
  1679. goto("partyhelp");
  1680. @setmessage
  1681. if(size == 0) {
  1682. @setmessagehelp
  1683. msg.prefix(player, prefix_commands, "/setmessage ...");
  1684. msg(player, "§e- join <message> §rSets your joinmessage");
  1685. msg(player, "§e- leave <message> §rSets your leavemessage");
  1686. msg(player, "§e- info §rShows you set messages");
  1687. if(perm.has(player, "setmessage.delete")) {
  1688. msg(player, "§e- delete <player> §rDeletes a players messages");
  1689. }
  1690. goto("wait");
  1691. }
  1692. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1693. if(arg0 == "info") {
  1694. fullname = player.getFullName(player);
  1695. message = text.convert(player.getJoinMessage(player));
  1696. if(message == null) {
  1697. msg.prefix(player, prefix_commands, "No join message set.");
  1698. } else {
  1699. msg.prefix(player, prefix_commands, concat("§a§l> §r", fullname, " §9", message));
  1700. }
  1701. message = text.convert(player.getLeaveMessage(player));
  1702. if(message == null) {
  1703. msg.prefix(player, prefix_commands, "No leave message set.");
  1704. } else {
  1705. msg.prefix(player, prefix_commands, concat("§c§l> §r", fullname, " §9", message));
  1706. }
  1707. goto("wait");
  1708. }
  1709. if(arg0 == "join") {
  1710. if(size < 2) {
  1711. goto("setmessagehelp");
  1712. }
  1713. message = text.concatList(args, " ", 1, size - 1);
  1714. player.setJoinMessage(player, message);
  1715. msg.prefix(player, prefix_commands, "Join-Message set.");
  1716. goto("wait");
  1717. }
  1718. if(arg0 == "leave") {
  1719. if(size < 2) {
  1720. goto("setmessagehelp");
  1721. }
  1722. message = text.concatList(args, " ", 1, size - 1);
  1723. player.setLeaveMessage(player, message);
  1724. msg.prefix(player, prefix_commands, "Leave-Message set.");
  1725. goto("wait");
  1726. }
  1727. if(arg0 == "delete") {
  1728. if(size == 1) {
  1729. p_uuid = player.getUuid(player);
  1730. } elseif(size == 2) {
  1731. if(!perm.has(player, "setmessage.delete")) {
  1732. perm.no(player, "setmessage.delete");
  1733. goto("wait");
  1734. }
  1735. p_name = list.getIndex(args, 1);
  1736. if(!checkIfEverOnline(p_name)) {
  1737. msg.prefix(player, prefix_commands, "This player has never been online.");
  1738. goto("wait");
  1739. }
  1740. p_uuid = player.getUuid(p_name);
  1741. } else {
  1742. goto("setmessagehelp");
  1743. }
  1744. p_id = player.getId(p_uuid);
  1745. player.setJoinMessage(p_id, "null");
  1746. player.setLeaveMessage(p_id, "null");
  1747. msg.prefix(player, prefix_commands, "Messages deleted.");
  1748. goto("wait");
  1749. }
  1750. goto("wait");
  1751. @lag
  1752. msg.prefix(player, prefix_commands, "Lag test is performed. Please wait...");
  1753. a = array.new(2);
  1754. a[0] = player.getUuid(player);
  1755. a[1] = time.getMillis();
  1756. list.add(lag_list, a);
  1757. sgoto(100, "do_lag_test");
  1758. goto("wait");
  1759. @do_lag_test
  1760. t = time.getMillis();
  1761. a = list.getIndex(lag_list, 0);
  1762. list.removeIndex(lag_list, 0);
  1763. p_uuid = a[0];
  1764. t_old = a[1];
  1765. t = math.roundComma((t - t_old) / 50 / 5, 2);
  1766. p = player.get(p_uuid);
  1767. if(p != null) {
  1768. msg.prefix(p, prefix_commands, "Expected: 20 ticks/sec");
  1769. msg.prefix(p, prefix_commands, concat("Measured: ", text.number(t), " ticks/sec"));
  1770. }
  1771. goto("wait");
  1772. @live
  1773. boolean = !player.isLive(player);
  1774. player.setLive(player, boolean);
  1775. player.setHeadName(player);
  1776. player.setTabName(player);
  1777. msg.prefix(player, prefix_commands, "Live toggled.");
  1778. goto("wait");
  1779. @lightning
  1780. location = player.getTarget(player, 50, true, true);
  1781. if(block.getType(location) == "minecraft:air") {
  1782. msg.prefix(player, prefix_commands, "No block in sight.");
  1783. goto("wait");
  1784. }
  1785. entity.spawn("minecraft:lightning_bolt", location);
  1786. goto("wait");
  1787. @ride
  1788. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1789. if(world.isGamesName(world_name)) {
  1790. if(player.hasMinigame(affectedplayer) || (perm.has(affectedplayer, "ride") && !perm.has(affectedplayer, "isTeam"))) {
  1791. if(size == 2) {
  1792. msg.prefix(player, prefix_commands, "This player can't use this now.");
  1793. } else {
  1794. msg.prefix(player, prefix_commands, "You can't use this now.");
  1795. }
  1796. goto("wait");
  1797. }
  1798. }
  1799. player_uuid = player.getUuid(player);
  1800. if(set.contains(ride_set, player_uuid)) {
  1801. msg.prefix(player, prefix_commands, "Entity-Ride-Click removed.");
  1802. set.remove(ride_set, player_uuid);
  1803. } else {
  1804. msg.prefix(player, prefix_commands, "Click an entity to ride it.");
  1805. set.add(ride_set, player_uuid);
  1806. }
  1807. goto("wait");
  1808. @vanish
  1809. //vanish [on/off] [player]
  1810. if(size == 0) {
  1811. if(set.contains(vanish_set, player.getUuid(affectedplayer))) {
  1812. bool = "off";
  1813. } else {
  1814. bool = "on";
  1815. }
  1816. }
  1817. if(size >= 1) {
  1818. bool = list.getIndex(args, 0);
  1819. }
  1820. if(size == 2) {
  1821. affectedname = list.getIndex(args, 1);
  1822. affectedplayer = read.player(affectedname);
  1823. affectedname = player.getName(affectedplayer);
  1824. if(affectedplayer == null) {
  1825. msg.prefix(player, prefix_commands, "This player is not online.");
  1826. goto("wait");
  1827. }
  1828. }
  1829. if(bool == "on") {
  1830. if(affectedname != player_name) {
  1831. msg.prefix(player, prefix_commands, concat(affectedname, " has been vanished."));
  1832. msg.prefix(affectedplayer, prefix_commands, concat("You have been vanished by ", player_name, "."));
  1833. } else {
  1834. msg.prefix(affectedplayer, prefix_commands, "You are vanished.");
  1835. }
  1836. set.add(vanish_set, player.getUuid(affectedplayer));
  1837. player.hide(affectedplayer);
  1838. } elseif(bool == "off") {
  1839. if(affectedname != player_name) {
  1840. msg.prefix(player, prefix_commands, concat(affectedname, " is no longer vanished."));
  1841. msg.prefix(affectedplayer, prefix_commands, concat("You are no longer vanished caused by ", player_name, "."));
  1842. } else {
  1843. msg.prefix(affectedplayer, prefix_commands, "You are no longer vanished.");
  1844. }
  1845. set.remove(vanish_set, player.getUuid(affectedplayer));
  1846. player.show(affectedplayer);
  1847. } else {
  1848. msg.prefix(player, prefix_commands, "/vanish [on/off] [player]");
  1849. }
  1850. goto("wait");
  1851. @user
  1852. if(size == 0) {
  1853. p_name = player.getName(player);
  1854. p_uuid = player.getUuid(p_name);
  1855. } else {
  1856. if(!perm.has(player, "user.other")) {
  1857. perm.no(player, "user.other");
  1858. goto("wait");
  1859. }
  1860. p_name = list.getIndex(args, 0);
  1861. if(!checkIfEverOnline(p_name)) {
  1862. msg.prefix(player, prefix_commands, "This player has never been online.");
  1863. goto("wait");
  1864. }
  1865. p_uuid = player.getUuid(p_name);
  1866. p_name = player.getName(p_uuid);
  1867. }
  1868. p = read.player(p_name);
  1869. p_id = player.getId(p_uuid);
  1870. if(p == null) {
  1871. p_or_id = p_id;
  1872. } else {
  1873. p_or_id = p;
  1874. }
  1875. table = table.new("§8", 7, 24);
  1876. msg(player, table.getStart(table));
  1877. msg(player, table.get(table, "Player", p_name));
  1878. msg(player, table.getMiddle(table));
  1879. msg(player, table.get(table, "Playtime", text.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  1880. msg(player, table.get(table, "Joins", text.number(player.getJoins(p_or_id))));
  1881. msg(player, table.get(table, "First Join", getDateString(player.getFirstJoin(p_or_id))));
  1882. msg(player, table.get(table, "Last Join", getDateString(player.getLastJoin(p_or_id))));
  1883. msg(player, table.get(table, "UUID", p_uuid));
  1884. msg(player, table.get(table, "ID", text.number(p_id)));
  1885. msg(player, table.get(table, "Rank", getRank(p_or_id)));
  1886. msg(player, table.get(table, "PvP", hasPvpOn(p_or_id)));
  1887. msg(player, table.get(table, "Quests", text.number(quest.getCounter(p_or_id))));
  1888. msg(player, table.get(table, "Money", text.number(getMoney(p_or_id))));
  1889. msg(player, table.get(table, "Adventures", text.number(player.getAdventureAmounts(p_or_id))));
  1890. msg(player, table.getEnd(table));
  1891. goto("wait");
  1892. @quest
  1893. if(size == 0) {
  1894. @quest_syntax
  1895. msg.prefix(player, prefix_quest, "/quest ...");
  1896. msg(player, "§5 - see §rSee all active quests");
  1897. msg(player, "§5 - term <player> §rTerminates a player's quest");
  1898. goto("wait");
  1899. }
  1900. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1901. if(arg0 == "see") {
  1902. if(size != 1) {
  1903. msg.prefix(player, prefix_quest, "/quest see");
  1904. goto("wait");
  1905. }
  1906. quest_map = quest.getIds();
  1907. iter = map.iterator(quest_map);
  1908. while(hasNext(iter)) {
  1909. element = next(iter);
  1910. key = map.getKey(element);
  1911. value = map.getValue(element);
  1912. script = script.getFromId(value);
  1913. if(script == null) {
  1914. continue;
  1915. }
  1916. msg(player, player.getName(key), " ", value);
  1917. }
  1918. goto("wait");
  1919. }
  1920. if(arg0 == "term") {
  1921. if(size != 2) {
  1922. msg.prefix(player, prefix_quest, "/quest term <player>");
  1923. goto("wait");
  1924. }
  1925. p_name = list.getIndex(args, 1);
  1926. if(!checkIfEverOnline(p_name)) {
  1927. msg.prefix(player, prefix_quest, "This player has never been online.");
  1928. goto("wait");
  1929. }
  1930. p = read.player(p_name);
  1931. if(p == null) {
  1932. msg.prefix(player, prefix_quest, "This player is not online.");
  1933. goto("wait");
  1934. }
  1935. script_id = quest.getFromPlayer(p);
  1936. if(script_id == null) {
  1937. msg.prefix(player, prefix_quest, "This player has no quest.");
  1938. goto("wait");
  1939. }
  1940. script = script.getFromId(script_id);
  1941. if(script == null) {
  1942. quest.removePlayer(p);
  1943. msg.prefix(player, prefix_quest, "Corrupt quest terminated.");
  1944. goto("wait");
  1945. }
  1946. setScriptVar("player", p);
  1947. modTimer.scriptCallEvent("quest_term", script);
  1948. quest.term(script, player);
  1949. msg.prefix(player, prefix_quest, "Player's quest terminated.");
  1950. goto("wait");
  1951. }
  1952. goto("quest_syntax");
  1953. @friend
  1954. if(size == 0) {
  1955. @friend_syntax
  1956. msg.prefix(player, prefix_friends, "/friend ...");
  1957. msg(player, "§5 - add <player> §rAdds a friend");
  1958. msg(player, "§5 - remove <player> §rRemoves a friend");
  1959. msg(player, "§5 - list §rLists all your friends");
  1960. goto("wait");
  1961. }
  1962. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1963. if(arg0 == "add") {
  1964. if(size != 2) {
  1965. msg.prefix(player, prefix_friends, "/friend add <player>");
  1966. goto("wait");
  1967. }
  1968. friend_name = list.getIndex(args, 1);
  1969. if(player_name == friend_name) {
  1970. msg.prefix(player, prefix_friends, "You can't invite yourself.");
  1971. goto("wait");
  1972. }
  1973. player_id = player.getId(player);
  1974. if(!checkIfEverOnline(friend_name)) {
  1975. msg.prefix(player, prefix_friends, "This player has never been online.");
  1976. goto("wait");
  1977. }
  1978. friend_id = player.getId(player.getUuid(friend_name));
  1979. if(friend.check(player_id, friend_id)) {
  1980. msg.prefix(player, prefix_friends, "This player is already your friend.");
  1981. goto("wait");
  1982. }
  1983. if(map.contains(friend_requests, friend_id)) {
  1984. if(map.get(friend_requests, friend_id) == player_id) {
  1985. friend.add(player_id, friend_id);
  1986. map.remove(friend_requests, friend_id);
  1987. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is your friend now."));
  1988. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is your friend now."), true);
  1989. goto("wait");
  1990. }
  1991. }
  1992. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  1993. friend = read.player(friend_name);
  1994. msg.prefix(player, prefix_friends, concat("You sent an invitation to §7", friend_name, "§r."));
  1995. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r wants to be your friend."), true);
  1996. if(friend != null) {
  1997. msg(friend, text.click("§r[§aAccept§r]", concat("/friend add ", player_name)));
  1998. }
  1999. goto("wait");
  2000. }
  2001. if(arg0 == "remove") {
  2002. if(size != 2) {
  2003. msg.prefix(player, prefix_friends, "/friend remove <player>");
  2004. goto("wait");
  2005. }
  2006. friend_name = list.getIndex(args, 1);
  2007. player_id = player.getId(player);
  2008. if(!checkIfEverOnline(friend_name)) {
  2009. msg.prefix(player, prefix_friends, "This player has never been online.");
  2010. goto("wait");
  2011. }
  2012. friend_id = player.getId(player.getUuid(friend_name));
  2013. if(!friend.check(player_id, friend_id)) {
  2014. msg.prefix(player, prefix_friends, "This player isn't your friend.");
  2015. goto("wait");
  2016. }
  2017. friend.delete(player_id, friend_id);
  2018. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is no longer your friend."));
  2019. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is no longer your friend."), true);
  2020. goto("wait");
  2021. }
  2022. if(arg0 == "list") {
  2023. if(size != 1) {
  2024. msg.prefix(player, prefix_friends, "/friend list");
  2025. goto("wait");
  2026. }
  2027. player_id = player.getId(player);
  2028. friendlist = friend.getList(player_id);
  2029. listsize = list.getSize(friendlist);
  2030. if(listsize == 0) {
  2031. msg.prefix(player, prefix_friends, "You have no friends yet.");
  2032. goto("wait");
  2033. }
  2034. msg(player, "§5Friends:");
  2035. for(i = 0; i <= listsize - 1; i++) {
  2036. msg(player, "§r- ", list.getIndex(friendlist, i));
  2037. }
  2038. goto("wait");
  2039. }
  2040. goto("friend_syntax");
  2041. @var
  2042. if(size != 2) {
  2043. msg.prefix(player, prefix_commands, "/var <id> <varname>");
  2044. goto("wait");
  2045. }
  2046. script_id = list.getIndex(args, 0);
  2047. script = script.getFromId(script_id);
  2048. if(script == null) {
  2049. msg.prefix(player, "§dScript", "Invalid id");
  2050. goto("wait");
  2051. }
  2052. var_name = list.getIndex(args, 1);
  2053. var = script.getVar(script, var_name);
  2054. msg.prefix(player, "§dScript", concat(var_name, " = ", var));
  2055. goto("wait");
  2056. @vote
  2057. link1 = "https://minecraft-server.eu/vote/index/2227F";
  2058. link2 = "https://minecraft-server-list.com/server/478200/vote/";
  2059. msg(player, "[", prefix_vote, "§r] ", text.link("minecraft-server.eu", link1));
  2060. msg(player, "[", prefix_vote, "§r] ", text.link("minecraft-server-list.com", link2));
  2061. goto("wait");
  2062. @voteshop
  2063. inv.open(vote_inv, player, concat("Your vote points: §6", text.number(player.getVotePoints(player)), " §rStreak: §6", text.number(player.getVoteStreak(player))));
  2064. goto("wait");
  2065. @voxel
  2066. if(size < 1) {
  2067. @voxelhelp
  2068. msg.prefix(player, prefix_commands, "/voxel <radius:1-5>");
  2069. msg.prefix(player, prefix_commands, "/voxel block");
  2070. goto("wait");
  2071. }
  2072. arg0 = list.getIndex(args, 0);
  2073. if(isDouble(arg0)) {
  2074. radius = arg0;
  2075. if(radius < 1) {
  2076. radius = 1;
  2077. }
  2078. if(radius > 5) {
  2079. radius = 5;
  2080. }
  2081. script = script.get("Voxel");
  2082. map = script.getVar(script, "radius_per_player");
  2083. map.add(map, player.getUuid(player), radius);
  2084. script.setVar(script, "radius_per_player", map);
  2085. msg.prefix(player, prefix_commands, concat("Set radius to ", text.number(radius), "."));
  2086. goto("wait");
  2087. }
  2088. if(arg0 == "block") {
  2089. item = living.getEquip(player, "hand");
  2090. item_type = item.getType(item);
  2091. if(item_type == "minecraft:air") {
  2092. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  2093. goto("wait");
  2094. }
  2095. state = block.newState(item_type);
  2096. script = script.get("Voxel");
  2097. map = script.getVar(script, "state_per_player");
  2098. map.add(map, player.getUuid(player), state);
  2099. script.setVar(script, "state_per_player", map);
  2100. msg.prefix(player, prefix_commands, concat("Set block to ", item_type, "."));
  2101. goto("wait");
  2102. }
  2103. goto("voxelhelp");
  2104. @setservermessage
  2105. if(size < 1) {
  2106. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  2107. goto("wait");
  2108. }
  2109. message = text.concatList(args, " ", 0, size - 1);
  2110. message = text.replace(message, "&", "§");
  2111. setMOTD(message);
  2112. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  2113. goto("wait");
  2114. @error
  2115. if(size < 1) {
  2116. msg.prefix(player, "§cError", "/error ...");
  2117. msg(player, "§c - list §rLists all errors");
  2118. msg(player, "§c - clear §rDeletes all errors");
  2119. goto("wait");
  2120. }
  2121. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2122. if(arg0 == "list") {
  2123. error_size = error.getSize();
  2124. if(error_size == 0) {
  2125. msg.prefix(player, "§cError", "No errors existing.");
  2126. goto("wait");
  2127. }
  2128. for(i = 0; i < error_size; i++) {
  2129. msg(player, error.getIndex(i));
  2130. }
  2131. goto("wait");
  2132. }
  2133. if(arg0 == "clear") {
  2134. error.clear();
  2135. msg.prefix(player, "§cError", "All errors deleted.");
  2136. goto("wait");
  2137. }
  2138. goto("wait");
  2139. @errordebug
  2140. if(size < 1) {
  2141. msg.prefix(player, "§cErrorDebugs", "/errordebug ...");
  2142. msg(player, "§c - list §rLists all errordebugs");
  2143. msg(player, "§c - clear §rDeletes all errordebugs");
  2144. msg(player, "§c - toggle §rToggles errordebugs");
  2145. goto("wait");
  2146. }
  2147. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2148. if(arg0 == "list") {
  2149. error_size = debug.getSize();
  2150. if(error_size == 0) {
  2151. msg.prefix(player, "§cErrorDebugs", "No errordebugs existing.");
  2152. goto("wait");
  2153. }
  2154. for(i = 0; i < error_size; i++) {
  2155. msg(player, debug.getIndex(i));
  2156. }
  2157. goto("wait");
  2158. }
  2159. if(arg0 == "clear") {
  2160. debug.clear();
  2161. msg.prefix(player, "§cErrorDebugs", "All errordebugs deleted.");
  2162. goto("wait");
  2163. }
  2164. if(arg0 == "toggle") {
  2165. new_value = !perm.has(player, "script.debug");
  2166. player.showDebug(player, new_value);
  2167. if(new_value) {
  2168. msg.prefix(player, prefix_commands, "Debug messages are now shown.");
  2169. } else {
  2170. msg.prefix(player, prefix_commands, "Debug messages are now hidden.");
  2171. }
  2172. goto("wait");
  2173. }
  2174. goto("wait");
  2175. @hat
  2176. item = living.getEquip(player, "hand");
  2177. if(item.getType(item) == "minecraft:air") {
  2178. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  2179. goto("wait");
  2180. }
  2181. living.setEquip(player, "head", item);
  2182. living.setEquip(player, "hand", read.item("minecraft:air"));
  2183. goto("wait");
  2184. @hawkeye
  2185. if(size == 0) {
  2186. @partyhelp
  2187. msg.prefix(player, prefix_party, "/hawkeye ...");
  2188. msg(player, "§5 - search <parameters> §rSearch for griefs");
  2189. msg(player, "§5 - rollback §rRollback last search");
  2190. msg(player, "§5 - undo §rUndos your last rollback");
  2191. msg(player, "§5 - tool §rGives you the Hawkeye Tool");
  2192. if(perm.has(player, "hawkeye.entries")) {
  2193. msg(player, "§5 - entries §rShows the amount of all entries");
  2194. }
  2195. msg(player, "");
  2196. msg(player, "§5 - Parameters:");
  2197. msg(player, "§5 - e:<event>");
  2198. msg(player, "§5 - p:<player>");
  2199. msg(player, "§5 - r:<radius>");
  2200. msg(player, "§5 - t:<timespan> e.g. \"5d,4h,20m\"");
  2201. goto("wait");
  2202. }
  2203. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2204. if(arg0 == "tool") {
  2205. player.giveItem(player, ha_tool);
  2206. goto("wait");
  2207. }
  2208. if(arg0 == "print") {
  2209. side = list.getIndex(args, 1);
  2210. if(!isDouble(side)) {
  2211. msg.prefix(player, prefix_commands, "Number expected.");
  2212. goto("wait");
  2213. }
  2214. if(side < 1) {
  2215. msg.prefix(player, prefix_commands, "Positive number expected.");
  2216. goto("wait");
  2217. }
  2218. list = hawkeye.getDataList(player);
  2219. if(list == null) {
  2220. goto("wait");
  2221. }
  2222. if(side > list.getSize(list)) {
  2223. msg.prefix(player, prefix_commands, "Invalid number.");
  2224. goto("wait");
  2225. }
  2226. hawkeye.print(player, list, side);
  2227. goto("wait");
  2228. }
  2229. if(arg0 == "search") {
  2230. if(size < 2) {
  2231. msg.prefix(player, prefix_commands, "/hawkeye search <parameters>");
  2232. goto("wait");
  2233. }
  2234. a = hawkeye.processInput(args, player);
  2235. if(text.class(a) == "String") {
  2236. msg.prefix(player, prefix_hawkeye, a);
  2237. goto("wait");
  2238. }
  2239. timeFrom = a[0];
  2240. timeTo = a[1];
  2241. player_loc = a[2];
  2242. radius = a[3];
  2243. events = a[4];
  2244. players = a[5];
  2245. l = hawkeye.getData(timeFrom, timeTo, player_loc, radius, events, players, "DESC");
  2246. if(text.class(l) == "String") {
  2247. msg.prefix(player, prefix_hawkeye, l);
  2248. hawkeye.setDataList(player, list.new());
  2249. goto("wait");
  2250. }
  2251. if(list.getSize(l) == 0) {
  2252. msg.prefix(player, prefix_hawkeye, "No results found.");
  2253. hawkeye.setDataList(player, list.new());
  2254. goto("wait");
  2255. }
  2256. hawkeye.setDataList(player, l);
  2257. hawkeye.print(player, l, 1);
  2258. goto("wait");
  2259. }
  2260. if(arg0 == "entries") {
  2261. if(!perm.has(player, "hawkeye.entries")) {
  2262. perm.no(player, "hawkeye.entries");
  2263. goto("wait");
  2264. }
  2265. msg.prefix(player, prefix_commands, concat("Anzahl an Hawkeye-Einträgen: " , text.number(hawkeye.getAmountOfAll())));
  2266. goto("wait");
  2267. }
  2268. if(arg0 == "rollback") {
  2269. l = hawkeye.getDataList(player);
  2270. if(l == null) {
  2271. msg.prefix(player, prefix_hawkeye, "No results to rollback.");
  2272. goto("wait");
  2273. }
  2274. if(list.getSize(l) == 0) {
  2275. msg.prefix(player, prefix_hawkeye, "No results to rollback.");
  2276. goto("wait");
  2277. }
  2278. if(list.getSize(l) >= 1000) {
  2279. msg.prefix(player, prefix_hawkeye, "Limit (1000) reached. Edit search parameters.");
  2280. goto("wait");
  2281. }
  2282. counter = hawkeye.rollback(l);
  2283. hawkeye.setUndoList(player, l);
  2284. msg.prefix(player, prefix_hawkeye, concat(text.number(counter), " blocks rollbacked."));
  2285. goto("wait");
  2286. }
  2287. if(arg0 == "undo") {
  2288. l = hawkeye.getUndoList(player);
  2289. if(l == null) {
  2290. msg.prefix(player, prefix_hawkeye, "No rollback to undo.");
  2291. goto("wait");
  2292. }
  2293. if(list.getSize(l) == 0) {
  2294. msg.prefix(player, prefix_hawkeye, "No rollback to undo.");
  2295. goto("wait");
  2296. }
  2297. hawkeye.undo(l);
  2298. hawkeye.setUndoList(player, list.new());
  2299. msg.prefix(player, prefix_hawkeye, "Undo done.");
  2300. goto("wait");
  2301. }
  2302. goto("wait");
  2303. @news
  2304. if(size < 1) {
  2305. msg.prefix(player, prefix_commands, "/news <text>");
  2306. goto("wait");
  2307. }
  2308. message = text.concatList(args, " ", 0, size - 1);
  2309. online_list = players.toList();
  2310. for(i = 0; i < list.getSize(online_list); i++) {
  2311. p = list.getIndex(online_list, i);
  2312. title.reset(p);
  2313. title.setSub(p, concat("by ", player_name));
  2314. title.send(p, "§cNews");
  2315. msg.prefix(p, "§4News", concat("§c", message));
  2316. }
  2317. goto("wait");
  2318. @spawn
  2319. if(size == 1) {
  2320. if(!perm.has(player, "teleport.other")) {
  2321. perm.no(player, "teleport.other");
  2322. goto("wait");
  2323. }
  2324. affectedname = list.getIndex(args, 0);
  2325. affectedplayer = read.player(affectedname);
  2326. if(affectedplayer == null) {
  2327. msg.prefix(player, prefix_commands, "This player is not online.");
  2328. goto("wait");
  2329. }
  2330. }
  2331. if(player.hasMinigame(affectedplayer)) {
  2332. if(size == 1) {
  2333. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  2334. goto("wait");
  2335. }
  2336. msg.prefix(player, prefix_commands, "You can't teleport now.");
  2337. goto("wait");
  2338. }
  2339. if(player.teleport(affectedplayer, serverspawn, true)) {
  2340. if(player == affectedplayer) {
  2341. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the spawn.");
  2342. } else {
  2343. affectedname = player.getName(affectedplayer);
  2344. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the spawn."));
  2345. }
  2346. }
  2347. goto("wait");
  2348. @rank
  2349. msg(player, getSpacer());
  2350. rank = getRank(player);
  2351. msg(player, concat("§6Current rank: §r[", rank, "§r]"));
  2352. msg(player, "Choose a rank:");
  2353. rank.showAll(player);
  2354. goto("wait");
  2355. @setrank
  2356. if(size < 2) {
  2357. msg.prefix(player, prefix_commands, "/setrank <player> <rank>");
  2358. goto("wait");
  2359. }
  2360. p_name = list.getIndex(args, 0);
  2361. if(!checkIfEverOnline(p_name)) {
  2362. msg.prefix(player, prefix_commands, "This player has never been online.");
  2363. goto("wait");
  2364. }
  2365. p = read.player(p_name);
  2366. if(p == null) {
  2367. msg.prefix(player, prefix_commands, "This player is not online.");
  2368. goto("wait");
  2369. }
  2370. p_name = player.getName(p);
  2371. rank = text.concatList(args, " ", 1, size - 1);
  2372. if(!perm.has(player, "setrank.other")) {
  2373. if(player.getName(player) != p_name) {
  2374. perm.no(player, "setrank.other");
  2375. goto("wait");
  2376. }
  2377. colored = text.startsWith(rank, "&", 0);
  2378. if(colored) {
  2379. rank = text.subString(rank, 1, text.length(rank));
  2380. }
  2381. a = rank.getRankArray();
  2382. a_size = array.getSize(a);
  2383. for(i = 0; i < a_size; i++) {
  2384. tech_name = a[i, 0];
  2385. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  2386. perm.no(p, tech_name);
  2387. goto("wait");
  2388. }
  2389. }
  2390. if(colored) {
  2391. rank = concat("&", rank);
  2392. }
  2393. }
  2394. if(text.length(rank) >= 30) {
  2395. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  2396. goto("wait");
  2397. }
  2398. rank = text.replace(rank, "&", "§");
  2399. setRank(p, rank);
  2400. player.setTabName(p);
  2401. msg.prefix(player, prefix_commands, concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  2402. goto("wait");
  2403. @nowb
  2404. if(player.isAfk(player)) {
  2405. player.setAfk(player, false);
  2406. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  2407. player.setTabName(player);
  2408. } else {
  2409. msg.prefix(player, prefix_commands, "You are not afk.");
  2410. }
  2411. goto("wait");
  2412. @afk
  2413. if(player.hasMinigame(player)) {
  2414. msg.prefix(player, prefix_commands, "No afk while in a minigame :P");
  2415. goto("wait");
  2416. }
  2417. nickname = player.getNickname(player);
  2418. if(player.isAfk(player)) {
  2419. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  2420. player.setAfk(player, false);
  2421. } else {
  2422. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  2423. player.setAfk(player, true);
  2424. if(!afk_loop_active) {
  2425. afk_loop_active = true;
  2426. sgoto(30, "afk_loop");
  2427. }
  2428. }
  2429. player.setTabName(player);
  2430. goto("wait");
  2431. @silentjoin
  2432. silentjoin = player.getSilentJoin(player);
  2433. if(silentjoin) {
  2434. player.setSilentJoin(player, false);
  2435. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  2436. } else {
  2437. player.setSilentJoin(player, true);
  2438. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  2439. }
  2440. goto("wait");
  2441. @jumpto
  2442. loc = player.getTarget(player, 100);
  2443. if(block.isAir(loc)) {
  2444. msg.prefix(player, prefix_commands, "No block in sight.");
  2445. goto("wait");
  2446. }
  2447. y = loc.getY(loc);
  2448. while(y < 254 && !block.isAir(loc)) {
  2449. loc.setY(loc, y);
  2450. y++;
  2451. }
  2452. player.teleport(player, loc.mod(loc, 0, 1, 0), true);
  2453. goto("wait");
  2454. @jailloop
  2455. size = list.getSize(jailed_list);
  2456. for(i = 0; i < size; i++) {
  2457. p_name = player.getName(list.getIndex(jailed_list, i));
  2458. showJail(p_name);
  2459. }
  2460. if(size > 0) {
  2461. jail_loop_active = true;
  2462. sgoto(5, "jailloop");
  2463. } else {
  2464. jail_loop_active = false;
  2465. }
  2466. goto("wait");
  2467. @coordsloop
  2468. list = players.toList();
  2469. size = list.getSize(list);
  2470. for(i = 0; i < size; i++) {
  2471. p = list.getIndex(list, i);
  2472. if(player.getShowcoords(p)) {
  2473. p_loc = entity.getLocation(p);
  2474. display.add(p, 30, concat("§6X§r ", text.number(loc.getCoord(p_loc, "bx")), " §6Y§r ", text.number(loc.getCoord(p_loc, "by")), " §6Z§r ", text.number(loc.getCoord(p_loc, "bz"))));
  2475. }
  2476. }
  2477. sgoto(10, "coordsloop");
  2478. goto("wait");
  2479. @afk_loop
  2480. if(!afk_loop_active) {
  2481. goto("wait");
  2482. }
  2483. afk_map = getScriptVar("afk_map");
  2484. iter = map.iterator(afk_map);
  2485. while(hasNext(iter)) {
  2486. element = next(iter);
  2487. yaw = map.getValue(element);
  2488. player = player.get(map.getKey(element));
  2489. if(player != null) {
  2490. if(yaw != loc.getYaw(entity.getLocation(player))) {
  2491. nickname = player.getNickname(player);
  2492. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  2493. remove(iter);
  2494. player.setAfk(player, false);
  2495. player.setTabName(player);
  2496. }
  2497. }
  2498. }
  2499. size = map.getSize(afk_map);
  2500. if(size > 0) {
  2501. afk_loop_active = true;
  2502. sgoto(30, "afk_loop");
  2503. } else {
  2504. afk_loop_active = false;
  2505. }
  2506. goto("wait");
  2507. @minute_loop
  2508. cal = time.new(time.getMillis());
  2509. timer_day = time.getDay(cal);
  2510. if(old_timer_day == null) {
  2511. old_timer_day = timer_day;
  2512. }
  2513. if(timer_day != old_timer_day) {
  2514. old_timer_day = timer_day;
  2515. //Tageswechsel
  2516. decreaseHomeBoost();
  2517. }
  2518. sgoto(1200, "minute_loop");
  2519. goto("wait");
  2520. @afk_checker_loop
  2521. online_list = players.toList();
  2522. iter = list.iterator(online_list);
  2523. while(hasNext(iter)) {
  2524. uuid = next(iter);
  2525. p = player.get(uuid);
  2526. if(player.hasMinigame(p)) {
  2527. continue;
  2528. }
  2529. yaw = loc.getYaw(entity.getLocation(p));
  2530. a = map.get(afk_checker_map, uuid);
  2531. if(a == null) {
  2532. a = array.new(2);
  2533. a[0] = yaw;
  2534. a[1] = 0;
  2535. map.add(afk_checker_map, uuid, a);
  2536. continue;
  2537. }
  2538. last_yaw = a[0];
  2539. counter = a[1];
  2540. if(last_yaw == yaw) {
  2541. counter++;
  2542. } else {
  2543. counter = 0;
  2544. }
  2545. a[0] = yaw;
  2546. a[1] = counter;
  2547. map.add(afk_checker_map, uuid, a);
  2548. if(counter == 5) {
  2549. nickname = player.getNickname(p);
  2550. if(player.isAfk(p)) {
  2551. continue;
  2552. }
  2553. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  2554. player.setAfk(p, true);
  2555. player.setTabName(p);
  2556. if(!afk_loop_active) {
  2557. afk_loop_active = true;
  2558. sgoto(30, "afk_loop");
  2559. }
  2560. }
  2561. }
  2562. sgoto(1200, "afk_checker_loop");
  2563. goto("wait");
  2564. @pvp
  2565. if(size == 0) {
  2566. if(hasPvpOn(player)) {
  2567. mode = "off";
  2568. } else {
  2569. mode = "on";
  2570. }
  2571. } elseif(size == 1) {
  2572. mode = list.getIndex(args, 0);
  2573. if(!(mode == "on" || mode == "off")) {
  2574. goto("pvphelp");
  2575. }
  2576. } elseif(size == 2) {
  2577. if(!perm.has(player, "pvp.other")) {
  2578. perm.no(player, "pvp.other");
  2579. goto("wait");
  2580. }
  2581. mode = list.getIndex(args, 0);
  2582. if(!(mode == "on" || mode == "off")) {
  2583. goto("pvphelp");
  2584. }
  2585. affectedname = list.getIndex(args, 1);
  2586. if(!checkIfEverOnline(affectedname)) {
  2587. msg.prefix(player, prefix_commands, "This player has never been online.");
  2588. goto("wait");
  2589. }
  2590. affectedplayer = read.player(affectedname);
  2591. if(affectedplayer == null) {
  2592. msg.prefix(player, prefix_commands, "This player is not online.");
  2593. goto("wait");
  2594. }
  2595. } else {
  2596. @pvphelp
  2597. if(perm.has(player, "pvp.other")) {
  2598. msg.prefix(player, prefix_commands, "/pvp [on/off] [player]");
  2599. } else {
  2600. msg.prefix(player, prefix_commands, "/pvp [on/off]");
  2601. }
  2602. goto("wait");
  2603. }
  2604. if(mode == "on") {
  2605. setPvp(affectedplayer, true);
  2606. msg.prefix(affectedplayer, prefix_commands, "You have enabled PvP!");
  2607. if(affectedplayer != player) {
  2608. affectedname = player.getName(affectedplayer);
  2609. msg.prefix(player, prefix_commands, concat(affectedname, " has now enabled PvP!"));
  2610. }
  2611. } else {
  2612. setPvp(affectedplayer, false);
  2613. msg.prefix(affectedplayer, prefix_commands, "You have PvP disabled!");
  2614. if(affectedplayer != player) {
  2615. affectedname = player.getName(affectedplayer);
  2616. msg.prefix(player, prefix_commands, concat(affectedname, " has now disabled PvP!"));
  2617. }
  2618. }
  2619. goto("wait");
  2620. @suicide
  2621. if(size < 0 || size > 1) {
  2622. msg.prefix(player, prefix_commands, "/suicide [player]");
  2623. goto("wait");
  2624. }
  2625. if(size == 1) {
  2626. if(!perm.has(player, "suicide.other")) {
  2627. perm.no(player, "suicide.other");
  2628. goto("wait");
  2629. }
  2630. affectedname = list.getIndex(args, 0);
  2631. affectedplayer = read.player(affectedname);
  2632. if(affectedplayer == null) {
  2633. msg.prefix(player, prefix_commands, "This player is not online.");
  2634. goto("wait");
  2635. }
  2636. }
  2637. if(affectedplayer != player) {
  2638. affectedname = player.getName(affectedplayer);
  2639. msg.prefix(player, prefix_commands, concat(affectedname, " has been killed."));
  2640. msg.prefix(affectedplayer, prefix_commands, concat("You have been killed by ", player_name, "."));
  2641. } else {
  2642. msg.prefix(affectedplayer, prefix_commands, "You killed yourself.");
  2643. }
  2644. living.damage(affectedplayer, 1000);
  2645. goto("wait");
  2646. @nickname
  2647. if(size < 1) {
  2648. msg.prefix(player, "§eNickname", "/nickname ...");
  2649. msg(player, "§e - <name> ", "Sets a nickname");
  2650. msg(player, "§e - remove ", "Removes a nickname");
  2651. goto("wait");
  2652. }
  2653. nickname = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  2654. if(nickname == "remove") {
  2655. player.removeNickName(player);
  2656. msg.prefix(player, prefix_commands, concat("Your nickname was removed."));
  2657. } else {
  2658. player.setNickName(player, nickname);
  2659. msg.prefix(player, prefix_commands, concat("Your nickname was changed to ", nickname, "§r."));
  2660. }
  2661. player.setTabName(player);
  2662. player.setHeadName(player);
  2663. goto("wait");
  2664. @iteminfo
  2665. item = living.getEquip(player, "hand");
  2666. text = text.item(item);
  2667. text = text.replace(text, "\"", "\\\"");
  2668. msg(player, text.clipBoard(text, text));
  2669. goto("wait");
  2670. @perm
  2671. if(size == 0) {
  2672. @perm_syntax
  2673. msg.prefix(player, prefix_perms, "§r/perm ...");
  2674. if(perm.has(player, "perm.give")) {
  2675. msg(player, "§6 - give <player> <perm>");
  2676. }
  2677. if(perm.has(player, "perm.remove")) {
  2678. msg(player, "§6 - remove <player> <perm>");
  2679. }
  2680. if(perm.has(player, "perm.removeall")) {
  2681. msg(player, "§6 - removeall <player>");
  2682. }
  2683. if(perm.has(player, "perm.list")) {
  2684. msg(player, "§6 - list <player>");
  2685. }
  2686. if(perm.has(player, "perm.toggle")) {
  2687. msg(player, "§6 - toggle");
  2688. }
  2689. goto("wait");
  2690. }
  2691. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2692. if(arg0 == "give") {
  2693. if(!perm.has(player, "perm.give")) {
  2694. perm.no(player, "perm.give");
  2695. goto("wait");
  2696. }
  2697. if(size != 3) {
  2698. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  2699. } else {
  2700. p_name = list.getIndex(args, 1);
  2701. perm = list.getIndex(args, 2);
  2702. if(!checkIfEverOnline(p_name)) {
  2703. msg.prefix(player, prefix_perms, "This player has never been online.");
  2704. goto("wait");
  2705. }
  2706. if(!perm.isGroupName(perm)) {
  2707. msg.prefix(player, prefix_perms, "This is not a permission group.");
  2708. goto("wait");
  2709. }
  2710. if(!perm.has(player, "isAdmin")) {
  2711. if(perm == "admin" || perm == "mod" || perm == "bypass") {
  2712. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  2713. goto("wait");
  2714. }
  2715. }
  2716. p_uuid = player.getUuid(p_name);
  2717. p_id = player.getId(p_uuid);
  2718. p_name = player.getName(p_uuid);
  2719. perm_id = perm.getIdFromGroupname(perm);
  2720. if(player.hasPermGroup(p_id, perm_id)) {
  2721. msg.prefix(player, prefix_perms, "Perm already added.");
  2722. goto("wait");
  2723. }
  2724. if(isOnline(p_name)) {
  2725. p = read.player(p_name);
  2726. rank = perm.getRankFromGroupname(perm);
  2727. if(rank != null) {
  2728. offerRank(p, rank.getTechName(rank));
  2729. }
  2730. }
  2731. givePerm(p_id, perm_id);
  2732. msg.prefix(player, prefix_perms, concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  2733. }
  2734. goto("wait");
  2735. }
  2736. if(arg0 == "remove") {
  2737. if(!perm.has(player, "perm.remove")) {
  2738. perm.no(player, "perm.remove");
  2739. goto("wait");
  2740. }
  2741. if(size != 3) {
  2742. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  2743. } else {
  2744. p_name = list.getIndex(args, 1);
  2745. perm = list.getIndex(args, 2);
  2746. if(!checkIfEverOnline(p_name)) {
  2747. msg.prefix(player, prefix_perms, "This player has never been online.");
  2748. goto("wait");
  2749. }
  2750. if(!perm.isGroupName(perm)) {
  2751. msg.prefix(player, prefix_perms, "This is not a permission group.");
  2752. goto("wait");
  2753. }
  2754. if(!perm.has(player, "isAdmin")) {
  2755. if(perm == "admin" || perm == "mod" || perm == "bypass") {
  2756. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  2757. goto("wait");
  2758. }
  2759. }
  2760. p_uuid = player.getUuid(p_name);
  2761. p_id = player.getId(p_uuid);
  2762. p_name = player.getName(p_uuid);
  2763. //Wenn marvinius eine Permission entfernt wird, wird dies blockiert, ausgenommen er tut dies selbst
  2764. player_id = player.getId(player);
  2765. if(player_id != 2) {
  2766. if(p_id == 2) {
  2767. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  2768. goto("wait");
  2769. }
  2770. }
  2771. perm_id = perm.getIdFromGroupname(perm);
  2772. if(!player.hasPermGroup(p_id, perm_id)) {
  2773. msg.prefix(player, prefix_perms, "This player doesn't have that perm.");
  2774. goto("wait");
  2775. }
  2776. removePerm(p_id, perm_id);
  2777. msg.prefix(player, prefix_perms, concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  2778. }
  2779. goto("wait");
  2780. }
  2781. if(arg0 == "removeall") {
  2782. if(!perm.has(player, "perm.removeall")) {
  2783. perm.no(player, "perm.removeall");
  2784. goto("wait");
  2785. }
  2786. if(size != 2) {
  2787. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  2788. } else {
  2789. p_name = list.getIndex(args, 1);
  2790. if(!checkIfEverOnline(p_name)) {
  2791. msg.prefix(player, prefix_perms, "This player has never been online.");
  2792. goto("wait");
  2793. }
  2794. //Wenn marvinius Permissions entfernt werden, wird dies blockiert, ausgenommen er tut dies selbst
  2795. p_id = player.getId(player.getUuid(p_name));
  2796. player_id = player.getId(player);
  2797. if(player_id != 2) {
  2798. if(p_id == 2) {
  2799. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  2800. goto("wait");
  2801. }
  2802. }
  2803. removeAllPerms(p_id);
  2804. msg.prefix(player, prefix_perms, concat("All perms of §7", p_name, " §rwere removed."));
  2805. }
  2806. goto("wait");
  2807. }
  2808. if(arg0 == "list") {
  2809. if(!perm.has(player, "perm.list")) {
  2810. perm.no(player, "perm.list");
  2811. goto("wait");
  2812. }
  2813. if(size != 2) {
  2814. msg.prefix(player, prefix_perms, "/perm list <player>");
  2815. } else {
  2816. p_name = list.getIndex(args, 1);
  2817. if(!checkIfEverOnline(p_name)) {
  2818. msg.prefix(player, prefix_perms, "This player has never been online.");
  2819. goto("wait");
  2820. }
  2821. p_id = player.getId(player.getUuid(p_name));
  2822. permslist = getPermsFromPlayer(p_id);
  2823. listsize = list.getSize(permslist);
  2824. if(listsize == 0) {
  2825. msg.prefix(player, prefix_perms, "No permissions found.");
  2826. } else {
  2827. msg.prefix(player, prefix_perms, p_name);
  2828. for(i = 0; i < listsize; i++) {
  2829. msg(player, " - ", perm.getNameFromId(list.getIndex(permslist, i)));
  2830. }
  2831. }
  2832. }
  2833. goto("wait");
  2834. }
  2835. if(arg0 == "toggle") {
  2836. if(!perm.has(player, "perm.toggle")) {
  2837. perm.no(player, "perm.toggle");
  2838. goto("wait");
  2839. }
  2840. player_id = player.getId(player);
  2841. if(perm.has(player, "pseudoPerm")) {
  2842. reloadAllPerms(player_id);
  2843. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  2844. } else {
  2845. removeAllPermsTemporarly(player_id);
  2846. msg.prefix(player, prefix_commands, "Have fun as a user.");
  2847. }
  2848. goto("wait");
  2849. }
  2850. goto("perm_syntax");
  2851. @allsounds
  2852. if(size == 0) {
  2853. msg.prefix(player, prefix_commands, "§r/allsounds...");
  2854. msg(player, "§e - start");
  2855. msg(player, "§e - stop");
  2856. goto("wait");
  2857. }
  2858. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2859. if(arg0 == "start") {
  2860. if(!map.exists(sounds_map)) {
  2861. sounds_map = map.new();
  2862. }
  2863. player_uuid = player.getUuid(player);
  2864. script_id = map.get(sounds_map, player_uuid);
  2865. if(script_id != null) {
  2866. script = script.getFromId(script_id);
  2867. if(script != null) {
  2868. msg.prefix(player, prefix_commands, "Sounds already started.");
  2869. goto("wait");
  2870. }
  2871. }
  2872. script = script.start("system/playsounds");
  2873. script.setVar(script, "player", player);
  2874. map.add(sounds_map, player.getUuid(player), script.getId(script));
  2875. msg.prefix(player, prefix_commands, "Sounds started.");
  2876. goto("wait");
  2877. }
  2878. if(arg0 == "stop") {
  2879. if(!map.exists(sounds_map)) {
  2880. sounds_map = map.new();
  2881. }
  2882. script_id = map.get(sounds_map, player.getUuid(player));
  2883. if(script_id == null) {
  2884. msg.prefix(player, prefix_commands, "No sounds playing.");
  2885. goto("wait");
  2886. }
  2887. script = script.getFromId(script_id);
  2888. if(script == null) {
  2889. msg.prefix(player, prefix_commands, "No sounds playing.");
  2890. goto("wait");
  2891. }
  2892. script.term(script);
  2893. msg.prefix(player, prefix_commands, "Sounds stopped.");
  2894. goto("wait");
  2895. }
  2896. goto("wait");
  2897. @weather
  2898. if(size == 0) {
  2899. @weather_syntax
  2900. msg.prefix(player, "§eWeather", "§r/weather ...");
  2901. msg(player, "§e - clear [duration]");
  2902. msg(player, "§e - rain [duration]");
  2903. msg(player, "§e - thunder [duration]");
  2904. goto("wait");
  2905. }
  2906. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2907. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  2908. if(size == 2) {
  2909. duration = list.getIndex(args, 1);
  2910. if(!isDouble(duration)) {
  2911. msg.prefix(player, prefix_commands, "Number expected.");
  2912. goto("wait");
  2913. }
  2914. if(duration < 0) {
  2915. msg.prefix(player, prefix_commands, "Positive number expected.");
  2916. goto("wait");
  2917. }
  2918. } else {
  2919. duration = 12000;
  2920. }
  2921. world = loc.getWorld(entity.getLocation(player));
  2922. if(arg0 == "clear") {
  2923. if(size > 2) {
  2924. msg.prefix(player, prefix_commands, "/weather clear [duration]");
  2925. goto("wait");
  2926. }
  2927. world.clearWeather(world, duration);
  2928. msg.prefix(player, prefix_commands, "Weather cleared.");
  2929. goto("wait");
  2930. }
  2931. if(arg0 == "rain") {
  2932. if(size > 2) {
  2933. msg.prefix(player, prefix_commands, "§r/weather rain [duration]");
  2934. goto("wait");
  2935. }
  2936. world.setRain(world, duration);
  2937. msg.prefix(player, prefix_commands, "Weather set to rain.");
  2938. goto("wait");
  2939. }
  2940. if(arg0 == "thunder") {
  2941. if(size > 2) {
  2942. msg.prefix(player, prefix_commands, "/weather thunder [duration]");
  2943. goto("wait");
  2944. }
  2945. world.setThunder(world, duration);
  2946. msg.prefix(player, prefix_commands, "Weather set to thunder.");
  2947. goto("wait");
  2948. }
  2949. goto("wait");
  2950. }
  2951. goto("weather_syntax");
  2952. @time
  2953. if(size == 0) {
  2954. @time_syntax
  2955. msg.prefix(player, "§eTime", "/time ...");
  2956. msg(player, "§e - set <time>");
  2957. msg(player, "§e - add <time>");
  2958. msg(player, "§e - <day / noon / night / midnight>");
  2959. goto("wait");
  2960. }
  2961. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2962. if(arg0 == "set") {
  2963. if(size != 2) {
  2964. msg.prefix(player, prefix_commands, "/time set <time>");
  2965. goto("wait");
  2966. }
  2967. setTime = list.getIndex(args, 1);
  2968. if(!isDouble(setTime)) {
  2969. msg.prefix(player, prefix_commands, "Number expected.");
  2970. goto("wait");
  2971. }
  2972. if(setTime < 0) {
  2973. msg.prefix(player, prefix_commands, "Positive number expected.");
  2974. goto("wait");
  2975. }
  2976. world = loc.getWorld(entity.getLocation(player));
  2977. while(setTime >= 24000) {
  2978. setTime -= 24000;
  2979. }
  2980. world.setTime(world, setTime);
  2981. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(setTime), "."));
  2982. goto("wait");
  2983. }
  2984. if(arg0 == "add") {
  2985. if(size != 2) {
  2986. msg.prefix(player, prefix_commands, "/time add <time>");
  2987. goto("wait");
  2988. }
  2989. addTime = list.getIndex(args, 1);
  2990. if(!isDouble(addTime)) {
  2991. msg.prefix(player, prefix_commands, "Number expected.");
  2992. goto("wait");
  2993. }
  2994. if(addTime < 0) {
  2995. msg.prefix(player, prefix_commands, "Positive number expected.");
  2996. goto("wait");
  2997. }
  2998. world = loc.getWorld(entity.getLocation(player));
  2999. newtime = world.getTime(world) + addTime;
  3000. while(newtime >= 24000) {
  3001. newtime -= 24000;
  3002. }
  3003. world.setTime(world, newtime);
  3004. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  3005. goto("wait");
  3006. }
  3007. newtime = null;
  3008. if(arg0 == "day") {
  3009. newtime = 1000;
  3010. } elseif(arg0 == "noon") {
  3011. newtime = 6000;
  3012. } elseif(arg0 == "night") {
  3013. newtime = 13000;
  3014. } elseif(arg0 == "midnight") {
  3015. newtime = 18000;
  3016. }
  3017. if(newtime != null) {
  3018. world = loc.getWorld(entity.getLocation(player));
  3019. world.setTime(world, newtime);
  3020. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  3021. goto("wait");
  3022. }
  3023. goto("time_syntax");
  3024. @gamerule
  3025. world = loc.getWorld(entity.getLocation(player));
  3026. if(size == 0) {
  3027. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  3028. goto("wait");
  3029. }
  3030. gamerule_string = list.getIndex(args, 0);
  3031. gamerule_key = gamerule.getKey(gamerule_string);
  3032. if(gamerule_key == null) {
  3033. msg.prefix(player, prefix_commands, "Gamerule doesn't exist.");
  3034. goto("wait");
  3035. }
  3036. gamerule_value = gamerule.getValue(world, gamerule_key);
  3037. if(size == 1) {
  3038. if(gamerule.isBool(gamerule_value)) {
  3039. value = gamerule.getBool(gamerule_value);
  3040. } elseif(gamerule.isInt(gamerule_value)) {
  3041. value = text.number(gamerule.getInt(gamerule_value));
  3042. } else {
  3043. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  3044. goto("wait");
  3045. }
  3046. msg.prefix(player, prefix_commands, concat(gamerule_string, " ", value));
  3047. goto("wait");
  3048. }
  3049. if(size == 2) {
  3050. if(!perm.has(player, "gamerule.write")) {
  3051. perm.no(player, "gamerule.write");
  3052. goto("wait");
  3053. }
  3054. value = list.getIndex(args, 1);
  3055. if(gamerule.isBool(gamerule_value)) {
  3056. if(!isBool(value)) {
  3057. msg.prefix(player, prefix_commands, "Boolean expected.");
  3058. goto("wait");
  3059. }
  3060. gamerule.setBool(gamerule_value, value);
  3061. } elseif(gamerule.isInt(gamerule_value)) {
  3062. if(!isDouble(value)) {
  3063. msg.prefix(player, prefix_commands, "Number expected.");
  3064. goto("wait");
  3065. }
  3066. gamerule.setInt(gamerule_value, value);
  3067. value = text.number(value);
  3068. } else {
  3069. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  3070. goto("wait");
  3071. }
  3072. if(world.getName(world) == "overworld") {
  3073. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, "."));
  3074. } else {
  3075. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, " (not persistent)."));
  3076. }
  3077. goto("wait");
  3078. }
  3079. goto("wait");
  3080. @tip
  3081. if(size == 0) {
  3082. msg.prefix(player, prefix_tips, "§r/tip ...");
  3083. msg(player, "§e - list §rList all tips");
  3084. msg(player, "§e - add <tip> <text> §rAdds a tip");
  3085. msg(player, "§e - remove <tip> §rRemoves a tip");
  3086. msg(player, "§e - loop <tip> <boolean> §rTrue shows on tip loop");
  3087. msg(player, "§e - <tip> [player] §rSends a tip to all/a player");
  3088. goto("wait");
  3089. }
  3090. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3091. if(arg0 == "list") {
  3092. msg(player, "§r--==§eTipps§r==--");
  3093. list = tip.getAll();
  3094. if(list.getSize(list) == 0) {
  3095. msg.prefix(player, prefix_tips, "No tips available.");
  3096. goto("wait");
  3097. }
  3098. iter = iterator(list);
  3099. while(hasNext(iter)) {
  3100. a = next(iter);
  3101. tipp_key = a[0];
  3102. tipp_value = a[1];
  3103. tipp_loop = a[2];
  3104. if(tipp_loop) {
  3105. tipp_loop = concat("§a", tipp_loop);
  3106. } else {
  3107. tipp_loop = concat("§c", tipp_loop);
  3108. }
  3109. msg(player, concat(" ", tipp_loop, " §e", tipp_key, "§r : ", tipp_value));
  3110. }
  3111. goto("wait");
  3112. }
  3113. if(arg0 == "add") {
  3114. if(size < 3) {
  3115. msg.prefix(player, prefix_commands, "/tip add <name> <text>");
  3116. goto("wait");
  3117. }
  3118. tipp_key = list.getIndex(args, 1);
  3119. tipp_value = concatList(args, " ", 2, size - 1);
  3120. tipp_value = text.replace(tipp_value, "&", "§");
  3121. tipp.register(tipp_key, tipp_value);
  3122. msg.prefix(player, prefix_tips, "Tip added.");
  3123. goto("wait");
  3124. }
  3125. if(arg0 == "loop") {
  3126. if(size != 3) {
  3127. msg.prefix(player, prefix_commands, "/tip loop <tip> <boolean>");
  3128. goto("wait");
  3129. }
  3130. tipp_key = list.getIndex(args, 1);
  3131. tipp_value = tipp.get(tipp_key);
  3132. if(tipp_value == null) {
  3133. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3134. goto("wait");
  3135. }
  3136. boolean = list.getIndex(args, 2);
  3137. if(text.class(boolean) != "Boolean") {
  3138. msg.prefix(player, prefix_tips, "True or false expected.");
  3139. goto("wait");
  3140. }
  3141. if(boolean) {
  3142. tip.setLoop(tipp_key, boolean);
  3143. } else {
  3144. tip.setLoop(tipp_key, boolean);
  3145. }
  3146. msg.prefix(player, prefix_tips, "Tip settings changed.");
  3147. goto("wait");
  3148. }
  3149. if(arg0 == "remove") {
  3150. if(size != 2) {
  3151. msg.prefix(player, prefix_commands, "/tip remove <name>");
  3152. goto("wait");
  3153. }
  3154. tipp_key = list.getIndex(args, 1);
  3155. tip.remove(tipp_key);
  3156. msg.prefix(player, prefix_tips, "Tip removed.");
  3157. goto("wait");
  3158. }
  3159. tipp_key = arg0;
  3160. tipp_value = tipp.get(tipp_key);
  3161. if(tipp_value == null) {
  3162. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3163. goto("wait");
  3164. }
  3165. if(size == 1) {
  3166. p = "online";
  3167. } else {
  3168. p_name = list.getIndex(args, 1);
  3169. if(!isOnline(p_name)) {
  3170. msg.prefix(player, prefix_tips, "This player is not online.");
  3171. goto("wait");
  3172. }
  3173. p = read.player(p_name);
  3174. msg.prefix(player, prefix_tips, concat("Tip sent to §7", p_name, "§r."));
  3175. }
  3176. if(text.contains(tipp_value, "https://")) {
  3177. a = text.getLinkMessage(tipp_value);
  3178. msg_before = a[0];
  3179. msg_link = a[1];
  3180. msg_after = a[2];
  3181. msg(p, concat("§r[§e", player.getName(player), "§r] "), msg_before, msg_link, msg_after);
  3182. goto("wait");
  3183. }
  3184. msg(p, concat("§r[§e", player.getName(player), "§r] ", tipp_value));
  3185. goto("wait");
  3186. @help
  3187. if(size > 1) {
  3188. msg.prefix(player, prefix_commands, "/help [side]");
  3189. goto("wait");
  3190. }
  3191. //Auf Permission überprüfen
  3192. temp_list = list.new();
  3193. for(i = 0; i < list.getSize(command_list); i++) {
  3194. command = list.getIndex(command_list, i);
  3195. if(perm.has(player, command)) {
  3196. list.add(temp_list, command);
  3197. }
  3198. }
  3199. list.sort(temp_list);
  3200. temp_size = list.getSize(temp_list);
  3201. max_side = temp_size / 10;
  3202. if(size == 0) {
  3203. side = 1;
  3204. print_side = side - 1;
  3205. } else {
  3206. side = list.getIndex(args, 0);
  3207. if(!isDouble(side)) {
  3208. msg.prefix(player, prefix_commands, "/help [side]");
  3209. goto("wait");
  3210. }
  3211. print_side = side - 1;
  3212. if(print_side < 0 || print_side > max_side) {
  3213. msg.prefix(player, prefix_commands, concat("Möglich: 1 - ", text.number(math.roundDown(max_side + 1))));
  3214. goto("wait");
  3215. }
  3216. }
  3217. msg(player, concat("§a --- Help ", text.number(side), " ---"));
  3218. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  3219. if(i < temp_size) {
  3220. command = list.getIndex(temp_list, i);
  3221. command = text.hover(command, map.getOrDefault(command_map, command, ""));
  3222. msg(player, " /", command);
  3223. }
  3224. }
  3225. if(side == 1) {
  3226. backward = "§c<<Backward<<";
  3227. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  3228. } elseif(side > max_side) {
  3229. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  3230. forward = "§c>>Forward>>";
  3231. } else {
  3232. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  3233. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  3234. }
  3235. msg(player, backward, " ", forward);
  3236. goto("wait");
  3237. @cli
  3238. if(size != 1) {
  3239. msg.prefix(player, prefix_commands, "/cli <radius>");
  3240. goto("wait");
  3241. }
  3242. radius = list.getIndex(args, 0);
  3243. if(!isDouble(radius) || radius < 0) {
  3244. msg.prefix(player, prefix_commands, "Positive number expected.");
  3245. goto("wait");
  3246. }
  3247. entity.removeAll("net.minecraft.entity.item.ItemEntity", entity.getLocation(player), radius);
  3248. msg.prefix(player, prefix_commands, "Items removed.");
  3249. goto("wait");
  3250. @plough
  3251. if(size != 1) {
  3252. msg.prefix(player, prefix_commands, "/plough <radius>");
  3253. goto("wait");
  3254. }
  3255. radius = list.getIndex(args, 0);
  3256. if(!isDouble(radius)) {
  3257. msg.prefix(player, prefix_commands, "Number expected.");
  3258. goto("wait");
  3259. }
  3260. if(radius < 0) {
  3261. msg.prefix(player, prefix_commands, "Positive number expected.");
  3262. goto("wait");
  3263. }
  3264. center_loc = getBlockLocation(entity.getLocation(player));
  3265. for(x = radius * -1; x <= radius; x++) {
  3266. for(z = radius * -1; z <= radius; z++) {
  3267. for(y = radius * -1; y <= radius; y++) {
  3268. length = math.hypot(x, math.hypot(y, z));
  3269. if(length <= radius) {
  3270. mod_loc = loc.mod(center_loc, x, y, z);
  3271. block = block.get(mod_loc);
  3272. if(block.hasTag(dirt_tag, block) && block.getType(loc.mod(mod_loc, 0, 1, 0)) == "minecraft:air") {
  3273. block.set(mod_loc, "minecraft:farmland[moisture=7]");
  3274. }
  3275. }
  3276. }
  3277. }
  3278. }
  3279. msg.prefix(player, prefix_commands, "Field ploughed.");
  3280. goto("wait");
  3281. @plant
  3282. if(size != 1) {
  3283. msg.prefix(player, prefix_commands, "/plant <radius>");
  3284. goto("wait");
  3285. }
  3286. radius = list.getIndex(args, 0);
  3287. if(!isDouble(radius)) {
  3288. msg.prefix(player, prefix_commands, "Number expected.");
  3289. goto("wait");
  3290. }
  3291. if(radius < 0) {
  3292. msg.prefix(player, prefix_commands, "Positive number expected.");
  3293. goto("wait");
  3294. }
  3295. center_loc = getBlockLocation(entity.getLocation(player));
  3296. for(x = radius * -1; x <= radius; x++) {
  3297. for(z = radius * -1; z <= radius; z++) {
  3298. for(y = radius * -1; y <= radius; y++) {
  3299. length = math.hypot(x, math.hypot(y, z));
  3300. if(length <= radius) {
  3301. mod_loc = loc.mod(center_loc, x, y, z);
  3302. upper_loc = loc.mod(mod_loc, 0, 1, 0);
  3303. if(block.getType(mod_loc) == "minecraft:farmland" && block.getType(upper_loc) == "minecraft:air") {
  3304. block.set(upper_loc, "minecraft:wheat[age=7]");
  3305. }
  3306. }
  3307. }
  3308. }
  3309. }
  3310. msg.prefix(player, prefix_commands, "Field planted.");
  3311. goto("wait");
  3312. @grow
  3313. if(size != 1) {
  3314. msg.prefix(player, prefix_commands, "/grow <radius>");
  3315. goto("wait");
  3316. }
  3317. radius = list.getIndex(args, 0);
  3318. if(!isDouble(radius)) {
  3319. msg.prefix(player, prefix_commands, "Number expected.");
  3320. goto("wait");
  3321. }
  3322. if(radius < 0) {
  3323. msg.prefix(player, prefix_commands, "Positive number expected.");
  3324. goto("wait");
  3325. }
  3326. center_loc = getBlockLocation(entity.getLocation(player));
  3327. grow(center_loc, radius);
  3328. msg.prefix(player, prefix_commands, "Field grown.");
  3329. goto("wait");
  3330. @start
  3331. if(size != 1) {
  3332. @starthelp
  3333. msg.prefix(sender, prefix_commands, "/start ...");
  3334. msg(sender, " - ai");
  3335. msg(sender, " - chat");
  3336. msg(sender, " - commands");
  3337. msg(sender, " - creative");
  3338. msg(sender, " - damage");
  3339. msg(sender, " - doors");
  3340. msg(sender, " - fixitems");
  3341. msg(sender, " - friends");
  3342. msg(sender, " - games");
  3343. msg(sender, " - gemstones");
  3344. msg(sender, " - harvest");
  3345. msg(sender, " - hawkeye");
  3346. msg(sender, " - herobrine");
  3347. msg(sender, " - lectern");
  3348. msg(sender, " - loom");
  3349. msg(sender, " - mails");
  3350. msg(sender, " - mobarena");
  3351. msg(sender, " - perms");
  3352. msg(sender, " - playerdata");
  3353. msg(sender, " - pumpkin");
  3354. msg(sender, " - recipes");
  3355. msg(sender, " - scheduler");
  3356. msg(sender, " - shop");
  3357. msg(sender, " - sitting");
  3358. msg(sender, " - stats");
  3359. msg(sender, " - story");
  3360. msg(sender, " - survival");
  3361. msg(sender, " - ticket");
  3362. msg(sender, " - timber");
  3363. msg(sender, " - trader");
  3364. msg(sender, " - voxel");
  3365. goto("wait");
  3366. }
  3367. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3368. modTimer(-500);
  3369. if(arg0 == "ai") {
  3370. script = script.get("Ai");
  3371. if(script != null) {
  3372. script.term(script);
  3373. }
  3374. script.startNamed("Ai", "system/ai", "utils/u_general");
  3375. }
  3376. elseif(arg0 == "commands") {
  3377. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
  3378. if(script == null) {
  3379. snuvi.debug("Old commands script still active due to error in new script");
  3380. goto("wait");
  3381. }
  3382. script.term(script.get());
  3383. }
  3384. elseif(arg0 == "chat") {
  3385. script = script.get("Chat");
  3386. if(script != null) {
  3387. script.term(script);
  3388. }
  3389. script.startNamed("Chat", "utils/u_error", "system/chat", "utils/u_general");
  3390. }
  3391. elseif(arg0 == "creative") {
  3392. script = script.get("Creative");
  3393. if(script != null) {
  3394. script.term(script);
  3395. }
  3396. script.startNamed("Creative", "utils/u_error", "system/creative", "utils/u_general");
  3397. }
  3398. elseif(arg0 == "damage") {
  3399. script = script.get("Damage");
  3400. if(script != null) {
  3401. script.term(script);
  3402. }
  3403. script.startNamed("Damage", "utils/u_error", "system/damage", "utils/u_general");
  3404. }
  3405. elseif(arg0 == "doors") {
  3406. script = script.get("Doors");
  3407. if(script != null) {
  3408. script.term(script);
  3409. }
  3410. script.startNamed("Doors", "utils/u_error", "system/doors", "utils/u_general");
  3411. }
  3412. elseif(arg0 == "fixitems") {
  3413. script = script.get("Fixitems");
  3414. if(script != null) {
  3415. script.term(script);
  3416. }
  3417. script.startNamed("Fixitems", "utils/u_error", "system/fixitems", "utils/u_general");
  3418. }
  3419. elseif(arg0 == "games") {
  3420. script = script.get("Gamecenter");
  3421. if(script != null) {
  3422. script.term(script);
  3423. }
  3424. script.startNamed("Gamecenter", "utils/u_error", "system/gamecenter", "utils/u_general", "utils/u_games");
  3425. }
  3426. elseif(arg0 == "gemstones") {
  3427. script = script.get("Gemstones");
  3428. if(script != null) {
  3429. script.term(script);
  3430. }
  3431. script.startNamed("Gemstones", "utils/u_error", "survival/gemstones", "utils/u_general");
  3432. }
  3433. elseif(arg0 == "harvest") {
  3434. script = script.get("Harvest");
  3435. if(script != null) {
  3436. script.term(script);
  3437. }
  3438. script.startNamed("Harvest", "utils/u_error", "survival/harvest", "utils/u_general");
  3439. }
  3440. elseif(arg0 == "hawkeye") {
  3441. script = script.get("Hawkeye");
  3442. if(script != null) {
  3443. script.term(script);
  3444. }
  3445. script.startNamed("Hawkeye", "utils/u_error", "system/hawkeye", "utils/u_general");
  3446. }
  3447. elseif(arg0 == "herobrine") {
  3448. script = script.get("Herobrine");
  3449. if(script != null) {
  3450. script.term(script);
  3451. }
  3452. script.startNamed("Herobrine", "utils/u_error", "survival/herobrine", "utils/u_general");
  3453. }
  3454. elseif(arg0 == "lectern") {
  3455. script = script.get("Lectern");
  3456. if(script != null) {
  3457. script.term(script);
  3458. }
  3459. script.startNamed("Lectern", "utils/u_error", "survival/lectern", "utils/u_general");
  3460. }
  3461. elseif(arg0 == "loom") {
  3462. script = script.get("Loom");
  3463. if(script != null) {
  3464. script.term(script);
  3465. }
  3466. script.startNamed("Loom", "utils/u_error", "survival/loom", "utils/u_general");
  3467. }
  3468. elseif(arg0 == "perms") {
  3469. script.start("system/perms", "utils/u_general");
  3470. }
  3471. elseif(arg0 == "playerdata") {
  3472. script = script.get("Playerdata");
  3473. if(script != null) {
  3474. script.term(script);
  3475. }
  3476. script.startNamed("Playerdata", "utils/u_error", "system/player_data", "utils/u_general");
  3477. }
  3478. elseif(arg0 == "pumpkin") {
  3479. script = script.get("Pumpkin");
  3480. if(script != null) {
  3481. script.term(script);
  3482. }
  3483. script.startNamed("Pumpkin", "utils/u_error", "survival/pumpkin", "utils/u_general");
  3484. }
  3485. elseif(arg0 == "recipes") {
  3486. script = script.get("Recipes");
  3487. if(script != null) {
  3488. script.term(script);
  3489. }
  3490. script.startNamed("Recipes", "survival/recipes");
  3491. }
  3492. elseif(arg0 == "stats") {
  3493. script = script.get("Ranklist");
  3494. if(script != null) {
  3495. script.term(script);
  3496. }
  3497. script.startNamed("Ranklist", "utils/u_error", "system/ranklist", "utils/u_general", "utils/u_games");
  3498. }
  3499. elseif(arg0 == "scheduler") {
  3500. script = script.get("Scheduler");
  3501. if(script != null) {
  3502. script.term(script);
  3503. }
  3504. script.startNamed("Scheduler", "utils/u_error", "system/scheduler", "utils/u_general");
  3505. }
  3506. elseif(arg0 == "shop") {
  3507. script = script.get("Shops");
  3508. if(script != null) {
  3509. script.term(script);
  3510. }
  3511. script.startNamed("Shops", "utils/u_error", "system/chestshops", "utils/u_general");
  3512. }
  3513. elseif(arg0 == "mails") {
  3514. script = script.get("Mails");
  3515. if(script != null) {
  3516. script.term(script);
  3517. }
  3518. script.startNamed("Mails", "utils/u_error", "system/mailsystem", "utils/u_general");
  3519. }
  3520. elseif(arg0 == "mobarena") {
  3521. script = script.get("Mobarena");
  3522. if(script != null) {
  3523. script.term(script);
  3524. }
  3525. script.startNamed("Mobarena", "utils/u_error", "survival/mobarena", "utils/u_general");
  3526. }
  3527. elseif(arg0 == "ticket") {
  3528. script = script.get("Ticket");
  3529. if(script != null) {
  3530. script.term(script);
  3531. }
  3532. script.startNamed("Ticket", "utils/u_error", "system/tickets", "utils/u_general");
  3533. }
  3534. elseif(arg0 == "timber") {
  3535. script = script.get("Timber");
  3536. if(script != null) {
  3537. script.term(script);
  3538. }
  3539. script.startNamed("Timber", "utils/u_error", "survival/timber", "utils/u_general");
  3540. }
  3541. elseif(arg0 == "trader") {
  3542. script = script.get("Trader");
  3543. if(script != null) {
  3544. script.term(script);
  3545. }
  3546. script.startNamed("Trader", "utils/u_error", "survival/trader", "utils/u_general");
  3547. }
  3548. elseif(arg0 == "story") {
  3549. script = script.get("Story");
  3550. if(script != null) {
  3551. script.term(script);
  3552. }
  3553. script.startNamed("Story", "utils/u_error", "story/story", "utils/u_general");
  3554. script = script.get("QuestsAdmont");
  3555. if(script != null) {
  3556. script.term(script);
  3557. }
  3558. script.startNamed("QuestsAdmont", "utils/u_error", "story/admont/core", "utils/u_general", "utils/u_quest");
  3559. script = script.get("QuestsSchiffbruch");
  3560. if(script != null) {
  3561. script.term(script);
  3562. }
  3563. script.startNamed("QuestsSchiffbruch", "utils/u_error", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
  3564. }
  3565. elseif(arg0 == "sitting") {
  3566. script = script.get("Sitting");
  3567. if(script != null) {
  3568. script.term(script);
  3569. }
  3570. script.startNamed("Sitting", "utils/u_error", "system/sitting", "utils/u_general");
  3571. }
  3572. elseif(arg0 == "survival") {
  3573. script = script.get("Survival");
  3574. if(script != null) {
  3575. script.term(script);
  3576. }
  3577. script.startNamed("Survival", "utils/u_error", "survival/survival", "utils/u_general");
  3578. }
  3579. elseif(arg0 == "voxel") {
  3580. script = script.get("Voxel");
  3581. if(script != null) {
  3582. script.term(script);
  3583. }
  3584. script.startNamed("Voxel", "system/voxel");
  3585. }
  3586. else {
  3587. goto("starthelp");
  3588. }
  3589. goto("wait");
  3590. @senditem
  3591. if(size != 1) {
  3592. msg.prefix(player, prefix_commands, "/senditem <player>");
  3593. goto("wait");
  3594. }
  3595. item = living.getEquip(player, "hand");
  3596. if(item.getType(item) == "minecraft:air") {
  3597. msg.prefix(player, prefix_commands, "You need to hold an item in your hand.");
  3598. goto("wait");
  3599. }
  3600. p_name = list.getIndex(args, 0);
  3601. p_uuid = player.getUuid(p_name);
  3602. if(p_uuid == null) {
  3603. msg.prefix(player, prefix_commands, "This player has never been online.");
  3604. goto("wait");
  3605. }
  3606. p = read.player(p_name);
  3607. if(p == null) {
  3608. msg.prefix(player, prefix_commands, "This player is not online.");
  3609. goto("wait");
  3610. }
  3611. player.safeGiveItem(p, item);
  3612. player.removeItem(player, item);
  3613. goto("wait");
  3614. @top
  3615. player_loc = entity.getLocation(player);
  3616. y = 255;
  3617. loc.setY(player_loc, y);
  3618. while(y > 0 && block.isAir(player_loc)) {
  3619. loc.setY(player_loc, y);
  3620. y--;
  3621. }
  3622. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  3623. goto("wait");
  3624. @creative
  3625. crea_spawn = world.getCreativeSpawn();
  3626. world = loc.getWorld(crea_spawn);
  3627. if(world == null) {
  3628. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3629. goto("wait");
  3630. }
  3631. if(size > 1) {
  3632. msg.prefix(player, prefix_commands, "/story [player]");
  3633. goto("wait");
  3634. }
  3635. if(size == 1) {
  3636. affectedname = list.getIndex(args, 0);
  3637. affectedplayer = read.player(affectedname);
  3638. if(affectedplayer == null) {
  3639. msg.prefix(player, prefix_commands, "This player is not online.");
  3640. goto("wait");
  3641. }
  3642. if(!perm.has(player, "teleport.other")) {
  3643. perm.no(player, "teleport.other");
  3644. goto("wait");
  3645. }
  3646. }
  3647. if(player.hasMinigame(affectedplayer)) {
  3648. if(size == 1) {
  3649. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3650. goto("wait");
  3651. }
  3652. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3653. goto("wait");
  3654. }
  3655. if(size == 1) {
  3656. if(player != affectedplayer) {
  3657. affectedname = player.getName(affectedplayer);
  3658. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the creative world."));
  3659. }
  3660. }
  3661. if(player.teleport(affectedplayer, crea_spawn, true)) {
  3662. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the creative world.");
  3663. }
  3664. goto("wait");
  3665. @story
  3666. story_spawn = world.getStorySpawn();
  3667. world = loc.getWorld(story_spawn);
  3668. if(world == null) {
  3669. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3670. goto("wait");
  3671. }
  3672. if(size > 1) {
  3673. msg.prefix(player, prefix_commands, "/story [player]");
  3674. goto("wait");
  3675. }
  3676. if(size == 1) {
  3677. affectedname = list.getIndex(args, 0);
  3678. affectedplayer = read.player(affectedname);
  3679. if(affectedplayer == null) {
  3680. msg.prefix(player, prefix_commands, "This player is not online.");
  3681. goto("wait");
  3682. }
  3683. if(!perm.has(player, "teleport.other")) {
  3684. perm.no(player, "teleport.other");
  3685. goto("wait");
  3686. }
  3687. }
  3688. if(player.hasMinigame(affectedplayer)) {
  3689. if(size == 1) {
  3690. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3691. goto("wait");
  3692. }
  3693. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3694. goto("wait");
  3695. }
  3696. if(size == 1) {
  3697. if(player != affectedplayer) {
  3698. affectedname = player.getName(affectedplayer);
  3699. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the story world."));
  3700. }
  3701. }
  3702. if(player.teleport(affectedplayer, story_spawn, true)) {
  3703. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the story world.");
  3704. }
  3705. goto("wait");
  3706. @games
  3707. world = loc.getWorld(gamesspawn);
  3708. if(world == null) {
  3709. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3710. goto("wait");
  3711. }
  3712. if(size > 1) {
  3713. msg.prefix(player, prefix_commands, "/games [player]");
  3714. goto("wait");
  3715. }
  3716. if(size == 1) {
  3717. affectedname = list.getIndex(args, 0);
  3718. affectedplayer = read.player(affectedname);
  3719. if(affectedplayer == null) {
  3720. msg.prefix(player, prefix_commands, "This player is not online.");
  3721. goto("wait");
  3722. }
  3723. if(!perm.has(player, "teleport.other")) {
  3724. perm.no(player, "teleport.other");
  3725. goto("wait");
  3726. }
  3727. }
  3728. if(player.hasMinigame(affectedplayer)) {
  3729. if(size == 1) {
  3730. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3731. goto("wait");
  3732. }
  3733. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3734. goto("wait");
  3735. }
  3736. if(size == 1) {
  3737. if(player != affectedplayer) {
  3738. affectedname = player.getName(affectedplayer);
  3739. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the games world."));
  3740. }
  3741. }
  3742. if(player.teleport(affectedplayer, gamesspawn, true)) {
  3743. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the games world.");
  3744. }
  3745. goto("wait");
  3746. @bug
  3747. msg.prefix(player, prefix_commands, "Found a bug? Report it to marvinius with §b/mail marvinius <message>");
  3748. goto("wait");
  3749. @repair
  3750. item = living.getEquip(player, "hand");
  3751. if(item.getType(item) == "minecraft:air") {
  3752. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3753. goto("wait");
  3754. }
  3755. item.setDamage(item, 0);
  3756. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  3757. goto("wait");
  3758. @report
  3759. msg.prefix(player, prefix_commands, "Want to report a player?");
  3760. msg(player, " - §b/ticket <message>");
  3761. msg(player, " - §b/mail marvinius <message>");
  3762. goto("wait");
  3763. @playtime
  3764. if(size == 0) {
  3765. p_id = player.getId(player);
  3766. arg0 = player.getName(player);
  3767. } else {
  3768. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3769. if(arg0 == "year") {
  3770. if(!perm.has(player, "playtime.year")) {
  3771. perm.no(player, "playtime.year");
  3772. goto("wait");
  3773. }
  3774. calendar = time.new(time.getMillis());
  3775. now_month = time.getMonth(calendar);
  3776. now_year = time.getYear(calendar);
  3777. if(size == 1) {
  3778. year = now_year;
  3779. } else {
  3780. year = list.getIndex(args, 1);
  3781. if(!isDouble(year)) {
  3782. msg.prefix(player, prefix_commands, "Number expected.");
  3783. goto("wait");
  3784. }
  3785. if(year > now_year) {
  3786. year = now_year;
  3787. }
  3788. }
  3789. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3790. since_minutes = playtime.getTotalOnlineMinutes();
  3791. //Tabelle erstellen
  3792. table = table.new("§8", 4, 5, 5);
  3793. msg(player, table.getStart(table));
  3794. msg(player, table.get(table, text.number(year), "Playtime", "Change"));
  3795. msg(player, table.getMiddle(table));
  3796. //Erstes Mitternacht des gewählten Jahres festlegen
  3797. now_day = time.getDay(calendar);
  3798. time.nextDay(calendar);
  3799. midnight = time.from(calendar) - (time.getDaysBetween(1, 1, year, now_day, now_month, now_year) + 1) * 86400000;
  3800. //Monats-Spielzeit berechnen
  3801. temp_list = list.new();
  3802. list.add(temp_list, playtime.getInterval(midnight - time.getMonthDays(12, year - 1) * 86400000, midnight)); //Dezember des Vorjahres hinzufügen
  3803. for(i = 1; i <= 12; i++) {
  3804. midnight_2 = midnight + time.getMonthDays(i, now_year) * 86400000; //Alle Tage eines Monats * 24 Stunden
  3805. minutes = playtime.getInterval(midnight, midnight_2);
  3806. list.add(temp_list, minutes);
  3807. midnight = midnight_2;
  3808. if(i == now_month && year == now_year) {
  3809. minutes += since_minutes;
  3810. }
  3811. }
  3812. for(i = 1; i <= 12; i++) {
  3813. minutes = list.getIndex(temp_list, i);
  3814. hours = math.roundDown(minutes / 60);
  3815. mod_minutes = minutes % 60;
  3816. if(mod_minutes < 10) {
  3817. time_string = concat("§6", text.number(hours), ":0", text.number(mod_minutes), " h");
  3818. } else {
  3819. time_string = concat("§6", text.number(hours), ":", text.number(mod_minutes), " h");
  3820. }
  3821. pre_minutes = list.getIndex(temp_list, i - 1);
  3822. if(minutes >= pre_minutes) {
  3823. color = "§a+";
  3824. a = minutes;
  3825. b = pre_minutes;
  3826. } else {
  3827. color = "§c-";
  3828. a = pre_minutes;
  3829. b = minutes;
  3830. }
  3831. if(b == 0) {
  3832. change = "";
  3833. } else {
  3834. change = math.round(a / b * 100 - 100);
  3835. change = concat(color, text.number(change), " %");
  3836. }
  3837. msg(player, table.get(table, concat("§6", month.getShortName(i)), time_string, change));
  3838. if(i == now_month && year == now_year) {
  3839. break;
  3840. }
  3841. }
  3842. //Tabelle beenden
  3843. msg(player, table.getEnd(table));
  3844. goto("wait");
  3845. }
  3846. if(arg0 == "month") {
  3847. if(!perm.has(player, "playtime.month")) {
  3848. perm.no(player, "playtime.month");
  3849. goto("wait");
  3850. }
  3851. calendar = time.new(time.getMillis());
  3852. now_month = time.getMonth(calendar);
  3853. now_year = time.getYear(calendar);
  3854. year = now_year;
  3855. if(size == 1) {
  3856. month = now_month;
  3857. } else {
  3858. month = list.getIndex(args, 1);
  3859. if(!isDouble(month)) {
  3860. msg.prefix(player, prefix_commands, "Number expected.");
  3861. goto("wait");
  3862. }
  3863. if(month < 1) {
  3864. month = 1;
  3865. } elseif(month > 12) {
  3866. month = 12;
  3867. }
  3868. if(size == 3) {
  3869. year = list.getIndex(args, 2);
  3870. if(!isDouble(year)) {
  3871. msg.prefix(player, prefix_commands, "Number expected.");
  3872. goto("wait");
  3873. }
  3874. }
  3875. if(year > now_year ||(year >= now_year && month > now_month)) {
  3876. month = now_month;
  3877. year = now_year;
  3878. }
  3879. }
  3880. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3881. since_minutes = playtime.getTotalOnlineMinutes();
  3882. //Tabelle erstellen
  3883. table = table.new("§8", 4, 5, 5);
  3884. msg(player, table.getStart(table));
  3885. msg(player, table.get(table, month.getShortName(month), "Playtime", "Players"));
  3886. msg(player, table.getMiddle(table));
  3887. //Erstes Mitternacht des gewählten Monats festlegen
  3888. now_day = time.getDay(calendar);
  3889. time.nextDay(calendar);
  3890. midnight = time.from(calendar) - (time.getDaysBetween(1, month, year, now_day, now_month, now_year) + 1) * 86400000;
  3891. //Tages-Spielzeit berechnen
  3892. for(i = 1; i <= time.getMonthDays(month, year); i++) {
  3893. players = playtime.getPlayersPerInterval(midnight, midnight + 86400000);
  3894. minutes = playtime.getInterval(midnight, midnight + 86400000);
  3895. midnight += 86400000; //24 Stunden
  3896. if(i == now_day && month == now_month && year == now_year) {
  3897. minutes += since_minutes;
  3898. }
  3899. hours = math.roundDown(minutes / 60);
  3900. minutes = minutes % 60;
  3901. if(minutes < 10) {
  3902. time_string = concat("§6", text.number(hours), ":0", text.number(minutes), " h");
  3903. } else {
  3904. time_string = concat("§6", text.number(hours), ":", text.number(minutes), " h");
  3905. }
  3906. msg(player, table.get(table, concat("§6", text.number(i)), time_string, text.number(players)));
  3907. if(i == now_day && month == now_month && year == now_year) {
  3908. break;
  3909. }
  3910. }
  3911. //Tabelle beenden
  3912. msg(player, table.getEnd(table));
  3913. goto("wait");
  3914. }
  3915. if(arg0 == "all") {
  3916. msg(player, getSpacer());
  3917. msg.prefix(player, prefix_commands, "Server-Playtime");
  3918. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3919. since_minutes = playtime.getTotalOnlineMinutes();
  3920. now_time = time.getMillis();
  3921. //Spielzeit heute
  3922. calendar = time.new(now_time);
  3923. time.nextDay(calendar);
  3924. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3925. minutes = playtime.getInterval(midnight, now_time) + since_minutes;
  3926. hours = text.number(math.roundDown(minutes / 60));
  3927. minutes = text.number(minutes % 60);
  3928. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3929. //Spielzeit 30 Tage für alle Spieler
  3930. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3931. minutes = playtime.getInterval(oneMonthAgo, now_time) + since_minutes;
  3932. hours = text.number(math.roundDown(minutes / 60));
  3933. minutes = text.number(minutes % 60);
  3934. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3935. //Spielzeit gesamt
  3936. minutes = playtime.getTotal();
  3937. hours = text.number(math.roundDown(minutes / 60));
  3938. minutes = text.number(minutes % 60);
  3939. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3940. goto("wait");
  3941. }
  3942. if(!perm.has(player, "playtime.other")) {
  3943. perm.no(player, "playtime.other");
  3944. goto("wait");
  3945. }
  3946. }
  3947. if(!checkIfEverOnline(arg0)) {
  3948. msg.prefix(player, prefix_commands, "This player has never been online.");
  3949. goto("wait");
  3950. }
  3951. now_time = time.getMillis();
  3952. p_uuid = player.getUuid(arg0);
  3953. arg0 = player.getName(p_uuid);
  3954. p_id = player.getId(p_uuid);
  3955. msg(player, getSpacer());
  3956. msg.prefix(player, prefix_commands, concat("Playtime of ", player.getName(p_uuid)));
  3957. //Online seit
  3958. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  3959. if(isOnline(arg0)) {
  3960. since_hours = math.roundDown(since_minutes / 60);
  3961. mod_minutes = since_minutes % 60;
  3962. msg(player, concat("§aOnline since: §r", text.number(since_hours), " hours ", text.number(mod_minutes), " minutes"));
  3963. } else {
  3964. msg(player, "§6Status: ", "§cOffline");
  3965. }
  3966. //Spielzeit heute
  3967. calendar = time.new(now_time);
  3968. time.nextDay(calendar);
  3969. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3970. minutes = playtime.getPlayerInterval(p_id, midnight, now_time) + since_minutes;
  3971. hours = text.number(math.roundDown(minutes / 60));
  3972. minutes = text.number(minutes % 60);
  3973. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3974. //Spielzeit 30 Tage
  3975. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3976. minutes = playtime.getPlayerInterval(p_id, oneMonthAgo, now_time) + since_minutes;
  3977. hours = text.number(math.roundDown(minutes / 60));
  3978. minutes = text.number(minutes % 60);
  3979. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3980. //Spielzeit gesamt
  3981. minutes = playtime.getPlayerTotal(p_id);
  3982. hours = text.number(math.roundDown(minutes / 60));
  3983. minutes = text.number(minutes % 60);
  3984. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3985. goto("wait");
  3986. @datatools
  3987. if(size == 0) {
  3988. @datatoolshelp
  3989. msg.prefix(player, prefix_datatools, "/datatools ...");
  3990. msg(player, "§6 - hide <name> §rHides wusi on an itemstack");
  3991. msg(player, "§6 - attribute <attribut> <slot> <double> <op> §rAdd an attribute to an item");
  3992. msg(player, "§6 - hide-entity §rHide an entity");
  3993. msg(player, "§6 - show-entity §rShow an entity");
  3994. msg(player, "§6 - name-entity <name> §rRename an entity");
  3995. msg(player, "§6 - name-visibility <boolean> §rShow name (not) permanent");
  3996. msg(player, "§6 - name-item <name> §rRename an item");
  3997. msg(player, "§6 - lore-item <line> <lore> §rSet an item lore");
  3998. msg(player, "§6 - print-entity §rPrint entities nbt-tag");
  3999. goto("wait");
  4000. }
  4001. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4002. if(arg0 == "hide") {
  4003. if(size < 2) {
  4004. msg.prefix(player, prefix_datatools, "/datatools hide <name>");
  4005. goto("wait");
  4006. }
  4007. item = living.getEquip(player, "hand");
  4008. if(item.getType(item) == "minecraft:air") {
  4009. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  4010. goto("wait");
  4011. }
  4012. name = text.concatList(args, " ", 1, size - 1);
  4013. if(item.hide(item, name)) {
  4014. msg.prefix(player, prefix_datatools, "You hided something.");
  4015. } else {
  4016. msg.prefix(player, prefix_datatools, "You can't hide that.");
  4017. }
  4018. goto("wait");
  4019. }
  4020. if(arg0 == "attribute") {
  4021. if(size < 5) {
  4022. msg.prefix(player, prefix_datatools, "/datatools attribute <attribut> <slot> <double> <op>");
  4023. goto("wait");
  4024. }
  4025. item = living.getEquip(player, "hand");
  4026. if(item.getType(item) == "minecraft:air") {
  4027. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  4028. goto("wait");
  4029. }
  4030. double = list.getIndex(args, 3);
  4031. if(!isDouble(double) || double < 0) {
  4032. msg.prefix(player, prefix_datatools, "Natural number expected.");
  4033. goto("wait");
  4034. }
  4035. attribut = concat("generic.", text.toLowerCase(list.getIndex(args, 1)));
  4036. if(!set.contains(attribut_set, attribut)) {
  4037. msg.prefix(player, prefix_datatools, "Unknown attribute.");
  4038. goto("wait");
  4039. }
  4040. slot = read.slot(list.getIndex(args, 2));
  4041. if(slot == null) {
  4042. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  4043. goto("wait");
  4044. }
  4045. operation = list.getIndex(args, 4);
  4046. if(operation == "ADDITION") {
  4047. operation = 0;
  4048. } elseif(operation == "MULTIPLY_BASE") {
  4049. operation = 1;
  4050. } elseif(operation == "MULTIPLY_TOTAL") {
  4051. operation = 2;
  4052. } else {
  4053. msg.prefix(player, prefix_datatools, "Incorrect operation.");
  4054. goto("wait");
  4055. }
  4056. item.addAttribute(item, attribut, slot, double, operation);
  4057. msg.prefix(player, prefix_datatools, "Attribute added.");
  4058. goto("wait");
  4059. }
  4060. if(arg0 == "name-item") {
  4061. if(size < 2) {
  4062. msg.prefix(player, prefix_datatools, "/datatools name-item <name>");
  4063. goto("wait");
  4064. }
  4065. item = living.getEquip(player, "hand");
  4066. if(item.getType(item) == "minecraft:air") {
  4067. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4068. goto("wait");
  4069. }
  4070. name = text.concatList(args, " ", 1, size - 1);
  4071. name = text.replace(name, "&", "§");
  4072. name = text.replace(name, "\\n", "\n");
  4073. item.setName(item, name);
  4074. msg.prefix(player, prefix_datatools, concat("Item renamed to ", name, "§r."));
  4075. goto("wait");
  4076. }
  4077. if(arg0 == "print-entity") {
  4078. templist = living.near(player, 3);
  4079. if(list.getSize(templist) == 0) {
  4080. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4081. goto("wait");
  4082. }
  4083. entity = list.getIndex(templist, 0);
  4084. txt_ent = text.entity(entity);
  4085. msg(player, text.clipBoard(txt_ent, txt_ent));
  4086. goto("wait");
  4087. }
  4088. if(arg0 == "lore-item") {
  4089. if(size < 3) {
  4090. msg.prefix(player, prefix_datatools, "/datatools lore-item <line> <lore>");
  4091. goto("wait");
  4092. }
  4093. item = living.getEquip(player, "hand");
  4094. if(item.getType(item) == "minecraft:air") {
  4095. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4096. goto("wait");
  4097. }
  4098. line = list.getIndex(args, 1);
  4099. if(!isDouble(line)) {
  4100. msg.prefix(player, prefix_datatools, "Number expected.");
  4101. goto("wait");
  4102. }
  4103. if(line < 0) {
  4104. msg.prefix(player, prefix_datatools, "Positive number expected.");
  4105. goto("wait");
  4106. }
  4107. lore = text.concatList(args, " ", 2, size - 1);
  4108. lore = text.replace(lore, "&", "§");
  4109. item.addLore(item, line, lore);
  4110. msg.prefix(player, prefix_datatools, "New lore added.");
  4111. goto("wait");
  4112. }
  4113. if(arg0 == "maxhealth") {
  4114. if(size < 2) {
  4115. msg.prefix(player, prefix_datatools, "/datatools maxhealth <value>");
  4116. goto("wait");
  4117. }
  4118. value = list.getIndex(args, 1);
  4119. if(!isDouble(value)) {
  4120. msg.prefix(player, prefix_datatools, "Number expected.");
  4121. goto("wait");
  4122. }
  4123. templist = living.near(player, 3);
  4124. if(list.getSize(templist) == 0) {
  4125. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4126. goto("wait");
  4127. }
  4128. entity = list.getIndex(templist, 0);
  4129. if(isPlayer(entity)) {
  4130. msg.prefix(player, prefix_datatools, "To players not usable.");
  4131. goto("wait");
  4132. }
  4133. living.setMaxHealth(entity, value);
  4134. msg.prefix(player, prefix_datatools, concat("Entity ", entity.getType(entity), " has now Maxhealth: ", living.getMaxHealth(entity), "§r."));
  4135. goto("wait");
  4136. }
  4137. if(arg0 == "name-entity") {
  4138. if(size < 2) {
  4139. msg.prefix(player, prefix_datatools, "§r/datatools name-entity <name>");
  4140. goto("wait");
  4141. }
  4142. templist = living.near(player, 3);
  4143. if(list.getSize(templist) == 0) {
  4144. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4145. goto("wait");
  4146. }
  4147. entity = list.getIndex(templist, 0);
  4148. name = text.concatList(args, " ", 1, size - 1);
  4149. name = text.replace(name, "&", "§");
  4150. name = text.replace(name, "\\n", "\n");
  4151. entity.setName(entity, name, true);
  4152. msg.prefix(player, prefix_datatools, concat("Entity renamed to ", name, "§r."));
  4153. goto("wait");
  4154. }
  4155. if(arg0 == "name-visibility") {
  4156. if(size != 2) {
  4157. msg.prefix(player, prefix_datatools, "§r/datatools name-visibility <boolean>");
  4158. goto("wait");
  4159. }
  4160. templist = living.near(player, 3);
  4161. if(list.getSize(templist) == 0) {
  4162. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4163. goto("wait");
  4164. }
  4165. entity = list.getIndex(templist, 0);
  4166. boolean = list.getIndex(args, 1);
  4167. name = entity.getName(entity);
  4168. entity.setName(entity, name, boolean);
  4169. msg.prefix(player, prefix_datatools, "Name-Visibility changed.");
  4170. goto("wait");
  4171. }
  4172. if(arg0 == "hide-entity") {
  4173. if(size != 1) {
  4174. msg.prefix(player, prefix_datatools, "§r/datatools hide-entity");
  4175. goto("wait");
  4176. }
  4177. templist = living.near(player, 3);
  4178. if(list.getSize(templist) == 0) {
  4179. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4180. goto("wait");
  4181. }
  4182. entity = list.getIndex(templist, 0);
  4183. entity.setInvisible(entity, true);
  4184. msg.prefix(player, prefix_datatools, "Entity is now hidden.");
  4185. goto("wait");
  4186. }
  4187. if(arg0 == "show-entity") {
  4188. if(size != 1) {
  4189. msg.prefix(player, prefix_datatools, "§r/datatools show-entity");
  4190. goto("wait");
  4191. }
  4192. templist = living.near(player, 3);
  4193. if(list.getSize(templist) == 0) {
  4194. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4195. goto("wait");
  4196. }
  4197. entity = list.getIndex(templist, 0);
  4198. entity.setInvisible(entity, false);
  4199. msg.prefix(player, prefix_datatools, "Entity is now visible.");
  4200. goto("wait");
  4201. }
  4202. goto("datatoolshelp");
  4203. @human
  4204. if(size == 0) {
  4205. @humanhelp
  4206. msg.prefix(player, prefix_human, "/human ...");
  4207. msg(player, concat("§6 - spawn §rSpawnt einen Human"));
  4208. msg(player, concat("§6 - set <name> §rSetzt den Skin"));
  4209. msg(player, concat("§6 - setuuid <uuid> §rSetzt den Skin"));
  4210. msg(player, concat("§6 - name §rSetzt den Namen"));
  4211. msg(player, concat("§6 - kill §rTötet einen Human"));
  4212. msg(player, concat("§6 - size <scale> §rSetzt die Größenskalierung"));
  4213. msg(player, concat("§6 - steve §rSchaltet auf Steve Skin"));
  4214. msg(player, concat("§6 - alex §rSchaltet auf Alex Skin"));
  4215. msg(player, concat("§6 - statue <bool> §rToggles between statue"));
  4216. goto("wait");
  4217. }
  4218. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4219. if(arg0 == "spawn") {
  4220. human.spawn(entity.getLocation(player));
  4221. msg.prefix(player, prefix_human, "Human gespawnt.");
  4222. goto("wait");
  4223. }
  4224. player_loc = entity.getLocation(player);
  4225. human = entity.get(player_loc, 3, "me.km.entities.EntityHuman");
  4226. if(human == null) {
  4227. msg.prefix(player, prefix_human, "Zu weit weg vom Human.");
  4228. goto("wait");
  4229. }
  4230. if(arg0 == "set") {
  4231. if(size == 2) {
  4232. name = list.getIndex(args, 1);
  4233. human.setSkin(human, name);
  4234. msg.prefix(player, prefix_human, "Skin gesetzt.");
  4235. goto("wait");
  4236. }
  4237. }
  4238. elseif(arg0 == "setuuid") {
  4239. if(size == 2) {
  4240. uuid = list.getIndex(args, 1);
  4241. human.setSkin(human, uuid);
  4242. msg.prefix(player, prefix_human, "Skin gesetzt.");
  4243. goto("wait");
  4244. }
  4245. }
  4246. elseif(arg0 == "name") {
  4247. if(size > 1) {
  4248. name = text.concatList(args, " ", 1, size - 1);
  4249. name = text.replace(name, "&", "§");
  4250. name = text.replace(name, "\\n", "\n");
  4251. entity.setName(human, name, true);
  4252. msg.prefix(player, prefix_human, concat("Das Entity trägt nun den Namen ", name, "§r."));
  4253. goto("wait");
  4254. }
  4255. }
  4256. elseif(arg0 == "kill") {
  4257. entity.remove(human);
  4258. msg.prefix(player, prefix_human, "Human getötet.");
  4259. goto("wait");
  4260. }
  4261. elseif(arg0 == "size") {
  4262. if(size == 2) {
  4263. scale = list.getIndex(args, 1);
  4264. if(!isDouble(scale)) {
  4265. msg.prefix(player, prefix_human, "Number expected.");
  4266. goto("wait");
  4267. }
  4268. if(scale > 10) {
  4269. msg.prefix(player, prefix_human, "Maximal 10.");
  4270. scale = 10;
  4271. }
  4272. human.setScale(human, scale);
  4273. msg.prefix(player, prefix_human, "Größe verändert.");
  4274. goto("wait");
  4275. }
  4276. }
  4277. elseif(arg0 == "steve") {
  4278. human.setSlim(human, false);
  4279. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  4280. goto("wait");
  4281. }
  4282. elseif(arg0 == "alex") {
  4283. human.setSlim(human, true);
  4284. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  4285. goto("wait");
  4286. }
  4287. elseif(arg0 == "statue") {
  4288. if(size == 1) {
  4289. bool = true;
  4290. } elseif(size == 2) {
  4291. bool = list.getIndex(args, 1);
  4292. if(bool != true && bool != false) {
  4293. bool = true;
  4294. }
  4295. }
  4296. human.setStatue(human, bool);
  4297. msg.prefix(player, prefix_human, "Human changed.");
  4298. goto("wait");
  4299. }
  4300. goto("humanhelp");
  4301. @answer
  4302. if(player.isMuted(player)) {
  4303. msg.prefix(player, "§6Commands", "You are muted.");
  4304. goto("wait");
  4305. }
  4306. if(size < 1) {
  4307. msg.prefix(sender, prefix_commands, "/answer <message>");
  4308. goto("wait");
  4309. }
  4310. player_uuid = player.getUuid(sender);
  4311. p_uuid = map.get(answer_map, player_uuid);
  4312. if(p_uuid == null) {
  4313. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  4314. goto("wait");
  4315. }
  4316. message = text.replace(text.concatList(text_args, " ", 0, size - 1), "&", "§");
  4317. if(text.startsWith(message, "https://", 0)) {
  4318. message = text.link(message, message);
  4319. } else {
  4320. message = text.concat("§e", message);
  4321. }
  4322. if(player.getId(p_uuid) == 18) {
  4323. msg(sender, "§6[ -> §cSERVER§6] ", message);
  4324. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  4325. } else {
  4326. p = player.get(p_uuid);
  4327. if(p == null) {
  4328. msg.prefix(sender, prefix_commands, "This player is not online.");
  4329. goto("wait");
  4330. }
  4331. msg(sender, concat("§6[§cme §6-> §c", player.getName(p)), "§6] ", message);
  4332. msg(p, concat("§6[§c", sender_name), " §6-> §cme§6] ", message);
  4333. }
  4334. map.add(answer_map, p_uuid, player_uuid);
  4335. map.add(answer_map, player_uuid, p_uuid);
  4336. goto("wait");
  4337. @msg
  4338. if(player.isMuted(player)) {
  4339. msg.prefix(player, "§6Commands", "You are muted.");
  4340. goto("wait");
  4341. }
  4342. if(size < 2) {
  4343. msg.prefix(sender, prefix_commands, "/msg <player> <message>");
  4344. goto("wait");
  4345. }
  4346. p_name = list.getIndex(args, 0);
  4347. p_uuid = player.getUuid(p_name);
  4348. if(p_uuid == null) {
  4349. msg.prefix(sender, prefix_commands, "Unknown player.");
  4350. goto("wait");
  4351. }
  4352. message = text.replace(text.concatList(text_args, " ", 1, size - 1), "&", "§");
  4353. if(text.startsWith(message, "https://", 0)) {
  4354. message = text.link(message, message);
  4355. } else {
  4356. message = text.concat("§e", message);
  4357. }
  4358. if(text.toUpperCase(p_name) == "SERVER") {
  4359. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  4360. msg(sender, "§6[ -> §cSERVER§6] ", message);
  4361. } else {
  4362. p = read.player(p_name);
  4363. if(p == null) {
  4364. msg.prefix(sender, prefix_commands, "This player is not online.");
  4365. goto("wait");
  4366. }
  4367. msg(p, concat("§6[§c", sender_name), " §6-> §cme§6] ", message);
  4368. msg(sender, concat("§6[§cme §6-> §c", player.getName(p)), "§6] ", message);
  4369. }
  4370. player_uuid = player.getUuid(sender);
  4371. map.add(answer_map, p_uuid, player_uuid);
  4372. map.add(answer_map, player_uuid, p_uuid);
  4373. goto("wait");
  4374. @list
  4375. list = players.toList();
  4376. size = list.getSize(list);
  4377. msg(sender, getSpacer());
  4378. if(size == 1) {
  4379. msg(sender, concat("§6There is ", text.number(size), " players online."));
  4380. } else {
  4381. msg(sender, concat("§6There are ", text.number(size), " players online."));
  4382. }
  4383. for(i = 0; i < size; i++) {
  4384. p = list.getIndex(list, i);
  4385. full_name = player.getFullName(p);
  4386. if(player.isAfk(p)) {
  4387. full_name = concat(full_name, " §5§o[Afk]");
  4388. }
  4389. msg(sender, full_name);
  4390. }
  4391. goto("wait");
  4392. @ass
  4393. if(size < 2) {
  4394. msg.prefix(player, prefix_commands, "§r/ass ...");
  4395. msg(player, " - set <name>");
  4396. msg(player, " - rename <name>");
  4397. msg(player, " - remove <radius>");
  4398. goto("wait");
  4399. }
  4400. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4401. if(arg0 == "set") {
  4402. name = text.concatList(args, " ", 1, size - 1);
  4403. name = text.replace(name, "&", "§");
  4404. name = text.replace(name, "\\n", "\n");
  4405. ent = entity.spawn("km:nobody", entity.getLocation(player), "{NoGravity:true}");
  4406. entity.setName(ent, name);
  4407. goto("wait");
  4408. }
  4409. if(arg0 == "rename") {
  4410. name = text.concatList(args, " ", 1, size - 1);
  4411. name = text.replace(name, "&", "§");
  4412. name = text.replace(name, "\\n", "\n");
  4413. ent_list = living.near(player, 5);
  4414. for(i = 0; i < list.getSize(ent_list); i++) {
  4415. ent = list.getIndex(ent_list, i);
  4416. if(entity.getType(ent) == "nobody") {
  4417. entity.setName(ent, name);
  4418. goto("wait");
  4419. }
  4420. }
  4421. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  4422. goto("wait");
  4423. }
  4424. if(arg0 == "remove") {
  4425. radius = list.getIndex(args, 1);
  4426. if(!isDouble(radius)) {
  4427. msg.prefix(player, prefix_commands, "Number expected.");
  4428. goto("wait");
  4429. }
  4430. if(radius < 0 || radius > 5) {
  4431. msg.prefix(player, prefix_commands, "§rRadius: 0-5");
  4432. goto("wait");
  4433. }
  4434. ent_list = living.near(player, radius);
  4435. for(i = 0; i < list.getSize(ent_list); i++) {
  4436. ent = list.getIndex(ent_list, i);
  4437. if(entity.getType(ent) == "nobody") {
  4438. entity.remove(ent);
  4439. msg.prefix(player, prefix_commands, "§rLufttext entfernt");
  4440. goto("wait");
  4441. }
  4442. }
  4443. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  4444. }
  4445. goto("wait");
  4446. @coords
  4447. target_loc = player.getTarget(player, 5, false, false);
  4448. targettype = block.getType(target_loc);
  4449. if(targettype == "minecraft:air") {
  4450. msg.prefix(player, prefix_commands, "You have to look at a block.");
  4451. goto("wait");
  4452. }
  4453. msg(player, getSpacer());
  4454. x = text.Number(loc.getX(target_loc));
  4455. y = text.Number(loc.getY(target_loc));
  4456. z = text.Number(loc.getZ(target_loc));
  4457. msg(player, "§6World: §r", world.getName(loc.getWorld(target_loc)));
  4458. msg(player, "§6Coords: §r", x, " / ", y, " / ", z);
  4459. msg(player, "§6Block: §r", targettype);
  4460. goto("wait");
  4461. @sign
  4462. if(size == 0) {
  4463. msg.prefix(player, prefix_commands, "/sign <1-4> [text]");
  4464. goto("wait");
  4465. }
  4466. target_loc = player.getTarget(player, 5, false, false);
  4467. block = block.get(target_loc);
  4468. if(!block.hasTag(sign_tag, block)) {
  4469. msg.prefix(player, prefix_commands, "Look at a sign.");
  4470. goto("wait");
  4471. }
  4472. line = list.getIndex(args, 0);
  4473. if(!isDouble(line)) {
  4474. msg.prefix(player, prefix_commands, "Number expected.");
  4475. goto("wait");
  4476. }
  4477. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  4478. msg.prefix(player, prefix_commands, "Number between 1 and 5 expected.");
  4479. goto("wait");
  4480. }
  4481. string = "";
  4482. if(size > 1) {
  4483. for(i = 1; i < size; i++) {
  4484. arg = list.getIndex(text_args, i);
  4485. if(i == 1) {
  4486. string = arg;
  4487. } else {
  4488. string = concat(string, " ", arg);
  4489. }
  4490. }
  4491. }
  4492. string = text.replace(string, "&", "§");
  4493. block.setSign(target_loc, line - 1, string);
  4494. goto("wait");
  4495. @head
  4496. if(size != 1) {
  4497. msg.prefix(player, prefix_commands, "/head <player>");
  4498. goto("wait");
  4499. }
  4500. name = list.getIndex(args, 0);
  4501. uuid = player.getUuid(name);
  4502. if(uuid == null) {
  4503. player.giveItem(player, read.item(concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}")));
  4504. } else {
  4505. player.giveItem(player, player.getHead(uuid, name));
  4506. }
  4507. goto("wait");
  4508. @mute
  4509. if(size < 1) {
  4510. msg.prefix(sender, prefix_commands, "/mute <player>");
  4511. goto("wait");
  4512. }
  4513. p_name = list.getIndex(args, 0);
  4514. if(!isOnline(p_name)) {
  4515. msg.prefix(sender, prefix_commands, "This player is not online.");
  4516. goto("wait");
  4517. }
  4518. p = read.player(p_name);
  4519. p_name = player.getName(p);
  4520. if(p_name == "marvinius") {
  4521. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4522. goto("wait");
  4523. }
  4524. msg("online", concat("§c", p_name, " was muted by ", sender_name, "."));
  4525. player.mute(p, true);
  4526. goto("wait");
  4527. @unmute
  4528. if(size < 1) {
  4529. msg.prefix(sender, prefix_commands, "/unmute <player>");
  4530. goto("wait");
  4531. }
  4532. p_name = list.getIndex(args, 0);
  4533. if(!isOnline(p_name)) {
  4534. msg.prefix(sender, prefix_commands, "This player is not online.");
  4535. goto("wait");
  4536. }
  4537. p = read.player(p_name);
  4538. p_name = player.getName(p);
  4539. if(p_name == "marvinius") {
  4540. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4541. goto("wait");
  4542. }
  4543. msg("online", concat("§c", p_name, " was unmuted by ", sender_name, "."));
  4544. player.mute(p, false);
  4545. goto("wait");
  4546. @kick
  4547. if(size < 1) {
  4548. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  4549. goto("wait");
  4550. }
  4551. p_name = list.getIndex(args, 0);
  4552. if(!isOnline(p_name)) {
  4553. msg.prefix(sender, prefix_commands, "This player is not online.");
  4554. goto("wait");
  4555. }
  4556. p = read.player(p_name);
  4557. p_name = player.getName(p);
  4558. if(p_name == "marvinius") {
  4559. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4560. goto("wait");
  4561. }
  4562. if(size > 1) {
  4563. reason = text.concatList(args, " ", 1, size - 1);
  4564. msg("online", concat("§c", p_name, " was kicked by ", sender_name, ": ", reason));
  4565. } else {
  4566. reason = "You got kicked";
  4567. msg("online", concat("§c", p_name, " was kicked by ", sender_name, "."));
  4568. }
  4569. ban.kick(p, reason);
  4570. goto("wait");
  4571. @silentkick
  4572. if(size < 1) {
  4573. msg.prefix(sender, prefix_commands, "/silentkick <player> [reason]");
  4574. goto("wait");
  4575. }
  4576. p_name = list.getIndex(args, 0);
  4577. if(!isOnline(p_name)) {
  4578. msg.prefix(sender, prefix_commands, "This player is not online.");
  4579. goto("wait");
  4580. }
  4581. p = read.player(p_name);
  4582. p_name = player.getName(p);
  4583. if(p_name == "marvinius") {
  4584. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4585. goto("wait");
  4586. }
  4587. if(size > 1) {
  4588. reason = text.concatList(args, " ", 1, size - 1);
  4589. msg(sender, concat("§cYou silently kicked ", p_name, ": ", reason));
  4590. } else {
  4591. reason = "You got kicked.";
  4592. msg(sender, concat("§cYou silently kicked ", p_name, "."));
  4593. }
  4594. ban.kick(p, reason);
  4595. goto("wait");
  4596. @warn
  4597. if(size != 1) {
  4598. msg.prefix(player, prefix_commands, "/warn <player>");
  4599. goto("wait");
  4600. }
  4601. p_name = list.getIndex(args, 0);
  4602. if(!isOnline(p_name)) {
  4603. msg.prefix(player, prefix_commands, "This player is not online.");
  4604. goto("wait");
  4605. }
  4606. p = read.player(p_name);
  4607. p_name = player.getName(p);
  4608. if(p_name == "marvinius") {
  4609. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  4610. goto("wait");
  4611. }
  4612. head.add(p, 0, sender_name, 0.4, 0.05, 0.2, 0.35);
  4613. title.setSub(p, "is watching you");
  4614. title.send(p, concat("§c", sender_name));
  4615. list.add(warninglist, p_name);
  4616. sgoto(100, "removeWarning");
  4617. msg.prefix(player, prefix_commands, "The player got warned.");
  4618. goto("wait");
  4619. @removeWarning
  4620. p_name = list.getIndex(warninglist, 0);
  4621. if(isOnline(p_name)) {
  4622. p = read.player(p_name);
  4623. head.remove(p, 0);
  4624. list.removeIndex(warninglist, 0);
  4625. }
  4626. goto("wait");
  4627. @ban
  4628. if(size < 1) {
  4629. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  4630. goto("wait");
  4631. }
  4632. p_name = list.getIndex(args, 0);
  4633. if(!checkIfEverOnline(p_name)) {
  4634. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4635. goto("wait");
  4636. }
  4637. p_name = player.getName(player.getUuid(p_name));
  4638. if(p_name == "marvinius") {
  4639. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4640. goto("wait");
  4641. }
  4642. if(size > 1) {
  4643. reason = text.concatList(args, " ", 1, size - 1);
  4644. msg("online", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  4645. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  4646. } else {
  4647. reason = "You got banned.";
  4648. msg("online", concat("§c", p_name, " got banned by ", sender_name, "."));
  4649. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, "."));
  4650. }
  4651. ban.add(player.getUuid(p_name), reason, sender_name);
  4652. if(isOnline(p_name)) {
  4653. p = read.player(p_name);
  4654. ban.kick(p, reason);
  4655. }
  4656. goto("wait");
  4657. @silentban
  4658. if(size < 1) {
  4659. msg.prefix(sender, prefix_commands, "/silentban <player> [reason]");
  4660. goto("wait");
  4661. }
  4662. p_name = list.getIndex(args, 0);
  4663. if(!checkIfEverOnline(p_name)) {
  4664. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4665. goto("wait");
  4666. }
  4667. p_name = player.getName(player.getUuid(p_name));
  4668. if(p_name == "marvinius") {
  4669. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4670. goto("wait");
  4671. }
  4672. if(size > 1) {
  4673. reason = text.concatList(args, " ", 1, size - 1);
  4674. msg(sender, concat("§cYou silently banned ", p_name, ": ", reason));
  4675. } else {
  4676. reason = "You got banned.";
  4677. msg(sender, concat("§cYou silently banned ", p_name, "."));
  4678. }
  4679. ban.add(player.getUuid(p_name), reason, sender_name);
  4680. if(isOnline(p_name)) {
  4681. p = read.player(p_name);
  4682. ban.kick(p, reason);
  4683. }
  4684. goto("wait");
  4685. @unban
  4686. if(size != 1) {
  4687. msg.prefix(sender, prefix_commands, "/unban <player>");
  4688. goto("wait");
  4689. }
  4690. p_name = list.getIndex(args, 0);
  4691. if(!checkIfEverOnline(p_name)) {
  4692. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4693. goto("wait");
  4694. }
  4695. p_name = player.getName(player.getUuid(p_name));
  4696. ban.remove(player.getUuid(p_name));
  4697. msg(sender, concat("§cYou unbanned ", p_name, "."));
  4698. goto("wait");
  4699. @tempban
  4700. if(size < 4) {
  4701. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  4702. goto("wait");
  4703. }
  4704. p_name = list.getIndex(args, 0);
  4705. if(!checkIfEverOnline(p_name)) {
  4706. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4707. goto("wait");
  4708. }
  4709. p_name = player.getName(player.getUuid(p_name));
  4710. if(p_name == "marvinius") {
  4711. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4712. goto("wait");
  4713. }
  4714. days = list.getIndex(args, 1);
  4715. hours = list.getIndex(args, 2);
  4716. minutes = list.getIndex(args, 3);
  4717. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  4718. msg.prefix(sender, prefix_commands, "Number expected.");
  4719. goto("wait");
  4720. }
  4721. if(days < 0 || hours < 0 || minutes < 0) {
  4722. msg.prefix(sender, prefix_commands, "Positive number expected.");
  4723. goto("wait");
  4724. }
  4725. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  4726. timestring = getTimeString(endtime);
  4727. if(size > 4) {
  4728. reason = text.concatList(args, " ", 4, size - 1);
  4729. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  4730. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  4731. } else {
  4732. reason = "You got banned.";
  4733. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  4734. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  4735. }
  4736. calendar = time.new(endtime);
  4737. ban.add(player.getUuid(p_name), reason, sender_name, calendar);
  4738. if(isOnline(p_name)) {
  4739. p = read.player(p_name);
  4740. ban.kick(p, reason);
  4741. }
  4742. goto("wait");
  4743. @ping
  4744. msg(player, "pong");
  4745. goto("wait");
  4746. @plot
  4747. if(size == 0) {
  4748. @plothelp
  4749. msg.prefix(player, prefix_plot, "/plot ...");
  4750. msg(player, "§d - info §rReturns info about current location");
  4751. if(!perm.has(player, "plot.moreinfo")) {
  4752. msg(player, "§d - list §rLists your plots");
  4753. }
  4754. msg(player, "");
  4755. msg(player, "§d - pos1/pos2 §rSet corner points");
  4756. msg(player, "§d - create §rCreates a (sub-)plot (Y: 0 - 255)");
  4757. msg(player, "§d - create3D §rCreates a 3D (sub-)plot");
  4758. msg(player, "");
  4759. msg(player, "§d - remove [id] §rRemoves a plot");
  4760. msg(player, "§d - expand <anzahl> [direction] [id] §rExpands a plot");
  4761. msg(player, "§d - name [id] <name> §rRenames a plot");
  4762. msg(player, "");
  4763. msg(player, "§d - share <player> [id] §rAdd a player to a plot");
  4764. msg(player, "§d - kick <player> [id] §rRemove a player from a plot");
  4765. msg(player, "§d - leader <player> [id] §rPromote to plot-leader");
  4766. msg(player, "§d - mod <player> [id] §rPromote to plot-mod");
  4767. msg(player, "§d - chest <player> [id] §rAllows a player to open chests");
  4768. msg(player, "");
  4769. msg(player, "§d - raise §rRaises a plot to a city. Costs §610 gold snuvis§r.");
  4770. msg(player, "§d - sell <price> §rSells a sub-plot");
  4771. msg(player, "");
  4772. if(perm.has(player, "plot.moreinfo")) {
  4773. msg(player, "§d - list [player] §rLists all plots from a player");
  4774. msg(player, "§d - moreinfo [id] §rReturns more detailed infos");
  4775. msg(player, "§d - listall §rLists all plots");
  4776. msg(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  4777. }
  4778. goto("wait");
  4779. }
  4780. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4781. if(arg0 == "sell") {
  4782. if(size != 2) {
  4783. msg.prefix(player, prefix_commands, "/plot sell <price>");
  4784. goto("wait");
  4785. }
  4786. sign_loc = player.getTarget(player, 5, false, false);
  4787. block = block.get(sign_loc);
  4788. if(!block.hasTag(sign_tag, block)) {
  4789. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  4790. goto("wait");
  4791. }
  4792. if(block.getSign(sign_loc, 0) != "" || block.getSign(sign_loc, 1) != "" || block.getSign(sign_loc, 2) != "" || block.getSign(sign_loc, 3) != "") {
  4793. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  4794. goto("wait");
  4795. }
  4796. plot_list = plot.get(sign_loc);
  4797. amount = list.getSize(plot_list);
  4798. if(amount == 0 || amount == 1) {
  4799. msg.prefix(player, prefix_plot, "You aren't on a sub plot.");
  4800. goto("wait");
  4801. }
  4802. if(amount > 2) {
  4803. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4804. goto("wait");
  4805. }
  4806. plot_1 = list.getIndex(plot_list, 0);
  4807. plot_2 = list.getIndex(plot_list, 1);
  4808. if(plot.isCity(plot_1)) {
  4809. city_plot = plot_1;
  4810. sell_plot = plot_2;
  4811. } elseif(plot.isCity(plot_2)) {
  4812. sell_plot = plot_1;
  4813. city_plot = plot_2;
  4814. } else {
  4815. msg.prefix(player, prefix_plot, "No city found.");
  4816. goto("wait");
  4817. }
  4818. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  4819. msg.prefix(player, prefix_plot, "You aren't a city plot leader or mod.");
  4820. goto("wait");
  4821. }
  4822. snuvis = list.getIndex(args, 1);
  4823. if(!isDouble(snuvis) || snuvis < 0) {
  4824. msg.prefix(player, prefix_plot, "Positive number expected.");
  4825. goto("wait");
  4826. }
  4827. //Sell Plot
  4828. x1 = plot.getMinX(sell_plot);
  4829. y1 = plot.getMinY(sell_plot);
  4830. z1 = plot.getMinZ(sell_plot);
  4831. x2 = plot.getMaxX(sell_plot);
  4832. y2 = plot.getMaxY(sell_plot);
  4833. z2 = plot.getMaxZ(sell_plot);
  4834. length = math.abs(x1 - x2) + 1;
  4835. width = math.abs(z1 - z2) + 1;
  4836. high = math.abs(y1 - y2) + 1;
  4837. //Change plot settings
  4838. plot.setFree(sell_plot, true);
  4839. plot.setName(sell_plot, "Free Plot");
  4840. plot.removePlayer(sell_plot, player.getName(player));
  4841. //Label Sign
  4842. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  4843. block.setSign(sign_loc, 1, concat("§2", text.number(snuvis)));
  4844. if(high == 256) {
  4845. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width)));
  4846. } else {
  4847. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width), " (Y:", text.number(high), ")"));
  4848. }
  4849. block.setSign(sign_loc, 3, text.number(player.getId(player)));
  4850. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  4851. goto("wait");
  4852. }
  4853. if(arg0 == "raise") {
  4854. location = entity.getLocation(player);
  4855. plot_list = plot.get(location);
  4856. amount = list.getSize(plot_list);
  4857. if(amount == 0) {
  4858. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4859. goto("wait");
  4860. }
  4861. plot = list.getIndex(plot_list, 0);
  4862. if(plot.isCity(plot)) {
  4863. msg.prefix(player, prefix_plot, "This plot is already a city.");
  4864. goto("wait");
  4865. }
  4866. if(!plot.isLeader(plot, player)) {
  4867. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  4868. goto("wait");
  4869. }
  4870. if(amount > 1) {
  4871. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4872. goto("wait");
  4873. }
  4874. x1 = plot.getMinX(plot);
  4875. z1 = plot.getMinZ(plot);
  4876. x2 = plot.getMaxX(plot);
  4877. z2 = plot.getMaxZ(plot);
  4878. length = math.abs(x1 - x2) + 1;
  4879. width = math.abs(z1 - z2) + 1;
  4880. plot_size = length * width;
  4881. if(plot_size < 2500) {
  4882. msg.prefix(player, prefix_plot, "Your plot must be over 2500m2.");
  4883. goto("wait");
  4884. }
  4885. snuvis = 40960;
  4886. if(!hasEnoughMoney(player, snuvis)) {
  4887. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4888. goto("wait");
  4889. }
  4890. offerRank(player, "rank.major");
  4891. player.setPlotRaised(player, true);
  4892. subMoney(player, snuvis);
  4893. plot.setCity(plot, true);
  4894. msg.prefix(player, prefix_plot, concat("City created. Spent §6", text.number(snuvis), "§r snuvis."));
  4895. goto("wait");
  4896. }
  4897. if(arg0 == "leader") {
  4898. if(size < 2) {
  4899. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4900. goto("wait");
  4901. }
  4902. p_name = list.getIndex(args, 1);
  4903. p_uuid = player.getUuid(p_name);
  4904. if(p_uuid == null) {
  4905. msg.prefix(player, prefix_plot, "This player has never been online.");
  4906. goto("wait");
  4907. }
  4908. p_name = player.getName(p_uuid);
  4909. location = entity.getLocation(player);
  4910. world = loc.getWorld(location);
  4911. if(size == 2) {
  4912. plot_list = plot.get(location);
  4913. amount = list.getSize(plot_list);
  4914. if(amount == 0) {
  4915. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4916. goto("wait");
  4917. }
  4918. plot = list.getIndex(plot_list, 0);
  4919. if(amount > 1) {
  4920. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4921. for(i = 0; i < amount; i++) {
  4922. plot = list.getIndex(plot_list, i);
  4923. plot_id = plot.getId(plot);
  4924. msg(player, text.click(" [§cSelect§r] ", concat("/plot leader ", p_name, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  4925. }
  4926. goto("wait");
  4927. }
  4928. } else {
  4929. if(size != 3) {
  4930. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4931. goto("wait");
  4932. }
  4933. plot_id = list.getIndex(args, 2);
  4934. plot = plot.getFromId(plot_id, world);
  4935. if(plot == null) {
  4936. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4937. goto("wait");
  4938. }
  4939. }
  4940. player_id = player.getId(player);
  4941. if(!perm.has(player, "plot.other")) {
  4942. if(!world.canUsePlots(world)) {
  4943. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4944. goto("wait");
  4945. }
  4946. if(!plot.isLeader(plot, player_id)) {
  4947. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4948. goto("wait");
  4949. }
  4950. if(player_name == p_name) {
  4951. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  4952. goto("wait");
  4953. }
  4954. }
  4955. p_id = player.getId(p_uuid);
  4956. if(plot.isLeader(plot, p_id)) {
  4957. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  4958. goto("wait");
  4959. }
  4960. old_leader = plot.getLeaderId(plot);
  4961. if(old_leader != null) {
  4962. plot.setMod(plot, old_leader);
  4963. }
  4964. plot.setLeader(plot, p_id);
  4965. plot.addPlayer(plot, p_name);
  4966. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot leader."));
  4967. goto("wait");
  4968. }
  4969. if(arg0 == "mod") {
  4970. if(size < 2) {
  4971. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4972. goto("wait");
  4973. }
  4974. p_name = list.getIndex(args, 1);
  4975. p_uuid = player.getUuid(p_name);
  4976. if(p_uuid == null) {
  4977. msg.prefix(player, prefix_plot, "This player has never been online.");
  4978. goto("wait");
  4979. }
  4980. p_name = player.getName(p_uuid);
  4981. location = entity.getLocation(player);
  4982. world = loc.getWorld(location);
  4983. if(size == 2) {
  4984. plot_list = plot.get(location);
  4985. amount = list.getSize(plot_list);
  4986. if(amount == 0) {
  4987. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4988. goto("wait");
  4989. }
  4990. plot = list.getIndex(plot_list, 0);
  4991. if(amount > 1) {
  4992. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4993. for(i = 0; i < amount; i++) {
  4994. plot = list.getIndex(plot_list, i);
  4995. plot_id = plot.getId(plot);
  4996. msg(player, text.click(" [§cSelect§r] ", concat("/plot mod ", p_name, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  4997. }
  4998. goto("wait");
  4999. }
  5000. } else {
  5001. if(size != 3) {
  5002. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  5003. goto("wait");
  5004. }
  5005. plot_id = list.getIndex(args, 2);
  5006. plot = plot.getFromId(plot_id, world);
  5007. if(plot == null) {
  5008. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5009. goto("wait");
  5010. }
  5011. }
  5012. player_id = player.getId(player);
  5013. if(!perm.has(player, "plot.other")) {
  5014. if(!world.canUsePlots(world)) {
  5015. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5016. goto("wait");
  5017. }
  5018. if(!plot.isLeader(plot, player_id)) {
  5019. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  5020. goto("wait");
  5021. }
  5022. }
  5023. p_id = player.getId(p_uuid);
  5024. if(plot.isLeader(plot, p_id)) {
  5025. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  5026. goto("wait");
  5027. }
  5028. if(plot.isMod(plot, p_id)) {
  5029. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  5030. goto("wait");
  5031. }
  5032. plot.setMod(plot, p_id);
  5033. plot.addPlayer(plot, p_name);
  5034. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot mod."));
  5035. goto("wait");
  5036. }
  5037. if(arg0 == "chest") {
  5038. if(size < 2) {
  5039. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5040. goto("wait");
  5041. }
  5042. p_name = list.getIndex(args, 1);
  5043. p_uuid = player.getUuid(p_name);
  5044. if(p_uuid == null) {
  5045. msg.prefix(player, prefix_plot, "This player has never been online.");
  5046. goto("wait");
  5047. }
  5048. p_name = player.getName(p_uuid);
  5049. location = entity.getLocation(player);
  5050. world = loc.getWorld(location);
  5051. if(size == 2) {
  5052. plot_list = plot.get(location);
  5053. amount = list.getSize(plot_list);
  5054. if(amount == 0) {
  5055. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5056. goto("wait");
  5057. }
  5058. plot = list.getIndex(plot_list, 0);
  5059. if(amount > 1) {
  5060. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5061. for(i = 0; i < amount; i++) {
  5062. plot = list.getIndex(plot_list, i);
  5063. plot_id = plot.getId(plot);
  5064. msg(player, text.click(" [§cSelect§r] ", concat("/plot chest ", p_name, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5065. }
  5066. goto("wait");
  5067. }
  5068. } else {
  5069. if(size != 3) {
  5070. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5071. goto("wait");
  5072. }
  5073. plot_id = list.getIndex(args, 2);
  5074. plot = plot.getFromId(plot_id, world);
  5075. if(plot == null) {
  5076. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5077. goto("wait");
  5078. }
  5079. }
  5080. player_id = player.getId(player);
  5081. if(!perm.has(player, "plot.other")) {
  5082. if(!world.canUsePlots(world)) {
  5083. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5084. goto("wait");
  5085. }
  5086. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5087. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5088. goto("wait");
  5089. }
  5090. }
  5091. p_id = player.getId(p_uuid);
  5092. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  5093. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  5094. goto("wait");
  5095. }
  5096. if(plot.canOpenChests(plot, p_id)) {
  5097. msg.prefix(player, prefix_plot, "This player already can open chests.");
  5098. goto("wait");
  5099. }
  5100. plot.setChest(plot, p_id);
  5101. msg.prefix(player, prefix_plot, concat(p_name, " can now open chests."));
  5102. goto("wait");
  5103. }
  5104. if(arg0 == "remove") {
  5105. location = entity.getLocation(player);
  5106. world = loc.getWorld(location);
  5107. if(size == 1) {
  5108. plot_list = plot.get(location);
  5109. amount = list.getSize(plot_list);
  5110. if(amount == 0) {
  5111. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5112. goto("wait");
  5113. }
  5114. plot = list.getIndex(plot_list, 0);
  5115. if(amount > 1) {
  5116. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5117. for(i = 0; i < amount; i++) {
  5118. plot = list.getIndex(plot_list, i);
  5119. plot_id = plot.getId(plot);
  5120. msg(player, text.click(" [§cSelect§r] ", concat("/plot remove ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5121. }
  5122. goto("wait");
  5123. }
  5124. } else {
  5125. if(size != 2) {
  5126. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  5127. goto("wait");
  5128. }
  5129. plot_id = list.getIndex(args, 1);
  5130. plot = plot.getFromId(plot_id, world);
  5131. if(plot == null) {
  5132. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5133. goto("wait");
  5134. }
  5135. }
  5136. if(!perm.has(player, "plot.other")) {
  5137. if(!world.canUsePlots(world)) {
  5138. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5139. goto("wait");
  5140. }
  5141. player_id = player.getId(player);
  5142. if(!plot.isLeader(plot, player_id)) {
  5143. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  5144. goto("wait");
  5145. }
  5146. }
  5147. if(plot.isCity(plot)) {
  5148. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  5149. iter = list.iterator(plot_list);
  5150. while(hasNext(iter)) {
  5151. sub_plot = next(iter);
  5152. plot.removeAllPlayers(sub_plot);
  5153. plot.remove(sub_plot, world);
  5154. }
  5155. }
  5156. plot.removeAllPlayers(plot);
  5157. plot.delMoveEvent(plot);
  5158. plot.remove(plot, world);
  5159. msg.prefix(player, prefix_plot, concat("Plot removed. #", text.number(plot.getId(plot)), " §6", plot.getName(plot)));
  5160. goto("wait");
  5161. }
  5162. if(arg0 == "expand") {
  5163. if(size < 2) {
  5164. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  5165. goto("wait");
  5166. }
  5167. location = entity.getLocation(player);
  5168. world = loc.getWorld(location);
  5169. anzahl = list.getIndex(args, 1);
  5170. if(!isDouble(anzahl) || anzahl < 0) {
  5171. msg.prefix(player, prefix_plot, "Positive number expected.");
  5172. goto("wait");
  5173. }
  5174. if(size == 2) {
  5175. yaw = loc.getYaw(location);
  5176. direction = getDirection(yaw);
  5177. if(direction == null) {
  5178. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  5179. goto("wait");
  5180. }
  5181. plot_list = plot.get(location);
  5182. amount = list.getSize(plot_list);
  5183. if(amount == 0) {
  5184. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5185. goto("wait");
  5186. }
  5187. plot = list.getIndex(plot_list, 0);
  5188. if(amount > 1) {
  5189. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5190. for(i = 0; i < amount; i++) {
  5191. plot = list.getIndex(plot_list, i);
  5192. plot_id = plot.getId(plot);
  5193. msg(player, text.click(" [§cSelect§r] ", concat("/plot expand ", anzahl, " ", direction, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5194. }
  5195. goto("wait");
  5196. }
  5197. } else {
  5198. if(size != 4) {
  5199. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [<direction> <plot_id>]");
  5200. goto("wait");
  5201. }
  5202. direction = text.toLowerCase(list.getIndex(args, 2));
  5203. plot_id = list.getIndex(args, 3);
  5204. plot = plot.getFromId(plot_id, world);
  5205. if(plot == null) {
  5206. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5207. goto("wait");
  5208. }
  5209. }
  5210. if(plot.isSub(plot)) {
  5211. msg.prefix(player, prefix_plot, "Sub plots can't be expanded.");
  5212. goto("wait");
  5213. }
  5214. x1 = plot.getMinX(plot);
  5215. y1 = plot.getMinY(plot);
  5216. z1 = plot.getMinZ(plot);
  5217. x2 = plot.getMaxX(plot);
  5218. y2 = plot.getMaxY(plot);
  5219. z2 = plot.getMaxZ(plot);
  5220. old_length = math.abs(x1 - x2) + 1;
  5221. old_width = math.abs(z1 - z2) + 1;
  5222. if(direction == "east") {
  5223. old_x2 = x2;
  5224. x2 += anzahl;
  5225. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  5226. } elseif(direction == "south") {
  5227. old_z2 = z2;
  5228. z2 += anzahl;
  5229. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  5230. } elseif(direction == "west") {
  5231. old_x1 = x1;
  5232. x1 -= anzahl;
  5233. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  5234. } elseif(direction == "north") {
  5235. old_z1 = z1;
  5236. z1 -= anzahl;
  5237. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  5238. } else {
  5239. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  5240. goto("wait");
  5241. }
  5242. if(!perm.has(player, "plot.other")) {
  5243. if(list.getSize(list) > 0) {
  5244. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  5245. goto("wait");
  5246. }
  5247. if(!world.canUsePlots(world)) {
  5248. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5249. goto("wait");
  5250. }
  5251. player_id = player.getId(player);
  5252. if(!plot.isLeader(plot, player_id)) {
  5253. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  5254. goto("wait");
  5255. }
  5256. //Calc costs
  5257. length = math.abs(x1 - x2) + 1;
  5258. width = math.abs(z1 - z2) + 1;
  5259. snuvis = plot.calcCost(world, length, width) - plot.calcCost(world, old_length, old_width);
  5260. if(!hasEnoughMoney(player, snuvis)) {
  5261. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  5262. goto("wait");
  5263. }
  5264. subMoney(player, snuvis);
  5265. expand_message = concat("The plot has been expanded. Spent §6", text.number(snuvis), "§r snuvis.");
  5266. if(!player.hasBigPlotCreated(player)) {
  5267. plot_size = length * width;
  5268. if(plot_size >= 900) {
  5269. offerRank(player, "rank.colonizer");
  5270. player.setBigPlotCreated(player, true);
  5271. }
  5272. }
  5273. } else {
  5274. expand_message = concat("The plot has been expanded.");
  5275. }
  5276. //Expand plot
  5277. gs_edge1 = loc.new(world, x1, y1, z1);
  5278. gs_edge2 = loc.new(world, x2, y2, z2);
  5279. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  5280. plot.delMoveEvent(plot);
  5281. plot.setMoveEvent(new_plot, world);
  5282. msg.prefix(player, prefix_plot, expand_message);
  5283. goto("wait");
  5284. }
  5285. if(arg0 == "share") {
  5286. if(size < 2) {
  5287. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  5288. goto("wait");
  5289. }
  5290. p_name = list.getIndex(args, 1);
  5291. p_uuid = player.getUuid(p_name);
  5292. if(p_uuid == null) {
  5293. msg.prefix(player, prefix_plot, "This player has never been online.");
  5294. goto("wait");
  5295. }
  5296. p_name = player.getName(p_uuid);
  5297. location = entity.getLocation(player);
  5298. world = loc.getWorld(location);
  5299. if(size == 2) {
  5300. plot_list = plot.get(location);
  5301. amount = list.getSize(plot_list);
  5302. if(amount == 0) {
  5303. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5304. goto("wait");
  5305. }
  5306. plot = list.getIndex(plot_list, 0);
  5307. if(amount > 1) {
  5308. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5309. for(i = 0; i < amount; i++) {
  5310. plot = list.getIndex(plot_list, i);
  5311. plot_id = plot.getId(plot);
  5312. msg(player, text.click(" [§cSelect§r] ", concat("/plot share ", p_name, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5313. }
  5314. goto("wait");
  5315. }
  5316. } else {
  5317. if(size != 3) {
  5318. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  5319. goto("wait");
  5320. }
  5321. plot_id = list.getIndex(args, 2);
  5322. plot = plot.getFromId(plot_id, world);
  5323. if(plot == null) {
  5324. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5325. goto("wait");
  5326. }
  5327. }
  5328. if(!perm.has(player, "plot.other")) {
  5329. if(!world.canUsePlots(world)) {
  5330. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5331. goto("wait");
  5332. }
  5333. player_id = player.getId(player);
  5334. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5335. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5336. goto("wait");
  5337. }
  5338. }
  5339. plot.addPlayer(plot, p_name);
  5340. msg.prefix(player, prefix_plot, concat(p_name, " added to the plot."));
  5341. goto("wait");
  5342. }
  5343. if(arg0 == "kick") {
  5344. if(size < 2) {
  5345. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  5346. goto("wait");
  5347. }
  5348. p_name = list.getIndex(args, 1);
  5349. p_uuid = player.getUuid(p_name);
  5350. if(p_uuid == null) {
  5351. msg.prefix(player, prefix_plot, "This player has never been online.");
  5352. goto("wait");
  5353. }
  5354. p_name = player.getName(p_uuid);
  5355. location = entity.getLocation(player);
  5356. world = loc.getWorld(location);
  5357. if(size == 2) {
  5358. plot_list = plot.get(location);
  5359. amount = list.getSize(plot_list);
  5360. if(amount == 0) {
  5361. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5362. goto("wait");
  5363. }
  5364. plot = list.getIndex(plot_list, 0);
  5365. if(amount > 1) {
  5366. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5367. for(i = 0; i < amount; i++) {
  5368. plot = list.getIndex(plot_list, i);
  5369. plot_id = plot.getId(plot);
  5370. msg(player, text.click(" [§cSelect§r] ", concat("/plot kick ", p_name, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5371. }
  5372. goto("wait");
  5373. }
  5374. } else {
  5375. if(size != 3) {
  5376. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  5377. goto("wait");
  5378. }
  5379. plot_id = list.getIndex(args, 2);
  5380. plot = plot.getFromId(plot_id, world);
  5381. if(plot == null) {
  5382. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5383. goto("wait");
  5384. }
  5385. }
  5386. if(!perm.has(player, "plot.other")) {
  5387. if(!world.canUsePlots(world)) {
  5388. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5389. goto("wait");
  5390. }
  5391. player_id = player.getId(player);
  5392. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5393. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5394. goto("wait");
  5395. }
  5396. if(player_name == p_name) {
  5397. msg.prefix(player, prefix_plot, "You can't kick yourself.");
  5398. goto("wait");
  5399. }
  5400. p_id = player.getId(p_uuid);
  5401. if(plot.isLeader(plot, p_id)) {
  5402. msg.prefix(player, prefix_plot, "You can't kick the plot-leader.");
  5403. goto("wait");
  5404. }
  5405. }
  5406. plot.removePlayer(plot, p_name);
  5407. msg.prefix(player, prefix_plot, concat(p_name, " removed from this plot."));
  5408. goto("wait");
  5409. }
  5410. if(arg0 == "name") {
  5411. if(size < 2) {
  5412. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  5413. goto("wait");
  5414. }
  5415. location = entity.getLocation(player);
  5416. world = loc.getWorld(location);
  5417. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  5418. if(size == 2) {
  5419. plot_list = plot.get(location);
  5420. amount = list.getSize(plot_list);
  5421. if(amount == 0) {
  5422. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5423. goto("wait");
  5424. }
  5425. plot = list.getIndex(plot_list, 0);
  5426. name = list.getIndex(args, 1);
  5427. if(amount > 1) {
  5428. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5429. for(i = 0; i < amount; i++) {
  5430. plot = list.getIndex(plot_list, i);
  5431. plot_id = plot.getId(plot);
  5432. msg(player, text.click(" [§cSelect§r] ", concat("/plot name ", plot_id, " ", name)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5433. }
  5434. goto("wait");
  5435. }
  5436. }
  5437. if(size > 2) {
  5438. plot_id = list.getIndex(args, 1);
  5439. if(isDouble(plot_id)) {
  5440. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  5441. plot = plot.getFromId(plot_id, world);
  5442. if(plot == null) {
  5443. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5444. goto("wait");
  5445. }
  5446. name = text.concatList(args, " ", 2, size - 1);
  5447. } else {
  5448. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  5449. name = text.concatList(args, " ", 1, size - 1);
  5450. plot_list = plot.get(location);
  5451. amount = list.getSize(plot_list);
  5452. if(amount == 0) {
  5453. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5454. goto("wait");
  5455. }
  5456. plot = list.getIndex(plot_list, 0);
  5457. if(amount > 1) {
  5458. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5459. for(i = 0; i < amount; i++) {
  5460. plot = list.getIndex(plot_list, i);
  5461. plot_id = plot.getId(plot);
  5462. msg(player, text.click(" [§cSelect§r] ", concat("/plot name ", plot_id, " ", name)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5463. }
  5464. goto("wait");
  5465. }
  5466. }
  5467. }
  5468. if(!perm.has(player, "plot.other")) {
  5469. if(!world.canUsePlots(world)) {
  5470. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5471. goto("wait");
  5472. }
  5473. player_id = player.getId(player);
  5474. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5475. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5476. goto("wait");
  5477. }
  5478. }
  5479. plot.setName(plot, name);
  5480. msg.prefix(player, prefix_plot, concat("Plot renamed to ", name, "."));
  5481. goto("wait");
  5482. }
  5483. if(arg0 == "create" || arg0 == "create3d") {
  5484. player_id = player.getId(player);
  5485. loc1 = map.get(plotpos1, player_id);
  5486. loc2 = map.get(plotpos2, player_id);
  5487. if(loc1 == null || loc2 == null) {
  5488. msg.prefix(player, prefix_plot, "No corner points set.");
  5489. goto("wait");
  5490. }
  5491. world1 = loc.getWorld(loc1);
  5492. if(world1 != loc.getWorld(loc2)) {
  5493. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  5494. goto("wait");
  5495. }
  5496. x1 = loc.getX(loc1);
  5497. y1 = loc.getY(loc1);
  5498. z1 = loc.getZ(loc1);
  5499. x2 = loc.getX(loc2);
  5500. y2 = loc.getY(loc2);
  5501. z2 = loc.getZ(loc2);
  5502. if(arg0 == "create") {
  5503. loc.setY(loc1, 0);
  5504. loc.setY(loc2, 255);
  5505. }
  5506. create_message = "Plot created.";
  5507. sub_plot = false;
  5508. if(!perm.has(player, "plot.other")) {
  5509. world_name = world.getName(world1);
  5510. if(!world.canUsePlots(world1)) {
  5511. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  5512. goto("wait");
  5513. }
  5514. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  5515. if(list.getSize(list) > 0) {
  5516. city_plot = list.getIndex(list, 0);
  5517. if(plot.isCity(city_plot)) {
  5518. if(!plot.isLeader(city_plot, player_id) && !plot.isMod(city_plot, player_id)) {
  5519. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5520. goto("wait");
  5521. }
  5522. city_id = plot.getId(city_plot);
  5523. if(!loc.hasPlotId(loc1, city_id)) {
  5524. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  5525. goto("wait");
  5526. }
  5527. if(!loc.hasPlotId(loc2, city_id)) {
  5528. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  5529. goto("wait");
  5530. }
  5531. sub_plot = true;
  5532. } else {
  5533. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  5534. goto("wait");
  5535. }
  5536. }
  5537. if(!sub_plot) {
  5538. //Calc costs
  5539. length = math.abs(x1 - x2) + 1;
  5540. width = math.abs(z1 - z2) + 1;
  5541. if(length < 3 || width < 3) {
  5542. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  5543. goto("wait");
  5544. }
  5545. snuvis = plot.calcCost(world1, length, width);
  5546. free_plot_used = player.usedHisFreePlot(player_id);
  5547. if(!free_plot_used && world_name != "creative") {
  5548. snuvis -= plot.calcCost(world1, 16, 16);
  5549. if(snuvis < 0) {
  5550. snuvis = 0;
  5551. }
  5552. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  5553. }
  5554. if(!hasEnoughMoney(player, snuvis)) {
  5555. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  5556. goto("wait");
  5557. }
  5558. create_message = concat("Plot created. Spent §6", text.number(snuvis), "§r snuvis.");
  5559. subMoney(player, snuvis);
  5560. if(!free_plot_used && world_name != "creative") {
  5561. player.setUsedFreePlot(player_id, true);
  5562. offerRank(player, "rank.settler");
  5563. }
  5564. if(!player.hasBigPlotCreated(player)) {
  5565. plot_size = length * width;
  5566. if(plot_size >= 900) {
  5567. offerRank(player, "rank.colonizer");
  5568. player.setBigPlotCreated(player, true);
  5569. }
  5570. }
  5571. }
  5572. }
  5573. //Create plot
  5574. map.remove(plotpos1, player_id);
  5575. map.remove(plotpos2, player_id);
  5576. plot = plot.add(loc1, loc2);
  5577. if(sub_plot) {
  5578. plot.setSub(plot, true);
  5579. }
  5580. plot.setMoveEvent(plot, world1);
  5581. plot.setName(plot, concat(player_name, "'s plot"));
  5582. plot.addPlayer(plot, player_name);
  5583. plot.setLeader(plot, player_id);
  5584. msg.prefix(player, prefix_plot, create_message);
  5585. goto("wait");
  5586. }
  5587. if(arg0 == "pos1" || arg0 == "pos2") {
  5588. loc = entity.getLocation(player);
  5589. loc = getBlockLocation(loc);
  5590. player_id = player.getId(player);
  5591. if(arg0 == "pos1") {
  5592. map.add(plotpos1, player_id, loc);
  5593. pos_string = "Pos1";
  5594. } elseif(arg0 == "pos2") {
  5595. map.add(plotpos2, player_id, loc);
  5596. pos_string = "Pos2";
  5597. }
  5598. x = text.number(loc.getX(loc));
  5599. y = text.number(loc.getY(loc));
  5600. z = text.number(loc.getZ(loc));
  5601. msg.prefix(player, prefix_plot, concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  5602. loc1 = map.get(plotpos1, player_id);
  5603. loc2 = map.get(plotpos2, player_id);
  5604. if(loc1 != null && loc2 != null) {
  5605. world1 = loc.getWorld(loc1);
  5606. snuvis = plot.calcCost(world1, loc1, loc2);
  5607. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  5608. snuvis -= plot.calcCost(world1, 16, 16);
  5609. if(snuvis < 0) {
  5610. snuvis = 0;
  5611. }
  5612. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  5613. }
  5614. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  5615. snuvis = 0;
  5616. }
  5617. msg.prefix(player, prefix_plot, concat("This plot will cost §6", text.number(snuvis), "§r snuvis."));
  5618. }
  5619. goto("wait");
  5620. }
  5621. if(arg0 == "flags") {
  5622. if(!perm.has(player, "plot.moreinfo")) {
  5623. perm.no(player, "plot.moreinfo");
  5624. goto("wait");
  5625. }
  5626. if(size < 3 || size > 4) {
  5627. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  5628. goto("wait");
  5629. }
  5630. flags = list.getIndex(args, 1);
  5631. if(!isDouble(flags) || flags < 0) {
  5632. msg.prefix(player, prefix_commands, "Positive number expected.");
  5633. goto("wait");
  5634. }
  5635. boolean = list.getIndex(args, 2);
  5636. if(!(boolean == true || boolean == false)) {
  5637. msg.prefix(player, prefix_commands, "Boolean expected.");
  5638. goto("wait");
  5639. }
  5640. location = entity.getLocation(player);
  5641. world = loc.getWorld(location);
  5642. if(size == 3) {
  5643. plot_list = plot.get(location);
  5644. amount = list.getSize(plot_list);
  5645. if(amount == 0) {
  5646. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5647. goto("wait");
  5648. }
  5649. plot = list.getIndex(plot_list, 0);
  5650. if(amount > 1) {
  5651. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5652. for(i = 0; i < amount; i++) {
  5653. plot = list.getIndex(plot_list, i);
  5654. plot_id = plot.getId(plot);
  5655. x = loc.getX(location);
  5656. y = loc.getY(location);
  5657. z = loc.getZ(location);
  5658. msg(player, text.click(" [§cSelect§r] ", concat("/plot flags ", flags, " ", boolean, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5659. }
  5660. goto("wait");
  5661. }
  5662. } else {
  5663. plot_id = list.getIndex(args, 3);
  5664. plot = plot.getFromId(plot_id, world);
  5665. if(plot == null) {
  5666. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5667. goto("wait");
  5668. }
  5669. }
  5670. flags_list = list.new();
  5671. temp_flags = 0;
  5672. if(flags >= 512) {
  5673. list.add(flags_list, "SUB_PLOT_FLAG");
  5674. temp_flags += 512;
  5675. }
  5676. if(flags >= 256) {
  5677. list.add(flags_list, "FREE_FLAG");
  5678. temp_flags += 256;
  5679. }
  5680. if(flags >= 128) {
  5681. list.add(flags_list, "CITY_FLAG");
  5682. temp_flags += 128;
  5683. }
  5684. if(flags >= 64) {
  5685. list.add(flags_list, "EXPLOSION_FLAG");
  5686. temp_flags += 64;
  5687. }
  5688. if(flags >= 32) {
  5689. list.add(flags_list, "ENTITY_INTERACT_FLAG");
  5690. temp_flags += 32;
  5691. }
  5692. if(flags >= 16) {
  5693. list.add(flags_list, "BLOCK_INTERACT_FLAG");
  5694. temp_flags += 16;
  5695. }
  5696. if(flags >= 8) {
  5697. list.add(flags_list, "HIT_AMBIENT_FLAG");
  5698. temp_flags += 8;
  5699. }
  5700. if(flags >= 4) {
  5701. list.add(flags_list, "BUCKET_FLAG");
  5702. temp_flags += 4;
  5703. }
  5704. if(flags >= 2) {
  5705. list.add(flags_list, "BREAK_FLAG");
  5706. temp_flags += 2;
  5707. }
  5708. if(flags >= 1) {
  5709. list.add(flags_list, "PLACE_FLAG");
  5710. temp_flags += 1;
  5711. }
  5712. plot.setFlags(plot, flags, boolean);
  5713. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  5714. goto("wait");
  5715. }
  5716. if(arg0 == "list") {
  5717. if(size == 1) {
  5718. p_name = player.getName(player);
  5719. } else {
  5720. if(!perm.has(player, "plot.moreinfo")) {
  5721. perm.no(player, "plot.moreinfo");
  5722. goto("wait");
  5723. }
  5724. p_name = list.getIndex(args, 1);
  5725. }
  5726. p_uuid = player.getUuid(p_name);
  5727. if(p_uuid == null) {
  5728. msg.prefix(player, prefix_plot, "This player has never been online.");
  5729. goto("wait");
  5730. }
  5731. p_name = player.getName(p_uuid);
  5732. msg.prefix(player, prefix_commands, concat(p_name, "'s plots:"));
  5733. world = loc.getWorld(entity.getLocation(player));
  5734. iter = plot.iterator(world, p_uuid);
  5735. while(hasNext(iter)) {
  5736. plot = next(iter);
  5737. msg(player, concat(" - #", text.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5738. }
  5739. goto("wait");
  5740. }
  5741. if(arg0 == "listall") {
  5742. if(!perm.has(player, "plot.moreinfo")) {
  5743. perm.no(player, "plot.moreinfo");
  5744. goto("wait");
  5745. }
  5746. if(size != 1) {
  5747. msg.prefix(player, prefix_commands, "/plot listall");
  5748. goto("wait");
  5749. }
  5750. world = loc.getWorld(entity.getLocation(player));
  5751. msg.prefix(player, prefix_commands, concat("All plots in this world: ", world.getName(world)));
  5752. iterator = plot.iterator(world);
  5753. while(hasNext(iterator)) {
  5754. plot = next(iterator);
  5755. plot_id = plot.getId(plot);
  5756. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5757. }
  5758. goto("wait");
  5759. }
  5760. if(arg0 == "moreinfo" || arg0 == "mi") {
  5761. if(!perm.has(player, "plot.moreinfo")) {
  5762. perm.no(player, "plot.moreinfo");
  5763. goto("wait");
  5764. }
  5765. location = entity.getLocation(player);
  5766. world = loc.getWorld(location);
  5767. if(size == 1) {
  5768. plot_list = plot.get(location);
  5769. amount = list.getSize(plot_list);
  5770. if(amount == 0) {
  5771. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5772. goto("wait");
  5773. }
  5774. plot = list.getIndex(plot_list, 0);
  5775. if(amount > 1) {
  5776. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5777. for(i = 0; i < amount; i++) {
  5778. plot = list.getIndex(plot_list, i);
  5779. plot_id = plot.getId(plot);
  5780. msg(player, text.click(" [§cSelect§r] ", concat("/plot moreinfo ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5781. }
  5782. goto("wait");
  5783. }
  5784. } else {
  5785. if(size != 2) {
  5786. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  5787. goto("wait");
  5788. }
  5789. plot_id = list.getIndex(args, 1);
  5790. plot = plot.getFromId(plot_id, world);
  5791. if(plot == null) {
  5792. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5793. goto("wait");
  5794. }
  5795. }
  5796. owners = "";
  5797. owners_list = plot.getOwners(plot);
  5798. copy_list = list.copy(owners_list);
  5799. plot_id = plot.getId(plot);
  5800. msg.prefix(player, prefix_plot, concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5801. msg(player, " §dWorld: §r", world.getName(world));
  5802. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5803. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5804. leader_name = plot.getLeaderName(plot);
  5805. if(leader_name == "") {
  5806. leader_name = "-";
  5807. }
  5808. msg(player, " §dLeader: §r", leader_name);
  5809. list.remove(copy_list, player.getUuid(leader_name));
  5810. mods_list = plot.getMods(plot);
  5811. mods_amount = list.getSize(mods_list);
  5812. if(mods_amount == 0) {
  5813. mods_string = "-";
  5814. } else {
  5815. iter = list.iterator(mods_list);
  5816. mods_string = "";
  5817. while(hasNext(iter)) {
  5818. p_name = player.getNameFromId(next(iter));
  5819. p_uuid = player.getUuid(p_name);
  5820. list.remove(copy_list, p_uuid);
  5821. if(mods_string == "") {
  5822. mods_string = p_name;
  5823. } else {
  5824. mods_string = concat(mods_string, " / ", p_name);
  5825. }
  5826. }
  5827. }
  5828. msg(player, " §dMods: §r", mods_string);
  5829. members_amount = list.getSize(copy_list);
  5830. if(members_amount == 0) {
  5831. members_string = "-";
  5832. } else {
  5833. iter = list.iterator(copy_list);
  5834. members_string = "";
  5835. while(hasNext(iter)) {
  5836. p_name = player.getName(next(iter));
  5837. if(members_string == "") {
  5838. members_string = p_name;
  5839. } else {
  5840. members_string = concat(members_string, " / ", p_name);
  5841. }
  5842. }
  5843. }
  5844. msg(player, " §dMembers: §r", members_string);
  5845. chests_list = plot.getChestRanks(plot);
  5846. chests_amount = list.getSize(chests_list);
  5847. if(chests_amount == 0) {
  5848. chests_string = "-";
  5849. } else {
  5850. iter = list.iterator(chests_list);
  5851. chests_string = "";
  5852. while(hasNext(iter)) {
  5853. p_name = player.getNameFromId(next(iter));
  5854. if(chests_string == "") {
  5855. chests_string = p_name;
  5856. } else {
  5857. chests_string = concat(chests_string, " / ", p_name);
  5858. }
  5859. }
  5860. }
  5861. msg(player, " §dOnly chest: §r", chests_string);
  5862. flags = plot.getFlags(plot);
  5863. flags_true = list.new();
  5864. flags_false = list.new();
  5865. array = array.new(2);
  5866. array[0] = 512;
  5867. array[1] = "SUB_PLOT_FLAG";
  5868. if(flags >= 512) {
  5869. list.add(flags_true, array);
  5870. flags -= 512;
  5871. } else {
  5872. list.add(flags_false, array);
  5873. }
  5874. array = array.new(2);
  5875. array[0] = 256;
  5876. array[1] = "FREE_FLAG";
  5877. if(flags >= 256) {
  5878. list.add(flags_true, array);
  5879. flags -= 256;
  5880. } else {
  5881. list.add(flags_false, array);
  5882. }
  5883. array = array.new(2);
  5884. array[0] = 128;
  5885. array[1] = "CITY_FLAG";
  5886. if(flags >= 128) {
  5887. list.add(flags_true, array);
  5888. flags -= 128;
  5889. } else {
  5890. list.add(flags_false, array);
  5891. }
  5892. array = array.new(2);
  5893. array[0] = 64;
  5894. array[1] = "EXPLOSION_FLAG";
  5895. if(flags >= 64) {
  5896. list.add(flags_true, array);
  5897. flags -= 64;
  5898. } else {
  5899. list.add(flags_false, array);
  5900. }
  5901. array = array.new(2);
  5902. array[0] = 32;
  5903. array[1] = "ENTITY_INTERACT_FLAG";
  5904. if(flags >= 32) {
  5905. list.add(flags_true, array);
  5906. flags -= 32;
  5907. } else {
  5908. list.add(flags_false, array);
  5909. }
  5910. array = array.new(2);
  5911. array[0] = 16;
  5912. array[1] = "BLOCK_INTERACT_FLAG";
  5913. if(flags >= 16) {
  5914. list.add(flags_true, array);
  5915. flags -= 16;
  5916. } else {
  5917. list.add(flags_false, array);
  5918. }
  5919. array = array.new(2);
  5920. array[0] = 8;
  5921. array[1] = "HIT_AMBIENT_FLAG";
  5922. if(flags >= 8) {
  5923. list.add(flags_true, array);
  5924. flags -= 8;
  5925. } else {
  5926. list.add(flags_false, array);
  5927. }
  5928. array = array.new(2);
  5929. array[0] = 4;
  5930. array[1] = "BUCKET_FLAG";
  5931. if(flags >= 4) {
  5932. list.add(flags_true, array);
  5933. flags -= 4;
  5934. } else {
  5935. list.add(flags_false, array);
  5936. }
  5937. array = array.new(2);
  5938. array[0] = 2;
  5939. array[1] = "BREAK_FLAG";
  5940. if(flags >= 2) {
  5941. list.add(flags_true, array);
  5942. flags -= 2;
  5943. } else {
  5944. list.add(flags_false, array);
  5945. }
  5946. array = array.new(2);
  5947. array[0] = 1;
  5948. array[1] = "PLACE_FLAG";
  5949. if(flags >= 1) {
  5950. list.add(flags_true, array);
  5951. } else {
  5952. list.add(flags_false, array);
  5953. }
  5954. x = loc.getX(location);
  5955. y = loc.getY(location);
  5956. z = loc.getZ(location);
  5957. msg(player, " §dFlags true:");
  5958. iter = list.iterator(flags_true);
  5959. while(hasNext(iter)) {
  5960. array = next(iter);
  5961. flag_number = array[0];
  5962. flag_name = array[1];
  5963. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " false ", plot_id)));
  5964. }
  5965. msg(player, " §dFlags false:");
  5966. iter = list.iterator(flags_false);
  5967. while(hasNext(iter)) {
  5968. array = next(iter);
  5969. flag_number = array[0];
  5970. flag_name = array[1];
  5971. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " true ", plot_id)));
  5972. }
  5973. goto("wait");
  5974. }
  5975. if(arg0 == "info" || arg0 == "i") {
  5976. location = entity.getLocation(player);
  5977. list = plot.get(location);
  5978. world = loc.getWorld(location);
  5979. size = list.getSize(list);
  5980. if(size == 0) {
  5981. msg.prefix(player, prefix_plot, "No plots found.");
  5982. goto("wait");
  5983. }
  5984. if(size == 1) {
  5985. msg.prefix(player, prefix_plot, concat(text.number(size), " plot found:"));
  5986. } else {
  5987. msg.prefix(player, prefix_plot, concat(text.number(size), " plots found:"));
  5988. }
  5989. for(i = 0; i < size; i++) {
  5990. plot = list.getIndex(list, i);
  5991. plot_id = plot.getId(plot);
  5992. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5993. owners_list = plot.getOwners(plot);
  5994. copy_list = list.copy(owners_list);
  5995. plot_id = plot.getId(plot);
  5996. msg(player, " §dWorld: §r", world.getName(world));
  5997. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5998. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5999. leader_name = plot.getLeaderName(plot);
  6000. if(leader_name == "") {
  6001. leader_name = "-";
  6002. }
  6003. msg(player, " §dLeader: §r", leader_name);
  6004. list.remove(copy_list, player.getUuid(leader_name));
  6005. mods_list = plot.getMods(plot);
  6006. mods_amount = list.getSize(mods_list);
  6007. if(mods_amount == 0) {
  6008. mods_string = "-";
  6009. } else {
  6010. iter = list.iterator(mods_list);
  6011. mods_string = "";
  6012. while(hasNext(iter)) {
  6013. p_name = player.getNameFromId(next(iter));
  6014. p_uuid = player.getUuid(p_name);
  6015. list.remove(copy_list, p_uuid);
  6016. if(mods_string == "") {
  6017. mods_string = p_name;
  6018. } else {
  6019. mods_string = concat(mods_string, " / ", p_name);
  6020. }
  6021. }
  6022. }
  6023. msg(player, " §dMods: §r", mods_string);
  6024. members_amount = list.getSize(copy_list);
  6025. if(members_amount == 0) {
  6026. members_string = "-";
  6027. } else {
  6028. iter = list.iterator(copy_list);
  6029. members_string = "";
  6030. while(hasNext(iter)) {
  6031. p_name = player.getName(next(iter));
  6032. if(members_string == "") {
  6033. members_string = p_name;
  6034. } else {
  6035. members_string = concat(members_string, " / ", p_name);
  6036. }
  6037. }
  6038. }
  6039. msg(player, " §dMembers: §r", members_string);
  6040. chests_list = plot.getChestRanks(plot);
  6041. chests_amount = list.getSize(chests_list);
  6042. if(chests_amount == 0) {
  6043. chests_string = "-";
  6044. } else {
  6045. iter = list.iterator(chests_list);
  6046. chests_string = "";
  6047. while(hasNext(iter)) {
  6048. p_name = player.getNameFromId(next(iter));
  6049. if(chests_string == "") {
  6050. chests_string = p_name;
  6051. } else {
  6052. chests_string = concat(chests_string, " / ", p_name);
  6053. }
  6054. }
  6055. }
  6056. msg(player, " §dOnly chest: §r", chests_string);
  6057. }
  6058. goto("wait");
  6059. }
  6060. goto("plothelp");
  6061. @stopadventure
  6062. removeAdventureDisplay(player);
  6063. player.setAdventure(player, false);
  6064. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  6065. goto("wait");
  6066. @speed
  6067. if(size < 1 || size > 2) {
  6068. if(perm.has(player, "speed.other")) {
  6069. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  6070. } else {
  6071. msg.prefix(player, prefix_commands, "/speed <1-10>");
  6072. }
  6073. goto("wait");
  6074. }
  6075. speed = list.getIndex(args, 0);
  6076. if(!isDouble(speed)) {
  6077. msg.prefix(player, prefix_commands, "Number expected.");
  6078. goto("wait");
  6079. }
  6080. if(speed < 1) {
  6081. speed = 1;
  6082. }
  6083. if(speed > 10) {
  6084. speed = 10;
  6085. }
  6086. if(size == 2) {
  6087. if(!perm.has(player, "speed.other")) {
  6088. perm.no(player, "speed.other");
  6089. goto("wait");
  6090. }
  6091. affectedname = list.getIndex(args, 1);
  6092. affectedplayer = read.player(affectedname);
  6093. if(affectedplayer == null) {
  6094. msg.prefix(player, prefix_commands, "This player is not online.");
  6095. goto("wait");
  6096. }
  6097. }
  6098. player.setSpeed(affectedplayer, speed);
  6099. msg.prefix(affectedplayer, prefix_commands, concat("Set your speed to ", text.number(speed), "."));
  6100. if(affectedplayer != player) {
  6101. affectedname = player.getName(affectedplayer);
  6102. msg.prefix(player, prefix_commands, concat(affectedname, " set your speed to ", text.number(speed), "."));
  6103. }
  6104. goto("wait");
  6105. @butcher
  6106. loc = entity.getLocation(player);
  6107. world = loc.getWorld(loc);
  6108. list = world.getEntities(world);
  6109. size = list.getSize(list);
  6110. killed = 0;
  6111. for(i = 0; i < size; i++) {
  6112. element = list.getIndex(list, i);
  6113. if(isLiving(element)) {
  6114. entity_type = entity.getType(element);
  6115. if(set.contains(butcher_set, entity_type)) {
  6116. entity.remove(element);
  6117. killed++;
  6118. }
  6119. }
  6120. }
  6121. msg.prefix(player, prefix_commands, concat(text.number(killed), " mobs killed."));
  6122. goto("wait");
  6123. @enchant
  6124. if(size != 2) {
  6125. msg.prefix(player, prefix_commands, "/enchant <enchantment> <level>");
  6126. goto("wait");
  6127. }
  6128. ench_string = list.getIndex(args, 0);
  6129. ench = enchantment.get(ench_string);
  6130. if(ench == null) {
  6131. msg.prefix(player, prefix_commands, "Unknown enchantment");
  6132. goto("wait");
  6133. }
  6134. lvl = list.getIndex(args, 1);
  6135. if(!isDouble(lvl) || lvl < 1 || lvl > 100) {
  6136. msg.prefix(sender, prefix_commands, "Number greater than 0 and less than 101 expected.");
  6137. goto("wait");
  6138. }
  6139. item = living.getHand(player);
  6140. if(item.getType(item) == "minecraft:air") {
  6141. msg.prefix(sender, prefix_commands, "You need to hold an item in your hand.");
  6142. goto("wait");
  6143. }
  6144. enchantment.add(ench, item, lvl);
  6145. goto("wait");
  6146. @enderchest
  6147. if(size < 1 || size > 2) {
  6148. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  6149. goto("wait");
  6150. }
  6151. if(size == 1) {
  6152. from_name = list.getIndex(args, 0);
  6153. }
  6154. elseif(size == 2) {
  6155. affectedname = list.getIndex(args, 0);
  6156. from_name = list.getIndex(args, 1);
  6157. affectedplayer = read.player(affectedname);
  6158. if(affectedplayer == null) {
  6159. msg.prefix(player, prefix_commands, "This player is not online.");
  6160. goto("wait");
  6161. }
  6162. }
  6163. from_player = read.player(from_name);
  6164. if(from_player == null) {
  6165. msg.prefix(player, prefix_commands, "This player is not online.");
  6166. goto("wait");
  6167. }
  6168. player.openEnderchest(affectedplayer, from_player, concat("Enderchest von ", from_name));
  6169. goto("wait");
  6170. @gamemode
  6171. if(size < 1 || size > 2) {
  6172. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  6173. goto("wait");
  6174. }
  6175. if(size == 2) {
  6176. if(!perm.has(player, "gamemode.other")) {
  6177. perm.no(player, "gamemode.other");
  6178. goto("wait");
  6179. }
  6180. affectedname = list.getIndex(args, 1);
  6181. affectedplayer = read.player(affectedname);
  6182. if(affectedplayer == null) {
  6183. msg.prefix(player, prefix_commands, "This player is not online.");
  6184. goto("wait");
  6185. }
  6186. }
  6187. mode = list.getIndex(args, 0);
  6188. if(isDouble(mode)) {
  6189. mode = text.number(mode);
  6190. } else {
  6191. mode = text.toLowerCase(mode);
  6192. }
  6193. if(mode == "s" || mode == "0" || mode == "survival") {
  6194. mode = "survival";
  6195. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  6196. mode = "creative";
  6197. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  6198. mode = "adventure";
  6199. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  6200. mode = "spectator";
  6201. } else {
  6202. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  6203. goto("wait");
  6204. }
  6205. player.setGamemode(affectedplayer, mode);
  6206. if(affectedplayer != player) {
  6207. affectedname = player.getName(affectedplayer);
  6208. msg.prefix(player, prefix_commands, concat("Gamemode of ", affectedname, " set to ", mode, "."));
  6209. }
  6210. msg.prefix(affectedplayer, prefix_commands, concat("Set your gamemode to ", mode, "."));
  6211. goto("wait");
  6212. @home
  6213. if(size == 0) {
  6214. @homesyntax
  6215. msg.prefix(player, prefix_commands, "/home ...");
  6216. msg(player, "§6 - set <name> §rSets a home");
  6217. msg(player, "§6 - delete <name> §rDeletes a home");
  6218. if(perm.has(player, "home.other")) {
  6219. msg(player, "§6 - list [player] §rLists all homes");
  6220. msg(player, "§6 - <name> [player] §rTeleports to a home");
  6221. } else {
  6222. msg(player, "§6 - list §rLists your homes");
  6223. msg(player, "§6 - <name> §rTeleports to your home");
  6224. }
  6225. goto("wait");
  6226. }
  6227. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6228. if(arg0 == "del" || arg0 == "delete") {
  6229. if(size < 2) {
  6230. goto("homesyntax");
  6231. }
  6232. player_id = player.getId(player);
  6233. name = text.toLowerCase(list.getIndex(args, 1));
  6234. if(!home.exists(player_id, name)) {
  6235. msg.prefix(player, prefix_commands, concat("Home ", name, "doesn't exist."));
  6236. goto("wait");
  6237. }
  6238. home.delete(player_id, name);
  6239. msg.prefix(player, prefix_commands, concat("Home ", name, " deleted."));
  6240. goto("wait");
  6241. }
  6242. if(arg0 == "list") {
  6243. affecteduuid = player.getUuid(affectedname);
  6244. if(size == 2) {
  6245. if(!perm.has(player, "home.other")) {
  6246. perm.no(player, "home.other");
  6247. goto("wait");
  6248. }
  6249. affectedname = text.toLowerCase(list.getIndex(args, 1));
  6250. affecteduuid = player.getUuid(affectedname);
  6251. if(affecteduuid == null) {
  6252. msg.prefix(player, prefix_commands, "This player has never been online.");
  6253. goto("wait");
  6254. }
  6255. }
  6256. id = player.getId(affecteduuid);
  6257. homes_list = home.getList(id);
  6258. home_amount = list.getSize(homes_list);
  6259. if(home_amount == 0) {
  6260. msg.prefix(player, prefix_commands, "No homes existing.");
  6261. } else {
  6262. msg.prefix(player, prefix_commands, concat("Homes of ", affectedname, ":"));
  6263. for(i = 0; i < home_amount; i++) {
  6264. msg(player, concat("§6 - §r", list.getIndex(homes_list, i)));
  6265. }
  6266. }
  6267. goto("wait");
  6268. }
  6269. location = entity.getLocation(player);
  6270. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6271. if(!world.isSurvName(world_name)) {
  6272. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  6273. goto("wait");
  6274. }
  6275. if(arg0 == "set") {
  6276. if(size < 2) {
  6277. goto("homesyntax");
  6278. }
  6279. player_id = player.getId(player);
  6280. homes_list = home.getList(player_id);
  6281. home_amount = list.getSize(homes_list);
  6282. if(perm.has(player, "isAdmin")) {
  6283. max_homes = 100;
  6284. } elseif(perm.has(player, "isMod")) {
  6285. max_homes = 40;
  6286. } elseif(perm.has(player, "isTeam")) {
  6287. max_homes = 20;
  6288. } elseif(perm.has(player, "canTP")) {
  6289. max_homes = 10;
  6290. } else {
  6291. max_homes = 5;
  6292. }
  6293. max_homes += getAdditionalVoteHomes();
  6294. if(home_amount >= max_homes) {
  6295. msg.prefix(player, prefix_commands, concat("You can only set ", text.number(max_homes), " homes."));
  6296. goto("wait");
  6297. }
  6298. name = text.toLowerCase(list.getIndex(args, 1));
  6299. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  6300. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  6301. goto("wait");
  6302. }
  6303. if(!text.onlyletters(name)) {
  6304. msg.prefix(player, prefix_commands, "Only letters allowed.");
  6305. goto("wait");
  6306. }
  6307. if(text.length(name) > 20) {
  6308. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  6309. goto("wait");
  6310. }
  6311. if(home.exists(player_id, name)) {
  6312. msg.prefix(player, prefix_commands, concat("Home ", name, " already exists."));
  6313. goto("wait");
  6314. }
  6315. home.set(player_id, name, location);
  6316. msg.prefix(player, prefix_commands, concat("Home ", name, " set."));
  6317. goto("wait");
  6318. }
  6319. //Teleportation
  6320. if(size == 2) {
  6321. affectedname = text.toLowerCase(list.getIndex(args, 1));
  6322. }
  6323. affecteduuid = player.getUuid(affectedname);
  6324. if(affecteduuid == null) {
  6325. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  6326. goto("wait");
  6327. }
  6328. player_id = player.getID(affecteduuid);
  6329. location = home.getLocation(player_id, arg0);
  6330. if(location == null) {
  6331. msg.prefix(player, prefix_commands, "Home doesn't exist."); //oder die welt ist nicht geladen
  6332. goto("wait");
  6333. }
  6334. player.teleport(player, location, true);
  6335. goto("wait");
  6336. @tpa
  6337. if(size != 1) {
  6338. msg.prefix(player, prefix_commands, "/tpa <player>");
  6339. goto("wait");
  6340. }
  6341. p_name = list.getIndex(args, 0);
  6342. p_uuid = player.getUuid(p_name);
  6343. if(p_uuid == null) {
  6344. msg.prefix(player, prefix_commands, "This player has never been online.");
  6345. goto("wait");
  6346. }
  6347. p_name = player.getName(p_uuid);
  6348. p = read.player(p_name);
  6349. if(p == null) {
  6350. msg.prefix(player, prefix_commands, "This player is not online.");
  6351. goto("wait");
  6352. }
  6353. if(!player.doesAcceptTpaRequests(p)) {
  6354. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  6355. goto("wait");
  6356. }
  6357. if(!player.canTeleport(p)) {
  6358. msg.prefix(player, prefix_commands, "This player can't teleport now.");
  6359. goto("wait");
  6360. }
  6361. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6362. if(world.isGamesName(world_name)) {
  6363. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6364. goto("wait");
  6365. }
  6366. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6367. if(world.isGamesName(world_name)) {
  6368. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6369. goto("wait");
  6370. }
  6371. addTpaRequest(player.getUuid(player), p_uuid);
  6372. msg(player, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  6373. msg(p, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccept ", player_name)));
  6374. goto("wait");
  6375. @tpahere
  6376. if(size != 1) {
  6377. msg.prefix(player, prefix_commands, "/tpahere <player>");
  6378. goto("wait");
  6379. }
  6380. p_name = list.getIndex(args, 0);
  6381. p_uuid = player.getUuid(p_name);
  6382. if(p_uuid == null) {
  6383. msg.prefix(player, prefix_commands, "This player has never been online.");
  6384. goto("wait");
  6385. }
  6386. p_name = player.getName(p_uuid);
  6387. p = read.player(p_name);
  6388. if(p == null) {
  6389. msg.prefix(player, prefix_commands, "This player is not online.");
  6390. goto("wait");
  6391. }
  6392. if(!player.canTeleport(p)) {
  6393. msg.prefix(player, prefix_commands, "This player can't teleport now.");
  6394. goto("wait");
  6395. }
  6396. if(!player.doesAcceptTpaRequests(p)) {
  6397. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  6398. goto("wait");
  6399. }
  6400. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6401. if(world.isGamesName(world_name)) {
  6402. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to this world."));
  6403. goto("wait");
  6404. }
  6405. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6406. if(world.isGamesName(world_name)) {
  6407. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  6408. goto("wait");
  6409. }
  6410. addTpaRequest(p_uuid, player.getUuid(player));
  6411. msg(player, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  6412. msg(p, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccepthere ", player_name)));
  6413. goto("wait");
  6414. @tpaccept
  6415. if(size != 1) {
  6416. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  6417. goto("wait");
  6418. }
  6419. p_name = list.getIndex(args, 0);
  6420. p_uuid = player.getUuid(p_name);
  6421. if(p_uuid == null) {
  6422. msg.prefix(player, prefix_commands, "This player has never been online.");
  6423. goto("wait");
  6424. }
  6425. p_name = player.getName(p_uuid);
  6426. p = read.player(p_name);
  6427. if(p == null) {
  6428. msg.prefix(player, prefix_commands, "This player is not online.");
  6429. goto("wait");
  6430. }
  6431. if(!player.canTeleport(player)) {
  6432. msg.prefix(player, prefix_commands, "This player can't teleport to you now.");
  6433. goto("wait");
  6434. }
  6435. if(!player.canTeleport(p)) {
  6436. msg.prefix(player, prefix_commands, "This player can't teleport to you now.");
  6437. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  6438. }
  6439. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6440. if(world.isGamesName(world_name)) {
  6441. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to your world."));
  6442. goto("wait");
  6443. }
  6444. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6445. if(world.isGamesName(world_name)) {
  6446. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  6447. goto("wait");
  6448. }
  6449. player_uuid = player.getUuid(player);
  6450. if(!hasTpaRequest(p_uuid, player_uuid)) {
  6451. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  6452. goto("wait");
  6453. }
  6454. location = entity.getLocation(player);
  6455. player.teleport(p, location, true);
  6456. goto("wait");
  6457. @tpaccepthere
  6458. if(size != 1) {
  6459. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  6460. goto("wait");
  6461. }
  6462. p_name = list.getIndex(args, 0);
  6463. p_uuid = player.getUuid(p_name);
  6464. if(p_uuid == null) {
  6465. msg.prefix(player, prefix_commands, "This player has never been online.");
  6466. goto("wait");
  6467. }
  6468. p_name = player.getName(p_uuid);
  6469. p = read.player(p_name);
  6470. if(p == null) {
  6471. msg.prefix(player, prefix_commands, "This player is not online.");
  6472. goto("wait");
  6473. }
  6474. if(!player.canTeleport(player)) {
  6475. msg.prefix(p, prefix_commands, "This player can't teleport to you now.");
  6476. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  6477. }
  6478. if(!player.canTeleport(p)) {
  6479. msg.prefix(player, prefix_commands, "You must not teleport to this player now.");
  6480. goto("wait");
  6481. }
  6482. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6483. if(world.isGamesName(world_name)) {
  6484. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6485. goto("wait");
  6486. }
  6487. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6488. if(world.isGamesName(world_name)) {
  6489. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6490. goto("wait");
  6491. }
  6492. player_uuid = player.getUuid(player);
  6493. if(!hasTpaRequest(player_uuid, p_uuid)) {
  6494. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  6495. goto("wait");
  6496. }
  6497. location = entity.getLocation(p);
  6498. player.teleport(player, location, true);
  6499. goto("wait");
  6500. @teleport
  6501. if(size < 1 || size > 2) {
  6502. if(perm.has(player, "teleport.other")) {
  6503. msg.prefix(player, prefix_commands, "/teleport [player] <to-player>");
  6504. } else {
  6505. msg.prefix(player, prefix_commands, "/teleport <player>");
  6506. }
  6507. goto("wait");
  6508. }
  6509. if(size == 1) {
  6510. to_name = list.getIndex(args, 0);
  6511. }
  6512. elseif(size == 2) {
  6513. if(!perm.has(player, "teleport.other")) {
  6514. perm.no(player, "teleport.other");
  6515. goto("wait");
  6516. }
  6517. affectedname = list.getIndex(args, 0);
  6518. affectedplayer = read.player(affectedname);
  6519. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  6520. to_name = list.getIndex(args, 1);
  6521. if(affectedplayer == null) {
  6522. msg.prefix(player, prefix_commands, "This player is not online.");
  6523. goto("wait");
  6524. }
  6525. }
  6526. if(player.hasMinigame(affectedplayer)) {
  6527. if(size == 2) {
  6528. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  6529. goto("wait");
  6530. }
  6531. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6532. goto("wait");
  6533. }
  6534. to_player = read.player(to_name);
  6535. if(to_player == null) {
  6536. msg.prefix(player, prefix_commands, "This player is not online.");
  6537. goto("wait");
  6538. }
  6539. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  6540. to_name = player.getName(to_player);
  6541. location = entity.getLocation(to_player);
  6542. if(player.teleport(affectedplayer, location, true)) {
  6543. if(player != affectedplayer) {
  6544. affectedname = player.getName(affectedplayer);
  6545. msg.prefix(player, prefix_commands, concat("Teleported ", affectedname, " to ", to_name, "."));
  6546. }
  6547. msg.prefix(affectedplayer, prefix_commands, concat("Teleported you to ", to_name, "."));
  6548. }
  6549. goto("wait");
  6550. @say
  6551. if(size == 0) {
  6552. msg.prefix(sender, prefix_commands, "/say <text>");
  6553. goto("wait");
  6554. }
  6555. message = text.concatList(args, " ", 0, size - 1);
  6556. msg.server(message);
  6557. goto("wait");
  6558. @warp
  6559. if(size == 0) {
  6560. @warpsyntax
  6561. msg.prefix(player, prefix_commands, "/warp ...");
  6562. if(perm.has(player, "warp.create")) {
  6563. msg(player, "§6 - set [group] <warp> §rSets a warp");
  6564. msg(player, "§6 - delete [group] <warp> §rDeletes a warp");
  6565. msg(player, "§6 - [group] <warp> §rTeleports to a warp");
  6566. msg(player, "§6 - list [group] §rLists all warps");
  6567. msg(player, "§6 - groups §rLists all warp groups");
  6568. } else {
  6569. msg(player, "§6 - <warp> §rTeleports to a warp");
  6570. msg(player, "§6 - list §rLists all warps");
  6571. }
  6572. goto("wait");
  6573. }
  6574. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6575. if(arg0 == "delete") {
  6576. if(!perm.has(player, "warp.create")) {
  6577. perm.no(player, "warp.create");
  6578. goto("wait");
  6579. }
  6580. if(size < 2) {
  6581. goto("warpsyntax");
  6582. }
  6583. if(size == 2) {
  6584. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6585. warp_group = "default";
  6586. } else {
  6587. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6588. warp_name = text.toLowerCase(list.getIndex(args, 2));
  6589. }
  6590. if(warp.delete(warp_group, warp_name)) {
  6591. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " deleted."));
  6592. } else {
  6593. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  6594. }
  6595. goto("wait");
  6596. }
  6597. if(arg0 == "list") {
  6598. if(size == 1) {
  6599. warp_group = "default";
  6600. } else {
  6601. if(!perm.has(player, "warp.create")) {
  6602. perm.no(player, "warp.create");
  6603. goto("wait");
  6604. }
  6605. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6606. }
  6607. warps_list = warp.getList(warp_group);
  6608. if(list.getSize(warps_list) == 0) {
  6609. msg.prefix(player, prefix_commands, "No warps existing.");
  6610. } else {
  6611. msg.prefix(player, prefix_commands, concat("§6", warp_group, "§r warps:"));
  6612. for(i = 0; i < list.getSize(warps_list); i++) {
  6613. msg(player, concat("§6 - §r", list.getIndex(warps_list, i)));
  6614. }
  6615. }
  6616. goto("wait");
  6617. }
  6618. if(arg0 == "groups") {
  6619. if(!perm.has(player, "warp.create")) {
  6620. perm.no(player, "warp.create");
  6621. goto("wait");
  6622. }
  6623. groups_list = warp.getGroups();
  6624. msg.prefix(player, prefix_commands, "All warp groups:");
  6625. for(i = 0; i < list.getSize(groups_list); i++) {
  6626. msg(player, concat("§6 - §r", list.getIndex(groups_list, i)));
  6627. }
  6628. goto("wait");
  6629. }
  6630. if(arg0 == "set") {
  6631. if(!perm.has(player, "warp.create")) {
  6632. perm.no(player, "warp.create");
  6633. goto("wait");
  6634. }
  6635. if(size < 2) {
  6636. goto("warpsyntax");
  6637. }
  6638. if(size == 2) {
  6639. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6640. warp_group = "default";
  6641. } else {
  6642. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6643. warp_name = text.toLowerCase(list.getIndex(args, 2));
  6644. }
  6645. if(warp.exists(warp_group, warp_name)) {
  6646. msg.prefix(player, prefix_commands, "Warpname already exists.");
  6647. goto("wait");
  6648. }
  6649. warp.create(warp_group, warp_name, entity.getLocation(player));
  6650. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " set."));
  6651. goto("wait");
  6652. }
  6653. //Teleportation
  6654. if(size == 1) {
  6655. warp_name = arg0;
  6656. warp_group = "default";
  6657. } else {
  6658. if(!perm.has(player, "warp.create")) {
  6659. perm.no(player, "warp.create");
  6660. goto("wait");
  6661. }
  6662. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6663. warp_group = arg0;
  6664. }
  6665. warp_loc = warp.get(warp_group, warp_name);
  6666. if(warp_loc == null) {
  6667. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  6668. goto("wait");
  6669. }
  6670. if(!perm.has(player, "warp.create")) {
  6671. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6672. if(world.isGamesName(world_name)) {
  6673. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6674. goto("wait");
  6675. }
  6676. world_name = world.getName(loc.getWorld(warp_loc));
  6677. if(world.isGamesName(world_name)) {
  6678. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6679. goto("wait");
  6680. }
  6681. }
  6682. if(player.teleport(player, warp_loc, true)) {
  6683. msg.prefix(player, prefix_commands, concat("You have been teleported to warp §7", warp_name, "."));
  6684. }
  6685. goto("wait");
  6686. @databank
  6687. if(size == 0) {
  6688. @databankhelp
  6689. msg.prefix(player, prefix_commands, "/databank...");
  6690. msg(player, "§6 - showtables §rShows all tables");
  6691. msg(player, "§6 - showfields §rShows fields from a table");
  6692. msg(player, "§6 - showdataypes §rShows dataypes from a table");
  6693. goto("wait");
  6694. }
  6695. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6696. if(arg0 == "showtables") {
  6697. msg(player, getSpacer());
  6698. stmt = databank.prepare("SHOW TABLES");
  6699. result = databank.execute(stmt);
  6700. while(databank.next(result)) {
  6701. msg(player, databank.getString(result, 1));
  6702. }
  6703. databank.close(result);
  6704. databank.close(stmt);
  6705. goto("wait");
  6706. }
  6707. if(arg0 == "showfields") {
  6708. if(size < 2) {
  6709. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  6710. goto("wait");
  6711. }
  6712. table = list.getIndex(args, 1);
  6713. if(!databank.isExistingTable(table)) {
  6714. msg.prefix(player, prefix_commands, "This in no existing table.");
  6715. goto("wait");
  6716. }
  6717. msg(player, getSpacer());
  6718. fields = databank.getTableFields(table);
  6719. iter = list.iterator(fields);
  6720. while(hasNext(iter)) {
  6721. msg(player, next(iter));
  6722. }
  6723. goto("wait");
  6724. }
  6725. if(arg0 == "showdataypes") {
  6726. if(size < 2) {
  6727. msg.prefix(player, prefix_commands, "/databank showdataypes <table>");
  6728. goto("wait");
  6729. }
  6730. table = list.getIndex(args, 1);
  6731. if(!databank.isExistingTable(table)) {
  6732. msg.prefix(player, prefix_commands, "This in no existing table.");
  6733. goto("wait");
  6734. }
  6735. msg(player, getSpacer());
  6736. msg(player, databank.getTableDatatypes(table));
  6737. goto("wait");
  6738. }
  6739. goto("databankhelp");
  6740. @seen
  6741. if(size != 1) {
  6742. msg.prefix(player, prefix_commands, "/seen <player>");
  6743. goto("wait");
  6744. }
  6745. seen_name = list.getIndex(args, 0);
  6746. seen_uuid = player.getUuid(seen_name);
  6747. if(seen_uuid == null) {
  6748. msg.prefix(player, prefix_commands, "Dieser Spieler war noch nie online.");
  6749. goto("wait");
  6750. }
  6751. if(read.player(seen_name) != null) {
  6752. msg.prefix(player, prefix_commands, "Dieser Spieler ist gerade online.");
  6753. goto("wait");
  6754. }
  6755. seenStatement = databank.prepare("SELECT logouttime FROM logoutdata WHERE player_id = ?;");
  6756. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  6757. result = databank.execute(seenStatement);
  6758. varset = false;
  6759. while(databank.next(result)) {
  6760. time = databank.getLong(result, 1);
  6761. calendar = time.new(time);
  6762. year = text.number(time.getYear(calendar));
  6763. month = text.number(time.getMonth(calendar));
  6764. day = text.number(time.getDay(calendar));
  6765. minute = text.number(time.getMinute(calendar));
  6766. hour = text.number(time.getHour(calendar));
  6767. month = correctTimeFormat(month);
  6768. day = correctTimeFormat(day);
  6769. hour = correctTimeFormat(hour);
  6770. minute = correctTimeFormat(minute);
  6771. dateformat = concat(day, ".", month, ".", year);
  6772. clockformat = concat(hour, ":", minute);
  6773. msg.prefix(player, prefix_commands, concat(seen_name, " war zuletzt am §e", dateformat, "§r um §e", clockformat, " Uhr §ronline."));
  6774. varset = true;
  6775. }
  6776. databank.close(result);
  6777. databank.close(seenStatement);
  6778. if(!varset) {
  6779. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  6780. goto("wait");
  6781. }
  6782. goto("wait");
  6783. @lastseen
  6784. if(size != 1) {
  6785. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  6786. goto("wait");
  6787. }
  6788. amount = list.getIndex(args, 0);
  6789. if(!isDouble(amount)) {
  6790. msg.prefix(sender, prefix_commands, "Number expected.");
  6791. goto("wait");
  6792. }
  6793. if(amount < 1) {
  6794. msg.prefix(sender, prefix_commands, "Positive number expected.");
  6795. goto("wait");
  6796. }
  6797. msg.prefix(sender, prefix_commands, "These players were last seen:");
  6798. table = table.new("§f", 12, 12);
  6799. msg(sender, table.getStart(table));
  6800. msg(sender, table.get(table, "Player", "Date"));
  6801. msg(sender, table.getMiddle(table));
  6802. lastseenStatement = databank.prepare("SELECT player_id, logouttime FROM logoutdata ORDER BY logouttime DESC LIMIT ?;");
  6803. databank.setInt(lastseenStatement, 1, amount);
  6804. result = databank.execute(lastseenStatement);
  6805. while(databank.next(result)) {
  6806. id = databank.getInt(result, 1);
  6807. time = databank.getLong(result, 2);
  6808. msg(sender, table.get(table, concat("§a", player.getNameFromId(id)), concat("§e", getTimeString(time))));
  6809. }
  6810. msg(sender, table.getEnd(table));
  6811. databank.close(result);
  6812. databank.close(lastseenStatement);
  6813. goto("wait");
  6814. @feed
  6815. if(size > 1) {
  6816. msg.prefix(player, prefix_commands, "/feed [player]");
  6817. goto("wait");
  6818. }
  6819. if(size == 1) {
  6820. affectedname = list.getIndex(args, 0);
  6821. affectedplayer = read.player(affectedname);
  6822. if(affectedplayer == null) {
  6823. msg.prefix(player, prefix_commands, "This player is not online.");
  6824. goto("wait");
  6825. }
  6826. if(player != affectedplayer) {
  6827. affectedname = player.getName(affectedplayer);
  6828. msg.prefix(player, prefix_commands, concat("Der Hunger von ", affectedname, " wurde gestillt."));
  6829. }
  6830. }
  6831. player.setHunger(affectedplayer, 20);
  6832. player.setSaturation(affectedplayer, 5);
  6833. msg.prefix(affectedplayer, prefix_commands, "Dein Hunger wurde gestillt.");
  6834. goto("wait");
  6835. @tempfly
  6836. if(size < 2) {
  6837. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  6838. goto("wait");
  6839. }
  6840. p_name = list.getIndex(args, 0);
  6841. if(!checkIfEverOnline(p_name)) {
  6842. msg.prefix(sender, prefix_commands, "This player has never been online.");
  6843. goto("wait");
  6844. }
  6845. p = read.player(p_name);
  6846. if(p == null) {
  6847. msg.prefix(sender, prefix_commands, "This player is not online.");
  6848. goto("wait");
  6849. }
  6850. p_name = player.getName(player.getUuid(p_name));
  6851. if(player.hasMinigame(p)) {
  6852. msg.prefix(player, prefix_commands, "This player can't fly now.");
  6853. goto("wait");
  6854. }
  6855. sec = list.getIndex(args, 1);
  6856. if(!isDouble(sec) || sec < 0) {
  6857. msg.prefix(sender, prefix_commands, "Positive number expected.");
  6858. goto("wait");
  6859. }
  6860. msg.prefix(sender, prefix_commands, concat(p_name, " can now fly for ", text.number(sec), " seconds."));
  6861. msg.prefix(p, prefix_commands, concat("You can now fly for ", text.number(sec), " seconds."));
  6862. player.setFly(p, true);
  6863. duration = sec * 20;
  6864. data.setTimer(p, "fly", duration);
  6865. status.addTimed(player, 55, duration, "Fly");
  6866. goto("wait");
  6867. @fly
  6868. if(size > 2) {
  6869. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  6870. goto("wait");
  6871. }
  6872. if(size >= 1) {
  6873. if(!perm.has(player, "fly.other")) {
  6874. perm.no(player, "fly.other");
  6875. goto("wait");
  6876. }
  6877. affectedname = list.getIndex(args, 0);
  6878. affectedplayer = read.player(affectedname);
  6879. if(affectedplayer == null) {
  6880. msg.prefix(player, prefix_commands, "This player is not online.");
  6881. goto("wait");
  6882. }
  6883. }
  6884. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6885. if(world.isGamesName(world_name)) {
  6886. if(player.hasMinigame(affectedplayer) || (perm.has(affectedplayer, "fly") && !perm.has(affectedplayer, "isTeam"))) {
  6887. if(size == 2) {
  6888. msg.prefix(player, prefix_commands, "This player can't fly now.");
  6889. } else {
  6890. msg.prefix(player, prefix_commands, "You can't fly now.");
  6891. }
  6892. goto("wait");
  6893. }
  6894. }
  6895. if(size == 2) {
  6896. boolean = list.getIndex(args, 1);
  6897. if(boolean == "on") {
  6898. fly = true;
  6899. } elseif(boolean == "off") {
  6900. fly = false;
  6901. } else {
  6902. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  6903. goto("wait");
  6904. }
  6905. } else {
  6906. if(player.hasFly(affectedplayer)) {
  6907. fly = false;
  6908. } else {
  6909. fly = true;
  6910. }
  6911. }
  6912. player.setFly(affectedplayer, fly);
  6913. if(fly) {
  6914. msg.prefix(affectedplayer, prefix_commands, "You can fly now.");
  6915. if(player != affectedplayer) {
  6916. affectedname = player.getName(affectedplayer);
  6917. msg.prefix(player, prefix_commands, concat(affectedname, " can fly now."));
  6918. }
  6919. } else {
  6920. msg.prefix(affectedplayer, prefix_commands, "You can't fly anymore.");
  6921. if(player != affectedplayer) {
  6922. affectedname = player.getName(affectedplayer);
  6923. msg.prefix(player, prefix_commands, concat(affectedname, " can't fly anymore."));
  6924. }
  6925. }
  6926. goto("wait");
  6927. @tppos
  6928. if(size < 3 || size > 5) {
  6929. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  6930. goto("wait");
  6931. }
  6932. x = list.getIndex(args, 0);
  6933. y = list.getIndex(args, 1);
  6934. z = list.getIndex(args, 2);
  6935. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  6936. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  6937. goto("wait");
  6938. }
  6939. if(size >= 4) {
  6940. worldname = list.getIndex(args, 3);
  6941. world = world.get(worldname);
  6942. if(world == null) {
  6943. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6944. goto("wait");
  6945. }
  6946. } else {
  6947. world = loc.getWorld(entity.getLocation(player));
  6948. }
  6949. if(x < -32000) {
  6950. x = -32000;
  6951. } elseif(x > 32000) {
  6952. x = 32000;
  6953. }
  6954. if(y < 0) {
  6955. y = 0;
  6956. } elseif(y > 255) {
  6957. y = 255;
  6958. }
  6959. if(z < -32000) {
  6960. z = -32000;
  6961. } elseif(z > 32000) {
  6962. z = 32000;
  6963. }
  6964. location = loc.new(world, x, y, z);
  6965. if(size == 5) {
  6966. affectedname = list.getIndex(args, 4);
  6967. affectedplayer = read.player(affectedname);
  6968. if(affectedplayer == null) {
  6969. msg.prefix(player, prefix_commands, "This player is not online.");
  6970. goto("wait");
  6971. }
  6972. }
  6973. if(player.hasMinigame(affectedplayer)) {
  6974. if(size == 5) {
  6975. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  6976. goto("wait");
  6977. }
  6978. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6979. goto("wait");
  6980. }
  6981. if(player.teleport(affectedplayer, location, true)) {
  6982. if(player != affectedplayer) {
  6983. affectedname = player.getName(affectedplayer);
  6984. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported."));
  6985. }
  6986. }
  6987. goto("wait");
  6988. @back
  6989. if(size > 0) {
  6990. msg.prefix(player, prefix_commands, "/back");
  6991. goto("wait");
  6992. }
  6993. if(!player.canTeleport(player)) {
  6994. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6995. goto("wait");
  6996. }
  6997. hasPerms = perm.has(player, "isTeam");
  6998. if(!hasPerms) {
  6999. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7000. if(world.isGamesName(world_name) || world.isStoryName(world_name)) {
  7001. msg.prefix(player, prefix_commands, "You can't use /back in this world.");
  7002. goto("wait");
  7003. }
  7004. }
  7005. location = player.getBackPos(player);
  7006. if(location == null) {
  7007. msg.prefix(player, prefix_commands, "No back-location available.");
  7008. goto("wait");
  7009. }
  7010. world = loc.getWorld(location);
  7011. if(world == null) {
  7012. msg.prefix(player, prefix_commands, "This world is not loaded.");
  7013. goto("wait");
  7014. }
  7015. if(!hasPerms) {
  7016. world_name = world.getName(world);
  7017. if(world.isGamesName(world_name)) {
  7018. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  7019. goto("wait");
  7020. }
  7021. }
  7022. player.teleport(player, location, true);
  7023. goto("wait");
  7024. @clan
  7025. if(size == 0) {
  7026. @clanhelp
  7027. msg.prefix(player, prefix_clan, "§r/clan...");
  7028. msg(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  7029. msg(player, "§2 - list §rLists all clans");
  7030. msg(player, "");
  7031. msg(player, "§2 - create <name> <tag> §rCreates a clan. Costs §64096 §rsnuvis.");
  7032. msg(player, "§2 - invite <name> §rInvites a player");
  7033. msg(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  7034. msg(player, "");
  7035. msg(player, "§2 - kick <name> §rKicks a player");
  7036. msg(player, "§2 - leader <name> §rPromote to clan-leader");
  7037. msg(player, "§2 - mod <name> §rPromote to clan-mod");
  7038. msg(player, "§2 - degrade <name> §rDemote a clan-mod");
  7039. msg(player, "§2 - leave §rLeave a clan");
  7040. msg(player, "");
  7041. msg(player, "§2 - rename <name> <tag> §rRenames a clan. Costs §664 §rsnuvis.");
  7042. msg(player, "§2 - setspawn §rSets a clan-spawn");
  7043. msg(player, "§2 - spawn §rTeleports to clan-spawn");
  7044. msg(player, "§2 - disband §rDisband a clan");
  7045. msg(player, "");
  7046. msg(player, "§2 - deposit <money> §rDeposit money to the clan account");
  7047. msg(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  7048. msg(player, "§2 - msg <message> §rSends a clan-message");
  7049. msg(player, "§2 - mail <message> §rSends a clan-mail");
  7050. msg(player, "§2 - shout <message> §rSends a message to all online players. Costs §664 §rsnuvis.");
  7051. msg(player, "§2 - party §rInvites all online members to a party");
  7052. goto("wait");
  7053. }
  7054. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7055. if(arg0 == "invite") {
  7056. if(size != 2) {
  7057. msg.prefix(player, prefix_commands, "/clan invite <name>");
  7058. goto("wait");
  7059. }
  7060. if(!player.isInClan(player)) {
  7061. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7062. goto("wait");
  7063. }
  7064. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7065. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7066. goto("wait");
  7067. }
  7068. p_name = list.getIndex(args, 1);
  7069. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7070. msg.prefix(player, prefix_clan, "You can't invite yourself.");
  7071. goto("wait");
  7072. }
  7073. if(!checkIfEverOnline(p_name)) {
  7074. msg.prefix(sender, prefix_clan, "This player has never been online.");
  7075. goto("wait");
  7076. }
  7077. if(!isOnline(p_name)) {
  7078. msg.prefix(player, prefix_clan, "This player has to be online.");
  7079. goto("wait");
  7080. }
  7081. p = read.player(p_name);
  7082. if(player.isClanMember(player)) {
  7083. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  7084. goto("wait");
  7085. }
  7086. clan_id = player.getClanId(player);
  7087. p_id = player.getId(p);
  7088. if(player.hasClanInvitation(p_id, clan_id)) {
  7089. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  7090. goto("wait");
  7091. }
  7092. player.addClanInvitation(p_id, clan_id);
  7093. clan_name = clan.getName(clan_id);
  7094. msg.prefix(player, prefix_clan, text.concat("You invited §7", p_name, "§r to your clan."));
  7095. msg.prefix(p, prefix_clan, text.concat("You got an clan invitation by §7", clan_name, "§r."));
  7096. msg(p, text.click("§r[§aAccept§r]", concat("/clan accept ", clan_id)));
  7097. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  7098. goto("wait");
  7099. }
  7100. if(arg0 == "accept") {
  7101. if(size != 2) {
  7102. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  7103. goto("wait");
  7104. }
  7105. if(player.isInClan(player)) {
  7106. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7107. goto("wait");
  7108. }
  7109. arg1 = list.getIndex(args, 1);
  7110. if(isDouble(arg1)) {
  7111. clan_id = arg1;
  7112. clan_name = clan.getName(clan_id);
  7113. if(clan_name == null) {
  7114. msg.prefix(player, prefix_clan, "Unknown clan.");
  7115. goto("wait");
  7116. }
  7117. } else {
  7118. clan_id = clan.getIdFromName(arg1);
  7119. if(clan_id == null) {
  7120. clan_id = clan.getIdFromTag(arg1);
  7121. if(clan_id == null) {
  7122. msg.prefix(player, prefix_clan, "Unknown clan.");
  7123. goto("wait");
  7124. }
  7125. }
  7126. }
  7127. player_id = player.getId(player);
  7128. if(!player.hasClanInvitation(player_id, clan_id)) {
  7129. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  7130. goto("wait");
  7131. }
  7132. clan.addMember(clan_id, player, "member");
  7133. player.setHeadName(player);
  7134. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r joined the clan."));
  7135. msg.prefix(player, prefix_clan, text.concat("You joined §7", clan_name, "§r."));
  7136. clan_size = clan.getMembersAmount(clan_id);
  7137. if(clan_size >= 15) {
  7138. rank.offerClan(clan_id, "rank.lord");
  7139. } elseif(clan_size >= 10) {
  7140. rank.offerClan(clan_id, "rank.chief");
  7141. } elseif(clan_size >= 5) {
  7142. rank.offerClan(clan_id, "rank.commander");
  7143. }
  7144. goto("wait");
  7145. }
  7146. if(arg0 == "create") {
  7147. if(size != 3) {
  7148. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  7149. goto("wait");
  7150. }
  7151. if(player.isInClan(player)) {
  7152. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7153. goto("wait");
  7154. }
  7155. clan_name = list.getIndex(args, 1);
  7156. if(text.length(clan_name) > 20) {
  7157. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7158. goto("wait");
  7159. }
  7160. if(!text.onlyletters(clan_name)) {
  7161. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7162. goto("wait");
  7163. }
  7164. if(clan.isExistingName(clan_name)) {
  7165. msg.prefix(player, prefix_clan, "This name already exists.");
  7166. goto("wait");
  7167. }
  7168. clan_tag = list.getIndex(args, 2);
  7169. tag_length = text.length(clan_tag);
  7170. if(tag_length < 3 || tag_length > 4) {
  7171. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7172. goto("wait");
  7173. }
  7174. if(!text.onlyletters(clan_tag)) {
  7175. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7176. goto("wait");
  7177. }
  7178. if(clan.isExistingTag(clan_tag)) {
  7179. msg.prefix(player, prefix_clan, "This tag already exists.");
  7180. goto("wait");
  7181. }
  7182. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  7183. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  7184. goto("wait");
  7185. }
  7186. subMoney(player, 4096);
  7187. clan_id = clan.create(clan_name, clan_tag);
  7188. clan.addMember(clan_id, player, "leader");
  7189. player.setHeadName(player);
  7190. msg.prefix(player, prefix_clan, "Clan successful created.");
  7191. goto("wait");
  7192. }
  7193. if(arg0 == "info") {
  7194. if(size == 1) {
  7195. if(!player.isInClan(player)) {
  7196. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  7197. goto("wait");
  7198. }
  7199. clan_id = player.getClanId(player);
  7200. clan_name = clan.getName(clan_id);
  7201. clan_tag = clan.getTag(clan_id);
  7202. }
  7203. if(size == 2) {
  7204. arg1 = list.getIndex(args, 1);
  7205. if(isDouble(arg1)) {
  7206. clan_id = arg1;
  7207. clan_name = clan.getName(clan_id);
  7208. if(clan_name == null) {
  7209. msg.prefix(player, prefix_clan, "Unknown clan.");
  7210. goto("wait");
  7211. }
  7212. } else {
  7213. clan_id = clan.getIdFromName(arg1);
  7214. if(clan_id == null) {
  7215. clan_id = clan.getIdFromTag(arg1);
  7216. if(clan_id == null) {
  7217. msg.prefix(player, prefix_clan, "Unknown clan.");
  7218. goto("wait");
  7219. }
  7220. }
  7221. clan_name = clan.getName(clan_id);
  7222. }
  7223. clan_tag = clan.getTag(clan_id);
  7224. }
  7225. list = clan.getMembersList(clan_id);
  7226. mod_list = list.new();
  7227. members_list = list.new();
  7228. iter = list.iterator(list);
  7229. while(hasNext(iter)) {
  7230. player_uuid = next(iter);
  7231. player_name = player.getName(player_uuid);
  7232. player_id = player.getId(player_uuid);
  7233. if(player.isClanLeader(player_id)) {
  7234. leader = player_name;
  7235. } else {
  7236. if(player.isClanMod(player_id)) {
  7237. list.add(mod_list, player_name);
  7238. } else {
  7239. list.add(members_list, player_name);
  7240. }
  7241. }
  7242. }
  7243. if(list.getSize(mod_list) == 0) {
  7244. mods = "-";
  7245. } else {
  7246. mods = text.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  7247. }
  7248. if(list.getSize(members_list) == 0) {
  7249. members = "-";
  7250. } else {
  7251. members = text.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  7252. }
  7253. msg(player, text.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", text.number(clan_id), ")"));
  7254. msg(player, "§6Leader");
  7255. msg(player, "§r", leader);
  7256. msg(player, "§6Mods");
  7257. msg(player, "§r", mods);
  7258. msg(player, "§6Members");
  7259. msg(player, "§r", members);
  7260. msg(player, "§6Money");
  7261. msg(player, text.number(clan.getMoney(clan_id)));
  7262. goto("wait");
  7263. }
  7264. if(arg0 == "rename") {
  7265. if(!player.isInClan(player)) {
  7266. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7267. goto("wait");
  7268. }
  7269. if(!player.isClanLeader(player)) {
  7270. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7271. goto("wait");
  7272. }
  7273. if(size != 3) {
  7274. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  7275. goto("wait");
  7276. }
  7277. clan_name = list.getIndex(args, 1);
  7278. if(text.length(clan_name) > 20) {
  7279. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7280. goto("wait");
  7281. }
  7282. if(!text.onlyletters(clan_name)) {
  7283. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7284. goto("wait");
  7285. }
  7286. if(clan.isExistingName(clan_name)) {
  7287. msg.prefix(player, prefix_clan, "This name already exists.");
  7288. goto("wait");
  7289. }
  7290. clan_tag = list.getIndex(args, 2);
  7291. tag_length = text.length(clan_tag);
  7292. if(tag_length < 3 || tag_length > 4) {
  7293. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7294. goto("wait");
  7295. }
  7296. if(!text.onlyletters(clan_tag)) {
  7297. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7298. goto("wait");
  7299. }
  7300. if(clan.isExistingTag(clan_tag)) {
  7301. msg.prefix(player, prefix_clan, "This tag already exists.");
  7302. goto("wait");
  7303. }
  7304. clan_id = player.getClanId(player);
  7305. if(clan.getMoney(clan_id) < 64) {
  7306. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7307. goto("wait");
  7308. }
  7309. clan.subMoney(clan_id, 64);
  7310. clan.setName(clan_id, clan_name);
  7311. clan.setTag(clan_id, clan_tag);
  7312. clan.msg(clan_id, text.concat("Clan renamed to §7", clan_name, "§r."));
  7313. //New tag for online players
  7314. clan.updateHeadNames(clan_id);
  7315. goto("wait");
  7316. }
  7317. if(arg0 == "msg") {
  7318. if(!player.isInClan(player)) {
  7319. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7320. goto("wait");
  7321. }
  7322. if(size < 2) {
  7323. msg.prefix(player, prefix_commands, "/clan msg <message>");
  7324. goto("wait");
  7325. }
  7326. clan_id = player.getClanId(player);
  7327. clan.msg(clan_id, text.concat(player.getName(player), ": ", text.concatList(args, " ", 1, size - 1)));
  7328. goto("wait");
  7329. }
  7330. if(arg0 == "mail") {
  7331. if(!player.isInClan(player)) {
  7332. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7333. goto("wait");
  7334. }
  7335. if(size < 2) {
  7336. msg.prefix(player, prefix_commands, "/clan mail <message>");
  7337. goto("wait");
  7338. }
  7339. if(player.isClanMember(player)) {
  7340. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7341. goto("wait");
  7342. }
  7343. clan_id = player.getClanId(player);
  7344. clan.mail(clan_id, player.getName(player), text.concatList(args, " ", 1, size - 1));
  7345. goto("wait");
  7346. }
  7347. if(arg0 == "shout") {
  7348. if(!player.isInClan(player)) {
  7349. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7350. goto("wait");
  7351. }
  7352. if(size < 2) {
  7353. msg.prefix(player, prefix_commands, "/clan shout <message>");
  7354. goto("wait");
  7355. }
  7356. if(player.isClanMember(player)) {
  7357. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7358. goto("wait");
  7359. }
  7360. clan_id = player.getClanId(player);
  7361. if(clan.getMoney(clan_id) < 64) {
  7362. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7363. goto("wait");
  7364. }
  7365. clan.subMoney(clan_id, 64);
  7366. msg.prefix("online", prefix_clan, text.concat(clan.getTag(clan_id), ": ", text.concatList(args, " ", 1, size - 1)));
  7367. goto("wait");
  7368. }
  7369. if(arg0 == "deposit") {
  7370. if(!player.isInClan(player)) {
  7371. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7372. goto("wait");
  7373. }
  7374. if(size != 2) {
  7375. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  7376. goto("wait");
  7377. }
  7378. money = list.getIndex(args, 1);
  7379. if(!isDouble(money) || money < 0) {
  7380. msg.prefix(player, prefix_clan, "Positive number expected.");
  7381. goto("wait");
  7382. }
  7383. if(!hasEnoughMoney(player, money)) {
  7384. msg.prefix(player, prefix_clan, "You can't transfer more money than you have.");
  7385. goto("wait");
  7386. }
  7387. clan_id = player.getClanId(player);
  7388. clan.addMoney(clan_id, money);
  7389. subMoney(player, money);
  7390. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r transferred §7", text.number(money), "§r snuvis."));
  7391. goto("wait");
  7392. }
  7393. if(arg0 == "party") {
  7394. counter = 0;
  7395. clan_id = player.getClanId(player);
  7396. list = clan.getMembersList(clan_id);
  7397. iter = list.iterator(list);
  7398. while(hasNext(iter)) {
  7399. p = player.get(next(iter));
  7400. if(p != null) {
  7401. temp = party.invitePlayer(player, p);
  7402. if(temp == true) {
  7403. counter++;
  7404. }
  7405. }
  7406. }
  7407. msg.prefix(player, prefix_clan, concat(text.number(counter), " online clan members invited to a party."));
  7408. goto("wait");
  7409. }
  7410. if(arg0 == "withdraw") {
  7411. if(!player.isInClan(player)) {
  7412. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7413. goto("wait");
  7414. }
  7415. if(!player.isClanLeader(player)) {
  7416. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7417. goto("wait");
  7418. }
  7419. if(size != 2) {
  7420. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  7421. goto("wait");
  7422. }
  7423. money = list.getIndex(args, 1);
  7424. if(!isDouble(money) || money < 0) {
  7425. msg.prefix(player, prefix_clan, "Positive number expected.");
  7426. goto("wait");
  7427. }
  7428. clan_id = player.getClanId(player);
  7429. clan_money = clan.getMoney(clan_id);
  7430. if(clan_money < money) {
  7431. msg.prefix(player, prefix_clan, text.concat("There are only §7", text.number(clan_money), "§r snuvis on the clan account."));
  7432. goto("wait");
  7433. }
  7434. clan.subMoney(clan_id, money);
  7435. addMoney(player, money);
  7436. msg.prefix(player, prefix_clan, text.concat("You have withdrawn §7", text.number(money), "§r snuvis."));
  7437. goto("wait");
  7438. }
  7439. if(arg0 == "leader") {
  7440. if(!player.isInClan(player)) {
  7441. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7442. goto("wait");
  7443. }
  7444. if(!player.isClanLeader(player)) {
  7445. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7446. goto("wait");
  7447. }
  7448. if(size != 2) {
  7449. msg.prefix(player, prefix_commands, "/clan leader <name>");
  7450. goto("wait");
  7451. }
  7452. p_name = list.getIndex(args, 1);
  7453. if(!checkIfEverOnline(p_name)) {
  7454. msg.prefix(player, prefix_clan, "This player has never been online.");
  7455. goto("wait");
  7456. }
  7457. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7458. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7459. goto("wait");
  7460. }
  7461. p_uuid = player.getUuid(p_name);
  7462. p_id = player.getId(p_uuid);
  7463. if(!player.isSameClan(player, p_id)) {
  7464. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7465. goto("wait");
  7466. }
  7467. player.setClanRole(p_id, "leader");
  7468. player.setClanRole(player, "mod");
  7469. clan_id = player.getClanId(player);
  7470. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan leader."));
  7471. goto("wait");
  7472. }
  7473. if(arg0 == "mod") {
  7474. if(!player.isInClan(player)) {
  7475. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7476. goto("wait");
  7477. }
  7478. if(!player.isClanLeader(player)) {
  7479. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7480. goto("wait");
  7481. }
  7482. if(size != 2) {
  7483. msg.prefix(player, prefix_commands, "/clan leader <name>");
  7484. goto("wait");
  7485. }
  7486. p_name = list.getIndex(args, 1);
  7487. if(!checkIfEverOnline(p_name)) {
  7488. msg.prefix(player, prefix_clan, "This player has never been online.");
  7489. goto("wait");
  7490. }
  7491. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7492. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7493. goto("wait");
  7494. }
  7495. p_uuid = player.getUuid(p_name);
  7496. p_id = player.getId(p_uuid);
  7497. if(!player.isSameClan(player, p_id)) {
  7498. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7499. goto("wait");
  7500. }
  7501. player.setClanRole(p_id, "mod");
  7502. clan_id = player.getClanId(player);
  7503. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan mod."));
  7504. goto("wait");
  7505. }
  7506. if(arg0 == "degrade") {
  7507. if(!player.isInClan(player)) {
  7508. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7509. goto("wait");
  7510. }
  7511. if(!player.isClanLeader(player)) {
  7512. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7513. goto("wait");
  7514. }
  7515. if(size != 2) {
  7516. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  7517. goto("wait");
  7518. }
  7519. p_name = list.getIndex(args, 1);
  7520. if(!checkIfEverOnline(p_name)) {
  7521. msg.prefix(player, prefix_clan, "This player has never been online.");
  7522. goto("wait");
  7523. }
  7524. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7525. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7526. goto("wait");
  7527. }
  7528. p_uuid = player.getUuid(p_name);
  7529. p_id = player.getId(p_uuid);
  7530. if(!player.isSameClan(player, p_id)) {
  7531. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7532. goto("wait");
  7533. }
  7534. player.setClanRole(p_id, "member");
  7535. clan_id = player.getClanId(player);
  7536. clan.msg(clan_id, text.concat("§7", p_name, "§r was degraded."));
  7537. goto("wait");
  7538. }
  7539. if(arg0 == "kick") {
  7540. if(!player.isInClan(player)) {
  7541. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7542. goto("wait");
  7543. }
  7544. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7545. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7546. goto("wait");
  7547. }
  7548. if(size != 2) {
  7549. msg.prefix(player, prefix_commands, "/clan kick <name>");
  7550. goto("wait");
  7551. }
  7552. p_name = list.getIndex(args, 1);
  7553. if(!checkIfEverOnline(p_name)) {
  7554. msg.prefix(player, prefix_clan, "This player has never been online.");
  7555. goto("wait");
  7556. }
  7557. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7558. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7559. goto("wait");
  7560. }
  7561. p_uuid = player.getUuid(p_name);
  7562. p_id = player.getId(p_uuid);
  7563. if(!player.isSameClan(player, p_id)) {
  7564. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7565. goto("wait");
  7566. }
  7567. if(player.isClanLeader(p_id)) {
  7568. msg.prefix(player, prefix_clan, "You can't kick the leader.");
  7569. goto("wait");
  7570. }
  7571. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  7572. msg.prefix(player, prefix_clan, "You can't kick another mod.");
  7573. goto("wait");
  7574. }
  7575. clan_id = player.getClanId(player);
  7576. clan.msg(clan_id, text.concat("§7", p_name, "§r got kicked out of the clan."));
  7577. clan.removeMember(clan_id, p_id);
  7578. p = read.player(p_name);
  7579. if(p_name != null) {
  7580. player.setHeadName(p);
  7581. }
  7582. goto("wait");
  7583. }
  7584. if(arg0 == "disband") {
  7585. if(!player.isInClan(player)) {
  7586. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7587. goto("wait");
  7588. }
  7589. if(!player.isClanLeader(player)) {
  7590. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7591. goto("wait");
  7592. }
  7593. clan_id = player.getClanId(player);
  7594. clan.msg(clan_id, "Clan disbanded.");
  7595. list = clan.getMembersList(clan_id);
  7596. clan.delete(clan_id);
  7597. iter = list.iterator(list);
  7598. while(hasNext(iter)) {
  7599. p = player.get(next(iter));
  7600. if(p != null) {
  7601. player.setHeadName(p);
  7602. }
  7603. }
  7604. goto("wait");
  7605. }
  7606. if(arg0 == "leave") {
  7607. if(!player.isInClan(player)) {
  7608. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7609. goto("wait");
  7610. }
  7611. if(player.isClanLeader(player)) {
  7612. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  7613. goto("wait");
  7614. }
  7615. clan_id = player.getClanId(player);
  7616. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r left the clan."));
  7617. clan.removeMember(clan_id, player);
  7618. player.setHeadName(player);
  7619. goto("wait");
  7620. }
  7621. if(arg0 == "list") {
  7622. table = table.new("§b", 2, 6, 4, 5);
  7623. msg(player, table.getStart(table));
  7624. msg(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  7625. msg(player, table.getMiddle(table));
  7626. list = clan.getIdList();
  7627. iter = list.iterator(list);
  7628. while(hasNext(iter)) {
  7629. clan_id = next(iter);
  7630. name = clan.getName(clan_id);
  7631. tag = clan.getTag(clan_id);
  7632. amount = clan.getMembersAmount(clan_id);
  7633. msg(player, table.get(table, text.number(clan_id), name, tag, text.number(amount)));
  7634. }
  7635. msg(player, table.getEnd(table));
  7636. goto("wait");
  7637. }
  7638. if(arg0 == "setspawn") {
  7639. if(!player.isInClan(player)) {
  7640. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7641. goto("wait");
  7642. }
  7643. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7644. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7645. goto("wait");
  7646. }
  7647. clan_id = player.getClanId(player);
  7648. clan.setSpawn(clan_id, entity.getLocation(player));
  7649. msg.prefix(player, prefix_clan, "New clan spawn set.");
  7650. goto("wait");
  7651. }
  7652. if(arg0 == "spawn") {
  7653. if(!player.isInClan(player)) {
  7654. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7655. goto("wait");
  7656. }
  7657. clan_id = player.getClanId(player);
  7658. spawn_loc = clan.getSpawn(clan_id);
  7659. if(spawn_loc == null) {
  7660. msg.prefix(player, prefix_clan, "No clan spawn set.");
  7661. goto("wait");
  7662. }
  7663. if(!perm.has(player, "isTeam")) {
  7664. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7665. if(world.isGamesName(world_name)) {
  7666. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  7667. goto("wait");
  7668. }
  7669. }
  7670. player.teleport(player, spawn_loc, true);
  7671. goto("wait");
  7672. }
  7673. goto("clanhelp");
  7674. @remove_clan_invitation
  7675. list.removeIndex(clan_invitations, 0);
  7676. goto("wait");
  7677. @color
  7678. msg(player, getSpacer());
  7679. msg(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  7680. msg(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  7681. msg(player, " &l §l(bold)");
  7682. msg(player, " &m §m(strikethrough)");
  7683. msg(player, " &n §n(underline)");
  7684. msg(player, " &o §o(italic)");
  7685. goto("wait");
  7686. @setspawn
  7687. if(size != 1) {
  7688. @setspawnhelp
  7689. msg.prefix(player, prefix_commands, "/setspawn ...");
  7690. msg(player, "§6 - server");
  7691. msg(player, "§6 - games");
  7692. msg(player, "§6 - creative");
  7693. msg(player, "§6 - story");
  7694. goto("wait");
  7695. }
  7696. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7697. new_spawn = text.location(entity.getLocation(player));
  7698. config = getScriptVar("server_config");
  7699. if(arg0 == "games") {
  7700. config.set(config, "gamesspawn", new_spawn);
  7701. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  7702. } elseif(arg0 == "server") {
  7703. config.set(config, "serverspawn", new_spawn);
  7704. msg.prefix(player, prefix_commands, "New main Spawn set.");
  7705. } elseif(arg0 == "creative") {
  7706. config.set(config, "creativespawn", new_spawn);
  7707. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  7708. } elseif(arg0 == "story") {
  7709. config.set(config, "storyspawn", new_spawn);
  7710. msg.prefix(player, prefix_commands, "New spawn for story world set.");
  7711. } else {
  7712. goto("setspawnhelp");
  7713. }
  7714. config.saveAsync(config);
  7715. goto("wait");
  7716. @heal
  7717. if(size > 1) {
  7718. msg.prefix(player, prefix_commands, "/heal [player]");
  7719. goto("wait");
  7720. }
  7721. if(size == 1) {
  7722. affectedname = list.getIndex(args, 0);
  7723. affectedplayer = read.player(affectedname);
  7724. if(affectedplayer == null) {
  7725. msg.prefix(player, prefix_commands, "This player is not online.");
  7726. goto("wait");
  7727. }
  7728. if(player != affectedplayer) {
  7729. affectedname = player.getName(affectedplayer);
  7730. msg.prefix(player, prefix_commands, concat(affectedname, " was healed."));
  7731. }
  7732. }
  7733. living.heal(affectedplayer, 50);
  7734. player.setHunger(affectedplayer, 20);
  7735. player.setSaturation(affectedplayer, 5);
  7736. entity.clearEffects(affectedplayer);
  7737. entity.setBurning(affectedplayer, 0);
  7738. msg.prefix(affectedplayer, prefix_commands, "You have been healed.");
  7739. goto("wait");
  7740. @inv
  7741. if(size == 0) {
  7742. @invhelp
  7743. msg.prefix(player, prefix_commands, "/inv ...");
  7744. if(perm.has(player, "inv.ignore")) {
  7745. msg(player, "§6 - ignore §rToggles inventory change on world change");
  7746. }
  7747. if(perm.has(player, "inv.see")) {
  7748. msg(player, "§6 - see <player> §rOpens a player's inventory");
  7749. }
  7750. if(perm.has(player, "inv.reload")) {
  7751. msg(player, "§6 - reload <player> §rReloads a player's inventory");
  7752. }
  7753. if(perm.has(player, "inv.saveFor")) {
  7754. msg(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  7755. }
  7756. if(perm.has(player, "inv.loadFrom")) {
  7757. msg(player, "§6 - loadFrom <player> <world> §rLoads a player's inventory for you");
  7758. }
  7759. goto("wait");
  7760. }
  7761. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7762. if(arg0 == "ignore") {
  7763. if(!perm.has(player, "inv.ignore")) {
  7764. perm.no(player, "inv.ignore");
  7765. goto("wait");
  7766. }
  7767. ignore = player.hasInvIgnore(player);
  7768. if(ignore == null) {
  7769. ignore = false;
  7770. }
  7771. if(ignore) {
  7772. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  7773. } else {
  7774. msg.prefix(player, prefix_commands, "You'll keep your inventory on joining another world.");
  7775. }
  7776. player.invIgnore(player, !ignore);
  7777. goto("wait");
  7778. }
  7779. if(arg0 == "see") {
  7780. if(!perm.has(player, "inv.see")) {
  7781. perm.no(player, "inv.see");
  7782. goto("wait");
  7783. }
  7784. if(size < 2) {
  7785. msg.prefix(player, prefix_commands, "/inv see <player>");
  7786. goto("wait");
  7787. }
  7788. p_name = list.getIndex(args, 1);
  7789. p_uuid = player.getUuid(p_name);
  7790. if(p_uuid == null) {
  7791. msg.prefix(player, prefix_commands, "This player has never been online.");
  7792. goto("wait");
  7793. }
  7794. p = read.player(p_name);
  7795. if(p == null) {
  7796. msg.prefix(player, prefix_commands, "This player is not online.");
  7797. goto("wait");
  7798. }
  7799. inv.show(p, player);
  7800. goto("wait");
  7801. }
  7802. if(arg0 == "reload") {
  7803. if(!perm.has(player, "inv.reload")) {
  7804. perm.no(player, "inv.reload");
  7805. goto("wait");
  7806. }
  7807. if(size < 2) {
  7808. msg.prefix(player, prefix_commands, "/inv reload <player>");
  7809. goto("wait");
  7810. }
  7811. p_name = list.getIndex(args, 1);
  7812. p_uuid = player.getUuid(p_name);
  7813. if(p_uuid == null) {
  7814. msg.prefix(player, prefix_commands, "This player has never been online.");
  7815. goto("wait");
  7816. }
  7817. p = read.player(p_name);
  7818. if(p == null) {
  7819. msg.prefix(player, prefix_commands, "This player is not online.");
  7820. goto("wait");
  7821. }
  7822. world = loc.getWorld(entity.getLocation(p));
  7823. inv.loadFromPlayer(p, p, world);
  7824. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  7825. goto("wait");
  7826. }
  7827. if(arg0 == "savefor") {
  7828. if(size != 1 && size != 3) {
  7829. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  7830. goto("wait");
  7831. }
  7832. if(size == 1) {
  7833. for_player_or_id = player.getId(player);
  7834. world = loc.getWorld(entity.getLocation(player));
  7835. }
  7836. if(size == 3) {
  7837. if(!perm.has(player, "inv.saveFor")) {
  7838. perm.no(player, "inv.saveFor");
  7839. goto("wait");
  7840. }
  7841. p_name = list.getIndex(args, 1);
  7842. p_uuid = player.getUuid(p_name);
  7843. if(p_uuid == null) {
  7844. msg.prefix(player, prefix_commands, "This player has never been online.");
  7845. goto("wait");
  7846. }
  7847. p = read.player(p_name);
  7848. if(p != null) {
  7849. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  7850. goto("wait");
  7851. }
  7852. for_player_or_id = player.getId(p_uuid);
  7853. world_name = list.getIndex(args, 2);
  7854. world = world.get(world_name);
  7855. if(world == null) {
  7856. msg.prefix(player, prefix_world, "This world is not loaded.");
  7857. goto("wait");
  7858. }
  7859. }
  7860. inv.saveForPlayer(player, for_player_or_id, world);
  7861. msg.prefix(player, prefix_commands, "Inventory saved.");
  7862. goto("wait");
  7863. }
  7864. if(arg0 == "loadfrom") {
  7865. if(size != 1 && size != 3) {
  7866. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  7867. goto("wait");
  7868. }
  7869. if(size == 1) {
  7870. from_player_or_id = player.getId(player);
  7871. world = loc.getWorld(entity.getLocation(player));
  7872. }
  7873. if(size == 3) {
  7874. if(!perm.has(player, "inv.loadFrom")) {
  7875. perm.no(player, "inv.loadFrom");
  7876. goto("wait");
  7877. }
  7878. p_name = list.getIndex(args, 1);
  7879. p_uuid = player.getUuid(p_name);
  7880. if(p_uuid == null) {
  7881. msg.prefix(player, prefix_commands, "This player has never been online.");
  7882. goto("wait");
  7883. }
  7884. p = read.player(p_name);
  7885. if(p != null) {
  7886. msg.prefix(player, prefix_commands, "§cThis player is online. Loaded inventory can differ from /inv see!");
  7887. }
  7888. from_player_or_id = player.getId(p_uuid);
  7889. world_name = list.getIndex(args, 2);
  7890. world = world.get(world_name);
  7891. if(world == null) {
  7892. msg.prefix(player, prefix_world, "This world is not loaded.");
  7893. goto("wait");
  7894. }
  7895. }
  7896. inv.loadFromPlayer(player, from_player_or_id, world);
  7897. msg.prefix(player, prefix_commands, "Inventory loaded.");
  7898. goto("wait");
  7899. }
  7900. goto("wait");
  7901. @boost
  7902. entity.throw(player, 0, 5, 0);
  7903. goto("wait");
  7904. @memory
  7905. msg.prefix(player, prefix_commands, concat("Used RAM: ", text.number(usedMemory()), " / ", text.number(math.round(allocatedMemory())), " MB"));
  7906. goto("wait");
  7907. @world
  7908. if(size == 0) {
  7909. @world_syntax
  7910. msg.prefix(player, prefix_world, "/world ...");
  7911. msg(player, "§b - info §rShows info about a world");
  7912. msg(player, "§b - tp <world> [player] §rTeleports a player to a world");
  7913. msg(player, "§b - list §rShows all loaded worlds");
  7914. msg(player, "§b - setspawn §rSets the world's spawn");
  7915. msg(player, "§b - diffi <world> <diffi> §rSets the world's difficulty");
  7916. goto("wait");
  7917. }
  7918. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7919. if(arg0 == "info") {
  7920. msg(player, getSpacer());
  7921. world = loc.getWorld(entity.getLocation(player));
  7922. msg(player, "§6World: §r", world.getName(world));
  7923. msg(player, "§6Rain: §r", world.hasStorm(world));
  7924. time = world.getTime(world);
  7925. while(time >= 24000) {
  7926. time -= 24000;
  7927. }
  7928. msg(player, "§6Time: §r", text.number(time));
  7929. goto("wait");
  7930. }
  7931. if(arg0 == "tp") {
  7932. if(size < 2 || size > 3) {
  7933. msg.prefix(player, prefix_world, "/world tp <world> [player]");
  7934. goto("wait");
  7935. }
  7936. if(size >= 2) {
  7937. world_name = text.toLowerCase(list.getIndex(args, 1));
  7938. world = world.get(world_name);
  7939. if(world == null) {
  7940. msg.prefix(player, prefix_world, "This world is not loaded.");
  7941. goto("wait");
  7942. }
  7943. }
  7944. if(size == 3) {
  7945. affectedname = list.getIndex(args, 2);
  7946. affectedplayer = read.player(affectedname);
  7947. if(affectedplayer == null) {
  7948. msg.prefix(player, prefix_world, "This player is not online.");
  7949. goto("wait");
  7950. }
  7951. }
  7952. if(!player.canTeleport(affectedplayer)) {
  7953. if(size == 3) {
  7954. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  7955. goto("wait");
  7956. }
  7957. msg.prefix(player, prefix_commands, "You can't teleport now.");
  7958. goto("wait");
  7959. }
  7960. if(player != affectedplayer) {
  7961. affectedname = player.getName(affectedplayer);
  7962. msg.prefix(player, prefix_world, concat(affectedname, " was teleported to the spawn of the world ", world_name, "."));
  7963. }
  7964. if(world_name == "games") {
  7965. loc = world.getGamesSpawn();
  7966. } elseif(world_name == "creative") {
  7967. loc = world.getCreativeSpawn();
  7968. } elseif(world_name == "story") {
  7969. loc = world.getStorySpawn();
  7970. } else {
  7971. loc = world.getSpawn(world);
  7972. }
  7973. player.teleport(affectedplayer, loc, true);
  7974. goto("wait");
  7975. }
  7976. if(arg0 == "list") {
  7977. msg.prefix(player, prefix_world, "Loaded worlds:");
  7978. worldlist = world.getAll();
  7979. for(i = 0; i < list.getSize(worldlist); i++) {
  7980. msg(player, " - ", world.getName(list.getIndex(worldlist, i)));
  7981. }
  7982. msg(player, getSpacer());
  7983. goto("wait");
  7984. }
  7985. if(arg0 == "setspawn") {
  7986. location = entity.getLocation(player);
  7987. world.setSpawn(location, 0);
  7988. msg.prefix(player, prefix_world, concat("New spawn of the world ", world.getName(loc.getWorld(location)), " set."));
  7989. goto("wait");
  7990. }
  7991. if(arg0 == "diffi") {
  7992. if(size != 3) {
  7993. msg.prefix(player, prefix_world, "/world diffi <world> <diffi>");
  7994. goto("wait");
  7995. }
  7996. worldname = list.getIndex(args, 1);
  7997. world = world.get(worldname);
  7998. if(world == null) {
  7999. msg.prefix(player, prefix_world, "This world is not loaded.");
  8000. goto("wait");
  8001. }
  8002. diffi_string = list.getIndex(args, 2);
  8003. if(diffi_string != "PEACEFUL" || diffi_string != "EASY" || diffi_string != "NORMAL" || diffi_string != "HARD") {
  8004. msg.prefix(player, prefix_world, "False input.");
  8005. goto("wait");
  8006. }
  8007. world.setDiffi(world, diffi_string);
  8008. msg.prefix(player, prefix_world, "Difficulty changed.");
  8009. goto("wait");
  8010. }
  8011. goto("world_syntax");
  8012. @yeet
  8013. if(size == 0){
  8014. msg.prefix(player, prefix_commands, "/yeet <strength>");
  8015. goto("wait");
  8016. }
  8017. yeet_strength = list.getIndex(args, 0);
  8018. yeet(player,math.abs(yeet_strength));
  8019. msg(player, "§4YEET");
  8020. goto("wait");
  8021. @giveup
  8022. script_id = quest.getFromPlayer(player);
  8023. if(script_id == null) {
  8024. msg.prefix(player, prefix_quest, "You are not in a quest.");
  8025. goto("wait");
  8026. }
  8027. script = script.getFromId(script_id);
  8028. if(script == null) {
  8029. snuvi.debug("Player used giveup on corrupt quest");
  8030. quest.removePlayer(player); //in case of corrupt quest
  8031. msg.prefix(player, prefix_quest, "You have no quest.");
  8032. goto("wait");
  8033. }
  8034. setScriptVar("player", player);
  8035. modTimer.scriptCallEvent("quest_term", script);
  8036. quest.term(script, player);
  8037. msg.prefix(player, prefix_quest, "Quest termed.");
  8038. goto("wait");
  8039. @leave
  8040. set = player.getMinigameIds(player);
  8041. iter = set.iterator(set);
  8042. if(hasNext(iter)) {
  8043. script_id = next(iter);
  8044. script = script.getFromId(script_id);
  8045. if(script == null) {
  8046. snuvi.debug(concat("Player left game without existing gamescript ", set));
  8047. 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.");
  8048. player.resetMinigames(player);
  8049. entity.teleport(player, gamesspawn);
  8050. goto("wait");
  8051. }
  8052. minigame.hub(script, player);
  8053. goto("wait");
  8054. }
  8055. msg.prefix(player, "§dScript", "You are not in a minigame.");
  8056. goto("wait");
  8057. function minigame.hub(script, player) {
  8058. script.setVar(script, "player", player);
  8059. modTimer.scriptCallEvent("player_giveup", script);
  8060. }
  8061. @jail
  8062. if(size != 1) {
  8063. msg.prefix(player, prefix_commands, "/jail <player>");
  8064. } else {
  8065. p_name = list.getIndex(args, 0);
  8066. if(!checkIfEverOnline(p_name)) {
  8067. msg.prefix(player, prefix_jail, "This player has never been online.");
  8068. goto("wait");
  8069. }
  8070. p_uuid = player.getUuid(p_name);
  8071. if(isJailed(p_uuid)) {
  8072. msg.prefix(player, prefix_jail, "This player is already jailed.");
  8073. goto("wait");
  8074. }
  8075. if(player_name == p_name) {
  8076. msg.prefix(player, prefix_jail, "Self-Jailing isn't a good idea.");
  8077. goto("wait");
  8078. }
  8079. if(!isOnline(p_name)) {
  8080. msg.prefix(player, prefix_jail, "This player is not online.");
  8081. goto("wait");
  8082. }
  8083. p = read.player(p_name);
  8084. if(perm.has(p, "jail")) {
  8085. msg.prefix(player, prefix_jail, "You can't jail this player.");
  8086. goto("wait");
  8087. }
  8088. list.add(jailed_list, p_uuid);
  8089. msg.prefix(player, prefix_jail, concat(p_name, " wurde gejailt"));
  8090. showJail(p_name);
  8091. if(!jail_loop_active) {
  8092. sgoto(5, "jailloop");
  8093. }
  8094. }
  8095. goto("wait");
  8096. @unjail
  8097. if(size != 1) {
  8098. msg.prefix(player, prefix_commands, "/unjail <player>");
  8099. } else {
  8100. p_name = list.getIndex(args, 0);
  8101. if(!checkIfEverOnline(p_name)) {
  8102. msg.prefix(player, prefix_jail, "This player has never been online.");
  8103. goto("wait");
  8104. }
  8105. p_uuid = player.getUuid(p_name);
  8106. if(!isJailed(p_uuid)) {
  8107. msg.prefix(player, prefix_jail, "This player is not jailed.");
  8108. goto("wait");
  8109. }
  8110. list.remove(jailed_list, p_uuid);
  8111. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  8112. }
  8113. goto("wait");
  8114. function inv.show(from_player, to_player) {
  8115. player_inv = player.getInv(from_player);
  8116. //inv = inv.new("333303000 333333333 333333333 333333333 000000000 333333333");
  8117. inv = inv.new("333303000333333333333333333333333333000000000333333333");
  8118. set.add($invseeids, inv.getId(inv));
  8119. inv.setItem(inv, 0, living.getEquip(from_player, "head"));
  8120. inv.setItem(inv, 1, living.getEquip(from_player, "chest"));
  8121. inv.setItem(inv, 2, living.getEquip(from_player, "legs"));
  8122. inv.setItem(inv, 3, living.getEquip(from_player, "feet"));
  8123. inv.setItem(inv, 4, living.getEquip(from_player, "offhand"));
  8124. for(slot = 0; slot <= 8; slot++) {
  8125. inv.setItem(inv, slot + 32, inv.getItem(player_inv, slot));
  8126. }
  8127. for(slot = 0; slot <= 26; slot++) {
  8128. inv.setItem(inv, slot + 5, inv.getItem(player_inv, slot + 9));
  8129. }
  8130. inv.open(inv, to_player, concat("Inventory of ", player.getName(from_player)));
  8131. }
  8132. function isAWallSign(location) {
  8133. return block.hasTag($wall_signs_tag, block.get(location));
  8134. }
  8135. function rank.add(index, tech_rank, chat_rank) {
  8136. $rank_array[index, 0] = tech_rank;
  8137. $rank_array[index, 1] = chat_rank;
  8138. }
  8139. //--------------------------------------------------
  8140. //Tip-Utils
  8141. //--------------------------------------------------
  8142. function tip.setLoop(tipp_key, boolean) {
  8143. stmt = databank.prepare("UPDATE tipps SET tipp_loop = ? WHERE tipp_key = ?;");
  8144. databank.setBool(stmt, 1, boolean);
  8145. databank.setString(stmt, 2, tipp_key);
  8146. databank.workerExecute(stmt);
  8147. }
  8148. function tip.remove(tipp_key) {
  8149. stmt = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  8150. databank.setString(stmt, 1, tipp_key);
  8151. databank.workerExecute(stmt);
  8152. }
  8153. function tip.getAll() {
  8154. list = list.new();
  8155. smt = databank.prepare("SELECT * FROM tipps;");
  8156. result = databank.execute(smt);
  8157. while(databank.next(result)) {
  8158. a = array.new(3);
  8159. a[0] = databank.getString(result, 1);
  8160. a[1] = databank.getString(result, 2);
  8161. a[2] = databank.getBool(result, 3);
  8162. list.add(list, a);
  8163. }
  8164. databank.close(smt);
  8165. databank.close(result);
  8166. return list;
  8167. }
  8168. //--------------------------------------------------
  8169. //Databank-Utils
  8170. //--------------------------------------------------
  8171. function databank.isExistingTable(table) {
  8172. temp = false;
  8173. stmt = databank.prepare("SHOW TABLES");
  8174. result = databank.execute(stmt);
  8175. while(databank.next(result)) {
  8176. if(table == databank.getString(result, 1)) {
  8177. temp = true;
  8178. break;
  8179. }
  8180. }
  8181. databank.close(result);
  8182. databank.close(stmt);
  8183. return temp;
  8184. }
  8185. function databank.getTableFields(table) {
  8186. fields = list.new();
  8187. stmt = databank.prepare(concat("SHOW FIELDS FROM ", table));
  8188. result = databank.execute(stmt);
  8189. while(databank.next(result)) {
  8190. list.add(fields, databank.getString(result, 1));
  8191. }
  8192. databank.close(result);
  8193. databank.close(stmt);
  8194. return fields;
  8195. }
  8196. function databank.getTableDatatypes(table) {
  8197. stmt = databank.prepare(concat("SHOW CREATE TABLE ", table));
  8198. result = databank.execute(stmt);
  8199. if(databank.next(result)) {
  8200. temp = databank.getString(result, 2);
  8201. }
  8202. databank.close(result);
  8203. databank.close(stmt);
  8204. return temp;
  8205. }
  8206. //--------------------------------------------------
  8207. //Tipp-Utils
  8208. //--------------------------------------------------
  8209. function tipp.register(tipp_key, tipp_value) {
  8210. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  8211. databank.setString(stmt, 1, tipp_key);
  8212. databank.setString(stmt, 2, tipp_value);
  8213. databank.setString(stmt, 3, tipp_value);
  8214. databank.workerExecute(stmt);
  8215. }
  8216. function tipp.get(tipp_key) {
  8217. tipp_value = null;
  8218. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  8219. databank.setString(stmt, 1, tipp_key);
  8220. result = databank.execute(stmt);
  8221. while(databank.next(result)) {
  8222. tipp_value = databank.getString(result, 1);
  8223. }
  8224. databank.close(result);
  8225. databank.close(stmt);
  8226. return tipp_value;
  8227. }
  8228. //--------------------------------------------------
  8229. //Warp-Utils
  8230. //--------------------------------------------------
  8231. function warp.create(warp_group, warp_name, location) {
  8232. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8233. config.set(config, "world", world.getName(loc.getWorld(location)));
  8234. config.set(config, "x", loc.getX(location));
  8235. config.set(config, "y", loc.getY(location));
  8236. config.set(config, "z", loc.getZ(location));
  8237. config.set(config, "yaw", loc.getYaw(location));
  8238. config.set(config, "pitch", loc.getPitch(location));
  8239. config.saveAsync(config);
  8240. }
  8241. function warp.exists(warp_group, warp_name) {
  8242. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8243. return config.exists(config);
  8244. }
  8245. function warp.getGroups() {
  8246. file = file.new("scripts/configs/warps");
  8247. file_list = file.getList(file);
  8248. groups_list = list.new();
  8249. iter = list.iterator(file_list);
  8250. while(hasNext(iter)) {
  8251. warp = file.getName(next(iter));
  8252. list.add(groups_list, warp);
  8253. }
  8254. return groups_list;
  8255. }
  8256. function warp.get(warp_group, warp_name) {
  8257. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8258. if(config.exists(config)) {
  8259. config.load(config);
  8260. }
  8261. world_name = text.convert(config.getString(config, "world", "null"));
  8262. if(world_name == null) {
  8263. return null;
  8264. }
  8265. world = world.get(world_name);
  8266. x = config.getDouble(config, "x", 0);
  8267. y = config.getDouble(config, "y", 100);
  8268. z = config.getDouble(config, "z", 0);
  8269. yaw = config.getDouble(config, "yaw", 0);
  8270. pitch = config.getDouble(config, "pitch", 0);
  8271. location = loc.new(world, x, y, z, yaw, pitch);
  8272. return location;
  8273. }
  8274. function warp.delete(warp_group, warp_name) {
  8275. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8276. if(!config.exists(config)) {
  8277. return false;
  8278. }
  8279. config.delete(config);
  8280. return true;
  8281. }
  8282. function warp.getList(warp_group) {
  8283. file = file.new(concat("scripts/configs/warps/", warp_group));
  8284. warps_list = list.new();
  8285. if(file.exists(file)) {
  8286. file_list = file.getList(file);
  8287. iter = list.iterator(file_list);
  8288. while(hasNext(iter)) {
  8289. warp = file.getName(next(iter));
  8290. warp = text.replace(warp, ".snuvic", "");
  8291. list.add(warps_list, warp);
  8292. }
  8293. }
  8294. return warps_list;
  8295. }
  8296. //--------------------------------------------------
  8297. //Home-Utils
  8298. //--------------------------------------------------
  8299. function home.set(player_id, home_name, location) {
  8300. stmt = databank.prepare("INSERT INTO homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  8301. databank.setInt(stmt, 1, player_id);
  8302. databank.setString(stmt, 2, home_name);
  8303. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  8304. databank.setInt(stmt, 4, loc.getX(location));
  8305. databank.setInt(stmt, 5, loc.getY(location));
  8306. databank.setInt(stmt, 6, loc.getZ(location));
  8307. databank.setInt(stmt, 7, loc.getYaw(location));
  8308. databank.setInt(stmt, 8, loc.getPitch(location));
  8309. databank.workerExecute(stmt);
  8310. }
  8311. function home.delete(player_id, home_name) {
  8312. stmt = databank.prepare("DELETE FROM homes WHERE player_id = ? AND name = ?;");
  8313. databank.setInt(stmt, 1, player_id);
  8314. databank.setString(stmt, 2, home_name);
  8315. databank.workerExecute(stmt);
  8316. }
  8317. function home.getLocation(player_id, home_name) {
  8318. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM homes WHERE player_id = ? AND name = ?;");
  8319. databank.setInt(stmt, 1, player_id);
  8320. databank.setString(stmt, 2, home_name);
  8321. result = databank.execute(stmt);
  8322. if(databank.next(result)) {
  8323. world = world.get(databank.getString(result, 1));
  8324. if(world == null) {
  8325. return null;
  8326. }
  8327. x = databank.getDouble(result, 2);
  8328. y = databank.getDouble(result, 3);
  8329. z = databank.getDouble(result, 4);
  8330. yaw = databank.getDouble(result, 5);
  8331. pitch = databank.getDouble(result, 6);
  8332. location = loc.new(world, x, y, z, yaw, pitch);
  8333. }
  8334. databank.close(result);
  8335. databank.close(stmt);
  8336. return location;
  8337. }
  8338. function home.exists(player_id, home_name) {
  8339. stmt = databank.prepare("SELECT player_id FROM homes WHERE player_id = ? AND name = ?;");
  8340. databank.setInt(stmt, 1, player_id);
  8341. databank.setString(stmt, 2, home_name);
  8342. result = databank.execute(stmt);
  8343. if(databank.next(result)) {
  8344. temp = true;
  8345. } else {
  8346. temp = false;
  8347. }
  8348. databank.close(result);
  8349. databank.close(stmt);
  8350. return temp;
  8351. }
  8352. function home.getList(player_id) {
  8353. homes_list = list.new();
  8354. stmt = databank.prepare("SELECT name FROM homes WHERE player_id = ?;");
  8355. databank.setInt(stmt, 1, player_id);
  8356. result = databank.execute(stmt);
  8357. while(databank.next(result)) {
  8358. list.add(homes_list, databank.getString(result, 1));
  8359. }
  8360. databank.close(result);
  8361. databank.close(stmt);
  8362. return homes_list;
  8363. }
  8364. function hasTpaRequest(player_uuid, aim_uuid) {
  8365. for(i = 0; i < list.getSize($tpa_request); i++) {
  8366. array = list.getIndex($tpa_request, i);
  8367. if(array[0] == player_uuid && array[1] == aim_uuid) {
  8368. list.removeIndex($tpa_request, i);
  8369. return true;
  8370. }
  8371. }
  8372. return false;
  8373. }
  8374. function addTpaRequest(player_uuid, aim_uuid) {
  8375. array = array.new(2);
  8376. array[0] = player_uuid;
  8377. array[1] = aim_uuid;
  8378. list.add($tpa_request, array);
  8379. }
  8380. function setCommandHelps() {
  8381. command.clearHelp();
  8382. command.clearIgnored();
  8383. //Vanilla ignorieren, danach neu setzen
  8384. command.addIgnored("teleport");
  8385. command.addIgnored("time");
  8386. command.addIgnored("help");
  8387. command.addIgnored("ban");
  8388. command.addIgnored("kick");
  8389. command.addIgnored("gamemode");
  8390. command.addIgnored("enchant");
  8391. command.addIgnored("jumpto");
  8392. commandhelp.add("silentjoin");
  8393. commandhelp.add("nowb");
  8394. commandhelp.add("coords");
  8395. commandhelp.add("ping");
  8396. commandhelp.add("rank");
  8397. commandhelp.add("back");
  8398. commandhelp.add("boost");
  8399. commandhelp.add("bug");
  8400. commandhelp.add("report");
  8401. commandhelp.add("startgame");
  8402. commandhelp.add("top");
  8403. commandhelp.add("ride");
  8404. commandhelp.add("repair");
  8405. commandhelp.add("lag");
  8406. commandhelp.add("live");
  8407. commandhelp.add("hack");
  8408. commandhelp.add("vote");
  8409. commandhelp.add("voteshop");
  8410. commandhelp.addChildPlayer("mute");
  8411. commandhelp.addChildPlayer("unmute");
  8412. commandhelp.addChildPlayer("tpa");
  8413. commandhelp.addChildPlayer("tpaccept");
  8414. commandhelp.addChildPlayer("tpahere");
  8415. commandhelp.addChildPlayer("tpaccepthere");
  8416. commandhelp.addChildPlayer("head");
  8417. commandhelp.addChildPlayer("seen");
  8418. commandhelp.addChildPlayer("heal");
  8419. commandhelp.addChildPlayer("feed");
  8420. help = commandhelp.add("lightning");
  8421. commandhelp.addAlias(help, "thor", "lightning");
  8422. help = commandhelp.add("color");
  8423. commandhelp.addAlias(help, "colour", "color");
  8424. help = commandhelp.add("iteminfo");
  8425. commandhelp.addAlias(help, "itemdb", "iteminfo");
  8426. help = commandhelp.add("head");
  8427. commandhelp.addAlias(help, "skull", "head");
  8428. help = commandhelp.add("memory");
  8429. commandhelp.addAlias(help, "ram", "memory");
  8430. help = commandhelp.add("afk");
  8431. commandhelp.addAlias(help, "afklo", "afk");
  8432. help = commandhelp.add("jumpto");
  8433. commandhelp.addAlias(help, "j", "jumpto");
  8434. help = commandhelp.add("leave");
  8435. commandhelp.addAlias(help, "l", "leave");
  8436. commandhelp.addAlias(help, "hub", "leave");
  8437. help = commandhelp.add("giveup");
  8438. commandhelp.addAlias(help, "fuckit", "giveup");
  8439. help = command.newHelp("vanish", "vanish");
  8440. //vanish [on] [player]
  8441. helpArg0 = command.newHelpLiteral("on");
  8442. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8443. command.addHelpChild(help, helpArg0);
  8444. //vanish [off] [player]
  8445. helpArg0 = command.newHelpLiteral("off");
  8446. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8447. command.addHelpChild(help, helpArg0);
  8448. command.addHelp(help);
  8449. commandhelp.addAlias(help, "v", "vanish");
  8450. help = command.newHelp("start", "start");
  8451. command.addHelpChild(help, command.newHelpLiteral("ai"));
  8452. command.addHelpChild(help, command.newHelpLiteral("chat"));
  8453. command.addHelpChild(help, command.newHelpLiteral("commands"));
  8454. command.addHelpChild(help, command.newHelpLiteral("creative"));
  8455. command.addHelpChild(help, command.newHelpLiteral("damage"));
  8456. command.addHelpChild(help, command.newHelpLiteral("doors"));
  8457. command.addHelpChild(help, command.newHelpLiteral("fixitems"));
  8458. command.addHelpChild(help, command.newHelpLiteral("gemstones"));
  8459. command.addHelpChild(help, command.newHelpLiteral("harvest"));
  8460. command.addHelpChild(help, command.newHelpLiteral("hawkeye"));
  8461. command.addHelpChild(help, command.newHelpLiteral("herobrine"));
  8462. command.addHelpChild(help, command.newHelpLiteral("lectern"));
  8463. command.addHelpChild(help, command.newHelpLiteral("loom"));
  8464. command.addHelpChild(help, command.newHelpLiteral("games"));
  8465. command.addHelpChild(help, command.newHelpLiteral("mails"));
  8466. command.addHelpChild(help, command.newHelpLiteral("mobarena"));
  8467. command.addHelpChild(help, command.newHelpLiteral("perms"));
  8468. command.addHelpChild(help, command.newHelpLiteral("playerdata"));
  8469. command.addHelpChild(help, command.newHelpLiteral("pumpkin"));
  8470. command.addHelpChild(help, command.newHelpLiteral("recipes"));
  8471. command.addHelpChild(help, command.newHelpLiteral("scheduler"));
  8472. command.addHelpChild(help, command.newHelpLiteral("shop"));
  8473. command.addHelpChild(help, command.newHelpLiteral("sitting"));
  8474. command.addHelpChild(help, command.newHelpLiteral("stats"));
  8475. command.addHelpChild(help, command.newHelpLiteral("story"));
  8476. command.addHelpChild(help, command.newHelpLiteral("survival"));
  8477. command.addHelpChild(help, command.newHelpLiteral("ticket"));
  8478. command.addHelpChild(help, command.newHelpLiteral("timber"));
  8479. command.addHelpChild(help, command.newHelpLiteral("trader"));
  8480. command.addHelpChild(help, command.newHelpLiteral("voxel"));
  8481. command.addHelp(help);
  8482. help = command.newHelp("gamemode", "gamemode");
  8483. helpArg0 = command.newHelpLiteral("adventure");
  8484. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8485. command.addHelpChild(help, helpArg0);
  8486. helpArg0 = command.newHelpLiteral("creative");
  8487. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8488. command.addHelpChild(help, helpArg0);
  8489. helpArg0 = command.newHelpLiteral("spectator");
  8490. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8491. command.addHelpChild(help, helpArg0);
  8492. helpArg0 = command.newHelpLiteral("survival");
  8493. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8494. command.addHelpChild(help, helpArg0);
  8495. helpArg0 = command.newHelpInt("0-3", 0, 3);
  8496. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8497. command.addHelpChild(help, helpArg0);
  8498. command.addHelp(help);
  8499. commandhelp.addAlias(help, "gm", "gamemode");
  8500. help = command.newHelp("databank", "databank");
  8501. //databank showtables
  8502. command.addHelpChild(help, command.newHelpLiteral("showtables"));
  8503. //databank showfields <table>
  8504. helpArg0 = command.newHelpLiteral("showfields");
  8505. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  8506. command.addHelpChild(help, helpArg0);
  8507. //databank showdataypes <table>
  8508. helpArg0 = command.newHelpLiteral("showdataypes");
  8509. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  8510. command.addHelpChild(help, helpArg0);
  8511. command.addHelp(help);
  8512. help = command.newHelp("copyisland", "copyisland");
  8513. //copyisland copy/paste
  8514. command.addHelpChild(help, command.newHelpLiteral("copy"));
  8515. command.addHelpChild(help, command.newHelpLiteral("paste"));
  8516. //copyisland pos1/pos2
  8517. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  8518. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  8519. command.addHelp(help);
  8520. help = command.newHelp("fly", "fly");
  8521. helpArg0 = command.newHelpSpecial("Player", "player", "fly.other");
  8522. command.addHelpChild(helpArg0, command.newHelpLiteral("on"));
  8523. command.addHelpChild(helpArg0, command.newHelpLiteral("off"));
  8524. command.addHelpChild(help, helpArg0);
  8525. command.addHelp(help);
  8526. help = command.newHelp("enchant", "enchant");
  8527. helpArg0 = command.newHelpSpecial("Enchantment", "enchantment");
  8528. command.addHelpChild(helpArg0, command.newHelpInt("level", 0, 100));
  8529. command.addHelpChild(help, helpArg0);
  8530. command.addHelp(help);
  8531. help = command.newHelp("allsounds", "allsounds");
  8532. command.addHelpChild(help, command.newHelpLiteral("start"));
  8533. command.addHelpChild(help, command.newHelpLiteral("stop"));
  8534. command.addHelp(help);
  8535. help = command.newHelp("spawn", "spawn");
  8536. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8537. command.addHelp(help);
  8538. help = command.newHelp("games", "games");
  8539. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8540. command.addHelp(help);
  8541. help = command.newHelp("creative", "creative");
  8542. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8543. command.addHelp(help);
  8544. help = command.newHelp("story", "story");
  8545. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8546. command.addHelp(help);
  8547. help = command.newHelp("ass", "ass");
  8548. //ass set <name>
  8549. helpArg0 = command.newHelpLiteral("set");
  8550. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8551. command.addHelpChild(help, helpArg0);
  8552. //ass rename <name>
  8553. helpArg0 = command.newHelpLiteral("rename");
  8554. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8555. command.addHelpChild(help, helpArg0);
  8556. //ass remove <radius>
  8557. helpArg0 = command.newHelpLiteral("remove");
  8558. command.addHelpChild(helpArg0, command.newHelpInt("radius", 0, 30));
  8559. command.addHelpChild(help, helpArg0);
  8560. command.addHelp(help);
  8561. help = command.newHelp("tppos", "tppos");
  8562. helpArg0 = command.newHelpInt("x", -32000, 32000);
  8563. helpArg1 = command.newHelpInt("y", 0, 1000);
  8564. helpArg2 = command.newHelpInt("z", -32000, 32000);
  8565. helpArg3 = command.newHelpString("world", false);
  8566. helpArg4 = command.newHelpSpecial("Player", "player");
  8567. command.addHelpChild(helpArg3, helpArg4);
  8568. command.addHelpChild(helpArg2, helpArg3);
  8569. command.addHelpChild(helpArg1, helpArg2);
  8570. command.addHelpChild(helpArg0, helpArg1);
  8571. command.addHelpChild(help, helpArg0);
  8572. command.addHelp(help);
  8573. help = command.newHelp("stats", "stats");
  8574. addStatsGameHelp(help, "AmongUs");
  8575. addStatsGameHelp(help, "BedWars");
  8576. addStatsGameHelp(help, "RageMode");
  8577. addStatsGameHelp(help, "JR-Endless");
  8578. addStatsGameHelp(help, "Rebuild");
  8579. addStatsGameHelp(help, "FastBridge");
  8580. addStatsGameHelp(help, "Snowfight");
  8581. addStatsGameHelp(help, "JR-Death");
  8582. addStatsGameHelp(help, "JR-Ice");
  8583. addStatsGameHelp(help, "JR-Rooms");
  8584. addStatsGameHelp(help, "Letters");
  8585. addStatsGameHelp(help, "Sammelfieber");
  8586. addStatsGameHelp(help, "Buttons");
  8587. addStatsGameHelp(help, "HideAndSeek");
  8588. addStatsGameHelp(help, "Inverting");
  8589. addStatsGameHelp(help, "Spleef");
  8590. addStatsGameHelp(help, "Knockfight");
  8591. addStatsGameHelp(help, "Leapfrog");
  8592. addStatsGameHelp(help, "Parcour");
  8593. addStatsGameHelp(help, "Halma");
  8594. addStatsGameHelp(help, "ShoppingChaos");
  8595. addStatsGameHelp(help, "MengerRun");
  8596. command.addHelp(help);
  8597. help = command.newHelp("setspawn", "setspawn");
  8598. command.addHelpChild(help, command.newHelpLiteral("server"));
  8599. command.addHelpChild(help, command.newHelpLiteral("games"));
  8600. command.addHelpChild(help, command.newHelpLiteral("creative"));
  8601. command.addHelpChild(help, command.newHelpLiteral("story"));
  8602. command.addHelp(help);
  8603. help = command.newHelp("datatools", "datatools");
  8604. //datatools hide <name>
  8605. helpArg0 = command.newHelpLiteral("hide");
  8606. command.addHelpChild(helpArg0, command.newHelpLiteral("enchantments"));
  8607. command.addHelpChild(helpArg0, command.newHelpLiteral("attributes"));
  8608. command.addHelpChild(helpArg0, command.newHelpLiteral("unbreakable"));
  8609. command.addHelpChild(helpArg0, command.newHelpLiteral("destroys"));
  8610. command.addHelpChild(helpArg0, command.newHelpLiteral("placed_on"));
  8611. command.addHelpChild(helpArg0, command.newHelpLiteral("potion_effects"));
  8612. command.addHelpChild(help, helpArg0);
  8613. //datatools attribute <attribute> <slot> <double> <op>
  8614. helpArg0 = command.newHelpLiteral("attribute");
  8615. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("armor"));
  8616. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("armor_toughness"));
  8617. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("attack_damage"));
  8618. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("knockback_resistance"));
  8619. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("max_health"));
  8620. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("movement_speed"));
  8621. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("attack_speed"));
  8622. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("luck"));
  8623. command.addHelpChild(help, helpArg0);
  8624. //datatools hide-entity
  8625. command.addHelpChild(help, command.newHelpLiteral("hide-entity"));
  8626. //datatools show-entity
  8627. command.addHelpChild(help, command.newHelpLiteral("show-entity"));
  8628. //datatools name-entity <name>
  8629. helpArg0 = command.newHelpLiteral("name-entity");
  8630. helpArg1 = command.newHelpString("name", true);
  8631. command.addHelpChild(helpArg0, helpArg1);
  8632. command.addHelpChild(help, helpArg0);
  8633. //datatools name-visibility <name>
  8634. helpArg0 = command.newHelpLiteral("name-visibility");
  8635. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  8636. command.addHelpChild(help, helpArg0);
  8637. //datatools name-item <name>
  8638. helpArg0 = command.newHelpLiteral("name-item");
  8639. helpArg1 = command.newHelpString("name", true);
  8640. command.addHelpChild(helpArg0, helpArg1);
  8641. command.addHelpChild(help, helpArg0);
  8642. //datatools print-entity
  8643. command.addHelpChild(help, command.newHelpLiteral("print-entity"));
  8644. //datatools lore-item <line> <lore>
  8645. helpArg0 = command.newHelpLiteral("lore-item");
  8646. helpArg1 = command.newHelpInt("line", 0, 1000);
  8647. helpArg2 = command.newHelpString("lore", true);
  8648. command.addHelpChild(helpArg1, helpArg2);
  8649. command.addHelpChild(helpArg0, helpArg1);
  8650. command.addHelpChild(help, helpArg0);
  8651. command.addHelp(help);
  8652. commandhelp.addAlias(help, "dt", "datatools");
  8653. help = command.newHelp("hawkeye", "hawkeye");
  8654. //hawkeye search <parameters>
  8655. helpArg0 = command.newHelpLiteral("search");
  8656. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8657. command.addHelpChild(help, helpArg0);
  8658. //hawkeye undo
  8659. command.addHelpChild(help, command.newHelpLiteral("undo"));
  8660. //hawkeye entries
  8661. command.addHelpChild(help, command.newHelpLiteral("entries"));
  8662. //hawkeye rollback
  8663. command.addHelpChild(help, command.newHelpLiteral("rollback"));
  8664. //hawkeye tool
  8665. command.addHelpChild(help, command.newHelpLiteral("tool"));
  8666. commandhelp.addAlias(help, "ha", "hawkeye");
  8667. command.addHelp(help);
  8668. help = command.newHelp("voxel", "voxel");
  8669. command.addHelpChild(help, command.newHelpInt("radius", 1, 5));
  8670. command.addHelpChild(help, command.newHelpLiteral("block"));
  8671. command.addHelp(help);
  8672. help = command.newHelp("help", "help");
  8673. command.addHelpChild(help, command.newHelpInt("page", 1, 100));
  8674. command.addHelp(help);
  8675. commandhelp.addAlias(help, "mimimi", "help");
  8676. help = command.newHelp("suicide", "suicide");
  8677. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "suicide.other"));
  8678. command.addHelp(help);
  8679. help = command.newHelp("tempfly", "tempfly");
  8680. helpArg0 = command.newHelpSpecial("Player", "player");
  8681. command.addHelpChild(helpArg0, command.newHelpInt("seconds", 1, 10000));
  8682. command.addHelpChild(help, helpArg0);
  8683. command.addHelp(help);
  8684. help = command.newHelp("tempban", "tempban");
  8685. helpArg0 = command.newHelpSpecial("Player", "player");
  8686. helpArg1 = command.newHelpInt("days", 0, 100);
  8687. helpArg2 = command.newHelpInt("hours", 0, 100);
  8688. helpArg3 = command.newHelpInt("minutes", 0, 100);
  8689. command.addHelpChild(helpArg3, command.newHelpString("reason", true));
  8690. command.addHelpChild(helpArg2, helpArg3);
  8691. command.addHelpChild(helpArg1, helpArg2);
  8692. command.addHelpChild(helpArg0, helpArg1);
  8693. command.addHelpChild(help, helpArg0);
  8694. command.addHelp(help);
  8695. help = command.newHelp("unban", "unban");
  8696. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8697. command.addHelp(help);
  8698. commandhelp.addAlias(help, "pardon", "unban");
  8699. help = command.newHelp("ban", "ban");
  8700. helpArg0 = command.newHelpSpecial("Player", "player");
  8701. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8702. command.addHelpChild(help, helpArg0);
  8703. command.addHelp(help);
  8704. help = command.newHelp("silentban", "silentban");
  8705. helpArg0 = command.newHelpSpecial("Player", "player");
  8706. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8707. command.addHelpChild(help, helpArg0);
  8708. command.addHelp(help);
  8709. help = command.newHelp("kick", "kick");
  8710. helpArg0 = command.newHelpSpecial("Player", "player");
  8711. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8712. command.addHelpChild(help, helpArg0);
  8713. command.addHelp(help);
  8714. help = command.newHelp("silentkick", "silentkick");
  8715. helpArg0 = command.newHelpSpecial("Player", "player");
  8716. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8717. command.addHelpChild(help, helpArg0);
  8718. command.addHelp(help);
  8719. help = command.newHelp("answer", "answer");
  8720. command.addHelpChild(help, command.newHelpString("message", true));
  8721. command.addHelp(help);
  8722. commandhelp.addAlias(help, "r", "answer");
  8723. help = command.newHelp("time", "time");
  8724. //time set <time>
  8725. helpArg0 = command.newHelpLiteral("set");
  8726. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  8727. command.addHelpChild(help, helpArg0);
  8728. //time add <time>
  8729. helpArg0 = command.newHelpLiteral("add");
  8730. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  8731. command.addHelpChild(help, helpArg0);
  8732. //time day / noon / night / midnight
  8733. command.addHelpChild(help, command.newHelpLiteral("day"));
  8734. command.addHelpChild(help, command.newHelpLiteral("noon"));
  8735. command.addHelpChild(help, command.newHelpLiteral("night"));
  8736. command.addHelpChild(help, command.newHelpLiteral("midnight"));
  8737. command.addHelp(help);
  8738. help = command.newHelp("enderchest", "enderchest");
  8739. //enderchest [player] <from-player>
  8740. helpArg0 = command.newHelpSpecial("Player", "player");
  8741. command.addHelpChild(helpArg0, command.newHelpString("from-player", false));
  8742. command.addHelpChild(help, helpArg0);
  8743. //enderchest [player] <from-player>
  8744. command.addHelpChild(help, command.newHelpString("from-player", false));
  8745. command.addHelp(help);
  8746. help = command.newHelp("nickname", "nickname");
  8747. command.addHelpChild(help, command.newHelpString("name", true));
  8748. command.addHelpChild(help, command.newHelpLiteral("remove"));
  8749. command.addHelp(help);
  8750. help = command.newHelp("perm", "perm");
  8751. //perm give <player> <perm>
  8752. helpArg0 = command.newHelpLiteral("give", "perm.give");
  8753. helpArg1 = command.newHelpSpecial("Player", "player");
  8754. command.addHelpChild(helpArg1, command.newHelpLiteral("admin", "isAdmin"));
  8755. command.addHelpChild(helpArg1, command.newHelpLiteral("mod", "isAdmin"));
  8756. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  8757. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  8758. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  8759. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  8760. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  8761. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  8762. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  8763. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  8764. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  8765. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass", "isAdmin"));
  8766. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  8767. command.addHelpChild(helpArg0, helpArg1);
  8768. command.addHelpChild(help, helpArg0);
  8769. //perm remove <player> <perm>
  8770. helpArg0 = command.newHelpLiteral("remove", "perm.remove");
  8771. helpArg1 = command.newHelpSpecial("Player", "player");
  8772. command.addHelpChild(helpArg1, command.newHelpLiteral("admin", "isAdmin"));
  8773. command.addHelpChild(helpArg1, command.newHelpLiteral("mod", "isAdmin"));
  8774. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  8775. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  8776. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  8777. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  8778. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  8779. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  8780. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  8781. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  8782. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  8783. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass", "isAdmin"));
  8784. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  8785. command.addHelpChild(helpArg0, helpArg1);
  8786. command.addHelpChild(help, helpArg0);
  8787. //perm removeall <player>
  8788. helpArg0 = command.newHelpLiteral("removeall", "perm.removeall");
  8789. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8790. command.addHelpChild(help, helpArg0);
  8791. //perm list <player>
  8792. helpArg0 = command.newHelpLiteral("list", "perm.list");
  8793. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8794. command.addHelpChild(help, helpArg0);
  8795. //perm toggle
  8796. command.addHelpChild(help, command.newHelpLiteral("toggle", "perm.toggle"));
  8797. command.addHelp(help);
  8798. help = command.newHelp("script", "script");
  8799. //script start <scripts>
  8800. helpArg0 = command.newHelpLiteral("start");
  8801. command.addHelpChild(helpArg0, command.newHelpString("scrips...", true));
  8802. command.addHelpChild(help, helpArg0);
  8803. //script see
  8804. command.addHelpChild(help, command.newHelpLiteral("see"));
  8805. //script term
  8806. helpArg0 = command.newHelpLiteral("term");
  8807. command.addHelpChild(helpArg0, command.newHelpLiteral("all"));
  8808. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 1000000));
  8809. command.addHelpChild(help, helpArg0);
  8810. command.addHelp(help);
  8811. commandhelp.addAlias(help, "s", "script");
  8812. help = command.newHelp("home", "home");
  8813. //home set
  8814. helpArg0 = command.newHelpLiteral("set");
  8815. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8816. command.addHelpChild(help, helpArg0);
  8817. //home delete
  8818. helpArg0 = command.newHelpLiteral("delete");
  8819. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8820. command.addHelpChild(help, helpArg0);
  8821. //home list
  8822. helpArg0 = command.newHelpLiteral("list");
  8823. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  8824. command.addHelpChild(help, helpArg0);
  8825. //home <name>
  8826. helpArg0 = command.newHelpString("name", false);
  8827. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  8828. command.addHelpChild(help, helpArg0);
  8829. command.addHelp(help);
  8830. help = command.newHelp("plot", "plot");
  8831. //plot info
  8832. command.addHelpChild(help, command.newHelpLiteral("info"));
  8833. command.addHelpChild(help, command.newHelpLiteral("i"));
  8834. //plot pos1/pos2
  8835. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  8836. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  8837. //plot create/create3D
  8838. command.addHelpChild(help, command.newHelpLiteral("create"));
  8839. command.addHelpChild(help, command.newHelpLiteral("create3D"));
  8840. //plot remove
  8841. helpArg0 = command.newHelpLiteral("remove");
  8842. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 10000));
  8843. command.addHelpChild(help, helpArg0);
  8844. //plot name <name>
  8845. helpArg0 = command.newHelpLiteral("name");
  8846. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8847. helpArg1 = command.newHelpInt("id", 0, 10000);
  8848. command.addHelpChild(helpArg1, command.newHelpString("name", true));
  8849. command.addHelpChild(helpArg0, helpArg1);
  8850. command.addHelpChild(help, helpArg0);
  8851. //plot share <name>
  8852. helpArg0 = command.newHelpLiteral("share");
  8853. helpArg1 = command.newHelpSpecial("Player", "player");
  8854. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8855. command.addHelpChild(helpArg0, helpArg1);
  8856. command.addHelpChild(help, helpArg0);
  8857. //plot kick <name>
  8858. helpArg0 = command.newHelpLiteral("kick");
  8859. helpArg1 = command.newHelpSpecial("Player", "player");
  8860. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8861. command.addHelpChild(helpArg0, helpArg1);
  8862. command.addHelpChild(help, helpArg0);
  8863. //plot raise
  8864. command.addHelpChild(help, command.newHelpLiteral("raise"));
  8865. //plot leader <name>
  8866. helpArg0 = command.newHelpLiteral("leader");
  8867. helpArg1 = command.newHelpSpecial("Player", "player");
  8868. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8869. command.addHelpChild(helpArg0, helpArg1);
  8870. command.addHelpChild(help, helpArg0);
  8871. //plot mod <name>
  8872. helpArg0 = command.newHelpLiteral("mod");
  8873. helpArg1 = command.newHelpSpecial("Player", "player");
  8874. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8875. command.addHelpChild(helpArg0, helpArg1);
  8876. command.addHelpChild(help, helpArg0);
  8877. //plot chest <name>
  8878. helpArg0 = command.newHelpLiteral("chest");
  8879. helpArg1 = command.newHelpSpecial("Player", "player");
  8880. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8881. command.addHelpChild(helpArg0, helpArg1);
  8882. command.addHelpChild(help, helpArg0);
  8883. //plot sell <price>
  8884. helpArg0 = command.newHelpLiteral("sell");
  8885. command.addHelpChild(helpArg0, command.newHelpInt("price", 1, 10000));
  8886. command.addHelpChild(help, helpArg0);
  8887. //plot moreinfo
  8888. command.addHelpChild(help, command.newHelpLiteral("moreinfo", "plot.moreinfo"));
  8889. //plot listall
  8890. command.addHelpChild(help, command.newHelpLiteral("listall"));
  8891. //plot flags <int> <boolean>
  8892. helpArg0 = command.newHelpLiteral("flags");
  8893. helpArg1 = command.newHelpInt("int", 1, 1000);
  8894. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  8895. command.addHelpChild(helpArg0, helpArg1);
  8896. command.addHelpChild(help, helpArg0);
  8897. //plot expand <anzahl>
  8898. helpArg0 = command.newHelpLiteral("expand");
  8899. helpArg1 = command.newHelpInt("anzahl", 1, 1000);
  8900. helpArg3 = command.newHelpInt("id", 1, 10000);
  8901. helpArg2 = command.newHelpLiteral("north");
  8902. command.addHelpChild(helpArg2, helpArg3);
  8903. command.addHelpChild(helpArg1, helpArg2);
  8904. helpArg2 = command.newHelpLiteral("east");
  8905. command.addHelpChild(helpArg2, helpArg3);
  8906. command.addHelpChild(helpArg1, helpArg2);
  8907. helpArg2 = command.newHelpLiteral("south");
  8908. command.addHelpChild(helpArg2, helpArg3);
  8909. command.addHelpChild(helpArg1, helpArg2);
  8910. helpArg2 = command.newHelpLiteral("west");
  8911. command.addHelpChild(helpArg2, helpArg3);
  8912. command.addHelpChild(helpArg1, helpArg2);
  8913. command.addHelpChild(helpArg0, helpArg1);
  8914. command.addHelpChild(help, helpArg0);
  8915. command.addHelp(help);
  8916. commandhelp.addAlias(help, "p", "plot");
  8917. help = command.newHelp("warp", "warp");
  8918. //warp set [group] <name>
  8919. helpArg0 = command.newHelpLiteral("set", "warp.create");
  8920. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  8921. helpArg1 = command.newHelpString("group", false, "warp.create");
  8922. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  8923. command.addHelpChild(helpArg0, helpArg1);
  8924. command.addHelpChild(help, helpArg0);
  8925. //warp delete [group] <name>
  8926. helpArg0 = command.newHelpLiteral("delete", "warp.create");
  8927. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  8928. helpArg1 = command.newHelpString("group", false, "warp.create");
  8929. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  8930. command.addHelpChild(helpArg0, helpArg1);
  8931. command.addHelpChild(help, helpArg0);
  8932. //warp groups
  8933. command.addHelpChild(help, command.newHelpLiteral("groups", "warp.create"));
  8934. //warp list [group]
  8935. helpArg0 = command.newHelpLiteral("list");
  8936. command.addHelpChild(helpArg0, command.newHelpString("group", false, "warp.create"));
  8937. command.addHelpChild(help, helpArg0);
  8938. //warp [group] <name>
  8939. helpArg0 = command.newHelpString("name", false);
  8940. command.addHelpChild(help, helpArg0);
  8941. helpArg0 = command.newHelpString("group", false, "warp.create");
  8942. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8943. command.addHelpChild(help, helpArg0);
  8944. command.addHelp(help);
  8945. help = command.newHelp("teleport", "teleport");
  8946. helpArg0 = command.newHelpSpecial("Player", "player");
  8947. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "to-player", "teleport.other"));
  8948. command.addHelpChild(help, helpArg0);
  8949. command.addHelp(help);
  8950. commandhelp.addAlias(help, "tp", "teleport");
  8951. help = command.newHelp("lastseen", "lastseen");
  8952. command.addHelpChild(help, command.newHelpInt("amount", 1, 100));
  8953. command.addHelp(help);
  8954. help = command.newHelp("human", "human");
  8955. //human spawn
  8956. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  8957. //human set <name>
  8958. helpArg0 = command.newHelpLiteral("set");
  8959. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8960. command.addHelpChild(help, helpArg0);
  8961. //human setuuid <uuid>
  8962. helpArg0 = command.newHelpLiteral("setuuid");
  8963. command.addHelpChild(helpArg0, command.newHelpString("uuid", false));
  8964. command.addHelpChild(help, helpArg0);
  8965. //human name
  8966. helpArg0 = command.newHelpLiteral("name");
  8967. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8968. command.addHelpChild(help, helpArg0);
  8969. //human kill
  8970. command.addHelpChild(help, command.newHelpLiteral("kill"));
  8971. //human size <scale>
  8972. helpArg0 = command.newHelpLiteral("size");
  8973. command.addHelpChild(helpArg0, command.newHelpInt("scale", 0, 100));
  8974. command.addHelpChild(help, helpArg0);
  8975. //human steve
  8976. command.addHelpChild(help, command.newHelpLiteral("steve"));
  8977. //human alex
  8978. command.addHelpChild(help, command.newHelpLiteral("alex"));
  8979. //human statue
  8980. helpArg0 = command.newHelpLiteral("statue");
  8981. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  8982. command.addHelpChild(help, helpArg0);
  8983. command.addHelp(help);
  8984. help = command.newHelp("mail", "mail");
  8985. //mail <player> <message>
  8986. helpArg0 = command.newHelpSpecial("Player", "player");
  8987. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8988. command.addHelpChild(help, helpArg0);
  8989. //mail new
  8990. command.addHelpChild(help, command.newHelpLiteral("new"));
  8991. //mail inbox
  8992. command.addHelpChild(help, command.newHelpLiteral("inbox"));
  8993. //mail outbox
  8994. command.addHelpChild(help, command.newHelpLiteral("outbox"));
  8995. //mail reset
  8996. command.addHelpChild(help, command.newHelpLiteral("reset", "mail.reset"));
  8997. command.addHelp(help);
  8998. help = command.newHelp("entities", "entities");
  8999. command.addHelpChild(help, command.newHelpString("world", false));
  9000. command.addHelp(help);
  9001. help = command.newHelp("playtime", "playtime");
  9002. //playtime [player]
  9003. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9004. //playtime all
  9005. command.addHelpChild(help, command.newHelpLiteral("all"));
  9006. //playtime month [1-12] [year]
  9007. helpArg0 = command.newHelpLiteral("month");
  9008. helpArg1 = command.newHelpInt("int", 1, 12);
  9009. command.addHelpChild(helpArg1, command.newHelpInt("year", 2019, 2024));
  9010. command.addHelpChild(helpArg0, helpArg1);
  9011. command.addHelpChild(help, helpArg0);
  9012. //playtime year [year]
  9013. helpArg0 = command.newHelpLiteral("year");
  9014. command.addHelpChild(helpArg0, command.newHelpInt("year", 2019, 2024));
  9015. command.addHelpChild(help, helpArg0);
  9016. command.addHelp(help);
  9017. help = command.newHelp("user", "user");
  9018. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  9019. command.addHelp(help);
  9020. help = command.newHelp("skills", "skills");
  9021. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  9022. command.addHelp(help);
  9023. help = command.newHelp("cli", "cli");
  9024. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  9025. command.addHelp(help);
  9026. help = command.newHelp("plant", "plant");
  9027. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  9028. command.addHelp(help);
  9029. help = command.newHelp("grow", "grow");
  9030. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  9031. command.addHelp(help);
  9032. help = command.newHelp("plough", "plough");
  9033. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  9034. command.addHelp(help);
  9035. help = command.newHelp("news", "news");
  9036. command.addHelpChild(help, command.newHelpString("text", true));
  9037. command.addHelp(help);
  9038. help = command.newHelp("inv", "inv");
  9039. //inv ignore
  9040. command.addHelpChild(help, command.newHelpLiteral("ignore"));
  9041. //inv see <player>
  9042. helpArg0 = command.newHelpLiteral("see");
  9043. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9044. command.addHelpChild(help, helpArg0);
  9045. //inv reload <player>
  9046. helpArg0 = command.newHelpLiteral("reload");
  9047. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9048. command.addHelpChild(help, helpArg0);
  9049. //inv loadFrom <player> <world>
  9050. helpArg0 = command.newHelpLiteral("loadFrom");
  9051. helpArg1 = command.newHelpSpecial("Player", "player");
  9052. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  9053. command.addHelpChild(helpArg0, helpArg1);
  9054. command.addHelpChild(help, helpArg0);
  9055. //inv saveFor <player> <world>
  9056. helpArg0 = command.newHelpLiteral("saveFor");
  9057. helpArg1 = command.newHelpSpecial("Player", "player");
  9058. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  9059. command.addHelpChild(helpArg0, helpArg1);
  9060. command.addHelpChild(help, helpArg0);
  9061. command.addHelp(help);
  9062. help = command.newHelp("warn", "warn");
  9063. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9064. command.addHelp(help);
  9065. help = command.newHelp("jail", "jail");
  9066. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9067. command.addHelp(help);
  9068. help = command.newHelp("unjail", "unjail");
  9069. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9070. command.addHelp(help);
  9071. help = command.newHelp("friend", "friend");
  9072. //friend add <player>
  9073. helpArg0 = command.newHelpLiteral("add");
  9074. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9075. command.addHelpChild(help, helpArg0);
  9076. //friend remove <player>
  9077. helpArg0 = command.newHelpLiteral("remove");
  9078. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9079. command.addHelpChild(help, helpArg0);
  9080. //friend list
  9081. command.addHelpChild(help, command.newHelpLiteral("list"));
  9082. command.addHelp(help);
  9083. commandhelp.addAlias(help, "f", "friend");
  9084. help = command.newHelp("sign", "sign");
  9085. helpArg0 = command.newHelpInt("1-4", 1, 4);
  9086. command.addHelpChild(helpArg0, command.newHelpString("text", true));
  9087. command.addHelpChild(help, helpArg0);
  9088. command.addHelp(help);
  9089. help = command.newHelp("speed", "speed");
  9090. helpArg0 = command.newHelpInt("int", 1, 10);
  9091. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "speed.other"));
  9092. command.addHelpChild(help, helpArg0);
  9093. command.addHelp(help);
  9094. help = command.newHelp("errordebug", "errordebug");
  9095. command.addHelpChild(help, command.newHelpLiteral("list"));
  9096. command.addHelpChild(help, command.newHelpLiteral("clear"));
  9097. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  9098. command.addHelp(help);
  9099. help = command.newHelp("error", "error");
  9100. command.addHelpChild(help, command.newHelpLiteral("list"));
  9101. command.addHelpChild(help, command.newHelpLiteral("clear"));
  9102. command.addHelp(help);
  9103. help = command.newHelp("mailbox", "mailbox");
  9104. //mailbox show <player>
  9105. helpArg0 = command.newHelpLiteral("show");
  9106. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "mailbox.other"));
  9107. command.addHelpChild(help, helpArg0);
  9108. //mailbox send <player>
  9109. helpArg0 = command.newHelpLiteral("send");
  9110. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9111. command.addHelpChild(help, helpArg0);
  9112. command.addHelp(help);
  9113. help = command.newHelp("world", "world");
  9114. //world info
  9115. command.addHelpChild(help, command.newHelpLiteral("info"));
  9116. //world tp <world> [player]
  9117. helpArg0 = command.newHelpLiteral("tp");
  9118. helpArg1 = command.newHelpString("world", false);
  9119. command.addHelpChild(helpArg1, command.newHelpSpecial("Player", "player"));
  9120. command.addHelpChild(helpArg0, helpArg1);
  9121. command.addHelpChild(help, helpArg0);
  9122. //world list
  9123. command.addHelpChild(help, command.newHelpLiteral("list"));
  9124. //world diffi <world> <diffi>
  9125. helpArg0 = command.newHelpLiteral("diffi");
  9126. helpArg1 = command.newHelpString("world", false);
  9127. command.addHelpChild(helpArg1, command.newHelpLiteral("PEACEFUL"));
  9128. command.addHelpChild(helpArg1, command.newHelpLiteral("EASY"));
  9129. command.addHelpChild(helpArg1, command.newHelpLiteral("NORMAL"));
  9130. command.addHelpChild(helpArg1, command.newHelpLiteral("HARD"));
  9131. command.addHelpChild(helpArg0, helpArg1);
  9132. command.addHelpChild(help, helpArg0);
  9133. //world setspawn
  9134. helpArg0 = command.newHelpLiteral("setspawn");
  9135. command.addHelpChild(help, helpArg0);
  9136. command.addHelp(help);
  9137. help = command.newHelp("quest", "quest");
  9138. //quest see
  9139. command.addHelpChild(help, command.newHelpLiteral("see"));
  9140. //quest term <player>
  9141. helpArg0 = command.newHelpLiteral("term");
  9142. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9143. command.addHelpChild(help, helpArg0);
  9144. command.addHelp(help);
  9145. help = command.newHelp("pvp", "pvp");
  9146. helpArg0 = command.newHelpLiteral("on");
  9147. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  9148. command.addHelpChild(help, helpArg0);
  9149. helpArg0 = command.newHelpLiteral("off");
  9150. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  9151. command.addHelpChild(help, helpArg0);
  9152. command.addHelp(help);
  9153. help = command.newHelp("game", "game");
  9154. command.addHelpChild(help, command.newHelpLiteral("open"));
  9155. command.addHelpChild(help, command.newHelpLiteral("close"));
  9156. command.addHelp(help);
  9157. help = command.newHelp("party", "party");
  9158. //party invite <player>
  9159. helpArg0 = command.newHelpLiteral("invite");
  9160. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9161. command.addHelpChild(help, helpArg0);
  9162. //party accept <player>
  9163. helpArg0 = command.newHelpLiteral("accept");
  9164. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9165. command.addHelpChild(help, helpArg0);
  9166. //party deny <player>
  9167. helpArg0 = command.newHelpLiteral("deny");
  9168. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9169. command.addHelpChild(help, helpArg0);
  9170. //party kick <player>
  9171. helpArg0 = command.newHelpLiteral("kick");
  9172. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9173. command.addHelpChild(help, helpArg0);
  9174. //party leave
  9175. command.addHelpChild(help, command.newHelpLiteral("leave"));
  9176. //party promote <player>
  9177. helpArg0 = command.newHelpLiteral("promote");
  9178. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9179. command.addHelpChild(help, helpArg0);
  9180. //party demote <player>
  9181. helpArg0 = command.newHelpLiteral("demote");
  9182. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9183. command.addHelpChild(help, helpArg0);
  9184. //party disband
  9185. command.addHelpChild(help, command.newHelpLiteral("disband"));
  9186. //party list
  9187. command.addHelpChild(help, command.newHelpLiteral("list"));
  9188. command.addHelp(help);
  9189. help = command.newHelp("var", "var");
  9190. helpArg0 = command.newHelpInt("id", 0, 1000000);
  9191. command.addHelpChild(helpArg0, command.newHelpString("varname", false));
  9192. command.addHelpChild(help, helpArg0);
  9193. command.addHelp(help);
  9194. help = command.newHelp("setservermessage", "setservermessage");
  9195. command.addHelpChild(help, command.newHelpString("message", true));
  9196. command.addHelp(help);
  9197. help = command.newHelp("clan", "clan");
  9198. //clan invite <name>
  9199. helpArg0 = command.newHelpLiteral("invite");
  9200. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9201. command.addHelpChild(help, helpArg0);
  9202. //clan accept <id/name/tag>
  9203. helpArg0 = command.newHelpLiteral("invite");
  9204. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  9205. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  9206. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  9207. command.addHelpChild(help, helpArg0);
  9208. //clan info [id/name/tag]
  9209. helpArg0 = command.newHelpLiteral("info");
  9210. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  9211. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  9212. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  9213. command.addHelpChild(help, helpArg0);
  9214. //clan create <name> <tag>
  9215. helpArg0 = command.newHelpLiteral("create");
  9216. helpArg1 = command.newHelpString("name", false);
  9217. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  9218. command.addHelpChild(helpArg0, helpArg1);
  9219. command.addHelpChild(help, helpArg0);
  9220. //clan kick <name>
  9221. helpArg0 = command.newHelpLiteral("kick");
  9222. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9223. command.addHelpChild(help, helpArg0);
  9224. //clan leader <name>
  9225. helpArg0 = command.newHelpLiteral("leader");
  9226. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9227. command.addHelpChild(help, helpArg0);
  9228. //clan mod <name>
  9229. helpArg0 = command.newHelpLiteral("mod");
  9230. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9231. command.addHelpChild(help, helpArg0);
  9232. //clan degrade <name>
  9233. helpArg0 = command.newHelpLiteral("degrade");
  9234. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9235. command.addHelpChild(help, helpArg0);
  9236. //clan leave
  9237. command.addHelpChild(help, command.newHelpLiteral("leave"));
  9238. //clan rename <name> <tag>
  9239. helpArg0 = command.newHelpLiteral("rename");
  9240. helpArg1 = command.newHelpString("name", false);
  9241. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  9242. command.addHelpChild(helpArg0, helpArg1);
  9243. command.addHelpChild(help, helpArg0);
  9244. //clan disband
  9245. command.addHelpChild(help, command.newHelpLiteral("disband"));
  9246. //clan msg <message>
  9247. helpArg0 = command.newHelpLiteral("msg");
  9248. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9249. command.addHelpChild(help, helpArg0);
  9250. //clan mail <message>
  9251. helpArg0 = command.newHelpLiteral("mail");
  9252. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9253. command.addHelpChild(help, helpArg0);
  9254. //clan shout <message>
  9255. helpArg0 = command.newHelpLiteral("shout");
  9256. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9257. command.addHelpChild(help, helpArg0);
  9258. //clan deposit <money>
  9259. helpArg0 = command.newHelpLiteral("deposit");
  9260. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  9261. command.addHelpChild(help, helpArg0);
  9262. //clan withdraw <money>
  9263. helpArg0 = command.newHelpLiteral("withdraw");
  9264. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  9265. command.addHelpChild(help, helpArg0);
  9266. //clan party
  9267. command.addHelpChild(help, command.newHelpLiteral("party"));
  9268. //clan setspawn
  9269. command.addHelpChild(help, command.newHelpLiteral("setspawn"));
  9270. //clan spawn
  9271. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  9272. //clan list
  9273. command.addHelpChild(help, command.newHelpLiteral("list"));
  9274. command.addHelp(help);
  9275. help = command.newHelp("shop", "shop");
  9276. //shop create
  9277. command.addHelpChild(help, command.newHelpLiteral("create"));
  9278. //shop admin
  9279. command.addHelpChild(help, command.newHelpLiteral("admin"));
  9280. //shop remove
  9281. helpArg0 = command.newHelpLiteral("remove");
  9282. command.addHelpChild(helpArg0, command.newHelpLiteral("buy"));
  9283. command.addHelpChild(helpArg0, command.newHelpLiteral("sell"));
  9284. command.addHelpChild(help, helpArg0);
  9285. //shop buy <amount> <price>
  9286. helpArg0 = command.newHelpLiteral("buy");
  9287. helpArg1 = command.newHelpInt("amount", 0, 1000);
  9288. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  9289. command.addHelpChild(helpArg0, helpArg1);
  9290. command.addHelpChild(help, helpArg0);
  9291. //shop sell <amount> <price>
  9292. helpArg0 = command.newHelpLiteral("sell");
  9293. helpArg1 = command.newHelpInt("amount", 0, 1000);
  9294. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  9295. command.addHelpChild(helpArg0, helpArg1);
  9296. command.addHelpChild(help, helpArg0);
  9297. command.addHelp(help);
  9298. help = command.newHelp("setmessage", "setmessage");
  9299. //setmessage info
  9300. command.addHelpChild(help, command.newHelpLiteral("info"));
  9301. //setmessage join <message>
  9302. helpArg0 = command.newHelpLiteral("join");
  9303. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9304. command.addHelpChild(help, helpArg0);
  9305. //setmessage leave <message>
  9306. helpArg0 = command.newHelpLiteral("leave");
  9307. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9308. command.addHelpChild(help, helpArg0);
  9309. //setmessage delete <player>
  9310. helpArg0 = command.newHelpLiteral("delete");
  9311. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "setmessage.delete"));
  9312. command.addHelpChild(help, helpArg0);
  9313. command.addHelp(help);
  9314. help = command.newHelp("tip", "tip");
  9315. //tipp list
  9316. helpArg0 = command.newHelpLiteral("list");
  9317. command.addHelpChild(help, helpArg0);
  9318. //tipp add <tipp> <text>
  9319. helpArg0 = command.newHelpLiteral("add");
  9320. helpArg1 = command.newHelpString("tip", false);
  9321. command.addHelpChild(helpArg1, command.newHelpString("text", true));
  9322. command.addHelpChild(helpArg0, helpArg1);
  9323. command.addHelpChild(help, helpArg0);
  9324. //tipp remove <tipp>
  9325. helpArg0 = command.newHelpLiteral("remove");
  9326. command.addHelpChild(helpArg0, command.newHelpString("tip", false));
  9327. command.addHelpChild(help, helpArg0);
  9328. //tipp <tipp> [player]
  9329. helpArg0 = command.newHelpString("tip", false);
  9330. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9331. command.addHelpChild(help, helpArg0);
  9332. //tipp loop <tip> <boolean>
  9333. helpArg0 = command.newHelpLiteral("loop");
  9334. helpArg1 = command.newHelpString("tip", false);
  9335. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  9336. command.addHelpChild(helpArg0, helpArg1);
  9337. command.addHelpChild(help, helpArg0);
  9338. command.addHelp(help);
  9339. help = command.newHelp("ticket", "ticket");
  9340. //ticket new <message>
  9341. helpArg0 = command.newHelpLiteral("new");
  9342. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9343. command.addHelpChild(help, helpArg0);
  9344. //ticket stop <ticket-id>
  9345. helpArg0 = command.newHelpLiteral("stop");
  9346. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000));
  9347. command.addHelpChild(help, helpArg0);
  9348. //ticket list
  9349. command.addHelpChild(help, command.newHelpLiteral("list", "isSupporter"));
  9350. //ticket get [ticket-id]
  9351. helpArg0 = command.newHelpLiteral("get");
  9352. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9353. command.addHelpChild(help, helpArg0);
  9354. //ticket finish <ticket-id>
  9355. helpArg0 = command.newHelpLiteral("finish");
  9356. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9357. command.addHelpChild(help, helpArg0);
  9358. //ticket release <ticket-id>
  9359. helpArg0 = command.newHelpLiteral("release");
  9360. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9361. command.addHelpChild(help, helpArg0);
  9362. //ticket report <ticket-id>
  9363. helpArg0 = command.newHelpLiteral("report");
  9364. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9365. command.addHelpChild(help, helpArg0);
  9366. command.addHelp(help);
  9367. help = command.newHelp("yeet", "yeet");
  9368. command.addHelpChild(help, command.newHelpInt("strength", 1, 10000000000000));
  9369. command.addHelp(help);
  9370. command.sendHelp();
  9371. }
  9372. function commandhelp.add(command) {
  9373. help = command.newHelp(command, command);
  9374. command.addHelp(help);
  9375. return help;
  9376. }
  9377. function commandhelp.addChildString(command, arg0, bool) {
  9378. help = command.newHelp(command, command);
  9379. command.addHelpChild(help, command.newHelpString(arg0, bool));
  9380. command.addHelp(help);
  9381. }
  9382. function commandhelp.addChildPlayer(command) {
  9383. help = command.newHelp(command, command);
  9384. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9385. command.addHelp(help);
  9386. }
  9387. function commandhelp.addChildBool(command, arg0) {
  9388. help = command.newHelp(command, command);
  9389. command.addHelpChild(help, command.newHelpBool(arg0));
  9390. command.addHelp(help);
  9391. }
  9392. function commandhelp.addAlias(help, alias, command) {
  9393. helpAlias = command.newHelp(alias, command);
  9394. command.addHelpAlias(helpAlias, help);
  9395. command.addHelp(helpAlias);
  9396. }
  9397. function addStatsGameHelp(help, game) {
  9398. helpArg0 = command.newHelpLiteral(game);
  9399. command.addHelpChild(helpArg0, command.newHelpLiteral("top"));
  9400. command.addHelpChild(helpArg0, command.newHelpInt("rank", 1, 1000));
  9401. helpArg1 = command.newHelpSpecial("Player", "player");
  9402. command.addHelpChild(helpArg1, command.newHelpLiteral("remove", "stats.remove"));
  9403. command.addHelpChild(helpArg0, helpArg1);
  9404. command.addHelpChild(help, helpArg0);
  9405. }
  9406. function addDtAttributeAttributHelp(attribut) {
  9407. helpArg1 = command.newHelpLiteral(attribut);
  9408. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("mainhand"));
  9409. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("offhand"));
  9410. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("head"));
  9411. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("chest"));
  9412. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("legs"));
  9413. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("feet"));
  9414. return helpArg1;
  9415. }
  9416. function addDtAttributeSlotHelp(slot) {
  9417. helpArg2 = command.newHelpLiteral(slot);
  9418. helpArg3 = command.newHelpInt("double", 0, 1000);
  9419. command.addHelpChild(helpArg3, command.newHelpLiteral("ADDITION"));
  9420. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_BASE"));
  9421. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_TOTAL"));
  9422. command.addHelpChild(helpArg2, helpArg3);
  9423. return helpArg2;
  9424. }
  9425. function showJail(player_name) {
  9426. if(isOnline(player_name)) {
  9427. inv.open($jailmenu, read.player(player_name), "§8Gefängnis");
  9428. }
  9429. }
  9430. function isJailed(player_uuid) {
  9431. return(list.contains($jailed_list, player_uuid));
  9432. }
  9433. function command.register(command, description) {
  9434. command.add(command);
  9435. list.add($command_list, command);
  9436. map.add($command_map, command, description);
  9437. }
  9438. function command.registerAlias(alias, command) {
  9439. command.add(alias);
  9440. map.add($alias_map, alias, command);
  9441. }
  9442. //--------------------------------------------------
  9443. //Time-Utils
  9444. //--------------------------------------------------
  9445. //Spielzeit aller Online-Spieler
  9446. function playtime.getTotalOnlineMinutes() {
  9447. minutes = 0;
  9448. iter = list.iterator(players.toList());
  9449. while(hasNext(iter)) {
  9450. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  9451. }
  9452. return minutes;
  9453. }
  9454. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  9455. function playtime.getInterval(from, to) {
  9456. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  9457. databank.setLong(stmt, 1, from);
  9458. databank.setLong(stmt, 2, to);
  9459. result = databank.execute(stmt);
  9460. if(databank.next(result)) {
  9461. minutes = databank.getLong(result, 1) / 1000 / 60;
  9462. } else {
  9463. minutes = 0;
  9464. }
  9465. databank.close(result);
  9466. databank.close(stmt);
  9467. return minutes;
  9468. }
  9469. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  9470. function playtime.getTotal() {
  9471. minutes = playtime.getTotalOnlineMinutes();
  9472. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  9473. result = databank.execute(stmt);
  9474. if(databank.next(result)) {
  9475. minutes += databank.getLong(result, 1) / 1000 / 60;
  9476. }
  9477. databank.close(result);
  9478. databank.close(stmt);
  9479. return minutes;
  9480. }
  9481. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  9482. function playtime.getPlayerInterval(player_id, from, to) {
  9483. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  9484. databank.setInt(stmt, 1, player_id);
  9485. databank.setLong(stmt, 2, from);
  9486. databank.setLong(stmt, 3, to);
  9487. result = databank.execute(stmt);
  9488. if(databank.next(result)) {
  9489. minutes = databank.getLong(result, 1) / 1000 / 60;
  9490. } else {
  9491. minutes = 0;
  9492. }
  9493. databank.close(result);
  9494. databank.close(stmt);
  9495. return minutes;
  9496. }
  9497. function playtime.getPlayersPerInterval(from, to) {
  9498. set = set.new();
  9499. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  9500. databank.setLong(stmt, 1, from);
  9501. databank.setLong(stmt, 2, to);
  9502. result = databank.execute(stmt);
  9503. while(databank.next(result)) {
  9504. set.add(set, databank.getInt(result, 1));
  9505. }
  9506. databank.close(result);
  9507. databank.close(stmt);
  9508. return set.getSize(set);
  9509. }
  9510. function time.getYearDays(year) {
  9511. days = 365;
  9512. if(year % 4 == 0) {
  9513. days++;
  9514. }
  9515. return days;
  9516. }
  9517. function time.getMonthDays(month, year) {
  9518. days = month.getDays(month);
  9519. //Schaltjahre
  9520. if(month == 2 && year % 4 == 0) {
  9521. days++;
  9522. }
  9523. return days;
  9524. }
  9525. function time.getDaysBetween(day1, month1, year1, day2, month2, year2) {
  9526. d_days = 0;
  9527. m_days = 0;
  9528. y_days = 0;
  9529. y = 0;
  9530. m = 0;
  9531. d = 0;
  9532. //Volle Jahre
  9533. for(year = year1 + 1; year < year2; year++) {
  9534. y_days += time.getYearDays(year);
  9535. y++;
  9536. }
  9537. if(year1 == year2) {
  9538. //Volle Monate
  9539. for(month = month1 + 1; month < month2; month++) {
  9540. m_days += time.getMonthDays(month, year1);
  9541. }
  9542. //Volle Tage
  9543. if(month1 == month2) {
  9544. d_days = day2 - day1;
  9545. } else {
  9546. d_days += month.getDays(month1) - day1;
  9547. d_days += day2;
  9548. }
  9549. } else {
  9550. //Volle Monate
  9551. for(month = month1 + 1; month < 13; month++) {
  9552. m_days += time.getMonthDays(month, year1);
  9553. m++;
  9554. }
  9555. for(month = 1; month < month2; month++) {
  9556. m_days += time.getMonthDays(month, year2);
  9557. m++;
  9558. }
  9559. //Volle Tage
  9560. d_days += month.getDays(month1) - day1;
  9561. d_days += day2;
  9562. }
  9563. return y_days + m_days + d_days;
  9564. }
  9565. function month.add(month_index, shortname, days) {
  9566. $month_array[month_index, 0] = shortname;
  9567. $month_array[month_index, 1] = days;
  9568. }
  9569. function month.getShortName(month) {
  9570. return $month_array[month - 1, 0];
  9571. }
  9572. function month.getDays(month) {
  9573. return $month_array[month - 1, 1];
  9574. }
  9575. //--------------------------------------------------
  9576. //Player-Utils
  9577. //--------------------------------------------------
  9578. function player.hasClanInvitation(player_or_id, clan_id) {
  9579. if(isPlayer(player_or_id)) {
  9580. player_id = player.getId(player_or_id);
  9581. } else {
  9582. player_id = player_or_id;
  9583. }
  9584. iter = list.iterator($clan_invitations);
  9585. while(hasNext(iter)) {
  9586. invitation = next(iter);
  9587. p_id = invitation[0];
  9588. c_id = invitation[1];
  9589. if(player_id == p_id && clan_id == c_id) {
  9590. return true;
  9591. }
  9592. }
  9593. return false;
  9594. }
  9595. function player.addClanInvitation(player_id, clan_id) {
  9596. invitation = array.new(2);
  9597. invitation[0] = player_id;
  9598. invitation[1] = clan_id;
  9599. list.add($clan_invitations, invitation);
  9600. }
  9601. //--------------------------------------------------
  9602. //Party-Utils
  9603. //--------------------------------------------------
  9604. function party.invitePlayer(inviter, invitee) {
  9605. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  9606. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  9607. //Ansonsten neue Party-ID vergeben.
  9608. inviter_uuid = player.getUuid(inviter);
  9609. if(player.isInParty(inviter)) {
  9610. party_id = player.getPartyId(inviter);
  9611. } else {
  9612. party_id = map.get($party_invite_ids, inviter_uuid);
  9613. if(party_id == null) {
  9614. party_id = ++$party_counter;
  9615. }
  9616. }
  9617. if(invitee == null) {
  9618. return "inviteeNotOnline";
  9619. }
  9620. if(inviter == invitee) {
  9621. return "inviterEqualsInvitee";
  9622. }
  9623. if(player.isInParty(inviter)) {
  9624. if(!player.isPartyLeaderOrMod(inviter)) {
  9625. return "inviterNotPermitted";
  9626. }
  9627. }
  9628. if(player.isInParty(invitee)) {
  9629. return "inviteeAlreadyInParty";
  9630. }
  9631. invitee_uuid = player.getUuid(invitee);
  9632. list = map.get($party_invitations, invitee_uuid);
  9633. if(list == null) {
  9634. list = list.new();
  9635. map.add($party_invitations, invitee_uuid, list);
  9636. }
  9637. if(list.contains(list, inviter_uuid)) {
  9638. return "inviteeAlreadyInvited";
  9639. }
  9640. list.add(list, inviter_uuid);
  9641. list.add($deluuid, inviter_uuid);
  9642. list.add($delkeytime, time.getMillis());
  9643. list = map.get($delkeytimes, invitee_uuid);
  9644. if(list == null) {
  9645. list = list.new();
  9646. map.add($delkeytimes, invitee_uuid, list);
  9647. }
  9648. list.add(list, time.getMillis());
  9649. map.add($party_invite_ids, inviter_uuid, party_id);
  9650. inviter_name = player.getName(inviter);
  9651. msg.prefix(invitee, $prefix_party, concat(inviter_name, " invites you to a party."));
  9652. msg(invitee, " §5=> §rAccept ? ", text.click("[§aYes§r] ", concat("/party accept ", inviter_name)), text.click("[§cNo§r]", concat("/party deny ", inviter_name)));
  9653. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  9654. return true;
  9655. }
  9656. function party.kickPlayer(player, reason) {
  9657. party_id = player.getPartyId(player);
  9658. //Nachrichten
  9659. player_name = player.getName(player);
  9660. if(reason == "kick") {
  9661. message = concat("§r", player_name, " has been kicked out of the party.");
  9662. } else {
  9663. message = concat("§r", player_name, " has left the party.");
  9664. }
  9665. party.sendMessage(party_id, message);
  9666. player_uuid = player.getUuid(player_name);
  9667. //aus Partyliste entfernen
  9668. party_list = party.getList(party_id);
  9669. list.remove(party_list, player_uuid);
  9670. //ID und Rang entfernen
  9671. rank = player.getPartyRank(player);
  9672. player.delPartyRank(player);
  9673. player.delPartyId(player);
  9674. //Einladungen löschen
  9675. map.remove($party_invitations, player_uuid);
  9676. map.remove($delkeytimes, player_uuid);
  9677. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  9678. if(list.getSize(party_list) < 2) {
  9679. party.delete(party_id);
  9680. return;
  9681. }
  9682. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  9683. if(rank == "Leader") {
  9684. new_player = player.get(list.getIndex(party_list, 0));
  9685. player.setPartyRank(new_player, "Leader");
  9686. party.sendMessage(party_id, concat("§r", player.getName(new_player), " is now Leader."));
  9687. }
  9688. }
  9689. function party.sendMessage(party_id, message) {
  9690. iter = list.iterator(party.getList(party_id));
  9691. while(hasNext(iter)) {
  9692. msg.prefix(player.get(next(iter)), $prefix_party, message);
  9693. }
  9694. }
  9695. function party.delete(party_id) {
  9696. party.sendMessage(party_id, "Party disbanded.");
  9697. iter = list.iterator(party.getList(party_id));
  9698. while(hasNext(iter)) {
  9699. player = player.get(next(iter));
  9700. player.delPartyRank(player);
  9701. player.delPartyId(player);
  9702. }
  9703. }
  9704. @deletePartyInvitation
  9705. player_uuid = list.getIndex(deluuid, 0);
  9706. invitations = map.get(party_invitations, player_uuid);
  9707. keytimes = map.get(delkeytimes, player_uuid);
  9708. if(invitations != null) {
  9709. if(list.getSize(invitations) != 0) {
  9710. keytime = list.getIndex(delkeytime, 0);
  9711. keytime2 = list.getIndex(keytimes, 0);
  9712. list.remove(delkeytime, keytime);
  9713. if(keytime == keytime2) {
  9714. index = list.getIndexOf(keytimes, keytime2);
  9715. list.remove(keytimes, keytime2);
  9716. list.removeIndex(invitations, index);
  9717. }
  9718. }
  9719. }
  9720. goto("wait");
  9721. //--------------------------------------------------
  9722. //Plot-Utils
  9723. //--------------------------------------------------
  9724. function plot.registerMoveEvents(world) {
  9725. iter = plot.iterator(world);
  9726. while(hasNext(iter)) {
  9727. plot = next(iter);
  9728. if(plot.isCity(plot) || plot.isPlot(plot)) {
  9729. plot.setMoveEvent(plot, world);
  9730. }
  9731. }
  9732. }
  9733. function plot.delMoveEvent(plot) {
  9734. plot_id = plot.getId(plot);
  9735. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  9736. a = list.getIndex($plot_move_ids_list, i);
  9737. if(a[1] == plot_id) {
  9738. event.removeMoveData(a[0]);
  9739. list.removeIndex($plot_move_ids_list, i);
  9740. break;
  9741. }
  9742. }
  9743. }
  9744. function plot.setMoveEvent(plot, world) {
  9745. x1 = plot.getMinX(plot);
  9746. y1 = plot.getMinY(plot);
  9747. z1 = plot.getMinZ(plot);
  9748. x2 = plot.getMaxX(plot);
  9749. y2 = plot.getMaxY(plot);
  9750. z2 = plot.getMaxZ(plot);
  9751. loc1 = loc.new(world, x1, y1, z1);
  9752. loc2 = loc.new(world, x2, y2, z2);
  9753. move_id = event.addMoveData(loc1, loc2, 100, -1);
  9754. plot_id = plot.getId(plot);
  9755. a = array.new(2);
  9756. a[0] = move_id;
  9757. a[1] = plot_id;
  9758. list.add($plot_move_ids_list, a);
  9759. }
  9760. function plot.getPlotIdFromMoveId(move_id) {
  9761. iter = list.iterator($plot_move_ids_list);
  9762. while(hasNext(iter)) {
  9763. a = next(iter);
  9764. if(a[0] == move_id) {
  9765. return a[1];
  9766. }
  9767. }
  9768. return null;
  9769. }
  9770. function plot.getMoveIdFromPlotId(plot_id) {
  9771. iter = list.iterator($plot_move_ids_list);
  9772. while(hasNext(iter)) {
  9773. a = next(iter);
  9774. if(a[1] == plot_id) {
  9775. return a[0];
  9776. }
  9777. }
  9778. return null;
  9779. }
  9780. @checkForPlot
  9781. player_uuid = list.getIndex(check_for_plot_list, 0);
  9782. list.removeIndex(check_for_plot_list, 0);
  9783. player = player.get(player_uuid);
  9784. if(player == null) {
  9785. map.remove(actual_move_id, player_uuid);
  9786. goto("wait");
  9787. }
  9788. player_loc = entity.getLocation(player);
  9789. plot_list = plot.get(player_loc);
  9790. if(list.getSize(plot_list) == 0) {
  9791. map.remove(actual_move_id, player_uuid);
  9792. } else {
  9793. list.add(check_for_plot_list, player_uuid);
  9794. sgoto(100, "checkForPlot");
  9795. }
  9796. goto("wait");
  9797. function tpBottom(player) {
  9798. player_loc = entity.getLocation(player);
  9799. y = loc.getY(player_loc);
  9800. while(y > 0 && block.isAir(player_loc)) {
  9801. loc.setY(player_loc, y);
  9802. y--;
  9803. }
  9804. if(y <= 0) {
  9805. return;
  9806. }
  9807. loc.addY(player_loc, 1);
  9808. entity.teleport(player, player_loc);
  9809. }
  9810. //--------------------------------------------------
  9811. //Hawkeye-Utils
  9812. //--------------------------------------------------
  9813. function hawkeye.getStartIndices(string) {
  9814. a = array.new(5);
  9815. a[0] = text.indexOf(string, "e:", 0);
  9816. a[1] = text.indexOf(string, "p:", 0);
  9817. a[2] = text.indexOf(string, "r:", 0);
  9818. a[3] = text.indexOf(string, "t:", 0);
  9819. a[4] = text.length(string);
  9820. a = array.sort(a, true);
  9821. return a;
  9822. }
  9823. function hawkeye.getParStrings(string, indices) {
  9824. index = 0;
  9825. while(indices[index] == -1) {
  9826. index++;
  9827. }
  9828. start_index = indices[index];
  9829. if(start_index != 0) {
  9830. return null;
  9831. }
  9832. l = list.new();
  9833. while(++index < 5) {
  9834. next_index = indices[index];
  9835. if(index == 4) {
  9836. next_index++;
  9837. }
  9838. par_str = text.trim(text.subString(string, start_index, next_index - 1));
  9839. if(text.length(par_str) < 3) {
  9840. return null;
  9841. }
  9842. list.add(l, par_str);
  9843. start_index = next_index;
  9844. }
  9845. return l;
  9846. }
  9847. function hawkeye.processInput(args, player) {
  9848. string = text.concatList(args, " ", 1, list.getSize(args) - 1);
  9849. indices = hawkeye.getStartIndices(string);
  9850. par_strings = hawkeye.getParStrings(string, indices);
  9851. if(par_strings == null) {
  9852. return "False input parameters";
  9853. }
  9854. first_letters = set.new();
  9855. iter = list.iterator(par_strings);
  9856. while(hasNext(iter)) {
  9857. par_str = next(iter);
  9858. first_letter = text.subString(par_str, 0, 1);
  9859. if(set.contains(first_letters, first_letter)) {
  9860. return "Twice input parameters";
  9861. }
  9862. set.add(first_letters, first_letter);
  9863. par_str = text.subString(par_str, 2, text.length(par_str));
  9864. args_par_str = text.split(",", par_str);
  9865. if(first_letter == "e") {
  9866. events = list.new();
  9867. iter_args = list.iterator(args_par_str);
  9868. while(hasNext(iter_args)) {
  9869. list.add(events, next(iter_args));
  9870. }
  9871. }
  9872. elseif(first_letter == "p") {
  9873. players = list.new();
  9874. iter_args = list.iterator(args_par_str);
  9875. while(hasNext(iter_args)) {
  9876. list.add(players, next(iter_args));
  9877. }
  9878. }
  9879. elseif(first_letter == "r") {
  9880. if(list.getSize(args_par_str) > 1) {
  9881. return "False input at r:";
  9882. }
  9883. radius = list.getIndex(args_par_str, 0);
  9884. if(!isDouble(radius)) {
  9885. return "False input at r:";
  9886. }
  9887. }
  9888. elseif(first_letter == "t") {
  9889. if(list.getSize(args_par_str) > 3) {
  9890. return "False input at t:";
  9891. }
  9892. if(text.contains(par_str, "d")) {
  9893. d = true;
  9894. } else {
  9895. d = false;
  9896. }
  9897. time_span = 0;
  9898. iter_args = list.iterator(args_par_str);
  9899. while(hasNext(iter_args)) {
  9900. arg = next(iter_args);
  9901. if(text.contains(arg, "m")) {
  9902. minutes = text.convert(text.replace(arg, "m", ""));
  9903. if(!isDouble(minutes)) {
  9904. return "False input at t:";
  9905. }
  9906. time_span += minutes * 60;
  9907. }
  9908. elseif(text.contains(arg, "h")) {
  9909. hours = text.convert(text.replace(arg, "h", ""));
  9910. if(!isDouble(hours)) {
  9911. return "False input at t:";
  9912. }
  9913. time_span += hours * 60 * 60;
  9914. } else {
  9915. if(d) {
  9916. days = arg;
  9917. if(!isDouble(days)) {
  9918. return "False input at t:";
  9919. }
  9920. time_span += days * 24 * 60 * 60;
  9921. } else {
  9922. return "False input at t:";
  9923. }
  9924. }
  9925. }
  9926. timeTo = time.getMillis();
  9927. timeFrom = timeTo - time_span * 1000;
  9928. }
  9929. }
  9930. a = array.new(6);
  9931. a[0] = timeFrom;
  9932. a[1] = timeTo;
  9933. a[2] = entity.getLocation(player);
  9934. a[3] = radius;
  9935. a[4] = events;
  9936. a[5] = players;
  9937. return a;
  9938. }
  9939. function hawkeye.getAmountOfAll() {
  9940. stmt = databank.prepare("SELECT COUNT(*) FROM hawkeye;");
  9941. result = databank.execute(stmt);
  9942. if(databank.next(result)) {
  9943. amount = databank.getInt(result, 1);
  9944. } else {
  9945. amount = 0;
  9946. }
  9947. databank.close(result);
  9948. databank.close(stmt);
  9949. return amount;
  9950. }
  9951. function hawkeye.getEventName(event_id) {
  9952. return map.get($event_map, event_id);
  9953. }
  9954. //--------------------------------------------------
  9955. //Mailbox-Utils
  9956. //--------------------------------------------------
  9957. function mailbox.setItem(player_id, index, item) {
  9958. pfad = "scripts/configs/inv_data/mailbox";
  9959. config = config.new(pfad, player_id);
  9960. if(config.exists(config)) {
  9961. config.load(config);
  9962. }
  9963. item_string = text.item(item);
  9964. config.set(config, concat("item-", text.number(index)), item_string);
  9965. config.saveAsync(config);
  9966. }
  9967. function mailbox.getFreeIndex(player_id) {
  9968. pfad = "scripts/configs/inv_data/mailbox";
  9969. config = config.new(pfad, player_id);
  9970. if(config.exists(config)) {
  9971. config.load(config);
  9972. }
  9973. for(i = 0; i < 27; i++) {
  9974. item_string = config.getString(config, concat("item-", text.number(i)), "minecraft:air");
  9975. if(item_string == "minecraft:air") {
  9976. return i;
  9977. }
  9978. }
  9979. return -1;
  9980. }
  9981. function mailbox.show(to_player, player_id) {
  9982. pfad = "scripts/configs/inv_data/mailbox";
  9983. config = config.new(pfad, player_id);
  9984. if(config.exists(config)) {
  9985. config.load(config);
  9986. }
  9987. inv = inv.new("333333333333333333333333333");
  9988. for(i = 0; i < 27; i++) {
  9989. item_string = config.getString(config, concat("item-", text.number(i)), "minecraft:air");
  9990. item = read.item(item_string);
  9991. if(item == null) {
  9992. continue;
  9993. }
  9994. inv.setItem(inv, i, item);
  9995. }
  9996. inv.open(inv, to_player, concat("Mailbox from ", player.getNameFromId(player_id)));
  9997. }
  9998. function updateVoteInv() {
  9999. inv.setItem($vote_inv, 2, read.item("km:skill20", 1, "§aMore Homes", "§fCost: §e1 VP", concat("§fCounter: §e", text.number(getHomeBoost())), "Every 20 VP the possible homes increase by one. Counter automatically shrinks by one every day."));
  10000. }
  10001. function getAdditionalVoteHomes() {
  10002. return math.roundDown(getHomeBoost() / 20);
  10003. }
  10004. function getHomeBoost() {
  10005. config = getScriptVar("server_config");
  10006. return config.getDouble(config, "homeBoostPoints", 0);
  10007. }
  10008. function increaseHomeBoost() {
  10009. config = getScriptVar("server_config");
  10010. points = config.getDouble(config, "homeBoostPoints", 0) + 1;
  10011. config.set(config, "homeBoostPoints", points);
  10012. config.saveAsync(config);
  10013. updateVoteInv();
  10014. }
  10015. function decreaseHomeBoost() {
  10016. config = getScriptVar("server_config");
  10017. points = config.getDouble(config, "homeBoostPoints", 0) - 1;
  10018. if(points < 0) {
  10019. points = 0;
  10020. }
  10021. config.set(config, "homeBoostPoints", points);
  10022. config.saveAsync(config);
  10023. updateVoteInv();
  10024. }