commands.txt 297 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558
  1. waitfor(5); //Verhindert Endlos-Schleife durch "/start commands"
  2. setCommandHelps();
  3. command.clear();
  4. //Games
  5. command.add("hack");
  6. command.add("nextplayer");
  7. command.add("invstats");
  8. command.add("topinvstats");
  9. command.add("removeinvstats");
  10. command.add("sfstats");
  11. command.add("topsfstats");
  12. command.add("removesfstats");
  13. command.add("questanswer");
  14. command.add("infopoint1");
  15. command.add("infopoint2");
  16. command.add("infopoint3");
  17. command.add("infopoint4");
  18. command.add("infopoint5");
  19. command.add("infopoint6");
  20. command.add("infopoint7");
  21. command.add("infopoint8");
  22. command.add("infopoint9");
  23. command.add("infopoint10");
  24. command.add("infopoint11");
  25. //Vanilla überschreiben
  26. command.add("help");
  27. command.add("butcher");
  28. command.add("yeet");
  29. alias_map = map.new();
  30. command_list = list.new();
  31. command_map = map.new();
  32. command.register("afk", "Toggles afk");
  33. command.register("allsounds", "Plays all sounds");
  34. command.register("answer", "Answers the last private message");
  35. command.register("ass", "Armor Stand Signs");
  36. command.register("back", "Teleports to the last position");
  37. command.register("ban", "Bans a player");
  38. command.register("boost", "Boosts you up to the clouds");
  39. command.register("bug", "Report a bug");
  40. command.register("clan", "Clan-Commands");
  41. command.register("cli", "Clears items in a radius");
  42. command.register("color", "Shows all colors");
  43. command.register("coords", "Shows infos for the targeted block");
  44. command.register("copyisland", "Copyisland-Commands");
  45. command.register("databank", "Databank-Commands");
  46. command.register("datatools", "Datatools-Commands");
  47. command.register("enderchest", "Shows enderchests");
  48. command.register("error", "Error-Logger");
  49. command.register("errordebug", "Debug-Logger");
  50. command.register("feed", "Fills hunger bar");
  51. command.register("fly", "Toggles fly");
  52. command.register("friend", "Friend-Commands");
  53. command.register("game", "marvs minigame shit");
  54. command.register("gamemode", "Change gamemode");
  55. command.register("gamerule", "Manage gamerules");
  56. command.register("games", "Teleports to games-spawn");
  57. command.register("giveup", "Giveup a quest");
  58. command.register("grow", "Grow seeds");
  59. command.register("hat", "Be fame with a new hat");
  60. command.register("hawkeye", "Rollback griefings");
  61. command.register("head", "Gives you a player's head");
  62. command.register("heal", "Heals, fills hunger bar and remove effects");
  63. command.register("home", "Manage your homes");
  64. command.register("live", "Toggles Live-Mode");
  65. command.register("lag", "Executes a lag test");
  66. command.register("leave", "Leave a minigame");
  67. command.register("human", "Human-Commands");
  68. command.register("inv", "Inv-Commands");
  69. command.register("iteminfo", "Returns information about an item");
  70. command.register("jail", "Sends a player to jail");
  71. command.register("kick", "Kicks a player");
  72. command.register("lastseen", "Shows the last players online");
  73. command.register("lightning", "Summons a lightning_bolt");
  74. command.register("list", "List all players online");
  75. command.register("mail", "Mail-Commands");
  76. command.register("memory", "Returns RAM-usage");
  77. command.register("msg", "Send a private message");
  78. command.register("mute", "Mutes a player");
  79. command.register("news", "Send Push-News to all players");
  80. command.register("nickname", "Set a nickname");
  81. command.register("nowb", "Sends no 'is back' message if afk");
  82. command.register("party", "Party-Commands");
  83. command.register("perm", "Manage permissions");
  84. command.register("plant", "Plant seeds");
  85. command.register("playtime", "Shows your playtime");
  86. command.register("plot", "Plot-Commands");
  87. command.register("plough", "Plough dirt around you");
  88. command.register("pvp", "Toggles pvp");
  89. command.register("quest", "Quest-Commands");
  90. command.register("rank", "Shows your available ranks");
  91. command.register("repair", "Repairs your item in mainhand");
  92. command.register("report", "Report whatever you want");
  93. command.register("ride", "Rides an entity");
  94. command.register("say", "[Server] chat message");
  95. command.register("script", "Script-Commands");
  96. command.register("seen", "Returns the last date the player was online");
  97. command.register("senditem", "Sends an itemstack to another player");
  98. command.register("setmessage", "Set your join/leave-message");
  99. command.register("setrank", "");
  100. command.register("setservermessage", "Sets the server-message in the serverlist");
  101. command.register("setspawn", "Changes a spawn");
  102. command.register("shop", "Shop-Commands");
  103. command.register("sign", "Edit a sign");
  104. command.register("silentban", "Silently bans a player");
  105. command.register("silentjoin", "Toggled Silentjoins");
  106. command.register("silentkick", "Silently kicks a player");
  107. command.register("skills", "Shows all skills");
  108. command.register("spawn", "Teleports to spawn");
  109. command.register("speed", "Sets your speed");
  110. command.register("start", "Starts a script");
  111. command.register("startgame", "Reduces start-countdown for a minigame");
  112. command.register("stats", "Statistics-Commands");
  113. command.register("stopadventure", "Stops an adventure");
  114. command.register("story", "Teleports to story-spawn");
  115. command.register("suicide", "Kill yourself");
  116. command.register("teleport", "Teleports a player to a player");
  117. command.register("tempban", "Bans a player temporarly");
  118. command.register("tempfly", "Let a player temporarly fly");
  119. command.register("ticket", "Ticket-Commands");
  120. command.register("time", "Time-Commands");
  121. command.register("tip", "Tip-Commands");
  122. command.register("top", "Teleports to to highest point at the current position");
  123. command.register("tpa", "Sends a teleport request to a player");
  124. command.register("tpahere", "Sends a teleport request to a player");
  125. command.register("tpaccept", "Accepts a teleport request");
  126. command.register("tpaccepthere", "Accepts a teleport request");
  127. command.register("tppos", "Teleports to coordinates");
  128. command.register("unban", "Unbans a player");
  129. command.register("unjail", "Releases a player from jail");
  130. command.register("unmute", "Unmutes a player");
  131. command.register("user", "Returns infos about a user");
  132. command.register("vanish", "Vanishes a player");
  133. command.register("var", "Reads variables from a scripts");
  134. //command.register("vote", "Show vote rewars");
  135. command.register("voxel", "Set radius for voxel");
  136. command.register("warn", "Warns a player");
  137. command.register("warp", "Warp-Commands");
  138. command.register("weather", "Weather-Commands");
  139. command.register("world", "World-Commands");
  140. command.register("yeet", "Throws the Player");
  141. command.registerAlias("afklo", "afk");
  142. command.registerAlias("itemdb", "iteminfo");
  143. command.registerAlias("ha", "hawkeye");
  144. command.registerAlias("skull", "head");
  145. command.registerAlias("skick", "silentkick");
  146. command.registerAlias("sban", "silentban");
  147. command.registerAlias("tell", "msg");
  148. command.registerAlias("r", "answer");
  149. command.registerAlias("pardon", "unban");
  150. command.registerAlias("mimimi", "help");
  151. command.registerAlias("ci", "copyisland");
  152. command.registerAlias("mem", "memory");
  153. command.registerAlias("tp", "teleport");
  154. command.registerAlias("homes", "home");
  155. command.registerAlias("colour", "color");
  156. command.registerAlias("gm", "gamemode");
  157. command.registerAlias("p", "plot");
  158. command.registerAlias("coord", "coords");
  159. command.registerAlias("dt", "datatools");
  160. command.registerAlias("f", "friend");
  161. command.registerAlias("l", "leave");
  162. command.registerAlias("v", "vanish");
  163. command.registerAlias("hub", "leave");
  164. command.registerAlias("fuckit", "giveup");
  165. command.registerAlias("ram", "memory");
  166. command.registerAlias("thor", "lightning");
  167. composter_par = particle.get("composter");
  168. wall_signs_tag = block.getTag("minecraft:wall_signs");
  169. beds_tag = block.getTag("minecraft:beds");
  170. chest_tag = block.getTag("forge:chests");
  171. sign_tag = block.getTag("minecraft:signs");
  172. dirt_tag = block.getTag("forge:dirt");
  173. gamesspawn = world.getGamesSpawn();
  174. serverspawn = world.getServerSpawn();
  175. prefix_clan = "§2Clan";
  176. prefix_tips = "§eTips";
  177. prefix_lock = "§eLock";
  178. prefix_hawkeye = "§cHawkeye";
  179. prefix_commands = "§6Commands";
  180. prefix_friends = "§5Friends";
  181. prefix_world = "§bWorld";
  182. prefix_jail = "§5Jail";
  183. prefix_quest = "§dQuest";
  184. prefix_perms = "§6Perms";
  185. prefix_datatools = "§6DataTools";
  186. prefix_human = "§6Human";
  187. prefix_plot = "§dPlots";
  188. prefix_party = "§5Party";
  189. prefix_skill = "§2Skill";
  190. party_ids = getScriptVar("party_ids");
  191. if(party_ids == null) {
  192. party_ids = map.new();
  193. setScriptVar("party_ids", map.new()); //Player, partyid
  194. }
  195. party_lists = getScriptVar("party_lists");
  196. if(party_lists == null) {
  197. party_lists = map.new();
  198. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  199. }
  200. party_ranks = getScriptVar("party_ranks");
  201. if(party_ranks == null) {
  202. party_ranks = map.new();
  203. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  204. }
  205. party_counter = getScriptVar("party_counter");
  206. if(party_counter == null) {
  207. party_counter = 0;
  208. setScriptVar("party_counter", party_counter); //Player, partyid
  209. }
  210. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  211. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  212. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  213. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  214. party_invite_ids = map.new(); //Player_uuid, partyid
  215. list = getScriptVar("block_commands_list");
  216. if(list == null) {
  217. list = list.new();
  218. setScriptVar("block_commands_list", list);
  219. }
  220. live_set = getScriptVar("live_set");
  221. if(live_set == null) {
  222. live_set = set.new();
  223. setScriptVar("live_set", live_set);
  224. } else {
  225. //Register all Live-Players again
  226. iter = set.iterator(live_set);
  227. while(hasNext(iter)) {
  228. player = player.get(next(iter));
  229. if(player != null) {
  230. player.setLive(player, true);
  231. }
  232. }
  233. }
  234. afk_loop_active = false;
  235. afk_map = getScriptVar("afk_map");
  236. if(afk_map == null) {
  237. afk_map = map.new();
  238. setScriptVar("afk_map", afk_map);
  239. } else {
  240. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  241. iter = map.iterator(afk_map);
  242. while(hasNext(iter)) {
  243. element = next(iter);
  244. player = player.get(map.getKey(element));
  245. if(player != null) {
  246. player.setAfk(player, true);
  247. afk_loop_active = true;
  248. }
  249. }
  250. }
  251. if(afk_loop_active) {
  252. sgoto(30, "afk_loop");
  253. }
  254. setScriptVar("ha_data_lists", map.new());
  255. setScriptVar("ha_undo_lists", map.new());
  256. money.setBoostFactor(1);
  257. sgoto(10, "coordsloop");
  258. sgoto(1200, "afk_checker_loop");
  259. lag_list = list.new();
  260. clan_invitations = list.new();
  261. friend_requests = map.new();
  262. lock_chests = map.new();
  263. chatbuffer = map.new();
  264. tpa_request = list.new();
  265. answer_map = map.new();
  266. warninglist = list.new();
  267. plotpos1 = map.new();
  268. plotpos2 = map.new();
  269. invseeids = set.new();
  270. ride_set = set.new();
  271. fields = set.new();
  272. vanish_set = set.new();
  273. skip_night_set = set.new();
  274. afk_checker_map = map.new();
  275. butcher_set = set.new();
  276. set.add(butcher_set, "zombie");
  277. set.add(butcher_set, "zombie_villager");
  278. set.add(butcher_set, "husk");
  279. set.add(butcher_set, "skeleton");
  280. set.add(butcher_set, "creeper");
  281. set.add(butcher_set, "enderman");
  282. set.add(butcher_set, "pillager");
  283. set.add(butcher_set, "spider");
  284. set.add(butcher_set, "phantom");
  285. set.add(butcher_set, "witch");
  286. set.add(butcher_set, "stray");
  287. set.add(butcher_set, "drowned");
  288. set.add(butcher_set, "wither");
  289. set.add(butcher_set, "silverfish");
  290. set.add(butcher_set, "zombified_piglin");
  291. rank_array = array.new(25, 2);
  292. //Playtime
  293. rank_array[0, 0] = "rank.owner";
  294. rank_array[0, 1] = "4Owner";
  295. rank_array[1, 0] = "rank.admin";
  296. rank_array[1, 1] = "cAdmin";
  297. rank_array[2, 0] = "rank.moderator";
  298. rank_array[2, 1] = "9Moderator";
  299. rank_array[3, 0] = "rank.supporter";
  300. rank_array[3, 1] = "bSupporter";
  301. rank_array[4, 0] = "rank.dev";
  302. rank_array[4, 1] = "5Developer";
  303. rank_array[5, 0] = "rank.builder";
  304. rank_array[5, 1] = "5Builder";
  305. rank_array[6, 0] = "rank.vip";
  306. rank_array[6, 1] = "dVIP";
  307. rank_array[7, 0] = "rank.influencer";
  308. rank_array[7, 1] = "dInfluencer";
  309. rank_array[8, 0] = "rank.sponsor";
  310. rank_array[8, 1] = "dSponsor";
  311. rank_array[9, 0] = "rank.legend";
  312. rank_array[9, 1] = "2Legend";
  313. rank_array[10, 0] = "rank.pioneer";
  314. rank_array[10, 1] = "2Pioneer";
  315. rank_array[11, 0] = "rank.lord";
  316. rank_array[11, 1] = "2Lord";
  317. rank_array[12, 0] = "rank.altruist";
  318. rank_array[12, 1] = "2Altruist";
  319. rank_array[13, 0] = "major";
  320. rank_array[13, 1] = "2Major";
  321. rank_array[14, 0] = "rank.frequenter";
  322. rank_array[14, 1] = "6Frequenter";
  323. rank_array[15, 0] = "rank.explorer";
  324. rank_array[15, 1] = "6Explorer";
  325. rank_array[16, 0] = "rank.chief";
  326. rank_array[16, 1] = "6Chief";
  327. rank_array[17, 0] = "rank.friend";
  328. rank_array[17, 1] = "6Friend";
  329. rank_array[18, 0] = "rank.colonizer";
  330. rank_array[18, 1] = "6Colonizer";
  331. rank_array[19, 0] = "rank.newcomer";
  332. rank_array[19, 1] = "eNewcomer";
  333. rank_array[20, 0] = "rank.adventurer";
  334. rank_array[20, 1] = "eAdventurer";
  335. rank_array[21, 0] = "rank.commander";
  336. rank_array[21, 1] = "eCommander";
  337. rank_array[22, 0] = "rank.volunteer";
  338. rank_array[22, 1] = "eVolunteer";
  339. rank_array[23, 0] = "rank.settler";
  340. rank_array[23, 1] = "eSettler";
  341. rank_array[24, 0] = "rank.user";
  342. rank_array[24, 1] = "3User";
  343. setScriptVar("ranks", rank_array);
  344. month_array = array.new(12, 2);
  345. month.add(0, "Jan", 31);
  346. month.add(1, "Feb", 28);
  347. month.add(2, "Mar", 31);
  348. month.add(3, "Apr", 30);
  349. month.add(4, "May", 31);
  350. month.add(5, "Jun", 30);
  351. month.add(6, "Jul", 31);
  352. month.add(7, "Aug", 31);
  353. month.add(8, "Sep", 30);
  354. month.add(9, "Oct", 31);
  355. month.add(10, "Nov", 30);
  356. month.add(11, "Dec", 31);
  357. jailed_list = list.new();
  358. ironbars = read.item("minecraft:iron_bars", 1, "§r");
  359. jailmenu = inv.new("222222222");
  360. inv.setItem(jailmenu, 0, ironbars);
  361. inv.setItem(jailmenu, 1, ironbars);
  362. inv.setItem(jailmenu, 2, ironbars);
  363. inv.setItem(jailmenu, 3, ironbars);
  364. inv.setItem(jailmenu, 4, ironbars);
  365. inv.setItem(jailmenu, 5, ironbars);
  366. inv.setItem(jailmenu, 6, ironbars);
  367. inv.setItem(jailmenu, 7, ironbars);
  368. inv.setItem(jailmenu, 8, ironbars);
  369. skip_night_inv = inv.new("002020200");
  370. inv.setItem(skip_night_inv, 0, read.item("km:check_green", 1, "§fYes"));
  371. inv.setItem(skip_night_inv, 1, read.item("km:gem_stone", 1, "§fI don't care"));
  372. inv.setItem(skip_night_inv, 2, read.item("km:cross_red", 1, "§fNo"));
  373. skip_night_inv_id = inv.getId(skip_night_inv);
  374. vote_inv = inv.new("222222222");
  375. inv.setItem(vote_inv, 0, read.item("km:coin_gold", 1, "§fMoneyBooster", "Doubles incoming money for 5 minutes.", "Cost: 30 VP"));
  376. vote_inv_id = inv.getId(vote_inv);
  377. ha_tool = read.item("km:guild_block", 1, "§cHawkeye Tool", "Hawkeye Tool");
  378. consoleCommands = set.new();
  379. set.add(consoleCommands, "answer");
  380. set.add(consoleCommands, "ban");
  381. set.add(consoleCommands, "kick");
  382. set.add(consoleCommands, "lastseen");
  383. set.add(consoleCommands, "list");
  384. set.add(consoleCommands, "msg");
  385. set.add(consoleCommands, "say");
  386. set.add(consoleCommands, "silentban");
  387. set.add(consoleCommands, "silentkick");
  388. set.add(consoleCommands, "start");
  389. set.add(consoleCommands, "tempban");
  390. set.add(consoleCommands, "tempfly");
  391. set.add(consoleCommands, "unban");
  392. 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);"));
  393. 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);"));
  394. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS tipps (tipp_key VARCHAR(20) PRIMARY KEY, tipp_value VARCHAR(255));"));
  395. 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);"));
  396. 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);"));
  397. last_skip_night = 0;
  398. skip_night_started = false;
  399. jail_loop_active = false;
  400. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  401. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  402. check_for_plot_list = list.new();
  403. plot.registerMoveEvents(world.get("overworld"));
  404. plot.registerMoveEvents(world.get("the_nether"));
  405. plot.registerMoveEvents(world.get("the_end"));
  406. plot.registerMoveEvents(world.get("creative"));
  407. event.load("entity_click");
  408. event.load("player_move");
  409. event.load("inv_click");
  410. event.load("inv_close");
  411. event.load("function_key");
  412. event.load("missing_perm");
  413. event.load("missing_command");
  414. event.load("custom_command");
  415. event.load("block_click");
  416. event.load("player_logout");
  417. event.load("player_data_tick");
  418. msg("dev", "§bCommands §rloaded.");
  419. @wait
  420. wait();
  421. if(event == "custom_command") {
  422. //Permission-Check
  423. command = text.toLowerCase(command);
  424. command = map.getOrDefault(alias_map, command, command);
  425. size = list.getSize(args);
  426. if(player == null) {
  427. sender = "SERVER";
  428. sender_name = "SERVER";
  429. if(set.contains(consoleCommands, command)) {
  430. ignoreGoto(command);
  431. goto("wait");
  432. }
  433. msg("SERVER", "Sorry. Not a console-command yet. Go and tell marvinius.");
  434. goto("wait");
  435. }
  436. if(!perm.has(player, command)) {
  437. perm.no(player, command);
  438. goto("wait");
  439. }
  440. sender = player;
  441. sender_name = player.getName(player);
  442. affectedname = player.getName(player);
  443. player_name = player.getName(player);
  444. affectedplayer = player;
  445. if(command != "leave") {
  446. if(player.isCommandBlocked(player)) {
  447. msg.prefix(player, prefix_commands, "§rThe most important rule in competition: Sabotage!");
  448. goto("wait");
  449. }
  450. }
  451. ignoreGoto(command);
  452. goto("wait");
  453. }
  454. if(event == "player_move") {
  455. player_uuid = player.getUuid(player);
  456. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  457. if(last_move_id == id) {
  458. goto("wait");
  459. }
  460. world = loc.getWorld(entity.getLocation(player));
  461. plot_id = plot.getPlotIdFromMoveId(id);
  462. plot = plot.getFromId(plot_id, world);
  463. if(plot == null) {
  464. goto("wait");
  465. }
  466. if(plot.isCity(plot)) {
  467. color_code = "§c";
  468. } else {
  469. color_code = "§e";
  470. }
  471. title.reset(player);
  472. title.setSub(player, concat("You entered ", color_code, plot.getName(plot), "."));
  473. title.send(player, "");
  474. map.add(actual_move_id, player_uuid, id);
  475. list.add(check_for_plot_list, player_uuid);
  476. sgoto(100, "checkForPlot");
  477. goto("wait");
  478. }
  479. if(event == "block_click") {
  480. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  481. if(action == "right" && !word.isSurvName(world_name) && block.hasTag(beds_tag, block)) {
  482. cancel = true;
  483. goto("wait");
  484. }
  485. if(perm.has(player, "plot.bypass")) {
  486. goto("wait");
  487. }
  488. if(block.hasTag(chest_tag, block)) {
  489. sign_loc = loc.mod(block_loc, 0, 1, 0);
  490. if(isAWallSign(sign_loc) && isAdminShop(sign_loc)) {
  491. cancel = true;
  492. goto("wait");
  493. }
  494. if(plot.check(block_loc, player, 16, true)) {
  495. cancel = false;
  496. goto("wait");
  497. }
  498. player_id = player.getId(player);
  499. player_uuid = player.getUuid(player);
  500. list = plot.get(block_loc);
  501. if(list.getSize(list) > 0) {
  502. iter = list.iterator(list);
  503. access = false;
  504. while(hasNext(iter)) {
  505. plot = next(iter);
  506. canOpenChests = plot.canOpenChests(plot, player_id);
  507. if(plot.isSub(plot)) {
  508. if(canOpenChests) {
  509. cancel = false;
  510. goto("wait");
  511. }
  512. cancel = true;
  513. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  514. goto("wait");
  515. }
  516. if(canOpenChests) {
  517. access = true;
  518. cancel = false;
  519. }
  520. }
  521. if(!access) {
  522. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  523. }
  524. }
  525. goto("wait");
  526. }
  527. if(action == "right" && block.hasTag(sign_tag, block)) {
  528. line0 = block.getSign(block_loc, 0);
  529. if(line0 != "§3[§bFree Plot§3]") {
  530. goto("wait");
  531. }
  532. price = text.convert(removeFormat(block.getSign(block_loc, 1)));
  533. if(!isDouble(price) || price < 0) {
  534. msg.prefix(player, prefix_plot, "Positive number expected.");
  535. goto("wait");
  536. }
  537. p_id = text.convert(block.getSign(block_loc, 3));
  538. if(!isDouble(p_id)) {
  539. msg.prefix(player, prefix_plot, "Invalid city owner.");
  540. goto("wait");
  541. }
  542. if(player.getNameFromId(p_id) == null) {
  543. msg.prefix(player, prefix_plot, "Invalid city owner.");
  544. goto("wait");
  545. }
  546. if(!hasEnoughMoney(player, price)) {
  547. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(price), "§r snuvis for this."));
  548. goto("wait");
  549. }
  550. plot_list = plot.get(block_loc);
  551. iter = list.iterator(plot_list);
  552. while(hasNext(iter)) {
  553. plot = next(iter);
  554. if(plot.isFree(plot)) {
  555. break;
  556. }
  557. }
  558. if(!plot.isFree(plot)) {
  559. msg.prefix(player, prefix_plot, "You aren't on a free plot.");
  560. goto("wait");
  561. }
  562. //Plot claimen
  563. subMoney(player, price);
  564. addMoney(p_id, price);
  565. plot.setSub(plot, true);
  566. plot.setLeader(plot, player.getId(player));
  567. player_name = player.getName(player);
  568. plot.addPlayer(plot, player_name);
  569. plot.setName(plot, concat(player_name, "'s plot"));
  570. msg.prefix(player, prefix_plot, concat("Plot claimed. Spent §6", text.number(price), "§r snuvis."));
  571. goto("wait");
  572. }
  573. goto("wait");
  574. }
  575. if(event == "missing_command") {
  576. if(player == null) { //--> Server
  577. player = "SERVER";
  578. if(command_name == null) {
  579. msg.prefix(player, prefix_commands, concat("Missing Command"));
  580. goto("wait");
  581. }
  582. }
  583. msg.prefix(player, prefix_commands, concat("No command ", command_name));
  584. goto("wait");
  585. }
  586. if(event == "player_logout") {
  587. map.remove(afk_checker_map, uuid);
  588. player.setAfk(player, false);
  589. list.remove(jailed_list, player.getUuid(player));
  590. if(player.hasQuest2(player)) {
  591. script_id = quest.getFromPlayer(player);
  592. script = script.getFromId(script_id);
  593. if(script == null) {
  594. snuvi.debug("Player logged out with corrupt quest");
  595. quest.removePlayer(player); //in case of corrupt quest
  596. goto("wait");
  597. }
  598. setScriptVar("player", player);
  599. script.callEvent("quest_term", script);
  600. quest.term(script, player);
  601. }
  602. if(player.isInParty(player)) {
  603. party.kickPlayer(player, "logout");
  604. }
  605. goto("wait");
  606. }
  607. if(event == "missing_perm") {
  608. if(player == null) { //--> Server
  609. player = "SERVER";
  610. if(command_name == null) {
  611. msg.prefix(player, prefix_commands, concat("Missing Perm"));
  612. goto("wait");
  613. }
  614. }
  615. perm.no(player, command_name);
  616. goto("wait");
  617. }
  618. if(event == "entity_click") {
  619. player_uuid = player.getUuid(player);
  620. if(set.contains(ride_set, player_uuid)) {
  621. set.remove(ride_set, player_uuid);
  622. entity.mount(player, entity);
  623. }
  624. goto("wait");
  625. }
  626. if(event == "inv_click") {
  627. //inv see
  628. if(set.contains(invseeids, inv_id)) {
  629. //On inv_click in an invsee inventory
  630. split_list = text.split(" ", inv_name);
  631. p_name = list.getIndex(split_list, 2);
  632. p = read.player(p_name);
  633. if(p == null) {
  634. inv.close(player);
  635. 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.");
  636. goto("wait");
  637. }
  638. //Transmit item
  639. player.removeItem(p, item);
  640. player.safeGiveItem(player, item);
  641. inv.setItem(inv, inv_slot, read.item("minecraft:air"));
  642. inv.update(player);
  643. goto("wait");
  644. }
  645. if(inv_id == vote_inv_id) {
  646. if(inv_slot == 0) {
  647. if(money.getBoostFactor() > 1) {
  648. msg.prefix(player, prefix_commands, "Boost already active.");
  649. goto("wait");
  650. }
  651. vp = player.getVotePoints(player);
  652. if(vp < 30) {
  653. msg.prefix(player, prefix_commands, "Not enough vote points.");
  654. goto("wait");
  655. }
  656. player.setVotePoints(player, vp - 30);
  657. msg("online", "§6§k#§rMoneyBooster activated!!!§6§k#");
  658. money.setBoostFactor(2);
  659. sgoto(6000, "resetMoneyBoost");
  660. }
  661. goto("wait");
  662. }
  663. if(inv_id == skip_night_inv_id) {
  664. world = world.getOverWorld();
  665. world_time = world.getTime(world);
  666. while(world_time >= 24000) {
  667. world_time -= 24000;
  668. }
  669. if(world_time <= 12500) {
  670. goto("wait");
  671. }
  672. player_uuid = player.getUuid(player);
  673. if(set.contains(skip_night_set, player_uuid)) {
  674. msg.prefix(player, prefix_commands, "Already voted.");
  675. goto("wait");
  676. }
  677. set.add(skip_night_set, player_uuid);
  678. if(!skip_night_started) {
  679. world.addTimedStatus(world, 49, 600, "Skip night?");
  680. sendMessageToWorld(world, "[§6Commands§r] Skip night? Vote within 15 seconds.");
  681. skip_night_counter = 15;
  682. skip_night_yes = 0;
  683. skip_night_no = 0;
  684. skip_night_no_care = 0;
  685. skip_night_started = true;
  686. sgoto(20, "skip_night_loop");
  687. }
  688. if(inv_slot == 0) {
  689. skip_night_yes++;
  690. inv.close(player);
  691. goto("wait");
  692. }
  693. if(inv_slot == 1) {
  694. skip_night_no_care++;
  695. inv.close(player);
  696. goto("wait");
  697. }
  698. if(inv_slot == 2) {
  699. skip_night_no++;
  700. inv.close(player);
  701. goto("wait");
  702. }
  703. goto("wait");
  704. }
  705. if(inv_name == "Skills") {
  706. if(item.getType(item) == "minecraft:air") {
  707. goto("wait");
  708. }
  709. skill_name = removeFormat(item.getName(item));
  710. tech_name = skill.getTechName(skill_name);
  711. //Toggle skill
  712. if(skill.isToggleable(skill_name)) {
  713. if(skill.isActivated(player, tech_name)) {
  714. skill.setActivated(player, tech_name, false);
  715. } else {
  716. skill.setActivated(player, tech_name, true);
  717. }
  718. inv.setItem(inv, inv_slot, skill.getShopItem(player, tech_name));
  719. inv.update(player);
  720. goto("wait");
  721. }
  722. //Activate skill
  723. if(skill.isActive(skill_name)) {
  724. player_loc = entity.getLocation(player);
  725. world_name = world.getName(loc.getWorld(player_loc));
  726. if(!word.isSurvName(world_name)) {
  727. msg.prefix(player, prefix_skill, "You can't use this in this world.");
  728. goto("wait");
  729. }
  730. if(tech_name == "skill.timber") {
  731. duration = data.getTimer(player, "timber");
  732. if(duration > 0) {
  733. msg.prefix(player, prefix_skill, "Skill already active.");
  734. goto("wait");
  735. }
  736. amount = skill.getAmount(player, "skill.timber");
  737. if(amount > 0) {
  738. status.addTimed(player, 50, 1200, "Timber");
  739. data.setTimer(player, "timber", 1200);
  740. new_amount = amount - 1;
  741. skill.setAmount(player, "skill.timber", new_amount);
  742. msg.prefix(player, prefix_skill, concat("Used Timber. New amount: ", text.number(new_amount)));
  743. }
  744. goto("wait");
  745. }
  746. if(tech_name == "skill.fly10min") {
  747. duration = data.getTimer(player, "fly");
  748. if(duration > 0) {
  749. msg.prefix(player, prefix_skill, "Skill already active.");
  750. goto("wait");
  751. }
  752. amount = skill.getAmount(player, "skill.fly10min");
  753. if(amount > 0) {
  754. status.addTimed(player, 50, 12000, "Fly");
  755. data.setTimer(player, "fly", 12000);
  756. player.setFly(player, true);
  757. new_amount = amount - 1;
  758. skill.setAmount(player, "skill.fly10min", new_amount);
  759. msg.prefix(player, prefix_skill, concat("Used Fly 10min. New amount: ", text.number(new_amount)));
  760. }
  761. goto("wait");
  762. }
  763. if(tech_name == "skill.grow") {
  764. amount = skill.getAmount(player, "skill.grow");
  765. if(amount > 0) {
  766. grow(player_loc, 5);
  767. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  768. new_amount = amount - 1;
  769. skill.setAmount(player, "skill.grow", new_amount);
  770. msg.prefix(player, prefix_skill, concat("Used Grow. New amount: ", text.number(new_amount)));
  771. }
  772. goto("wait");
  773. }
  774. if(tech_name == "skill.haste") {
  775. amount = skill.getAmount(player, "skill.haste");
  776. if(amount > 0) {
  777. entity.addEffect(player, "haste", 2400, 0);
  778. new_amount = amount - 1;
  779. skill.setAmount(player, "skill.haste", new_amount);
  780. msg.prefix(player, prefix_skill, concat("Used Haste. New amount: ", text.number(new_amount)));
  781. }
  782. goto("wait");
  783. }
  784. if(tech_name == "skill.speed") {
  785. amount = skill.getAmount(player, "skill.speed");
  786. if(amount > 0) {
  787. entity.addEffect(player, "speed", 2400, 0);
  788. new_amount = amount - 1;
  789. skill.setAmount(player, "skill.speed", new_amount);
  790. msg.prefix(player, prefix_skill, concat("Used Speed. New amount: ", text.number(new_amount)));
  791. }
  792. goto("wait");
  793. }
  794. if(tech_name == "skill.jump_boost") {
  795. amount = skill.getAmount(player, "skill.jump_boost");
  796. if(amount > 0) {
  797. entity.addEffect(player, "jump_boost", 2400, 1);
  798. new_amount = amount - 1;
  799. skill.setAmount(player, "skill.jump_boost", new_amount);
  800. msg.prefix(player, prefix_skill, concat("Used Jump Boost. New amount: ", text.number(new_amount)));
  801. }
  802. goto("wait");
  803. }
  804. if(tech_name == "skill.dolphin") {
  805. amount = skill.getAmount(player, "skill.dolphin");
  806. if(amount > 0) {
  807. entity.addEffect(player, "dolphins_grace", 1200, 0);
  808. new_amount = amount - 1;
  809. skill.setAmount(player, "skill.dolphin", new_amount);
  810. msg.prefix(player, prefix_skill, concat("Used Dolphin. New amount: ", text.number(new_amount)));
  811. }
  812. goto("wait");
  813. }
  814. if(tech_name == "skill.block_up") {
  815. duration = data.getTimer(player, "block_up");
  816. if(duration > 0) {
  817. msg.prefix(player, prefix_skill, "Skill already active.");
  818. goto("wait");
  819. }
  820. amount = skill.getAmount(player, "skill.block_up");
  821. if(amount > 0) {
  822. status.addTimed(player, 51, 1200, "Block Up");
  823. data.setTimer(player, "block_up", 1200);
  824. new_amount = amount - 1;
  825. skill.setAmount(player, "skill.block_up", new_amount);
  826. msg.prefix(player, prefix_skill, concat("Used Block Up. New amount: ", text.number(new_amount)));
  827. }
  828. goto("wait");
  829. }
  830. if(tech_name == "skill.block_down") {
  831. duration = data.getTimer(player, "block_down");
  832. if(duration > 0) {
  833. msg.prefix(player, prefix_skill, "Skill already active.");
  834. goto("wait");
  835. }
  836. amount = skill.getAmount(player, "skill.block_down");
  837. if(amount > 0) {
  838. status.addTimed(player, 52, 1200, "Block Down");
  839. data.setTimer(player, "block_down", 1200);
  840. new_amount = amount - 1;
  841. skill.setAmount(player, "skill.block_down", new_amount);
  842. msg.prefix(player, prefix_skill, concat("Used Block Down. New amount: ", text.number(new_amount)));
  843. }
  844. goto("wait");
  845. }
  846. }
  847. goto("wait");
  848. }
  849. if(inv_name == "§8Settings") {
  850. if(inv_slot == 0) {
  851. new_value = !player.getAutoCloseDoor(player);
  852. player.setAutoCloseDoor(player, new_value);
  853. inv.setItem(inv, inv_slot, read.item("minecraft:oak_door", 1, "§fAutomatic Doors", new_value));
  854. }
  855. elseif(inv_slot == 1) {
  856. new_value = !player.doesAcceptTpaRequests(player);
  857. player.acceptTpaRequests(player, new_value);
  858. inv.setItem(inv, inv_slot, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", new_value));
  859. }
  860. elseif(inv_slot == 2) {
  861. new_value = !showCoords.get(player);
  862. showCoords.set(player, new_value);
  863. inv.setItem(inv, inv_slot, read.item("minecraft:compass", 1, "§fShow Coords", new_value));
  864. if(!new_value) {
  865. display.remove(player, 30);
  866. }
  867. }
  868. elseif(inv_slot == 3) {
  869. new_value = !player.hasSittingActivated(player);
  870. player.activateSitting(player, new_value);
  871. inv.setItem(inv, inv_slot, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", new_value));
  872. }
  873. elseif(inv_slot == 4) {
  874. new_value = !hasPvpOn(player);
  875. setPvp(player, new_value);
  876. inv.setItem(inv, inv_slot, read.item("minecraft:iron_sword", 1, "§fPvP", new_value));
  877. }
  878. elseif(inv_slot == 5) {
  879. new_value = !player.getNoPetDamage(player);
  880. player.setNoPetDamage(player, new_value);
  881. inv.setItem(inv, inv_slot, read.item("minecraft:bone", 1, "§fNo Pet Damage", new_value));
  882. }
  883. inv.update(player);
  884. }
  885. goto("wait");
  886. }
  887. if(event == "inv_close") {
  888. if(set.contains(invseeids, inv_id)) {
  889. set.remove(invseeids, inv_id);
  890. }
  891. goto("wait");
  892. }
  893. if(event == "function_key") {
  894. if(player.hasMinigame(player)) {
  895. goto("wait");
  896. }
  897. if(key == 1) {
  898. inv = inv.new("333333333");
  899. inv.setItem(inv, 0, read.item("minecraft:oak_door", 1, "§fAutomatic Doors", player.getAutoCloseDoor(player)));
  900. inv.setItem(inv, 1, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", player.doesAcceptTpaRequests(player)));
  901. inv.setItem(inv, 2, read.item("minecraft:compass", 1, "§fShow Coords", showCoords.get(player)));
  902. inv.setItem(inv, 3, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", player.hasSittingActivated(player)));
  903. inv.setItem(inv, 4, read.item("minecraft:iron_sword", 1, "§fPvP", hasPvpOn(player)));
  904. inv.setItem(inv, 5, read.item("minecraft:bone", 1, "§fNo Pet Damage", player.getNoPetDamage(player)));
  905. inv.open(inv, player, "§8Settings");
  906. goto("wait");
  907. }
  908. if(key == 2) {
  909. player_loc = entity.getLocation(player);
  910. world_name = world.getName(loc.getWorld(player_loc));
  911. if(word.isSurvName(world_name) || world_name == "story") {
  912. skill.showAll(player);
  913. }
  914. goto("wait");
  915. }
  916. if(key == 3) {
  917. player_loc = entity.getLocation(player);
  918. world_name = world.getName(loc.getWorld(player_loc));
  919. if(!word.isSurvName(world_name)) {
  920. goto("wait");
  921. }
  922. world_time = world.getTime(world.getOverWorld());
  923. while(world_time >= 24000) {
  924. world_time -= 24000;
  925. }
  926. if(world_time <= 12500) {
  927. msg.prefix(player, prefix_commands, "Only during night possible.");
  928. goto("wait");
  929. }
  930. if(set.contains(skip_night_set, player_uuid)) {
  931. msg.prefix(player, prefix_commands, "Already voted.");
  932. goto("wait");
  933. }
  934. if(time.getMillis() - last_skip_night < 420000) {
  935. msg.prefix(player, prefix_commands, "Only once per night possible.");
  936. goto("wait");
  937. }
  938. inv.open(skip_night_inv, player, "Skip Night?");
  939. goto("wait");
  940. }
  941. goto("wait");
  942. }
  943. if(event == "player_data_tick") {
  944. if(var == "fly") {
  945. tpBottom(player);
  946. player.setFly(player, false);
  947. }
  948. }
  949. goto("wait");
  950. @hack
  951. msg.prefix(player, prefix_commands, "Your pc got hacked now.");
  952. goto("wait");
  953. @resetMoneyBoost
  954. money.setBoostFactor(1);
  955. goto("wait");
  956. @skip_night_loop
  957. skip_night_counter--;
  958. if(skip_night_counter == 0) {
  959. world = world.getOverWorld();
  960. sendMessageToWorld(world, "[§6Commands§r] Skip night results:");
  961. sendMessageToWorld(world, concat("§e - §rYes: §e", text.number(skip_night_yes)));
  962. sendMessageToWorld(world, concat("§e - §rNo: §e", text.number(skip_night_no)));
  963. sendMessageToWorld(world, concat("§e - §rI don't care: §e", text.number(skip_night_no_care)));
  964. if(skip_night_yes > skip_night_no) {
  965. world.setTime(world, 0);
  966. }
  967. set.clear(skip_night_set);
  968. last_skip_night = time.getMillis();
  969. sgoto(8400, "reset_skip_night");
  970. }
  971. sgoto(20, "skip_night_loop");
  972. goto("wait");
  973. @reset_skip_night
  974. skip_night_started = false;
  975. goto("wait");
  976. @skills
  977. skill.showAll(player);
  978. goto("wait");
  979. @infopoint1
  980. msg(player, getSpacer());
  981. msg.prefix(player, "§eSurvival", "§aEnjoy our modded survival feeling. New ores, items and displays, and we are still beginner friendly.");
  982. goto("wait");
  983. @infopoint2
  984. msg(player, getSpacer());
  985. 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.");
  986. goto("wait");
  987. @infopoint3
  988. msg(player, getSpacer());
  989. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  990. goto("wait");
  991. @infopoint4
  992. msg(player, getSpacer());
  993. 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.");
  994. goto("wait");
  995. @infopoint5
  996. msg(player, getSpacer());
  997. 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.");
  998. goto("wait");
  999. @infopoint6
  1000. msg(player, getSpacer());
  1001. 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.");
  1002. goto("wait");
  1003. @infopoint7
  1004. msg(player, getSpacer());
  1005. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  1006. goto("wait");
  1007. @infopoint8
  1008. msg(player, getSpacer());
  1009. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  1010. goto("wait");
  1011. @infopoint9
  1012. msg(player, getSpacer());
  1013. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  1014. goto("wait");
  1015. @infopoint10
  1016. msg(player, getSpacer());
  1017. msg.prefix(player, "§eRules", "§aThere is at least one rule: Be respectful. Look at our fake rules.");
  1018. goto("wait");
  1019. @infopoint11
  1020. msg(player, getSpacer());
  1021. msg.prefix(player, "§eNote", "§aEverything is self-coded. Worldedit is the only external mod we use.");
  1022. goto("wait");
  1023. @party
  1024. if(size == 0) {
  1025. @partyhelp
  1026. msg.prefix(player, prefix_party, "§r/party ...");
  1027. msg(player, "§5 - invite <player> §rInvite a player");
  1028. msg(player, "§5 - accept <player> §rAccept an invitation");
  1029. msg(player, "§5 - deny <player> §rDeny an invitation");
  1030. msg(player, "§5 - kick <player> §rKick a player");
  1031. msg(player, "§5 - leave §rLeave the party");
  1032. msg(player, "§5 - promote <player> §rPromote a player");
  1033. msg(player, "§5 - demote <player> §rDemote a player");
  1034. msg(player, "§5 - disband §rDisband a party");
  1035. msg(player, "§5 - list §rParty information");
  1036. msg(player, "§5 - <message> §rSends a party message");
  1037. goto("wait");
  1038. }
  1039. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1040. if(arg0 == "list") {
  1041. if(size != 1) {
  1042. msg.prefix(player, prefix_party, "§5/party list");
  1043. } else {
  1044. if(!player.isInParty(player)) {
  1045. msg.prefix(player, prefix_party, "You are not in a party.");
  1046. goto("wait");
  1047. }
  1048. list = party.getList(player.getPartyId(player));
  1049. table = table.new("§5", 13, 7);
  1050. msg(player, table.getStart(table));
  1051. msg(player, table.get(table, "§lName", "§lRole"));
  1052. msg(player, table.getMiddle(table));
  1053. iter = list.iterator(list);
  1054. while(hasNext(iter)) {
  1055. p = player.get(next(iter));
  1056. msg(player, table.get(table, player.getName(p), player.getPartyRank(p)));
  1057. }
  1058. msg(player, table.getEnd(table));
  1059. }
  1060. goto("wait");
  1061. }
  1062. if(arg0 == "leave") {
  1063. if(size != 1) {
  1064. msg.prefix(player, prefix_party, "§5/party leave");
  1065. } else {
  1066. if(!player.isInParty(player)) {
  1067. msg.prefix(player, prefix_party, "You are not in a party.");
  1068. goto("wait");
  1069. }
  1070. party.kickPlayer(player, "leave");
  1071. }
  1072. goto("wait");
  1073. }
  1074. if(arg0 == "disband") {
  1075. if(size != 1) {
  1076. msg.prefix(player, prefix_party, "§5/party disband");
  1077. } else {
  1078. if(!player.isInParty(player)) {
  1079. msg.prefix(player, prefix_party, "You are not in a party.");
  1080. goto("wait");
  1081. }
  1082. if(!player.isPartyLeader(player)) {
  1083. msg.prefix(player, prefix_party, "You are not the party leader.");
  1084. goto("wait");
  1085. }
  1086. party.delete(player.getPartyId(player));
  1087. }
  1088. goto("wait");
  1089. }
  1090. if(arg0 == "kick") {
  1091. if(size != 2) {
  1092. msg.prefix(player, prefix_party, "§5/party kick <player>");
  1093. } else {
  1094. if(!player.isInParty(player)) {
  1095. msg.prefix(player, prefix_party, "You are not in a party.");
  1096. goto("wait");
  1097. }
  1098. if(!player.isPartyLeaderOrMod(player)) {
  1099. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1100. goto("wait");
  1101. }
  1102. pname = list.getIndex(args, 1);
  1103. if(!checkIfEverOnline(pname)) {
  1104. msg.prefix(player, prefix_party, "This player has never been online.");
  1105. goto("wait");
  1106. }
  1107. p = read.player(pname);
  1108. if(p == null) {
  1109. msg.prefix(player, prefix_party, "This player is not online.");
  1110. goto("wait");
  1111. }
  1112. if(player == p) {
  1113. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1114. goto("wait");
  1115. }
  1116. if(!party.same(p, player)) {
  1117. msg.prefix(player, prefix_party, "This player is not in your party.");
  1118. goto("wait");
  1119. }
  1120. ownrank = player.getPartyRank(player);
  1121. if(ownrank == "Moderator") {
  1122. if(player.isPartyLeaderOrMod(p)) {
  1123. msg.prefix(player, prefix_party, "§rDu darfst diesen Spieler nicht kicken");
  1124. goto("wait");
  1125. }
  1126. }
  1127. party.kickPlayer(p, "kick");
  1128. }
  1129. goto("wait");
  1130. }
  1131. if(arg0 == "promote" || arg0 == "demote") {
  1132. if(size != 2) {
  1133. msg.prefix(player, prefix_party, concat("§5/party ", arg0, " <player>"));
  1134. } else {
  1135. pname = list.getIndex(args, 1);
  1136. if(!player.isInParty(player)) {
  1137. msg.prefix(player, prefix_party, "You are not in a party.");
  1138. goto("wait");
  1139. }
  1140. if(!player.isPartyLeader(player)) {
  1141. msg.prefix(player, prefix_party, "You are not the party leader.");
  1142. goto("wait");
  1143. }
  1144. if(!checkIfEverOnline(pname)) {
  1145. msg.prefix(player, prefix_party, "This player has never been online.");
  1146. goto("wait");
  1147. }
  1148. p = read.player(pname);
  1149. if(p == null) {
  1150. msg.prefix(player, prefix_party, "This player is not online.");
  1151. goto("wait");
  1152. }
  1153. if(player == p) {
  1154. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1155. goto("wait");
  1156. }
  1157. if(!party.same(p, player)) {
  1158. msg.prefix(player, prefix_party, "This player is not in your party.");
  1159. goto("wait");
  1160. }
  1161. partyid = player.getPartyId(player);
  1162. rank = player.getPartyRank(p);
  1163. if(arg0 == "promote") {
  1164. if(rank == "Player") {
  1165. player.setPartyRank(p, "Moderator");
  1166. party.sendMessage(partyid, concat("§r", pname, " is now Moderator."));
  1167. } elseif(rank == "Moderator") {
  1168. player.setPartyRank(p, "Leader");
  1169. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1170. party.sendMessage(partyid, concat("§r", pname, " is now Leader."));
  1171. }
  1172. } elseif(arg0 == "demote") {
  1173. if(rank == "Moderator") {
  1174. player.setPartyRank(p, "Player");
  1175. party.sendMessage(partyid, concat("§r", pname, " is no longer Moderator."));
  1176. } else {
  1177. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1178. }
  1179. }
  1180. }
  1181. goto("wait");
  1182. }
  1183. if(arg0 == "invite") {
  1184. if(size != 2) {
  1185. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1186. } else {
  1187. p_name = list.getIndex(args, 1);
  1188. if(!checkIfEverOnline(p_name)) {
  1189. msg.prefix(player, prefix_party, "This player has never been online.");
  1190. goto("wait");
  1191. }
  1192. p = read.player(p_name);
  1193. temp = party.invitePlayer(player, p);
  1194. if(temp == "inviteeNotOnline") {
  1195. msg.prefix(player, prefix_party, "This player is not online.");
  1196. } elseif(temp == "inviterEqualsInvitee") {
  1197. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1198. } elseif(temp == "inviterNotPermitted") {
  1199. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1200. } elseif(temp == "inviteeAlreadyInParty") {
  1201. msg.prefix(player, prefix_party, "This player is already in your party.");
  1202. } elseif(temp == "inviteeAlreadyInvited") {
  1203. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1204. } else {
  1205. msg.prefix(player, prefix_party, "Invitation sent.");
  1206. }
  1207. }
  1208. goto("wait");
  1209. }
  1210. if(arg0 == "accept") {
  1211. if(size != 2) {
  1212. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1213. } else {
  1214. if(player.isInParty(player)) {
  1215. msg.prefix(player, prefix_party, "You are already in a party.");
  1216. goto("wait");
  1217. }
  1218. pname = list.getIndex(args, 1);
  1219. if(!checkIfEverOnline(pname)) {
  1220. msg.prefix(player, prefix_party, "This player has never been online.");
  1221. goto("wait");
  1222. }
  1223. p = read.player(pname);
  1224. if(p == null) {
  1225. msg.prefix(player, prefix_party, "This player is no longer online.");
  1226. goto("wait");
  1227. }
  1228. player_uuid = player.getUuid(player);
  1229. p_uuid = player.getUuid(p);
  1230. list = map.get(party_invitations, player_uuid);
  1231. if(list == null || !list.contains(list, p_uuid)) {
  1232. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1233. goto("wait");
  1234. }
  1235. if(player.isInParty(p)) { //wenn einlader bereits in party
  1236. partyid = player.getPartyId(p);
  1237. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1238. party.addPlayer(partyid, player);
  1239. player.setPartyRank(player, "Player");
  1240. } else {
  1241. msg.prefix(player, prefix_party, "This player is already in another party.");
  1242. goto("wait");
  1243. }
  1244. } else {
  1245. partyid = map.get(party_invite_ids, p_uuid);
  1246. party.setList(partyid, list.new());
  1247. party.addPlayer(partyid, p);
  1248. party.addPlayer(partyid, player);
  1249. player.setPartyRank(p, "Leader");
  1250. player.setPartyRank(player, "Player");
  1251. msg.prefix(p, prefix_party, "The party was created.");
  1252. }
  1253. list.clear(list); //Einladungs-Liste von oben
  1254. party.sendMessage(partyid, concat("§r", player_name, " joined the party."));
  1255. }
  1256. goto("wait");
  1257. }
  1258. if(arg0 == "deny") {
  1259. if(size != 2) {
  1260. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1261. } else {
  1262. player_uuid = player.getUuid(player);
  1263. list = map.get(party_invitations, player_uuid);
  1264. if(list != null) {
  1265. pname = list.getIndex(args, 1);
  1266. p = read.player(pname);
  1267. if(p == null) {
  1268. msg.prefix(player, prefix_party, "This player is no longer online.");
  1269. goto("wait");
  1270. }
  1271. p_uuid = player.getUuid(p);
  1272. if(list == null || !list.contains(list, p_uuid)) {
  1273. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1274. goto("wait");
  1275. }
  1276. index = list.getIndexOf(list, p_uuid);
  1277. list.remove(list, p_uuid);
  1278. keytimes = map.get(delkeytimes, player_uuid);
  1279. list.removeIndex(keytimes, index);
  1280. p = read.player(pname);
  1281. if(p != null) {
  1282. msg.prefix(p, prefix_party, concat("§r", player_name, " has denied your invitation."));
  1283. }
  1284. msg.prefix(player, prefix_party, concat("Invitation from ", pname, " denied."));
  1285. }
  1286. }
  1287. goto("wait");
  1288. }
  1289. if(player.isInParty(player)) {
  1290. message = concat(player.getName(player), " §1| §r", text.concatList(args, " ", 0, list.getSize(args) - 1));
  1291. party.sendMessage(player.getPartyId(player), message);
  1292. goto("wait");
  1293. }
  1294. goto("partyhelp");
  1295. @setmessage
  1296. if(size == 0) {
  1297. @setmessagehelp
  1298. msg.prefix(player, prefix_commands, "§r/setmessage ...");
  1299. msg(player, "§e- join <message> §rSets your joinmessage");
  1300. msg(player, "§e- leave <message> §rSets your leavemessage");
  1301. msg(player, "§e- info §rShows you set messages");
  1302. if(perm.has(player, "setmessage.delete")) {
  1303. msg(player, "§e- delete <player> §rDeletes a players messages");
  1304. }
  1305. goto("wait");
  1306. }
  1307. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1308. if(arg0 == "info") {
  1309. fullname = player.getFullName(player);
  1310. message = text.convert(player.getJoinMessage(player));
  1311. if(message == null) {
  1312. msg.prefix(player, prefix_commands, "No join message set.");
  1313. } else {
  1314. msg.prefix(player, prefix_commands, concat("§a§l> §r", fullname, " §9", message));
  1315. }
  1316. message = text.convert(player.getLeaveMessage(player));
  1317. if(message == null) {
  1318. msg.prefix(player, prefix_commands, "No leave message set.");
  1319. } else {
  1320. msg.prefix(player, prefix_commands, concat("§c§l> §r", fullname, " §9", message));
  1321. }
  1322. goto("wait");
  1323. }
  1324. if(arg0 == "join") {
  1325. if(size < 2) {
  1326. goto("setmessagehelp");
  1327. }
  1328. message = text.concatList(args, " ", 1, size - 1);
  1329. player.setJoinMessage(player, message);
  1330. msg.prefix(player, prefix_commands, "Join-Message set.");
  1331. goto("wait");
  1332. }
  1333. if(arg0 == "leave") {
  1334. if(size < 2) {
  1335. goto("setmessagehelp");
  1336. }
  1337. message = text.concatList(args, " ", 1, size - 1);
  1338. player.setLeaveMessage(player, message);
  1339. msg.prefix(player, prefix_commands, "Leave-Message set.");
  1340. goto("wait");
  1341. }
  1342. if(arg0 == "delete") {
  1343. if(size == 1) {
  1344. p_uuid = player.getUuid(player);
  1345. } elseif(size == 2) {
  1346. if(!perm.has(player, "setmessage.delete")) {
  1347. perm.no(player, "setmessage.delete");
  1348. goto("wait");
  1349. }
  1350. p_name = list.getIndex(args, 1);
  1351. if(!checkIfEverOnline(p_name)) {
  1352. msg.prefix(player, prefix_commands, "This player has never been online.");
  1353. goto("wait");
  1354. }
  1355. p_uuid = player.getUuid(p_name);
  1356. } else {
  1357. goto("setmessagehelp");
  1358. }
  1359. p_id = player.getId(p_uuid);
  1360. player.setJoinMessage(p_id, "null");
  1361. player.setLeaveMessage(p_id, "null");
  1362. msg.prefix(player, prefix_commands, "Messages deleted.");
  1363. goto("wait");
  1364. }
  1365. goto("wait");
  1366. @lag
  1367. msg.prefix(player, prefix_commands, "Lag test is performed. Please wait...");
  1368. a = array.new(2);
  1369. a[0] = player.getUuid(player);
  1370. a[1] = time.getMillis();
  1371. list.add(lag_list, a);
  1372. sgoto(100, "do_lag_test");
  1373. goto("wait");
  1374. @do_lag_test
  1375. t = time.getMillis();
  1376. a = list.getIndex(lag_list, 0);
  1377. list.removeIndex(lag_list, 0);
  1378. p_uuid = a[0];
  1379. t_old = a[1];
  1380. t = math.roundComma((t - t_old) / 5000 * 20, 2); //Umwandlung 5000ms -> 1s -> 20ticks
  1381. p = player.get(p_uuid);
  1382. if(p != null) {
  1383. msg.prefix(p, prefix_commands, "Expected: 20 ticks/sec");
  1384. msg.prefix(p, prefix_commands, concat("Measured: ", t, " ticks/sec"));
  1385. }
  1386. goto("wait");
  1387. @live
  1388. boolean = !player.isLive(player);
  1389. player.setLive(player, boolean);
  1390. player.setHeadName(player);
  1391. player.setTabName(player);
  1392. msg.prefix(player, prefix_commands, "Live toggled.");
  1393. goto("wait");
  1394. @lightning
  1395. location = player.getTarget(player, 50, true, true);
  1396. if(block.getType(location) == "minecraft:air") {
  1397. msg.prefix(player, prefix_commands, "No block in sight.");
  1398. goto("wait");
  1399. }
  1400. entity.spawn("minecraft:lightning_bolt", location);
  1401. goto("wait");
  1402. @ride
  1403. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1404. if(world.isGamesName(world_name)) {
  1405. if(player.hasMinigame(affectedplayer) || (perm.has(affectedplayer, "ride") && !perm.has(affectedplayer, "isTeam"))) {
  1406. if(size == 2) {
  1407. msg.prefix(player, prefix_commands, "This player can't use this now.");
  1408. } else {
  1409. msg.prefix(player, prefix_commands, "You can't use this now.");
  1410. }
  1411. goto("wait");
  1412. }
  1413. }
  1414. player_uuid = player.getUuid(player);
  1415. if(set.contains(ride_set, player_uuid)) {
  1416. msg.prefix(player, prefix_commands, "Entity-Ride-Click removed.");
  1417. set.remove(ride_set, player_uuid);
  1418. } else {
  1419. msg.prefix(player, prefix_commands, "Click an entity to ride it.");
  1420. set.add(ride_set, player_uuid);
  1421. }
  1422. goto("wait");
  1423. @vanish
  1424. //vanish [on/off] [player]
  1425. if(size == 0) {
  1426. if(set.contains(vanish_set, player.getUuid(affectedplayer))) {
  1427. bool = "off";
  1428. } else {
  1429. bool = "on";
  1430. }
  1431. }
  1432. if(size >= 1) {
  1433. bool = list.getIndex(args, 0);
  1434. }
  1435. if(size == 2) {
  1436. affectedname = list.getIndex(args, 1);
  1437. affectedplayer = read.player(affectedname);
  1438. affectedname = player.getName(affectedplayer);
  1439. if(affectedplayer == null) {
  1440. msg.prefix(player, prefix_commands, "This player is not online.");
  1441. goto("wait");
  1442. }
  1443. }
  1444. if(bool == "on") {
  1445. if(affectedname != player_name) {
  1446. msg.prefix(player, prefix_commands, concat(affectedname, " has been vanished."));
  1447. msg.prefix(affectedplayer, prefix_commands, concat("You have been vanished by ", player_name, "."));
  1448. } else {
  1449. msg.prefix(affectedplayer, prefix_commands, "You are vanished.");
  1450. }
  1451. set.add(vanish_set, player.getUuid(affectedplayer));
  1452. player.hide(affectedplayer);
  1453. } elseif(bool == "off") {
  1454. if(affectedname != player_name) {
  1455. msg.prefix(player, prefix_commands, concat(affectedname, " is no longer vanished."));
  1456. msg.prefix(affectedplayer, prefix_commands, concat("You are no longer vanished caused by ", player_name, "."));
  1457. } else {
  1458. msg.prefix(affectedplayer, prefix_commands, "You are no longer vanished.");
  1459. }
  1460. set.remove(vanish_set, player.getUuid(affectedplayer));
  1461. player.show(affectedplayer);
  1462. } else {
  1463. msg.prefix(player, prefix_commands, "§r/vanish [on/off] [player]");
  1464. }
  1465. goto("wait");
  1466. @user
  1467. if(size == 0) {
  1468. p_name = player.getName(player);
  1469. p_uuid = player.getUuid(p_name);
  1470. } else {
  1471. if(!perm.has(player, "user.other")) {
  1472. perm.no(player, "user.other");
  1473. goto("wait");
  1474. }
  1475. p_name = list.getIndex(args, 0);
  1476. if(!checkIfEverOnline(p_name)) {
  1477. msg.prefix(player, prefix_commands, "This player has never been online.");
  1478. goto("wait");
  1479. }
  1480. p_uuid = player.getUuid(p_name);
  1481. p_name = player.getName(p_uuid);
  1482. }
  1483. p = read.player(p_name);
  1484. p_id = player.getId(p_uuid);
  1485. if(p == null) {
  1486. p_or_id = p_id;
  1487. } else {
  1488. p_or_id = p;
  1489. }
  1490. table = table.new("§8", 6, 24);
  1491. msg(player, table.getStart(table));
  1492. msg(player, table.get(table, "Player", p_name));
  1493. msg(player, table.getMiddle(table));
  1494. msg(player, table.get(table, "Playtime", text.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  1495. msg(player, table.get(table, "Joins", text.number(player.getJoins(p_or_id))));
  1496. msg(player, table.get(table, "First Join", getDateString(player.getFirstJoin(p_or_id))));
  1497. msg(player, table.get(table, "Last Join", getDateString(player.getLastJoin(p_or_id))));
  1498. msg(player, table.get(table, "UUID", p_uuid));
  1499. msg(player, table.get(table, "ID", text.number(p_id)));
  1500. msg(player, table.get(table, "Rank", getRank(p_or_id)));
  1501. msg(player, table.get(table, "PvP", hasPvpOn(p_or_id)));
  1502. msg(player, table.get(table, "Quests", text.number(quest.getCounter(p_or_id))));
  1503. msg(player, table.get(table, "Money", text.number(getMoney(p_or_id))));
  1504. msg(player, table.getEnd(table));
  1505. goto("wait");
  1506. @quest
  1507. if(size == 0) {
  1508. @quest_syntax
  1509. msg.prefix(player, prefix_quest, "§r/quest ...");
  1510. msg(player, "§5 - term <player> §rTerminates a player's quest");
  1511. goto("wait");
  1512. }
  1513. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1514. if(arg0 == "term") {
  1515. if(size != 2) {
  1516. msg.prefix(player, prefix_quest, "§r/quest term <player>");
  1517. goto("wait");
  1518. }
  1519. p_name = list.getIndex(args, 1);
  1520. if(!checkIfEverOnline(p_name)) {
  1521. msg.prefix(player, prefix_quest, "This player has never been online.");
  1522. goto("wait");
  1523. }
  1524. p = read.player(p_name);
  1525. if(p == null) {
  1526. msg.prefix(player, prefix_quest, "This player is not online.");
  1527. goto("wait");
  1528. }
  1529. script_id = quest.getFromPlayer(p);
  1530. if(script_id == null) {
  1531. msg.prefix(player, prefix_quest, "This player has no quest.");
  1532. goto("wait");
  1533. }
  1534. script = script.getFromId(script_id);
  1535. if(script == null) {
  1536. quest.removePlayer(p);
  1537. msg.prefix(player, prefix_quest, "Corrupt quest terminated.");
  1538. goto("wait");
  1539. }
  1540. setScriptVar("player", p);
  1541. script.callEvent("quest_term", script);
  1542. quest.term(script, player);
  1543. msg.prefix(player, prefix_quest, "Player's quest terminated.");
  1544. goto("wait");
  1545. }
  1546. goto("quest_syntax");
  1547. @friend
  1548. if(size == 0) {
  1549. @friend_syntax
  1550. msg.prefix(player, prefix_friends, "§r/friend ...");
  1551. msg(player, "§5 - add <player> §rAdds a friend");
  1552. msg(player, "§5 - remove <player> §rRemoves a friend");
  1553. msg(player, "§5 - list §rLists all your friends");
  1554. goto("wait");
  1555. }
  1556. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1557. if(arg0 == "add") {
  1558. if(size != 2) {
  1559. msg.prefix(player, prefix_friends, "§r/friend add <player>");
  1560. goto("wait");
  1561. }
  1562. friend_name = list.getIndex(args, 1);
  1563. if(player_name == friend_name) {
  1564. msg.prefix(player, prefix_friends, "You can't invite yourself.");
  1565. goto("wait");
  1566. }
  1567. player_id = player.getId(player);
  1568. if(!checkIfEverOnline(friend_name)) {
  1569. msg.prefix(player, prefix_friends, "This player has never been online.");
  1570. goto("wait");
  1571. }
  1572. friend_id = player.getId(player.getUuid(friend_name));
  1573. if(friend.check(player_id, friend_id)) {
  1574. msg.prefix(player, prefix_friends, "This player is already your friend.");
  1575. goto("wait");
  1576. }
  1577. if(map.contains(friend_requests, friend_id)) {
  1578. if(map.get(friend_requests, friend_id) == player_id) {
  1579. friend.add(player_id, friend_id);
  1580. map.remove(friend_requests, friend_id);
  1581. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is your friend now."));
  1582. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is your friend now."), true);
  1583. goto("wait");
  1584. }
  1585. }
  1586. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  1587. friend = read.player(friend_name);
  1588. msg.prefix(player, prefix_friends, concat("You sent an invitation to §7", friend_name, "§r."));
  1589. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r wants to be your friend."), true);
  1590. if(friend != null) {
  1591. msg(friend, text.click("§r[§aAccept§r]", concat("/friend add ", player_name)));
  1592. }
  1593. goto("wait");
  1594. }
  1595. if(arg0 == "remove") {
  1596. if(size != 2) {
  1597. msg.prefix(player, prefix_friends, "§r/friend remove <player>");
  1598. goto("wait");
  1599. }
  1600. friend_name = list.getIndex(args, 1);
  1601. player_id = player.getId(player);
  1602. if(!checkIfEverOnline(friend_name)) {
  1603. msg.prefix(player, prefix_friends, "This player has never been online.");
  1604. goto("wait");
  1605. }
  1606. friend_id = player.getId(player.getUuid(friend_name));
  1607. if(!friend.check(player_id, friend_id)) {
  1608. msg.prefix(player, prefix_friends, "This player isn't your friend.");
  1609. goto("wait");
  1610. }
  1611. friend.delete(player_id, friend_id);
  1612. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is no longer your friend."));
  1613. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is no longer your friend."), true);
  1614. goto("wait");
  1615. }
  1616. if(arg0 == "list") {
  1617. if(size != 1) {
  1618. msg.prefix(player, prefix_friends, "/friend list");
  1619. goto("wait");
  1620. }
  1621. player_id = player.getId(player);
  1622. friendlist = friend.getList(player_id);
  1623. listsize = list.getSize(friendlist);
  1624. if(listsize == 0) {
  1625. msg.prefix(player, prefix_friends, "You have no friends yet.");
  1626. goto("wait");
  1627. }
  1628. msg(player, "§5Friends:");
  1629. for(i = 0; i <= listsize - 1; i++) {
  1630. msg(player, "§r- ", list.getIndex(friendlist, i));
  1631. }
  1632. goto("wait");
  1633. }
  1634. goto("friend_syntax");
  1635. @var
  1636. if(size != 2) {
  1637. msg.prefix(player, prefix_commands, "§r/var <id> <varname>");
  1638. goto("wait");
  1639. }
  1640. script_id = list.getIndex(args, 0);
  1641. script = script.getFromId(script_id);
  1642. if(script == null) {
  1643. msg.prefix(player, "§dScript", "Invalid id");
  1644. goto("wait");
  1645. }
  1646. var_name = list.getIndex(args, 1);
  1647. var = script.getVar(script, var_name);
  1648. msg.prefix(player, "§dScript", concat(var_name, " = ", var));
  1649. goto("wait");
  1650. //@vote
  1651. //inv.open(vote_inv, player, concat("Your vote points: §6", text.number(player.getVotePoints(player))));
  1652. //goto("wait");
  1653. @voxel
  1654. if(size < 1) {
  1655. @voxelhelp
  1656. msg.prefix(player, prefix_commands, "/voxel <radius:1-5>");
  1657. msg.prefix(player, prefix_commands, "/voxel block");
  1658. goto("wait");
  1659. }
  1660. arg0 = list.getIndex(args, 0);
  1661. if(isDouble(arg0)) {
  1662. radius = arg0;
  1663. if(radius < 1) {
  1664. radius = 1;
  1665. }
  1666. if(radius > 5) {
  1667. radius = 5;
  1668. }
  1669. script = script.get("Voxel");
  1670. map = script.getVar(script, "radius_per_player");
  1671. map.add(map, player.getUuid(player), radius);
  1672. script.setVar(script, "radius_per_player", map);
  1673. msg.prefix(player, prefix_commands, concat("Set radius to ", text.number(radius), "."));
  1674. goto("wait");
  1675. }
  1676. if(arg0 == "block") {
  1677. item = living.getEquip(player, "hand");
  1678. item_type = item.getType(item);
  1679. if(item_type == "minecraft:air") {
  1680. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1681. goto("wait");
  1682. }
  1683. state = block.newState(item_type);
  1684. script = script.get("Voxel");
  1685. map = script.getVar(script, "state_per_player");
  1686. map.add(map, player.getUuid(player), state);
  1687. script.setVar(script, "state_per_player", map);
  1688. msg.prefix(player, prefix_commands, concat("Set block to ", item_type, "."));
  1689. goto("wait");
  1690. }
  1691. goto("voxelhelp");
  1692. @setservermessage
  1693. if(size < 1) {
  1694. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  1695. goto("wait");
  1696. }
  1697. message = text.concatList(args, " ", 0, size - 1);
  1698. message = text.replace(message, "&", "§");
  1699. setMOTD(message);
  1700. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  1701. goto("wait");
  1702. @error
  1703. if(size < 1) {
  1704. msg.prefix(player, "§cError", "§r/error ...");
  1705. msg(player, "§c - list §rLists all errors");
  1706. msg(player, "§c - clear §rDeletes all errors");
  1707. goto("wait");
  1708. }
  1709. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1710. if(arg0 == "list") {
  1711. error_size = error.getSize();
  1712. if(error_size == 0) {
  1713. msg.prefix(player, "§cError", "No errors existing.");
  1714. goto("wait");
  1715. }
  1716. for(i = 0; i < error_size; i++) {
  1717. msg(player, error.getIndex(i));
  1718. }
  1719. goto("wait");
  1720. }
  1721. if(arg0 == "clear") {
  1722. error.clear();
  1723. msg.prefix(player, "§cError", "All errors deleted.");
  1724. goto("wait");
  1725. }
  1726. goto("wait");
  1727. @errordebug
  1728. if(size < 1) {
  1729. msg.prefix(player, "§cErrorDebugs", "§r/errordebug ...");
  1730. msg(player, "§c - list §rLists all errordebugs");
  1731. msg(player, "§c - clear §rDeletes all errordebugs");
  1732. msg(player, "§c - toggle §rToggles errordebugs");
  1733. goto("wait");
  1734. }
  1735. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1736. if(arg0 == "list") {
  1737. error_size = debug.getSize();
  1738. if(error_size == 0) {
  1739. msg.prefix(player, "§cErrorDebugs", "No errordebugs existing.");
  1740. goto("wait");
  1741. }
  1742. for(i = 0; i < error_size; i++) {
  1743. msg(player, debug.getIndex(i));
  1744. }
  1745. goto("wait");
  1746. }
  1747. if(arg0 == "clear") {
  1748. debug.clear();
  1749. msg.prefix(player, "§cErrorDebugs", "All errordebugs deleted.");
  1750. goto("wait");
  1751. }
  1752. if(arg0 == "toggle") {
  1753. new_value = !perm.has(player, "script.debug");
  1754. player.showDebug(player, new_value);
  1755. if(new_value) {
  1756. msg.prefix(player, prefix_commands, "Debug messages are now shown.");
  1757. } else {
  1758. msg.prefix(player, prefix_commands, "Debug messages are now hidden.");
  1759. }
  1760. goto("wait");
  1761. }
  1762. goto("wait");
  1763. @hat
  1764. item = living.getEquip(player, "hand");
  1765. if(item.getType(item) == "minecraft:air") {
  1766. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  1767. goto("wait");
  1768. }
  1769. living.setEquip(player, "head", item);
  1770. living.setEquip(player, "hand", read.item("minecraft:air"));
  1771. goto("wait");
  1772. @hawkeye
  1773. if(size == 0) {
  1774. @partyhelp
  1775. msg.prefix(player, prefix_party, "§r/hawkeye ...");
  1776. msg(player, "§5 - search <parameters> §rSearch for griefs");
  1777. msg(player, "§5 - rollback §rRollback last search");
  1778. msg(player, "§5 - undo §rUndos your last rollback");
  1779. msg(player, "§5 - tool §rGives you the Hawkeye Tool");
  1780. msg(player, "");
  1781. msg(player, "§5 - Parameters:");
  1782. msg(player, "§5 - e:<event>");
  1783. msg(player, "§5 - p:<player>");
  1784. msg(player, "§5 - r:<radius>");
  1785. msg(player, "§5 - t:<timespan> e.g. \"5d,4h,20m\"");
  1786. goto("wait");
  1787. }
  1788. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1789. if(arg0 == "tool") {
  1790. player.giveItem(player, ha_tool);
  1791. goto("wait");
  1792. }
  1793. if(arg0 == "print") {
  1794. side = list.getIndex(args, 1);
  1795. if(!isDouble(side)) {
  1796. msg.prefix(player, prefix_commands, "Number expected.");
  1797. goto("wait");
  1798. }
  1799. if(side < 1) {
  1800. msg.prefix(player, prefix_commands, "Positive number expected.");
  1801. goto("wait");
  1802. }
  1803. list = hawkeye.getDataList(player);
  1804. if(list == null) {
  1805. goto("wait");
  1806. }
  1807. if(side > list.getSize(list)) {
  1808. msg.prefix(player, prefix_commands, "Invalid number.");
  1809. goto("wait");
  1810. }
  1811. hawkeye.print(player, list, side);
  1812. goto("wait");
  1813. }
  1814. if(arg0 == "search") {
  1815. if(size < 2) {
  1816. msg.prefix(player, prefix_commands, "/hawkeye search <parameters>");
  1817. goto("wait");
  1818. }
  1819. a = hawkeye.processInput(args, player);
  1820. if(text.class(a) == "String") {
  1821. msg.prefix(player, prefix_hawkeye, a);
  1822. goto("wait");
  1823. }
  1824. timeFrom = a[0];
  1825. timeTo = a[1];
  1826. player_loc = a[2];
  1827. radius = a[3];
  1828. events = a[4];
  1829. players = a[5];
  1830. l = hawkeye.getData(timeFrom, timeTo, player_loc, radius, events, players, "DESC");
  1831. if(text.class(l) == "String") {
  1832. msg.prefix(player, prefix_hawkeye, l);
  1833. hawkeye.setDataList(player, list.new());
  1834. goto("wait");
  1835. }
  1836. if(list.getSize(l) == 0) {
  1837. msg.prefix(player, prefix_hawkeye, "No results found.");
  1838. hawkeye.setDataList(player, list.new());
  1839. goto("wait");
  1840. }
  1841. hawkeye.setDataList(player, l);
  1842. hawkeye.print(player, l, 1);
  1843. goto("wait");
  1844. }
  1845. if(arg0 == "rollback") {
  1846. l = hawkeye.getDataList(player);
  1847. if(l == null) {
  1848. msg.prefix(player, prefix_hawkeye, "No results to rollback.");
  1849. goto("wait");
  1850. }
  1851. if(list.getSize(l) == 0) {
  1852. msg.prefix(player, prefix_hawkeye, "No results to rollback.");
  1853. goto("wait");
  1854. }
  1855. if(list.getSize(l) >= 1000) {
  1856. msg.prefix(player, prefix_hawkeye, "Limit (1000) reached. Edit search parameters.");
  1857. goto("wait");
  1858. }
  1859. counter = hawkeye.rollback(l);
  1860. hawkeye.setUndoList(player, l);
  1861. msg.prefix(player, prefix_hawkeye, concat(text.number(counter), " blocks rollbacked."));
  1862. goto("wait");
  1863. }
  1864. if(arg0 == "undo") {
  1865. l = hawkeye.getUndoList(player);
  1866. if(l == null) {
  1867. msg.prefix(player, prefix_hawkeye, "No rollback to undo.");
  1868. goto("wait");
  1869. }
  1870. if(list.getSize(l) == 0) {
  1871. msg.prefix(player, prefix_hawkeye, "No rollback to undo.");
  1872. goto("wait");
  1873. }
  1874. hawkeye.undo(l);
  1875. hawkeye.setUndoList(player, list.new());
  1876. msg.prefix(player, prefix_hawkeye, "Undo done.");
  1877. goto("wait");
  1878. }
  1879. goto("wait");
  1880. @news
  1881. if(size < 1) {
  1882. msg.prefix(player, prefix_commands, "/news <text>");
  1883. goto("wait");
  1884. }
  1885. message = text.concatList(args, " ", 0, size - 1);
  1886. online_list = players.toList();
  1887. for(i = 0; i < list.getSize(online_list); i++) {
  1888. p = list.getIndex(online_list, i);
  1889. title.reset(p);
  1890. title.setSub(p, concat("by ", player_name));
  1891. title.send(p, "§cNews");
  1892. msg.prefix(p, "§4News", concat("§c", message));
  1893. }
  1894. goto("wait");
  1895. @spawn
  1896. if(size == 1) {
  1897. if(!perm.has(player, "teleport.other")) {
  1898. perm.no(player, "teleport.other");
  1899. goto("wait");
  1900. }
  1901. affectedname = list.getIndex(args, 0);
  1902. affectedplayer = read.player(affectedname);
  1903. if(affectedplayer == null) {
  1904. msg.prefix(player, prefix_commands, "This player is not online.");
  1905. goto("wait");
  1906. }
  1907. }
  1908. if(player.hasMinigame(affectedplayer)) {
  1909. if(size == 1) {
  1910. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  1911. } else {
  1912. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  1913. }
  1914. goto("wait");
  1915. }
  1916. if(player.teleport(affectedplayer, serverspawn, true)) {
  1917. if(player == affectedplayer) {
  1918. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the spawn.");
  1919. } else {
  1920. affectedname = player.getName(affectedplayer);
  1921. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the spawn."));
  1922. }
  1923. }
  1924. goto("wait");
  1925. @rank
  1926. msg(player, getSpacer());
  1927. rank = getRank(player);
  1928. msg(player, concat("§6Current rank: §r[", rank, "§r]"));
  1929. msg(player, "Choose a rank:");
  1930. rank.showAll(player);
  1931. goto("wait");
  1932. @setrank
  1933. if(size < 2) {
  1934. msg.prefix(player, prefix_commands, "§r/setrank <player> <rank>");
  1935. goto("wait");
  1936. }
  1937. p_name = list.getIndex(args, 0);
  1938. if(!checkIfEverOnline(p_name)) {
  1939. msg.prefix(player, prefix_commands, "This player has never been online.");
  1940. goto("wait");
  1941. }
  1942. p = read.player(p_name);
  1943. if(p == null) {
  1944. msg.prefix(player, prefix_commands, "This player is not online.");
  1945. goto("wait");
  1946. }
  1947. p_name = player.getName(p);
  1948. rank = text.concatList(args, " ", 1, size - 1);
  1949. if(!perm.has(player, "setrank.other")) {
  1950. if(player.getName(player) != p_name) {
  1951. perm.no(player, "setrank.other");
  1952. goto("wait");
  1953. }
  1954. colored = text.startsWith(rank, "&", 0);
  1955. if(colored) {
  1956. rank = text.subString(rank, 1, text.length(rank));
  1957. }
  1958. a = rank.getRankArray();
  1959. a_size = array.getSize(a);
  1960. for(i = 0; i < a_size; i++) {
  1961. tech_name = a[i, 0];
  1962. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  1963. perm.no(p, tech_name);
  1964. goto("wait");
  1965. }
  1966. }
  1967. if(colored) {
  1968. rank = concat("&", rank);
  1969. }
  1970. }
  1971. if(text.length(rank) >= 30) {
  1972. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  1973. goto("wait");
  1974. }
  1975. rank = text.replace(rank, "&", "§");
  1976. setRank(p, rank);
  1977. player.setTabName(p);
  1978. msg.prefix(player, prefix_commands, concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  1979. goto("wait");
  1980. @nowb
  1981. if(player.isAfk(player)) {
  1982. player.setAfk(player, false);
  1983. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  1984. player.setTabName(player);
  1985. } else {
  1986. msg.prefix(player, prefix_commands, "You are not afk.");
  1987. }
  1988. goto("wait");
  1989. @afk
  1990. nickname = player.getNickname(player);
  1991. if(player.isAfk(player)) {
  1992. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  1993. player.setAfk(player, false);
  1994. } else {
  1995. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  1996. player.setAfk(player, true);
  1997. if(!afk_loop_active) {
  1998. afk_loop_active = true;
  1999. sgoto(30, "afk_loop");
  2000. }
  2001. }
  2002. player.setTabName(player);
  2003. goto("wait");
  2004. @silentjoin
  2005. silentjoin = player.getSilentJoin(player);
  2006. if(silentjoin) {
  2007. player.setSilentJoin(player, false);
  2008. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  2009. } else {
  2010. player.setSilentJoin(player, true);
  2011. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  2012. }
  2013. goto("wait");
  2014. @jailloop
  2015. size = list.getSize(jailed_list);
  2016. for(i = 0; i < size; i++) {
  2017. p_name = player.getName(list.getIndex(jailed_list, i));
  2018. showJail(p_name);
  2019. }
  2020. if(size > 0) {
  2021. jail_loop_active = true;
  2022. sgoto(5, "jailloop");
  2023. } else {
  2024. jail_loop_active = false;
  2025. }
  2026. goto("wait");
  2027. @coordsloop
  2028. list = players.toList();
  2029. size = list.getSize(list);
  2030. for(i = 0; i < size; i++) {
  2031. p = list.getIndex(list, i);
  2032. if(showcoords.get(p)) {
  2033. p_loc = entity.getLocation(p);
  2034. 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"))));
  2035. }
  2036. }
  2037. sgoto(10, "coordsloop");
  2038. goto("wait");
  2039. @afk_loop
  2040. if(!afk_loop_active) {
  2041. goto("wait");
  2042. }
  2043. afk_map = getScriptVar("afk_map");
  2044. iter = map.iterator(afk_map);
  2045. while(hasNext(iter)) {
  2046. element = next(iter);
  2047. yaw = map.getValue(element);
  2048. player = player.get(map.getKey(element));
  2049. if(player != null) {
  2050. if(yaw != loc.getYaw(entity.getLocation(player))) {
  2051. nickname = player.getNickname(player);
  2052. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  2053. remove(iter);
  2054. player.setAfk(player, false);
  2055. player.setTabName(player);
  2056. }
  2057. }
  2058. }
  2059. size = map.getSize(afk_map);
  2060. if(size > 0) {
  2061. afk_loop_active = true;
  2062. sgoto(30, "afk_loop");
  2063. } else {
  2064. afk_loop_active = false;
  2065. }
  2066. goto("wait");
  2067. @afk_checker_loop
  2068. online_list = players.toList();
  2069. iter = list.iterator(online_list);
  2070. while(hasNext(iter)) {
  2071. uuid = next(iter);
  2072. p = player.get(uuid);
  2073. yaw = loc.getYaw(entity.getLocation(p));
  2074. a = map.get(afk_checker_map, uuid);
  2075. if(a == null) {
  2076. a = array.new(2);
  2077. a[0] = yaw;
  2078. a[1] = 0;
  2079. map.add(afk_checker_map, uuid, a);
  2080. continue;
  2081. }
  2082. last_yaw = a[0];
  2083. counter = a[1];
  2084. if(last_yaw == yaw) {
  2085. counter++;
  2086. } else {
  2087. counter = 0;
  2088. }
  2089. a[0] = yaw;
  2090. a[1] = counter;
  2091. map.add(afk_checker_map, uuid, a);
  2092. if(counter == 3) {
  2093. nickname = player.getNickname(p);
  2094. if(player.isAfk(p)) {
  2095. continue;
  2096. }
  2097. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  2098. player.setAfk(p, true);
  2099. player.setTabName(p);
  2100. if(!afk_loop_active) {
  2101. afk_loop_active = true;
  2102. sgoto(30, "afk_loop");
  2103. }
  2104. }
  2105. }
  2106. sgoto(1200, "afk_checker_loop");
  2107. goto("wait");
  2108. @pvp
  2109. if(size == 0) {
  2110. if(hasPvpOn(player)) {
  2111. mode = "off";
  2112. } else {
  2113. mode = "on";
  2114. }
  2115. } elseif(size == 1) {
  2116. mode = list.getIndex(args, 0);
  2117. if(!(mode == "on" || mode == "off")) {
  2118. goto("pvphelp");
  2119. }
  2120. } elseif(size == 2) {
  2121. if(!perm.has(player, "pvp.other")) {
  2122. perm.no(player, "pvp.other");
  2123. goto("wait");
  2124. }
  2125. mode = list.getIndex(args, 0);
  2126. if(!(mode == "on" || mode == "off")) {
  2127. goto("pvphelp");
  2128. }
  2129. affectedname = list.getIndex(args, 1);
  2130. if(!checkIfEverOnline(affectedname)) {
  2131. msg.prefix(player, prefix_commands, "This player has never been online.");
  2132. goto("wait");
  2133. }
  2134. affectedplayer = read.player(affectedname);
  2135. if(affectedplayer == null) {
  2136. msg.prefix(player, prefix_commands, "This player is not online.");
  2137. goto("wait");
  2138. }
  2139. } else {
  2140. @pvphelp
  2141. if(perm.has(player, "pvp.other")) {
  2142. msg.prefix(player, prefix_commands, "§r/pvp [on/off] [player]");
  2143. } else {
  2144. msg.prefix(player, prefix_commands, "§r/pvp [on/off]");
  2145. }
  2146. goto("wait");
  2147. }
  2148. if(mode == "on") {
  2149. setPvp(affectedplayer, true);
  2150. msg.prefix(affectedplayer, prefix_commands, "You have enabled PvP!");
  2151. if(affectedplayer != player) {
  2152. affectedname = player.getName(affectedplayer);
  2153. msg.prefix(player, prefix_commands, concat(affectedname, " has now enabled PvP!"));
  2154. }
  2155. } else {
  2156. setPvp(affectedplayer, false);
  2157. msg.prefix(affectedplayer, prefix_commands, "You have PvP disabled!");
  2158. if(affectedplayer != player) {
  2159. affectedname = player.getName(affectedplayer);
  2160. msg.prefix(player, prefix_commands, concat(affectedname, " has now disabled PvP!"));
  2161. }
  2162. }
  2163. goto("wait");
  2164. @suicide
  2165. if(size < 0 || size > 1) {
  2166. msg.prefix(player, prefix_commands, "§r/suicide [player]");
  2167. goto("wait");
  2168. }
  2169. if(size == 1) {
  2170. if(!perm.has(player, "kill.other")) {
  2171. perm.no(player, "kill.other");
  2172. goto("wait");
  2173. }
  2174. affectedname = list.getIndex(args, 0);
  2175. affectedplayer = read.player(affectedname);
  2176. if(affectedplayer == null) {
  2177. msg.prefix(player, prefix_commands, "This player is not online.");
  2178. goto("wait");
  2179. }
  2180. }
  2181. if(affectedplayer != player) {
  2182. affectedname = player.getName(affectedplayer);
  2183. msg.prefix(player, prefix_commands, concat(affectedname, " has been killed."));
  2184. msg.prefix(affectedplayer, prefix_commands, concat("You have been killed by ", player_name, "."));
  2185. } else {
  2186. msg.prefix(affectedplayer, prefix_commands, "You killed yourself.");
  2187. }
  2188. living.damage(affectedplayer, 1000);
  2189. goto("wait");
  2190. @nickname
  2191. if(size < 1) {
  2192. msg.prefix(player, "§eNickname", "§r/nickname ...");
  2193. msg(player, "§e - <name> ", "Sets a nickname");
  2194. msg(player, "§e - remove ", "Removes a nickname");
  2195. goto("wait");
  2196. }
  2197. nickname = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  2198. if(nickname == "remove") {
  2199. player.removeNickName(player);
  2200. msg.prefix(player, prefix_commands, concat("§rYour nickname was removed."));
  2201. } else {
  2202. player.setNickName(player, nickname);
  2203. msg.prefix(player, prefix_commands, concat("§rYour nickname was changed to ", nickname, "§r."));
  2204. }
  2205. player.setTabName(player);
  2206. goto("wait");
  2207. @iteminfo
  2208. item = living.getEquip(player, "hand");
  2209. text = text.item(item);
  2210. text = text.replace(text, "\"", "\\\"");
  2211. msg(player, text.clipBoard(text, text));
  2212. goto("wait");
  2213. @perm
  2214. if(size == 0) {
  2215. @perm_syntax
  2216. msg.prefix(player, prefix_perms, "§r/perm ...");
  2217. if(perm.has(player, "perm.give")) {
  2218. msg(player, "§6 - give <player> <perm>");
  2219. }
  2220. if(perm.has(player, "perm.remove")) {
  2221. msg(player, "§6 - remove <player> <perm>");
  2222. }
  2223. if(perm.has(player, "perm.removeall")) {
  2224. msg(player, "§6 - removeall <player>");
  2225. }
  2226. if(perm.has(player, "perm.list")) {
  2227. msg(player, "§6 - list <player>");
  2228. }
  2229. if(perm.has(player, "perm.toggle")) {
  2230. msg(player, "§6 - toggle");
  2231. }
  2232. goto("wait");
  2233. }
  2234. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2235. if(arg0 == "give") {
  2236. if(!perm.has(player, "perm.give")) {
  2237. perm.no(player, "perm.give");
  2238. goto("wait");
  2239. }
  2240. if(size != 3) {
  2241. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  2242. } else {
  2243. p_name = list.getIndex(args, 1);
  2244. perm = list.getIndex(args, 2);
  2245. if(!checkIfEverOnline(p_name)) {
  2246. msg.prefix(player, prefix_perms, "This player has never been online.");
  2247. goto("wait");
  2248. }
  2249. if(!perm.isGroupName(perm)) {
  2250. msg.prefix(player, prefix_perms, "This is not a permission group.");
  2251. goto("wait");
  2252. }
  2253. if(!perm.has(player, "isAdmin")) {
  2254. if(perm == "admin" || perm == "mod" || perm == "bypass") {
  2255. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  2256. goto("wait");
  2257. }
  2258. }
  2259. p_uuid = player.getUuid(p_name);
  2260. p_id = player.getId(p_uuid);
  2261. p_name = player.getName(p_uuid);
  2262. perm_id = perm.getIdFromGroupname(perm);
  2263. if(player.hasPermGroup(p_id, perm_id)) {
  2264. msg.prefix(player, prefix_perms, "Perm already added.");
  2265. goto("wait");
  2266. }
  2267. if(isOnline(p_name)) {
  2268. p = read.player(p_name);
  2269. rank = perm.getRankFromGroupname(perm);
  2270. if(rank != null) {
  2271. offerRank(p, rank.getTechName(rank));
  2272. }
  2273. }
  2274. givePerm(p_id, perm_id);
  2275. msg.prefix(player, prefix_perms, concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  2276. }
  2277. goto("wait");
  2278. }
  2279. if(arg0 == "remove") {
  2280. if(!perm.has(player, "perm.remove")) {
  2281. perm.no(player, "perm.remove");
  2282. goto("wait");
  2283. }
  2284. if(size != 3) {
  2285. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  2286. } else {
  2287. p_name = list.getIndex(args, 1);
  2288. perm = list.getIndex(args, 2);
  2289. if(!checkIfEverOnline(p_name)) {
  2290. msg.prefix(player, prefix_perms, "This player has never been online.");
  2291. goto("wait");
  2292. }
  2293. if(!perm.isGroupName(perm)) {
  2294. msg.prefix(player, prefix_perms, "This is not a permission group.");
  2295. goto("wait");
  2296. }
  2297. if(!perm.has(player, "isAdmin")) {
  2298. if(perm == "admin" || perm == "mod" || perm == "bypass") {
  2299. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  2300. goto("wait");
  2301. }
  2302. }
  2303. p_uuid = player.getUuid(p_name);
  2304. p_id = player.getId(p_uuid);
  2305. p_name = player.getName(p_uuid);
  2306. //Wenn marvinius eine Permission entfernt wird, wird dies blockiert, ausgenommen er tut dies selbst
  2307. player_id = player.getId(player);
  2308. if(player_id != 2) {
  2309. if(p_id == 2) {
  2310. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  2311. goto("wait");
  2312. }
  2313. }
  2314. perm_id = perm.getIdFromGroupname(perm);
  2315. if(!player.hasPermGroup(p_id, perm_id)) {
  2316. msg.prefix(player, prefix_perms, "This player doesn't have that perm.");
  2317. goto("wait");
  2318. }
  2319. removePerm(p_id, perm_id);
  2320. msg.prefix(player, prefix_perms, concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  2321. }
  2322. goto("wait");
  2323. }
  2324. if(arg0 == "removeall") {
  2325. if(!perm.has(player, "perm.removeall")) {
  2326. perm.no(player, "perm.removeall");
  2327. goto("wait");
  2328. }
  2329. if(size != 2) {
  2330. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  2331. } else {
  2332. p_name = list.getIndex(args, 1);
  2333. if(!checkIfEverOnline(p_name)) {
  2334. msg.prefix(player, prefix_perms, "This player has never been online.");
  2335. goto("wait");
  2336. }
  2337. //Wenn marvinius Permissions entfernt werden, wird dies blockiert, ausgenommen er tut dies selbst
  2338. p_id = player.getId(player.getUuid(p_name));
  2339. player_id = player.getId(player);
  2340. if(player_id != 2) {
  2341. if(p_id == 2) {
  2342. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  2343. goto("wait");
  2344. }
  2345. }
  2346. removeAllPerms(p_id);
  2347. msg.prefix(player, prefix_perms, concat("§r All perms of §7", p_name, " §rwere removed"));
  2348. }
  2349. goto("wait");
  2350. }
  2351. if(arg0 == "list") {
  2352. if(!perm.has(player, "perm.list")) {
  2353. perm.no(player, "perm.list");
  2354. goto("wait");
  2355. }
  2356. if(size != 2) {
  2357. msg.prefix(player, prefix_perms, "/perm list <player>");
  2358. } else {
  2359. p_name = list.getIndex(args, 1);
  2360. if(!checkIfEverOnline(p_name)) {
  2361. msg.prefix(player, prefix_perms, "This player has never been online.");
  2362. goto("wait");
  2363. }
  2364. p_id = player.getId(player.getUuid(p_name));
  2365. permslist = getPermsFromPlayer(p_id);
  2366. listsize = list.getSize(permslist);
  2367. if(listsize == 0) {
  2368. msg.prefix(player, prefix_perms, "§rKeine Permissions vorhanden");
  2369. } else {
  2370. msg.prefix(player, prefix_perms, p_name);
  2371. for(i = 0; i < listsize; i++) {
  2372. msg(player, " - ", perm.getNameFromId(list.getIndex(permslist, i)));
  2373. }
  2374. }
  2375. }
  2376. goto("wait");
  2377. }
  2378. if(arg0 == "toggle") {
  2379. if(!perm.has(player, "perm.toggle")) {
  2380. perm.no(player, "perm.toggle");
  2381. goto("wait");
  2382. }
  2383. player_id = player.getId(player);
  2384. if(perm.has(player, "pseudoPerm")) {
  2385. reloadAllPerms(player_id);
  2386. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  2387. } else {
  2388. removeAllPermsTemporarly(player_id);
  2389. msg.prefix(player, prefix_commands, "Have fun as a user.");
  2390. }
  2391. goto("wait");
  2392. }
  2393. goto("perm_syntax");
  2394. @allsounds
  2395. if(size == 0) {
  2396. msg.prefix(player, prefix_commands, "§r/allsounds...");
  2397. msg(player, "§e - start");
  2398. msg(player, "§e - stop");
  2399. goto("wait");
  2400. }
  2401. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2402. if(arg0 == "start") {
  2403. if(!map.exists(sounds_map)) {
  2404. sounds_map = map.new();
  2405. }
  2406. player_uuid = player.getUuid(player);
  2407. script_id = map.get(sounds_map, player_uuid);
  2408. if(script_id != null) {
  2409. script = script.getFromId(script_id);
  2410. if(script != null) {
  2411. msg.prefix(player, prefix_commands, "Sounds already started.");
  2412. goto("wait");
  2413. }
  2414. }
  2415. script = script.start("system/playsounds");
  2416. script.setVar(script, "player", player);
  2417. map.add(sounds_map, player.getUuid(player), script.getId(script));
  2418. msg.prefix(player, prefix_commands, "Sounds started.");
  2419. goto("wait");
  2420. }
  2421. if(arg0 == "stop") {
  2422. if(!map.exists(sounds_map)) {
  2423. sounds_map = map.new();
  2424. }
  2425. script_id = map.get(sounds_map, player.getUuid(player));
  2426. if(script_id == null) {
  2427. msg.prefix(player, prefix_commands, "No sounds playing.");
  2428. goto("wait");
  2429. }
  2430. script = script.getFromId(script_id);
  2431. if(script == null) {
  2432. msg.prefix(player, prefix_commands, "No sounds playing.");
  2433. goto("wait");
  2434. }
  2435. script.term(script);
  2436. msg.prefix(player, prefix_commands, "Sounds stopped.");
  2437. goto("wait");
  2438. }
  2439. goto("wait");
  2440. @weather
  2441. if(size == 0) {
  2442. @weather_syntax
  2443. msg.prefix(player, "§eWeather", "§r/weather ...");
  2444. msg(player, "§e - clear [duration]");
  2445. msg(player, "§e - rain [duration]");
  2446. msg(player, "§e - thunder [duration]");
  2447. goto("wait");
  2448. }
  2449. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2450. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  2451. if(size == 2) {
  2452. duration = list.getIndex(args, 1);
  2453. if(!isDouble(duration)) {
  2454. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2455. goto("wait");
  2456. }
  2457. if(duration < 0) {
  2458. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2459. goto("wait");
  2460. }
  2461. } else {
  2462. duration = 12000;
  2463. }
  2464. world = loc.getWorld(entity.getLocation(player));
  2465. if(arg0 == "clear") {
  2466. if(size > 2) {
  2467. msg.prefix(player, prefix_commands, "§r/weather clear [duration]");
  2468. goto("wait");
  2469. }
  2470. world.clearWeather(world, duration);
  2471. msg.prefix(player, prefix_commands, "§rWetter wurde auf Klar gestellt");
  2472. goto("wait");
  2473. }
  2474. if(arg0 == "rain") {
  2475. if(size > 2) {
  2476. msg.prefix(player, prefix_commands, "§r/weather rain [duration]");
  2477. goto("wait");
  2478. }
  2479. world.setRain(world, duration);
  2480. msg.prefix(player, prefix_commands, "§rWetter wurde auf Regen gestellt");
  2481. goto("wait");
  2482. }
  2483. if(arg0 == "thunder") {
  2484. if(size > 2) {
  2485. msg.prefix(player, prefix_commands, "§r/weather thunder [duration]");
  2486. goto("wait");
  2487. }
  2488. world.setThunder(world, duration);
  2489. msg.prefix(player, prefix_commands, "§rWetter wurde auf Gewitter gestellt");
  2490. goto("wait");
  2491. }
  2492. goto("wait");
  2493. }
  2494. goto("weather_syntax");
  2495. @time
  2496. if(size == 0) {
  2497. @time_syntax
  2498. msg.prefix(player, "§eTime", "§r/time ...");
  2499. msg(player, "§e - set <time>");
  2500. msg(player, "§e - add <time>");
  2501. msg(player, "§e - <day / noon / night / midnight>");
  2502. goto("wait");
  2503. }
  2504. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2505. if(arg0 == "set") {
  2506. if(size != 2) {
  2507. msg.prefix(player, prefix_commands, "§r/time set <time>");
  2508. goto("wait");
  2509. }
  2510. setTime = list.getIndex(args, 1);
  2511. if(!isDouble(setTime)) {
  2512. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2513. goto("wait");
  2514. }
  2515. if(setTime < 0) {
  2516. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2517. goto("wait");
  2518. }
  2519. world = loc.getWorld(entity.getLocation(player));
  2520. while(setTime >= 24000) {
  2521. setTime -= 24000;
  2522. }
  2523. world.setTime(world, setTime);
  2524. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(setTime), "."));
  2525. goto("wait");
  2526. }
  2527. if(arg0 == "add") {
  2528. if(size != 2) {
  2529. msg.prefix(player, prefix_commands, "§r/time add <time>");
  2530. goto("wait");
  2531. }
  2532. addTime = list.getIndex(args, 1);
  2533. if(!isDouble(addTime)) {
  2534. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2535. goto("wait");
  2536. }
  2537. if(addTime < 0) {
  2538. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2539. goto("wait");
  2540. }
  2541. world = loc.getWorld(entity.getLocation(player));
  2542. newtime = world.getTime(world) + addTime;
  2543. while(newtime >= 24000) {
  2544. newtime -= 24000;
  2545. }
  2546. world.setTime(world, newtime);
  2547. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2548. goto("wait");
  2549. }
  2550. newtime = null;
  2551. if(arg0 == "day") {
  2552. newtime = 1000;
  2553. } elseif(arg0 == "noon") {
  2554. newtime = 6000;
  2555. } elseif(arg0 == "night") {
  2556. newtime = 13000;
  2557. } elseif(arg0 == "midnight") {
  2558. newtime = 18000;
  2559. }
  2560. if(newtime != null) {
  2561. world = loc.getWorld(entity.getLocation(player));
  2562. world.setTime(world, newtime);
  2563. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2564. goto("wait");
  2565. }
  2566. goto("time_syntax");
  2567. @gamerule
  2568. world = loc.getWorld(entity.getLocation(player));
  2569. if(size == 0) {
  2570. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  2571. goto("wait");
  2572. }
  2573. gamerule_string = list.getIndex(args, 0);
  2574. gamerule_key = gamerule.getKey(gamerule_string);
  2575. if(gamerule_key == null) {
  2576. msg.prefix(player, prefix_commands, "Gamerule doesn't exist.");
  2577. goto("wait");
  2578. }
  2579. gamerule_value = gamerule.getValue(world, gamerule_key);
  2580. if(size == 1) {
  2581. if(gamerule.isBool(gamerule_value)) {
  2582. value = gamerule.getBool(gamerule_value);
  2583. } elseif(gamerule.isInt(gamerule_value)) {
  2584. value = text.number(gamerule.getInt(gamerule_value));
  2585. } else {
  2586. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  2587. goto("wait");
  2588. }
  2589. msg.prefix(player, prefix_commands, concat(gamerule_string, " ", value));
  2590. goto("wait");
  2591. }
  2592. if(size == 2) {
  2593. if(!perm.has(player, "gamerule.write")) {
  2594. perm.no(player, "gamerule.write");
  2595. goto("wait");
  2596. }
  2597. value = list.getIndex(args, 1);
  2598. if(gamerule.isBool(gamerule_value)) {
  2599. if(!isBool(value)) {
  2600. msg.prefix(player, prefix_commands, "Boolean expected.");
  2601. goto("wait");
  2602. }
  2603. gamerule.setBool(gamerule_value, value);
  2604. } elseif(gamerule.isInt(gamerule_value)) {
  2605. if(!isDouble(value)) {
  2606. msg.prefix(player, prefix_commands, "Number expected.");
  2607. goto("wait");
  2608. }
  2609. gamerule.setInt(gamerule_value, value);
  2610. value = text.number(value);
  2611. } else {
  2612. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  2613. goto("wait");
  2614. }
  2615. if(world.getName(world) == "overworld") {
  2616. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, "."));
  2617. } else {
  2618. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, " (not persistent)."));
  2619. }
  2620. goto("wait");
  2621. }
  2622. goto("wait");
  2623. @tip
  2624. if(size == 0) {
  2625. msg.prefix(player, prefix_tips, "§r/tip ...");
  2626. msg(player, "§e - list §rList all tips");
  2627. msg(player, "§e - add <tip> <text> §rAdds a tip");
  2628. msg(player, "§e - remove <tip> §rRemoves a tip");
  2629. msg(player, "§e - <tip> [player] §rSends a tip to all/a player");
  2630. goto("wait");
  2631. }
  2632. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2633. if(arg0 == "list") {
  2634. msg(player, "§r--==§eTipps§r==--");
  2635. counter = 0;
  2636. getTippsListStatement = databank.prepare("SELECT * FROM tipps;");
  2637. result = databank.execute(getTippsListStatement);
  2638. while(databank.next(result)) {
  2639. tipp_key = databank.getString(result, 1);
  2640. tipp_value = databank.getString(result, 2);
  2641. msg(player, concat("§e", tipp_key, "§r : ", tipp_value));
  2642. counter++;
  2643. }
  2644. databank.close(result);
  2645. databank.close(getTippsListStatement);
  2646. if(counter == 0) {
  2647. msg.prefix(player, prefix_tips, "No tips available.");
  2648. }
  2649. goto("wait");
  2650. }
  2651. if(arg0 == "add") {
  2652. if(size < 3) {
  2653. msg.prefix(player, prefix_commands, "§r/tip add <name> <text>");
  2654. goto("wait");
  2655. }
  2656. tipp_key = list.getIndex(args, 1);
  2657. tipp_value = concatList(args, " ", 2, size - 1);
  2658. tipp_value = text.replace(tipp_value, "&", "§");
  2659. tipp.register(tipp_key, tipp_value);
  2660. msg.prefix(player, prefix_tips, "Tip added.");
  2661. goto("wait");
  2662. }
  2663. if(arg0 == "remove") {
  2664. if(size != 2) {
  2665. msg.prefix(player, prefix_commands, "§r/tip remove <name>");
  2666. goto("wait");
  2667. }
  2668. tipp_key = list.getIndex(args, 1);
  2669. removeTippStatement = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  2670. databank.setString(removeTippStatement, 1, tipp_key);
  2671. databank.workerExecute(removeTippStatement);
  2672. msg.prefix(player, prefix_tips, "Tip removed.");
  2673. goto("wait");
  2674. }
  2675. tipp_key = arg0;
  2676. tipp_value = tipp.get(tipp_key);
  2677. if(tipp_value == null) {
  2678. msg.prefix(player, prefix_tips, "This tip does not exist.");
  2679. goto("wait");
  2680. }
  2681. link = false;
  2682. if(text.contains(tipp_value, "https://")) {
  2683. link = true;
  2684. https_index = text.indexOf(tipp_value, "https://", 0);
  2685. space_index = text.indexOf(tipp_value, " ", https_index);
  2686. length = text.length(tipp_value);
  2687. if(https_index == 0) {
  2688. msg_before = "";
  2689. } else {
  2690. msg_before = text.subString(tipp_value, 0, https_index);
  2691. }
  2692. if(space_index == -1) {
  2693. msg_link = text.subString(tipp_value, https_index, length);
  2694. msg_after = "";
  2695. } else {
  2696. msg_link = text.subString(tipp_value, https_index, space_index);
  2697. msg_after = text.subString(tipp_value, space_index, length);
  2698. }
  2699. msg_link = text.link(msg_link, msg_link);
  2700. }
  2701. if(size == 1) {
  2702. p = "online";
  2703. } else {
  2704. p_name = list.getIndex(args, 1);
  2705. if(!isOnline(p_name)) {
  2706. msg.prefix(player, prefix_tips, "This player is not online.");
  2707. goto("wait");
  2708. }
  2709. p = read.player(p_name);
  2710. msg.prefix(player, prefix_tips, concat("Tip sent to §7", p_name, "§r."));
  2711. }
  2712. if(link) {
  2713. msg(p, concat("§r[", prefix_tips, "§r] "), msg_before, msg_link, msg_after);
  2714. } else {
  2715. msg(p, concat("§r[", prefix_tips, "§r] ", tipp_value));
  2716. }
  2717. goto("wait");
  2718. @help
  2719. if(size > 1) {
  2720. msg.prefix(player, prefix_commands, "§r/help [side]");
  2721. goto("wait");
  2722. }
  2723. //Auf Permission überprüfen
  2724. temp_list = list.new();
  2725. for(i = 0; i < list.getSize(command_list); i++) {
  2726. command = list.getIndex(command_list, i);
  2727. if(perm.has(player, command)) {
  2728. list.add(temp_list, command);
  2729. }
  2730. }
  2731. list.sort(temp_list);
  2732. temp_size = list.getSize(temp_list);
  2733. max_side = temp_size / 10;
  2734. if(size == 0) {
  2735. side = 1;
  2736. print_side = side - 1;
  2737. } else {
  2738. side = list.getIndex(args, 0);
  2739. if(!isDouble(side)) {
  2740. msg.prefix(player, prefix_commands, "§r/help [side]");
  2741. goto("wait");
  2742. }
  2743. print_side = side - 1;
  2744. if(print_side < 0 || print_side > max_side) {
  2745. msg.prefix(player, prefix_commands, concat("Möglich: 1 - ", text.number(math.roundDown(max_side + 1))));
  2746. goto("wait");
  2747. }
  2748. }
  2749. msg(player, concat("§a --- Help ", text.number(side), " ---"));
  2750. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  2751. if(i < temp_size) {
  2752. command = list.getIndex(temp_list, i);
  2753. command = text.hover(command, map.getOrDefault(command_map, command, ""));
  2754. msg(player, " /", command);
  2755. }
  2756. }
  2757. if(side == 1) {
  2758. backward = "§c<<Backward<<";
  2759. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  2760. } elseif(side > max_side) {
  2761. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  2762. forward = "§c>>Forward>>";
  2763. } else {
  2764. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  2765. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  2766. }
  2767. msg(player, backward, " ", forward);
  2768. goto("wait");
  2769. @cli
  2770. if(size != 1) {
  2771. msg.prefix(player, prefix_commands, "§r/cli <radius>");
  2772. goto("wait");
  2773. }
  2774. radius = list.getIndex(args, 0);
  2775. if(!isDouble(radius) || radius < 0) {
  2776. msg.prefix(player, prefix_commands, "Positive number expected.");
  2777. goto("wait");
  2778. }
  2779. entity.removeAll("net.minecraft.entity.item.ItemEntity", entity.getLocation(player), radius);
  2780. msg.prefix(player, prefix_commands, "§rItems entfernt");
  2781. goto("wait");
  2782. @plough
  2783. if(size != 1) {
  2784. msg.prefix(player, prefix_commands, "§r/plough <radius>");
  2785. goto("wait");
  2786. }
  2787. radius = list.getIndex(args, 0);
  2788. if(!isDouble(radius)) {
  2789. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2790. goto("wait");
  2791. }
  2792. if(radius < 0) {
  2793. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2794. goto("wait");
  2795. }
  2796. center_loc = getBlockLocation(entity.getLocation(player));
  2797. for(x = radius * -1; x <= radius; x++) {
  2798. for(z = radius * -1; z <= radius; z++) {
  2799. for(y = radius * -1; y <= radius; y++) {
  2800. length = math.hypot(x, math.hypot(y, z));
  2801. if(length <= radius) {
  2802. mod_loc = loc.mod(center_loc, x, y, z);
  2803. block = block.get(mod_loc);
  2804. if(block.hasTag(dirt_tag, block) && block.getType(loc.mod(mod_loc, 0, 1, 0)) == "minecraft:air") {
  2805. block.set(mod_loc, "minecraft:farmland[moisture=7]");
  2806. }
  2807. }
  2808. }
  2809. }
  2810. }
  2811. msg.prefix(player, prefix_commands, "§rFeld gepflügt");
  2812. goto("wait");
  2813. @plant
  2814. if(size != 1) {
  2815. msg.prefix(player, prefix_commands, "§r/plant <radius>");
  2816. goto("wait");
  2817. }
  2818. radius = list.getIndex(args, 0);
  2819. if(!isDouble(radius)) {
  2820. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2821. goto("wait");
  2822. }
  2823. if(radius < 0) {
  2824. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2825. goto("wait");
  2826. }
  2827. center_loc = getBlockLocation(entity.getLocation(player));
  2828. for(x = radius * -1; x <= radius; x++) {
  2829. for(z = radius * -1; z <= radius; z++) {
  2830. for(y = radius * -1; y <= radius; y++) {
  2831. length = math.hypot(x, math.hypot(y, z));
  2832. if(length <= radius) {
  2833. mod_loc = loc.mod(center_loc, x, y, z);
  2834. upper_loc = loc.mod(mod_loc, 0, 1, 0);
  2835. if(block.getType(mod_loc) == "minecraft:farmland" && block.getType(upper_loc) == "minecraft:air") {
  2836. block.set(upper_loc, "minecraft:wheat[age=7]");
  2837. }
  2838. }
  2839. }
  2840. }
  2841. }
  2842. msg.prefix(player, prefix_commands, "§rFeld bepflanzt");
  2843. goto("wait");
  2844. @grow
  2845. if(size != 1) {
  2846. msg.prefix(player, prefix_commands, "§r/grow <radius>");
  2847. goto("wait");
  2848. }
  2849. radius = list.getIndex(args, 0);
  2850. if(!isDouble(radius)) {
  2851. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2852. goto("wait");
  2853. }
  2854. if(radius < 0) {
  2855. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2856. goto("wait");
  2857. }
  2858. center_loc = getBlockLocation(entity.getLocation(player));
  2859. grow(center_loc, radius);
  2860. msg.prefix(player, prefix_commands, "§rFeld gedüngt");
  2861. goto("wait");
  2862. @start
  2863. if(size != 1) {
  2864. @starthelp
  2865. msg.prefix(sender, prefix_commands, "/start ...");
  2866. msg(sender, " - ai");
  2867. msg(sender, " - chat");
  2868. msg(sender, " - commands");
  2869. msg(sender, " - creative");
  2870. msg(sender, " - damage");
  2871. msg(sender, " - doors");
  2872. msg(sender, " - friends");
  2873. msg(sender, " - games");
  2874. msg(sender, " - harvest");
  2875. msg(sender, " - hawkeye");
  2876. msg(sender, " - herobrine");
  2877. msg(sender, " - loom");
  2878. msg(sender, " - mails");
  2879. msg(sender, " - perms");
  2880. msg(sender, " - pumpkin");
  2881. msg(sender, " - scheduler");
  2882. msg(sender, " - shop");
  2883. msg(sender, " - sitting");
  2884. msg(sender, " - stats");
  2885. msg(sender, " - story");
  2886. msg(sender, " - survival");
  2887. msg(sender, " - ticket");
  2888. msg(sender, " - timber");
  2889. msg(sender, " - voxel");
  2890. goto("wait");
  2891. }
  2892. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2893. if(arg0 == "ai") {
  2894. script = script.get("Ai");
  2895. if(script != null) {
  2896. script.term(script);
  2897. }
  2898. script.startNamed("Ai", "system/ai", "utils/u_general");
  2899. }
  2900. elseif(arg0 == "commands") {
  2901. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
  2902. if(script == null) {
  2903. snuvi.debug("Old commands script still active due to error in new script");
  2904. goto("wait");
  2905. }
  2906. script.term(script.get());
  2907. }
  2908. elseif(arg0 == "chat") {
  2909. script = script.get("Chat");
  2910. if(script != null) {
  2911. script.term(script);
  2912. }
  2913. script.startNamed("Chat", "system/chat", "utils/u_general");
  2914. }
  2915. elseif(arg0 == "creative") {
  2916. script = script.get("Creative");
  2917. if(script != null) {
  2918. script.term(script);
  2919. }
  2920. script.startNamed("Creative", "system/creative", "utils/u_general");
  2921. }
  2922. elseif(arg0 == "damage") {
  2923. script = script.get("Damage");
  2924. if(script != null) {
  2925. script.term(script);
  2926. }
  2927. script.startNamed("Damage", "system/damage");
  2928. }
  2929. elseif(arg0 == "doors") {
  2930. script = script.get("Doors");
  2931. if(script != null) {
  2932. script.term(script);
  2933. }
  2934. script.startNamed("Doors", "system/doors", "utils/u_general");
  2935. }
  2936. elseif(arg0 == "games") {
  2937. script = script.get("Gamecenter");
  2938. if(script != null) {
  2939. script.term(script);
  2940. }
  2941. script.startNamed("Gamecenter", "system/gamecenter", "utils/u_general", "utils/u_games");
  2942. }
  2943. elseif(arg0 == "harvest") {
  2944. script = script.get("Harvest");
  2945. if(script != null) {
  2946. script.term(script);
  2947. }
  2948. script.startNamed("Harvest", "system/harvest", "utils/u_general");
  2949. }
  2950. elseif(arg0 == "hawkeye") {
  2951. script = script.get("Hawkeye");
  2952. if(script != null) {
  2953. script.term(script);
  2954. }
  2955. script.startNamed("Hawkeye", "system/hawkeye", "utils/u_general");
  2956. }
  2957. elseif(arg0 == "herobrine") {
  2958. script = script.get("Herobrine");
  2959. if(script != null) {
  2960. script.term(script);
  2961. }
  2962. script.startNamed("Herobrine", "system/herobrine", "utils/u_general");
  2963. }
  2964. elseif(arg0 == "loom") {
  2965. script = script.get("Loom");
  2966. if(script != null) {
  2967. script.term(script);
  2968. }
  2969. script.startNamed("Loom", "system/loom");
  2970. }
  2971. elseif(arg0 == "perms") {
  2972. script.start("system/perms", "utils/u_general");
  2973. }
  2974. elseif(arg0 == "pumpkin") {
  2975. script = script.get("Pumpkin");
  2976. if(script != null) {
  2977. script.term(script);
  2978. }
  2979. script.startNamed("Pumpkin", "system/pumpkin", "utils/u_general");
  2980. }
  2981. elseif(arg0 == "stats") {
  2982. script = script.get("Ranklist");
  2983. if(script != null) {
  2984. script.term(script);
  2985. }
  2986. script.startNamed("Ranklist", "system/ranklist", "utils/u_general", "utils/u_games");
  2987. }
  2988. elseif(arg0 == "scheduler") {
  2989. script = script.get("Scheduler");
  2990. if(script != null) {
  2991. script.term(script);
  2992. }
  2993. script.startNamed("Scheduler", "system/scheduler", "utils/u_general");
  2994. }
  2995. elseif(arg0 == "shop") {
  2996. script = script.get("Shops");
  2997. if(script != null) {
  2998. script.term(script);
  2999. }
  3000. script.startNamed("Shops", "system/chestshops", "utils/u_general");
  3001. }
  3002. elseif(arg0 == "mails") {
  3003. script = script.get("Mails");
  3004. if(script != null) {
  3005. script.term(script);
  3006. }
  3007. script.startNamed("Mails", "system/mailsystem", "utils/u_general");
  3008. }
  3009. elseif(arg0 == "ticket") {
  3010. script = script.get("Ticket");
  3011. if(script != null) {
  3012. script.term(script);
  3013. }
  3014. script.startNamed("Ticket", "system/tickets", "utils/u_general");
  3015. }
  3016. elseif(arg0 == "timber") {
  3017. script = script.get("Timber");
  3018. if(script != null) {
  3019. script.term(script);
  3020. }
  3021. script.startNamed("Timber", "system/timber", "utils/u_general");
  3022. }
  3023. elseif(arg0 == "story") {
  3024. script = script.get("Story");
  3025. if(script != null) {
  3026. script.term(script);
  3027. }
  3028. script.startNamed("Story", "system/story", "utils/u_general");
  3029. script = script.get("QuestsAdmont");
  3030. if(script != null) {
  3031. script.term(script);
  3032. }
  3033. script.startNamed("QuestsAdmont", "story/admont/core", "utils/u_general", "utils/u_quest");
  3034. script = script.get("QuestsSchiffbruch");
  3035. if(script != null) {
  3036. script.term(script);
  3037. }
  3038. script.startNamed("QuestsSchiffbruch", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
  3039. }
  3040. elseif(arg0 == "sitting") {
  3041. script = script.get("Sitting");
  3042. if(script != null) {
  3043. script.term(script);
  3044. }
  3045. script.startNamed("Sitting", "system/sitting", "utils/u_general");
  3046. }
  3047. elseif(arg0 == "survival") {
  3048. script = script.get("Survival");
  3049. if(script != null) {
  3050. script.term(script);
  3051. }
  3052. script.startNamed("Survival", "system/survival", "utils/u_general");
  3053. }
  3054. elseif(arg0 == "voxel") {
  3055. script = script.get("Voxel");
  3056. if(script != null) {
  3057. script.term(script);
  3058. }
  3059. script.startNamed("Voxel", "system/voxel");
  3060. }
  3061. else {
  3062. goto("starthelp");
  3063. }
  3064. goto("wait");
  3065. @senditem
  3066. if(size != 1) {
  3067. msg.prefix(player, prefix_commands, "/senditem <player>");
  3068. goto("wait");
  3069. }
  3070. item = living.getEquip(player, "hand");
  3071. if(item.getType(item) == "minecraft:air") {
  3072. msg.prefix(player, prefix_commands, "§rDu musst ein Item in der Hand halten");
  3073. goto("wait");
  3074. }
  3075. p_name = list.getIndex(args, 0);
  3076. p_uuid = player.getUuid(p_name);
  3077. if(p_uuid == null) {
  3078. msg.prefix(player, prefix_commands, "This player has never been online.");
  3079. goto("wait");
  3080. }
  3081. p = read.player(p_name);
  3082. if(p == null) {
  3083. msg.prefix(player, prefix_commands, "This player is not online.");
  3084. goto("wait");
  3085. }
  3086. player.safeGiveItem(p, item);
  3087. player.removeItem(player, item);
  3088. goto("wait");
  3089. @top
  3090. player_loc = entity.getLocation(player);
  3091. y = 255;
  3092. loc.setY(player_loc, y);
  3093. while(block.isAir(player_loc)) {
  3094. loc.setY(player_loc, y);
  3095. y--;
  3096. }
  3097. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  3098. goto("wait");
  3099. @story
  3100. story_spawn = world.getStorySpawn();
  3101. world = loc.getWorld(story_spawn);
  3102. if(world == null) {
  3103. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3104. goto("wait");
  3105. }
  3106. if(size > 1) {
  3107. msg.prefix(player, prefix_commands, "/story [player]");
  3108. goto("wait");
  3109. }
  3110. if(size == 1) {
  3111. affectedname = list.getIndex(args, 0);
  3112. affectedplayer = read.player(affectedname);
  3113. if(affectedplayer == null) {
  3114. msg.prefix(player, prefix_commands, "This player is not online.");
  3115. goto("wait");
  3116. }
  3117. if(!perm.has(player, "teleport.other")) {
  3118. perm.no(player, "teleport.other");
  3119. goto("wait");
  3120. }
  3121. }
  3122. if(player.hasMinigame(affectedplayer)) {
  3123. if(size == 1) {
  3124. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  3125. } else {
  3126. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  3127. }
  3128. goto("wait");
  3129. }
  3130. if(size == 1) {
  3131. if(player != affectedplayer) {
  3132. affectedname = player.getName(affectedplayer);
  3133. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the story world."));
  3134. }
  3135. }
  3136. if(player.teleport(affectedplayer, story_spawn, true)) {
  3137. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the story world.");
  3138. }
  3139. goto("wait");
  3140. @games
  3141. world = loc.getWorld(gamesspawn);
  3142. if(world == null) {
  3143. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3144. goto("wait");
  3145. }
  3146. if(size > 1) {
  3147. msg.prefix(player, prefix_commands, "/games [player]");
  3148. goto("wait");
  3149. }
  3150. if(size == 1) {
  3151. affectedname = list.getIndex(args, 0);
  3152. affectedplayer = read.player(affectedname);
  3153. if(affectedplayer == null) {
  3154. msg.prefix(player, prefix_commands, "This player is not online.");
  3155. goto("wait");
  3156. }
  3157. if(!perm.has(player, "teleport.other")) {
  3158. perm.no(player, "teleport.other");
  3159. goto("wait");
  3160. }
  3161. }
  3162. if(player.hasMinigame(affectedplayer)) {
  3163. if(size == 1) {
  3164. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  3165. } else {
  3166. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  3167. }
  3168. goto("wait");
  3169. }
  3170. if(size == 1) {
  3171. if(player != affectedplayer) {
  3172. affectedname = player.getName(affectedplayer);
  3173. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the games world."));
  3174. }
  3175. }
  3176. if(player.teleport(affectedplayer, gamesspawn, true)) {
  3177. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the games world.");
  3178. }
  3179. goto("wait");
  3180. @bug
  3181. msg.prefix(player, prefix_commands, "Found a bug? Report it to marvinius with §b/mail marvinius <message>");
  3182. goto("wait");
  3183. @repair
  3184. item = living.getEquip(player, "hand");
  3185. if(item.getType(item) == "minecraft:air") {
  3186. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3187. goto("wait");
  3188. }
  3189. item.setDamage(item, 0);
  3190. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  3191. goto("wait");
  3192. @report
  3193. msg.prefix(player, prefix_commands, "Want to report a player?");
  3194. msg(player, " - §b/ticket <message>");
  3195. msg(player, " - §b/mail marvinius <message>");
  3196. goto("wait");
  3197. @playtime
  3198. if(size == 0) {
  3199. p_id = player.getId(player);
  3200. arg0 = player.getName(player);
  3201. } else {
  3202. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3203. if(arg0 == "year") {
  3204. if(!perm.has(player, "playtime.year")) {
  3205. perm.no(player, "playtime.year");
  3206. goto("wait");
  3207. }
  3208. calendar = time.new(time.getMillis());
  3209. now_month = time.getMonth(calendar);
  3210. now_year = time.getYear(calendar);
  3211. if(size == 1) {
  3212. year = now_year;
  3213. } else {
  3214. year = list.getIndex(args, 1);
  3215. if(!isDouble(year)) {
  3216. msg.prefix(player, prefix_commands, "Number expected.");
  3217. goto("wait");
  3218. }
  3219. if(year > now_year) {
  3220. year = now_year;
  3221. }
  3222. }
  3223. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3224. since_minutes = playtime.getTotalOnlineMinutes();
  3225. //Tabelle erstellen
  3226. table = table.new("§8", 4, 5, 5);
  3227. msg(player, table.getStart(table));
  3228. msg(player, table.get(table, text.number(year), "Playtime", "Change"));
  3229. msg(player, table.getMiddle(table));
  3230. //Erstes Mitternacht des gewählten Jahres festlegen
  3231. now_day = time.getDay(calendar);
  3232. time.nextDay(calendar);
  3233. midnight = time.from(calendar) - (time.getDaysBetween(1, 1, year, now_day, now_month, now_year) + 1) * 86400000;
  3234. //Monats-Spielzeit berechnen
  3235. temp_list = list.new();
  3236. list.add(temp_list, playtime.getInterval(midnight - time.getMonthDays(12, year - 1) * 86400000, midnight)); //Dezember des Vorjahres hinzufügen
  3237. for(i = 1; i <= 12; i++) {
  3238. midnight_2 = midnight + time.getMonthDays(i, now_year) * 86400000; //Alle Tage eines Monats * 24 Stunden
  3239. minutes = playtime.getInterval(midnight, midnight_2);
  3240. list.add(temp_list, minutes);
  3241. midnight = midnight_2;
  3242. if(i == now_month && year == now_year) {
  3243. minutes += since_minutes;
  3244. }
  3245. }
  3246. for(i = 1; i <= 12; i++) {
  3247. minutes = list.getIndex(temp_list, i);
  3248. hours = math.roundDown(minutes / 60);
  3249. mod_minutes = minutes % 60;
  3250. if(mod_minutes < 10) {
  3251. time_string = concat("§6", text.number(hours), ":0", text.number(mod_minutes), " h");
  3252. } else {
  3253. time_string = concat("§6", text.number(hours), ":", text.number(mod_minutes), " h");
  3254. }
  3255. pre_minutes = list.getIndex(temp_list, i - 1);
  3256. if(minutes >= pre_minutes) {
  3257. color = "§a+";
  3258. a = minutes;
  3259. b = pre_minutes;
  3260. } else {
  3261. color = "§c-";
  3262. a = pre_minutes;
  3263. b = minutes;
  3264. }
  3265. if(b == 0) {
  3266. change = "";
  3267. } else {
  3268. change = math.round(a / b * 100 - 100);
  3269. change = concat(color, text.number(change), " %");
  3270. }
  3271. msg(player, table.get(table, concat("§6", month.getShortName(i)), time_string, change));
  3272. if(i == now_month && year == now_year) {
  3273. break;
  3274. }
  3275. }
  3276. //Tabelle beenden
  3277. msg(player, table.getEnd(table));
  3278. goto("wait");
  3279. }
  3280. if(arg0 == "month") {
  3281. if(!perm.has(player, "playtime.month")) {
  3282. perm.no(player, "playtime.month");
  3283. goto("wait");
  3284. }
  3285. calendar = time.new(time.getMillis());
  3286. now_month = time.getMonth(calendar);
  3287. now_year = time.getYear(calendar);
  3288. year = now_year;
  3289. if(size == 1) {
  3290. month = now_month;
  3291. } else {
  3292. month = list.getIndex(args, 1);
  3293. if(!isDouble(month)) {
  3294. msg.prefix(player, prefix_commands, "Number expected.");
  3295. goto("wait");
  3296. }
  3297. if(month < 1) {
  3298. month = 1;
  3299. } elseif(month > 12) {
  3300. month = 12;
  3301. }
  3302. if(size == 3) {
  3303. year = list.getIndex(args, 2);
  3304. if(!isDouble(year)) {
  3305. msg.prefix(player, prefix_commands, "Number expected.");
  3306. goto("wait");
  3307. }
  3308. }
  3309. if(year > now_year ||(year >= now_year && month > now_month)) {
  3310. month = now_month;
  3311. year = now_year;
  3312. }
  3313. }
  3314. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3315. since_minutes = playtime.getTotalOnlineMinutes();
  3316. //Tabelle erstellen
  3317. table = table.new("§8", 4, 5, 5);
  3318. msg(player, table.getStart(table));
  3319. msg(player, table.get(table, month.getShortName(month), "Playtime", "Players"));
  3320. msg(player, table.getMiddle(table));
  3321. //Erstes Mitternacht des gewählten Monats festlegen
  3322. now_day = time.getDay(calendar);
  3323. time.nextDay(calendar);
  3324. midnight = time.from(calendar) - (time.getDaysBetween(1, month, year, now_day, now_month, now_year) + 1) * 86400000;
  3325. //Tages-Spielzeit berechnen
  3326. for(i = 1; i <= time.getMonthDays(month, year); i++) {
  3327. players = playtime.getPlayersPerInterval(midnight, midnight + 86400000);
  3328. minutes = playtime.getInterval(midnight, midnight + 86400000);
  3329. midnight += 86400000; //24 Stunden
  3330. if(i == now_day && month == now_month && year == now_year) {
  3331. minutes += since_minutes;
  3332. }
  3333. hours = math.roundDown(minutes / 60);
  3334. minutes = minutes % 60;
  3335. if(minutes < 10) {
  3336. time_string = concat("§6", text.number(hours), ":0", text.number(minutes), " h");
  3337. } else {
  3338. time_string = concat("§6", text.number(hours), ":", text.number(minutes), " h");
  3339. }
  3340. msg(player, table.get(table, concat("§6", text.number(i)), time_string, text.number(players)));
  3341. if(i == now_day && month == now_month && year == now_year) {
  3342. break;
  3343. }
  3344. }
  3345. //Tabelle beenden
  3346. msg(player, table.getEnd(table));
  3347. goto("wait");
  3348. }
  3349. if(arg0 == "all") {
  3350. msg(player, getSpacer());
  3351. msg.prefix(player, prefix_commands, "Server-Playtime");
  3352. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3353. since_minutes = playtime.getTotalOnlineMinutes();
  3354. now_time = time.getMillis();
  3355. //Spielzeit heute
  3356. calendar = time.new(now_time);
  3357. time.nextDay(calendar);
  3358. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3359. minutes = playtime.getInterval(midnight, now_time) + since_minutes;
  3360. hours = text.number(math.roundDown(minutes / 60));
  3361. minutes = text.number(minutes % 60);
  3362. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3363. //Spielzeit 30 Tage für alle Spieler
  3364. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3365. minutes = playtime.getInterval(oneMonthAgo, now_time) + since_minutes;
  3366. hours = text.number(math.roundDown(minutes / 60));
  3367. minutes = text.number(minutes % 60);
  3368. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3369. //Spielzeit gesamt
  3370. minutes = playtime.getTotal();
  3371. hours = text.number(math.roundDown(minutes / 60));
  3372. minutes = text.number(minutes % 60);
  3373. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3374. goto("wait");
  3375. }
  3376. if(!perm.has(player, "playtime.other")) {
  3377. perm.no(player, "playtime.other");
  3378. goto("wait");
  3379. }
  3380. }
  3381. if(!checkIfEverOnline(arg0)) {
  3382. msg.prefix(player, prefix_commands, "This player has never been online.");
  3383. goto("wait");
  3384. }
  3385. now_time = time.getMillis();
  3386. p_uuid = player.getUuid(arg0);
  3387. arg0 = player.getName(p_uuid);
  3388. p_id = player.getId(p_uuid);
  3389. msg(player, getSpacer());
  3390. msg.prefix(player, prefix_commands, concat("Playtime of ", player.getName(p_uuid)));
  3391. //Online seit
  3392. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  3393. if(isOnline(arg0)) {
  3394. since_hours = math.roundDown(since_minutes / 60);
  3395. mod_minutes = since_minutes % 60;
  3396. msg(player, concat("§aOnline since: §r", text.number(since_hours), " hours ", text.number(mod_minutes), " minutes"));
  3397. } else {
  3398. msg(player, "§6Status: ", "§cOffline");
  3399. }
  3400. //Spielzeit heute
  3401. calendar = time.new(now_time);
  3402. time.nextDay(calendar);
  3403. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3404. minutes = playtime.getPlayerInterval(p_id, midnight, now_time) + since_minutes;
  3405. hours = text.number(math.roundDown(minutes / 60));
  3406. minutes = text.number(minutes % 60);
  3407. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3408. //Spielzeit 30 Tage
  3409. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3410. minutes = playtime.getPlayerInterval(p_id, oneMonthAgo, now_time) + since_minutes;
  3411. hours = text.number(math.roundDown(minutes / 60));
  3412. minutes = text.number(minutes % 60);
  3413. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3414. //Spielzeit gesamt
  3415. minutes = playtime.getPlayerTotal(p_id);
  3416. hours = text.number(math.roundDown(minutes / 60));
  3417. minutes = text.number(minutes % 60);
  3418. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3419. goto("wait");
  3420. @datatools
  3421. if(size == 0) {
  3422. @datatoolshelp
  3423. msg.prefix(player, prefix_datatools, "/datatools ...");
  3424. msg(player, "§6 - hide <name> §rHides wusi on an itemstack");
  3425. msg(player, "§6 - attribute <attribut> <slot> <double> <op> §rFügt ein Attribut zu einem ItemStack hinzu");
  3426. msg(player, "§6 - hide-entity §rMacht ein Entity unsichtbar");
  3427. msg(player, "§6 - show-entity §rMacht ein Entity sichtbar");
  3428. msg(player, "§6 - name-entity <name> §rSetzt den Namen des Entities");
  3429. msg(player, "§6 - name-visibility <boolean> §rZeigt den Namen (nicht) dauerhaft");
  3430. msg(player, "§6 - name-item <name> §rSetzt den Itemnamen");
  3431. msg(player, "§6 - lore-item <line> <lore> §rSetzt die Itemlore");
  3432. goto("wait");
  3433. }
  3434. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3435. if(arg0 == "hide") {
  3436. if(size < 2) {
  3437. msg.prefix(player, prefix_datatools, "§r/datatools hide <name>");
  3438. goto("wait");
  3439. }
  3440. item = living.getEquip(player, "hand");
  3441. if(item.getType(item) == "minecraft:air") {
  3442. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  3443. goto("wait");
  3444. }
  3445. name = text.concatList(args, " ", 1, size - 1);
  3446. if(item.hide(item, name)) {
  3447. msg.prefix(player, prefix_datatools, "You hided something.");
  3448. } else {
  3449. msg.prefix(player, prefix_datatools, "You can't hide that.");
  3450. }
  3451. goto("wait");
  3452. }
  3453. if(arg0 == "attribute") {
  3454. if(size < 5) {
  3455. msg.prefix(player, prefix_datatools, "/datatools attribute <attribut> <slot> <double> <op>");
  3456. goto("wait");
  3457. }
  3458. item = living.getEquip(player, "hand");
  3459. if(item.getType(item) == "minecraft:air") {
  3460. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3461. goto("wait");
  3462. }
  3463. double = list.getIndex(args, 3);
  3464. if(!isDouble(double) || double < 0) {
  3465. msg.prefix(player, prefix_datatools, "Natural number expected.");
  3466. goto("wait");
  3467. }
  3468. attribut = concat("generic.", list.getIndex(args, 1));
  3469. slot = read.slot(list.getIndex(args, 2));
  3470. if(slot == null) {
  3471. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  3472. goto("wait");
  3473. }
  3474. operation = list.getIndex(args, 4);
  3475. if(operation == "ADDITION") {
  3476. operation = 0;
  3477. } elseif(operation == "MULTIPLY_BASE") {
  3478. operation = 1;
  3479. } elseif(operation == "MULTIPLY_TOTAL") {
  3480. operation = 2;
  3481. } else {
  3482. msg.prefix(player, prefix_datatools, "Incorrect operation.");
  3483. goto("wait");
  3484. }
  3485. item.addAttribute(item, attribut, slot, double, operation);
  3486. msg.prefix(player, prefix_datatools, "Attribute added.");
  3487. goto("wait");
  3488. }
  3489. if(arg0 == "name-item") {
  3490. if(size < 2) {
  3491. msg.prefix(player, prefix_datatools, "§r/datatools name-item <name>");
  3492. goto("wait");
  3493. }
  3494. item = living.getEquip(player, "hand");
  3495. if(item.getType(item) == "minecraft:air") {
  3496. msg.prefix(player, prefix_datatools, "§rDu musst ein Item in der Hand halten.");
  3497. goto("wait");
  3498. }
  3499. name = text.concatList(args, " ", 1, size - 1);
  3500. name = text.replace(name, "&", "§");
  3501. name = text.replace(name, "\\n", "\n");
  3502. item.setName(item, name);
  3503. msg.prefix(player, prefix_datatools, concat("Das Item trägt nun den Namen ", name, "§r."));
  3504. goto("wait");
  3505. }
  3506. if(arg0 == "lore-item") {
  3507. if(size < 3) {
  3508. msg.prefix(player, prefix_datatools, "§r/datatools lore-item <line> <lore>");
  3509. goto("wait");
  3510. }
  3511. item = living.getEquip(player, "hand");
  3512. if(item.getType(item) == "minecraft:air") {
  3513. msg.prefix(player, prefix_datatools, "§rDu musst ein Item in der Hand halten.");
  3514. goto("wait");
  3515. }
  3516. line = list.getIndex(args, 1);
  3517. if(!isDouble(line)) {
  3518. msg.prefix(player, prefix_datatools, "Zahl erwartet.");
  3519. goto("wait");
  3520. }
  3521. if(line < 0) {
  3522. msg.prefix(player, prefix_datatools, "Positive Zahl erwartet.");
  3523. goto("wait");
  3524. }
  3525. lore = text.concatList(args, " ", 2, size - 1);
  3526. lore = text.replace(lore, "&", "§");
  3527. item.addLore(item, line, lore);
  3528. msg.prefix(player, prefix_datatools, "Die neue Lore wurde hinzugefügt.");
  3529. goto("wait");
  3530. }
  3531. if(arg0 == "maxhealth") {
  3532. if(size < 2) {
  3533. msg.prefix(player, prefix_datatools, "§r/datatools maxhealth <value>");
  3534. goto("wait");
  3535. }
  3536. value = list.getIndex(args, 1);
  3537. if(!isDouble(value)) {
  3538. msg.prefix(player, prefix_datatools, "Zahl erwartet.");
  3539. goto("wait");
  3540. }
  3541. templist = living.near(player, 3);
  3542. if(list.getSize(templist) == 0) {
  3543. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3544. goto("wait");
  3545. }
  3546. entity = list.getIndex(templist, 0);
  3547. if(isPlayer(entity)) {
  3548. msg.prefix(player, prefix_datatools, "Auf Spieler nicht anwendbar.");
  3549. goto("wait");
  3550. }
  3551. living.setMaxHealth(entity, value);
  3552. msg.prefix(player, prefix_datatools, concat("Das Entity ", entity.getType(entity), " hat nun Maxhealth: ", living.getMaxHealth(entity), "§r."));
  3553. goto("wait");
  3554. }
  3555. if(arg0 == "name-entity") {
  3556. if(size < 2) {
  3557. msg.prefix(player, prefix_datatools, "§r/datatools name-entity <name>");
  3558. goto("wait");
  3559. }
  3560. templist = living.near(player, 3);
  3561. if(list.getSize(templist) == 0) {
  3562. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3563. goto("wait");
  3564. }
  3565. entity = list.getIndex(templist, 0);
  3566. name = text.concatList(args, " ", 1, size - 1);
  3567. name = text.replace(name, "&", "§");
  3568. name = text.replace(name, "\\n", "\n");
  3569. entity.setName(entity, name, true);
  3570. msg.prefix(player, prefix_datatools, concat("Das Entity trägt nun den Namen ", name, "§r."));
  3571. goto("wait");
  3572. }
  3573. if(arg0 == "name-visibility") {
  3574. if(size != 2) {
  3575. msg.prefix(player, prefix_datatools, "§r/datatools name-visibility <boolean>");
  3576. goto("wait");
  3577. }
  3578. templist = living.near(player, 3);
  3579. if(list.getSize(templist) == 0) {
  3580. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3581. goto("wait");
  3582. }
  3583. entity = list.getIndex(templist, 0);
  3584. boolean = list.getIndex(args, 1);
  3585. name = entity.getName(entity);
  3586. entity.setName(entity, name, boolean);
  3587. msg.prefix(player, prefix_datatools, "Änderung durchgeführt.");
  3588. goto("wait");
  3589. }
  3590. if(arg0 == "hide-entity") {
  3591. if(size != 1) {
  3592. msg.prefix(player, prefix_datatools, "§r/datatools hide-entity");
  3593. goto("wait");
  3594. }
  3595. templist = living.near(player, 3);
  3596. if(list.getSize(templist) == 0) {
  3597. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3598. goto("wait");
  3599. }
  3600. entity = list.getIndex(templist, 0);
  3601. entity.setInvisible(entity, true);
  3602. msg.prefix(player, prefix_datatools, "Das Entity ist nun unsichtbar.");
  3603. goto("wait");
  3604. }
  3605. if(arg0 == "show-entity") {
  3606. if(size != 1) {
  3607. msg.prefix(player, prefix_datatools, "§r/datatools show-entity");
  3608. goto("wait");
  3609. }
  3610. templist = living.near(player, 3);
  3611. if(list.getSize(templist) == 0) {
  3612. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3613. goto("wait");
  3614. }
  3615. entity = list.getIndex(templist, 0);
  3616. entity.setInvisible(entity, false);
  3617. msg.prefix(player, prefix_datatools, "Das Entity ist nun sichtbar.");
  3618. goto("wait");
  3619. }
  3620. goto("datatoolshelp");
  3621. @human
  3622. if(size == 0) {
  3623. @humanhelp
  3624. msg.prefix(player, prefix_human, "/human ...");
  3625. msg(player, concat("§6 - spawn §rSpawnt einen Human"));
  3626. msg(player, concat("§6 - set <name> §rSetzt den Skin"));
  3627. msg(player, concat("§6 - setuuid <uuid> §rSetzt den Skin"));
  3628. msg(player, concat("§6 - name §rSetzt den Namen"));
  3629. msg(player, concat("§6 - kill §rTötet einen Human"));
  3630. msg(player, concat("§6 - size <scale> §rSetzt die Größenskalierung"));
  3631. msg(player, concat("§6 - steve §rSchaltet auf Steve Skin"));
  3632. msg(player, concat("§6 - alex §rSchaltet auf Alex Skin"));
  3633. msg(player, concat("§6 - statue <bool> §rToggles between statue"));
  3634. goto("wait");
  3635. }
  3636. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3637. if(arg0 == "spawn") {
  3638. human.spawn(entity.getLocation(player));
  3639. msg.prefix(player, prefix_human, "Human gespawnt.");
  3640. goto("wait");
  3641. }
  3642. player_loc = entity.getLocation(player);
  3643. human = entity.get(player_loc, 3, "me.km.entities.EntityHuman");
  3644. if(human == null) {
  3645. msg.prefix(player, prefix_human, "Zu weit weg vom Human.");
  3646. goto("wait");
  3647. }
  3648. if(arg0 == "set") {
  3649. if(size == 2) {
  3650. name = list.getIndex(args, 1);
  3651. human.setSkin(human, name);
  3652. msg.prefix(player, prefix_human, "Skin gesetzt.");
  3653. goto("wait");
  3654. }
  3655. }
  3656. elseif(arg0 == "setuuid") {
  3657. if(size == 2) {
  3658. uuid = list.getIndex(args, 1);
  3659. human.setSkin(human, uuid);
  3660. msg.prefix(player, prefix_human, "Skin gesetzt.");
  3661. goto("wait");
  3662. }
  3663. }
  3664. elseif(arg0 == "name") {
  3665. if(size > 1) {
  3666. name = text.concatList(args, " ", 1, size - 1);
  3667. name = text.replace(name, "&", "§");
  3668. name = text.replace(name, "\\n", "\n");
  3669. entity.setName(human, name, true);
  3670. msg.prefix(player, prefix_human, concat("Das Entity trägt nun den Namen ", name, "§r."));
  3671. goto("wait");
  3672. }
  3673. }
  3674. elseif(arg0 == "kill") {
  3675. entity.remove(human);
  3676. msg.prefix(player, prefix_human, "Human getötet.");
  3677. goto("wait");
  3678. }
  3679. elseif(arg0 == "size") {
  3680. if(size == 2) {
  3681. scale = list.getIndex(args, 1);
  3682. if(!isDouble(scale)) {
  3683. msg.prefix(player, prefix_human, "Zahl erwartet.");
  3684. goto("wait");
  3685. }
  3686. if(scale > 10) {
  3687. msg.prefix(player, prefix_human, "Maximal 10.");
  3688. scale = 10;
  3689. }
  3690. human.setScale(human, scale);
  3691. msg.prefix(player, prefix_human, "Größe verändert.");
  3692. goto("wait");
  3693. }
  3694. }
  3695. elseif(arg0 == "steve") {
  3696. human.setSlim(human, false);
  3697. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  3698. goto("wait");
  3699. }
  3700. elseif(arg0 == "alex") {
  3701. human.setSlim(human, true);
  3702. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  3703. goto("wait");
  3704. }
  3705. elseif(arg0 == "statue") {
  3706. if(size == 1) {
  3707. bool = true;
  3708. } elseif(size == 2) {
  3709. bool = list.getIndex(args, 1);
  3710. if(bool != true && bool != false) {
  3711. bool = true;
  3712. }
  3713. }
  3714. human.setStatue(human, bool);
  3715. msg.prefix(player, prefix_human, "Human changed.");
  3716. goto("wait");
  3717. }
  3718. goto("humanhelp");
  3719. @answer
  3720. if(player.isMuted(player)) {
  3721. msg.prefix(player, "§6Commands", "You are muted.");
  3722. goto("wait");
  3723. }
  3724. if(size < 1) {
  3725. msg.prefix(sender, prefix_commands, "/answer <message>");
  3726. goto("wait");
  3727. }
  3728. player_uuid = player.getUuid(sender);
  3729. p_uuid = map.get(answer_map, player_uuid);
  3730. if(p_uuid == null) {
  3731. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  3732. goto("wait");
  3733. }
  3734. message = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  3735. if(text.startsWith(message, "https://", 0)) {
  3736. message = text.link(message, message);
  3737. }
  3738. if(player.getId(p_uuid) == 18) {
  3739. msg(sender, "§6[ -> §cSERVER§6] ", message);
  3740. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  3741. } else {
  3742. p = player.get(p_uuid);
  3743. if(p == null) {
  3744. msg.prefix(sender, prefix_commands, "This player is not online.");
  3745. goto("wait");
  3746. }
  3747. msg(sender, text.concat2(concat("§6[ -> §c", player.getName(p), "§6] "), message));
  3748. msg(p, text.concat2(concat("§6[§c", sender_name, "§6] "), message));
  3749. }
  3750. map.add(answer_map, p_uuid, player_uuid);
  3751. map.add(answer_map, player_uuid, p_uuid);
  3752. goto("wait");
  3753. @msg
  3754. if(player.isMuted(player)) {
  3755. msg.prefix(player, "§6Commands", "You are muted.");
  3756. goto("wait");
  3757. }
  3758. if(size < 2) {
  3759. msg.prefix(sender, prefix_commands, "/msg <player> <message>");
  3760. goto("wait");
  3761. }
  3762. p_name = list.getIndex(args, 0);
  3763. p_uuid = player.getUuid(p_name);
  3764. if(p_uuid == null) {
  3765. msg.prefix(sender, prefix_commands, "Unknown player.");
  3766. goto("wait");
  3767. }
  3768. message = text.replace(text.concatList(args, " ", 1, size - 1), "&", "§");
  3769. if(text.startsWith(message, "https://", 0)) {
  3770. message = text.link(message, message);
  3771. }
  3772. if(text.toUpperCase(p_name) == "SERVER") {
  3773. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  3774. msg(sender, "§6[ -> §cSERVER§6] ", message);
  3775. } else {
  3776. p = read.player(p_name);
  3777. if(p == null) {
  3778. msg.prefix(sender, prefix_commands, "This player is not online.");
  3779. goto("wait");
  3780. }
  3781. msg(p, concat("§6[§c", sender_name), "§6] ", message);
  3782. msg(sender, concat("§6[ -> §c", player.getName(p)), "§6] ", message);
  3783. }
  3784. player_uuid = player.getUuid(sender);
  3785. map.add(answer_map, p_uuid, player_uuid);
  3786. map.add(answer_map, player_uuid, p_uuid);
  3787. goto("wait");
  3788. @list
  3789. list = players.toList();
  3790. size = list.getSize(list);
  3791. msg(sender, getSpacer());
  3792. if(size == 1) {
  3793. msg(sender, concat("§6There is ", text.number(size), " players online."));
  3794. } else {
  3795. msg(sender, concat("§6There are ", text.number(size), " players online."));
  3796. }
  3797. for(i = 0; i < size; i++) {
  3798. p = list.getIndex(list, i);
  3799. full_name = player.getFullName(p);
  3800. if(player.isAfk(p)) {
  3801. full_name = concat("§7§m", removeFormat(full_name));
  3802. }
  3803. msg(sender, full_name);
  3804. }
  3805. goto("wait");
  3806. @ass
  3807. if(size < 2) {
  3808. msg.prefix(player, prefix_commands, "§r/ass ...");
  3809. msg(player, " - set <name>");
  3810. msg(player, " - rename <name>");
  3811. msg(player, " - remove <radius>");
  3812. goto("wait");
  3813. }
  3814. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3815. if(arg0 == "set") {
  3816. name = text.concatList(args, " ", 1, size - 1);
  3817. name = text.replace(name, "&", "§");
  3818. name = text.replace(name, "\\n", "\n");
  3819. ent = entity.spawn("km:nobody", entity.getLocation(player), "{NoGravity:true}");
  3820. entity.setName(ent, name);
  3821. goto("wait");
  3822. }
  3823. if(arg0 == "rename") {
  3824. name = text.concatList(args, " ", 1, size - 1);
  3825. name = text.replace(name, "&", "§");
  3826. name = text.replace(name, "\\n", "\n");
  3827. ent_list = living.near(player, 5);
  3828. for(i = 0; i < list.getSize(ent_list); i++) {
  3829. ent = list.getIndex(ent_list, i);
  3830. if(entity.getType(ent) == "nobody") {
  3831. entity.setName(ent, name);
  3832. goto("wait");
  3833. }
  3834. }
  3835. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  3836. goto("wait");
  3837. }
  3838. if(arg0 == "remove") {
  3839. radius = list.getIndex(args, 1);
  3840. if(!isDouble(radius)) {
  3841. msg.prefix(player, prefix_commands, "Zahl erwartet.");
  3842. goto("wait");
  3843. }
  3844. if(radius < 0 || radius > 5) {
  3845. msg.prefix(player, prefix_commands, "§rRadius: 0-5");
  3846. goto("wait");
  3847. }
  3848. ent_list = living.near(player, radius);
  3849. for(i = 0; i < list.getSize(ent_list); i++) {
  3850. ent = list.getIndex(ent_list, i);
  3851. if(entity.getType(ent) == "nobody") {
  3852. entity.remove(ent);
  3853. msg.prefix(player, prefix_commands, "§rLufttext entfernt");
  3854. goto("wait");
  3855. }
  3856. }
  3857. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  3858. }
  3859. goto("wait");
  3860. @coords
  3861. target_loc = player.getTarget(player, 5, false, false);
  3862. targettype = block.getType(target_loc);
  3863. if(targettype == "minecraft:air") {
  3864. msg.prefix(player, prefix_commands, "You have to look at a block.");
  3865. goto("wait");
  3866. }
  3867. msg(player, getSpacer());
  3868. x = text.Number(loc.getX(target_loc));
  3869. y = text.Number(loc.getY(target_loc));
  3870. z = text.Number(loc.getZ(target_loc));
  3871. msg(player, "§6World: §r", world.getName(loc.getWorld(target_loc)));
  3872. msg(player, "§6Coords: §r", x, " / ", y, " / ", z);
  3873. msg(player, "§6Block: §r", targettype);
  3874. goto("wait");
  3875. @sign
  3876. if(size == 0) {
  3877. msg.prefix(player, prefix_commands, "/sign <1-4> [text]");
  3878. goto("wait");
  3879. }
  3880. target_loc = player.getTarget(player, 5, false, false);
  3881. block = block.get(target_loc);
  3882. if(!block.hasTag(sign_tag, block)) {
  3883. msg.prefix(player, prefix_commands, "Look at a sign.");
  3884. goto("wait");
  3885. }
  3886. line = list.getIndex(args, 0);
  3887. if(!isDouble(line)) {
  3888. msg.prefix(player, prefix_commands, "Number expected.");
  3889. goto("wait");
  3890. }
  3891. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  3892. msg.prefix(player, prefix_commands, "Number between 1 and 5 expected.");
  3893. goto("wait");
  3894. }
  3895. string = "";
  3896. if(size > 1) {
  3897. for(i = 1; i < size; i++) {
  3898. arg = list.getIndex(args, i);
  3899. if(isDouble(arg)) {
  3900. arg = text.number(arg);
  3901. }
  3902. if(i == 1) {
  3903. string = arg;
  3904. } else {
  3905. string = concat(string, " ", arg);
  3906. }
  3907. }
  3908. }
  3909. string = text.replace(string, "&", "§");
  3910. block.setSign(target_loc, line - 1, string);
  3911. goto("wait");
  3912. @head
  3913. if(size != 1) {
  3914. msg.prefix(player, prefix_commands, "/head <player>");
  3915. goto("wait");
  3916. }
  3917. name = list.getIndex(args, 0);
  3918. uuid = player.getUuid(name);
  3919. if(uuid == null) {
  3920. player.giveItem(player, read.item(concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}")));
  3921. } else {
  3922. player.giveItem(player, player.getHead(uuid, name));
  3923. }
  3924. goto("wait");
  3925. @mute
  3926. if(size < 1) {
  3927. msg.prefix(sender, prefix_commands, "/mute <player>");
  3928. goto("wait");
  3929. }
  3930. p_name = list.getIndex(args, 0);
  3931. if(!isOnline(p_name)) {
  3932. msg.prefix(sender, prefix_commands, "This player is not online.");
  3933. goto("wait");
  3934. }
  3935. p = read.player(p_name);
  3936. p_name = player.getName(p);
  3937. if(p_name == "marvinius") {
  3938. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3939. goto("wait");
  3940. }
  3941. msg("online", concat("§c", p_name, " was muted by ", sender_name, "."));
  3942. player.mute(p, true);
  3943. goto("wait");
  3944. @unmute
  3945. if(size < 1) {
  3946. msg.prefix(sender, prefix_commands, "/unmute <player>");
  3947. goto("wait");
  3948. }
  3949. p_name = list.getIndex(args, 0);
  3950. if(!isOnline(p_name)) {
  3951. msg.prefix(sender, prefix_commands, "This player is not online.");
  3952. goto("wait");
  3953. }
  3954. p = read.player(p_name);
  3955. p_name = player.getName(p);
  3956. if(p_name == "marvinius") {
  3957. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3958. goto("wait");
  3959. }
  3960. msg("online", concat("§c", p_name, " was unmuted by ", sender_name, "."));
  3961. player.mute(p, false);
  3962. goto("wait");
  3963. @kick
  3964. if(size < 1) {
  3965. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  3966. goto("wait");
  3967. }
  3968. p_name = list.getIndex(args, 0);
  3969. if(!isOnline(p_name)) {
  3970. msg.prefix(sender, prefix_commands, "This player is not online.");
  3971. goto("wait");
  3972. }
  3973. p = read.player(p_name);
  3974. p_name = player.getName(p);
  3975. if(p_name == "marvinius") {
  3976. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3977. goto("wait");
  3978. }
  3979. if(size > 1) {
  3980. reason = text.concatList(args, " ", 1, size - 1);
  3981. msg("online", concat("§c", p_name, " was kicked by ", sender_name, ": ", reason));
  3982. } else {
  3983. reason = "You got kicked";
  3984. msg("online", concat("§c", p_name, " was kicked by ", sender_name, "."));
  3985. }
  3986. ban.kick(p, reason);
  3987. goto("wait");
  3988. @silentkick
  3989. if(size < 1) {
  3990. msg.prefix(sender, prefix_commands, "/silentkick <player> [reason]");
  3991. goto("wait");
  3992. }
  3993. p_name = list.getIndex(args, 0);
  3994. if(!isOnline(p_name)) {
  3995. msg.prefix(sender, prefix_commands, "This player is not online.");
  3996. goto("wait");
  3997. }
  3998. p = read.player(p_name);
  3999. p_name = player.getName(p);
  4000. if(p_name == "marvinius") {
  4001. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  4002. goto("wait");
  4003. }
  4004. if(size > 1) {
  4005. reason = text.concatList(args, " ", 1, size - 1);
  4006. msg(sender, concat("§cYou silently kicked ", p_name, ": ", reason));
  4007. } else {
  4008. reason = "Du wurdest gekickt";
  4009. msg(sender, concat("§cYou silently kicked ", p_name, "."));
  4010. }
  4011. ban.kick(p, reason);
  4012. goto("wait");
  4013. @warn
  4014. if(size != 1) {
  4015. msg.prefix(player, prefix_commands, "/warn <player>");
  4016. goto("wait");
  4017. }
  4018. p_name = list.getIndex(args, 0);
  4019. if(!isOnline(p_name)) {
  4020. msg.prefix(player, prefix_commands, "This player is not online.");
  4021. goto("wait");
  4022. }
  4023. p = read.player(p_name);
  4024. p_name = player.getName(p);
  4025. if(p_name == "marvinius") {
  4026. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  4027. goto("wait");
  4028. }
  4029. head.add(p, 0, sender_name, 0.4, 0.05, 0.2, 0.35);
  4030. title.setSub(p, "is watching you");
  4031. title.send(p, concat("§c", sender_name));
  4032. list.add(warninglist, p_name);
  4033. sgoto(100, "removeWarning");
  4034. msg.prefix(player, prefix_commands, "The player got warned.");
  4035. goto("wait");
  4036. @removeWarning
  4037. p_name = list.getIndex(warninglist, 0);
  4038. if(isOnline(p_name)) {
  4039. p = read.player(p_name);
  4040. head.remove(p, 0);
  4041. list.removeIndex(warninglist, 0);
  4042. }
  4043. goto("wait");
  4044. @ban
  4045. if(size < 1) {
  4046. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  4047. goto("wait");
  4048. }
  4049. p_name = list.getIndex(args, 0);
  4050. if(!checkIfEverOnline(p_name)) {
  4051. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4052. goto("wait");
  4053. }
  4054. p_name = player.getName(player.getUuid(p_name));
  4055. if(p_name == "marvinius") {
  4056. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  4057. goto("wait");
  4058. }
  4059. if(size > 1) {
  4060. reason = text.concatList(args, " ", 1, size - 1);
  4061. msg("online", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  4062. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  4063. } else {
  4064. reason = "Du wurdest gebannt";
  4065. msg("online", concat("§c", p_name, " got banned by ", sender_name, "."));
  4066. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, "."));
  4067. }
  4068. ban.add(player.getUuid(p_name), reason, sender_name);
  4069. if(isOnline(p_name)) {
  4070. p = read.player(p_name);
  4071. ban.kick(p, reason);
  4072. }
  4073. goto("wait");
  4074. @silentban
  4075. if(size < 1) {
  4076. msg.prefix(sender, prefix_commands, "/silentban <player> [reason]");
  4077. goto("wait");
  4078. }
  4079. p_name = list.getIndex(args, 0);
  4080. if(!checkIfEverOnline(p_name)) {
  4081. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4082. goto("wait");
  4083. }
  4084. p_name = player.getName(player.getUuid(p_name));
  4085. if(p_name == "marvinius") {
  4086. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  4087. goto("wait");
  4088. }
  4089. if(size > 1) {
  4090. reason = text.concatList(args, " ", 1, size - 1);
  4091. msg(sender, concat("§cYou silently banned ", p_name, ": ", reason));
  4092. } else {
  4093. reason = "You got banned.";
  4094. msg(sender, concat("§cYou silently banned ", p_name, "."));
  4095. }
  4096. ban.add(player.getUuid(p_name), reason, sender_name);
  4097. if(isOnline(p_name)) {
  4098. p = read.player(p_name);
  4099. ban.kick(p, reason);
  4100. }
  4101. goto("wait");
  4102. @unban
  4103. if(size != 1) {
  4104. msg.prefix(sender, prefix_commands, "/unban <player>");
  4105. goto("wait");
  4106. }
  4107. p_name = list.getIndex(args, 0);
  4108. if(!checkIfEverOnline(p_name)) {
  4109. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4110. goto("wait");
  4111. }
  4112. p_name = player.getName(player.getUuid(p_name));
  4113. ban.remove(player.getUuid(p_name));
  4114. msg(sender, concat("§cYou unbanned ", p_name, "."));
  4115. goto("wait");
  4116. @tempban
  4117. if(size < 4) {
  4118. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  4119. goto("wait");
  4120. }
  4121. p_name = list.getIndex(args, 0);
  4122. if(!checkIfEverOnline(p_name)) {
  4123. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4124. goto("wait");
  4125. }
  4126. p_name = player.getName(player.getUuid(p_name));
  4127. if(p_name == "marvinius") {
  4128. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  4129. goto("wait");
  4130. }
  4131. days = list.getIndex(args, 1);
  4132. hours = list.getIndex(args, 2);
  4133. minutes = list.getIndex(args, 3);
  4134. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  4135. msg.prefix(sender, prefix_commands, "Number expected.");
  4136. goto("wait");
  4137. }
  4138. if(days < 0 || hours < 0 || minutes < 0) {
  4139. msg.prefix(sender, prefix_commands, "Positive number expected.");
  4140. goto("wait");
  4141. }
  4142. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  4143. timestring = getTimeString(endtime);
  4144. if(size > 4) {
  4145. reason = text.concatList(args, " ", 4, size - 1);
  4146. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  4147. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  4148. } else {
  4149. reason = "Du wurdest gebannt";
  4150. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  4151. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  4152. }
  4153. calendar = time.new(endtime);
  4154. ban.add(player.getUuid(p_name), reason, sender_name, calendar);
  4155. if(isOnline(p_name)) {
  4156. p = read.player(p_name);
  4157. ban.kick(p, reason);
  4158. }
  4159. goto("wait");
  4160. @ping
  4161. msg(player, "pong");
  4162. goto("wait");
  4163. @plot
  4164. if(size == 0) {
  4165. @plothelp
  4166. msg.prefix(player, prefix_plot, "/plot ...");
  4167. msg(player, "§d - info §rReturns info about current location");
  4168. msg(player, "§d - pos1/pos2 §rSet corner points");
  4169. msg(player, "§d - create §rCreates a (sub-)plot (Y: 0 - 255)");
  4170. msg(player, "§d - create3D §rCreates a 3D (sub-)plot");
  4171. msg(player, "§d - remove [id] §rRemoves a plot");
  4172. msg(player, "§d - expand <anzahl> [id] §rExpands a plot");
  4173. msg(player, "§d - name [id] <name> §rRenames a plot");
  4174. msg(player, "§d - share <player> [id] §rAdd a player to a plot");
  4175. msg(player, "§d - kick <player> [id] §rRemove a player from a plot");
  4176. msg(player, "§d - leader <player> [id] §rPromote to plot-leader");
  4177. msg(player, "§d - mod <player> [id] §rPromote to plot-mod");
  4178. msg(player, "§d - chest <player> [id] §rAllows a player to open chests");
  4179. msg(player, "§d - raise §rRaises a plot to a city");
  4180. msg(player, "§d - sell <price> §rSells a sub-plot");
  4181. if(perm.has(player, "plot.moreinfo")) {
  4182. msg(player, "§d - list [player] §rLists all plots from a player");
  4183. msg(player, "§d - moreinfo [id] §rReturns more detailed infos");
  4184. msg(player, "§d - listall §rLists all plots");
  4185. msg(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  4186. } else {
  4187. msg(player, "§d - list §rLists your plots");
  4188. }
  4189. goto("wait");
  4190. }
  4191. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4192. if(arg0 == "sell") {
  4193. if(size != 2) {
  4194. msg.prefix(player, prefix_commands, "/plot sell <price>");
  4195. goto("wait");
  4196. }
  4197. sign_loc = player.getTarget(player, 5, false, false);
  4198. block = block.get(sign_loc);
  4199. if(!block.hasTag(sign_tag, block)) {
  4200. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  4201. goto("wait");
  4202. }
  4203. if(block.getSign(sign_loc, 0) != "" || block.getSign(sign_loc, 1) != "" || block.getSign(sign_loc, 2) != "" || block.getSign(sign_loc, 3) != "") {
  4204. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  4205. goto("wait");
  4206. }
  4207. plot_list = plot.get(sign_loc);
  4208. amount = list.getSize(plot_list);
  4209. if(amount == 0 || amount == 1) {
  4210. msg.prefix(player, prefix_plot, "You aren't on a sub plot.");
  4211. goto("wait");
  4212. }
  4213. if(amount > 2) {
  4214. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4215. goto("wait");
  4216. }
  4217. plot_1 = list.getIndex(plot_list, 0);
  4218. plot_2 = list.getIndex(plot_list, 1);
  4219. if(plot.isCity(plot_1)) {
  4220. city_plot = plot_1;
  4221. sell_plot = plot_2;
  4222. } elseif(plot.isCity(plot_2)) {
  4223. sell_plot = plot_1;
  4224. city_plot = plot_2;
  4225. } else {
  4226. msg.prefix(player, prefix_plot, "No city found.");
  4227. goto("wait");
  4228. }
  4229. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  4230. msg.prefix(player, prefix_plot, "You aren't a city plot leader or mod.");
  4231. goto("wait");
  4232. }
  4233. snuvis = list.getIndex(args, 1);
  4234. if(!isDouble(snuvis) || snuvis < 0) {
  4235. msg.prefix(player, prefix_plot, "Positive number expected.");
  4236. goto("wait");
  4237. }
  4238. //Sell Plot
  4239. x1 = plot.getMinX(sell_plot);
  4240. y1 = plot.getMinY(sell_plot);
  4241. z1 = plot.getMinZ(sell_plot);
  4242. x2 = plot.getMaxX(sell_plot);
  4243. y2 = plot.getMaxY(sell_plot);
  4244. z2 = plot.getMaxZ(sell_plot);
  4245. length = math.abs(x1 - x2) + 1;
  4246. width = math.abs(z1 - z2) + 1;
  4247. high = math.abs(y1 - y2) + 1;
  4248. //Change plot settings
  4249. plot.setFree(sell_plot, true);
  4250. plot.setName(sell_plot, "Free Plot");
  4251. plot.removePlayer(sell_plot, player.getName(player));
  4252. //Label Sign
  4253. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  4254. block.setSign(sign_loc, 1, concat("§2", text.number(snuvis)));
  4255. if(high == 256) {
  4256. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width)));
  4257. } else {
  4258. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width), " (Y:", text.number(high), ")"));
  4259. }
  4260. block.setSign(sign_loc, 3, text.number(player.getId(player)));
  4261. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  4262. goto("wait");
  4263. }
  4264. if(arg0 == "raise") {
  4265. location = entity.getLocation(player);
  4266. plot_list = plot.get(location);
  4267. amount = list.getSize(plot_list);
  4268. if(amount == 0) {
  4269. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4270. goto("wait");
  4271. }
  4272. if(!player.isClanLeader(player)) {
  4273. msg.prefix(player, prefix_plot, "Only a clan leader can do this.");
  4274. goto("wait");
  4275. }
  4276. clan_id = player.getClanId(player);
  4277. if(clan.getMembersAmount(clan_id) < 5) {
  4278. msg.prefix(player, prefix_plot, "Your clan needs 4 members to do this.");
  4279. goto("wait");
  4280. }
  4281. plot = list.getIndex(plot_list, 0);
  4282. if(plot.isCity(plot)) {
  4283. msg.prefix(player, prefix_plot, "This plot is already a city.");
  4284. goto("wait");
  4285. }
  4286. if(!plot.isLeader(plot, player)) {
  4287. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  4288. goto("wait");
  4289. }
  4290. if(amount > 1) {
  4291. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4292. goto("wait");
  4293. }
  4294. x1 = plot.getMinX(plot);
  4295. z1 = plot.getMinZ(plot);
  4296. x2 = plot.getMaxX(plot);
  4297. z2 = plot.getMaxZ(plot);
  4298. length = math.abs(x1 - x2) + 1;
  4299. width = math.abs(z1 - z2) + 1;
  4300. plot_size = length * width;
  4301. if(plot_size < 900) {
  4302. msg.prefix(player, prefix_plot, "Your plot must be over 900m2.");
  4303. goto("wait");
  4304. }
  4305. snuvis = 4096;
  4306. if(!hasEnoughMoney(player, snuvis)) {
  4307. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4308. goto("wait");
  4309. }
  4310. offerRank(player, "rank.major");
  4311. player.setPlotRaised(player, true);
  4312. subMoney(player, snuvis);
  4313. plot.setCity(plot, true);
  4314. msg.prefix(player, prefix_plot, concat("City created. Spent §6", text.number(snuvis), "§r snuvis."));
  4315. goto("wait");
  4316. }
  4317. if(arg0 == "leader") {
  4318. if(size < 2) {
  4319. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4320. goto("wait");
  4321. }
  4322. p_name = list.getIndex(args, 1);
  4323. p_uuid = player.getUuid(p_name);
  4324. if(p_uuid == null) {
  4325. msg.prefix(player, prefix_plot, "This player has never been online.");
  4326. goto("wait");
  4327. }
  4328. p_name = player.getName(p_uuid);
  4329. location = entity.getLocation(player);
  4330. world = loc.getWorld(location);
  4331. if(size == 2) {
  4332. plot_list = plot.get(location);
  4333. amount = list.getSize(plot_list);
  4334. if(amount == 0) {
  4335. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4336. goto("wait");
  4337. }
  4338. plot = list.getIndex(plot_list, 0);
  4339. if(amount > 1) {
  4340. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4341. for(i = 0; i < amount; i++) {
  4342. plot = list.getIndex(plot_list, i);
  4343. plot_id = plot.getId(plot);
  4344. 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)));
  4345. }
  4346. goto("wait");
  4347. }
  4348. } else {
  4349. if(size != 3) {
  4350. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4351. goto("wait");
  4352. }
  4353. plot_id = list.getIndex(args, 2);
  4354. plot = plot.getFromId(plot_id, world);
  4355. if(plot == null) {
  4356. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4357. goto("wait");
  4358. }
  4359. }
  4360. player_id = player.getId(player);
  4361. if(!perm.has(player, "plot.other")) {
  4362. if(!world.canUsePlots(world)) {
  4363. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4364. goto("wait");
  4365. }
  4366. if(!plot.isLeader(plot, player_id)) {
  4367. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4368. goto("wait");
  4369. }
  4370. if(player_name == p_name) {
  4371. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  4372. goto("wait");
  4373. }
  4374. }
  4375. p_id = player.getId(p_uuid);
  4376. if(plot.isLeader(plot, p_id)) {
  4377. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  4378. goto("wait");
  4379. }
  4380. old_leader = plot.getLeaderId(plot);
  4381. if(old_leader != null) {
  4382. plot.setMod(plot, old_leader);
  4383. }
  4384. plot.setLeader(plot, p_id);
  4385. plot.addPlayer(plot, p_name);
  4386. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot leader."));
  4387. goto("wait");
  4388. }
  4389. if(arg0 == "mod") {
  4390. if(size < 2) {
  4391. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4392. goto("wait");
  4393. }
  4394. p_name = list.getIndex(args, 1);
  4395. p_uuid = player.getUuid(p_name);
  4396. if(p_uuid == null) {
  4397. msg.prefix(player, prefix_plot, "This player has never been online.");
  4398. goto("wait");
  4399. }
  4400. p_name = player.getName(p_uuid);
  4401. location = entity.getLocation(player);
  4402. world = loc.getWorld(location);
  4403. if(size == 2) {
  4404. plot_list = plot.get(location);
  4405. amount = list.getSize(plot_list);
  4406. if(amount == 0) {
  4407. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4408. goto("wait");
  4409. }
  4410. plot = list.getIndex(plot_list, 0);
  4411. if(amount > 1) {
  4412. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4413. for(i = 0; i < amount; i++) {
  4414. plot = list.getIndex(plot_list, i);
  4415. plot_id = plot.getId(plot);
  4416. 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)));
  4417. }
  4418. goto("wait");
  4419. }
  4420. } else {
  4421. if(size != 3) {
  4422. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4423. goto("wait");
  4424. }
  4425. plot_id = list.getIndex(args, 2);
  4426. plot = plot.getFromId(plot_id, world);
  4427. if(plot == null) {
  4428. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4429. goto("wait");
  4430. }
  4431. }
  4432. player_id = player.getId(player);
  4433. if(!perm.has(player, "plot.other")) {
  4434. if(!world.canUsePlots(world)) {
  4435. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4436. goto("wait");
  4437. }
  4438. if(!plot.isLeader(plot, player_id)) {
  4439. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4440. goto("wait");
  4441. }
  4442. }
  4443. p_id = player.getId(p_uuid);
  4444. if(plot.isLeader(plot, p_id)) {
  4445. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  4446. goto("wait");
  4447. }
  4448. if(plot.isMod(plot, p_id)) {
  4449. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  4450. goto("wait");
  4451. }
  4452. plot.setMod(plot, p_id);
  4453. plot.addPlayer(plot, p_name);
  4454. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot mod."));
  4455. goto("wait");
  4456. }
  4457. if(arg0 == "chest") {
  4458. if(size < 2) {
  4459. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4460. goto("wait");
  4461. }
  4462. p_name = list.getIndex(args, 1);
  4463. p_uuid = player.getUuid(p_name);
  4464. if(p_uuid == null) {
  4465. msg.prefix(player, prefix_plot, "This player has never been online.");
  4466. goto("wait");
  4467. }
  4468. p_name = player.getName(p_uuid);
  4469. location = entity.getLocation(player);
  4470. world = loc.getWorld(location);
  4471. if(size == 2) {
  4472. plot_list = plot.get(location);
  4473. amount = list.getSize(plot_list);
  4474. if(amount == 0) {
  4475. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4476. goto("wait");
  4477. }
  4478. plot = list.getIndex(plot_list, 0);
  4479. if(amount > 1) {
  4480. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4481. for(i = 0; i < amount; i++) {
  4482. plot = list.getIndex(plot_list, i);
  4483. plot_id = plot.getId(plot);
  4484. 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)));
  4485. }
  4486. goto("wait");
  4487. }
  4488. } else {
  4489. if(size != 3) {
  4490. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4491. goto("wait");
  4492. }
  4493. plot_id = list.getIndex(args, 2);
  4494. plot = plot.getFromId(plot_id, world);
  4495. if(plot == null) {
  4496. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4497. goto("wait");
  4498. }
  4499. }
  4500. player_id = player.getId(player);
  4501. if(!perm.has(player, "plot.other")) {
  4502. if(!world.canUsePlots(world)) {
  4503. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4504. goto("wait");
  4505. }
  4506. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4507. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4508. goto("wait");
  4509. }
  4510. }
  4511. p_id = player.getId(p_uuid);
  4512. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  4513. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  4514. goto("wait");
  4515. }
  4516. if(plot.canOpenChests(plot, p_id)) {
  4517. msg.prefix(player, prefix_plot, "This player already can open chests.");
  4518. goto("wait");
  4519. }
  4520. plot.setChest(plot, p_id);
  4521. msg.prefix(player, prefix_plot, concat(p_name, " can now open chests."));
  4522. goto("wait");
  4523. }
  4524. if(arg0 == "remove") {
  4525. location = entity.getLocation(player);
  4526. world = loc.getWorld(location);
  4527. if(size == 1) {
  4528. plot_list = plot.get(location);
  4529. amount = list.getSize(plot_list);
  4530. if(amount == 0) {
  4531. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4532. goto("wait");
  4533. }
  4534. plot = list.getIndex(plot_list, 0);
  4535. if(amount > 1) {
  4536. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4537. for(i = 0; i < amount; i++) {
  4538. plot = list.getIndex(plot_list, i);
  4539. plot_id = plot.getId(plot);
  4540. 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)));
  4541. }
  4542. goto("wait");
  4543. }
  4544. } else {
  4545. if(size != 2) {
  4546. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  4547. goto("wait");
  4548. }
  4549. plot_id = list.getIndex(args, 1);
  4550. plot = plot.getFromId(plot_id, world);
  4551. if(plot == null) {
  4552. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4553. goto("wait");
  4554. }
  4555. }
  4556. if(!perm.has(player, "plot.other")) {
  4557. if(!world.canUsePlots(world)) {
  4558. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4559. goto("wait");
  4560. }
  4561. player_id = player.getId(player);
  4562. if(!plot.isLeader(plot, player_id)) {
  4563. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4564. goto("wait");
  4565. }
  4566. }
  4567. if(plot.isCity(plot)) {
  4568. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  4569. iter = list.iterator(plot_list);
  4570. while(hasNext(iter)) {
  4571. sub_plot = next(iter);
  4572. plot.removeAllPlayers(sub_plot);
  4573. plot.remove(sub_plot, world);
  4574. }
  4575. }
  4576. plot.removeAllPlayers(plot);
  4577. plot.delMoveEvent(plot);
  4578. plot.remove(plot, world);
  4579. msg.prefix(player, prefix_plot, concat("Plot removed. #", text.number(plot.getId(plot)), " §6", plot.getName(plot)));
  4580. goto("wait");
  4581. }
  4582. if(arg0 == "expand") {
  4583. if(size < 2) {
  4584. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  4585. goto("wait");
  4586. }
  4587. location = entity.getLocation(player);
  4588. world = loc.getWorld(location);
  4589. anzahl = list.getIndex(args, 1);
  4590. if(!isDouble(anzahl) || anzahl < 0) {
  4591. msg.prefix(player, prefix_plot, "Positive number expected.");
  4592. goto("wait");
  4593. }
  4594. if(size == 2) {
  4595. yaw = loc.getYaw(location);
  4596. direction = getDirection(yaw);
  4597. if(direction == null) {
  4598. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  4599. goto("wait");
  4600. }
  4601. plot_list = plot.get(location);
  4602. amount = list.getSize(plot_list);
  4603. if(amount == 0) {
  4604. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4605. goto("wait");
  4606. }
  4607. plot = list.getIndex(plot_list, 0);
  4608. if(amount > 1) {
  4609. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4610. for(i = 0; i < amount; i++) {
  4611. plot = list.getIndex(plot_list, i);
  4612. plot_id = plot.getId(plot);
  4613. 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)));
  4614. }
  4615. goto("wait");
  4616. }
  4617. } else {
  4618. if(size != 4) {
  4619. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  4620. goto("wait");
  4621. }
  4622. direction = text.toLowerCase(list.getIndex(args, 2));
  4623. plot_id = list.getIndex(args, 3);
  4624. plot = plot.getFromId(plot_id, world);
  4625. if(plot == null) {
  4626. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4627. goto("wait");
  4628. }
  4629. }
  4630. if(plot.isSub(plot)) {
  4631. msg.prefix(player, prefix_plot, "Sub plots can't be expanded.");
  4632. goto("wait");
  4633. }
  4634. x1 = plot.getMinX(plot);
  4635. y1 = plot.getMinY(plot);
  4636. z1 = plot.getMinZ(plot);
  4637. x2 = plot.getMaxX(plot);
  4638. y2 = plot.getMaxY(plot);
  4639. z2 = plot.getMaxZ(plot);
  4640. if(direction == "east") {
  4641. old_x2 = x2;
  4642. x2 += anzahl;
  4643. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  4644. } elseif(direction == "south") {
  4645. old_z2 = z2;
  4646. z2 += anzahl;
  4647. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  4648. } elseif(direction == "west") {
  4649. old_x1 = x1;
  4650. x1 -= anzahl;
  4651. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  4652. } elseif(direction == "north") {
  4653. old_z1 = z1;
  4654. z1 -= anzahl;
  4655. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  4656. } else {
  4657. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  4658. goto("wait");
  4659. }
  4660. if(!perm.has(player, "plot.other")) {
  4661. if(list.getSize(list) > 0) {
  4662. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  4663. goto("wait");
  4664. }
  4665. if(!world.canUsePlots(world)) {
  4666. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4667. goto("wait");
  4668. }
  4669. player_id = player.getId(player);
  4670. if(!plot.isLeader(plot, player_id)) {
  4671. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4672. goto("wait");
  4673. }
  4674. //Calc costs
  4675. length = math.abs(x1 - x2) + 1;
  4676. width = math.abs(z1 - z2) + 1;
  4677. snuvis = plot.calcCost(world, length, width);
  4678. if(!hasEnoughMoney(player, snuvis)) {
  4679. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4680. goto("wait");
  4681. }
  4682. subMoney(player, snuvis);
  4683. expand_message = concat("The plot has been expanded. Spent §6", text.number(snuvis), "§r snuvis.");
  4684. if(!player.hasBigPlotCreated(player)) {
  4685. plot_size = length * width;
  4686. if(plot_size >= 900) {
  4687. offerRank(player, "rank.colonizer");
  4688. player.setBigPlotCreated(player, true);
  4689. }
  4690. }
  4691. } else {
  4692. expand_message = concat("The plot has been expanded.");
  4693. }
  4694. //Expand plot
  4695. gs_edge1 = loc.new(world, x1, y1, z1);
  4696. gs_edge2 = loc.new(world, x2, y2, z2);
  4697. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  4698. plot.delMoveEvent(plot);
  4699. plot.setMoveEvent(new_plot, world);
  4700. msg.prefix(player, prefix_plot, expand_message);
  4701. goto("wait");
  4702. }
  4703. if(arg0 == "share") {
  4704. if(size < 2) {
  4705. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  4706. goto("wait");
  4707. }
  4708. p_name = list.getIndex(args, 1);
  4709. p_uuid = player.getUuid(p_name);
  4710. if(p_uuid == null) {
  4711. msg.prefix(player, prefix_plot, "This player has never been online.");
  4712. goto("wait");
  4713. }
  4714. p_name = player.getName(p_uuid);
  4715. location = entity.getLocation(player);
  4716. world = loc.getWorld(location);
  4717. if(size == 2) {
  4718. plot_list = plot.get(location);
  4719. amount = list.getSize(plot_list);
  4720. if(amount == 0) {
  4721. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4722. goto("wait");
  4723. }
  4724. plot = list.getIndex(plot_list, 0);
  4725. if(amount > 1) {
  4726. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4727. for(i = 0; i < amount; i++) {
  4728. plot = list.getIndex(plot_list, i);
  4729. plot_id = plot.getId(plot);
  4730. 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)));
  4731. }
  4732. goto("wait");
  4733. }
  4734. } else {
  4735. if(size != 3) {
  4736. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  4737. goto("wait");
  4738. }
  4739. plot_id = list.getIndex(args, 2);
  4740. plot = plot.getFromId(plot_id, world);
  4741. if(plot == null) {
  4742. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4743. goto("wait");
  4744. }
  4745. }
  4746. if(!perm.has(player, "plot.other")) {
  4747. if(!world.canUsePlots(world)) {
  4748. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4749. goto("wait");
  4750. }
  4751. player_id = player.getId(player);
  4752. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4753. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4754. goto("wait");
  4755. }
  4756. }
  4757. plot.addPlayer(plot, p_name);
  4758. msg.prefix(player, prefix_plot, concat(p_name, " added to the plot."));
  4759. goto("wait");
  4760. }
  4761. if(arg0 == "kick") {
  4762. if(size < 2) {
  4763. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  4764. goto("wait");
  4765. }
  4766. p_name = list.getIndex(args, 1);
  4767. p_uuid = player.getUuid(p_name);
  4768. if(p_uuid == null) {
  4769. msg.prefix(player, prefix_plot, "This player has never been online.");
  4770. goto("wait");
  4771. }
  4772. p_name = player.getName(p_uuid);
  4773. location = entity.getLocation(player);
  4774. world = loc.getWorld(location);
  4775. if(size == 2) {
  4776. plot_list = plot.get(location);
  4777. amount = list.getSize(plot_list);
  4778. if(amount == 0) {
  4779. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4780. goto("wait");
  4781. }
  4782. plot = list.getIndex(plot_list, 0);
  4783. if(amount > 1) {
  4784. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4785. for(i = 0; i < amount; i++) {
  4786. plot = list.getIndex(plot_list, i);
  4787. plot_id = plot.getId(plot);
  4788. 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)));
  4789. }
  4790. goto("wait");
  4791. }
  4792. } else {
  4793. if(size != 3) {
  4794. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  4795. goto("wait");
  4796. }
  4797. plot_id = list.getIndex(args, 2);
  4798. plot = plot.getFromId(plot_id, world);
  4799. if(plot == null) {
  4800. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4801. goto("wait");
  4802. }
  4803. }
  4804. if(!perm.has(player, "plot.other")) {
  4805. if(!world.canUsePlots(world)) {
  4806. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4807. goto("wait");
  4808. }
  4809. player_id = player.getId(player);
  4810. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4811. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4812. goto("wait");
  4813. }
  4814. if(player_name == p_name) {
  4815. msg.prefix(player, prefix_plot, "You can't kick yourself.");
  4816. goto("wait");
  4817. }
  4818. p_id = player.getId(p_uuid);
  4819. if(plot.isLeader(plot, p_id)) {
  4820. msg.prefix(player, prefix_plot, "You can't kick the plot-leader.");
  4821. goto("wait");
  4822. }
  4823. }
  4824. plot.removePlayer(plot, p_name);
  4825. msg.prefix(player, prefix_plot, concat(p_name, " removed from this plot."));
  4826. goto("wait");
  4827. }
  4828. if(arg0 == "name") {
  4829. if(size < 2) {
  4830. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  4831. goto("wait");
  4832. }
  4833. location = entity.getLocation(player);
  4834. world = loc.getWorld(location);
  4835. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  4836. if(size == 2) {
  4837. plot_list = plot.get(location);
  4838. amount = list.getSize(plot_list);
  4839. if(amount == 0) {
  4840. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4841. goto("wait");
  4842. }
  4843. plot = list.getIndex(plot_list, 0);
  4844. name = list.getIndex(args, 1);
  4845. if(amount > 1) {
  4846. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4847. for(i = 0; i < amount; i++) {
  4848. plot = list.getIndex(plot_list, i);
  4849. plot_id = plot.getId(plot);
  4850. 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)));
  4851. }
  4852. goto("wait");
  4853. }
  4854. }
  4855. if(size > 2) {
  4856. plot_id = list.getIndex(args, 1);
  4857. if(isDouble(plot_id)) {
  4858. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  4859. plot = plot.getFromId(plot_id, world);
  4860. if(plot == null) {
  4861. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4862. goto("wait");
  4863. }
  4864. name = text.concatList(args, " ", 2, size - 1);
  4865. } else {
  4866. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  4867. name = text.concatList(args, " ", 1, size - 1);
  4868. plot_list = plot.get(location);
  4869. amount = list.getSize(plot_list);
  4870. if(amount == 0) {
  4871. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4872. goto("wait");
  4873. }
  4874. plot = list.getIndex(plot_list, 0);
  4875. if(amount > 1) {
  4876. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4877. for(i = 0; i < amount; i++) {
  4878. plot = list.getIndex(plot_list, i);
  4879. plot_id = plot.getId(plot);
  4880. 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)));
  4881. }
  4882. goto("wait");
  4883. }
  4884. }
  4885. }
  4886. if(!perm.has(player, "plot.other")) {
  4887. if(!world.canUsePlots(world)) {
  4888. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4889. goto("wait");
  4890. }
  4891. player_id = player.getId(player);
  4892. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4893. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4894. goto("wait");
  4895. }
  4896. }
  4897. plot.setName(plot, name);
  4898. msg.prefix(player, prefix_plot, concat("Plot renamed to ", name, "."));
  4899. goto("wait");
  4900. }
  4901. if(arg0 == "create" || arg0 == "create3d") {
  4902. player_id = player.getId(player);
  4903. loc1 = map.get(plotpos1, player_id);
  4904. loc2 = map.get(plotpos2, player_id);
  4905. if(loc1 == null || loc2 == null) {
  4906. msg.prefix(player, prefix_plot, "No corner points set.");
  4907. goto("wait");
  4908. }
  4909. world1 = loc.getWorld(loc1);
  4910. if(world1 != loc.getWorld(loc2)) {
  4911. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  4912. goto("wait");
  4913. }
  4914. x1 = loc.getX(loc1);
  4915. y1 = loc.getY(loc1);
  4916. z1 = loc.getZ(loc1);
  4917. x2 = loc.getX(loc2);
  4918. y2 = loc.getY(loc2);
  4919. z2 = loc.getZ(loc2);
  4920. if(arg0 == "create") {
  4921. loc.setY(loc1, 0);
  4922. loc.setY(loc2, 255);
  4923. }
  4924. create_message = "Plot created.";
  4925. sub_plot = false;
  4926. if(!perm.has(player, "plot.other")) {
  4927. world_name = world.getName(world1);
  4928. if(!world.canUsePlots(world1)) {
  4929. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  4930. goto("wait");
  4931. }
  4932. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  4933. if(list.getSize(list) > 0) {
  4934. city_plot = list.getIndex(list, 0);
  4935. if(plot.isCity(city_plot)) {
  4936. if(!plot.isLeader(city_plot, player_id) && !plot.isMod(city_plot, player_id)) {
  4937. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4938. goto("wait");
  4939. }
  4940. city_id = plot.getId(city_plot);
  4941. if(!loc.hasPlotId(loc1, city_id)) {
  4942. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  4943. goto("wait");
  4944. }
  4945. if(!loc.hasPlotId(loc2, city_id)) {
  4946. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  4947. goto("wait");
  4948. }
  4949. sub_plot = true;
  4950. } else {
  4951. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  4952. goto("wait");
  4953. }
  4954. }
  4955. if(!sub_plot) {
  4956. //Calc costs
  4957. length = math.abs(x1 - x2) + 1;
  4958. width = math.abs(z1 - z2) + 1;
  4959. if(length < 3 || width < 3) {
  4960. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  4961. goto("wait");
  4962. }
  4963. snuvis = plot.calcCost(world1, length, width);
  4964. free_plot_used = player.usedHisFreePlot(player_id);
  4965. if(!free_plot_used && world_name != "creative") {
  4966. snuvis -= plot.calcCost(world1, 16, 16);
  4967. if(snuvis < 0) {
  4968. snuvis = 0;
  4969. }
  4970. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  4971. }
  4972. if(!hasEnoughMoney(player, snuvis)) {
  4973. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4974. goto("wait");
  4975. }
  4976. create_message = concat("Plot created. Spent §6", text.number(snuvis), "§r snuvis.");
  4977. subMoney(player, snuvis);
  4978. if(!free_plot_used && world_name != "creative") {
  4979. player.setUsedFreePlot(player_id, true);
  4980. offerRank(player, "rank.settler");
  4981. }
  4982. if(!player.hasBigPlotCreated(player)) {
  4983. plot_size = length * width;
  4984. if(plot_size >= 900) {
  4985. offerRank(player, "rank.colonizer");
  4986. player.setBigPlotCreated(player, true);
  4987. }
  4988. }
  4989. }
  4990. }
  4991. //Create plot
  4992. map.remove(plotpos1, player_id);
  4993. map.remove(plotpos2, player_id);
  4994. plot = plot.add(loc1, loc2);
  4995. if(sub_plot) {
  4996. plot.setSub(plot, true);
  4997. }
  4998. plot.setMoveEvent(plot, world1);
  4999. plot.setName(plot, concat(player_name, "'s plot"));
  5000. plot.addPlayer(plot, player_name);
  5001. plot.setLeader(plot, player_id);
  5002. msg.prefix(player, prefix_plot, create_message);
  5003. goto("wait");
  5004. }
  5005. if(arg0 == "pos1" || arg0 == "pos2") {
  5006. loc = entity.getLocation(player);
  5007. loc = getBlockLocation(loc);
  5008. player_id = player.getId(player);
  5009. if(arg0 == "pos1") {
  5010. map.add(plotpos1, player_id, loc);
  5011. pos_string = "Pos1";
  5012. } elseif(arg0 == "pos2") {
  5013. map.add(plotpos2, player_id, loc);
  5014. pos_string = "Pos2";
  5015. }
  5016. x = text.number(loc.getX(loc));
  5017. y = text.number(loc.getY(loc));
  5018. z = text.number(loc.getZ(loc));
  5019. msg.prefix(player, prefix_plot, concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  5020. loc1 = map.get(plotpos1, player_id);
  5021. loc2 = map.get(plotpos2, player_id);
  5022. if(loc1 != null && loc2 != null) {
  5023. world1 = loc.getWorld(loc1);
  5024. snuvis = plot.calcCost(world1, loc1, loc2);
  5025. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  5026. snuvis -= plot.calcCost(world1, 16, 16);
  5027. if(snuvis < 0) {
  5028. snuvis = 0;
  5029. }
  5030. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  5031. }
  5032. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  5033. snuvis = 0;
  5034. }
  5035. msg.prefix(player, prefix_plot, concat("This plot will cost §6", text.number(snuvis), "§r snuvis."));
  5036. }
  5037. goto("wait");
  5038. }
  5039. if(arg0 == "flags") {
  5040. if(!perm.has(player, "plot.moreinfo")) {
  5041. perm.no(player, "plot.moreinfo");
  5042. goto("wait");
  5043. }
  5044. if(size < 3 || size > 4) {
  5045. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  5046. goto("wait");
  5047. }
  5048. flags = list.getIndex(args, 1);
  5049. if(!isDouble(flags) || flags < 0) {
  5050. msg.prefix(player, prefix_commands, "Positive number expected.");
  5051. goto("wait");
  5052. }
  5053. boolean = list.getIndex(args, 2);
  5054. if(!(boolean == true || boolean == false)) {
  5055. msg.prefix(player, prefix_commands, "Boolean expected.");
  5056. goto("wait");
  5057. }
  5058. location = entity.getLocation(player);
  5059. world = loc.getWorld(location);
  5060. if(size == 3) {
  5061. plot_list = plot.get(location);
  5062. amount = list.getSize(plot_list);
  5063. if(amount == 0) {
  5064. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5065. goto("wait");
  5066. }
  5067. plot = list.getIndex(plot_list, 0);
  5068. if(amount > 1) {
  5069. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5070. for(i = 0; i < amount; i++) {
  5071. plot = list.getIndex(plot_list, i);
  5072. plot_id = plot.getId(plot);
  5073. x = loc.getX(location);
  5074. y = loc.getY(location);
  5075. z = loc.getZ(location);
  5076. 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)));
  5077. }
  5078. goto("wait");
  5079. }
  5080. } else {
  5081. plot_id = list.getIndex(args, 3);
  5082. plot = plot.getFromId(plot_id, world);
  5083. if(plot == null) {
  5084. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5085. goto("wait");
  5086. }
  5087. }
  5088. flags_list = list.new();
  5089. temp_flags = 0;
  5090. if(flags >= 512) {
  5091. list.add(flags_list, "SUB_PLOT_FLAG");
  5092. temp_flags += 512;
  5093. }
  5094. if(flags >= 256) {
  5095. list.add(flags_list, "FREE_FLAG");
  5096. temp_flags += 256;
  5097. }
  5098. if(flags >= 128) {
  5099. list.add(flags_list, "CITY_FLAG");
  5100. temp_flags += 128;
  5101. }
  5102. if(flags >= 64) {
  5103. list.add(flags_list, "EXPLOSION_FLAG");
  5104. temp_flags += 64;
  5105. }
  5106. if(flags >= 32) {
  5107. list.add(flags_list, "ENTITY_INTERACT_FLAG");
  5108. temp_flags += 32;
  5109. }
  5110. if(flags >= 16) {
  5111. list.add(flags_list, "BLOCK_INTERACT_FLAG");
  5112. temp_flags += 16;
  5113. }
  5114. if(flags >= 8) {
  5115. list.add(flags_list, "HIT_AMBIENT_FLAG");
  5116. temp_flags += 8;
  5117. }
  5118. if(flags >= 4) {
  5119. list.add(flags_list, "BUCKET_FLAG");
  5120. temp_flags += 4;
  5121. }
  5122. if(flags >= 2) {
  5123. list.add(flags_list, "BREAK_FLAG");
  5124. temp_flags += 2;
  5125. }
  5126. if(flags >= 1) {
  5127. list.add(flags_list, "PLACE_FLAG");
  5128. temp_flags += 1;
  5129. }
  5130. plot.setFlags(plot, flags, boolean);
  5131. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  5132. goto("wait");
  5133. }
  5134. if(arg0 == "list") {
  5135. if(size == 1) {
  5136. p_name = player.getName(player);
  5137. } else {
  5138. if(!perm.has(player, "plot.moreinfo")) {
  5139. perm.no(player, "plot.moreinfo");
  5140. goto("wait");
  5141. }
  5142. p_name = list.getIndex(args, 1);
  5143. }
  5144. p_uuid = player.getUuid(p_name);
  5145. if(p_uuid == null) {
  5146. msg.prefix(player, prefix_plot, "This player has never been online.");
  5147. goto("wait");
  5148. }
  5149. p_name = player.getName(p_uuid);
  5150. msg.prefix(player, prefix_commands, concat(p_name, "'s plots:"));
  5151. world = loc.getWorld(entity.getLocation(player));
  5152. iter = plot.iterator(world, p_uuid);
  5153. while(hasNext(iter)) {
  5154. plot = next(iter);
  5155. msg(player, concat(" - #", text.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5156. }
  5157. goto("wait");
  5158. }
  5159. if(arg0 == "listall") {
  5160. if(!perm.has(player, "plot.moreinfo")) {
  5161. perm.no(player, "plot.moreinfo");
  5162. goto("wait");
  5163. }
  5164. if(size != 1) {
  5165. msg.prefix(player, prefix_commands, "/plot listall");
  5166. goto("wait");
  5167. }
  5168. world = loc.getWorld(entity.getLocation(player));
  5169. msg.prefix(player, prefix_commands, concat("All plots in this world: ", world.getName(world)));
  5170. iterator = plot.iterator(world);
  5171. while(hasNext(iterator)) {
  5172. plot = next(iterator);
  5173. plot_id = plot.getId(plot);
  5174. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5175. }
  5176. goto("wait");
  5177. }
  5178. if(arg0 == "moreinfo" || arg0 == "mi") {
  5179. if(!perm.has(player, "plot.moreinfo")) {
  5180. perm.no(player, "plot.moreinfo");
  5181. goto("wait");
  5182. }
  5183. location = entity.getLocation(player);
  5184. world = loc.getWorld(location);
  5185. if(size == 1) {
  5186. plot_list = plot.get(location);
  5187. amount = list.getSize(plot_list);
  5188. if(amount == 0) {
  5189. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5190. goto("wait");
  5191. }
  5192. plot = list.getIndex(plot_list, 0);
  5193. if(amount > 1) {
  5194. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5195. for(i = 0; i < amount; i++) {
  5196. plot = list.getIndex(plot_list, i);
  5197. plot_id = plot.getId(plot);
  5198. msg(player, text.click(" [§cSelect§r] ", concat("/plot moreinfo ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5199. }
  5200. goto("wait");
  5201. }
  5202. } else {
  5203. if(size != 2) {
  5204. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  5205. goto("wait");
  5206. }
  5207. plot_id = list.getIndex(args, 1);
  5208. plot = plot.getFromId(plot_id, world);
  5209. if(plot == null) {
  5210. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5211. goto("wait");
  5212. }
  5213. }
  5214. owners = "";
  5215. owners_list = plot.getOwners(plot);
  5216. copy_list = list.copy(owners_list);
  5217. plot_id = plot.getId(plot);
  5218. msg.prefix(player, prefix_plot, concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5219. msg(player, " §dWorld: §r", world.getName(world));
  5220. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5221. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5222. leader_name = plot.getLeaderName(plot);
  5223. if(leader_name == "") {
  5224. leader_name = "-";
  5225. }
  5226. msg(player, " §dLeader: §r", leader_name);
  5227. list.remove(copy_list, player.getUuid(leader_name));
  5228. mods_list = plot.getMods(plot);
  5229. mods_amount = list.getSize(mods_list);
  5230. if(mods_amount == 0) {
  5231. mods_string = "-";
  5232. } else {
  5233. iter = list.iterator(mods_list);
  5234. mods_string = "";
  5235. while(hasNext(iter)) {
  5236. p_name = player.getNameFromId(next(iter));
  5237. p_uuid = player.getUuid(p_name);
  5238. list.remove(copy_list, p_uuid);
  5239. if(mods_string == "") {
  5240. mods_string = p_name;
  5241. } else {
  5242. mods_string = concat(mods_string, " / ", p_name);
  5243. }
  5244. }
  5245. }
  5246. msg(player, " §dMods: §r", mods_string);
  5247. members_amount = list.getSize(copy_list);
  5248. if(members_amount == 0) {
  5249. members_string = "-";
  5250. } else {
  5251. iter = list.iterator(copy_list);
  5252. members_string = "";
  5253. while(hasNext(iter)) {
  5254. p_name = player.getName(next(iter));
  5255. if(members_string == "") {
  5256. members_string = p_name;
  5257. } else {
  5258. members_string = concat(members_string, " / ", p_name);
  5259. }
  5260. }
  5261. }
  5262. msg(player, " §dMembers: §r", members_string);
  5263. chests_list = plot.getChestRanks(plot);
  5264. chests_amount = list.getSize(chests_list);
  5265. if(chests_amount == 0) {
  5266. chests_string = "-";
  5267. } else {
  5268. iter = list.iterator(chests_list);
  5269. chests_string = "";
  5270. while(hasNext(iter)) {
  5271. p_name = player.getNameFromId(next(iter));
  5272. if(chests_string == "") {
  5273. chests_string = p_name;
  5274. } else {
  5275. chests_string = concat(chests_string, " / ", p_name);
  5276. }
  5277. }
  5278. }
  5279. msg(player, " §dOnly chest: §r", chests_string);
  5280. flags = plot.getFlags(plot);
  5281. flags_true = list.new();
  5282. flags_false = list.new();
  5283. array = array.new(2);
  5284. array[0] = 512;
  5285. array[1] = "SUB_PLOT_FLAG";
  5286. if(flags >= 512) {
  5287. list.add(flags_true, array);
  5288. flags -= 512;
  5289. } else {
  5290. list.add(flags_false, array);
  5291. }
  5292. array = array.new(2);
  5293. array[0] = 256;
  5294. array[1] = "FREE_FLAG";
  5295. if(flags >= 256) {
  5296. list.add(flags_true, array);
  5297. flags -= 256;
  5298. } else {
  5299. list.add(flags_false, array);
  5300. }
  5301. array = array.new(2);
  5302. array[0] = 128;
  5303. array[1] = "CITY_FLAG";
  5304. if(flags >= 128) {
  5305. list.add(flags_true, array);
  5306. flags -= 128;
  5307. } else {
  5308. list.add(flags_false, array);
  5309. }
  5310. array = array.new(2);
  5311. array[0] = 64;
  5312. array[1] = "EXPLOSION_FLAG";
  5313. if(flags >= 64) {
  5314. list.add(flags_true, array);
  5315. flags -= 64;
  5316. } else {
  5317. list.add(flags_false, array);
  5318. }
  5319. array = array.new(2);
  5320. array[0] = 32;
  5321. array[1] = "ENTITY_INTERACT_FLAG";
  5322. if(flags >= 32) {
  5323. list.add(flags_true, array);
  5324. flags -= 32;
  5325. } else {
  5326. list.add(flags_false, array);
  5327. }
  5328. array = array.new(2);
  5329. array[0] = 16;
  5330. array[1] = "BLOCK_INTERACT_FLAG";
  5331. if(flags >= 16) {
  5332. list.add(flags_true, array);
  5333. flags -= 16;
  5334. } else {
  5335. list.add(flags_false, array);
  5336. }
  5337. array = array.new(2);
  5338. array[0] = 8;
  5339. array[1] = "HIT_AMBIENT_FLAG";
  5340. if(flags >= 8) {
  5341. list.add(flags_true, array);
  5342. flags -= 8;
  5343. } else {
  5344. list.add(flags_false, array);
  5345. }
  5346. array = array.new(2);
  5347. array[0] = 4;
  5348. array[1] = "BUCKET_FLAG";
  5349. if(flags >= 4) {
  5350. list.add(flags_true, array);
  5351. flags -= 4;
  5352. } else {
  5353. list.add(flags_false, array);
  5354. }
  5355. array = array.new(2);
  5356. array[0] = 2;
  5357. array[1] = "BREAK_FLAG";
  5358. if(flags >= 2) {
  5359. list.add(flags_true, array);
  5360. flags -= 2;
  5361. } else {
  5362. list.add(flags_false, array);
  5363. }
  5364. array = array.new(2);
  5365. array[0] = 1;
  5366. array[1] = "PLACE_FLAG";
  5367. if(flags >= 1) {
  5368. list.add(flags_true, array);
  5369. } else {
  5370. list.add(flags_false, array);
  5371. }
  5372. x = loc.getX(location);
  5373. y = loc.getY(location);
  5374. z = loc.getZ(location);
  5375. msg(player, " §dFlags true:");
  5376. iter = list.iterator(flags_true);
  5377. while(hasNext(iter)) {
  5378. array = next(iter);
  5379. flag_number = array[0];
  5380. flag_name = array[1];
  5381. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " false ", plot_id)));
  5382. }
  5383. msg(player, " §dFlags false:");
  5384. iter = list.iterator(flags_false);
  5385. while(hasNext(iter)) {
  5386. array = next(iter);
  5387. flag_number = array[0];
  5388. flag_name = array[1];
  5389. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " true ", plot_id)));
  5390. }
  5391. goto("wait");
  5392. }
  5393. if(arg0 == "info" || arg0 == "i") {
  5394. location = entity.getLocation(player);
  5395. list = plot.get(location);
  5396. world = loc.getWorld(location);
  5397. size = list.getSize(list);
  5398. if(size == 0) {
  5399. msg.prefix(player, prefix_plot, "No plots found.");
  5400. goto("wait");
  5401. }
  5402. if(size == 1) {
  5403. msg.prefix(player, prefix_plot, concat(text.number(size), " plot found:"));
  5404. } else {
  5405. msg.prefix(player, prefix_plot, concat(text.number(size), " plots found:"));
  5406. }
  5407. for(i = 0; i < size; i++) {
  5408. plot = list.getIndex(list, i);
  5409. plot_id = plot.getId(plot);
  5410. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5411. owners_list = plot.getOwners(plot);
  5412. copy_list = list.copy(owners_list);
  5413. plot_id = plot.getId(plot);
  5414. msg(player, " §dWorld: §r", world.getName(world));
  5415. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5416. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5417. leader_name = plot.getLeaderName(plot);
  5418. if(leader_name == "") {
  5419. leader_name = "-";
  5420. }
  5421. msg(player, " §dLeader: §r", leader_name);
  5422. list.remove(copy_list, player.getUuid(leader_name));
  5423. mods_list = plot.getMods(plot);
  5424. mods_amount = list.getSize(mods_list);
  5425. if(mods_amount == 0) {
  5426. mods_string = "-";
  5427. } else {
  5428. iter = list.iterator(mods_list);
  5429. mods_string = "";
  5430. while(hasNext(iter)) {
  5431. p_name = player.getNameFromId(next(iter));
  5432. p_uuid = player.getUuid(p_name);
  5433. list.remove(copy_list, p_uuid);
  5434. if(mods_string == "") {
  5435. mods_string = p_name;
  5436. } else {
  5437. mods_string = concat(mods_string, " / ", p_name);
  5438. }
  5439. }
  5440. }
  5441. msg(player, " §dMods: §r", mods_string);
  5442. members_amount = list.getSize(copy_list);
  5443. if(members_amount == 0) {
  5444. members_string = "-";
  5445. } else {
  5446. iter = list.iterator(copy_list);
  5447. members_string = "";
  5448. while(hasNext(iter)) {
  5449. p_name = player.getName(next(iter));
  5450. if(members_string == "") {
  5451. members_string = p_name;
  5452. } else {
  5453. members_string = concat(members_string, " / ", p_name);
  5454. }
  5455. }
  5456. }
  5457. msg(player, " §dMembers: §r", members_string);
  5458. chests_list = plot.getChestRanks(plot);
  5459. chests_amount = list.getSize(chests_list);
  5460. if(chests_amount == 0) {
  5461. chests_string = "-";
  5462. } else {
  5463. iter = list.iterator(chests_list);
  5464. chests_string = "";
  5465. while(hasNext(iter)) {
  5466. p_name = player.getNameFromId(next(iter));
  5467. if(chests_string == "") {
  5468. chests_string = p_name;
  5469. } else {
  5470. chests_string = concat(chests_string, " / ", p_name);
  5471. }
  5472. }
  5473. }
  5474. msg(player, " §dOnly chest: §r", chests_string);
  5475. }
  5476. goto("wait");
  5477. }
  5478. goto("plothelp");
  5479. @stopadventure
  5480. removeAdventureDisplay(player);
  5481. player.setAdventure(player, false);
  5482. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  5483. goto("wait");
  5484. @speed
  5485. if(size < 1 || size > 2) {
  5486. if(perm.has(player, "speed.other")) {
  5487. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  5488. } else {
  5489. msg.prefix(player, prefix_commands, "/speed <1-10>");
  5490. }
  5491. goto("wait");
  5492. }
  5493. speed = list.getIndex(args, 0);
  5494. if(!isDouble(speed)) {
  5495. msg.prefix(player, prefix_commands, "Zahl erwartet.");
  5496. goto("wait");
  5497. }
  5498. if(speed < 1) {
  5499. speed = 1;
  5500. }
  5501. if(speed > 10) {
  5502. speed = 10;
  5503. }
  5504. if(size == 2) {
  5505. if(!perm.has(player, "speed.other")) {
  5506. perm.no(player, "speed.other");
  5507. goto("wait");
  5508. }
  5509. affectedname = list.getIndex(args, 1);
  5510. affectedplayer = read.player(affectedname);
  5511. if(affectedplayer == null) {
  5512. msg.prefix(player, prefix_commands, "This player is not online.");
  5513. goto("wait");
  5514. }
  5515. }
  5516. player.setSpeed(affectedplayer, speed);
  5517. msg.prefix(affectedplayer, prefix_commands, concat("Set your speed to ", text.number(speed), "."));
  5518. if(affectedplayer != player) {
  5519. affectedname = player.getName(affectedplayer);
  5520. msg.prefix(player, prefix_commands, concat(affectedname, " set your speed to ", text.number(speed), "."));
  5521. }
  5522. goto("wait");
  5523. @butcher
  5524. loc = entity.getLocation(player);
  5525. world = loc.getWorld(loc);
  5526. list = world.getEntities(world);
  5527. size = list.getSize(list);
  5528. killed = 0;
  5529. for(i = 0; i < size; i++) {
  5530. element = list.getIndex(list, i);
  5531. if(isLiving(element)) {
  5532. entity_type = entity.getType(element);
  5533. if(set.contains(butcher_set, entity_type)) {
  5534. entity.remove(element);
  5535. killed++;
  5536. }
  5537. }
  5538. }
  5539. msg.prefix(player, prefix_commands, concat(text.number(killed), " mobs killed."));
  5540. goto("wait");
  5541. @enderchest
  5542. if(size < 1 || size > 2) {
  5543. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  5544. goto("wait");
  5545. }
  5546. if(size == 1) {
  5547. from_name = list.getIndex(args, 0);
  5548. }
  5549. elseif(size == 2) {
  5550. affectedname = list.getIndex(args, 0);
  5551. from_name = list.getIndex(args, 1);
  5552. affectedplayer = read.player(affectedname);
  5553. if(affectedplayer == null) {
  5554. msg.prefix(player, prefix_commands, "This player is not online.");
  5555. goto("wait");
  5556. }
  5557. }
  5558. from_player = read.player(from_name);
  5559. if(from_player == null) {
  5560. msg.prefix(player, prefix_commands, "This player is not online.");
  5561. goto("wait");
  5562. }
  5563. player.openEnderchest(affectedplayer, from_player, concat("Enderchest von ", from_name));
  5564. goto("wait");
  5565. @gamemode
  5566. if(size < 1 || size > 2) {
  5567. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  5568. goto("wait");
  5569. }
  5570. if(size == 2) {
  5571. if(!perm.has(player, "gamemode.other")) {
  5572. perm.no(player, "gamemode.other");
  5573. goto("wait");
  5574. }
  5575. affectedname = list.getIndex(args, 1);
  5576. affectedplayer = read.player(affectedname);
  5577. if(affectedplayer == null) {
  5578. msg.prefix(player, prefix_commands, "This player is not online.");
  5579. goto("wait");
  5580. }
  5581. }
  5582. mode = list.getIndex(args, 0);
  5583. if(isDouble(mode)) {
  5584. mode = text.number(mode);
  5585. } else {
  5586. mode = text.toLowerCase(mode);
  5587. }
  5588. if(mode == "s" || mode == "0" || mode == "survival") {
  5589. mode = "survival";
  5590. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  5591. mode = "creative";
  5592. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  5593. mode = "adventure";
  5594. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  5595. mode = "spectator";
  5596. } else {
  5597. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  5598. goto("wait");
  5599. }
  5600. player.setGamemode(affectedplayer, mode);
  5601. if(affectedplayer != player) {
  5602. affectedname = player.getName(affectedplayer);
  5603. msg.prefix(player, prefix_commands, concat("Gamemode of ", affectedname, " set to ", mode, "."));
  5604. }
  5605. msg.prefix(affectedplayer, prefix_commands, concat("Set your gamemode to ", mode, "."));
  5606. goto("wait");
  5607. @home
  5608. if(size == 0) {
  5609. @homesyntax
  5610. msg.prefix(player, prefix_commands, "/home ...");
  5611. msg(player, "§6 - set <home> §rSets a home");
  5612. msg(player, "§6 - delete <home> §rDeletes a home");
  5613. if(perm.has(player, "home.other")) {
  5614. msg(player, "§6 - list [player] §rLists all homes");
  5615. msg(player, "§6 - <home> [player] §rTeleports to a home");
  5616. } else {
  5617. msg(player, "§6 - list §rLists your homes");
  5618. msg(player, "§6 - <home> §rTeleports to your home");
  5619. }
  5620. goto("wait");
  5621. }
  5622. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5623. if(arg0 == "del" || arg0 == "delete") {
  5624. if(size < 2) {
  5625. goto("homesyntax");
  5626. }
  5627. player_id = player.getId(player);
  5628. name = text.toLowerCase(list.getIndex(args, 1));
  5629. if(!home.exists(player_id, name)) {
  5630. msg.prefix(player, prefix_commands, concat("Home ", name, "doesn't exist."));
  5631. goto("wait");
  5632. }
  5633. home.delete(player_id, name);
  5634. msg.prefix(player, prefix_commands, concat("Home ", name, " deleted."));
  5635. goto("wait");
  5636. }
  5637. if(arg0 == "list") {
  5638. affecteduuid = player.getUuid(affectedname);
  5639. if(size == 2) {
  5640. if(!perm.has(player, "home.other")) {
  5641. perm.no(player, "home.other");
  5642. goto("wait");
  5643. }
  5644. affectedname = text.toLowerCase(list.getIndex(args, 1));
  5645. affecteduuid = player.getUuid(affectedname);
  5646. if(affecteduuid == null) {
  5647. msg.prefix(player, prefix_commands, "This player has never been online.");
  5648. goto("wait");
  5649. }
  5650. }
  5651. id = player.getId(affecteduuid);
  5652. homes_list = home.getList(id);
  5653. home_amount = list.getSize(homes_list);
  5654. if(home_amount == 0) {
  5655. msg.prefix(player, prefix_commands, "No homes existing.");
  5656. } else {
  5657. msg.prefix(player, prefix_commands, concat("Homes of ", affectedname, ":"));
  5658. for(i = 0; i < home_amount; i++) {
  5659. msg(player, concat("§6 - §r", list.getIndex(homes_list, i)));
  5660. }
  5661. }
  5662. goto("wait");
  5663. }
  5664. location = entity.getLocation(player);
  5665. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5666. if(!word.isSurvName(world_name)) {
  5667. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  5668. goto("wait");
  5669. }
  5670. if(arg0 == "set") {
  5671. if(size < 2) {
  5672. goto("homesyntax");
  5673. }
  5674. player_id = player.getId(player);
  5675. homes_list = home.getList(player_id);
  5676. home_amount = list.getSize(homes_list);
  5677. if(perm.has(player, "isAdmin")) {
  5678. max_homes = 100;
  5679. } elseif(perm.has(player, "isMod")) {
  5680. max_homes = 40;
  5681. } elseif(perm.has(player, "isTeam")) {
  5682. max_homes = 20;
  5683. } elseif(perm.has(player, "canTP")) {
  5684. max_homes = 10;
  5685. } else {
  5686. max_homes = 5;
  5687. }
  5688. if(home_amount >= max_homes) {
  5689. msg.prefix(player, prefix_commands, concat("You can only set ", text.number(max_homes), " homes."));
  5690. goto("wait");
  5691. }
  5692. name = text.toLowerCase(list.getIndex(args, 1));
  5693. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  5694. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  5695. goto("wait");
  5696. }
  5697. if(!text.onlyletters(name)) {
  5698. msg.prefix(player, prefix_commands, "Only letters allowed.");
  5699. goto("wait");
  5700. }
  5701. if(text.length(name) > 20) {
  5702. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  5703. goto("wait");
  5704. }
  5705. if(home.exists(player_id, name)) {
  5706. msg.prefix(player, prefix_commands, concat("Home ", name, " already exists."));
  5707. goto("wait");
  5708. }
  5709. home.set(player_id, name, location);
  5710. msg.prefix(player, prefix_commands, concat("Home ", name, " set."));
  5711. goto("wait");
  5712. }
  5713. //Teleportation
  5714. if(size == 2) {
  5715. affectedname = text.toLowerCase(list.getIndex(args, 1));
  5716. }
  5717. affecteduuid = player.getUuid(affectedname);
  5718. if(affecteduuid == null) {
  5719. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  5720. goto("wait");
  5721. }
  5722. player_id = player.getID(affecteduuid);
  5723. location = home.getLocation(player_id, arg0);
  5724. if(location == null) {
  5725. msg.prefix(player, prefix_commands, "Home doesn't exist."); //oder die welt ist nicht geladen
  5726. goto("wait");
  5727. }
  5728. player.teleport(player, location, true);
  5729. goto("wait");
  5730. @tpa
  5731. if(size != 1) {
  5732. msg.prefix(player, prefix_commands, "/tpa <player>");
  5733. goto("wait");
  5734. }
  5735. p_name = list.getIndex(args, 0);
  5736. p_uuid = player.getUuid(p_name);
  5737. if(p_uuid == null) {
  5738. msg.prefix(player, prefix_commands, "This player has never been online.");
  5739. goto("wait");
  5740. }
  5741. p_name = player.getName(p_uuid);
  5742. p = read.player(p_name);
  5743. if(p == null) {
  5744. msg.prefix(player, prefix_commands, "This player is not online.");
  5745. goto("wait");
  5746. }
  5747. if(!player.doesAcceptTpaRequests(p)) {
  5748. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  5749. goto("wait");
  5750. }
  5751. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5752. if(world.isGamesName(world_name)) {
  5753. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5754. goto("wait");
  5755. }
  5756. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5757. if(world.isGamesName(world_name)) {
  5758. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5759. goto("wait");
  5760. }
  5761. addTpaRequest(player.getUuid(player), p_uuid);
  5762. msg(player, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  5763. msg(p, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccept ", player_name)));
  5764. goto("wait");
  5765. @tpahere
  5766. if(size != 1) {
  5767. msg.prefix(player, prefix_commands, "/tpahere <player>");
  5768. goto("wait");
  5769. }
  5770. p_name = list.getIndex(args, 0);
  5771. p_uuid = player.getUuid(p_name);
  5772. if(p_uuid == null) {
  5773. msg.prefix(player, prefix_commands, "This player has never been online.");
  5774. goto("wait");
  5775. }
  5776. p_name = player.getName(p_uuid);
  5777. p = read.player(p_name);
  5778. if(p == null) {
  5779. msg.prefix(player, prefix_commands, "This player is not online.");
  5780. goto("wait");
  5781. }
  5782. if(!player.doesAcceptTpaRequests(p)) {
  5783. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  5784. goto("wait");
  5785. }
  5786. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5787. if(world.isGamesName(world_name)) {
  5788. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to this world."));
  5789. goto("wait");
  5790. }
  5791. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5792. if(world.isGamesName(world_name)) {
  5793. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  5794. goto("wait");
  5795. }
  5796. addTpaRequest(p_uuid, player.getUuid(player));
  5797. msg(player, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  5798. msg(p, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccepthere ", player_name)));
  5799. goto("wait");
  5800. @tpaccept
  5801. if(size != 1) {
  5802. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  5803. goto("wait");
  5804. }
  5805. p_name = list.getIndex(args, 0);
  5806. p_uuid = player.getUuid(p_name);
  5807. if(p_uuid == null) {
  5808. msg.prefix(player, prefix_commands, "This player has never been online.");
  5809. goto("wait");
  5810. }
  5811. p_name = player.getName(p_uuid);
  5812. p = read.player(p_name);
  5813. if(p == null) {
  5814. msg.prefix(player, prefix_commands, "This player is not online.");
  5815. goto("wait");
  5816. }
  5817. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5818. if(world.isGamesName(world_name)) {
  5819. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to your world."));
  5820. goto("wait");
  5821. }
  5822. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5823. if(world.isGamesName(world_name)) {
  5824. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  5825. goto("wait");
  5826. }
  5827. player_uuid = player.getUuid(player);
  5828. if(!hasTpaRequest(p_uuid, player_uuid)) {
  5829. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  5830. goto("wait");
  5831. }
  5832. location = entity.getLocation(player);
  5833. player.teleport(p, location, true);
  5834. goto("wait");
  5835. @tpaccepthere
  5836. if(size != 1) {
  5837. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  5838. goto("wait");
  5839. }
  5840. p_name = list.getIndex(args, 0);
  5841. p_uuid = player.getUuid(p_name);
  5842. if(p_uuid == null) {
  5843. msg.prefix(player, prefix_commands, "This player has never been online.");
  5844. goto("wait");
  5845. }
  5846. p_name = player.getName(p_uuid);
  5847. p = read.player(p_name);
  5848. if(p == null) {
  5849. msg.prefix(player, prefix_commands, "This player is not online.");
  5850. goto("wait");
  5851. }
  5852. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5853. if(world.isGamesName(world_name)) {
  5854. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5855. goto("wait");
  5856. }
  5857. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5858. if(world.isGamesName(world_name)) {
  5859. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5860. goto("wait");
  5861. }
  5862. player_uuid = player.getUuid(player);
  5863. if(!hasTpaRequest(player_uuid, p_uuid)) {
  5864. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  5865. goto("wait");
  5866. }
  5867. location = entity.getLocation(p);
  5868. player.teleport(player, location, true);
  5869. goto("wait");
  5870. @teleport
  5871. if(size < 1 || size > 2) {
  5872. if(perm.has(player, "teleport.other")) {
  5873. msg.prefix(player, prefix_commands, "/teleport [player] <to-player>");
  5874. } else {
  5875. msg.prefix(player, prefix_commands, "/teleport <player>");
  5876. }
  5877. goto("wait");
  5878. }
  5879. if(size == 1) {
  5880. to_name = list.getIndex(args, 0);
  5881. }
  5882. elseif(size == 2) {
  5883. if(!perm.has(player, "teleport.other")) {
  5884. perm.no(player, "teleport.other");
  5885. goto("wait");
  5886. }
  5887. affectedname = list.getIndex(args, 0);
  5888. affectedplayer = read.player(affectedname);
  5889. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  5890. to_name = list.getIndex(args, 1);
  5891. if(affectedplayer == null) {
  5892. msg.prefix(player, prefix_commands, "This player is not online.");
  5893. goto("wait");
  5894. }
  5895. }
  5896. if(player.hasMinigame(affectedplayer)) {
  5897. if(size == 2) {
  5898. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  5899. } else {
  5900. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  5901. }
  5902. goto("wait");
  5903. }
  5904. to_player = read.player(to_name);
  5905. if(to_player == null) {
  5906. msg.prefix(player, prefix_commands, "This player is not online.");
  5907. goto("wait");
  5908. }
  5909. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  5910. to_name = player.getName(to_player);
  5911. location = entity.getLocation(to_player);
  5912. if(player.teleport(affectedplayer, location, true)) {
  5913. if(player != affectedplayer) {
  5914. affectedname = player.getName(affectedplayer);
  5915. msg.prefix(player, prefix_commands, concat("Teleported ", affectedname, " to ", to_name, "."));
  5916. }
  5917. msg.prefix(affectedplayer, prefix_commands, concat("Teleported you to ", to_name, "."));
  5918. }
  5919. goto("wait");
  5920. @say
  5921. if(size == 0) {
  5922. msg.prefix(sender, prefix_commands, "/say <text>");
  5923. goto("wait");
  5924. }
  5925. message = text.concatList(args, " ", 0, size - 1);
  5926. msg("online", text.hover("[§cServer§r]", "The center of Wusiness"), " ", text.replace(message, "&", "§"));
  5927. msg("SERVER", "[§cServer§r] ", text.replace(message, "&", "§"));
  5928. goto("wait");
  5929. @warp
  5930. if(size == 0) {
  5931. @warpsyntax
  5932. msg.prefix(player, prefix_commands, "/warp ...");
  5933. if(perm.has(player, "warp.create")) {
  5934. msg(player, "§6 - set [group] <warp> §rSets a warp");
  5935. msg(player, "§6 - delete [group] <warp> §rDeletes a warp");
  5936. msg(player, "§6 - [group] <warp> §rTeleports to a warp");
  5937. msg(player, "§6 - list [group] §rLists all warps");
  5938. msg(player, "§6 - groups §rLists all warp groups");
  5939. } else {
  5940. msg(player, "§6 - <warp> §rTeleports to a warp");
  5941. msg(player, "§6 - list §rLists all warps");
  5942. }
  5943. goto("wait");
  5944. }
  5945. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5946. if(arg0 == "delete") {
  5947. if(!perm.has(player, "warp.create")) {
  5948. perm.no(player, "warp.create");
  5949. goto("wait");
  5950. }
  5951. if(size < 2) {
  5952. goto("warpsyntax");
  5953. }
  5954. if(size == 2) {
  5955. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5956. warp_group = "default";
  5957. } else {
  5958. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5959. warp_name = text.toLowerCase(list.getIndex(args, 2));
  5960. }
  5961. if(warp.delete(warp_group, warp_name)) {
  5962. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " deleted."));
  5963. } else {
  5964. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  5965. }
  5966. goto("wait");
  5967. }
  5968. if(arg0 == "list") {
  5969. if(size == 1) {
  5970. warp_group = "default";
  5971. } else {
  5972. if(!perm.has(player, "warp.create")) {
  5973. perm.no(player, "warp.create");
  5974. goto("wait");
  5975. }
  5976. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5977. }
  5978. warps_list = warp.getList(warp_group);
  5979. if(list.getSize(warps_list) == 0) {
  5980. msg.prefix(player, prefix_commands, "No warps existing.");
  5981. } else {
  5982. msg.prefix(player, prefix_commands, concat("§6", warp_group, "§r warps:"));
  5983. for(i = 0; i < list.getSize(warps_list); i++) {
  5984. msg(player, concat("§6 - §r", list.getIndex(warps_list, i)));
  5985. }
  5986. }
  5987. goto("wait");
  5988. }
  5989. if(arg0 == "groups") {
  5990. if(!perm.has(player, "warp.create")) {
  5991. perm.no(player, "warp.create");
  5992. goto("wait");
  5993. }
  5994. groups_list = warp.getGroups();
  5995. msg.prefix(player, prefix_commands, "All warp groups:");
  5996. for(i = 0; i < list.getSize(groups_list); i++) {
  5997. msg(player, concat("§6 - §r", list.getIndex(groups_list, i)));
  5998. }
  5999. goto("wait");
  6000. }
  6001. if(arg0 == "set") {
  6002. if(!perm.has(player, "warp.create")) {
  6003. perm.no(player, "warp.create");
  6004. goto("wait");
  6005. }
  6006. if(size < 2) {
  6007. goto("warpsyntax");
  6008. }
  6009. if(size == 2) {
  6010. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6011. warp_group = "default";
  6012. } else {
  6013. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6014. warp_name = text.toLowerCase(list.getIndex(args, 2));
  6015. }
  6016. if(warp.exists(warp_group, warp_name)) {
  6017. msg.prefix(player, prefix_commands, "Warpname already exists.");
  6018. goto("wait");
  6019. }
  6020. warp.create(warp_group, warp_name, entity.getLocation(player));
  6021. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " set."));
  6022. goto("wait");
  6023. }
  6024. //Teleportation
  6025. if(size == 1) {
  6026. warp_name = arg0;
  6027. warp_group = "default";
  6028. } else {
  6029. if(!perm.has(player, "warp.create")) {
  6030. perm.no(player, "warp.create");
  6031. goto("wait");
  6032. }
  6033. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6034. warp_group = arg0;
  6035. }
  6036. warp_loc = warp.get(warp_group, warp_name);
  6037. if(warp_loc == null) {
  6038. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  6039. goto("wait");
  6040. }
  6041. if(!perm.has(player, "warp.create")) {
  6042. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6043. if(world.isGamesName(world_name)) {
  6044. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6045. goto("wait");
  6046. }
  6047. world_name = world.getName(loc.getWorld(warp_loc));
  6048. if(world.isGamesName(world_name)) {
  6049. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6050. goto("wait");
  6051. }
  6052. }
  6053. if(player.teleport(player, warp_loc, true)) {
  6054. msg.prefix(player, prefix_commands, concat("You have been teleported to warp §7", warp_name, "."));
  6055. }
  6056. goto("wait");
  6057. @databank
  6058. if(size == 0) {
  6059. @databankhelp
  6060. msg.prefix(player, prefix_commands, "/databank...");
  6061. msg(player, "§6 - showtables §rShows all tables");
  6062. msg(player, "§6 - showfields §rShows fields from a table");
  6063. msg(player, "§6 - showdataypes §rShows dataypes from a table");
  6064. goto("wait");
  6065. }
  6066. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6067. if(arg0 == "showtables") {
  6068. msg(player, getSpacer());
  6069. stmt = databank.prepare("SHOW TABLES");
  6070. result = databank.execute(stmt);
  6071. while(databank.next(result)) {
  6072. msg(player, databank.getString(result, 1));
  6073. }
  6074. databank.close(result);
  6075. databank.close(stmt);
  6076. goto("wait");
  6077. }
  6078. if(arg0 == "showfields") {
  6079. if(size < 2) {
  6080. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  6081. goto("wait");
  6082. }
  6083. table = list.getIndex(args, 1);
  6084. if(!databank.isExistingTable(table)) {
  6085. msg.prefix(player, prefix_commands, "This in no existing table.");
  6086. goto("wait");
  6087. }
  6088. msg(player, getSpacer());
  6089. fields = databank.getTableFields(table);
  6090. iter = list.iterator(fields);
  6091. while(hasNext(iter)) {
  6092. msg(player, next(iter));
  6093. }
  6094. goto("wait");
  6095. }
  6096. if(arg0 == "showdataypes") {
  6097. if(size < 2) {
  6098. msg.prefix(player, prefix_commands, "/databank showdataypes <table>");
  6099. goto("wait");
  6100. }
  6101. table = list.getIndex(args, 1);
  6102. if(!databank.isExistingTable(table)) {
  6103. msg.prefix(player, prefix_commands, "This in no existing table.");
  6104. goto("wait");
  6105. }
  6106. msg(player, getSpacer());
  6107. msg(player, databank.getTableDatatypes(table));
  6108. goto("wait");
  6109. }
  6110. goto("databankhelp");
  6111. @seen
  6112. if(size != 1) {
  6113. msg.prefix(player, prefix_commands, "/seen <player>");
  6114. goto("wait");
  6115. }
  6116. seen_name = list.getIndex(args, 0);
  6117. seen_uuid = player.getUuid(seen_name);
  6118. if(seen_uuid == null) {
  6119. msg.prefix(player, prefix_commands, "Dieser Spieler war noch nie online.");
  6120. goto("wait");
  6121. }
  6122. if(read.player(seen_name) != null) {
  6123. msg.prefix(player, prefix_commands, "Dieser Spieler ist gerade online.");
  6124. goto("wait");
  6125. }
  6126. seenStatement = databank.prepare("SELECT logouttime FROM logoutdata WHERE player_id = ?;");
  6127. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  6128. result = databank.execute(seenStatement);
  6129. varset = false;
  6130. while(databank.next(result)) {
  6131. time = databank.getLong(result, 1);
  6132. calendar = time.new(time);
  6133. year = text.number(time.getYear(calendar));
  6134. month = text.number(time.getMonth(calendar));
  6135. day = text.number(time.getDay(calendar));
  6136. minute = text.number(time.getMinute(calendar));
  6137. hour = text.number(time.getHour(calendar));
  6138. month = correctTimeFormat(month);
  6139. day = correctTimeFormat(day);
  6140. hour = correctTimeFormat(hour);
  6141. minute = correctTimeFormat(minute);
  6142. dateformat = concat(day, ".", month, ".", year);
  6143. clockformat = concat(hour, ":", minute);
  6144. msg.prefix(player, prefix_commands, concat(seen_name, " war zuletzt am §e", dateformat, "§r um §e", clockformat, " Uhr §ronline."));
  6145. varset = true;
  6146. }
  6147. databank.close(result);
  6148. databank.close(seenStatement);
  6149. if(!varset) {
  6150. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  6151. goto("wait");
  6152. }
  6153. goto("wait");
  6154. @lastseen
  6155. if(size != 1) {
  6156. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  6157. goto("wait");
  6158. }
  6159. amount = list.getIndex(args, 0);
  6160. if(!isDouble(amount)) {
  6161. msg.prefix(sender, prefix_commands, "Zahl erwartet.");
  6162. goto("wait");
  6163. }
  6164. if(amount < 1) {
  6165. msg.prefix(sender, prefix_commands, "Zahl größer 0 erwartet.");
  6166. goto("wait");
  6167. }
  6168. msg.prefix(sender, prefix_commands, "These players were last seen:");
  6169. table = table.new("§f", 12, 12);
  6170. msg(sender, table.getStart(table));
  6171. msg(sender, table.get(table, "Player", "Date"));
  6172. msg(sender, table.getMiddle(table));
  6173. lastseenStatement = databank.prepare("SELECT player_id, logouttime FROM logoutdata ORDER BY logouttime DESC LIMIT ?;");
  6174. databank.setInt(lastseenStatement, 1, amount);
  6175. result = databank.execute(lastseenStatement);
  6176. while(databank.next(result)) {
  6177. id = databank.getInt(result, 1);
  6178. time = databank.getLong(result, 2);
  6179. msg(sender, table.get(table, concat("§a", player.getNameFromId(id)), concat("§e", getTimeString(time))));
  6180. }
  6181. msg(sender, table.getEnd(table));
  6182. databank.close(result);
  6183. databank.close(lastseenStatement);
  6184. goto("wait");
  6185. @feed
  6186. if(size > 1) {
  6187. msg.prefix(player, prefix_commands, "/feed [player]");
  6188. goto("wait");
  6189. }
  6190. if(size == 1) {
  6191. affectedname = list.getIndex(args, 0);
  6192. affectedplayer = read.player(affectedname);
  6193. if(affectedplayer == null) {
  6194. msg.prefix(player, prefix_commands, "This player is not online.");
  6195. goto("wait");
  6196. }
  6197. if(player != affectedplayer) {
  6198. affectedname = player.getName(affectedplayer);
  6199. msg.prefix(player, prefix_commands, concat("Der Hunger von ", affectedname, " wurde gestillt."));
  6200. }
  6201. }
  6202. player.setHunger(affectedplayer, 20);
  6203. player.setSaturation(affectedplayer, 5);
  6204. msg.prefix(affectedplayer, prefix_commands, "Dein Hunger wurde gestillt.");
  6205. goto("wait");
  6206. @tempfly
  6207. if(size < 2) {
  6208. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  6209. goto("wait");
  6210. }
  6211. p_name = list.getIndex(args, 0);
  6212. if(!checkIfEverOnline(p_name)) {
  6213. msg.prefix(sender, prefix_commands, "This player has never been online.");
  6214. goto("wait");
  6215. }
  6216. p = read.player(p_name);
  6217. if(p == null) {
  6218. msg.prefix(sender, prefix_commands, "This player is not online.");
  6219. goto("wait");
  6220. }
  6221. p_name = player.getName(player.getUuid(p_name));
  6222. if(player.hasMinigame(p)) {
  6223. msg.prefix(player, prefix_commands, "This player can't fly now.");
  6224. goto("wait");
  6225. }
  6226. sec = list.getIndex(args, 1);
  6227. if(!isDouble(sec) || sec < 0) {
  6228. msg.prefix(sender, prefix_commands, "Positive number expected.");
  6229. goto("wait");
  6230. }
  6231. msg.prefix(sender, prefix_commands, concat(p_name, " can now fly for ", text.number(sec), " seconds."));
  6232. msg.prefix(p, prefix_commands, concat("You can now fly for ", text.number(sec), " seconds."));
  6233. player.setFly(p, true);
  6234. duration = sec * 20;
  6235. data.setTimer(p, "fly", duration);
  6236. status.addTimed(player, 53, duration, "Fly");
  6237. goto("wait");
  6238. @fly
  6239. if(size > 2) {
  6240. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  6241. goto("wait");
  6242. }
  6243. if(size >= 1) {
  6244. if(!perm.has(player, "fly.other")) {
  6245. perm.no(player, "fly.other");
  6246. goto("wait");
  6247. }
  6248. affectedname = list.getIndex(args, 0);
  6249. affectedplayer = read.player(affectedname);
  6250. if(affectedplayer == null) {
  6251. msg.prefix(player, prefix_commands, "This player is not online.");
  6252. goto("wait");
  6253. }
  6254. }
  6255. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6256. if(world.isGamesName(world_name)) {
  6257. if(player.hasMinigame(affectedplayer) || (perm.has(affectedplayer, "fly") && !perm.has(affectedplayer, "isTeam"))) {
  6258. if(size == 2) {
  6259. msg.prefix(player, prefix_commands, "This player can't fly now.");
  6260. } else {
  6261. msg.prefix(player, prefix_commands, "You can't fly now.");
  6262. }
  6263. goto("wait");
  6264. }
  6265. }
  6266. if(size == 2) {
  6267. boolean = list.getIndex(args, 1);
  6268. if(boolean == "on") {
  6269. fly = true;
  6270. } elseif(boolean == "off") {
  6271. fly = false;
  6272. } else {
  6273. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  6274. goto("wait");
  6275. }
  6276. } else {
  6277. if(player.hasFly(affectedplayer)) {
  6278. fly = false;
  6279. } else {
  6280. fly = true;
  6281. }
  6282. }
  6283. player.setFly(affectedplayer, fly);
  6284. if(fly) {
  6285. msg.prefix(affectedplayer, prefix_commands, "You can fly now.");
  6286. if(player != affectedplayer) {
  6287. affectedname = player.getName(affectedplayer);
  6288. msg.prefix(player, prefix_commands, concat(affectedname, " can fly now."));
  6289. }
  6290. } else {
  6291. msg.prefix(affectedplayer, prefix_commands, "You can't fly anymore.");
  6292. if(player != affectedplayer) {
  6293. affectedname = player.getName(affectedplayer);
  6294. msg.prefix(player, prefix_commands, concat(affectedname, " can't fly anymore."));
  6295. }
  6296. }
  6297. goto("wait");
  6298. @tppos
  6299. if(size < 3 || size > 5) {
  6300. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  6301. goto("wait");
  6302. }
  6303. x = list.getIndex(args, 0);
  6304. y = list.getIndex(args, 1);
  6305. z = list.getIndex(args, 2);
  6306. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  6307. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  6308. goto("wait");
  6309. }
  6310. if(size >= 4) {
  6311. worldname = list.getIndex(args, 3);
  6312. world = world.get(worldname);
  6313. if(world == null) {
  6314. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6315. goto("wait");
  6316. }
  6317. } else {
  6318. world = loc.getWorld(entity.getLocation(player));
  6319. }
  6320. if(x < -16000) {
  6321. x = -16000;
  6322. } elseif(x > 16000) {
  6323. x = 16000;
  6324. }
  6325. if(y < 0) {
  6326. y = 0;
  6327. } elseif(y > 255) {
  6328. y = 255;
  6329. }
  6330. if(z < -16000) {
  6331. z = -16000;
  6332. } elseif(z > 16000) {
  6333. z = 16000;
  6334. }
  6335. location = loc.new(world, x, y, z);
  6336. if(size == 5) {
  6337. affectedname = list.getIndex(args, 4);
  6338. affectedplayer = read.player(affectedname);
  6339. if(affectedplayer == null) {
  6340. msg.prefix(player, prefix_commands, "This player is not online.");
  6341. goto("wait");
  6342. }
  6343. }
  6344. if(player.hasMinigame(affectedplayer)) {
  6345. if(size == 5) {
  6346. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  6347. } else {
  6348. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  6349. }
  6350. goto("wait");
  6351. }
  6352. if(player.teleport(affectedplayer, location, true)) {
  6353. if(player != affectedplayer) {
  6354. affectedname = player.getName(affectedplayer);
  6355. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported."));
  6356. }
  6357. }
  6358. goto("wait");
  6359. @back
  6360. if(size > 0) {
  6361. msg.prefix(player, prefix_commands, "/back");
  6362. goto("wait");
  6363. }
  6364. if(player.hasMinigame(player)) {
  6365. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  6366. goto("wait");
  6367. }
  6368. hasPerms = perm.has(player, "isTeam");
  6369. if(!hasPerms) {
  6370. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6371. if(world.isGamesName(world_name) || world.isStoryName(world_name)) {
  6372. msg.prefix(player, prefix_commands, "You can't use /back in this world.");
  6373. goto("wait");
  6374. }
  6375. }
  6376. location = player.getBackPos(player);
  6377. if(location == null) {
  6378. msg.prefix(player, prefix_commands, "No back-location available.");
  6379. goto("wait");
  6380. }
  6381. world = loc.getWorld(location);
  6382. if(world == null) {
  6383. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6384. goto("wait");
  6385. }
  6386. if(!hasPerms) {
  6387. world_name = world.getName(world);
  6388. if(world.isGamesName(world_name)) {
  6389. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6390. goto("wait");
  6391. }
  6392. }
  6393. player.teleport(player, location, true);
  6394. goto("wait");
  6395. @clan
  6396. if(size == 0) {
  6397. @clanhelp
  6398. msg.prefix(player, prefix_clan, "§r/clan...");
  6399. msg(player, "§2 - invite <name> §rInvites a player");
  6400. msg(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  6401. msg(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  6402. msg(player, "§2 - create <name> <tag> §rCreates a clan");
  6403. msg(player, "§2 - kick <name> §rKicks a player");
  6404. msg(player, "§2 - leader <name> §rPromote to clan-leader");
  6405. msg(player, "§2 - mod <name> §rPromote to clan-mod");
  6406. msg(player, "§2 - degrade <name> §rDemote a clan-mod");
  6407. msg(player, "§2 - leave §rLeave a clan");
  6408. msg(player, "§2 - disband §rDisband a clan");
  6409. msg(player, "§2 - rename <name> <tag> §rRenames a clan");
  6410. msg(player, "§2 - setspawn §rSets a clan-spawn");
  6411. msg(player, "§2 - spawn §rTeleports to clan-spawn");
  6412. msg(player, "§2 - msg <message> §rSends a clan-message");
  6413. msg(player, "§2 - mail <message> §rSends a clan-mail");
  6414. msg(player, "§2 - shout <message> §rSends a message to all online players");
  6415. msg(player, "§2 - deposit <money> §rDeposit money to the clan account");
  6416. msg(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  6417. msg(player, "§2 - party §rInvites all online members to a party");
  6418. msg(player, "§2 - list §rLists all clans");
  6419. goto("wait");
  6420. }
  6421. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6422. if(arg0 == "invite") {
  6423. if(size != 2) {
  6424. msg.prefix(player, prefix_commands, "/clan invite <name>");
  6425. goto("wait");
  6426. }
  6427. if(!player.isInClan(player)) {
  6428. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6429. goto("wait");
  6430. }
  6431. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6432. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6433. goto("wait");
  6434. }
  6435. p_name = list.getIndex(args, 1);
  6436. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6437. msg.prefix(player, prefix_clan, "You can't invite yourself.");
  6438. goto("wait");
  6439. }
  6440. if(!checkIfEverOnline(p_name)) {
  6441. msg.prefix(sender, prefix_clan, "This player has never been online.");
  6442. goto("wait");
  6443. }
  6444. if(!isOnline(p_name)) {
  6445. msg.prefix(player, prefix_clan, "This player has to be online.");
  6446. goto("wait");
  6447. }
  6448. p = read.player(p_name);
  6449. if(player.isClanMember(player)) {
  6450. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  6451. goto("wait");
  6452. }
  6453. clan_id = player.getClanId(player);
  6454. p_id = player.getId(p);
  6455. if(player.hasClanInvitation(p_id, clan_id)) {
  6456. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  6457. goto("wait");
  6458. }
  6459. player.addClanInvitation(p_id, clan_id);
  6460. clan_name = clan.getName(clan_id);
  6461. msg.prefix(player, prefix_clan, text.concat("You invited §7", p_name, "§r to your clan."));
  6462. msg.prefix(p, prefix_clan, text.concat("You got an clan invitation by §7", clan_name, "§r."));
  6463. msg(p, text.click("§r[§aAccept§r]", concat("/clan accept ", clan_id)));
  6464. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  6465. goto("wait");
  6466. }
  6467. if(arg0 == "accept") {
  6468. if(size != 2) {
  6469. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  6470. goto("wait");
  6471. }
  6472. if(player.isInClan(player)) {
  6473. msg.prefix(player, prefix_clan, "You are already in a clan.");
  6474. goto("wait");
  6475. }
  6476. arg1 = list.getIndex(args, 1);
  6477. if(isDouble(arg1)) {
  6478. clan_id = arg1;
  6479. clan_name = clan.getName(clan_id);
  6480. if(clan_name == null) {
  6481. msg.prefix(player, prefix_clan, "Unknown clan.");
  6482. goto("wait");
  6483. }
  6484. } else {
  6485. clan_id = clan.getIdFromName(arg1);
  6486. if(clan_id == null) {
  6487. clan_id = clan.getIdFromTag(arg1);
  6488. if(clan_id == null) {
  6489. msg.prefix(player, prefix_clan, "Unknown clan.");
  6490. goto("wait");
  6491. }
  6492. }
  6493. }
  6494. player_id = player.getId(player);
  6495. if(!player.hasClanInvitation(player_id, clan_id)) {
  6496. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  6497. goto("wait");
  6498. }
  6499. clan.addMember(clan_id, player, "member");
  6500. player.setHeadName(player);
  6501. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r joined the clan."));
  6502. msg.prefix(player, prefix_clan, text.concat("You joined §7", clan_name, "§r."));
  6503. clan_size = clan.getMembersAmount(clan_id);
  6504. if(clan_size >= 15) {
  6505. rank.offerClan(clan_id, "rank.lord");
  6506. } elseif(clan_size >= 10) {
  6507. rank.offerClan(clan_id, "rank.chief");
  6508. } elseif(clan_size >= 5) {
  6509. rank.offerClan(clan_id, "rank.commander");
  6510. }
  6511. goto("wait");
  6512. }
  6513. if(arg0 == "create") {
  6514. if(size != 3) {
  6515. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  6516. goto("wait");
  6517. }
  6518. if(player.isInClan(player)) {
  6519. msg.prefix(player, prefix_clan, "You are already in a clan.");
  6520. goto("wait");
  6521. }
  6522. clan_name = list.getIndex(args, 1);
  6523. if(text.length(clan_name) > 20) {
  6524. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  6525. goto("wait");
  6526. }
  6527. if(!text.onlyletters(clan_name)) {
  6528. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6529. goto("wait");
  6530. }
  6531. if(clan.isExistingName(clan_name)) {
  6532. msg.prefix(player, prefix_clan, "This name already exists.");
  6533. goto("wait");
  6534. }
  6535. clan_tag = list.getIndex(args, 2);
  6536. tag_length = text.length(clan_tag);
  6537. if(tag_length < 3 || tag_length > 4) {
  6538. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  6539. goto("wait");
  6540. }
  6541. if(!text.onlyletters(clan_tag)) {
  6542. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6543. goto("wait");
  6544. }
  6545. if(clan.isExistingTag(clan_tag)) {
  6546. msg.prefix(player, prefix_clan, "This tag already exists.");
  6547. goto("wait");
  6548. }
  6549. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  6550. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  6551. goto("wait");
  6552. }
  6553. subMoney(player, 4096);
  6554. clan_id = clan.create(clan_name, clan_tag);
  6555. clan.addMember(clan_id, player, "leader");
  6556. player.setHeadName(player);
  6557. msg.prefix(player, prefix_clan, "Clan successful created.");
  6558. goto("wait");
  6559. }
  6560. if(arg0 == "info") {
  6561. if(size == 1) {
  6562. if(!player.isInClan(player)) {
  6563. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  6564. goto("wait");
  6565. }
  6566. clan_id = player.getClanId(player);
  6567. clan_name = clan.getName(clan_id);
  6568. clan_tag = clan.getTag(clan_id);
  6569. }
  6570. if(size == 2) {
  6571. arg1 = list.getIndex(args, 1);
  6572. if(isDouble(arg1)) {
  6573. clan_id = arg1;
  6574. clan_name = clan.getName(clan_id);
  6575. if(clan_name == null) {
  6576. msg.prefix(player, prefix_clan, "Unknown clan.");
  6577. goto("wait");
  6578. }
  6579. } else {
  6580. clan_id = clan.getIdFromName(arg1);
  6581. if(clan_id == null) {
  6582. clan_id = clan.getIdFromTag(arg1);
  6583. if(clan_id == null) {
  6584. msg.prefix(player, prefix_clan, "Unknown clan.");
  6585. goto("wait");
  6586. }
  6587. }
  6588. clan_name = clan.getName(clan_id);
  6589. }
  6590. clan_tag = clan.getTag(clan_id);
  6591. }
  6592. list = clan.getMembersList(clan_id);
  6593. mod_list = list.new();
  6594. members_list = list.new();
  6595. iter = list.iterator(list);
  6596. while(hasNext(iter)) {
  6597. player_uuid = next(iter);
  6598. player_name = player.getName(player_uuid);
  6599. player_id = player.getId(player_uuid);
  6600. if(player.isClanLeader(player_id)) {
  6601. leader = player_name;
  6602. } else {
  6603. if(player.isClanMod(player_id)) {
  6604. list.add(mod_list, player_name);
  6605. } else {
  6606. list.add(members_list, player_name);
  6607. }
  6608. }
  6609. }
  6610. if(list.getSize(mod_list) == 0) {
  6611. mods = "-";
  6612. } else {
  6613. mods = text.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  6614. }
  6615. if(list.getSize(members_list) == 0) {
  6616. members = "-";
  6617. } else {
  6618. members = text.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  6619. }
  6620. msg(player, text.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", text.number(clan_id), ")"));
  6621. msg(player, "§6Leader");
  6622. msg(player, "§r", leader);
  6623. msg(player, "§6Mods");
  6624. msg(player, "§r", mods);
  6625. msg(player, "§6Members");
  6626. msg(player, "§r", members);
  6627. msg(player, "§6Money");
  6628. msg(player, text.number(clan.getMoney(clan_id)));
  6629. goto("wait");
  6630. }
  6631. if(arg0 == "rename") {
  6632. if(!player.isInClan(player)) {
  6633. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6634. goto("wait");
  6635. }
  6636. if(!player.isClanLeader(player)) {
  6637. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6638. goto("wait");
  6639. }
  6640. if(size != 3) {
  6641. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  6642. goto("wait");
  6643. }
  6644. clan_name = list.getIndex(args, 1);
  6645. if(text.length(clan_name) > 20) {
  6646. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  6647. goto("wait");
  6648. }
  6649. if(!text.onlyletters(clan_name)) {
  6650. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6651. goto("wait");
  6652. }
  6653. if(clan.isExistingName(clan_name)) {
  6654. msg.prefix(player, prefix_clan, "This name already exists.");
  6655. goto("wait");
  6656. }
  6657. clan_tag = list.getIndex(args, 2);
  6658. tag_length = text.length(clan_tag);
  6659. if(tag_length < 3 || tag_length > 4) {
  6660. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  6661. goto("wait");
  6662. }
  6663. if(!text.onlyletters(clan_tag)) {
  6664. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6665. goto("wait");
  6666. }
  6667. if(clan.isExistingTag(clan_tag)) {
  6668. msg.prefix(player, prefix_clan, "This tag already exists.");
  6669. goto("wait");
  6670. }
  6671. clan_id = player.getClanId(player);
  6672. if(clan.getMoney(clan_id) < 64) {
  6673. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  6674. goto("wait");
  6675. }
  6676. clan.subMoney(clan_id, 64);
  6677. clan.setName(clan_id, clan_name);
  6678. clan.setTag(clan_id, clan_tag);
  6679. clan.msg(clan_id, text.concat("Clan renamed to §7", clan_name, "§r."));
  6680. //New tag for online players
  6681. clan.updateHeadNames(clan_id);
  6682. goto("wait");
  6683. }
  6684. if(arg0 == "msg") {
  6685. if(!player.isInClan(player)) {
  6686. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6687. goto("wait");
  6688. }
  6689. if(size < 2) {
  6690. msg.prefix(player, prefix_commands, "/clan msg <message>");
  6691. goto("wait");
  6692. }
  6693. clan_id = player.getClanId(player);
  6694. clan.msg(clan_id, text.concat(player.getName(player), ": ", text.concatList(args, " ", 1, size - 1)));
  6695. goto("wait");
  6696. }
  6697. if(arg0 == "mail") {
  6698. if(!player.isInClan(player)) {
  6699. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6700. goto("wait");
  6701. }
  6702. if(size < 2) {
  6703. msg.prefix(player, prefix_commands, "/clan mail <message>");
  6704. goto("wait");
  6705. }
  6706. if(player.isClanMember(player)) {
  6707. msg.prefix(player, prefix_commands, "You have no permission for this.");
  6708. goto("wait");
  6709. }
  6710. clan_id = player.getClanId(player);
  6711. clan.mail(clan_id, player.getName(player), text.concatList(args, " ", 1, size - 1));
  6712. goto("wait");
  6713. }
  6714. if(arg0 == "shout") {
  6715. if(!player.isInClan(player)) {
  6716. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6717. goto("wait");
  6718. }
  6719. if(size < 2) {
  6720. msg.prefix(player, prefix_commands, "/clan shout <message>");
  6721. goto("wait");
  6722. }
  6723. if(player.isClanMember(player)) {
  6724. msg.prefix(player, prefix_commands, "You have no permission for this.");
  6725. goto("wait");
  6726. }
  6727. clan_id = player.getClanId(player);
  6728. if(clan.getMoney(clan_id) < 10) {
  6729. msg.prefix(player, prefix_clan, "Your clan needs 10 snuvis.");
  6730. goto("wait");
  6731. }
  6732. clan.subMoney(clan_id, 10);
  6733. msg.prefix("online", prefix_clan, text.concat(clan.getTag(clan_id), ": ", text.concatList(args, " ", 1, size - 1)));
  6734. goto("wait");
  6735. }
  6736. if(arg0 == "deposit") {
  6737. if(!player.isInClan(player)) {
  6738. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6739. goto("wait");
  6740. }
  6741. if(size != 2) {
  6742. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  6743. goto("wait");
  6744. }
  6745. money = list.getIndex(args, 1);
  6746. if(!isDouble(money) || money < 0) {
  6747. msg.prefix(player, prefix_clan, "Positive number expected.");
  6748. goto("wait");
  6749. }
  6750. if(!hasEnoughMoney(player, money)) {
  6751. msg.prefix(player, prefix_clan, "You can't transfer more money than you have.");
  6752. goto("wait");
  6753. }
  6754. clan_id = player.getClanId(player);
  6755. clan.addMoney(clan_id, money);
  6756. subMoney(player, money);
  6757. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r transferred §7", text.number(money), "§r snuvis."));
  6758. goto("wait");
  6759. }
  6760. if(arg0 == "party") {
  6761. counter = 0;
  6762. clan_id = player.getClanId(player);
  6763. list = clan.getMembersList(clan_id);
  6764. iter = list.iterator(list);
  6765. while(hasNext(iter)) {
  6766. p = player.get(next(iter));
  6767. if(p != null) {
  6768. temp = party.invitePlayer(player, p);
  6769. if(temp == true) {
  6770. counter++;
  6771. }
  6772. }
  6773. }
  6774. msg.prefix(player, prefix_clan, concat(text.number(counter), " online clan members invited to a party."));
  6775. goto("wait");
  6776. }
  6777. if(arg0 == "withdraw") {
  6778. if(!player.isInClan(player)) {
  6779. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6780. goto("wait");
  6781. }
  6782. if(!player.isClanLeader(player)) {
  6783. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6784. goto("wait");
  6785. }
  6786. if(size != 2) {
  6787. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  6788. goto("wait");
  6789. }
  6790. money = list.getIndex(args, 1);
  6791. if(!isDouble(money) || money < 0) {
  6792. msg.prefix(player, prefix_clan, "Positive number expected.");
  6793. goto("wait");
  6794. }
  6795. clan_id = player.getClanId(player);
  6796. clan_money = clan.getMoney(clan_id);
  6797. if(clan_money < money) {
  6798. msg.prefix(player, prefix_clan, text.concat("There are only §7", text.number(clan_money), "§r snuvis on the clan account."));
  6799. goto("wait");
  6800. }
  6801. clan.subMoney(clan_id, money);
  6802. addMoney(player, money);
  6803. msg.prefix(player, prefix_clan, text.concat("You have withdrawn §7", text.number(money), "§r snuvis."));
  6804. goto("wait");
  6805. }
  6806. if(arg0 == "leader") {
  6807. if(!player.isInClan(player)) {
  6808. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6809. goto("wait");
  6810. }
  6811. if(!player.isClanLeader(player)) {
  6812. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6813. goto("wait");
  6814. }
  6815. if(size != 2) {
  6816. msg.prefix(player, prefix_commands, "/clan leader <name>");
  6817. goto("wait");
  6818. }
  6819. p_name = list.getIndex(args, 1);
  6820. if(!checkIfEverOnline(p_name)) {
  6821. msg.prefix(player, prefix_clan, "This player has never been online.");
  6822. goto("wait");
  6823. }
  6824. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6825. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6826. goto("wait");
  6827. }
  6828. p_uuid = player.getUuid(p_name);
  6829. p_id = player.getId(p_uuid);
  6830. if(!player.isSameClan(player, p_id)) {
  6831. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6832. goto("wait");
  6833. }
  6834. player.setClanRole(p_id, "leader");
  6835. player.setClanRole(player, "mod");
  6836. clan_id = player.getClanId(player);
  6837. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan leader."));
  6838. goto("wait");
  6839. }
  6840. if(arg0 == "mod") {
  6841. if(!player.isInClan(player)) {
  6842. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6843. goto("wait");
  6844. }
  6845. if(!player.isClanLeader(player)) {
  6846. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6847. goto("wait");
  6848. }
  6849. if(size != 2) {
  6850. msg.prefix(player, prefix_commands, "/clan leader <name>");
  6851. goto("wait");
  6852. }
  6853. p_name = list.getIndex(args, 1);
  6854. if(!checkIfEverOnline(p_name)) {
  6855. msg.prefix(player, prefix_clan, "This player has never been online.");
  6856. goto("wait");
  6857. }
  6858. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6859. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6860. goto("wait");
  6861. }
  6862. p_uuid = player.getUuid(p_name);
  6863. p_id = player.getId(p_uuid);
  6864. if(!player.isSameClan(player, p_id)) {
  6865. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6866. goto("wait");
  6867. }
  6868. player.setClanRole(p_id, "mod");
  6869. clan_id = player.getClanId(player);
  6870. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan mod."));
  6871. goto("wait");
  6872. }
  6873. if(arg0 == "degrade") {
  6874. if(!player.isInClan(player)) {
  6875. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6876. goto("wait");
  6877. }
  6878. if(!player.isClanLeader(player)) {
  6879. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6880. goto("wait");
  6881. }
  6882. if(size != 2) {
  6883. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  6884. goto("wait");
  6885. }
  6886. p_name = list.getIndex(args, 1);
  6887. if(!checkIfEverOnline(p_name)) {
  6888. msg.prefix(player, prefix_clan, "This player has never been online.");
  6889. goto("wait");
  6890. }
  6891. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6892. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6893. goto("wait");
  6894. }
  6895. p_uuid = player.getUuid(p_name);
  6896. p_id = player.getId(p_uuid);
  6897. if(!player.isSameClan(player, p_id)) {
  6898. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6899. goto("wait");
  6900. }
  6901. player.setClanRole(p_id, "member");
  6902. clan_id = player.getClanId(player);
  6903. clan.msg(clan_id, text.concat("§7", p_name, "§r was degraded."));
  6904. goto("wait");
  6905. }
  6906. if(arg0 == "kick") {
  6907. if(!player.isInClan(player)) {
  6908. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6909. goto("wait");
  6910. }
  6911. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6912. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6913. goto("wait");
  6914. }
  6915. if(size != 2) {
  6916. msg.prefix(player, prefix_commands, "/clan kick <name>");
  6917. goto("wait");
  6918. }
  6919. p_name = list.getIndex(args, 1);
  6920. if(!checkIfEverOnline(p_name)) {
  6921. msg.prefix(player, prefix_clan, "This player has never been online.");
  6922. goto("wait");
  6923. }
  6924. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6925. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6926. goto("wait");
  6927. }
  6928. p_uuid = player.getUuid(p_name);
  6929. p_id = player.getId(p_uuid);
  6930. if(!player.isSameClan(player, p_id)) {
  6931. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6932. goto("wait");
  6933. }
  6934. if(player.isClanLeader(p_id)) {
  6935. msg.prefix(player, prefix_clan, "You can't kick the leader.");
  6936. goto("wait");
  6937. }
  6938. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  6939. msg.prefix(player, prefix_clan, "You can't kick another mod.");
  6940. goto("wait");
  6941. }
  6942. clan_id = player.getClanId(player);
  6943. clan.msg(clan_id, text.concat("§7", p_name, "§r got kicked out of the clan."));
  6944. clan.removeMember(clan_id, p_id);
  6945. p = read.player(p_name);
  6946. if(p_name != null) {
  6947. player.setHeadName(p);
  6948. }
  6949. goto("wait");
  6950. }
  6951. if(arg0 == "disband") {
  6952. if(!player.isInClan(player)) {
  6953. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6954. goto("wait");
  6955. }
  6956. if(!player.isClanLeader(player)) {
  6957. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6958. goto("wait");
  6959. }
  6960. clan_id = player.getClanId(player);
  6961. clan.msg(clan_id, "Clan disbanded.");
  6962. list = clan.getMembersList(clan_id);
  6963. clan.delete(clan_id);
  6964. iter = list.iterator(list);
  6965. while(hasNext(iter)) {
  6966. p = player.get(next(iter));
  6967. if(p != null) {
  6968. player.setHeadName(p);
  6969. }
  6970. }
  6971. goto("wait");
  6972. }
  6973. if(arg0 == "leave") {
  6974. if(!player.isInClan(player)) {
  6975. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6976. goto("wait");
  6977. }
  6978. if(player.isClanLeader(player)) {
  6979. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  6980. goto("wait");
  6981. }
  6982. clan_id = player.getClanId(player);
  6983. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r left the clan."));
  6984. clan.removeMember(clan_id, player);
  6985. player.setHeadName(player);
  6986. goto("wait");
  6987. }
  6988. if(arg0 == "list") {
  6989. table = table.new("§b", 2, 6, 4, 5);
  6990. msg(player, table.getStart(table));
  6991. msg(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  6992. msg(player, table.getMiddle(table));
  6993. list = clan.getIdList();
  6994. iter = list.iterator(list);
  6995. while(hasNext(iter)) {
  6996. clan_id = next(iter);
  6997. name = clan.getName(clan_id);
  6998. tag = clan.getTag(clan_id);
  6999. amount = clan.getMembersAmount(clan_id);
  7000. msg(player, table.get(table, text.number(clan_id), name, tag, text.number(amount)));
  7001. }
  7002. msg(player, table.getEnd(table));
  7003. goto("wait");
  7004. }
  7005. if(arg0 == "setspawn") {
  7006. if(!player.isInClan(player)) {
  7007. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7008. goto("wait");
  7009. }
  7010. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7011. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7012. goto("wait");
  7013. }
  7014. clan_id = player.getClanId(player);
  7015. clan.setSpawn(clan_id, entity.getLocation(player));
  7016. msg.prefix(player, prefix_clan, "New clan spawn set.");
  7017. goto("wait");
  7018. }
  7019. if(arg0 == "spawn") {
  7020. if(!player.isInClan(player)) {
  7021. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7022. goto("wait");
  7023. }
  7024. clan_id = player.getClanId(player);
  7025. spawn_loc = clan.getSpawn(clan_id);
  7026. if(spawn_loc == null) {
  7027. msg.prefix(player, prefix_clan, "No clan spawn set.");
  7028. goto("wait");
  7029. }
  7030. if(!perm.has(player, "isTeam")) {
  7031. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7032. if(world.isGamesName(world_name)) {
  7033. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  7034. goto("wait");
  7035. }
  7036. }
  7037. player.teleport(player, spawn_loc, true);
  7038. goto("wait");
  7039. }
  7040. goto("clanhelp");
  7041. @remove_clan_invitation
  7042. list.removeIndex(clan_invitations, 0);
  7043. goto("wait");
  7044. @color
  7045. msg(player, getSpacer());
  7046. msg(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  7047. msg(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  7048. msg(player, " &l §l(bold)");
  7049. msg(player, " &m §m(strikethrough)");
  7050. msg(player, " &n §n(underline)");
  7051. msg(player, " &o §o(italic)");
  7052. goto("wait");
  7053. @setspawn
  7054. if(size != 1) {
  7055. @setspawnhelp
  7056. msg.prefix(player, prefix_commands, "§r/setspawn ...");
  7057. msg(player, "§6 - server");
  7058. msg(player, "§6 - games");
  7059. msg(player, "§6 - creative");
  7060. msg(player, "§6 - story");
  7061. goto("wait");
  7062. }
  7063. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7064. new_spawn = text.location(entity.getLocation(player));
  7065. config = getScriptVar("server_config");
  7066. if(arg0 == "games") {
  7067. config.set(config, "gamesspawn", new_spawn);
  7068. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  7069. } elseif(arg0 == "server") {
  7070. config.set(config, "serverspawn", new_spawn);
  7071. msg.prefix(player, prefix_commands, "New main Spawn set.");
  7072. } elseif(arg0 == "creative") {
  7073. config.set(config, "creativespawn", new_spawn);
  7074. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  7075. } elseif(arg0 == "story") {
  7076. config.set(config, "storyspawn", new_spawn);
  7077. msg.prefix(player, prefix_commands, "New spawn for story world set.");
  7078. } else {
  7079. goto("setspawnhelp");
  7080. }
  7081. config.saveAsync(config);
  7082. goto("wait");
  7083. @heal
  7084. if(size > 1) {
  7085. msg.prefix(player, prefix_commands, "/heal [player]");
  7086. goto("wait");
  7087. }
  7088. if(size == 1) {
  7089. affectedname = list.getIndex(args, 0);
  7090. affectedplayer = read.player(affectedname);
  7091. if(affectedplayer == null) {
  7092. msg.prefix(player, prefix_commands, "This player is not online.");
  7093. goto("wait");
  7094. }
  7095. if(player != affectedplayer) {
  7096. affectedname = player.getName(affectedplayer);
  7097. msg.prefix(player, prefix_commands, concat(affectedname, " was healed."));
  7098. }
  7099. }
  7100. living.heal(affectedplayer, 50);
  7101. player.setHunger(affectedplayer, 20);
  7102. player.setSaturation(affectedplayer, 5);
  7103. entity.clearEffects(affectedplayer);
  7104. entity.setBurning(affectedplayer, 0);
  7105. msg.prefix(affectedplayer, prefix_commands, "You have been healed.");
  7106. goto("wait");
  7107. @inv
  7108. if(size == 0) {
  7109. @invhelp
  7110. msg.prefix(player, prefix_commands, "§r/inv ...");
  7111. if(perm.has(player, "inv.ignore")) {
  7112. msg(player, "§6 - ignore §rToggles inventory change on world change");
  7113. }
  7114. if(perm.has(player, "inv.see")) {
  7115. msg(player, "§6 - see <player> §rOpens a player's inventory");
  7116. }
  7117. if(perm.has(player, "inv.reload")) {
  7118. msg(player, "§6 - reload <player> §rReloads a player's inventory");
  7119. }
  7120. if(perm.has(player, "inv.saveFor")) {
  7121. msg(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  7122. }
  7123. if(perm.has(player, "inv.loadFrom")) {
  7124. msg(player, "§6 - loadFrom <player> <world> §rLoads a player's inventory for you");
  7125. }
  7126. goto("wait");
  7127. }
  7128. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7129. if(arg0 == "ignore") {
  7130. if(!perm.has(player, "inv.ignore")) {
  7131. perm.no(player, "inv.ignore");
  7132. goto("wait");
  7133. }
  7134. ignore = player.hasInvIgnore(player);
  7135. if(ignore == null) {
  7136. ignore = false;
  7137. }
  7138. if(ignore) {
  7139. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  7140. } else {
  7141. msg.prefix(player, prefix_commands, "You'll keep your inventory on joining another world.");
  7142. }
  7143. player.invIgnore(player, !ignore);
  7144. goto("wait");
  7145. }
  7146. if(arg0 == "see") {
  7147. if(!perm.has(player, "inv.see")) {
  7148. perm.no(player, "inv.see");
  7149. goto("wait");
  7150. }
  7151. if(size < 2) {
  7152. msg.prefix(player, prefix_commands, "/inv see <player>");
  7153. goto("wait");
  7154. }
  7155. p_name = list.getIndex(args, 1);
  7156. p_uuid = player.getUuid(p_name);
  7157. if(p_uuid == null) {
  7158. msg.prefix(player, prefix_commands, "This player has never been online.");
  7159. goto("wait");
  7160. }
  7161. p = read.player(p_name);
  7162. if(p == null) {
  7163. msg.prefix(player, prefix_commands, "This player is not online.");
  7164. goto("wait");
  7165. }
  7166. inv.show(p, player);
  7167. goto("wait");
  7168. }
  7169. if(arg0 == "reload") {
  7170. if(!perm.has(player, "inv.reload")) {
  7171. perm.no(player, "inv.reload");
  7172. goto("wait");
  7173. }
  7174. if(size < 2) {
  7175. msg.prefix(player, prefix_commands, "/inv reload <player>");
  7176. goto("wait");
  7177. }
  7178. p_name = list.getIndex(args, 1);
  7179. p_uuid = player.getUuid(p_name);
  7180. if(p_uuid == null) {
  7181. msg.prefix(player, prefix_commands, "This player has never been online.");
  7182. goto("wait");
  7183. }
  7184. p = read.player(p_name);
  7185. if(p == null) {
  7186. msg.prefix(player, prefix_commands, "This player is not online.");
  7187. goto("wait");
  7188. }
  7189. world = loc.getWorld(entity.getLocation(p));
  7190. inv.loadFromPlayer(p, p, world);
  7191. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  7192. goto("wait");
  7193. }
  7194. if(arg0 == "savefor") {
  7195. if(size != 1 && size != 3) {
  7196. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  7197. goto("wait");
  7198. }
  7199. if(size == 1) {
  7200. for_player_or_id = player.getId(player);
  7201. world = loc.getWorld(entity.getLocation(player));
  7202. }
  7203. if(size == 3) {
  7204. if(!perm.has(player, "inv.saveFor")) {
  7205. perm.no(player, "inv.saveFor");
  7206. goto("wait");
  7207. }
  7208. p_name = list.getIndex(args, 1);
  7209. p_uuid = player.getUuid(p_name);
  7210. if(p_uuid == null) {
  7211. msg.prefix(player, prefix_commands, "This player has never been online.");
  7212. goto("wait");
  7213. }
  7214. p = read.player(p_name);
  7215. if(p != null) {
  7216. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  7217. goto("wait");
  7218. }
  7219. for_player_or_id = player.getId(p_uuid);
  7220. world_name = list.getIndex(args, 2);
  7221. world = world.get(world_name);
  7222. if(world == null) {
  7223. msg.prefix(player, prefix_world, "This world is not loaded.");
  7224. goto("wait");
  7225. }
  7226. }
  7227. inv.saveForPlayer(player, for_player_or_id, world);
  7228. msg.prefix(player, prefix_commands, "Inventory saved.");
  7229. goto("wait");
  7230. }
  7231. if(arg0 == "loadfrom") {
  7232. if(size != 1 && size != 3) {
  7233. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  7234. goto("wait");
  7235. }
  7236. if(size == 1) {
  7237. from_player_or_id = player.getId(player);
  7238. world = loc.getWorld(entity.getLocation(player));
  7239. }
  7240. if(size == 3) {
  7241. if(!perm.has(player, "inv.loadFrom")) {
  7242. perm.no(player, "inv.loadFrom");
  7243. goto("wait");
  7244. }
  7245. p_name = list.getIndex(args, 1);
  7246. p_uuid = player.getUuid(p_name);
  7247. if(p_uuid == null) {
  7248. msg.prefix(player, prefix_commands, "This player has never been online.");
  7249. goto("wait");
  7250. }
  7251. p = read.player(p_name);
  7252. if(p != null) {
  7253. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  7254. goto("wait");
  7255. }
  7256. from_player_or_id = player.getId(p_uuid);
  7257. world_name = list.getIndex(args, 2);
  7258. world = world.get(world_name);
  7259. if(world == null) {
  7260. msg.prefix(player, prefix_world, "This world is not loaded.");
  7261. goto("wait");
  7262. }
  7263. }
  7264. inv.loadFromPlayer(player, from_player_or_id, world);
  7265. msg.prefix(player, prefix_commands, "Inventory loaded.");
  7266. goto("wait");
  7267. }
  7268. goto("wait");
  7269. @boost
  7270. entity.throw(player, 0, 5, 0);
  7271. goto("wait");
  7272. @memory
  7273. msg.prefix(player, prefix_commands, concat("Used RAM: ", text.number(usedMemory()), " / ", text.number(math.round(allocatedMemory())), " MB"));
  7274. goto("wait");
  7275. @world
  7276. if(size == 0) {
  7277. @world_syntax
  7278. msg.prefix(player, prefix_world, "/world ...");
  7279. msg(player, "§b - info <world> §rShows info about a world");
  7280. msg(player, "§b - tp <world> [player] §rTeleports a player to a world");
  7281. msg(player, "§b - list §rShows all loaded worlds");
  7282. msg(player, "§b - load <world> §rLoads a world");
  7283. msg(player, "§b - unload <world> §rUnloads a world (removes it from memory)");
  7284. msg(player, "§b - setspawn §rSets the world's spawn");
  7285. msg(player, "§b - diffi <world> <diffi> §rSets the world's difficulty");
  7286. goto("wait");
  7287. }
  7288. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7289. if(arg0 == "info") {
  7290. msg(player, getSpacer());
  7291. world = loc.getWorld(entity.getLocation(player));
  7292. msg(player, "§6World: §r", world.getName(world));
  7293. msg(player, "§6Rain: §r", world.hasStorm(world));
  7294. time = world.getTime(world);
  7295. while(time >= 24000) {
  7296. time -= 24000;
  7297. }
  7298. msg(player, "§6Zeit: §r", text.number(time));
  7299. goto("wait");
  7300. }
  7301. if(arg0 == "tp") {
  7302. if(size < 2 || size > 3) {
  7303. msg.prefix(player, prefix_world, "§r/world tp <world> [player]");
  7304. goto("wait");
  7305. }
  7306. if(size >= 2) {
  7307. world_name = text.toLowerCase(list.getIndex(args, 1));
  7308. world = world.get(world_name);
  7309. if(world == null) {
  7310. msg.prefix(player, prefix_world, "This world is not loaded.");
  7311. goto("wait");
  7312. }
  7313. }
  7314. if(size == 3) {
  7315. affectedname = list.getIndex(args, 2);
  7316. affectedplayer = read.player(affectedname);
  7317. if(affectedplayer == null) {
  7318. msg.prefix(player, prefix_world, "This player is not online.");
  7319. goto("wait");
  7320. }
  7321. }
  7322. if(player.hasMinigame(affectedplayer)) {
  7323. if(size == 3) {
  7324. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  7325. } else {
  7326. msg.prefix(player, prefix_commands, "You can't teleport now.");
  7327. }
  7328. goto("wait");
  7329. }
  7330. if(player != affectedplayer) {
  7331. affectedname = player.getName(affectedplayer);
  7332. msg.prefix(player, prefix_world, concat(affectedname, " was teleported to the spawn of the world ", world_name, "."));
  7333. }
  7334. if(world_name == "games") {
  7335. loc = world.getGamesSpawn();
  7336. } elseif(world_name == "creative") {
  7337. loc = world.getCreativeSpawn();
  7338. } elseif(world_name == "story") {
  7339. loc = world.getStorySpawn();
  7340. } else {
  7341. loc = world.getSpawn(world);
  7342. }
  7343. player.teleport(affectedplayer, loc, true);
  7344. goto("wait");
  7345. }
  7346. if(arg0 == "list") {
  7347. msg.prefix(player, prefix_world, "Loaded worlds:");
  7348. worldlist = world.getAll();
  7349. for(i = 0; i < list.getSize(worldlist); i++) {
  7350. msg(player, " - ", world.getName(list.getIndex(worldlist, i)));
  7351. }
  7352. msg(player, getSpacer());
  7353. goto("wait");
  7354. }
  7355. if(arg0 == "load") {
  7356. if(size != 2) {
  7357. msg.prefix(player, prefix_world, "§r/world load <world>");
  7358. goto("wait");
  7359. }
  7360. worldname = list.getIndex(args, 1);
  7361. world = world.get(worldname);
  7362. if(world != null) {
  7363. msg.prefix(player, prefix_world, "This world is already loaded.");
  7364. goto("wait");
  7365. }
  7366. if(!world.register(worldname)) {
  7367. msg.prefix(player, prefix_world, concat("The world ", worldname, " can't be found."));
  7368. goto("wait");
  7369. }
  7370. msg.prefix(player, prefix_world, "The world was loaded.");
  7371. goto("wait");
  7372. }
  7373. if(arg0 == "unload") {
  7374. if(size != 2) {
  7375. msg.prefix(player, prefix_world, "§r/world unload <world>");
  7376. goto("wait");
  7377. }
  7378. worldname = list.getIndex(args, 1);
  7379. world = world.get(worldname);
  7380. if(world == null) {
  7381. msg.prefix(player, prefix_world, "This world is not loaded.");
  7382. goto("wait");
  7383. }
  7384. if(!world.unregister(worldname)) {
  7385. msg.prefix(player, prefix_world, "This world can't be unlaoded.");
  7386. goto("wait");
  7387. }
  7388. msg.prefix(player, prefix_world, "You unlaoded this world.");
  7389. goto("wait");
  7390. }
  7391. if(arg0 == "setspawn") {
  7392. location = entity.getLocation(player);
  7393. world.setSpawn(location, 0);
  7394. msg.prefix(player, prefix_world, concat("New spawn of the world ", world.getName(loc.getWorld(location)), " set."));
  7395. goto("wait");
  7396. }
  7397. if(arg0 == "diffi") {
  7398. if(size != 3) {
  7399. msg.prefix(player, prefix_world, "§r/world diffi <world> <diffi>");
  7400. goto("wait");
  7401. }
  7402. worldname = list.getIndex(args, 1);
  7403. world = world.get(worldname);
  7404. if(world == null) {
  7405. msg.prefix(player, prefix_world, "This world is not loaded.");
  7406. goto("wait");
  7407. }
  7408. diffi_string = list.getIndex(args, 2);
  7409. if(diffi_string != "PEACEFUL" || diffi_string != "EASY" || diffi_string != "NORMAL" || diffi_string != "HARD") {
  7410. msg.prefix(player, prefix_world, "False input.");
  7411. goto("wait");
  7412. }
  7413. world.setDiffi(world, diffi_string);
  7414. msg.prefix(player, prefix_world, "Difficulty changed.");
  7415. goto("wait");
  7416. }
  7417. goto("world_syntax");
  7418. @yeet
  7419. if(size == 0){
  7420. msg.prefix(player, prefix_commands, "/yeet <strength>");
  7421. goto("wait");
  7422. }
  7423. yeet_strength = list.getIndex(args, 0);
  7424. yeet(player,math.abs(yeet_strength));
  7425. msg(player, "§4YEET");
  7426. goto("wait");
  7427. @giveup
  7428. script_id = quest.getFromPlayer(player);
  7429. if(script_id == null) {
  7430. msg.prefix(player, prefix_quest, "You are not in a quest.");
  7431. goto("wait");
  7432. }
  7433. script = script.getFromId(script_id);
  7434. if(script == null) {
  7435. snuvi.debug("Player used giveup on corrupt quest");
  7436. quest.removePlayer(player); //in case of corrupt quest
  7437. msg.prefix(player, prefix_quest, "You have no quest.");
  7438. goto("wait");
  7439. }
  7440. setScriptVar("player", player);
  7441. script.callEvent("quest_term", script);
  7442. quest.term(script, player);
  7443. msg.prefix(player, prefix_quest, "Quest termed.");
  7444. goto("wait");
  7445. @leave
  7446. set = player.getMinigameIds(player);
  7447. iter = set.iterator(set);
  7448. if(hasNext(iter)) {
  7449. script_id = next(iter);
  7450. script = script.getFromId(script_id);
  7451. if(script == null) {
  7452. snuvi.debug(concat("Player left game without existing gamescript ", set));
  7453. 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.");
  7454. player.resetMinigames(player);
  7455. entity.teleport(player, gamesspawn);
  7456. goto("wait");
  7457. }
  7458. minigame.hub(script, player);
  7459. goto("wait");
  7460. }
  7461. msg.prefix(player, "§dScript", "You are not in a minigame.");
  7462. goto("wait");
  7463. function minigame.hub(script, player) {
  7464. script.setVar(script, "player", player);
  7465. script.callEvent("player_giveup", script);
  7466. }
  7467. @jail
  7468. if(size != 1) {
  7469. msg.prefix(player, prefix_commands, "/jail <player>");
  7470. } else {
  7471. p_name = list.getIndex(args, 0);
  7472. if(!checkIfEverOnline(p_name)) {
  7473. msg.prefix(player, prefix_jail, "This player has never been online.");
  7474. goto("wait");
  7475. }
  7476. p_uuid = player.getUuid(p_name);
  7477. if(isJailed(p_uuid)) {
  7478. msg.prefix(player, prefix_jail, "This player is already jailed.");
  7479. goto("wait");
  7480. }
  7481. if(player_name == p_name) {
  7482. msg.prefix(player, prefix_jail, "Self-Jailing isn't a good idea.");
  7483. goto("wait");
  7484. }
  7485. if(!isOnline(p_name)) {
  7486. msg.prefix(player, prefix_jail, "This player is not online.");
  7487. goto("wait");
  7488. }
  7489. p = read.player(p_name);
  7490. if(perm.has(p, "jail")) {
  7491. msg.prefix(player, prefix_jail, "You can't jail this player.");
  7492. goto("wait");
  7493. }
  7494. list.add(jailed_list, p_uuid);
  7495. msg.prefix(player, prefix_jail, concat(p_name, " wurde gejailt"));
  7496. showJail(p_name);
  7497. if(!jail_loop_active) {
  7498. sgoto(5, "jailloop");
  7499. }
  7500. }
  7501. goto("wait");
  7502. @unjail
  7503. if(size != 1) {
  7504. msg.prefix(player, prefix_commands, "/unjail <player>");
  7505. } else {
  7506. p_name = list.getIndex(args, 0);
  7507. if(!checkIfEverOnline(p_name)) {
  7508. msg.prefix(player, prefix_jail, "This player has never been online.");
  7509. goto("wait");
  7510. }
  7511. p_uuid = player.getUuid(p_name);
  7512. if(!isJailed(p_uuid)) {
  7513. msg.prefix(player, prefix_jail, "This player is not jailed.");
  7514. goto("wait");
  7515. }
  7516. list.remove(jailed_list, p_uuid);
  7517. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  7518. }
  7519. goto("wait");
  7520. function inv.show(from_player, to_player) {
  7521. player_inv = player.getInv(from_player);
  7522. //inv = inv.new("333303000 333333333 333333333 333333333 000000000 333333333");
  7523. inv = inv.new("333303000333333333333333333333333333000000000333333333");
  7524. set.add($invseeids, inv.getId(inv));
  7525. inv.setItem(inv, 0, living.getEquip(from_player, "head"));
  7526. inv.setItem(inv, 1, living.getEquip(from_player, "chest"));
  7527. inv.setItem(inv, 2, living.getEquip(from_player, "legs"));
  7528. inv.setItem(inv, 3, living.getEquip(from_player, "feet"));
  7529. inv.setItem(inv, 4, living.getEquip(from_player, "offhand"));
  7530. for(slot = 0; slot <= 8; slot++) {
  7531. inv.setItem(inv, slot + 32, inv.getItem(player_inv, slot));
  7532. }
  7533. for(slot = 0; slot <= 26; slot++) {
  7534. inv.setItem(inv, slot + 5, inv.getItem(player_inv, slot + 9));
  7535. }
  7536. inv.open(inv, to_player, concat("Inventory of ", player.getName(from_player)));
  7537. }
  7538. function isAWallSign(location) {
  7539. return block.hasTag($wall_signs_tag, block.get(location));
  7540. }
  7541. //--------------------------------------------------
  7542. //Databank-Utils
  7543. //--------------------------------------------------
  7544. function databank.isExistingTable(table) {
  7545. temp = false;
  7546. stmt = databank.prepare("SHOW TABLES");
  7547. result = databank.execute(stmt);
  7548. while(databank.next(result)) {
  7549. if(table == databank.getString(result, 1)) {
  7550. temp = true;
  7551. break;
  7552. }
  7553. }
  7554. databank.close(result);
  7555. databank.close(stmt);
  7556. return temp;
  7557. }
  7558. function databank.getTableFields(table) {
  7559. fields = list.new();
  7560. stmt = databank.prepare(concat("SHOW FIELDS FROM ", table));
  7561. result = databank.execute(stmt);
  7562. while(databank.next(result)) {
  7563. list.add(fields, databank.getString(result, 1));
  7564. }
  7565. databank.close(result);
  7566. databank.close(stmt);
  7567. return fields;
  7568. }
  7569. function databank.getTableDatatypes(table) {
  7570. stmt = databank.prepare(concat("SHOW CREATE TABLE ", table));
  7571. result = databank.execute(stmt);
  7572. if(databank.next(result)) {
  7573. temp = databank.getString(result, 2);
  7574. }
  7575. databank.close(result);
  7576. databank.close(stmt);
  7577. return temp;
  7578. }
  7579. //--------------------------------------------------
  7580. //Tipp-Utils
  7581. //--------------------------------------------------
  7582. function tipp.register(tipp_key, tipp_value) {
  7583. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  7584. databank.setString(stmt, 1, tipp_key);
  7585. databank.setString(stmt, 2, tipp_value);
  7586. databank.setString(stmt, 3, tipp_value);
  7587. databank.workerExecute(stmt);
  7588. }
  7589. function tipp.get(tipp_key) {
  7590. tipp_value = null;
  7591. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  7592. databank.setString(stmt, 1, tipp_key);
  7593. result = databank.execute(stmt);
  7594. while(databank.next(result)) {
  7595. tipp_value = databank.getString(result, 1);
  7596. }
  7597. databank.close(result);
  7598. databank.close(stmt);
  7599. return tipp_value;
  7600. }
  7601. //--------------------------------------------------
  7602. //Warp-Utils
  7603. //--------------------------------------------------
  7604. function warp.create(warp_group, warp_name, location) {
  7605. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7606. config.set(config, "world", world.getName(loc.getWorld(location)));
  7607. config.set(config, "x", loc.getX(location));
  7608. config.set(config, "y", loc.getY(location));
  7609. config.set(config, "z", loc.getZ(location));
  7610. config.set(config, "yaw", loc.getYaw(location));
  7611. config.set(config, "pitch", loc.getPitch(location));
  7612. config.saveAsync(config);
  7613. }
  7614. function warp.exists(warp_group, warp_name) {
  7615. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7616. return config.exists(config);
  7617. }
  7618. function warp.getGroups() {
  7619. file = file.new("scripts/configs/warps");
  7620. file_list = file.getList(file);
  7621. groups_list = list.new();
  7622. iter = list.iterator(file_list);
  7623. while(hasNext(iter)) {
  7624. warp = file.getName(next(iter));
  7625. list.add(groups_list, warp);
  7626. }
  7627. return groups_list;
  7628. }
  7629. function warp.get(warp_group, warp_name) {
  7630. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7631. if(config.exists(config)) {
  7632. config.load(config);
  7633. }
  7634. world_name = text.convert(config.getString(config, "world", "null"));
  7635. if(world_name == null) {
  7636. return null;
  7637. }
  7638. world = world.get(world_name);
  7639. x = config.getDouble(config, "x", 0);
  7640. y = config.getDouble(config, "y", 100);
  7641. z = config.getDouble(config, "z", 0);
  7642. yaw = config.getDouble(config, "yaw", 0);
  7643. pitch = config.getDouble(config, "pitch", 0);
  7644. location = loc.new(world, x, y, z, yaw, pitch);
  7645. return location;
  7646. }
  7647. function warp.delete(warp_group, warp_name) {
  7648. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7649. if(!config.exists(config)) {
  7650. return false;
  7651. }
  7652. config.delete(config);
  7653. return true;
  7654. }
  7655. function warp.getList(warp_group) {
  7656. file = file.new(concat("scripts/configs/warps/", warp_group));
  7657. warps_list = list.new();
  7658. if(file.exists(file)) {
  7659. file_list = file.getList(file);
  7660. iter = list.iterator(file_list);
  7661. while(hasNext(iter)) {
  7662. warp = file.getName(next(iter));
  7663. warp = text.replace(warp, ".snuvic", "");
  7664. list.add(warps_list, warp);
  7665. }
  7666. }
  7667. return warps_list;
  7668. }
  7669. //--------------------------------------------------
  7670. //Home-Utils
  7671. //--------------------------------------------------
  7672. function home.set(player_id, home_name, location) {
  7673. stmt = databank.prepare("INSERT INTO homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  7674. databank.setInt(stmt, 1, player_id);
  7675. databank.setString(stmt, 2, home_name);
  7676. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  7677. databank.setInt(stmt, 4, loc.getX(location));
  7678. databank.setInt(stmt, 5, loc.getY(location));
  7679. databank.setInt(stmt, 6, loc.getZ(location));
  7680. databank.setInt(stmt, 7, loc.getYaw(location));
  7681. databank.setInt(stmt, 8, loc.getPitch(location));
  7682. databank.workerExecute(stmt);
  7683. }
  7684. function home.delete(player_id, home_name) {
  7685. stmt = databank.prepare("DELETE FROM homes WHERE player_id = ? AND name = ?;");
  7686. databank.setInt(stmt, 1, player_id);
  7687. databank.setString(stmt, 2, home_name);
  7688. databank.workerExecute(stmt);
  7689. }
  7690. function home.getLocation(player_id, home_name) {
  7691. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM homes WHERE player_id = ? AND name = ?;");
  7692. databank.setInt(stmt, 1, player_id);
  7693. databank.setString(stmt, 2, home_name);
  7694. result = databank.execute(stmt);
  7695. if(databank.next(result)) {
  7696. world = world.get(databank.getString(result, 1));
  7697. if(world == null) {
  7698. return null;
  7699. }
  7700. x = databank.getDouble(result, 2);
  7701. y = databank.getDouble(result, 3);
  7702. z = databank.getDouble(result, 4);
  7703. yaw = databank.getDouble(result, 5);
  7704. pitch = databank.getDouble(result, 6);
  7705. location = loc.new(world, x, y, z, yaw, pitch);
  7706. }
  7707. databank.close(result);
  7708. databank.close(stmt);
  7709. return location;
  7710. }
  7711. function home.exists(player_id, home_name) {
  7712. stmt = databank.prepare("SELECT player_id FROM homes WHERE player_id = ? AND name = ?;");
  7713. databank.setInt(stmt, 1, player_id);
  7714. databank.setString(stmt, 2, home_name);
  7715. result = databank.execute(stmt);
  7716. if(databank.next(result)) {
  7717. temp = true;
  7718. } else {
  7719. temp = false;
  7720. }
  7721. databank.close(result);
  7722. databank.close(stmt);
  7723. return temp;
  7724. }
  7725. function home.getList(player_id) {
  7726. homes_list = list.new();
  7727. stmt = databank.prepare("SELECT name FROM homes WHERE player_id = ?;");
  7728. databank.setInt(stmt, 1, player_id);
  7729. result = databank.execute(stmt);
  7730. while(databank.next(result)) {
  7731. list.add(homes_list, databank.getString(result, 1));
  7732. }
  7733. databank.close(result);
  7734. databank.close(stmt);
  7735. return homes_list;
  7736. }
  7737. function hasTpaRequest(player_uuid, aim_uuid) {
  7738. for(i = 0; i < list.getSize($tpa_request); i++) {
  7739. array = list.getIndex($tpa_request, i);
  7740. if(array[0] == player_uuid && array[1] == aim_uuid) {
  7741. list.removeIndex($tpa_request, i);
  7742. return true;
  7743. }
  7744. }
  7745. return false;
  7746. }
  7747. function addTpaRequest(player_uuid, aim_uuid) {
  7748. array = array.new(2);
  7749. array[0] = player_uuid;
  7750. array[1] = aim_uuid;
  7751. list.add($tpa_request, array);
  7752. }
  7753. function setCommandHelps() {
  7754. command.clearHelp();
  7755. command.clearIgnored();
  7756. command.addIgnored("teleport");
  7757. command.addIgnored("time");
  7758. command.addIgnored("help");
  7759. command.addIgnored("ban");
  7760. command.addIgnored("kick");
  7761. command.addIgnored("kill");
  7762. command.addIgnored("gamemode");
  7763. commandhelp.add("silentjoin");
  7764. commandhelp.add("nowb");
  7765. commandhelp.add("coords");
  7766. commandhelp.add("ping");
  7767. commandhelp.add("rank");
  7768. commandhelp.add("back");
  7769. commandhelp.add("boost");
  7770. commandhelp.add("bug");
  7771. commandhelp.add("report");
  7772. commandhelp.add("skills");
  7773. commandhelp.add("startgame");
  7774. commandhelp.add("top");
  7775. commandhelp.add("ride");
  7776. commandhelp.add("repair");
  7777. commandhelp.add("lag");
  7778. commandhelp.add("live");
  7779. commandhelp.add("hack");
  7780. //commandhelp.add("vote");
  7781. commandhelp.addChildPlayer("mute");
  7782. commandhelp.addChildPlayer("unmute");
  7783. commandhelp.addChildPlayer("tpa");
  7784. commandhelp.addChildPlayer("tpaccept");
  7785. commandhelp.addChildPlayer("tpahere");
  7786. commandhelp.addChildPlayer("tpaccepthere");
  7787. commandhelp.addChildPlayer("head");
  7788. commandhelp.addChildPlayer("seen");
  7789. commandhelp.addChildPlayer("heal");
  7790. commandhelp.addChildPlayer("feed");
  7791. help = commandhelp.add("lightning");
  7792. commandhelp.addAlias(help, "thor", "lightning");
  7793. help = commandhelp.add("color");
  7794. commandhelp.addAlias(help, "colour", "color");
  7795. help = commandhelp.add("iteminfo");
  7796. commandhelp.addAlias(help, "itemdb", "iteminfo");
  7797. help = commandhelp.add("head");
  7798. commandhelp.addAlias(help, "skull", "head");
  7799. help = commandhelp.add("memory");
  7800. commandhelp.addAlias(help, "ram", "memory");
  7801. help = commandhelp.add("afk");
  7802. commandhelp.addAlias(help, "afklo", "afk");
  7803. help = commandhelp.add("leave");
  7804. commandhelp.addAlias(help, "l", "leave");
  7805. commandhelp.addAlias(help, "hub", "leave");
  7806. help = commandhelp.add("giveup");
  7807. commandhelp.addAlias(help, "fuckit", "giveup");
  7808. help = command.newHelp("vanish", "vanish");
  7809. //vanish [on] [player]
  7810. helpArg0 = command.newHelpLiteral("on");
  7811. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7812. command.addHelpChild(help, helpArg0);
  7813. //vanish [off] [player]
  7814. helpArg0 = command.newHelpLiteral("off");
  7815. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7816. command.addHelpChild(help, helpArg0);
  7817. command.addHelp(help);
  7818. commandhelp.addAlias(help, "v", "vanish");
  7819. help = command.newHelp("start", "start");
  7820. command.addHelpChild(help, command.newHelpLiteral("ai"));
  7821. command.addHelpChild(help, command.newHelpLiteral("chat"));
  7822. command.addHelpChild(help, command.newHelpLiteral("commands"));
  7823. command.addHelpChild(help, command.newHelpLiteral("creative"));
  7824. command.addHelpChild(help, command.newHelpLiteral("damage"));
  7825. command.addHelpChild(help, command.newHelpLiteral("doors"));
  7826. command.addHelpChild(help, command.newHelpLiteral("harvest"));
  7827. command.addHelpChild(help, command.newHelpLiteral("hawkeye"));
  7828. command.addHelpChild(help, command.newHelpLiteral("herobrine"));
  7829. command.addHelpChild(help, command.newHelpLiteral("loom"));
  7830. command.addHelpChild(help, command.newHelpLiteral("games"));
  7831. command.addHelpChild(help, command.newHelpLiteral("mails"));
  7832. command.addHelpChild(help, command.newHelpLiteral("perms"));
  7833. command.addHelpChild(help, command.newHelpLiteral("pumpkin"));
  7834. command.addHelpChild(help, command.newHelpLiteral("scheduler"));
  7835. command.addHelpChild(help, command.newHelpLiteral("shop"));
  7836. command.addHelpChild(help, command.newHelpLiteral("sitting"));
  7837. command.addHelpChild(help, command.newHelpLiteral("stats"));
  7838. command.addHelpChild(help, command.newHelpLiteral("story"));
  7839. command.addHelpChild(help, command.newHelpLiteral("survival"));
  7840. command.addHelpChild(help, command.newHelpLiteral("ticket"));
  7841. command.addHelpChild(help, command.newHelpLiteral("timber"));
  7842. command.addHelpChild(help, command.newHelpLiteral("voxel"));
  7843. command.addHelp(help);
  7844. help = command.newHelp("gamemode", "gamemode");
  7845. helpArg0 = command.newHelpLiteral("adventure");
  7846. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7847. command.addHelpChild(help, helpArg0);
  7848. helpArg0 = command.newHelpLiteral("creative");
  7849. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7850. command.addHelpChild(help, helpArg0);
  7851. helpArg0 = command.newHelpLiteral("spectator");
  7852. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7853. command.addHelpChild(help, helpArg0);
  7854. helpArg0 = command.newHelpLiteral("survival");
  7855. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7856. command.addHelpChild(help, helpArg0);
  7857. helpArg0 = command.newHelpInt("0-3", 0, 3);
  7858. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7859. command.addHelpChild(help, helpArg0);
  7860. command.addHelp(help);
  7861. commandhelp.addAlias(help, "gm", "gamemode");
  7862. help = command.newHelp("databank", "databank");
  7863. //databank showtables
  7864. command.addHelpChild(help, command.newHelpLiteral("showtables"));
  7865. //databank showfields <table>
  7866. helpArg0 = command.newHelpLiteral("showfields");
  7867. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  7868. command.addHelpChild(help, helpArg0);
  7869. //databank showdataypes <table>
  7870. helpArg0 = command.newHelpLiteral("showdataypes");
  7871. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  7872. command.addHelpChild(help, helpArg0);
  7873. command.addHelp(help);
  7874. help = command.newHelp("copyisland", "copyisland");
  7875. //copyisland copy/paste
  7876. command.addHelpChild(help, command.newHelpLiteral("copy"));
  7877. command.addHelpChild(help, command.newHelpLiteral("paste"));
  7878. //copyisland pos1/pos2
  7879. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  7880. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  7881. command.addHelp(help);
  7882. help = command.newHelp("fly", "fly");
  7883. helpArg0 = command.newHelpSpecial("Player", "player", "fly.other");
  7884. command.addHelpChild(helpArg0, command.newHelpLiteral("on"));
  7885. command.addHelpChild(helpArg0, command.newHelpLiteral("off"));
  7886. command.addHelpChild(help, helpArg0);
  7887. command.addHelp(help);
  7888. help = command.newHelp("allsounds", "allsounds");
  7889. command.addHelpChild(help, command.newHelpLiteral("start"));
  7890. command.addHelpChild(help, command.newHelpLiteral("stop"));
  7891. command.addHelp(help);
  7892. help = command.newHelp("spawn", "spawn");
  7893. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7894. command.addHelp(help);
  7895. help = command.newHelp("games", "games");
  7896. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7897. command.addHelp(help);
  7898. help = command.newHelp("story", "story");
  7899. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7900. command.addHelp(help);
  7901. help = command.newHelp("ass", "ass");
  7902. //ass set <name>
  7903. helpArg0 = command.newHelpLiteral("set");
  7904. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7905. command.addHelpChild(help, helpArg0);
  7906. //ass rename <name>
  7907. helpArg0 = command.newHelpLiteral("rename");
  7908. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7909. command.addHelpChild(help, helpArg0);
  7910. //ass remove <radius>
  7911. helpArg0 = command.newHelpLiteral("remove");
  7912. command.addHelpChild(helpArg0, command.newHelpInt("radius", 0, 30));
  7913. command.addHelpChild(help, helpArg0);
  7914. command.addHelp(help);
  7915. help = command.newHelp("tppos", "tppos");
  7916. helpArg0 = command.newHelpInt("x", -16000, 16000);
  7917. helpArg1 = command.newHelpInt("y", 0, 1000);
  7918. helpArg2 = command.newHelpInt("z", -16000, 16000);
  7919. helpArg3 = command.newHelpString("world", false);
  7920. helpArg4 = command.newHelpSpecial("Player", "player");
  7921. command.addHelpChild(helpArg3, helpArg4);
  7922. command.addHelpChild(helpArg2, helpArg3);
  7923. command.addHelpChild(helpArg1, helpArg2);
  7924. command.addHelpChild(helpArg0, helpArg1);
  7925. command.addHelpChild(help, helpArg0);
  7926. command.addHelp(help);
  7927. help = command.newHelp("stats", "stats");
  7928. addStatsGameHelp(help, "BedWars");
  7929. addStatsGameHelp(help, "RageMode");
  7930. addStatsGameHelp(help, "Jump'n'Run");
  7931. addStatsGameHelp(help, "Rebuild");
  7932. addStatsGameHelp(help, "FastBridge");
  7933. addStatsGameHelp(help, "SnowGame");
  7934. addStatsGameHelp(help, "TJR");
  7935. addStatsGameHelp(help, "IJR");
  7936. addStatsGameHelp(help, "Letters");
  7937. addStatsGameHelp(help, "Sammelfieber");
  7938. addStatsGameHelp(help, "Buttons");
  7939. addStatsGameHelp(help, "HideAndSeek");
  7940. addStatsGameHelp(help, "Inverting");
  7941. addStatsGameHelp(help, "Spleef");
  7942. addStatsGameHelp(help, "Knockfight");
  7943. addStatsGameHelp(help, "Leapfrog");
  7944. addStatsGameHelp(help, "Parcour");
  7945. addStatsGameHelp(help, "Halma");
  7946. addStatsGameHelp(help, "ShoppingChaos");
  7947. addStatsGameHelp(help, "MengerRun");
  7948. command.addHelp(help);
  7949. help = command.newHelp("setspawn", "setspawn");
  7950. command.addHelpChild(help, command.newHelpLiteral("server"));
  7951. command.addHelpChild(help, command.newHelpLiteral("games"));
  7952. command.addHelpChild(help, command.newHelpLiteral("creative"));
  7953. command.addHelpChild(help, command.newHelpLiteral("story"));
  7954. command.addHelp(help);
  7955. help = command.newHelp("datatools", "datatools");
  7956. //datatools hide <name>
  7957. helpArg0 = command.newHelpLiteral("hide");
  7958. command.addHelpChild(helpArg0, command.newHelpLiteral("enchantments"));
  7959. command.addHelpChild(helpArg0, command.newHelpLiteral("attributes"));
  7960. command.addHelpChild(helpArg0, command.newHelpLiteral("unbreakable"));
  7961. command.addHelpChild(helpArg0, command.newHelpLiteral("destroys"));
  7962. command.addHelpChild(helpArg0, command.newHelpLiteral("placed_on"));
  7963. command.addHelpChild(helpArg0, command.newHelpLiteral("potion_effects"));
  7964. command.addHelpChild(help, helpArg0);
  7965. //datatools attribute <attribute> <slot> <double> <op>
  7966. helpArg0 = command.newHelpLiteral("attribute");
  7967. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR"));
  7968. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR_TOUGHNESS"));
  7969. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_DAMAGE"));
  7970. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("KNOCKBACK_RESISTANCE"));
  7971. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MAX_HEALTH"));
  7972. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MOVEMENT_SPEED"));
  7973. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_SPEED"));
  7974. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("LUCK"));
  7975. command.addHelpChild(help, helpArg0);
  7976. //datatools hide-entity
  7977. command.addHelpChild(help, command.newHelpLiteral("hide-entity"));
  7978. //datatools show-entity
  7979. command.addHelpChild(help, command.newHelpLiteral("show-entity"));
  7980. //datatools name-entity <name>
  7981. helpArg0 = command.newHelpLiteral("name-entity");
  7982. helpArg1 = command.newHelpString("name", true);
  7983. command.addHelpChild(helpArg0, helpArg1);
  7984. command.addHelpChild(help, helpArg0);
  7985. //datatools name-visibility <name>
  7986. helpArg0 = command.newHelpLiteral("name-visibility");
  7987. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  7988. command.addHelpChild(help, helpArg0);
  7989. //datatools name-item <name>
  7990. helpArg0 = command.newHelpLiteral("name-item");
  7991. helpArg1 = command.newHelpString("name", true);
  7992. command.addHelpChild(helpArg0, helpArg1);
  7993. command.addHelpChild(help, helpArg0);
  7994. //datatools lore-item <line> <lore>
  7995. helpArg0 = command.newHelpLiteral("lore-item");
  7996. helpArg1 = command.newHelpInt("line", 0, 1000);
  7997. helpArg2 = command.newHelpString("lore", true);
  7998. command.addHelpChild(helpArg1, helpArg2);
  7999. command.addHelpChild(helpArg0, helpArg1);
  8000. command.addHelpChild(help, helpArg0);
  8001. command.addHelp(help);
  8002. commandhelp.addAlias(help, "dt", "datatools");
  8003. help = command.newHelp("hawkeye", "hawkeye");
  8004. //hawkeye search <parameters>
  8005. helpArg0 = command.newHelpLiteral("search");
  8006. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8007. command.addHelpChild(help, helpArg0);
  8008. //hawkeye undo
  8009. command.addHelpChild(help, command.newHelpLiteral("undo"));
  8010. //hawkeye rollback
  8011. command.addHelpChild(help, command.newHelpLiteral("rollback"));
  8012. //hawkeye tool
  8013. command.addHelpChild(help, command.newHelpLiteral("tool"));
  8014. commandhelp.addAlias(help, "ha", "hawkeye");
  8015. command.addHelp(help);
  8016. help = command.newHelp("voxel", "voxel");
  8017. command.addHelpChild(help, command.newHelpInt("radius", 1, 5));
  8018. command.addHelpChild(help, command.newHelpLiteral("block"));
  8019. command.addHelp(help);
  8020. help = command.newHelp("help", "help");
  8021. command.addHelpChild(help, command.newHelpInt("page", 1, 100));
  8022. command.addHelp(help);
  8023. commandhelp.addAlias(help, "mimimi", "help");
  8024. help = command.newHelp("suicide", "suicide");
  8025. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "kill.other"));
  8026. command.addHelp(help);
  8027. help = command.newHelp("tempfly", "tempfly");
  8028. helpArg0 = command.newHelpSpecial("Player", "player");
  8029. command.addHelpChild(helpArg0, command.newHelpInt("seconds", 1, 10000));
  8030. command.addHelpChild(help, helpArg0);
  8031. command.addHelp(help);
  8032. help = command.newHelp("tempban", "tempban");
  8033. helpArg0 = command.newHelpSpecial("Player", "player");
  8034. helpArg1 = command.newHelpInt("days", 1, 100);
  8035. helpArg2 = command.newHelpInt("hours", 1, 100);
  8036. helpArg3 = command.newHelpInt("minutes", 1, 100);
  8037. command.addHelpChild(helpArg3, command.newHelpString("reason", true));
  8038. command.addHelpChild(helpArg2, helpArg3);
  8039. command.addHelpChild(helpArg1, helpArg2);
  8040. command.addHelpChild(helpArg0, helpArg1);
  8041. command.addHelpChild(help, helpArg0);
  8042. command.addHelp(help);
  8043. help = command.newHelp("ban", "ban");
  8044. helpArg0 = command.newHelpSpecial("Player", "player");
  8045. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8046. command.addHelpChild(help, helpArg0);
  8047. command.addHelp(help);
  8048. help = command.newHelp("silentban", "silentban");
  8049. helpArg0 = command.newHelpSpecial("Player", "player");
  8050. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8051. command.addHelpChild(help, helpArg0);
  8052. command.addHelp(help);
  8053. help = command.newHelp("kick", "kick");
  8054. helpArg0 = command.newHelpSpecial("Player", "player");
  8055. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8056. command.addHelpChild(help, helpArg0);
  8057. command.addHelp(help);
  8058. help = command.newHelp("silentkick", "silentkick");
  8059. helpArg0 = command.newHelpSpecial("Player", "player");
  8060. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8061. command.addHelpChild(help, helpArg0);
  8062. command.addHelp(help);
  8063. help = command.newHelp("time", "time");
  8064. //time set <time>
  8065. helpArg0 = command.newHelpLiteral("set");
  8066. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  8067. command.addHelpChild(help, helpArg0);
  8068. //time add <time>
  8069. helpArg0 = command.newHelpLiteral("add");
  8070. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  8071. command.addHelpChild(help, helpArg0);
  8072. //time day / noon / night / midnight
  8073. command.addHelpChild(help, command.newHelpLiteral("day"));
  8074. command.addHelpChild(help, command.newHelpLiteral("noon"));
  8075. command.addHelpChild(help, command.newHelpLiteral("night"));
  8076. command.addHelpChild(help, command.newHelpLiteral("midnight"));
  8077. command.addHelp(help);
  8078. help = command.newHelp("enderchest", "enderchest");
  8079. //enderchest [player] <from-player>
  8080. helpArg0 = command.newHelpSpecial("Player", "player");
  8081. command.addHelpChild(helpArg0, command.newHelpString("from-player", false));
  8082. command.addHelpChild(help, helpArg0);
  8083. //enderchest [player] <from-player>
  8084. command.addHelpChild(help, command.newHelpString("from-player", false));
  8085. command.addHelp(help);
  8086. help = command.newHelp("nickname", "nickname");
  8087. command.addHelpChild(help, command.newHelpString("name", true));
  8088. command.addHelpChild(help, command.newHelpLiteral("remove"));
  8089. command.addHelp(help);
  8090. help = command.newHelp("perm", "perm");
  8091. //perm give <player> <perm>
  8092. helpArg0 = command.newHelpLiteral("give", "perm.give");
  8093. helpArg1 = command.newHelpSpecial("Player", "player");
  8094. command.addHelpChild(helpArg1, command.newHelpLiteral("admin", "isAdmin"));
  8095. command.addHelpChild(helpArg1, command.newHelpLiteral("mod", "isAdmin"));
  8096. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  8097. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  8098. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  8099. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  8100. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  8101. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  8102. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  8103. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  8104. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  8105. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass", "isAdmin"));
  8106. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  8107. command.addHelpChild(helpArg0, helpArg1);
  8108. command.addHelpChild(help, helpArg0);
  8109. //perm remove <player> <perm>
  8110. helpArg0 = command.newHelpLiteral("remove", "perm.remove");
  8111. helpArg1 = command.newHelpSpecial("Player", "player");
  8112. command.addHelpChild(helpArg1, command.newHelpLiteral("admin", "isAdmin"));
  8113. command.addHelpChild(helpArg1, command.newHelpLiteral("mod", "isAdmin"));
  8114. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  8115. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  8116. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  8117. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  8118. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  8119. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  8120. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  8121. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  8122. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  8123. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass", "isAdmin"));
  8124. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  8125. command.addHelpChild(helpArg0, helpArg1);
  8126. command.addHelpChild(help, helpArg0);
  8127. //perm removeall <player>
  8128. helpArg0 = command.newHelpLiteral("removeall", "perm.removeall");
  8129. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8130. command.addHelpChild(help, helpArg0);
  8131. //perm list <player>
  8132. helpArg0 = command.newHelpLiteral("list", "perm.list");
  8133. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8134. command.addHelpChild(help, helpArg0);
  8135. //perm toggle
  8136. command.addHelpChild(help, command.newHelpLiteral("toggle", "perm.toggle"));
  8137. command.addHelp(help);
  8138. help = command.newHelp("script", "script");
  8139. //script start <scripts>
  8140. helpArg0 = command.newHelpLiteral("start");
  8141. command.addHelpChild(helpArg0, command.newHelpString("scrips...", true));
  8142. command.addHelpChild(help, helpArg0);
  8143. //script see
  8144. command.addHelpChild(help, command.newHelpLiteral("see"));
  8145. //script term
  8146. helpArg0 = command.newHelpLiteral("term");
  8147. command.addHelpChild(helpArg0, command.newHelpLiteral("all"));
  8148. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 1000000));
  8149. command.addHelpChild(help, helpArg0);
  8150. command.addHelp(help);
  8151. commandhelp.addAlias(help, "s", "script");
  8152. help = command.newHelp("home", "home");
  8153. //home set
  8154. helpArg0 = command.newHelpLiteral("set");
  8155. command.addHelpChild(helpArg0, command.newHelpString("home", false));
  8156. command.addHelpChild(help, helpArg0);
  8157. //home delete
  8158. helpArg0 = command.newHelpLiteral("delete");
  8159. command.addHelpChild(helpArg0, command.newHelpString("home", false));
  8160. command.addHelpChild(help, helpArg0);
  8161. //home list
  8162. helpArg0 = command.newHelpLiteral("list");
  8163. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  8164. command.addHelpChild(help, helpArg0);
  8165. //home <name>
  8166. helpArg0 = command.newHelpString("home", false);
  8167. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  8168. command.addHelpChild(help, helpArg0);
  8169. command.addHelp(help);
  8170. help = command.newHelp("plot", "plot");
  8171. //plot info
  8172. command.addHelpChild(help, command.newHelpLiteral("info"));
  8173. command.addHelpChild(help, command.newHelpLiteral("i"));
  8174. //plot pos1/pos2
  8175. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  8176. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  8177. //plot create/create3D
  8178. command.addHelpChild(help, command.newHelpLiteral("create"));
  8179. command.addHelpChild(help, command.newHelpLiteral("create3D"));
  8180. //plot remove
  8181. helpArg0 = command.newHelpLiteral("remove");
  8182. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 10000));
  8183. command.addHelpChild(help, helpArg0);
  8184. //plot name <name>
  8185. helpArg0 = command.newHelpLiteral("name");
  8186. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8187. helpArg1 = command.newHelpInt("id", 0, 10000);
  8188. command.addHelpChild(helpArg1, command.newHelpString("name", true));
  8189. command.addHelpChild(helpArg0, helpArg1);
  8190. command.addHelpChild(help, helpArg0);
  8191. //plot share <name>
  8192. helpArg0 = command.newHelpLiteral("share");
  8193. helpArg1 = command.newHelpSpecial("Player", "player");
  8194. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8195. command.addHelpChild(helpArg0, helpArg1);
  8196. command.addHelpChild(help, helpArg0);
  8197. //plot kick <name>
  8198. helpArg0 = command.newHelpLiteral("kick");
  8199. helpArg1 = command.newHelpSpecial("Player", "player");
  8200. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8201. command.addHelpChild(helpArg0, helpArg1);
  8202. command.addHelpChild(help, helpArg0);
  8203. //plot raise
  8204. command.addHelpChild(help, command.newHelpLiteral("raise"));
  8205. //plot leader <name>
  8206. helpArg0 = command.newHelpLiteral("leader");
  8207. helpArg1 = command.newHelpSpecial("Player", "player");
  8208. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8209. command.addHelpChild(helpArg0, helpArg1);
  8210. command.addHelpChild(help, helpArg0);
  8211. //plot mod <name>
  8212. helpArg0 = command.newHelpLiteral("mod");
  8213. helpArg1 = command.newHelpSpecial("Player", "player");
  8214. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8215. command.addHelpChild(helpArg0, helpArg1);
  8216. command.addHelpChild(help, helpArg0);
  8217. //plot chest <name>
  8218. helpArg0 = command.newHelpLiteral("chest");
  8219. helpArg1 = command.newHelpSpecial("Player", "player");
  8220. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8221. command.addHelpChild(helpArg0, helpArg1);
  8222. command.addHelpChild(help, helpArg0);
  8223. //plot sell <price>
  8224. helpArg0 = command.newHelpLiteral("sell");
  8225. command.addHelpChild(helpArg0, command.newHelpInt("price", 1, 10000));
  8226. command.addHelpChild(help, helpArg0);
  8227. //plot moreinfo
  8228. command.addHelpChild(help, command.newHelpLiteral("moreinfo", "plot.moreinfo"));
  8229. //plot listall
  8230. command.addHelpChild(help, command.newHelpLiteral("listall"));
  8231. //plot flags <int> <boolean>
  8232. helpArg0 = command.newHelpLiteral("flags");
  8233. helpArg1 = command.newHelpInt("int", 1, 1000);
  8234. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  8235. command.addHelpChild(helpArg0, helpArg1);
  8236. command.addHelpChild(help, helpArg0);
  8237. //plot expand <anzahl>
  8238. helpArg0 = command.newHelpLiteral("expand");
  8239. helpArg1 = command.newHelpInt("anzahl", 1, 1000);
  8240. command.addHelpChild(helpArg1, command.newHelpInt("id", 1, 10000));
  8241. command.addHelpChild(helpArg0, helpArg1);
  8242. command.addHelpChild(help, helpArg0);
  8243. command.addHelp(help);
  8244. commandhelp.addAlias(help, "p", "plot");
  8245. help = command.newHelp("warp", "warp");
  8246. //warp set [group] <name>
  8247. helpArg0 = command.newHelpLiteral("set", "warp.create");
  8248. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  8249. helpArg1 = command.newHelpString("group", false, "warp.create");
  8250. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  8251. command.addHelpChild(helpArg0, helpArg1);
  8252. command.addHelpChild(help, helpArg0);
  8253. //warp delete [group] <name>
  8254. helpArg0 = command.newHelpLiteral("delete", "warp.create");
  8255. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  8256. helpArg1 = command.newHelpString("group", false, "warp.create");
  8257. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  8258. command.addHelpChild(helpArg0, helpArg1);
  8259. command.addHelpChild(help, helpArg0);
  8260. //warp groups
  8261. command.addHelpChild(help, command.newHelpLiteral("groups", "warp.create"));
  8262. //warp list [group]
  8263. helpArg0 = command.newHelpLiteral("list");
  8264. command.addHelpChild(helpArg0, command.newHelpString("group", false, "warp.create"));
  8265. command.addHelpChild(help, helpArg0);
  8266. //warp [group] <name>
  8267. helpArg0 = command.newHelpString("name", false);
  8268. command.addHelpChild(help, helpArg0);
  8269. helpArg0 = command.newHelpString("group", false, "warp.create");
  8270. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8271. command.addHelpChild(help, helpArg0);
  8272. command.addHelp(help);
  8273. help = command.newHelp("teleport", "teleport");
  8274. helpArg0 = command.newHelpSpecial("Player", "player");
  8275. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "to-player", "teleport.other"));
  8276. command.addHelpChild(help, helpArg0);
  8277. command.addHelp(help);
  8278. commandhelp.addAlias(help, "tp", "teleport");
  8279. help = command.newHelp("lastseen", "lastseen");
  8280. command.addHelpChild(help, command.newHelpInt("amount", 1, 100));
  8281. command.addHelp(help);
  8282. help = command.newHelp("human", "human");
  8283. //human spawn
  8284. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  8285. //human set <name>
  8286. helpArg0 = command.newHelpLiteral("set");
  8287. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8288. command.addHelpChild(help, helpArg0);
  8289. //human setuuid <uuid>
  8290. helpArg0 = command.newHelpLiteral("setuuid");
  8291. command.addHelpChild(helpArg0, command.newHelpString("uuid", false));
  8292. command.addHelpChild(help, helpArg0);
  8293. //human name
  8294. helpArg0 = command.newHelpLiteral("name");
  8295. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8296. command.addHelpChild(help, helpArg0);
  8297. //human kill
  8298. command.addHelpChild(help, command.newHelpLiteral("kill"));
  8299. //human size <scale>
  8300. helpArg0 = command.newHelpLiteral("size");
  8301. command.addHelpChild(helpArg0, command.newHelpInt("scale", 0, 100));
  8302. command.addHelpChild(help, helpArg0);
  8303. //human steve
  8304. command.addHelpChild(help, command.newHelpLiteral("steve"));
  8305. //human alex
  8306. command.addHelpChild(help, command.newHelpLiteral("alex"));
  8307. //human statue
  8308. helpArg0 = command.newHelpLiteral("statue");
  8309. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  8310. command.addHelpChild(help, helpArg0);
  8311. command.addHelp(help);
  8312. help = command.newHelp("mail", "mail");
  8313. //mail <player> <message>
  8314. helpArg0 = command.newHelpSpecial("Player", "player");
  8315. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8316. command.addHelpChild(help, helpArg0);
  8317. //mail new
  8318. command.addHelpChild(help, command.newHelpLiteral("new"));
  8319. //mail inbox
  8320. command.addHelpChild(help, command.newHelpLiteral("inbox"));
  8321. //mail outbox
  8322. command.addHelpChild(help, command.newHelpLiteral("outbox"));
  8323. //mail reset
  8324. command.addHelpChild(help, command.newHelpLiteral("reset", "mail.reset"));
  8325. command.addHelp(help);
  8326. help = command.newHelp("playtime", "playtime");
  8327. //playtime [player]
  8328. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8329. //playtime all
  8330. command.addHelpChild(help, command.newHelpLiteral("all"));
  8331. //playtime month [1-12] [year]
  8332. helpArg0 = command.newHelpLiteral("month");
  8333. helpArg1 = command.newHelpInt("int", 1, 12);
  8334. command.addHelpChild(helpArg1, command.newHelpInt("year", 2019, 2024));
  8335. command.addHelpChild(helpArg0, helpArg1);
  8336. command.addHelpChild(help, helpArg0);
  8337. //playtime year [year]
  8338. helpArg0 = command.newHelpLiteral("year");
  8339. command.addHelpChild(helpArg0, command.newHelpInt("year", 2019, 2024));
  8340. command.addHelpChild(help, helpArg0);
  8341. command.addHelp(help);
  8342. help = command.newHelp("user", "user");
  8343. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  8344. command.addHelp(help);
  8345. help = command.newHelp("cli", "cli");
  8346. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8347. command.addHelp(help);
  8348. help = command.newHelp("plant", "plant");
  8349. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8350. command.addHelp(help);
  8351. help = command.newHelp("grow", "grow");
  8352. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8353. command.addHelp(help);
  8354. help = command.newHelp("plough", "plough");
  8355. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8356. command.addHelp(help);
  8357. help = command.newHelp("news", "news");
  8358. command.addHelpChild(help, command.newHelpString("text", true));
  8359. command.addHelp(help);
  8360. help = command.newHelp("inv", "inv");
  8361. //inv ignore
  8362. command.addHelpChild(help, command.newHelpLiteral("ignore"));
  8363. //inv see <player>
  8364. helpArg0 = command.newHelpLiteral("see");
  8365. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8366. command.addHelpChild(help, helpArg0);
  8367. //inv reload <player>
  8368. helpArg0 = command.newHelpLiteral("reload");
  8369. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8370. command.addHelpChild(help, helpArg0);
  8371. //inv loadFrom <player> <world>
  8372. helpArg0 = command.newHelpLiteral("loadFrom");
  8373. helpArg1 = command.newHelpSpecial("Player", "player");
  8374. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  8375. command.addHelpChild(helpArg0, helpArg1);
  8376. command.addHelpChild(help, helpArg0);
  8377. //inv saveFor <player> <world>
  8378. helpArg0 = command.newHelpLiteral("saveFor");
  8379. helpArg1 = command.newHelpSpecial("Player", "player");
  8380. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  8381. command.addHelpChild(helpArg0, helpArg1);
  8382. command.addHelpChild(help, helpArg0);
  8383. command.addHelp(help);
  8384. help = command.newHelp("warn", "warn");
  8385. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8386. command.addHelp(help);
  8387. help = command.newHelp("jail", "jail");
  8388. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8389. command.addHelp(help);
  8390. help = command.newHelp("unjail", "unjail");
  8391. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8392. command.addHelp(help);
  8393. help = command.newHelp("friend", "friend");
  8394. //friend add <player>
  8395. helpArg0 = command.newHelpLiteral("add");
  8396. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8397. command.addHelpChild(help, helpArg0);
  8398. //friend remove <player>
  8399. helpArg0 = command.newHelpLiteral("remove");
  8400. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8401. command.addHelpChild(help, helpArg0);
  8402. //friend list
  8403. command.addHelpChild(help, command.newHelpLiteral("list"));
  8404. command.addHelp(help);
  8405. commandhelp.addAlias(help, "f", "friend");
  8406. help = command.newHelp("sign", "sign");
  8407. helpArg0 = command.newHelpInt("1-4", 1, 4);
  8408. command.addHelpChild(helpArg0, command.newHelpString("text", true));
  8409. command.addHelpChild(help, helpArg0);
  8410. command.addHelp(help);
  8411. help = command.newHelp("speed", "speed");
  8412. helpArg0 = command.newHelpInt("int", 1, 10);
  8413. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "speed.other"));
  8414. command.addHelpChild(help, helpArg0);
  8415. command.addHelp(help);
  8416. help = command.newHelp("errordebug", "errordebug");
  8417. command.addHelpChild(help, command.newHelpLiteral("list"));
  8418. command.addHelpChild(help, command.newHelpLiteral("clear"));
  8419. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  8420. command.addHelp(help);
  8421. help = command.newHelp("error", "error");
  8422. command.addHelpChild(help, command.newHelpLiteral("list"));
  8423. command.addHelpChild(help, command.newHelpLiteral("clear"));
  8424. command.addHelp(help);
  8425. help = command.newHelp("world", "world");
  8426. //world info <world>
  8427. helpArg0 = command.newHelpLiteral("info");
  8428. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8429. command.addHelpChild(help, helpArg0);
  8430. //world tp <world> [player]
  8431. helpArg0 = command.newHelpLiteral("tp");
  8432. helpArg1 = command.newHelpString("world", false);
  8433. command.addHelpChild(helpArg1, command.newHelpSpecial("Player", "player"));
  8434. command.addHelpChild(helpArg0, helpArg1);
  8435. command.addHelpChild(help, helpArg0);
  8436. //world list
  8437. command.addHelpChild(help, command.newHelpLiteral("list"));
  8438. //world load <world>
  8439. helpArg0 = command.newHelpLiteral("load");
  8440. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8441. command.addHelpChild(help, helpArg0);
  8442. //world unload <world>
  8443. helpArg0 = command.newHelpLiteral("unload");
  8444. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8445. command.addHelpChild(help, helpArg0);
  8446. //world diffi <world> <diffi>
  8447. helpArg0 = command.newHelpLiteral("diffi");
  8448. helpArg1 = command.newHelpString("world", false);
  8449. command.addHelpChild(helpArg1, command.newHelpLiteral("PEACEFUL"));
  8450. command.addHelpChild(helpArg1, command.newHelpLiteral("EASY"));
  8451. command.addHelpChild(helpArg1, command.newHelpLiteral("NORMAL"));
  8452. command.addHelpChild(helpArg1, command.newHelpLiteral("HARD"));
  8453. command.addHelpChild(helpArg0, helpArg1);
  8454. command.addHelpChild(help, helpArg0);
  8455. //world setspawn
  8456. helpArg0 = command.newHelpLiteral("setspawn");
  8457. command.addHelpChild(help, helpArg0);
  8458. command.addHelp(help);
  8459. help = command.newHelp("quest", "quest");
  8460. //quest term <player>
  8461. helpArg0 = command.newHelpLiteral("term");
  8462. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8463. command.addHelpChild(help, helpArg0);
  8464. command.addHelp(help);
  8465. help = command.newHelp("pvp", "pvp");
  8466. helpArg0 = command.newHelpLiteral("on");
  8467. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  8468. command.addHelpChild(help, helpArg0);
  8469. helpArg0 = command.newHelpLiteral("off");
  8470. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  8471. command.addHelpChild(help, helpArg0);
  8472. command.addHelp(help);
  8473. help = command.newHelp("game", "game");
  8474. command.addHelpChild(help, command.newHelpLiteral("open"));
  8475. command.addHelpChild(help, command.newHelpLiteral("close"));
  8476. command.addHelp(help);
  8477. help = command.newHelp("party", "party");
  8478. //party invite <player>
  8479. helpArg0 = command.newHelpLiteral("invite");
  8480. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8481. command.addHelpChild(help, helpArg0);
  8482. //party accept <player>
  8483. helpArg0 = command.newHelpLiteral("accept");
  8484. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8485. command.addHelpChild(help, helpArg0);
  8486. //party deny <player>
  8487. helpArg0 = command.newHelpLiteral("deny");
  8488. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8489. command.addHelpChild(help, helpArg0);
  8490. //party kick <player>
  8491. helpArg0 = command.newHelpLiteral("kick");
  8492. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8493. command.addHelpChild(help, helpArg0);
  8494. //party leave
  8495. command.addHelpChild(help, command.newHelpLiteral("leave"));
  8496. //party promote <player>
  8497. helpArg0 = command.newHelpLiteral("promote");
  8498. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8499. command.addHelpChild(help, helpArg0);
  8500. //party demote <player>
  8501. helpArg0 = command.newHelpLiteral("demote");
  8502. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8503. command.addHelpChild(help, helpArg0);
  8504. //party disband
  8505. command.addHelpChild(help, command.newHelpLiteral("disband"));
  8506. //party list
  8507. command.addHelpChild(help, command.newHelpLiteral("list"));
  8508. command.addHelp(help);
  8509. help = command.newHelp("var", "var");
  8510. helpArg0 = command.newHelpInt("id", 0, 1000000);
  8511. command.addHelpChild(helpArg0, command.newHelpString("varname", false));
  8512. command.addHelpChild(help, helpArg0);
  8513. command.addHelp(help);
  8514. help = command.newHelp("setservermessage", "setservermessage");
  8515. command.addHelpChild(help, command.newHelpString("message", true));
  8516. command.addHelp(help);
  8517. help = command.newHelp("clan", "clan");
  8518. //clan invite <name>
  8519. helpArg0 = command.newHelpLiteral("invite");
  8520. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8521. command.addHelpChild(help, helpArg0);
  8522. //clan accept <id/name/tag>
  8523. helpArg0 = command.newHelpLiteral("invite");
  8524. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  8525. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8526. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  8527. command.addHelpChild(help, helpArg0);
  8528. //clan info [id/name/tag]
  8529. helpArg0 = command.newHelpLiteral("info");
  8530. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  8531. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8532. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  8533. command.addHelpChild(help, helpArg0);
  8534. //clan create <name> <tag>
  8535. helpArg0 = command.newHelpLiteral("create");
  8536. helpArg1 = command.newHelpString("name", false);
  8537. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  8538. command.addHelpChild(helpArg0, helpArg1);
  8539. command.addHelpChild(help, helpArg0);
  8540. //clan kick <name>
  8541. helpArg0 = command.newHelpLiteral("kick");
  8542. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8543. command.addHelpChild(help, helpArg0);
  8544. //clan leader <name>
  8545. helpArg0 = command.newHelpLiteral("leader");
  8546. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8547. command.addHelpChild(help, helpArg0);
  8548. //clan mod <name>
  8549. helpArg0 = command.newHelpLiteral("mod");
  8550. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8551. command.addHelpChild(help, helpArg0);
  8552. //clan degrade <name>
  8553. helpArg0 = command.newHelpLiteral("degrade");
  8554. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8555. command.addHelpChild(help, helpArg0);
  8556. //clan leave
  8557. command.addHelpChild(help, command.newHelpLiteral("leave"));
  8558. //clan rename <name> <tag>
  8559. helpArg0 = command.newHelpLiteral("rename");
  8560. helpArg1 = command.newHelpString("name", false);
  8561. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  8562. command.addHelpChild(helpArg0, helpArg1);
  8563. command.addHelpChild(help, helpArg0);
  8564. //clan disband
  8565. command.addHelpChild(help, command.newHelpLiteral("disband"));
  8566. //clan msg <message>
  8567. helpArg0 = command.newHelpLiteral("msg");
  8568. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8569. command.addHelpChild(help, helpArg0);
  8570. //clan mail <message>
  8571. helpArg0 = command.newHelpLiteral("mail");
  8572. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8573. command.addHelpChild(help, helpArg0);
  8574. //clan shout <message>
  8575. helpArg0 = command.newHelpLiteral("shout");
  8576. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8577. command.addHelpChild(help, helpArg0);
  8578. //clan deposit <money>
  8579. helpArg0 = command.newHelpLiteral("deposit");
  8580. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  8581. command.addHelpChild(help, helpArg0);
  8582. //clan withdraw <money>
  8583. helpArg0 = command.newHelpLiteral("withdraw");
  8584. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  8585. command.addHelpChild(help, helpArg0);
  8586. //clan party
  8587. command.addHelpChild(help, command.newHelpLiteral("party"));
  8588. //clan setspawn
  8589. command.addHelpChild(help, command.newHelpLiteral("setspawn"));
  8590. //clan spawn
  8591. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  8592. //clan list
  8593. command.addHelpChild(help, command.newHelpLiteral("list"));
  8594. command.addHelp(help);
  8595. help = command.newHelp("shop", "shop");
  8596. //shop create
  8597. command.addHelpChild(help, command.newHelpLiteral("create"));
  8598. //shop admin
  8599. command.addHelpChild(help, command.newHelpLiteral("admin"));
  8600. //shop remove
  8601. helpArg0 = command.newHelpLiteral("remove");
  8602. command.addHelpChild(helpArg0, command.newHelpLiteral("buy"));
  8603. command.addHelpChild(helpArg0, command.newHelpLiteral("sell"));
  8604. command.addHelpChild(help, helpArg0);
  8605. //shop buy <amount> <price>
  8606. helpArg0 = command.newHelpLiteral("buy");
  8607. helpArg1 = command.newHelpInt("amount", 0, 1000);
  8608. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  8609. command.addHelpChild(helpArg0, helpArg1);
  8610. command.addHelpChild(help, helpArg0);
  8611. //shop sell <amount> <price>
  8612. helpArg0 = command.newHelpLiteral("sell");
  8613. helpArg1 = command.newHelpInt("amount", 0, 1000);
  8614. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  8615. command.addHelpChild(helpArg0, helpArg1);
  8616. command.addHelpChild(help, helpArg0);
  8617. command.addHelp(help);
  8618. help = command.newHelp("setmessage", "setmessage");
  8619. //setmessage info
  8620. command.addHelpChild(help, command.newHelpLiteral("info"));
  8621. //setmessage join <message>
  8622. helpArg0 = command.newHelpLiteral("join");
  8623. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8624. command.addHelpChild(help, helpArg0);
  8625. //setmessage leave <message>
  8626. helpArg0 = command.newHelpLiteral("leave");
  8627. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8628. command.addHelpChild(help, helpArg0);
  8629. //setmessage delete <player>
  8630. helpArg0 = command.newHelpLiteral("delete");
  8631. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "setmessage.delete"));
  8632. command.addHelpChild(help, helpArg0);
  8633. command.addHelp(help);
  8634. help = command.newHelp("tip", "tip");
  8635. //tipp list
  8636. helpArg0 = command.newHelpLiteral("list");
  8637. command.addHelpChild(help, helpArg0);
  8638. //tipp add <tipp> <text>
  8639. helpArg0 = command.newHelpLiteral("add");
  8640. helpArg1 = command.newHelpString("tip", false);
  8641. command.addHelpChild(helpArg1, command.newHelpString("text", true));
  8642. command.addHelpChild(helpArg0, helpArg1);
  8643. command.addHelpChild(help, helpArg0);
  8644. //tipp remove <tipp>
  8645. helpArg0 = command.newHelpLiteral("remove");
  8646. command.addHelpChild(helpArg0, command.newHelpString("tip", false));
  8647. command.addHelpChild(help, helpArg0);
  8648. //tipp <tipp> [player]
  8649. helpArg0 = command.newHelpString("tip", false);
  8650. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8651. command.addHelpChild(help, helpArg0);
  8652. command.addHelp(help);
  8653. help = command.newHelp("ticket", "ticket");
  8654. //ticket new <message>
  8655. helpArg0 = command.newHelpLiteral("new");
  8656. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8657. command.addHelpChild(help, helpArg0);
  8658. //ticket stop <ticket-id>
  8659. helpArg0 = command.newHelpLiteral("stop");
  8660. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000));
  8661. command.addHelpChild(help, helpArg0);
  8662. //ticket list
  8663. command.addHelpChild(help, command.newHelpLiteral("list", "isSupporter"));
  8664. //ticket get [ticket-id]
  8665. helpArg0 = command.newHelpLiteral("get");
  8666. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8667. command.addHelpChild(help, helpArg0);
  8668. //ticket finish <ticket-id>
  8669. helpArg0 = command.newHelpLiteral("finish");
  8670. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8671. command.addHelpChild(help, helpArg0);
  8672. //ticket release <ticket-id>
  8673. helpArg0 = command.newHelpLiteral("release");
  8674. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8675. command.addHelpChild(help, helpArg0);
  8676. //ticket report <ticket-id>
  8677. helpArg0 = command.newHelpLiteral("report");
  8678. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8679. command.addHelpChild(help, helpArg0);
  8680. command.addHelp(help);
  8681. help = command.newHelp("yeet", "yeet");
  8682. command.addHelpChild(help, command.newHelpInt("strength", 1, 10000000000000));
  8683. command.addHelp(help);
  8684. command.sendHelp();
  8685. }
  8686. function commandhelp.add(command) {
  8687. help = command.newHelp(command, command);
  8688. command.addHelp(help);
  8689. return help;
  8690. }
  8691. function commandhelp.addChildString(command, arg0, bool) {
  8692. help = command.newHelp(command, command);
  8693. command.addHelpChild(help, command.newHelpString(arg0, bool));
  8694. command.addHelp(help);
  8695. }
  8696. function commandhelp.addChildPlayer(command) {
  8697. help = command.newHelp(command, command);
  8698. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8699. command.addHelp(help);
  8700. }
  8701. function commandhelp.addChildBool(command, arg0) {
  8702. help = command.newHelp(command, command);
  8703. command.addHelpChild(help, command.newHelpBool(arg0));
  8704. command.addHelp(help);
  8705. }
  8706. function commandhelp.addAlias(help, alias, command) {
  8707. helpAlias = command.newHelp(alias, command);
  8708. command.addHelpAlias(helpAlias, help);
  8709. command.addHelp(helpAlias);
  8710. }
  8711. function addStatsGameHelp(help, game) {
  8712. helpArg0 = command.newHelpLiteral(game);
  8713. command.addHelpChild(helpArg0, command.newHelpLiteral("top"));
  8714. command.addHelpChild(helpArg0, command.newHelpInt("rank", 1, 1000));
  8715. helpArg1 = command.newHelpSpecial("Player", "player");
  8716. command.addHelpChild(helpArg1, command.newHelpLiteral("remove", "stats.remove"));
  8717. command.addHelpChild(helpArg0, helpArg1);
  8718. command.addHelpChild(help, helpArg0);
  8719. }
  8720. function addDtAttributeAttributHelp(attribut) {
  8721. helpArg1 = command.newHelpLiteral(attribut);
  8722. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("mainhand"));
  8723. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("offhand"));
  8724. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("head"));
  8725. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("chest"));
  8726. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("legs"));
  8727. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("feet"));
  8728. return helpArg1;
  8729. }
  8730. function addDtAttributeSlotHelp(slot) {
  8731. helpArg2 = command.newHelpLiteral(slot);
  8732. helpArg3 = command.newHelpInt("double", 0, 1000);
  8733. command.addHelpChild(helpArg3, command.newHelpLiteral("ADDITION"));
  8734. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_BASE"));
  8735. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_TOTAL"));
  8736. command.addHelpChild(helpArg2, helpArg3);
  8737. return helpArg2;
  8738. }
  8739. function showJail(player_name) {
  8740. if(isOnline(player_name)) {
  8741. inv.open($jailmenu, read.player(player_name), "§8Gefängnis");
  8742. }
  8743. }
  8744. function isJailed(player_uuid) {
  8745. return(list.contains($jailed_list, player_uuid));
  8746. }
  8747. function command.register(command, description) {
  8748. command.add(command);
  8749. list.add($command_list, command);
  8750. map.add($command_map, command, description);
  8751. }
  8752. function command.registerAlias(alias, command) {
  8753. command.add(alias);
  8754. map.add($alias_map, alias, command);
  8755. }
  8756. //--------------------------------------------------
  8757. //Time-Utils
  8758. //--------------------------------------------------
  8759. //Spielzeit aller Online-Spieler
  8760. function playtime.getTotalOnlineMinutes() {
  8761. minutes = 0;
  8762. iter = list.iterator(players.toList());
  8763. while(hasNext(iter)) {
  8764. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  8765. }
  8766. return minutes;
  8767. }
  8768. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  8769. function playtime.getInterval(from, to) {
  8770. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  8771. databank.setLong(stmt, 1, from);
  8772. databank.setLong(stmt, 2, to);
  8773. result = databank.execute(stmt);
  8774. if(databank.next(result)) {
  8775. minutes = databank.getLong(result, 1) / 1000 / 60;
  8776. } else {
  8777. minutes = 0;
  8778. }
  8779. databank.close(result);
  8780. databank.close(stmt);
  8781. return minutes;
  8782. }
  8783. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  8784. function playtime.getTotal() {
  8785. minutes = playtime.getTotalOnlineMinutes();
  8786. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  8787. result = databank.execute(stmt);
  8788. if(databank.next(result)) {
  8789. minutes += databank.getLong(result, 1) / 1000 / 60;
  8790. }
  8791. databank.close(result);
  8792. databank.close(stmt);
  8793. return minutes;
  8794. }
  8795. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  8796. function playtime.getPlayerInterval(player_id, from, to) {
  8797. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  8798. databank.setInt(stmt, 1, player_id);
  8799. databank.setLong(stmt, 2, from);
  8800. databank.setLong(stmt, 3, to);
  8801. result = databank.execute(stmt);
  8802. if(databank.next(result)) {
  8803. minutes = databank.getLong(result, 1) / 1000 / 60;
  8804. } else {
  8805. minutes = 0;
  8806. }
  8807. databank.close(result);
  8808. databank.close(stmt);
  8809. return minutes;
  8810. }
  8811. function playtime.getPlayersPerInterval(from, to) {
  8812. set = set.new();
  8813. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  8814. databank.setLong(stmt, 1, from);
  8815. databank.setLong(stmt, 2, to);
  8816. result = databank.execute(stmt);
  8817. while(databank.next(result)) {
  8818. set.add(set, databank.getInt(result, 1));
  8819. }
  8820. databank.close(result);
  8821. databank.close(stmt);
  8822. return set.getSize(set);
  8823. }
  8824. function time.getYearDays(year) {
  8825. days = 365;
  8826. if(year % 4 == 0) {
  8827. days++;
  8828. }
  8829. return days;
  8830. }
  8831. function time.getMonthDays(month, year) {
  8832. days = month.getDays(month);
  8833. //Schaltjahre
  8834. if(month == 2 && year % 4 == 0) {
  8835. days++;
  8836. }
  8837. return days;
  8838. }
  8839. function time.getDaysBetween(day1, month1, year1, day2, month2, year2) {
  8840. d_days = 0;
  8841. m_days = 0;
  8842. y_days = 0;
  8843. y = 0;
  8844. m = 0;
  8845. d = 0;
  8846. //Volle Jahre
  8847. for(year = year1 + 1; year < year2; year++) {
  8848. y_days += time.getYearDays(year);
  8849. y++;
  8850. }
  8851. if(year1 == year2) {
  8852. //Volle Monate
  8853. for(month = month1 + 1; month < month2; month++) {
  8854. m_days += time.getMonthDays(month, year1);
  8855. }
  8856. //Volle Tage
  8857. if(month1 == month2) {
  8858. d_days = day2 - day1;
  8859. } else {
  8860. d_days += month.getDays(month1) - day1;
  8861. d_days += day2;
  8862. }
  8863. } else {
  8864. //Volle Monate
  8865. for(month = month1 + 1; month < 13; month++) {
  8866. m_days += time.getMonthDays(month, year1);
  8867. m++;
  8868. }
  8869. for(month = 1; month < month2; month++) {
  8870. m_days += time.getMonthDays(month, year2);
  8871. m++;
  8872. }
  8873. //Volle Tage
  8874. d_days += month.getDays(month1) - day1;
  8875. d_days += day2;
  8876. }
  8877. return y_days + m_days + d_days;
  8878. }
  8879. function month.add(month_index, shortname, days) {
  8880. $month_array[month_index, 0] = shortname;
  8881. $month_array[month_index, 1] = days;
  8882. }
  8883. function month.getShortName(month) {
  8884. return $month_array[month - 1, 0];
  8885. }
  8886. function month.getDays(month) {
  8887. return $month_array[month - 1, 1];
  8888. }
  8889. //--------------------------------------------------
  8890. //Player-Utils
  8891. //--------------------------------------------------
  8892. function player.hasClanInvitation(player_or_id, clan_id) {
  8893. if(isPlayer(player_or_id)) {
  8894. player_id = player.getId(player_or_id);
  8895. } else {
  8896. player_id = player_or_id;
  8897. }
  8898. iter = list.iterator($clan_invitations);
  8899. while(hasNext(iter)) {
  8900. invitation = next(iter);
  8901. p_id = invitation[0];
  8902. c_id = invitation[1];
  8903. if(player_id == p_id && clan_id == c_id) {
  8904. return true;
  8905. }
  8906. }
  8907. return false;
  8908. }
  8909. function player.addClanInvitation(player_id, clan_id) {
  8910. invitation = array.new(2);
  8911. invitation[0] = player_id;
  8912. invitation[1] = clan_id;
  8913. list.add($clan_invitations, invitation);
  8914. }
  8915. //--------------------------------------------------
  8916. //Party-Utils
  8917. //--------------------------------------------------
  8918. function party.invitePlayer(inviter, invitee) {
  8919. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  8920. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  8921. //Ansonsten neue Party-ID vergeben.
  8922. inviter_uuid = player.getUuid(inviter);
  8923. if(player.isInParty(inviter)) {
  8924. party_id = player.getPartyId(inviter);
  8925. } else {
  8926. party_id = map.get($party_invite_ids, inviter_uuid);
  8927. if(party_id == null) {
  8928. party_id = ++$party_counter;
  8929. }
  8930. }
  8931. if(invitee == null) {
  8932. return "inviteeNotOnline";
  8933. }
  8934. if(inviter == invitee) {
  8935. return "inviterEqualsInvitee";
  8936. }
  8937. if(player.isInParty(inviter)) {
  8938. if(!player.isPartyLeaderOrMod(inviter)) {
  8939. return "inviterNotPermitted";
  8940. }
  8941. }
  8942. if(player.isInParty(invitee)) {
  8943. return "inviteeAlreadyInParty";
  8944. }
  8945. invitee_uuid = player.getUuid(invitee);
  8946. list = map.get($party_invitations, invitee_uuid);
  8947. if(list == null) {
  8948. list = list.new();
  8949. map.add($party_invitations, invitee_uuid, list);
  8950. }
  8951. if(list.contains(list, inviter_uuid)) {
  8952. return "inviteeAlreadyInvited";
  8953. }
  8954. list.add(list, inviter_uuid);
  8955. list.add($deluuid, inviter_uuid);
  8956. list.add($delkeytime, time.getMillis());
  8957. list = map.get($delkeytimes, invitee_uuid);
  8958. if(list == null) {
  8959. list = list.new();
  8960. map.add($delkeytimes, invitee_uuid, list);
  8961. }
  8962. list.add(list, time.getMillis());
  8963. map.add($party_invite_ids, inviter_uuid, party_id);
  8964. inviter_name = player.getName(inviter);
  8965. msg.prefix(invitee, $prefix_party, concat(inviter_name, " invites you to a party."));
  8966. msg(invitee, " §5=> §rAccept ? ", text.click("[§aYes§r] ", concat("/party accept ", inviter_name)), text.click("[§cNo§r]", concat("/party deny ", inviter_name)));
  8967. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  8968. return true;
  8969. }
  8970. function party.kickPlayer(player, reason) {
  8971. party_id = player.getPartyId(player);
  8972. //Nachrichten
  8973. player_name = player.getName(player);
  8974. if(reason == "kick") {
  8975. message = concat("§r", player_name, " has been kicked out of the party.");
  8976. } else {
  8977. message = concat("§r", player_name, " has left the party.");
  8978. }
  8979. party.sendMessage(party_id, message);
  8980. player_uuid = player.getUuid(player_name);
  8981. //aus Partyliste entfernen
  8982. party_list = party.getList(party_id);
  8983. list.remove(party_list, player_uuid);
  8984. //ID und Rang entfernen
  8985. rank = player.getPartyRank(player);
  8986. player.delPartyRank(player);
  8987. player.delPartyId(player);
  8988. //Einladungen löschen
  8989. map.remove($party_invitations, player_uuid);
  8990. map.remove($delkeytimes, player_uuid);
  8991. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  8992. if(list.getSize(party_list) < 2) {
  8993. party.delete(party_id);
  8994. return;
  8995. }
  8996. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  8997. if(rank == "Leader") {
  8998. new_player = player.get(list.getIndex(party_list, 0));
  8999. player.setPartyRank(new_player, "Leader");
  9000. party.sendMessage(party_id, concat("§r", player.getName(new_player), " is now Leader."));
  9001. }
  9002. }
  9003. function party.sendMessage(party_id, message) {
  9004. iter = list.iterator(party.getList(party_id));
  9005. while(hasNext(iter)) {
  9006. msg.prefix(player.get(next(iter)), $prefix_party, message);
  9007. }
  9008. }
  9009. function party.delete(party_id) {
  9010. party.sendMessage(party_id, "Party disbanded.");
  9011. iter = list.iterator(party.getList(party_id));
  9012. while(hasNext(iter)) {
  9013. player = player.get(next(iter));
  9014. player.delPartyRank(player);
  9015. player.delPartyId(player);
  9016. }
  9017. }
  9018. @deletePartyInvitation
  9019. player_uuid = list.getIndex(deluuid, 0);
  9020. invitations = map.get(party_invitations, player_uuid);
  9021. keytimes = map.get(delkeytimes, player_uuid);
  9022. if(invitations != null) {
  9023. if(list.getSize(invitations) != 0) {
  9024. keytime = list.getIndex(delkeytime, 0);
  9025. keytime2 = list.getIndex(keytimes, 0);
  9026. list.remove(delkeytime, keytime);
  9027. if(keytime == keytime2) {
  9028. index = list.getIndexOf(keytimes, keytime2);
  9029. list.remove(keytimes, keytime2);
  9030. list.removeIndex(invitations, index);
  9031. }
  9032. }
  9033. }
  9034. goto("wait");
  9035. //--------------------------------------------------
  9036. //Plot-Utils
  9037. //--------------------------------------------------
  9038. function plot.registerMoveEvents(world) {
  9039. iter = plot.iterator(world);
  9040. while(hasNext(iter)) {
  9041. plot = next(iter);
  9042. if(plot.isCity(plot) || plot.isPlot(plot)) {
  9043. plot.setMoveEvent(plot, world);
  9044. }
  9045. }
  9046. }
  9047. function plot.delMoveEvent(plot) {
  9048. plot_id = plot.getId(plot);
  9049. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  9050. a = list.getIndex($plot_move_ids_list, i);
  9051. if(a[1] == plot_id) {
  9052. event.removeMoveData(a[0]);
  9053. list.removeIndex($plot_move_ids_list, i);
  9054. break;
  9055. }
  9056. }
  9057. }
  9058. function plot.setMoveEvent(plot, world) {
  9059. x1 = plot.getMinX(plot);
  9060. y1 = plot.getMinY(plot);
  9061. z1 = plot.getMinZ(plot);
  9062. x2 = plot.getMaxX(plot);
  9063. y2 = plot.getMaxY(plot);
  9064. z2 = plot.getMaxZ(plot);
  9065. loc1 = loc.new(world, x1, y1, z1);
  9066. loc2 = loc.new(world, x2, y2, z2);
  9067. move_id = event.addMoveData(loc1, loc2, 100, -1);
  9068. plot_id = plot.getId(plot);
  9069. a = array.new(2);
  9070. a[0] = move_id;
  9071. a[1] = plot_id;
  9072. list.add($plot_move_ids_list, a);
  9073. }
  9074. function plot.getPlotIdFromMoveId(move_id) {
  9075. iter = list.iterator($plot_move_ids_list);
  9076. while(hasNext(iter)) {
  9077. a = next(iter);
  9078. if(a[0] == move_id) {
  9079. return a[1];
  9080. }
  9081. }
  9082. return null;
  9083. }
  9084. function plot.getMoveIdFromPlotId(plot_id) {
  9085. iter = list.iterator($plot_move_ids_list);
  9086. while(hasNext(iter)) {
  9087. a = next(iter);
  9088. if(a[1] == plot_id) {
  9089. return a[0];
  9090. }
  9091. }
  9092. return null;
  9093. }
  9094. @checkForPlot
  9095. player_uuid = list.getIndex(check_for_plot_list, 0);
  9096. list.removeIndex(check_for_plot_list, 0);
  9097. player = player.get(player_uuid);
  9098. if(player == null) {
  9099. map.remove(actual_move_id, player_uuid);
  9100. goto("wait");
  9101. }
  9102. player_loc = entity.getLocation(player);
  9103. plot_list = plot.get(player_loc);
  9104. if(list.getSize(plot_list) == 0) {
  9105. map.remove(actual_move_id, player_uuid);
  9106. } else {
  9107. list.add(check_for_plot_list, player_uuid);
  9108. sgoto(100, "checkForPlot");
  9109. }
  9110. goto("wait");
  9111. function tpBottom(player) {
  9112. player_loc = entity.getLocation(player);
  9113. y = loc.getY(player_loc);
  9114. while(block.isAir(player_loc)) {
  9115. loc.setY(player_loc, y);
  9116. y--;
  9117. }
  9118. loc.addY(player_loc, 1);
  9119. entity.teleport(player, player_loc);
  9120. }
  9121. function hawkeye.getStartIndices(string) {
  9122. a = array.new(5);
  9123. a[0] = text.indexOf(string, "e:", 0);
  9124. a[1] = text.indexOf(string, "p:", 0);
  9125. a[2] = text.indexOf(string, "r:", 0);
  9126. a[3] = text.indexOf(string, "t:", 0);
  9127. a[4] = text.length(string);
  9128. a = array.sort(a, true);
  9129. return a;
  9130. }
  9131. function hawkeye.getParStrings(string, indices) {
  9132. index = 0;
  9133. while(indices[index] == -1) {
  9134. index++;
  9135. }
  9136. start_index = indices[index];
  9137. if(start_index != 0) {
  9138. return null;
  9139. }
  9140. l = list.new();
  9141. while(++index < 5) {
  9142. next_index = indices[index];
  9143. if(index == 4) {
  9144. next_index++;
  9145. }
  9146. par_str = text.trim(text.subString(string, start_index, next_index - 1));
  9147. if(text.length(par_str) < 3) {
  9148. return null;
  9149. }
  9150. list.add(l, par_str);
  9151. start_index = next_index;
  9152. }
  9153. return l;
  9154. }
  9155. function hawkeye.processInput(args, player) {
  9156. string = text.concatList(args, " ", 1, list.getSize(args) - 1);
  9157. indices = hawkeye.getStartIndices(string);
  9158. par_strings = hawkeye.getParStrings(string, indices);
  9159. if(par_strings == null) {
  9160. return "False input parameters";
  9161. }
  9162. first_letters = set.new();
  9163. iter = list.iterator(par_strings);
  9164. while(hasNext(iter)) {
  9165. par_str = next(iter);
  9166. first_letter = text.subString(par_str, 0, 1);
  9167. if(set.contains(first_letters, first_letter)) {
  9168. return "Twice input parameters";
  9169. }
  9170. set.add(first_letters, first_letter);
  9171. par_str = text.subString(par_str, 2, text.length(par_str));
  9172. args_par_str = text.split(",", par_str);
  9173. if(first_letter == "e") {
  9174. events = list.new();
  9175. iter_args = list.iterator(args_par_str);
  9176. while(hasNext(iter_args)) {
  9177. list.add(events, next(iter_args));
  9178. }
  9179. }
  9180. elseif(first_letter == "p") {
  9181. players = list.new();
  9182. iter_args = list.iterator(args_par_str);
  9183. while(hasNext(iter_args)) {
  9184. list.add(players, next(iter_args));
  9185. }
  9186. }
  9187. elseif(first_letter == "r") {
  9188. if(list.getSize(args_par_str) > 1) {
  9189. return "False input at r:";
  9190. }
  9191. radius = list.getIndex(args_par_str, 0);
  9192. if(!isDouble(radius)) {
  9193. return "False input at r:";
  9194. }
  9195. }
  9196. elseif(first_letter == "t") {
  9197. if(list.getSize(args_par_str) > 3) {
  9198. return "False input at t:";
  9199. }
  9200. if(text.contains(par_str, "d")) {
  9201. d = true;
  9202. } else {
  9203. d = false;
  9204. }
  9205. time_span = 0;
  9206. iter_args = list.iterator(args_par_str);
  9207. while(hasNext(iter_args)) {
  9208. arg = next(iter_args);
  9209. if(text.contains(arg, "m")) {
  9210. minutes = text.convert(text.replace(arg, "m", ""));
  9211. if(!isDouble(minutes)) {
  9212. return "False input at t:";
  9213. }
  9214. time_span += minutes * 60;
  9215. }
  9216. elseif(text.contains(arg, "h")) {
  9217. hours = text.convert(text.replace(arg, "h", ""));
  9218. if(!isDouble(hours)) {
  9219. return "False input at t:";
  9220. }
  9221. time_span += hours * 60 * 60;
  9222. } else {
  9223. if(d) {
  9224. days = arg;
  9225. if(!isDouble(days)) {
  9226. return "False input at t:";
  9227. }
  9228. time_span += days * 24 * 60 * 60;
  9229. } else {
  9230. return "False input at t:";
  9231. }
  9232. }
  9233. }
  9234. timeTo = time.getMillis();
  9235. timeFrom = timeTo - time_span * 1000;
  9236. }
  9237. }
  9238. a = array.new(6);
  9239. a[0] = timeFrom;
  9240. a[1] = timeTo;
  9241. a[2] = entity.getLocation(player);
  9242. a[3] = radius;
  9243. a[4] = events;
  9244. a[5] = players;
  9245. return a;
  9246. }