commands.txt 324 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413
  1. error_counter = 0;
  2. @on_error
  3. error_counter++;
  4. if(error_counter > 1) {
  5. snuvi.debug("Error Handler activated");
  6. if(event == "custom_command") {
  7. set.add(failed_cmds, command);
  8. goto("wait");
  9. }
  10. snuvi.debug("Restarting script...");
  11. error_counter++;
  12. if(error_counter >= 100) {
  13. snuvi.debug("Script terminated. Endless loop.");
  14. term();
  15. }
  16. }
  17. waitfor(5); //Verhindert Endlos-Schleife durch "/start commands"
  18. setCommandHelps();
  19. command.clear();
  20. //--- Register commands not shown on /help here ---
  21. command.add("hack");
  22. //Games
  23. command.add("nextplayer");
  24. command.add("invstats");
  25. command.add("topinvstats");
  26. command.add("removeinvstats");
  27. command.add("sfstats");
  28. command.add("topsfstats");
  29. command.add("removesfstats");
  30. command.add("questanswer");
  31. command.add("infopoint1");
  32. command.add("infopoint2");
  33. command.add("infopoint3");
  34. command.add("infopoint4");
  35. command.add("infopoint5");
  36. command.add("infopoint6");
  37. command.add("infopoint7");
  38. command.add("infopoint8");
  39. command.add("infopoint9");
  40. command.add("infopoint10");
  41. command.add("infopoint11");
  42. command.add("infopoint12");
  43. //Vanilla überschreiben
  44. command.add("help");
  45. command.add("butcher");
  46. //--- Register commands shown on /help here ---
  47. alias_map = map.new();
  48. command_list = list.new();
  49. command_map = map.new();
  50. command.register("afk", "Toggles afk");
  51. command.register("allsounds", "Plays all sounds");
  52. command.register("answer", "Answers the last private message");
  53. command.register("ass", "Armor Stand Signs");
  54. command.register("back", "Teleports to the last position");
  55. command.register("ban", "Bans a player");
  56. command.register("boost", "Boosts you up to the clouds");
  57. command.register("bug", "Report a bug");
  58. command.register("clan", "Clan-Commands");
  59. command.register("cli", "Clears items in a radius");
  60. command.register("color", "Shows all colors");
  61. command.register("coords", "Shows infos for the targeted block");
  62. command.register("copyisland", "Copyisland-Commands");
  63. command.register("creative", "Teleports to creative-spawn");
  64. command.register("databank", "Databank-Commands");
  65. command.register("datatools", "Datatools-Commands");
  66. command.register("enchant", "Enchants an item in your hand");
  67. command.register("enderchest", "Shows enderchests");
  68. command.register("entities", "Lists all entities in a world");
  69. command.register("error", "Error-Logger");
  70. command.register("errordebug", "Debug-Logger");
  71. command.register("feed", "Fills hunger bar");
  72. command.register("fly", "Toggles fly");
  73. //command.register("friend", "Friend-Commands");
  74. command.register("game", "marvs minigame shit");
  75. command.register("gamemode", "Change gamemode");
  76. command.register("gamerule", "Manage gamerules");
  77. command.register("games", "Teleports to games-spawn");
  78. command.register("giveup", "Giveup a quest");
  79. command.register("grow", "Grow seeds");
  80. command.register("hat", "Be fame with a new hat");
  81. command.register("hawkeye", "Rollback griefings");
  82. command.register("head", "Gives you a player's head");
  83. command.register("heal", "Heals, fills hunger bar and remove effects");
  84. command.register("home", "Manage your homes");
  85. command.register("live", "Toggles Live-Mode");
  86. command.register("lag", "Executes a lag test");
  87. command.register("leave", "Leave a minigame");
  88. command.register("human", "Human-Commands");
  89. command.register("inv", "Inv-Commands");
  90. command.register("iteminfo", "Returns information about an item");
  91. command.register("jail", "Sends a player to jail");
  92. command.register("jumpto", "Jumps to a block in sight");
  93. command.register("kick", "Kicks a player");
  94. command.register("lastseen", "Shows the last players online");
  95. command.register("lightning", "Summons a lightning_bolt");
  96. command.register("list", "List all players online");
  97. command.register("mail", "Mail-Commands");
  98. command.register("mailbox", "Mailbox-Commands");
  99. command.register("memory", "Returns RAM-usage");
  100. command.register("mentos", "Special command for MentorMentos");
  101. command.register("msg", "Send a private message");
  102. command.register("mute", "Mutes a player");
  103. command.register("news", "Send Push-News to all players");
  104. command.register("nickname", "Set a nickname");
  105. command.register("nowb", "Sends no 'is back' message if afk");
  106. command.register("party", "Party-Commands");
  107. command.register("perm", "Manage permissions");
  108. command.register("plant", "Plant seeds");
  109. command.register("playtime", "Shows your playtime");
  110. command.register("plot", "Plot-Commands");
  111. command.register("plough", "Plough dirt around you");
  112. command.register("pvp", "Toggles pvp");
  113. command.register("quest", "Quest-Commands");
  114. command.register("rank", "Shows your available ranks");
  115. command.register("repair", "Repairs your item in mainhand");
  116. command.register("report", "Report whatever you want");
  117. command.register("ride", "Rides an entity");
  118. command.register("say", "[Server] chat message");
  119. command.register("script", "Script-Commands");
  120. command.register("seen", "Returns the last date the player was online");
  121. command.register("senditem", "Sends an itemstack to another player");
  122. command.register("setmessage", "Set your join/leave-message");
  123. command.register("setrank", "");
  124. command.register("setservermessage", "Sets the server-message in the serverlist");
  125. command.register("setspawn", "Changes a spawn");
  126. command.register("shop", "Shop-Commands");
  127. command.register("sign", "Edit a sign");
  128. command.register("silentban", "Silently bans a player");
  129. command.register("silentjoin", "Toggled Silentjoins");
  130. command.register("silentkick", "Silently kicks a player");
  131. command.register("skills", "Shows all skills");
  132. command.register("spawn", "Teleports to spawn");
  133. command.register("speed", "Sets your speed");
  134. command.register("start", "Starts a script");
  135. command.register("startgame", "Reduces start-countdown for a minigame");
  136. command.register("stats", "Statistics-Commands");
  137. command.register("stopadventure", "Stops an adventure");
  138. command.register("story", "Teleports to story-spawn");
  139. command.register("suicide", "Kill yourself");
  140. command.register("teleport", "Teleports a player to a player");
  141. command.register("tempban", "Bans a player temporarly");
  142. command.register("tempfly", "Let a player temporarly fly");
  143. command.register("ticket", "Ticket-Commands");
  144. command.register("time", "Time-Commands");
  145. command.register("tip", "Tip-Commands");
  146. command.register("top", "Teleports to to highest point at the current position");
  147. command.register("tpa", "Sends a teleport request to a player");
  148. command.register("tpahere", "Sends a teleport request to a player");
  149. command.register("tpaccept", "Accepts a teleport request");
  150. command.register("tpaccepthere", "Accepts a teleport request");
  151. command.register("tppos", "Teleports to coordinates");
  152. command.register("unban", "Unbans a player");
  153. command.register("unjail", "Releases a player from jail");
  154. command.register("unmute", "Unmutes a player");
  155. command.register("user", "Returns infos about a user");
  156. command.register("vanish", "Vanishes a player");
  157. command.register("var", "Reads variables from a scripts");
  158. command.register("vote", "Show vote links");
  159. command.register("voteshop", "Show vote rewars");
  160. command.register("voxel", "Set radius for voxel");
  161. command.register("warn", "Warns a player");
  162. command.register("warp", "Warp-Commands");
  163. command.register("weather", "Weather-Commands");
  164. command.register("world", "World-Commands");
  165. command.register("yeet", "Throws you in sight");
  166. command.registerAlias("afklo", "afk");
  167. command.registerAlias("itemdb", "iteminfo");
  168. command.registerAlias("ha", "hawkeye");
  169. command.registerAlias("skull", "head");
  170. command.registerAlias("skick", "silentkick");
  171. command.registerAlias("sban", "silentban");
  172. command.registerAlias("tell", "msg");
  173. command.registerAlias("r", "answer");
  174. command.registerAlias("pardon", "unban");
  175. command.registerAlias("j", "jumpto");
  176. command.registerAlias("mimimi", "help");
  177. command.registerAlias("ci", "copyisland");
  178. command.registerAlias("mem", "memory");
  179. command.registerAlias("tp", "teleport");
  180. command.registerAlias("homes", "home");
  181. command.registerAlias("colour", "color");
  182. command.registerAlias("gm", "gamemode");
  183. command.registerAlias("p", "plot");
  184. command.registerAlias("coord", "coords");
  185. command.registerAlias("dt", "datatools");
  186. //command.registerAlias("f", "friend");
  187. command.registerAlias("l", "leave");
  188. command.registerAlias("v", "vanish");
  189. command.registerAlias("hub", "leave");
  190. command.registerAlias("fuckit", "giveup");
  191. command.registerAlias("ram", "memory");
  192. command.registerAlias("thor", "lightning");
  193. composter_par = particle.get("composter");
  194. wall_signs_tag = block.getTag("minecraft:wall_signs");
  195. beds_tag = block.getTag("minecraft:beds");
  196. chest_tag = block.getTag("forge:chests");
  197. sign_tag = block.getTag("minecraft:signs");
  198. dirt_tag = block.getTag("forge:dirt");
  199. gamesspawn = world.getGamesSpawn();
  200. serverspawn = world.getServerSpawn();
  201. prefix_clan = "§2Clan";
  202. prefix_tips = "§eTips";
  203. prefix_lock = "§eLock";
  204. prefix_hawkeye = "§cHawkeye";
  205. prefix_commands = "§6Commands";
  206. prefix_vote = "§dVote";
  207. prefix_friends = "§5Friends";
  208. prefix_world = "§bWorld";
  209. prefix_jail = "§5Jail";
  210. prefix_quest = "§dQuest";
  211. prefix_perms = "§6Perms";
  212. prefix_datatools = "§6DataTools";
  213. prefix_human = "§6Human";
  214. prefix_plot = "§dPlots";
  215. prefix_party = "§5Party";
  216. prefix_skill = "§2Skill";
  217. party_ids = getScriptVar("party_ids");
  218. if(party_ids == null) {
  219. party_ids = map.new();
  220. setScriptVar("party_ids", map.new()); //Player, partyid
  221. }
  222. party_lists = getScriptVar("party_lists");
  223. if(party_lists == null) {
  224. party_lists = map.new();
  225. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  226. }
  227. party_ranks = getScriptVar("party_ranks");
  228. if(party_ranks == null) {
  229. party_ranks = map.new();
  230. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  231. }
  232. party_counter = getScriptVar("party_counter");
  233. if(party_counter == null) {
  234. party_counter = 0;
  235. setScriptVar("party_counter", party_counter); //Player, partyid
  236. }
  237. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  238. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  239. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  240. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  241. party_invite_ids = map.new(); //Player_uuid, partyid
  242. list = getScriptVar("block_commands_list");
  243. if(list == null) {
  244. list = list.new();
  245. setScriptVar("block_commands_list", list);
  246. }
  247. live_set = getScriptVar("live_set");
  248. if(live_set == null) {
  249. live_set = set.new();
  250. setScriptVar("live_set", live_set);
  251. } else {
  252. //Register all Live-Players again
  253. iter = set.iterator(live_set);
  254. while(hasNext(iter)) {
  255. player = player.get(next(iter));
  256. if(player != null) {
  257. player.setLive(player, true);
  258. }
  259. }
  260. }
  261. afk_loop_active = false;
  262. afk_map = getScriptVar("afk_map");
  263. if(afk_map == null) {
  264. afk_map = map.new();
  265. setScriptVar("afk_map", afk_map);
  266. } else {
  267. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  268. iter = map.iterator(afk_map);
  269. while(hasNext(iter)) {
  270. element = next(iter);
  271. player = player.get(map.getKey(element));
  272. if(player != null) {
  273. player.setAfk(player, true);
  274. afk_loop_active = true;
  275. }
  276. }
  277. }
  278. if(afk_loop_active) {
  279. sgoto(30, "afk_loop");
  280. }
  281. setScriptVar("ha_data_lists", map.new());
  282. setScriptVar("ha_undo_lists", map.new());
  283. money.setBoostFactor(1);
  284. sgoto(100, "coordsloop");
  285. sgoto(1200, "afk_checker_loop");
  286. sgoto(1200, "minute_loop");
  287. lag_list = list.new();
  288. clan_invitations = list.new();
  289. friend_requests = map.new();
  290. lock_chests = map.new();
  291. chatbuffer = map.new();
  292. tpa_request = list.new();
  293. answer_map = map.new();
  294. warninglist = list.new();
  295. plotpos1 = map.new();
  296. plotpos2 = map.new();
  297. invseeids = set.new();
  298. ride_set = set.new();
  299. fields = set.new();
  300. vanish_set = set.new();
  301. failed_cmds = set.new();
  302. skip_night_set = set.new();
  303. afk_checker_map = map.new();
  304. butcher_set = set.new();
  305. set.add(butcher_set, "zombie");
  306. set.add(butcher_set, "zombie_villager");
  307. set.add(butcher_set, "husk");
  308. set.add(butcher_set, "skeleton");
  309. set.add(butcher_set, "creeper");
  310. set.add(butcher_set, "enderman");
  311. set.add(butcher_set, "pillager");
  312. set.add(butcher_set, "spider");
  313. set.add(butcher_set, "phantom");
  314. set.add(butcher_set, "witch");
  315. set.add(butcher_set, "stray");
  316. set.add(butcher_set, "drowned");
  317. set.add(butcher_set, "wither");
  318. set.add(butcher_set, "silverfish");
  319. set.add(butcher_set, "zombified_piglin");
  320. set.add(butcher_set, "cod");
  321. set.add(butcher_set, "guardian");
  322. attribut_set = set.new();
  323. set.add(attribut_set, "generic.armor");
  324. set.add(attribut_set, "generic.armor_toughness");
  325. set.add(attribut_set, "generic.attack_damage");
  326. set.add(attribut_set, "generic.knockback_resistance");
  327. set.add(attribut_set, "generic.max_health");
  328. set.add(attribut_set, "generic.movement_speed");
  329. set.add(attribut_set, "generic.attack_speed");
  330. set.add(attribut_set, "generic.luck");
  331. not_blocked_cmd = set.new();
  332. set.add(not_blocked_cmd, "leave");
  333. set.add(not_blocked_cmd, "ban");
  334. set.add(not_blocked_cmd, "silentban");
  335. set.add(not_blocked_cmd, "kick");
  336. set.add(not_blocked_cmd, "silentkick");
  337. set.add(not_blocked_cmd, "warn");
  338. set.add(not_blocked_cmd, "tempban");
  339. set.add(not_blocked_cmd, "mute");
  340. set.add(not_blocked_cmd, "unmute");
  341. set.add(not_blocked_cmd, "unban");
  342. set.add(not_blocked_cmd, "tip");
  343. set.add(not_blocked_cmd, "var");
  344. set.add(not_blocked_cmd, "quest");
  345. set.add(not_blocked_cmd, "msg");
  346. set.add(not_blocked_cmd, "help");
  347. rank_array = array.new(25, 2);
  348. //Playtime
  349. rank.add(0, "rank.owner", "4Owner");
  350. rank.add(1, "rank.admin", "cAdmin");
  351. rank.add(2, "rank.moderator", "9Moderator");
  352. rank.add(3, "rank.supporter", "bSupporter");
  353. rank.add(4, "rank.dev", "5Developer");
  354. rank.add(5, "rank.builder", "5Builder");
  355. rank.add(6, "rank.vip", "dVIP");
  356. rank.add(7, "rank.influencer", "dInfluencer");
  357. rank.add(8, "rank.sponsor", "dSponsor");
  358. rank.add(9, "rank.legend", "2Legend");
  359. rank.add(10, "rank.pioneer", "2Pioneer");
  360. rank.add(11, "rank.lord", "2Lord");
  361. rank.add(12, "rank.altruist", "2Altruist");
  362. rank.add(13, "rank.major", "2Major");
  363. rank.add(14, "rank.frequenter", "6Frequenter");
  364. rank.add(15, "rank.explorer", "6Explorer");
  365. rank.add(16, "rank.chief", "6Chief");
  366. rank.add(17, "rank.friend", "6Friend");
  367. rank.add(18, "rank.colonizer", "6Colonizer");
  368. rank.add(19, "rank.newcomer", "eNewcomer");
  369. rank.add(20, "rank.adventurer", "eAdventurer");
  370. rank.add(21, "rank.commander", "eCommander");
  371. rank.add(22, "rank.volunteer", "eVolunteer");
  372. rank.add(23, "rank.settler", "eSettler");
  373. rank.add(24, "rank.user", "3User");
  374. setScriptVar("ranks", rank_array);
  375. month_array = array.new(12, 2);
  376. month.add(0, "Jan", 31);
  377. month.add(1, "Feb", 28);
  378. month.add(2, "Mar", 31);
  379. month.add(3, "Apr", 30);
  380. month.add(4, "May", 31);
  381. month.add(5, "Jun", 30);
  382. month.add(6, "Jul", 31);
  383. month.add(7, "Aug", 31);
  384. month.add(8, "Sep", 30);
  385. month.add(9, "Oct", 31);
  386. month.add(10, "Nov", 30);
  387. month.add(11, "Dec", 31);
  388. jailed_list = list.new();
  389. ironbars = read.item("minecraft:iron_bars", 1, "§r");
  390. jailmenu = inv.new("222222222");
  391. inv.setItem(jailmenu, 0, ironbars);
  392. inv.setItem(jailmenu, 1, ironbars);
  393. inv.setItem(jailmenu, 2, ironbars);
  394. inv.setItem(jailmenu, 3, ironbars);
  395. inv.setItem(jailmenu, 4, ironbars);
  396. inv.setItem(jailmenu, 5, ironbars);
  397. inv.setItem(jailmenu, 6, ironbars);
  398. inv.setItem(jailmenu, 7, ironbars);
  399. inv.setItem(jailmenu, 8, ironbars);
  400. skip_night_inv = inv.new("002020200");
  401. inv.setItem(skip_night_inv, 0, read.item("km:check_green", 1, "§fYes"));
  402. inv.setItem(skip_night_inv, 1, read.item("km:gem_stone", 1, "§fI don't care"));
  403. inv.setItem(skip_night_inv, 2, read.item("km:cross_red", 1, "§fNo"));
  404. skip_night_inv_id = inv.getId(skip_night_inv);
  405. vote_inv = inv.new("222222222");
  406. inv.setItem(vote_inv, 0, read.item("km:coin_gold", 1, "§aMoney Booster", "§fCost: §e6 VP", "Doubles incoming money for 10 minutes."));
  407. inv.setItem(vote_inv, 1, read.item("minecraft:jukebox", 1, "§aRick is in the house", "§fCost: §e2 VP", "Rickroles every player on the server."));
  408. updateVoteInv();
  409. vote_inv_id = inv.getId(vote_inv);
  410. ha_tool = read.item("km:guild_block", 1, "§cHawkeye Tool", "Hawkeye Tool");
  411. consoleCommands = set.new();
  412. set.add(consoleCommands, "answer");
  413. set.add(consoleCommands, "ban");
  414. set.add(consoleCommands, "kick");
  415. set.add(consoleCommands, "lastseen");
  416. set.add(consoleCommands, "list");
  417. set.add(consoleCommands, "msg");
  418. set.add(consoleCommands, "say");
  419. set.add(consoleCommands, "silentban");
  420. set.add(consoleCommands, "silentkick");
  421. set.add(consoleCommands, "start");
  422. set.add(consoleCommands, "tempban");
  423. set.add(consoleCommands, "tempfly");
  424. set.add(consoleCommands, "unban");
  425. 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);"));
  426. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS tipps (tipp_key VARCHAR(20) PRIMARY KEY, tipp_value VARCHAR(255), tipp_loop BOOLEAN NOT NULL DEFAULT true);"));
  427. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS plotranks (plot_id INT NOT NULL, player_id INT NOT NULL, rank VARCHAR(10), PRIMARY KEY (plot_id, player_id), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  428. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS homes (player_id INT NOT NULL, name VARCHAR(20) NOT NULL, world_name VARCHAR(20) NOT NULL, x DOUBLE NOT NULL, y DOUBLE NOT NULL, z DOUBLE NOT NULL, yaw DOUBLE NOT NULL, pitch DOUBLE NOT NULL, PRIMARY KEY (player_id, name), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  429. last_skip_night = 0;
  430. skip_night_started = false;
  431. jail_loop_active = false;
  432. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  433. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  434. check_for_plot_list = list.new();
  435. plot.registerMoveEvents(world.get("overworld"));
  436. plot.registerMoveEvents(world.get("the_nether"));
  437. plot.registerMoveEvents(world.get("the_end"));
  438. plot.registerMoveEvents(world.get("creative"));
  439. RickRollSounds = list.new();
  440. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  441. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  442. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  443. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  444. list.add(RickRollSounds, math.pow(2, 3 / 12));//15
  445. list.add(RickRollSounds, math.pow(2, 3 / 12));//15
  446. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  447. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  448. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  449. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  450. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  451. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  452. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  453. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  454. list.add(RickRollSounds, math.pow(2, -2 / 12));//10
  455. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  456. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  457. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  458. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  459. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  460. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  461. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  462. list.add(RickRollSounds, math.pow(2, -2 / 12));//10
  463. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  464. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  465. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  466. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  467. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  468. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  469. //6,8,11,8,15,15,13,6,8,11,8,13,13,11,10,8,6,8,11,8,11,13,10,8,6,6,6,13,11
  470. RickRollSoundDists = list.new();
  471. list.add(RickRollSoundDists, 2);//1
  472. list.add(RickRollSoundDists, 2);//1
  473. list.add(RickRollSoundDists, 2);//1
  474. list.add(RickRollSoundDists, 2);//1
  475. list.add(RickRollSoundDists, 6);//3
  476. list.add(RickRollSoundDists, 6);//3
  477. list.add(RickRollSoundDists, 12);//6
  478. list.add(RickRollSoundDists, 2);//1
  479. list.add(RickRollSoundDists, 2);//1
  480. list.add(RickRollSoundDists, 2);//1
  481. list.add(RickRollSoundDists, 2);//1
  482. list.add(RickRollSoundDists, 6);//3
  483. list.add(RickRollSoundDists, 6);//3
  484. list.add(RickRollSoundDists, 6);//3
  485. list.add(RickRollSoundDists, 2);//1
  486. list.add(RickRollSoundDists, 6);//3
  487. list.add(RickRollSoundDists, 2);//1
  488. list.add(RickRollSoundDists, 2);//1
  489. list.add(RickRollSoundDists, 2);//1
  490. list.add(RickRollSoundDists, 2);//1
  491. list.add(RickRollSoundDists, 8);//4
  492. list.add(RickRollSoundDists, 4);//2
  493. list.add(RickRollSoundDists, 6);//3
  494. list.add(RickRollSoundDists, 2);//1
  495. list.add(RickRollSoundDists, 4);//2
  496. list.add(RickRollSoundDists, 4);//2
  497. list.add(RickRollSoundDists, 6);//3
  498. list.add(RickRollSoundDists, 8);//4
  499. list.add(RickRollSoundDists, 2);//1
  500. //2,2,2,2,2,6,6,12,2,2,2,2,6,6,6,2,6,2,2,2,2,8,4,6,2,4,4,6,8
  501. rick_sounds_amount = list.getSize(RickRollSoundDists);
  502. sound_category_master = sound.getCategory("master");
  503. sound_flute = sound.get("block.note_block.flute");
  504. sound_harp = sound.get("block.note_block.harp");
  505. sound_pling = sound.get("block.note_block.pling");
  506. event_map = map.new(); //für hawkeye
  507. map.add(event_map, 1, "block_break");
  508. map.add(event_map, 2, "block_place");
  509. event.load("entity_click");
  510. event.load("player_move");
  511. event.load("inv_click");
  512. event.load("inv_close");
  513. event.load("function_key");
  514. event.load("missing_perm");
  515. event.load("missing_command");
  516. event.load("custom_command");
  517. event.load("block_click");
  518. event.load("player_logout");
  519. event.load("player_data_tick");
  520. event.load("vote");
  521. msg("dev", "§bCommands §rloaded.");
  522. @wait
  523. wait();
  524. if(event == "custom_command") {
  525. //Permission-Check
  526. command = text.toLowerCase(command);
  527. command = map.getOrDefault(alias_map, command, command);
  528. size = list.getSize(args);
  529. if(player == null) {
  530. sender = "SERVER";
  531. sender_name = "SERVER";
  532. if(set.contains(consoleCommands, command)) {
  533. ignoreGoto(command);
  534. goto("wait");
  535. }
  536. msg("SERVER", "Sorry. Not a console-command yet. Go and tell marvinius.");
  537. goto("wait");
  538. }
  539. if(!perm.has(player, command)) {
  540. perm.no(player, command);
  541. goto("wait");
  542. }
  543. if(set.contains(failed_cmds, command)) {
  544. msg.prefix(player, prefix_commands, "§cCommand temporarly deactivated due to failure.");
  545. goto("wait");
  546. }
  547. sender = player;
  548. sender_name = player.getName(player);
  549. affectedname = player.getName(player);
  550. player_name = player.getName(player);
  551. affectedplayer = player;
  552. if(player.isCommandBlocked(player)) {
  553. if(!set.contains(not_blocked_cmd, command)) {
  554. msg.prefix(player, prefix_commands, "The most important rule in competition: Sabotage!");
  555. goto("wait");
  556. }
  557. }
  558. ignoreGoto(command);
  559. goto("wait");
  560. }
  561. if(event == "vote") {
  562. p_uuid = player.getUuid(name);
  563. if(p_uuid != null) {
  564. p_id = player.getId(p_uuid);
  565. player.addVotePoints(p_id, 1);
  566. msg.prefix("online", prefix_vote, concat("§b", name, "§r hat gerade gevoted!"));
  567. if(from == "minecraft-server.eu") {
  568. msg("online", "[", prefix_vote, "§r] " , text.link("minecraft-server.eu", "https://minecraft-server.eu/vote/index/2227F"));
  569. } else {
  570. msg("online", "[", prefix_vote, "§r] " , text.link("minecraft-server-list.com", "https://minecraft-server-list.com/server/478200/vote/"));
  571. }
  572. now_time = time.getMillis();
  573. last_vote_time = player.getLastVoteTime(p_id);
  574. new_streak = player.getVoteStreak(p_id);
  575. if(last_vote_time == 0) {
  576. new_streak++;
  577. } elseif(isFollowingDay(last_vote_time, now_time)) {
  578. new_streak++;
  579. } elseif(!isSameDay(last_vote_time, now_time)) {
  580. new_streak = 1;
  581. }
  582. if(new_streak == 14) {
  583. new_streak = 0;
  584. msg.survival(prefix_vote, concat(player.getName(p_uuid), " reached a votestreak of 14 and each player online (survival) gets a sapphire."));
  585. sapphire = item.getSapphire();
  586. world.giveItem(world.getOverWorld(), sapphire);
  587. world.giveItem(world.getTheNether(), sapphire);
  588. world.giveItem(world.getTheEnd(), sapphire);
  589. }
  590. player.setVoteStreak(p_id, new_streak);
  591. player.setLastVoteTime(p_id, now_time);
  592. }
  593. goto("wait");
  594. }
  595. if(event == "player_move") {
  596. player_uuid = player.getUuid(player);
  597. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  598. if(last_move_id == id) {
  599. goto("wait");
  600. }
  601. world = loc.getWorld(entity.getLocation(player));
  602. plot_id = plot.getPlotIdFromMoveId(id);
  603. plot = plot.getFromId(plot_id, world);
  604. if(plot == null) {
  605. goto("wait");
  606. }
  607. if(plot.isCity(plot)) {
  608. color_code = "§c";
  609. } else {
  610. color_code = "§e";
  611. }
  612. title.reset(player);
  613. title.setSub(player, concat("You entered ", color_code, plot.getName(plot), "."));
  614. title.send(player, "");
  615. map.add(actual_move_id, player_uuid, id);
  616. list.add(check_for_plot_list, player_uuid);
  617. sgoto(100, "checkForPlot");
  618. goto("wait");
  619. }
  620. if(event == "block_click") {
  621. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  622. if(action == "right" && !world.isSurvName(world_name) && block.hasTag(beds_tag, block)) {
  623. cancel = true;
  624. goto("wait");
  625. }
  626. if(perm.has(player, "plot.bypass")) {
  627. goto("wait");
  628. }
  629. if(block.hasTag(chest_tag, block)) {
  630. sign_loc = loc.mod(block_loc, 0, 1, 0);
  631. if(isAWallSign(sign_loc) && isAdminShop(sign_loc)) {
  632. cancel = true;
  633. goto("wait");
  634. }
  635. if(plot.check(block_loc, player, 16, true)) {
  636. cancel = false;
  637. goto("wait");
  638. }
  639. player_id = player.getId(player);
  640. player_uuid = player.getUuid(player);
  641. list = plot.get(block_loc);
  642. if(list.getSize(list) > 0) {
  643. iter = list.iterator(list);
  644. access = false;
  645. while(hasNext(iter)) {
  646. plot = next(iter);
  647. canOpenChests = plot.canOpenChests(plot, player_id);
  648. if(plot.isSub(plot)) {
  649. if(canOpenChests) {
  650. cancel = false;
  651. goto("wait");
  652. }
  653. cancel = true;
  654. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  655. goto("wait");
  656. }
  657. if(canOpenChests) {
  658. access = true;
  659. cancel = false;
  660. }
  661. }
  662. if(!access) {
  663. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  664. }
  665. }
  666. goto("wait");
  667. }
  668. if(action == "right" && block.hasTag(sign_tag, block)) {
  669. line0 = block.getSign(block_loc, 0);
  670. if(line0 != "§3[§bFree Plot§3]") {
  671. goto("wait");
  672. }
  673. price = text.convert(removeFormat(block.getSign(block_loc, 1)));
  674. if(!isDouble(price) || price < 0) {
  675. msg.prefix(player, prefix_plot, "Positive number expected.");
  676. goto("wait");
  677. }
  678. p_id = text.convert(block.getSign(block_loc, 3));
  679. if(!isDouble(p_id)) {
  680. msg.prefix(player, prefix_plot, "Invalid city owner.");
  681. goto("wait");
  682. }
  683. if(player.getNameFromId(p_id) == null) {
  684. msg.prefix(player, prefix_plot, "Invalid city owner.");
  685. goto("wait");
  686. }
  687. if(!hasEnoughMoney(player, price)) {
  688. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(price), "§r snuvis for this."));
  689. goto("wait");
  690. }
  691. plot_list = plot.get(block_loc);
  692. iter = list.iterator(plot_list);
  693. while(hasNext(iter)) {
  694. plot = next(iter);
  695. if(plot.isFree(plot)) {
  696. break;
  697. }
  698. }
  699. if(!plot.isFree(plot)) {
  700. msg.prefix(player, prefix_plot, "You aren't on a free plot.");
  701. goto("wait");
  702. }
  703. //Plot claimen
  704. subMoney(player, price);
  705. addMoney(p_id, price);
  706. plot.setSub(plot, true);
  707. plot.setLeader(plot, player.getId(player));
  708. player_name = player.getName(player);
  709. plot.addPlayer(plot, player_name);
  710. plot.setName(plot, concat(player_name, "'s plot"));
  711. msg.prefix(player, prefix_plot, concat("Plot claimed. Spent §6", text.number(price), "§r snuvis."));
  712. goto("wait");
  713. }
  714. goto("wait");
  715. }
  716. if(event == "missing_command") {
  717. if(player == null) { //--> Server
  718. player = "SERVER";
  719. if(command_name == null) {
  720. msg.prefix(player, prefix_commands, concat("Missing Command"));
  721. goto("wait");
  722. }
  723. }
  724. msg.prefix(player, prefix_commands, concat("No command ", command_name));
  725. goto("wait");
  726. }
  727. if(event == "player_logout") {
  728. map.remove(afk_checker_map, uuid);
  729. player.setAfk(player, false);
  730. list.remove(jailed_list, player.getUuid(player));
  731. if(player.hasQuest2(player)) {
  732. script_id = quest.getFromPlayer(player);
  733. script = script.getFromId(script_id);
  734. if(script == null) {
  735. snuvi.debug("Player logged out with corrupt quest");
  736. quest.removePlayer(player); //in case of corrupt quest
  737. goto("wait");
  738. }
  739. setScriptVar("player", player);
  740. modTimer.scriptCallEvent("quest_term", script);
  741. quest.term(script, player);
  742. }
  743. if(player.isInParty(player)) {
  744. party.kickPlayer(player, "logout");
  745. }
  746. goto("wait");
  747. }
  748. if(event == "missing_perm") {
  749. if(player == null) { //--> Server
  750. player = "SERVER";
  751. if(command_name == null) {
  752. msg.prefix(player, prefix_commands, concat("Missing Perm"));
  753. goto("wait");
  754. }
  755. }
  756. perm.no(player, command_name);
  757. goto("wait");
  758. }
  759. if(event == "entity_click") {
  760. player_uuid = player.getUuid(player);
  761. if(set.contains(ride_set, player_uuid)) {
  762. set.remove(ride_set, player_uuid);
  763. entity.mount(player, entity);
  764. }
  765. goto("wait");
  766. }
  767. if(event == "inv_click") {
  768. //mailbox
  769. if(text.startsWith(inv_name, "Mailbox", 0)) {
  770. if(player.isOnAdventure(player)) {
  771. msg.prefix(player, prefix_commands, "You can't use the mailbox while on adventure.");
  772. goto("wait");
  773. }
  774. if(click_type == "QUICK_MOVE") {
  775. if(perm.has(player, "mailbox.other")) {
  776. //Clone item
  777. player.safeGiveItem(player, item);
  778. inv.update(player);
  779. goto("wait");
  780. }
  781. }
  782. //Take item
  783. player.safeGiveItem(player, item);
  784. inv.setItem(inv, inv_slot, item.getAir());
  785. inv.update(player);
  786. split_list = text.split(" ", inv_name);
  787. p_name = list.getIndex(split_list, 2);
  788. p_uuid = player.getUuid(p_name);
  789. if(p_uuid == null) {
  790. inv.close(player);
  791. msg.prefix(player, prefix_commands, "Mailbox closed. Unknown player.");
  792. goto("wait");
  793. }
  794. p_id = player.getId(p_uuid);
  795. mailbox.setItem(p_id, inv_slot, item.getAir());
  796. goto("wait");
  797. }
  798. //inv see
  799. if(set.contains(invseeids, inv_id)) {
  800. //On inv_click in an invsee inventory
  801. split_list = text.split(" ", inv_name);
  802. p_name = list.getIndex(split_list, 2);
  803. p = read.player(p_name);
  804. if(p == null) {
  805. inv.close(player);
  806. 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.");
  807. goto("wait");
  808. }
  809. if(click_type == "QUICK_MOVE") {
  810. //Clone item
  811. player.safeGiveItem(player, item);
  812. inv.update(player);
  813. goto("wait");
  814. }
  815. //Transmit item
  816. player.removeItem(p, item);
  817. player.safeGiveItem(player, item);
  818. inv.setItem(inv, inv_slot, read.item("minecraft:air"));
  819. inv.update(player);
  820. goto("wait");
  821. }
  822. if(inv_id == vote_inv_id) {
  823. if(inv_slot == 0) {
  824. if(money.getBoostFactor() > 1) {
  825. msg.prefix(player, prefix_commands, "Boost already active.");
  826. goto("wait");
  827. }
  828. vp = player.getVotePoints(player);
  829. if(vp < 6) {
  830. msg.prefix(player, prefix_commands, "Not enough vote points.");
  831. goto("wait");
  832. }
  833. player.setVotePoints(player, vp - 6);
  834. msg.online(prefix_vote, concat(player.getName(player), " activated §dMoney Booster§r."));
  835. money.setBoostFactor(2);
  836. status.addTimed("online", 56, 12000, "Money Booster");
  837. sgoto(12000, "resetMoneyBoost");
  838. goto("wait");
  839. }
  840. if(inv_slot == 1) {
  841. vp = player.getVotePoints(player);
  842. if(vp < 2) {
  843. msg.prefix(player, prefix_commands, "Not enough vote points.");
  844. goto("wait");
  845. }
  846. msg.online(prefix_vote, concat(player.getName(player), " activated §dRick is in the house§r."));
  847. player.setVotePoints(player, vp - 2);
  848. rickIndex = 0;
  849. goto("RickRole_play");
  850. }
  851. if(inv_slot == 2) {
  852. vp = player.getVotePoints(player);
  853. if(vp < 1) {
  854. msg.prefix(player, prefix_commands, "Not enough vote points.");
  855. goto("wait");
  856. }
  857. player.setVotePoints(player, vp - 1);
  858. increaseHomeBoost();
  859. inv.update(player);
  860. msg.online(prefix_vote, concat(player.getName(player), " spend their votepoints to §dMore Homes§r."));
  861. }
  862. goto("wait");
  863. }
  864. if(inv_id == skip_night_inv_id) {
  865. world = world.getOverWorld();
  866. world_time = world.getTime(world);
  867. while(world_time >= 24000) {
  868. world_time -= 24000;
  869. }
  870. if(world_time <= 12500) {
  871. goto("wait");
  872. }
  873. player_uuid = player.getUuid(player);
  874. if(set.contains(skip_night_set, player_uuid)) {
  875. msg.prefix(player, prefix_commands, "Already voted.");
  876. goto("wait");
  877. }
  878. if(!skip_night_started) {
  879. world.addTimedStatus(world, 49, 300, "Skip night?");
  880. msg.survival("[§6Commands§r] Skip night? Vote within 15 seconds.");
  881. skip_night_counter = 15;
  882. skip_night_yes = 0;
  883. skip_night_no = 0;
  884. skip_night_no_care = 0;
  885. skip_night_started = true;
  886. sgoto(20, "skip_night_loop");
  887. }
  888. if(inv_slot == 0) {
  889. skip_night_yes++;
  890. inv.close(player);
  891. set.add(skip_night_set, player_uuid);
  892. goto("wait");
  893. }
  894. if(inv_slot == 1) {
  895. skip_night_no_care++;
  896. inv.close(player);
  897. set.add(skip_night_set, player_uuid);
  898. goto("wait");
  899. }
  900. if(inv_slot == 2) {
  901. skip_night_no++;
  902. inv.close(player);
  903. set.add(skip_night_set, player_uuid);
  904. goto("wait");
  905. }
  906. goto("wait");
  907. }
  908. if(inv_name == "Skills") {
  909. if(item.getType(item) == "minecraft:air") {
  910. goto("wait");
  911. }
  912. skill_name = removeFormat(item.getName(item));
  913. tech_name = skill.getTechName(skill_name);
  914. //Toggle skills
  915. if(skill.isToggleable(skill_name)) {
  916. if(skill.isActivated(player, tech_name)) {
  917. skill.setActivated(player, tech_name, false);
  918. } else {
  919. skill.setActivated(player, tech_name, true);
  920. }
  921. inv.setItem(inv, inv_slot, skill.getShopItem(player, tech_name));
  922. inv.update(player);
  923. goto("wait");
  924. }
  925. //Activate skill
  926. if(skill.isActive(skill_name)) {
  927. player_loc = entity.getLocation(player);
  928. world_name = world.getName(loc.getWorld(player_loc));
  929. if(!world.isSurvName(world_name)) {
  930. msg.prefix(player, prefix_skill, "You can't use this in this world.");
  931. goto("wait");
  932. }
  933. if(tech_name == "skill.fire_arrow") {
  934. duration = data.getTimer(player, tech_name);
  935. if(duration > 0) {
  936. msg.prefix(player, prefix_skill, "Skill already active.");
  937. goto("wait");
  938. }
  939. amount = skill.getAmount(player, tech_name);
  940. if(amount > 0) {
  941. status.addTimed(player, 54, 1200, skill_name);
  942. data.setTimer(player, tech_name, 1200);
  943. new_amount = amount - 1;
  944. skill.setAmount(player, tech_name, new_amount);
  945. msg.prefix(player, prefix_skill, concat("Used ", skill_name, ". New amount: ", text.number(new_amount)));
  946. }
  947. goto("wait");
  948. }
  949. if(tech_name == "skill.timber") {
  950. duration = data.getTimer(player, "timber");
  951. if(duration > 0) {
  952. msg.prefix(player, prefix_skill, "Skill already active.");
  953. goto("wait");
  954. }
  955. amount = skill.getAmount(player, "skill.timber");
  956. if(amount > 0) {
  957. status.addTimed(player, 53, 1200, "Timber");
  958. data.setTimer(player, "timber", 1200);
  959. new_amount = amount - 1;
  960. skill.setAmount(player, "skill.timber", new_amount);
  961. msg.prefix(player, prefix_skill, concat("Used Timber. New amount: ", text.number(new_amount)));
  962. }
  963. goto("wait");
  964. }
  965. if(tech_name == "skill.fly10min") {
  966. duration = data.getTimer(player, "fly");
  967. if(duration > 0) {
  968. msg.prefix(player, prefix_skill, "Skill already active.");
  969. goto("wait");
  970. }
  971. amount = skill.getAmount(player, "skill.fly10min");
  972. if(amount > 0) {
  973. status.addTimed(player, 50, 12000, "Fly");
  974. data.setTimer(player, "fly", 12000);
  975. player.setFly(player, true);
  976. new_amount = amount - 1;
  977. skill.setAmount(player, "skill.fly10min", new_amount);
  978. msg.prefix(player, prefix_skill, concat("Used Fly 10min. New amount: ", text.number(new_amount)));
  979. }
  980. goto("wait");
  981. }
  982. if(tech_name == "skill.grow") {
  983. amount = skill.getAmount(player, "skill.grow");
  984. if(amount > 0) {
  985. grow(player_loc, 5);
  986. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  987. new_amount = amount - 1;
  988. skill.setAmount(player, "skill.grow", new_amount);
  989. msg.prefix(player, prefix_skill, concat("Used Grow. New amount: ", text.number(new_amount)));
  990. }
  991. goto("wait");
  992. }
  993. if(tech_name == "skill.haste") {
  994. amount = skill.getAmount(player, "skill.haste");
  995. if(amount > 0) {
  996. entity.addEffect(player, "haste", 2400, 0);
  997. new_amount = amount - 1;
  998. skill.setAmount(player, "skill.haste", new_amount);
  999. msg.prefix(player, prefix_skill, concat("Used Haste. New amount: ", text.number(new_amount)));
  1000. }
  1001. goto("wait");
  1002. }
  1003. if(tech_name == "skill.speed") {
  1004. amount = skill.getAmount(player, "skill.speed");
  1005. if(amount > 0) {
  1006. entity.addEffect(player, "speed", 2400, 0);
  1007. new_amount = amount - 1;
  1008. skill.setAmount(player, "skill.speed", new_amount);
  1009. msg.prefix(player, prefix_skill, concat("Used Speed. New amount: ", text.number(new_amount)));
  1010. }
  1011. goto("wait");
  1012. }
  1013. if(tech_name == "skill.jump_boost") {
  1014. amount = skill.getAmount(player, "skill.jump_boost");
  1015. if(amount > 0) {
  1016. entity.addEffect(player, "jump_boost", 2400, 1);
  1017. new_amount = amount - 1;
  1018. skill.setAmount(player, "skill.jump_boost", new_amount);
  1019. msg.prefix(player, prefix_skill, concat("Used Jump Boost. New amount: ", text.number(new_amount)));
  1020. }
  1021. goto("wait");
  1022. }
  1023. if(tech_name == "skill.dolphin") {
  1024. amount = skill.getAmount(player, "skill.dolphin");
  1025. if(amount > 0) {
  1026. entity.addEffect(player, "dolphins_grace", 1200, 0);
  1027. new_amount = amount - 1;
  1028. skill.setAmount(player, "skill.dolphin", new_amount);
  1029. msg.prefix(player, prefix_skill, concat("Used Dolphin. New amount: ", text.number(new_amount)));
  1030. }
  1031. goto("wait");
  1032. }
  1033. if(tech_name == "skill.block_up") {
  1034. duration = data.getTimer(player, "block_up");
  1035. if(duration > 0) {
  1036. msg.prefix(player, prefix_skill, "Skill already active.");
  1037. goto("wait");
  1038. }
  1039. amount = skill.getAmount(player, "skill.block_up");
  1040. if(amount > 0) {
  1041. status.addTimed(player, 51, 1200, "Block Up");
  1042. data.setTimer(player, "block_up", 1200);
  1043. new_amount = amount - 1;
  1044. skill.setAmount(player, "skill.block_up", new_amount);
  1045. msg.prefix(player, prefix_skill, concat("Used Block Up. New amount: ", text.number(new_amount)));
  1046. }
  1047. goto("wait");
  1048. }
  1049. if(tech_name == "skill.block_down") {
  1050. duration = data.getTimer(player, "block_down");
  1051. if(duration > 0) {
  1052. msg.prefix(player, prefix_skill, "Skill already active.");
  1053. goto("wait");
  1054. }
  1055. amount = skill.getAmount(player, "skill.block_down");
  1056. if(amount > 0) {
  1057. status.addTimed(player, 52, 1200, "Block Down");
  1058. data.setTimer(player, "block_down", 1200);
  1059. new_amount = amount - 1;
  1060. skill.setAmount(player, "skill.block_down", new_amount);
  1061. msg.prefix(player, prefix_skill, concat("Used Block Down. New amount: ", text.number(new_amount)));
  1062. }
  1063. goto("wait");
  1064. }
  1065. }
  1066. goto("wait");
  1067. }
  1068. if(inv_name == "§8Settings") {
  1069. if(inv_slot == 0) {
  1070. new_value = !player.getAutoCloseDoor(player);
  1071. player.setAutoCloseDoor(player, new_value);
  1072. inv.setItem(inv, inv_slot, read.item("minecraft:oak_door", 1, "§fAutomatic Doors", new_value));
  1073. }
  1074. elseif(inv_slot == 1) {
  1075. new_value = !player.doesAcceptTpaRequests(player);
  1076. player.acceptTpaRequests(player, new_value);
  1077. inv.setItem(inv, inv_slot, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", new_value));
  1078. }
  1079. elseif(inv_slot == 2) {
  1080. new_value = !player.getShowcoords(player);
  1081. player.setShowcoords(player, new_value);
  1082. inv.setItem(inv, inv_slot, read.item("minecraft:compass", 1, "§fShow Coords", new_value));
  1083. if(!new_value) {
  1084. display.remove(player, 30);
  1085. }
  1086. }
  1087. elseif(inv_slot == 3) {
  1088. new_value = !player.hasSittingActivated(player);
  1089. player.activateSitting(player, new_value);
  1090. inv.setItem(inv, inv_slot, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", new_value));
  1091. }
  1092. elseif(inv_slot == 4) {
  1093. new_value = !hasPvpOn(player);
  1094. setPvp(player, new_value);
  1095. inv.setItem(inv, inv_slot, read.item("minecraft:iron_sword", 1, "§fPvP", new_value));
  1096. }
  1097. elseif(inv_slot == 5) {
  1098. new_value = !player.getNoPetDamage(player);
  1099. player.setNoPetDamage(player, new_value);
  1100. inv.setItem(inv, inv_slot, read.item("minecraft:bone", 1, "§fNo Pet Damage", new_value));
  1101. }
  1102. elseif(inv_slot == 6) {
  1103. new_value = !player.getTipLoop(player);
  1104. player.setTipLoop(player, new_value);
  1105. inv.setItem(inv, inv_slot, read.item("minecraft:oak_sign", 1, "§fShow tip loop", new_value));
  1106. }
  1107. inv.update(player);
  1108. }
  1109. goto("wait");
  1110. }
  1111. if(event == "inv_close") {
  1112. if(set.contains(invseeids, inv_id)) {
  1113. set.remove(invseeids, inv_id);
  1114. }
  1115. goto("wait");
  1116. }
  1117. if(event == "function_key") {
  1118. if(player.hasMinigame(player)) {
  1119. goto("wait");
  1120. }
  1121. if(key == 1) {
  1122. inv = inv.new("333333333");
  1123. inv.setItem(inv, 0, read.item("minecraft:oak_door", 1, "§fAutomatic Doors", player.getAutoCloseDoor(player)));
  1124. inv.setItem(inv, 1, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", player.doesAcceptTpaRequests(player)));
  1125. inv.setItem(inv, 2, read.item("minecraft:compass", 1, "§fShow Coords", player.getShowcoords(player)));
  1126. inv.setItem(inv, 3, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", player.hasSittingActivated(player)));
  1127. inv.setItem(inv, 4, read.item("minecraft:iron_sword", 1, "§fPvP", hasPvpOn(player)));
  1128. inv.setItem(inv, 5, read.item("minecraft:bone", 1, "§fNo Pet Damage", player.getNoPetDamage(player)));
  1129. inv.setItem(inv, 6, read.item("minecraft:oak_sign", 1, "§fShow tip loop", player.getTipLoop(player)));
  1130. inv.open(inv, player, "§8Settings");
  1131. goto("wait");
  1132. }
  1133. if(key == 2) {
  1134. player_loc = entity.getLocation(player);
  1135. world_name = world.getName(loc.getWorld(player_loc));
  1136. if(world.isSurvName(world_name) || world_name == "story") {
  1137. skill.showAll(player, player);
  1138. }
  1139. goto("wait");
  1140. }
  1141. if(key == 3) {
  1142. player_loc = entity.getLocation(player);
  1143. world_name = world.getName(loc.getWorld(player_loc));
  1144. if(!world.isSurvName(world_name)) {
  1145. goto("wait");
  1146. }
  1147. world_time = world.getTime(world.getOverWorld());
  1148. while(world_time >= 24000) {
  1149. world_time -= 24000;
  1150. }
  1151. if(world_time <= 12500) {
  1152. msg.prefix(player, prefix_commands, "Only during night possible.");
  1153. goto("wait");
  1154. }
  1155. player_uuid = player.getUuid(player);
  1156. if(set.contains(skip_night_set, player_uuid)) {
  1157. msg.prefix(player, prefix_commands, "Already voted.");
  1158. goto("wait");
  1159. }
  1160. if(time.getMillis() - last_skip_night < 420000) {
  1161. msg.prefix(player, prefix_commands, "Only once per night possible.");
  1162. goto("wait");
  1163. }
  1164. inv.open(skip_night_inv, player, "Skip Night?");
  1165. goto("wait");
  1166. }
  1167. goto("wait");
  1168. }
  1169. if(event == "player_data_tick") {
  1170. if(var == "fly") {
  1171. tpBottom(player);
  1172. player.setFly(player, false);
  1173. }
  1174. }
  1175. goto("wait");
  1176. @mailbox
  1177. location = entity.getLocation(player);
  1178. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1179. if(!world.isSurvName(world_name)) {
  1180. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  1181. goto("wait");
  1182. }
  1183. if(size == 0) {
  1184. msg.prefix(player, prefix_commands, "/mailbox...");
  1185. if(perm.has(player, "mailbox.other")) {
  1186. msg(player, "§6 - show [player] §rOpen a players mailbox.");
  1187. } else {
  1188. msg(player, "§6 - show §rOpen your mailbox.");
  1189. }
  1190. msg(player, "§6 - send <player> §rSend the item in your mainhand to a mailbox.");
  1191. goto("wait");
  1192. }
  1193. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1194. if(arg0 == "send") {
  1195. if(size != 2) {
  1196. msg.prefix(player, prefix_commands, "/mailbox send <player>");
  1197. goto("wait");
  1198. }
  1199. item = living.getHand(player);
  1200. if(item.getType(item) == "minecraft:air") {
  1201. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1202. goto("wait");
  1203. }
  1204. to_name = list.getIndex(args, 1);
  1205. if(!checkIfEverOnline(to_name)) {
  1206. msg.prefix(player, prefix_commands, "This player has never been online.");
  1207. goto("wait");
  1208. }
  1209. to_player_id = player.getId(player.getUuid(to_name));
  1210. index = mailbox.getFreeIndex(to_player_id);
  1211. if(index == -1) {
  1212. msg.prefix(player, prefix_commands, "No free space in mailbox.");
  1213. goto("wait");
  1214. }
  1215. living.setEquip(player, "hand", item.getAir());
  1216. mailbox.setItem(to_player_id, index, item);
  1217. msg.send(player, to_name, prefix_commands, concat(player.getName(player), " sent you items to your mailbox."), true);
  1218. msg.prefix(player, prefix_commands, "Item sent to player.");
  1219. goto("wait");
  1220. }
  1221. if(arg0 == "show") {
  1222. if(size == 1) {
  1223. from_player_id = player.getId(player);
  1224. } elseif(size == 2) {
  1225. if(!perm.has(player, "mailbox.other")) {
  1226. perm.no(player, "mailbox.other");
  1227. goto("wait");
  1228. }
  1229. from_name = list.getIndex(args, 1);
  1230. if(!checkIfEverOnline(from_name)) {
  1231. msg.prefix(player, prefix_commands, "This player has never been online.");
  1232. goto("wait");
  1233. }
  1234. from_player_id = player.getId(player.getUuid(from_name));
  1235. } else {
  1236. if(perm.has(player, "mailbox.other")) {
  1237. msg.prefix(player, prefix_commands, "/mailbox show [player]");
  1238. } else {
  1239. msg.prefix(player, prefix_commands, "/mailbox show");
  1240. }
  1241. goto("wait");
  1242. }
  1243. mailbox.show(player, from_player_id);
  1244. goto("wait");
  1245. }
  1246. goto("wait");
  1247. @entities
  1248. if(size != 1) {
  1249. msg.prefix(player, prefix_quest, "/entities <world>");
  1250. goto("wait");
  1251. }
  1252. world_name = text.toLowerCase(list.getIndex(args, 0));
  1253. world = world.get(world_name);
  1254. if(world == null) {
  1255. msg.prefix(player, prefix_world, "This world is not loaded.");
  1256. goto("wait");
  1257. }
  1258. list = world.getEntities(world);
  1259. size = list.getSize(list);
  1260. map = map.new();
  1261. living = 0;
  1262. for(i = 0; i < size; i++) {
  1263. element = list.getIndex(list, i);
  1264. if(isLiving(element)) {
  1265. living++;
  1266. //living.removeAi(element);
  1267. entity_type = entity.getType(element);
  1268. n = map.get(map, entity_type);
  1269. if(n == null) {
  1270. map.add(map, entity_type, 1);
  1271. } else {
  1272. map.add(map, entity_type, n + 1);
  1273. }
  1274. }
  1275. }
  1276. msg(player, "§0-------------------------------------------------");
  1277. msg(player, "Living: ", living);
  1278. iter = map.iterator(map);
  1279. table = table.new("§b", 14, 14);
  1280. msg(player, table.getStart(table));
  1281. while(hasNext(iter)) {
  1282. element1 = next(iter);
  1283. if(hasNext(iter)) {
  1284. element2 = next(iter);
  1285. } else {
  1286. element2 = "";
  1287. }
  1288. msg(player, table.get(table, element1, element2));
  1289. }
  1290. msg(player, table.getEnd(table));
  1291. goto("wait");
  1292. @RickRole_play
  1293. if(rickIndex < rick_sounds_amount) {
  1294. pitch = list.getIndex(RickRollSounds, rickIndex);
  1295. RickSound(pitch);
  1296. ticks = 2 + list.getIndex(RickRollSoundDists, rickIndex);
  1297. sgoto(ticks, "RickRole_play");
  1298. }
  1299. rickIndex++;
  1300. goto("wait");
  1301. function RickSound(pitch) {
  1302. iter = list.iterator(players.toList());
  1303. while(hasNext(iter)) {
  1304. online_player = next(iter);
  1305. if(online_player == null) {
  1306. continue;
  1307. }
  1308. sound.spawnForPlayer(online_player, $sound_flute, $sound_category_master, 1, pitch);
  1309. sound.spawnForPlayer(online_player, $sound_harp, $sound_category_master, 1, pitch);
  1310. sound.spawnForPlayer(online_player, $sound_pling, $sound_category_master, 1, pitch);
  1311. }
  1312. }
  1313. @hack
  1314. msg.prefix(player, prefix_commands, "Your pc got hacked now.");
  1315. goto("wait");
  1316. @resetMoneyBoost
  1317. money.setBoostFactor(1);
  1318. goto("wait");
  1319. @skip_night_loop
  1320. skip_night_counter--;
  1321. if(skip_night_counter == 0) {
  1322. msg.survival("[§6Commands§r] Skip night results:");
  1323. msg.survival(concat("§e - §rYes: §e", text.number(skip_night_yes)));
  1324. msg.survival(concat("§e - §rNo: §e", text.number(skip_night_no)));
  1325. msg.survival(concat("§e - §rI don't care: §e", text.number(skip_night_no_care)));
  1326. if(skip_night_yes > skip_night_no) {
  1327. world = world.getOverWorld();
  1328. world.setTime(world, 0);
  1329. }
  1330. set.clear(skip_night_set);
  1331. last_skip_night = time.getMillis();
  1332. sgoto(8400, "reset_skip_night");
  1333. goto("wait");
  1334. }
  1335. sgoto(20, "skip_night_loop");
  1336. goto("wait");
  1337. @reset_skip_night
  1338. skip_night_started = false;
  1339. goto("wait");
  1340. @skills
  1341. //skills [player]
  1342. if(size == 0) {
  1343. skill.showAll(player, player);
  1344. goto("wait");
  1345. }
  1346. if(!perm.has(player, "skills.other")) {
  1347. perm.no(player, "skills.other");
  1348. goto("wait");
  1349. }
  1350. p_name = list.getIndex(args, 0);
  1351. p_uuid = player.getUuid(p_name);
  1352. if(p_uuid == null) {
  1353. msg.prefix(player, prefix_tips, "This player has never been online.");
  1354. goto("wait");
  1355. }
  1356. from_p_id = player.getId(p_uuid);
  1357. skill.showAll(from_p_id, player);
  1358. goto("wait");
  1359. @infopoint1
  1360. msg(player, getSpacer());
  1361. msg.prefix(player, "§eSurvival", "§aEnjoy our modded survival feeling. New ores, items and displays, and we are still beginner friendly.");
  1362. goto("wait");
  1363. @infopoint2
  1364. msg(player, getSpacer());
  1365. 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.");
  1366. goto("wait");
  1367. @infopoint3
  1368. msg(player, getSpacer());
  1369. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  1370. goto("wait");
  1371. @infopoint4
  1372. msg(player, getSpacer());
  1373. 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.");
  1374. goto("wait");
  1375. @infopoint5
  1376. msg(player, getSpacer());
  1377. 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.");
  1378. goto("wait");
  1379. @infopoint6
  1380. msg(player, getSpacer());
  1381. 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.");
  1382. goto("wait");
  1383. @infopoint7
  1384. msg(player, getSpacer());
  1385. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  1386. goto("wait");
  1387. @infopoint8
  1388. msg(player, getSpacer());
  1389. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  1390. goto("wait");
  1391. @infopoint9
  1392. msg(player, getSpacer());
  1393. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  1394. goto("wait");
  1395. @infopoint10
  1396. msg(player, getSpacer());
  1397. msg.prefix(player, "§eRules", "§aThere is at least one rule: Be respectful. Look at our fake rules.");
  1398. goto("wait");
  1399. @infopoint11
  1400. msg(player, getSpacer());
  1401. msg.prefix(player, "§eNote", "§aEverything is self-coded. Worldedit is the only external mod we use.");
  1402. goto("wait");
  1403. @infopoint12
  1404. msg(player, getSpacer());
  1405. msg.prefix(player, "§eNote", "§aBe Creative in our creative world.");
  1406. goto("wait");
  1407. @party
  1408. if(size == 0) {
  1409. @partyhelp
  1410. msg.prefix(player, prefix_party, "/party ...");
  1411. msg(player, "§5 - invite <player> §rInvite a player");
  1412. msg(player, "§5 - accept <player> §rAccept an invitation");
  1413. msg(player, "§5 - deny <player> §rDeny an invitation");
  1414. msg(player, "§5 - kick <player> §rKick a player");
  1415. msg(player, "§5 - leave §rLeave the party");
  1416. msg(player, "§5 - promote <player> §rPromote a player");
  1417. msg(player, "§5 - demote <player> §rDemote a player");
  1418. msg(player, "§5 - disband §rDisband a party");
  1419. msg(player, "§5 - list §rParty information");
  1420. msg(player, "§5 - <message> §rSends a party message");
  1421. goto("wait");
  1422. }
  1423. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1424. if(arg0 == "list") {
  1425. if(size != 1) {
  1426. msg.prefix(player, prefix_party, "§5/party list");
  1427. } else {
  1428. if(!player.isInParty(player)) {
  1429. msg.prefix(player, prefix_party, "You are not in a party.");
  1430. goto("wait");
  1431. }
  1432. list = party.getList(player.getPartyId(player));
  1433. width = 1;
  1434. if(list.getSize(list) > 9) {
  1435. width = 2;
  1436. }
  1437. table = table.new("§5", width, 13, 7);
  1438. msg(player, table.getStart(table));
  1439. msg(player, table.get(table, "§d#", "§d§lName", "§d§lRole"));
  1440. msg(player, table.getMiddle(table));
  1441. iter = list.iterator(list);
  1442. c = 0;
  1443. while(hasNext(iter)) {
  1444. c++;
  1445. p = player.get(next(iter));
  1446. msg(player, table.get(table, text.number(c), player.getName(p), player.getPartyRank(p)));
  1447. }
  1448. msg(player, table.getEnd(table));
  1449. }
  1450. goto("wait");
  1451. }
  1452. if(arg0 == "leave") {
  1453. if(size != 1) {
  1454. msg.prefix(player, prefix_party, "§5/party leave");
  1455. } else {
  1456. if(!player.isInParty(player)) {
  1457. msg.prefix(player, prefix_party, "You are not in a party.");
  1458. goto("wait");
  1459. }
  1460. party.kickPlayer(player, "leave");
  1461. }
  1462. goto("wait");
  1463. }
  1464. if(arg0 == "disband") {
  1465. if(size != 1) {
  1466. msg.prefix(player, prefix_party, "§5/party disband");
  1467. } else {
  1468. if(!player.isInParty(player)) {
  1469. msg.prefix(player, prefix_party, "You are not in a party.");
  1470. goto("wait");
  1471. }
  1472. if(!player.isPartyLeader(player)) {
  1473. msg.prefix(player, prefix_party, "You are not the party leader.");
  1474. goto("wait");
  1475. }
  1476. party.delete(player.getPartyId(player));
  1477. }
  1478. goto("wait");
  1479. }
  1480. if(arg0 == "kick") {
  1481. if(size != 2) {
  1482. msg.prefix(player, prefix_party, "§5/party kick <player>");
  1483. } else {
  1484. if(!player.isInParty(player)) {
  1485. msg.prefix(player, prefix_party, "You are not in a party.");
  1486. goto("wait");
  1487. }
  1488. if(!player.isPartyLeaderOrMod(player)) {
  1489. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1490. goto("wait");
  1491. }
  1492. pname = list.getIndex(args, 1);
  1493. if(!checkIfEverOnline(pname)) {
  1494. msg.prefix(player, prefix_party, "This player has never been online.");
  1495. goto("wait");
  1496. }
  1497. p = read.player(pname);
  1498. if(p == null) {
  1499. msg.prefix(player, prefix_party, "This player is not online.");
  1500. goto("wait");
  1501. }
  1502. if(player == p) {
  1503. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1504. goto("wait");
  1505. }
  1506. if(!party.same(p, player)) {
  1507. msg.prefix(player, prefix_party, "This player is not in your party.");
  1508. goto("wait");
  1509. }
  1510. ownrank = player.getPartyRank(player);
  1511. if(ownrank == "Moderator") {
  1512. if(player.isPartyLeaderOrMod(p)) {
  1513. msg.prefix(player, prefix_party, "You can't kick this player.");
  1514. goto("wait");
  1515. }
  1516. }
  1517. party.kickPlayer(p, "kick");
  1518. }
  1519. goto("wait");
  1520. }
  1521. if(arg0 == "promote" || arg0 == "demote") {
  1522. if(size != 2) {
  1523. msg.prefix(player, prefix_party, concat("§5/party ", arg0, " <player>"));
  1524. } else {
  1525. pname = list.getIndex(args, 1);
  1526. if(!player.isInParty(player)) {
  1527. msg.prefix(player, prefix_party, "You are not in a party.");
  1528. goto("wait");
  1529. }
  1530. if(!player.isPartyLeader(player)) {
  1531. msg.prefix(player, prefix_party, "You are not the party leader.");
  1532. goto("wait");
  1533. }
  1534. if(!checkIfEverOnline(pname)) {
  1535. msg.prefix(player, prefix_party, "This player has never been online.");
  1536. goto("wait");
  1537. }
  1538. p = read.player(pname);
  1539. if(p == null) {
  1540. msg.prefix(player, prefix_party, "This player is not online.");
  1541. goto("wait");
  1542. }
  1543. if(player == p) {
  1544. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1545. goto("wait");
  1546. }
  1547. if(!party.same(p, player)) {
  1548. msg.prefix(player, prefix_party, "This player is not in your party.");
  1549. goto("wait");
  1550. }
  1551. partyid = player.getPartyId(player);
  1552. rank = player.getPartyRank(p);
  1553. if(arg0 == "promote") {
  1554. if(rank == "Player") {
  1555. player.setPartyRank(p, "Moderator");
  1556. party.sendMessage(partyid, concat("§r", pname, " is now Moderator."));
  1557. } elseif(rank == "Moderator") {
  1558. player.setPartyRank(p, "Leader");
  1559. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1560. party.sendMessage(partyid, concat("§r", pname, " is now Leader."));
  1561. }
  1562. } elseif(arg0 == "demote") {
  1563. if(rank == "Moderator") {
  1564. player.setPartyRank(p, "Player");
  1565. party.sendMessage(partyid, concat("§r", pname, " is no longer Moderator."));
  1566. } else {
  1567. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1568. }
  1569. }
  1570. }
  1571. goto("wait");
  1572. }
  1573. if(arg0 == "invite") {
  1574. if(size != 2) {
  1575. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1576. } else {
  1577. p_name = list.getIndex(args, 1);
  1578. if(!checkIfEverOnline(p_name)) {
  1579. msg.prefix(player, prefix_party, "This player has never been online.");
  1580. goto("wait");
  1581. }
  1582. p = read.player(p_name);
  1583. temp = party.invitePlayer(player, p);
  1584. if(temp == "inviteeNotOnline") {
  1585. msg.prefix(player, prefix_party, "This player is not online.");
  1586. } elseif(temp == "inviterEqualsInvitee") {
  1587. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1588. } elseif(temp == "inviterNotPermitted") {
  1589. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1590. } elseif(temp == "inviteeAlreadyInParty") {
  1591. msg.prefix(player, prefix_party, "This player is already in your party.");
  1592. } elseif(temp == "inviteeAlreadyInvited") {
  1593. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1594. } else {
  1595. msg.prefix(player, prefix_party, "Invitation sent.");
  1596. }
  1597. }
  1598. goto("wait");
  1599. }
  1600. if(arg0 == "accept") {
  1601. if(size != 2) {
  1602. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1603. } else {
  1604. if(player.isInParty(player)) {
  1605. msg.prefix(player, prefix_party, "You are already in a party.");
  1606. goto("wait");
  1607. }
  1608. pname = list.getIndex(args, 1);
  1609. if(!checkIfEverOnline(pname)) {
  1610. msg.prefix(player, prefix_party, "This player has never been online.");
  1611. goto("wait");
  1612. }
  1613. p = read.player(pname);
  1614. if(p == null) {
  1615. msg.prefix(player, prefix_party, "This player is no longer online.");
  1616. goto("wait");
  1617. }
  1618. player_uuid = player.getUuid(player);
  1619. p_uuid = player.getUuid(p);
  1620. list = map.get(party_invitations, player_uuid);
  1621. if(list == null || !list.contains(list, p_uuid)) {
  1622. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1623. goto("wait");
  1624. }
  1625. if(player.isInParty(p)) { //wenn einlader bereits in party
  1626. partyid = player.getPartyId(p);
  1627. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1628. party.addPlayer(partyid, player);
  1629. player.setPartyRank(player, "Player");
  1630. } else {
  1631. msg.prefix(player, prefix_party, "This player is already in another party.");
  1632. goto("wait");
  1633. }
  1634. } else {
  1635. partyid = map.get(party_invite_ids, p_uuid);
  1636. party.setList(partyid, list.new());
  1637. party.addPlayer(partyid, p);
  1638. party.addPlayer(partyid, player);
  1639. player.setPartyRank(p, "Leader");
  1640. player.setPartyRank(player, "Player");
  1641. msg.prefix(p, prefix_party, "The party was created.");
  1642. }
  1643. list.clear(list); //Einladungs-Liste von oben
  1644. party.sendMessage(partyid, concat("§r", player_name, " joined the party."));
  1645. }
  1646. goto("wait");
  1647. }
  1648. if(arg0 == "deny") {
  1649. if(size != 2) {
  1650. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1651. } else {
  1652. player_uuid = player.getUuid(player);
  1653. list = map.get(party_invitations, player_uuid);
  1654. if(list != null) {
  1655. pname = list.getIndex(args, 1);
  1656. p = read.player(pname);
  1657. if(p == null) {
  1658. msg.prefix(player, prefix_party, "This player is no longer online.");
  1659. goto("wait");
  1660. }
  1661. p_uuid = player.getUuid(p);
  1662. if(list == null || !list.contains(list, p_uuid)) {
  1663. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1664. goto("wait");
  1665. }
  1666. index = list.getIndexOf(list, p_uuid);
  1667. list.remove(list, p_uuid);
  1668. keytimes = map.get(delkeytimes, player_uuid);
  1669. list.removeIndex(keytimes, index);
  1670. p = read.player(pname);
  1671. if(p != null) {
  1672. msg.prefix(p, prefix_party, concat("§r", player_name, " has denied your invitation."));
  1673. }
  1674. msg.prefix(player, prefix_party, concat("Invitation from ", pname, " denied."));
  1675. }
  1676. }
  1677. goto("wait");
  1678. }
  1679. if(player.isInParty(player)) {
  1680. message = concat(player.getName(player), " §1| §r", text.concatList(args, " ", 0, list.getSize(args) - 1));
  1681. party.sendMessage(player.getPartyId(player), message);
  1682. goto("wait");
  1683. }
  1684. goto("partyhelp");
  1685. @setmessage
  1686. if(size == 0) {
  1687. @setmessagehelp
  1688. msg.prefix(player, prefix_commands, "/setmessage ...");
  1689. msg(player, "§e- join <message> §rSets your joinmessage");
  1690. msg(player, "§e- leave <message> §rSets your leavemessage");
  1691. msg(player, "§e- info §rShows you set messages");
  1692. if(perm.has(player, "setmessage.delete")) {
  1693. msg(player, "§e- delete <player> §rDeletes a players messages");
  1694. }
  1695. goto("wait");
  1696. }
  1697. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1698. if(arg0 == "info") {
  1699. fullname = player.getFullName(player);
  1700. message = text.convert(player.getJoinMessage(player));
  1701. if(message == null) {
  1702. msg.prefix(player, prefix_commands, "No join message set.");
  1703. } else {
  1704. msg.prefix(player, prefix_commands, concat("§a§l> §r", fullname, " §9", message));
  1705. }
  1706. message = text.convert(player.getLeaveMessage(player));
  1707. if(message == null) {
  1708. msg.prefix(player, prefix_commands, "No leave message set.");
  1709. } else {
  1710. msg.prefix(player, prefix_commands, concat("§c§l> §r", fullname, " §9", message));
  1711. }
  1712. goto("wait");
  1713. }
  1714. if(arg0 == "join") {
  1715. if(size < 2) {
  1716. goto("setmessagehelp");
  1717. }
  1718. message = text.concatList(args, " ", 1, size - 1);
  1719. player.setJoinMessage(player, message);
  1720. msg.prefix(player, prefix_commands, "Join-Message set.");
  1721. goto("wait");
  1722. }
  1723. if(arg0 == "leave") {
  1724. if(size < 2) {
  1725. goto("setmessagehelp");
  1726. }
  1727. message = text.concatList(args, " ", 1, size - 1);
  1728. player.setLeaveMessage(player, message);
  1729. msg.prefix(player, prefix_commands, "Leave-Message set.");
  1730. goto("wait");
  1731. }
  1732. if(arg0 == "delete") {
  1733. if(size == 1) {
  1734. p_uuid = player.getUuid(player);
  1735. } elseif(size == 2) {
  1736. if(!perm.has(player, "setmessage.delete")) {
  1737. perm.no(player, "setmessage.delete");
  1738. goto("wait");
  1739. }
  1740. p_name = list.getIndex(args, 1);
  1741. if(!checkIfEverOnline(p_name)) {
  1742. msg.prefix(player, prefix_commands, "This player has never been online.");
  1743. goto("wait");
  1744. }
  1745. p_uuid = player.getUuid(p_name);
  1746. } else {
  1747. goto("setmessagehelp");
  1748. }
  1749. p_id = player.getId(p_uuid);
  1750. player.setJoinMessage(p_id, "null");
  1751. player.setLeaveMessage(p_id, "null");
  1752. msg.prefix(player, prefix_commands, "Messages deleted.");
  1753. goto("wait");
  1754. }
  1755. goto("wait");
  1756. @lag
  1757. msg.prefix(player, prefix_commands, "Lag test is performed. Please wait...");
  1758. a = array.new(2);
  1759. a[0] = player.getUuid(player);
  1760. a[1] = time.getMillis();
  1761. list.add(lag_list, a);
  1762. sgoto(100, "do_lag_test");
  1763. goto("wait");
  1764. @do_lag_test
  1765. t = time.getMillis();
  1766. a = list.getIndex(lag_list, 0);
  1767. list.removeIndex(lag_list, 0);
  1768. p_uuid = a[0];
  1769. t_old = a[1];
  1770. t = math.roundComma((t - t_old) / 50 / 5, 2);
  1771. p = player.get(p_uuid);
  1772. if(p != null) {
  1773. msg.prefix(p, prefix_commands, "Expected: 20 ticks/sec");
  1774. msg.prefix(p, prefix_commands, concat("Measured: ", text.number(t), " ticks/sec"));
  1775. }
  1776. goto("wait");
  1777. @live
  1778. boolean = !player.isLive(player);
  1779. player.setLive(player, boolean);
  1780. player.setHeadName(player);
  1781. player.setTabName(player);
  1782. msg.prefix(player, prefix_commands, "Live toggled.");
  1783. goto("wait");
  1784. @lightning
  1785. location = player.getTarget(player, 50, true, true);
  1786. if(block.getType(location) == "minecraft:air") {
  1787. msg.prefix(player, prefix_commands, "No block in sight.");
  1788. goto("wait");
  1789. }
  1790. entity.spawn("minecraft:lightning_bolt", location);
  1791. goto("wait");
  1792. @ride
  1793. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1794. if(world.isGamesName(world_name)) {
  1795. if(player.hasMinigame(affectedplayer) || (perm.has(affectedplayer, "ride") && !perm.has(affectedplayer, "isTeam"))) {
  1796. if(size == 2) {
  1797. msg.prefix(player, prefix_commands, "This player can't use this now.");
  1798. } else {
  1799. msg.prefix(player, prefix_commands, "You can't use this now.");
  1800. }
  1801. goto("wait");
  1802. }
  1803. }
  1804. player_uuid = player.getUuid(player);
  1805. if(set.contains(ride_set, player_uuid)) {
  1806. msg.prefix(player, prefix_commands, "Entity-Ride-Click removed.");
  1807. set.remove(ride_set, player_uuid);
  1808. } else {
  1809. msg.prefix(player, prefix_commands, "Click an entity to ride it.");
  1810. set.add(ride_set, player_uuid);
  1811. }
  1812. goto("wait");
  1813. @vanish
  1814. //vanish [on/off] [player]
  1815. if(size == 0) {
  1816. if(set.contains(vanish_set, player.getUuid(affectedplayer))) {
  1817. bool = "off";
  1818. } else {
  1819. bool = "on";
  1820. }
  1821. }
  1822. if(size >= 1) {
  1823. bool = list.getIndex(args, 0);
  1824. }
  1825. if(size == 2) {
  1826. affectedname = list.getIndex(args, 1);
  1827. affectedplayer = read.player(affectedname);
  1828. affectedname = player.getName(affectedplayer);
  1829. if(affectedplayer == null) {
  1830. msg.prefix(player, prefix_commands, "This player is not online.");
  1831. goto("wait");
  1832. }
  1833. }
  1834. if(bool == "on") {
  1835. if(affectedname != player_name) {
  1836. msg.prefix(player, prefix_commands, concat(affectedname, " has been vanished."));
  1837. msg.prefix(affectedplayer, prefix_commands, concat("You have been vanished by ", player_name, "."));
  1838. } else {
  1839. msg.prefix(affectedplayer, prefix_commands, "You are vanished.");
  1840. }
  1841. set.add(vanish_set, player.getUuid(affectedplayer));
  1842. player.hide(affectedplayer);
  1843. } elseif(bool == "off") {
  1844. if(affectedname != player_name) {
  1845. msg.prefix(player, prefix_commands, concat(affectedname, " is no longer vanished."));
  1846. msg.prefix(affectedplayer, prefix_commands, concat("You are no longer vanished caused by ", player_name, "."));
  1847. } else {
  1848. msg.prefix(affectedplayer, prefix_commands, "You are no longer vanished.");
  1849. }
  1850. set.remove(vanish_set, player.getUuid(affectedplayer));
  1851. player.show(affectedplayer);
  1852. } else {
  1853. msg.prefix(player, prefix_commands, "/vanish [on/off] [player]");
  1854. }
  1855. goto("wait");
  1856. @user
  1857. if(size == 0) {
  1858. p_name = player.getName(player);
  1859. p_uuid = player.getUuid(p_name);
  1860. } else {
  1861. if(!perm.has(player, "user.other")) {
  1862. perm.no(player, "user.other");
  1863. goto("wait");
  1864. }
  1865. p_name = list.getIndex(args, 0);
  1866. if(!checkIfEverOnline(p_name)) {
  1867. msg.prefix(player, prefix_commands, "This player has never been online.");
  1868. goto("wait");
  1869. }
  1870. p_uuid = player.getUuid(p_name);
  1871. p_name = player.getName(p_uuid);
  1872. }
  1873. p = read.player(p_name);
  1874. p_id = player.getId(p_uuid);
  1875. if(p == null) {
  1876. p_or_id = p_id;
  1877. } else {
  1878. p_or_id = p;
  1879. }
  1880. table = table.new("§8", 7, 24);
  1881. msg(player, table.getStart(table));
  1882. msg(player, table.get(table, "Player", p_name));
  1883. msg(player, table.getMiddle(table));
  1884. msg(player, table.get(table, "Playtime", text.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  1885. msg(player, table.get(table, "Joins", text.number(player.getJoins(p_or_id))));
  1886. msg(player, table.get(table, "First Join", getDateString(player.getFirstJoin(p_or_id))));
  1887. msg(player, table.get(table, "Last Join", getDateString(player.getLastJoin(p_or_id))));
  1888. msg(player, table.get(table, "UUID", p_uuid));
  1889. msg(player, table.get(table, "ID", text.number(p_id)));
  1890. msg(player, table.get(table, "Rank", getRank(p_or_id)));
  1891. msg(player, table.get(table, "PvP", hasPvpOn(p_or_id)));
  1892. msg(player, table.get(table, "Quests", text.number(quest.getCounter(p_or_id))));
  1893. msg(player, table.get(table, "Money", text.number(getMoney(p_or_id))));
  1894. msg(player, table.get(table, "Adventures", text.number(player.getAdventureAmounts(p_or_id))));
  1895. msg(player, table.getEnd(table));
  1896. goto("wait");
  1897. @quest
  1898. if(size == 0) {
  1899. @quest_syntax
  1900. msg.prefix(player, prefix_quest, "/quest ...");
  1901. msg(player, "§5 - see §rSee all active quests");
  1902. msg(player, "§5 - term <player> §rTerminates a player's quest");
  1903. goto("wait");
  1904. }
  1905. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1906. if(arg0 == "see") {
  1907. if(size != 1) {
  1908. msg.prefix(player, prefix_quest, "/quest see");
  1909. goto("wait");
  1910. }
  1911. quest_map = quest.getIds();
  1912. iter = map.iterator(quest_map);
  1913. while(hasNext(iter)) {
  1914. element = next(iter);
  1915. key = map.getKey(element);
  1916. value = map.getValue(element);
  1917. script = script.getFromId(value);
  1918. if(script == null) {
  1919. continue;
  1920. }
  1921. msg(player, player.getName(key), " ", value);
  1922. }
  1923. goto("wait");
  1924. }
  1925. if(arg0 == "term") {
  1926. if(size != 2) {
  1927. msg.prefix(player, prefix_quest, "/quest term <player>");
  1928. goto("wait");
  1929. }
  1930. p_name = list.getIndex(args, 1);
  1931. if(!checkIfEverOnline(p_name)) {
  1932. msg.prefix(player, prefix_quest, "This player has never been online.");
  1933. goto("wait");
  1934. }
  1935. p = read.player(p_name);
  1936. if(p == null) {
  1937. msg.prefix(player, prefix_quest, "This player is not online.");
  1938. goto("wait");
  1939. }
  1940. script_id = quest.getFromPlayer(p);
  1941. if(script_id == null) {
  1942. msg.prefix(player, prefix_quest, "This player has no quest.");
  1943. goto("wait");
  1944. }
  1945. script = script.getFromId(script_id);
  1946. if(script == null) {
  1947. quest.removePlayer(p);
  1948. msg.prefix(player, prefix_quest, "Corrupt quest terminated.");
  1949. goto("wait");
  1950. }
  1951. setScriptVar("player", p);
  1952. modTimer.scriptCallEvent("quest_term", script);
  1953. quest.term(script, player);
  1954. msg.prefix(player, prefix_quest, "Player's quest terminated.");
  1955. goto("wait");
  1956. }
  1957. goto("quest_syntax");
  1958. @friend
  1959. if(size == 0) {
  1960. @friend_syntax
  1961. msg.prefix(player, prefix_friends, "/friend ...");
  1962. msg(player, "§5 - add <player> §rAdds a friend");
  1963. msg(player, "§5 - remove <player> §rRemoves a friend");
  1964. msg(player, "§5 - list §rLists all your friends");
  1965. goto("wait");
  1966. }
  1967. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1968. if(arg0 == "add") {
  1969. if(size != 2) {
  1970. msg.prefix(player, prefix_friends, "/friend add <player>");
  1971. goto("wait");
  1972. }
  1973. friend_name = list.getIndex(args, 1);
  1974. if(player_name == friend_name) {
  1975. msg.prefix(player, prefix_friends, "You can't invite yourself.");
  1976. goto("wait");
  1977. }
  1978. player_id = player.getId(player);
  1979. if(!checkIfEverOnline(friend_name)) {
  1980. msg.prefix(player, prefix_friends, "This player has never been online.");
  1981. goto("wait");
  1982. }
  1983. friend_id = player.getId(player.getUuid(friend_name));
  1984. if(friend.check(player_id, friend_id)) {
  1985. msg.prefix(player, prefix_friends, "This player is already your friend.");
  1986. goto("wait");
  1987. }
  1988. if(map.contains(friend_requests, friend_id)) {
  1989. if(map.get(friend_requests, friend_id) == player_id) {
  1990. friend.add(player_id, friend_id);
  1991. map.remove(friend_requests, friend_id);
  1992. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is your friend now."));
  1993. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is your friend now."), true);
  1994. goto("wait");
  1995. }
  1996. }
  1997. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  1998. friend = read.player(friend_name);
  1999. msg.prefix(player, prefix_friends, concat("You sent an invitation to §7", friend_name, "§r."));
  2000. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r wants to be your friend."), true);
  2001. if(friend != null) {
  2002. msg(friend, text.click("§r[§aAccept§r]", concat("/friend add ", player_name)));
  2003. }
  2004. goto("wait");
  2005. }
  2006. if(arg0 == "remove") {
  2007. if(size != 2) {
  2008. msg.prefix(player, prefix_friends, "/friend remove <player>");
  2009. goto("wait");
  2010. }
  2011. friend_name = list.getIndex(args, 1);
  2012. player_id = player.getId(player);
  2013. if(!checkIfEverOnline(friend_name)) {
  2014. msg.prefix(player, prefix_friends, "This player has never been online.");
  2015. goto("wait");
  2016. }
  2017. friend_id = player.getId(player.getUuid(friend_name));
  2018. if(!friend.check(player_id, friend_id)) {
  2019. msg.prefix(player, prefix_friends, "This player isn't your friend.");
  2020. goto("wait");
  2021. }
  2022. friend.delete(player_id, friend_id);
  2023. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is no longer your friend."));
  2024. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is no longer your friend."), true);
  2025. goto("wait");
  2026. }
  2027. if(arg0 == "list") {
  2028. if(size != 1) {
  2029. msg.prefix(player, prefix_friends, "/friend list");
  2030. goto("wait");
  2031. }
  2032. player_id = player.getId(player);
  2033. friendlist = friend.getList(player_id);
  2034. listsize = list.getSize(friendlist);
  2035. if(listsize == 0) {
  2036. msg.prefix(player, prefix_friends, "You have no friends yet.");
  2037. goto("wait");
  2038. }
  2039. msg(player, "§5Friends:");
  2040. for(i = 0; i <= listsize - 1; i++) {
  2041. msg(player, "§r- ", list.getIndex(friendlist, i));
  2042. }
  2043. goto("wait");
  2044. }
  2045. goto("friend_syntax");
  2046. @var
  2047. if(size != 2) {
  2048. msg.prefix(player, prefix_commands, "/var <id> <varname>");
  2049. goto("wait");
  2050. }
  2051. script_id = list.getIndex(args, 0);
  2052. script = script.getFromId(script_id);
  2053. if(script == null) {
  2054. msg.prefix(player, "§dScript", "Invalid id");
  2055. goto("wait");
  2056. }
  2057. var_name = list.getIndex(args, 1);
  2058. var = script.getVar(script, var_name);
  2059. msg.prefix(player, "§dScript", concat(var_name, " = ", var));
  2060. goto("wait");
  2061. @mentos
  2062. if(size != 1) {
  2063. msg.prefix(player, prefix_commands, "/mentos <script id>");
  2064. goto("wait");
  2065. }
  2066. script_id = list.getIndex(args, 0);
  2067. script = script.getFromId(script_id);
  2068. if(script == null) {
  2069. msg.prefix(player, "§dScript", "Invalid id");
  2070. goto("wait");
  2071. }
  2072. var1 = script.getVar(script, "player_list");
  2073. var2 = script.getVar(script, "founditems");
  2074. if(var1 == null || var2 == null) {
  2075. msg.prefix(player, "§dScript", "Game is not Sammelfieber.");
  2076. goto("wait");
  2077. }
  2078. name = player.getName(player.get(list.getIndex(var1, 0)));
  2079. points = text.number(list.getSize(var2));
  2080. msg.prefix(player, "§dScript", concat(name, " ", points));
  2081. goto("wait");
  2082. @vote
  2083. link1 = "https://minecraft-server.eu/vote/index/2227F";
  2084. link2 = "https://minecraft-server-list.com/server/478200/vote/";
  2085. msg(player, getSpacer());
  2086. msg(player, "[", prefix_vote, "§r] ", text.link("minecraft-server.eu", link1));
  2087. msg(player, "[", prefix_vote, "§r] ", text.link("minecraft-server-list.com", link2));
  2088. msg(player, "[", prefix_vote, "§r] ", concat("Votepunkte: §6", text.number(player.getVotePoints(player))));
  2089. msg(player, "[", prefix_vote, "§r] ", concat("Votestreak: §6", text.number(player.getVoteStreak(player))));
  2090. msg(player, "[", prefix_vote, "§r] ", concat("Letzter Vote: §6", getTimeString(player.getLastVoteTime(player))));
  2091. goto("wait");
  2092. @voteshop
  2093. inv.open(vote_inv, player, concat("Your vote points: §6", text.number(player.getVotePoints(player))));
  2094. goto("wait");
  2095. @voxel
  2096. if(size < 1) {
  2097. @voxelhelp
  2098. msg.prefix(player, prefix_commands, "/voxel <radius:1-5>");
  2099. msg.prefix(player, prefix_commands, "/voxel block");
  2100. goto("wait");
  2101. }
  2102. arg0 = list.getIndex(args, 0);
  2103. if(isDouble(arg0)) {
  2104. radius = arg0;
  2105. if(radius < 1) {
  2106. radius = 1;
  2107. }
  2108. if(radius > 5) {
  2109. radius = 5;
  2110. }
  2111. script = script.get("Voxel");
  2112. map = script.getVar(script, "radius_per_player");
  2113. map.add(map, player.getUuid(player), radius);
  2114. script.setVar(script, "radius_per_player", map);
  2115. msg.prefix(player, prefix_commands, concat("Set radius to ", text.number(radius), "."));
  2116. goto("wait");
  2117. }
  2118. if(arg0 == "block") {
  2119. item = living.getEquip(player, "hand");
  2120. item_type = item.getType(item);
  2121. if(item_type == "minecraft:air") {
  2122. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  2123. goto("wait");
  2124. }
  2125. state = block.newState(item_type);
  2126. script = script.get("Voxel");
  2127. map = script.getVar(script, "state_per_player");
  2128. map.add(map, player.getUuid(player), state);
  2129. script.setVar(script, "state_per_player", map);
  2130. msg.prefix(player, prefix_commands, concat("Set block to ", item_type, "."));
  2131. goto("wait");
  2132. }
  2133. goto("voxelhelp");
  2134. @setservermessage
  2135. if(size < 1) {
  2136. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  2137. goto("wait");
  2138. }
  2139. message = text.concatList(args, " ", 0, size - 1);
  2140. message = text.replace(message, "&", "§");
  2141. setMOTD(message);
  2142. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  2143. goto("wait");
  2144. @error
  2145. if(size < 1) {
  2146. msg.prefix(player, "§cError", "/error ...");
  2147. msg(player, "§c - list §rLists all errors");
  2148. msg(player, "§c - clear §rDeletes all errors");
  2149. goto("wait");
  2150. }
  2151. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2152. if(arg0 == "list") {
  2153. error_size = error.getSize();
  2154. if(error_size == 0) {
  2155. msg.prefix(player, "§cError", "No errors existing.");
  2156. goto("wait");
  2157. }
  2158. for(i = 0; i < error_size; i++) {
  2159. msg(player, error.getIndex(i));
  2160. }
  2161. goto("wait");
  2162. }
  2163. if(arg0 == "clear") {
  2164. error.clear();
  2165. msg.prefix(player, "§cError", "All errors deleted.");
  2166. goto("wait");
  2167. }
  2168. goto("wait");
  2169. @errordebug
  2170. if(size < 1) {
  2171. msg.prefix(player, "§cErrorDebugs", "/errordebug ...");
  2172. msg(player, "§c - list §rLists all errordebugs");
  2173. msg(player, "§c - clear §rDeletes all errordebugs");
  2174. msg(player, "§c - toggle §rToggles errordebugs");
  2175. goto("wait");
  2176. }
  2177. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2178. if(arg0 == "list") {
  2179. error_size = debug.getSize();
  2180. if(error_size == 0) {
  2181. msg.prefix(player, "§cErrorDebugs", "No errordebugs existing.");
  2182. goto("wait");
  2183. }
  2184. for(i = 0; i < error_size; i++) {
  2185. msg(player, debug.getIndex(i));
  2186. }
  2187. goto("wait");
  2188. }
  2189. if(arg0 == "clear") {
  2190. debug.clear();
  2191. msg.prefix(player, "§cErrorDebugs", "All errordebugs deleted.");
  2192. goto("wait");
  2193. }
  2194. if(arg0 == "toggle") {
  2195. new_value = !perm.has(player, "script.debug");
  2196. player.showDebug(player, new_value);
  2197. if(new_value) {
  2198. msg.prefix(player, prefix_commands, "Debug messages are now shown.");
  2199. } else {
  2200. msg.prefix(player, prefix_commands, "Debug messages are now hidden.");
  2201. }
  2202. goto("wait");
  2203. }
  2204. goto("wait");
  2205. @hat
  2206. item = living.getEquip(player, "hand");
  2207. if(item.getType(item) == "minecraft:air") {
  2208. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  2209. goto("wait");
  2210. }
  2211. living.setEquip(player, "head", item);
  2212. living.setEquip(player, "hand", read.item("minecraft:air"));
  2213. goto("wait");
  2214. @hawkeye
  2215. if(size == 0) {
  2216. @partyhelp
  2217. msg.prefix(player, prefix_party, "/hawkeye ...");
  2218. msg(player, "§5 - search <parameters> §rSearch for griefs");
  2219. msg(player, "§5 - rollback §rRollback last search");
  2220. msg(player, "§5 - undo §rUndos your last rollback");
  2221. msg(player, "§5 - tool §rGives you the Hawkeye Tool");
  2222. if(perm.has(player, "hawkeye.entries")) {
  2223. msg(player, "§5 - entries §rShows the amount of all entries");
  2224. }
  2225. msg(player, "");
  2226. msg(player, "§5 - Parameters:");
  2227. msg(player, "§5 - e:<event>");
  2228. msg(player, "§5 - p:<player>");
  2229. msg(player, "§5 - r:<radius>");
  2230. msg(player, "§5 - t:<timespan> e.g. \"5d,4h,20m\"");
  2231. goto("wait");
  2232. }
  2233. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2234. if(arg0 == "tool") {
  2235. player.giveItem(player, ha_tool);
  2236. goto("wait");
  2237. }
  2238. if(arg0 == "print") {
  2239. side = list.getIndex(args, 1);
  2240. if(!isDouble(side)) {
  2241. msg.prefix(player, prefix_commands, "Number expected.");
  2242. goto("wait");
  2243. }
  2244. if(side < 1) {
  2245. msg.prefix(player, prefix_commands, "Positive number expected.");
  2246. goto("wait");
  2247. }
  2248. list = hawkeye.getDataList(player);
  2249. if(list == null) {
  2250. goto("wait");
  2251. }
  2252. if(side > list.getSize(list)) {
  2253. msg.prefix(player, prefix_commands, "Invalid number.");
  2254. goto("wait");
  2255. }
  2256. hawkeye.print(player, list, side);
  2257. goto("wait");
  2258. }
  2259. if(arg0 == "search") {
  2260. if(size < 2) {
  2261. msg.prefix(player, prefix_commands, "/hawkeye search <parameters>");
  2262. goto("wait");
  2263. }
  2264. a = hawkeye.processInput(args, player);
  2265. if(text.class(a) == "String") {
  2266. msg.prefix(player, prefix_hawkeye, a);
  2267. goto("wait");
  2268. }
  2269. timeFrom = a[0];
  2270. timeTo = a[1];
  2271. player_loc = a[2];
  2272. radius = a[3];
  2273. events = a[4];
  2274. players = a[5];
  2275. l = hawkeye.getData(timeFrom, timeTo, player_loc, radius, events, players, "DESC");
  2276. if(text.class(l) == "String") {
  2277. msg.prefix(player, prefix_hawkeye, l);
  2278. hawkeye.setDataList(player, list.new());
  2279. goto("wait");
  2280. }
  2281. if(list.getSize(l) == 0) {
  2282. msg.prefix(player, prefix_hawkeye, "No results found.");
  2283. hawkeye.setDataList(player, list.new());
  2284. goto("wait");
  2285. }
  2286. hawkeye.setDataList(player, l);
  2287. hawkeye.print(player, l, 1);
  2288. goto("wait");
  2289. }
  2290. if(arg0 == "entries") {
  2291. if(!perm.has(player, "hawkeye.entries")) {
  2292. perm.no(player, "hawkeye.entries");
  2293. goto("wait");
  2294. }
  2295. msg.prefix(player, prefix_commands, concat("Anzahl an Hawkeye-Einträgen: " , text.number(hawkeye.getAmountOfAll())));
  2296. goto("wait");
  2297. }
  2298. if(arg0 == "rollback") {
  2299. l = hawkeye.getDataList(player);
  2300. if(l == null) {
  2301. msg.prefix(player, prefix_hawkeye, "No results to rollback.");
  2302. goto("wait");
  2303. }
  2304. if(list.getSize(l) == 0) {
  2305. msg.prefix(player, prefix_hawkeye, "No results to rollback.");
  2306. goto("wait");
  2307. }
  2308. if(list.getSize(l) >= 1000) {
  2309. msg.prefix(player, prefix_hawkeye, "Limit (1000) reached. Edit search parameters.");
  2310. goto("wait");
  2311. }
  2312. counter = hawkeye.rollback(l);
  2313. hawkeye.setUndoList(player, l);
  2314. msg.prefix(player, prefix_hawkeye, concat(text.number(counter), " blocks rollbacked."));
  2315. goto("wait");
  2316. }
  2317. if(arg0 == "undo") {
  2318. l = hawkeye.getUndoList(player);
  2319. if(l == null) {
  2320. msg.prefix(player, prefix_hawkeye, "No rollback to undo.");
  2321. goto("wait");
  2322. }
  2323. if(list.getSize(l) == 0) {
  2324. msg.prefix(player, prefix_hawkeye, "No rollback to undo.");
  2325. goto("wait");
  2326. }
  2327. hawkeye.undo(l);
  2328. hawkeye.setUndoList(player, list.new());
  2329. msg.prefix(player, prefix_hawkeye, "Undo done.");
  2330. goto("wait");
  2331. }
  2332. goto("wait");
  2333. @news
  2334. if(size < 1) {
  2335. msg.prefix(player, prefix_commands, "/news <text>");
  2336. goto("wait");
  2337. }
  2338. message = text.concatList(args, " ", 0, size - 1);
  2339. online_list = players.toList();
  2340. for(i = 0; i < list.getSize(online_list); i++) {
  2341. p = list.getIndex(online_list, i);
  2342. title.reset(p);
  2343. title.setSub(p, concat("by ", player_name));
  2344. title.send(p, "§cNews");
  2345. msg.prefix(p, "§4News", concat("§c", message));
  2346. }
  2347. goto("wait");
  2348. @spawn
  2349. if(size == 1) {
  2350. if(!perm.has(player, "teleport.other")) {
  2351. perm.no(player, "teleport.other");
  2352. goto("wait");
  2353. }
  2354. affectedname = list.getIndex(args, 0);
  2355. affectedplayer = read.player(affectedname);
  2356. if(affectedplayer == null) {
  2357. msg.prefix(player, prefix_commands, "This player is not online.");
  2358. goto("wait");
  2359. }
  2360. }
  2361. if(player.hasMinigame(affectedplayer)) {
  2362. if(size == 1) {
  2363. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  2364. goto("wait");
  2365. }
  2366. msg.prefix(player, prefix_commands, "You can't teleport now.");
  2367. goto("wait");
  2368. }
  2369. if(player.teleport(affectedplayer, serverspawn, true)) {
  2370. if(player == affectedplayer) {
  2371. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the spawn.");
  2372. } else {
  2373. affectedname = player.getName(affectedplayer);
  2374. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the spawn."));
  2375. }
  2376. }
  2377. goto("wait");
  2378. @rank
  2379. msg(player, getSpacer());
  2380. rank = getRank(player);
  2381. msg(player, concat("§6Current rank: §r[", rank, "§r]"));
  2382. msg(player, "Choose a rank:");
  2383. rank.showAll(player);
  2384. goto("wait");
  2385. @setrank
  2386. if(size < 2) {
  2387. msg.prefix(player, prefix_commands, "/setrank <player> <rank>");
  2388. goto("wait");
  2389. }
  2390. p_name = list.getIndex(args, 0);
  2391. if(!checkIfEverOnline(p_name)) {
  2392. msg.prefix(player, prefix_commands, "This player has never been online.");
  2393. goto("wait");
  2394. }
  2395. p = read.player(p_name);
  2396. if(p == null) {
  2397. msg.prefix(player, prefix_commands, "This player is not online.");
  2398. goto("wait");
  2399. }
  2400. p_name = player.getName(p);
  2401. rank = text.concatList(args, " ", 1, size - 1);
  2402. if(!perm.has(player, "setrank.other")) {
  2403. if(player.getName(player) != p_name) {
  2404. perm.no(player, "setrank.other");
  2405. goto("wait");
  2406. }
  2407. colored = text.startsWith(rank, "&", 0);
  2408. if(colored) {
  2409. rank = text.subString(rank, 1, text.length(rank));
  2410. }
  2411. a = rank.getRankArray();
  2412. a_size = array.getSize(a);
  2413. for(i = 0; i < a_size; i++) {
  2414. tech_name = a[i, 0];
  2415. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  2416. perm.no(p, tech_name);
  2417. goto("wait");
  2418. }
  2419. }
  2420. if(colored) {
  2421. rank = concat("&", rank);
  2422. }
  2423. }
  2424. if(text.length(rank) >= 30) {
  2425. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  2426. goto("wait");
  2427. }
  2428. rank = text.replace(rank, "&", "§");
  2429. setRank(p, rank);
  2430. player.setTabName(p);
  2431. msg.prefix(player, prefix_commands, concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  2432. goto("wait");
  2433. @nowb
  2434. if(player.isAfk(player)) {
  2435. player.setAfk(player, false);
  2436. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  2437. player.setTabName(player);
  2438. } else {
  2439. msg.prefix(player, prefix_commands, "You are not afk.");
  2440. }
  2441. goto("wait");
  2442. @afk
  2443. if(player.hasMinigame(player)) {
  2444. msg.prefix(player, prefix_commands, "No afk while in a minigame :P");
  2445. goto("wait");
  2446. }
  2447. nickname = player.getNickname(player);
  2448. if(player.isAfk(player)) {
  2449. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  2450. player.setAfk(player, false);
  2451. } else {
  2452. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  2453. player.setAfk(player, true);
  2454. if(!afk_loop_active) {
  2455. afk_loop_active = true;
  2456. sgoto(30, "afk_loop");
  2457. }
  2458. }
  2459. player.setTabName(player);
  2460. goto("wait");
  2461. @silentjoin
  2462. silentjoin = player.getSilentJoin(player);
  2463. if(silentjoin) {
  2464. player.setSilentJoin(player, false);
  2465. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  2466. } else {
  2467. player.setSilentJoin(player, true);
  2468. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  2469. }
  2470. goto("wait");
  2471. @jumpto
  2472. loc = player.getTarget(player, 100);
  2473. if(block.isAir(loc)) {
  2474. msg.prefix(player, prefix_commands, "No block in sight.");
  2475. goto("wait");
  2476. }
  2477. y = loc.getY(loc);
  2478. while(y < 254 && !block.isAir(loc)) {
  2479. loc.setY(loc, y);
  2480. y++;
  2481. }
  2482. player.teleport(player, loc.mod(loc, 0, 1, 0), true);
  2483. goto("wait");
  2484. @jailloop
  2485. size = list.getSize(jailed_list);
  2486. for(i = 0; i < size; i++) {
  2487. p_name = player.getName(list.getIndex(jailed_list, i));
  2488. showJail(p_name);
  2489. }
  2490. if(size > 0) {
  2491. jail_loop_active = true;
  2492. sgoto(5, "jailloop");
  2493. } else {
  2494. jail_loop_active = false;
  2495. }
  2496. goto("wait");
  2497. @coordsloop
  2498. list = players.toList();
  2499. size = list.getSize(list);
  2500. for(i = 0; i < size; i++) {
  2501. p = list.getIndex(list, i);
  2502. if(player.getShowcoords(p)) {
  2503. p_loc = entity.getLocation(p);
  2504. 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"))));
  2505. }
  2506. }
  2507. sgoto(10, "coordsloop");
  2508. goto("wait");
  2509. @afk_loop
  2510. if(!afk_loop_active) {
  2511. goto("wait");
  2512. }
  2513. afk_map = getScriptVar("afk_map");
  2514. iter = map.iterator(afk_map);
  2515. while(hasNext(iter)) {
  2516. element = next(iter);
  2517. yaw = map.getValue(element);
  2518. player = player.get(map.getKey(element));
  2519. if(player != null) {
  2520. if(yaw != loc.getYaw(entity.getLocation(player))) {
  2521. nickname = player.getNickname(player);
  2522. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  2523. remove(iter);
  2524. player.setAfk(player, false);
  2525. player.setTabName(player);
  2526. }
  2527. }
  2528. }
  2529. size = map.getSize(afk_map);
  2530. if(size > 0) {
  2531. afk_loop_active = true;
  2532. sgoto(30, "afk_loop");
  2533. } else {
  2534. afk_loop_active = false;
  2535. }
  2536. goto("wait");
  2537. @minute_loop
  2538. cal = time.new(time.getMillis());
  2539. timer_day = time.getDay(cal);
  2540. if(old_timer_day == null) {
  2541. old_timer_day = timer_day;
  2542. }
  2543. if(timer_day != old_timer_day) {
  2544. old_timer_day = timer_day;
  2545. //Tageswechsel
  2546. decreaseHomeBoost();
  2547. }
  2548. sgoto(1200, "minute_loop");
  2549. goto("wait");
  2550. @afk_checker_loop
  2551. online_list = players.toList();
  2552. iter = list.iterator(online_list);
  2553. while(hasNext(iter)) {
  2554. uuid = next(iter);
  2555. p = player.get(uuid);
  2556. if(player.hasMinigame(p)) {
  2557. continue;
  2558. }
  2559. yaw = loc.getYaw(entity.getLocation(p));
  2560. a = map.get(afk_checker_map, uuid);
  2561. if(a == null) {
  2562. a = array.new(2);
  2563. a[0] = yaw;
  2564. a[1] = 0;
  2565. map.add(afk_checker_map, uuid, a);
  2566. continue;
  2567. }
  2568. last_yaw = a[0];
  2569. counter = a[1];
  2570. if(last_yaw == yaw) {
  2571. counter++;
  2572. } else {
  2573. counter = 0;
  2574. }
  2575. a[0] = yaw;
  2576. a[1] = counter;
  2577. map.add(afk_checker_map, uuid, a);
  2578. if(counter == 5) {
  2579. nickname = player.getNickname(p);
  2580. if(player.isAfk(p)) {
  2581. continue;
  2582. }
  2583. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  2584. player.setAfk(p, true);
  2585. player.setTabName(p);
  2586. if(!afk_loop_active) {
  2587. afk_loop_active = true;
  2588. sgoto(30, "afk_loop");
  2589. }
  2590. }
  2591. }
  2592. sgoto(1200, "afk_checker_loop");
  2593. goto("wait");
  2594. @pvp
  2595. if(size == 0) {
  2596. if(hasPvpOn(player)) {
  2597. mode = "off";
  2598. } else {
  2599. mode = "on";
  2600. }
  2601. } elseif(size == 1) {
  2602. mode = list.getIndex(args, 0);
  2603. if(!(mode == "on" || mode == "off")) {
  2604. goto("pvphelp");
  2605. }
  2606. } elseif(size == 2) {
  2607. if(!perm.has(player, "pvp.other")) {
  2608. perm.no(player, "pvp.other");
  2609. goto("wait");
  2610. }
  2611. mode = list.getIndex(args, 0);
  2612. if(!(mode == "on" || mode == "off")) {
  2613. goto("pvphelp");
  2614. }
  2615. affectedname = list.getIndex(args, 1);
  2616. if(!checkIfEverOnline(affectedname)) {
  2617. msg.prefix(player, prefix_commands, "This player has never been online.");
  2618. goto("wait");
  2619. }
  2620. affectedplayer = read.player(affectedname);
  2621. if(affectedplayer == null) {
  2622. msg.prefix(player, prefix_commands, "This player is not online.");
  2623. goto("wait");
  2624. }
  2625. } else {
  2626. @pvphelp
  2627. if(perm.has(player, "pvp.other")) {
  2628. msg.prefix(player, prefix_commands, "/pvp [on/off] [player]");
  2629. } else {
  2630. msg.prefix(player, prefix_commands, "/pvp [on/off]");
  2631. }
  2632. goto("wait");
  2633. }
  2634. if(mode == "on") {
  2635. setPvp(affectedplayer, true);
  2636. msg.prefix(affectedplayer, prefix_commands, "You have enabled PvP!");
  2637. if(affectedplayer != player) {
  2638. affectedname = player.getName(affectedplayer);
  2639. msg.prefix(player, prefix_commands, concat(affectedname, " has now enabled PvP!"));
  2640. }
  2641. } else {
  2642. setPvp(affectedplayer, false);
  2643. msg.prefix(affectedplayer, prefix_commands, "You have PvP disabled!");
  2644. if(affectedplayer != player) {
  2645. affectedname = player.getName(affectedplayer);
  2646. msg.prefix(player, prefix_commands, concat(affectedname, " has now disabled PvP!"));
  2647. }
  2648. }
  2649. goto("wait");
  2650. @suicide
  2651. if(size < 0 || size > 1) {
  2652. msg.prefix(player, prefix_commands, "/suicide [player]");
  2653. goto("wait");
  2654. }
  2655. if(size == 1) {
  2656. if(!perm.has(player, "suicide.other")) {
  2657. perm.no(player, "suicide.other");
  2658. goto("wait");
  2659. }
  2660. affectedname = list.getIndex(args, 0);
  2661. affectedplayer = read.player(affectedname);
  2662. if(affectedplayer == null) {
  2663. msg.prefix(player, prefix_commands, "This player is not online.");
  2664. goto("wait");
  2665. }
  2666. }
  2667. if(affectedplayer != player) {
  2668. affectedname = player.getName(affectedplayer);
  2669. msg.prefix(player, prefix_commands, concat(affectedname, " has been killed."));
  2670. msg.prefix(affectedplayer, prefix_commands, concat("You have been killed by ", player_name, "."));
  2671. } else {
  2672. msg.prefix(affectedplayer, prefix_commands, "You killed yourself.");
  2673. }
  2674. living.damage(affectedplayer, 1000);
  2675. goto("wait");
  2676. @nickname
  2677. if(size < 1) {
  2678. msg.prefix(player, "§eNickname", "/nickname ...");
  2679. msg(player, "§e - <name> ", "Sets a nickname");
  2680. msg(player, "§e - remove ", "Removes a nickname");
  2681. goto("wait");
  2682. }
  2683. nickname = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  2684. if(nickname == "remove") {
  2685. player.removeNickName(player);
  2686. msg.prefix(player, prefix_commands, concat("Your nickname was removed."));
  2687. } else {
  2688. player.setNickName(player, nickname);
  2689. msg.prefix(player, prefix_commands, concat("Your nickname was changed to ", nickname, "§r."));
  2690. }
  2691. player.setTabName(player);
  2692. player.setHeadName(player);
  2693. goto("wait");
  2694. @iteminfo
  2695. item = living.getEquip(player, "hand");
  2696. text = text.item(item);
  2697. text = text.replace(text, "\"", "\\\"");
  2698. msg(player, text.clipBoard(text, text));
  2699. goto("wait");
  2700. @perm
  2701. if(size == 0) {
  2702. @perm_syntax
  2703. msg.prefix(player, prefix_perms, "§r/perm ...");
  2704. if(perm.has(player, "perm.give")) {
  2705. msg(player, "§6 - give <player> <perm>");
  2706. }
  2707. if(perm.has(player, "perm.remove")) {
  2708. msg(player, "§6 - remove <player> <perm>");
  2709. }
  2710. if(perm.has(player, "perm.removeall")) {
  2711. msg(player, "§6 - removeall <player>");
  2712. }
  2713. if(perm.has(player, "perm.list")) {
  2714. msg(player, "§6 - list <player>");
  2715. }
  2716. if(perm.has(player, "perm.toggle")) {
  2717. msg(player, "§6 - toggle");
  2718. }
  2719. goto("wait");
  2720. }
  2721. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2722. if(arg0 == "give") {
  2723. if(!perm.has(player, "perm.give")) {
  2724. perm.no(player, "perm.give");
  2725. goto("wait");
  2726. }
  2727. if(size != 3) {
  2728. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  2729. } else {
  2730. p_name = list.getIndex(args, 1);
  2731. perm = list.getIndex(args, 2);
  2732. if(!checkIfEverOnline(p_name)) {
  2733. msg.prefix(player, prefix_perms, "This player has never been online.");
  2734. goto("wait");
  2735. }
  2736. if(!perm.isGroupName(perm)) {
  2737. msg.prefix(player, prefix_perms, "This is not a permission group.");
  2738. goto("wait");
  2739. }
  2740. if(!perm.has(player, "isAdmin")) {
  2741. if(perm == "admin" || perm == "mod" || perm == "bypass") {
  2742. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  2743. goto("wait");
  2744. }
  2745. }
  2746. p_uuid = player.getUuid(p_name);
  2747. p_id = player.getId(p_uuid);
  2748. p_name = player.getName(p_uuid);
  2749. perm_id = perm.getIdFromGroupname(perm);
  2750. if(player.hasPermGroup(p_id, perm_id)) {
  2751. msg.prefix(player, prefix_perms, "Perm already added.");
  2752. goto("wait");
  2753. }
  2754. if(isOnline(p_name)) {
  2755. p = read.player(p_name);
  2756. rank = perm.getRankFromGroupname(perm);
  2757. if(rank != null) {
  2758. offerRank(p, rank.getTechName(rank));
  2759. }
  2760. }
  2761. givePerm(p_id, perm_id);
  2762. msg.prefix(player, prefix_perms, concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  2763. }
  2764. goto("wait");
  2765. }
  2766. if(arg0 == "remove") {
  2767. if(!perm.has(player, "perm.remove")) {
  2768. perm.no(player, "perm.remove");
  2769. goto("wait");
  2770. }
  2771. if(size != 3) {
  2772. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  2773. } else {
  2774. p_name = list.getIndex(args, 1);
  2775. perm = list.getIndex(args, 2);
  2776. if(!checkIfEverOnline(p_name)) {
  2777. msg.prefix(player, prefix_perms, "This player has never been online.");
  2778. goto("wait");
  2779. }
  2780. if(!perm.isGroupName(perm)) {
  2781. msg.prefix(player, prefix_perms, "This is not a permission group.");
  2782. goto("wait");
  2783. }
  2784. if(!perm.has(player, "isAdmin")) {
  2785. if(perm == "admin" || perm == "mod" || perm == "bypass") {
  2786. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  2787. goto("wait");
  2788. }
  2789. }
  2790. p_uuid = player.getUuid(p_name);
  2791. p_id = player.getId(p_uuid);
  2792. p_name = player.getName(p_uuid);
  2793. //Wenn marvinius eine Permission entfernt wird, wird dies blockiert, ausgenommen er tut dies selbst
  2794. player_id = player.getId(player);
  2795. if(player_id != 2) {
  2796. if(p_id == 2) {
  2797. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  2798. goto("wait");
  2799. }
  2800. }
  2801. perm_id = perm.getIdFromGroupname(perm);
  2802. if(!player.hasPermGroup(p_id, perm_id)) {
  2803. msg.prefix(player, prefix_perms, "This player doesn't have that perm.");
  2804. goto("wait");
  2805. }
  2806. removePerm(p_id, perm_id);
  2807. msg.prefix(player, prefix_perms, concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  2808. }
  2809. goto("wait");
  2810. }
  2811. if(arg0 == "removeall") {
  2812. if(!perm.has(player, "perm.removeall")) {
  2813. perm.no(player, "perm.removeall");
  2814. goto("wait");
  2815. }
  2816. if(size != 2) {
  2817. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  2818. } else {
  2819. p_name = list.getIndex(args, 1);
  2820. if(!checkIfEverOnline(p_name)) {
  2821. msg.prefix(player, prefix_perms, "This player has never been online.");
  2822. goto("wait");
  2823. }
  2824. //Wenn marvinius Permissions entfernt werden, wird dies blockiert, ausgenommen er tut dies selbst
  2825. p_id = player.getId(player.getUuid(p_name));
  2826. player_id = player.getId(player);
  2827. if(player_id != 2) {
  2828. if(p_id == 2) {
  2829. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  2830. goto("wait");
  2831. }
  2832. }
  2833. removeAllPerms(p_id);
  2834. msg.prefix(player, prefix_perms, concat("All perms of §7", p_name, " §rwere removed."));
  2835. }
  2836. goto("wait");
  2837. }
  2838. if(arg0 == "list") {
  2839. if(!perm.has(player, "perm.list")) {
  2840. perm.no(player, "perm.list");
  2841. goto("wait");
  2842. }
  2843. if(size != 2) {
  2844. msg.prefix(player, prefix_perms, "/perm list <player>");
  2845. } else {
  2846. p_name = list.getIndex(args, 1);
  2847. if(!checkIfEverOnline(p_name)) {
  2848. msg.prefix(player, prefix_perms, "This player has never been online.");
  2849. goto("wait");
  2850. }
  2851. p_id = player.getId(player.getUuid(p_name));
  2852. permslist = getPermsFromPlayer(p_id);
  2853. listsize = list.getSize(permslist);
  2854. if(listsize == 0) {
  2855. msg.prefix(player, prefix_perms, "No permissions found.");
  2856. } else {
  2857. msg.prefix(player, prefix_perms, p_name);
  2858. for(i = 0; i < listsize; i++) {
  2859. msg(player, " - ", perm.getNameFromId(list.getIndex(permslist, i)));
  2860. }
  2861. }
  2862. }
  2863. goto("wait");
  2864. }
  2865. if(arg0 == "toggle") {
  2866. if(!perm.has(player, "perm.toggle")) {
  2867. perm.no(player, "perm.toggle");
  2868. goto("wait");
  2869. }
  2870. player_id = player.getId(player);
  2871. if(perm.has(player, "pseudoPerm")) {
  2872. reloadAllPerms(player_id);
  2873. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  2874. } else {
  2875. removeAllPermsTemporarly(player_id);
  2876. msg.prefix(player, prefix_commands, "Have fun as a user.");
  2877. }
  2878. goto("wait");
  2879. }
  2880. goto("perm_syntax");
  2881. @allsounds
  2882. if(size == 0) {
  2883. msg.prefix(player, prefix_commands, "§r/allsounds...");
  2884. msg(player, "§e - start");
  2885. msg(player, "§e - stop");
  2886. goto("wait");
  2887. }
  2888. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2889. if(arg0 == "start") {
  2890. if(!map.exists(sounds_map)) {
  2891. sounds_map = map.new();
  2892. }
  2893. player_uuid = player.getUuid(player);
  2894. script_id = map.get(sounds_map, player_uuid);
  2895. if(script_id != null) {
  2896. script = script.getFromId(script_id);
  2897. if(script != null) {
  2898. msg.prefix(player, prefix_commands, "Sounds already started.");
  2899. goto("wait");
  2900. }
  2901. }
  2902. script = script.start("system/playsounds");
  2903. script.setVar(script, "player", player);
  2904. map.add(sounds_map, player.getUuid(player), script.getId(script));
  2905. msg.prefix(player, prefix_commands, "Sounds started.");
  2906. goto("wait");
  2907. }
  2908. if(arg0 == "stop") {
  2909. if(!map.exists(sounds_map)) {
  2910. sounds_map = map.new();
  2911. }
  2912. script_id = map.get(sounds_map, player.getUuid(player));
  2913. if(script_id == null) {
  2914. msg.prefix(player, prefix_commands, "No sounds playing.");
  2915. goto("wait");
  2916. }
  2917. script = script.getFromId(script_id);
  2918. if(script == null) {
  2919. msg.prefix(player, prefix_commands, "No sounds playing.");
  2920. goto("wait");
  2921. }
  2922. script.term(script);
  2923. msg.prefix(player, prefix_commands, "Sounds stopped.");
  2924. goto("wait");
  2925. }
  2926. goto("wait");
  2927. @weather
  2928. if(size == 0) {
  2929. @weather_syntax
  2930. msg.prefix(player, "§eWeather", "§r/weather ...");
  2931. msg(player, "§e - clear [duration]");
  2932. msg(player, "§e - rain [duration]");
  2933. msg(player, "§e - thunder [duration]");
  2934. goto("wait");
  2935. }
  2936. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2937. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  2938. if(size == 2) {
  2939. duration = list.getIndex(args, 1);
  2940. if(!isDouble(duration)) {
  2941. msg.prefix(player, prefix_commands, "Number expected.");
  2942. goto("wait");
  2943. }
  2944. if(duration < 0) {
  2945. msg.prefix(player, prefix_commands, "Positive number expected.");
  2946. goto("wait");
  2947. }
  2948. } else {
  2949. duration = 12000;
  2950. }
  2951. world = loc.getWorld(entity.getLocation(player));
  2952. if(arg0 == "clear") {
  2953. if(size > 2) {
  2954. msg.prefix(player, prefix_commands, "/weather clear [duration]");
  2955. goto("wait");
  2956. }
  2957. world.clearWeather(world, duration);
  2958. msg.prefix(player, prefix_commands, "Weather cleared.");
  2959. goto("wait");
  2960. }
  2961. if(arg0 == "rain") {
  2962. if(size > 2) {
  2963. msg.prefix(player, prefix_commands, "§r/weather rain [duration]");
  2964. goto("wait");
  2965. }
  2966. world.setRain(world, duration);
  2967. msg.prefix(player, prefix_commands, "Weather set to rain.");
  2968. goto("wait");
  2969. }
  2970. if(arg0 == "thunder") {
  2971. if(size > 2) {
  2972. msg.prefix(player, prefix_commands, "/weather thunder [duration]");
  2973. goto("wait");
  2974. }
  2975. world.setThunder(world, duration);
  2976. msg.prefix(player, prefix_commands, "Weather set to thunder.");
  2977. goto("wait");
  2978. }
  2979. goto("wait");
  2980. }
  2981. goto("weather_syntax");
  2982. @time
  2983. if(size == 0) {
  2984. @time_syntax
  2985. msg.prefix(player, "§eTime", "/time ...");
  2986. msg(player, "§e - set <time>");
  2987. msg(player, "§e - add <time>");
  2988. msg(player, "§e - <day / noon / night / midnight>");
  2989. goto("wait");
  2990. }
  2991. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2992. if(arg0 == "set") {
  2993. if(size != 2) {
  2994. msg.prefix(player, prefix_commands, "/time set <time>");
  2995. goto("wait");
  2996. }
  2997. setTime = list.getIndex(args, 1);
  2998. if(!isDouble(setTime)) {
  2999. msg.prefix(player, prefix_commands, "Number expected.");
  3000. goto("wait");
  3001. }
  3002. if(setTime < 0) {
  3003. msg.prefix(player, prefix_commands, "Positive number expected.");
  3004. goto("wait");
  3005. }
  3006. world = loc.getWorld(entity.getLocation(player));
  3007. while(setTime >= 24000) {
  3008. setTime -= 24000;
  3009. }
  3010. world.setTime(world, setTime);
  3011. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(setTime), "."));
  3012. goto("wait");
  3013. }
  3014. if(arg0 == "add") {
  3015. if(size != 2) {
  3016. msg.prefix(player, prefix_commands, "/time add <time>");
  3017. goto("wait");
  3018. }
  3019. addTime = list.getIndex(args, 1);
  3020. if(!isDouble(addTime)) {
  3021. msg.prefix(player, prefix_commands, "Number expected.");
  3022. goto("wait");
  3023. }
  3024. if(addTime < 0) {
  3025. msg.prefix(player, prefix_commands, "Positive number expected.");
  3026. goto("wait");
  3027. }
  3028. world = loc.getWorld(entity.getLocation(player));
  3029. newtime = world.getTime(world) + addTime;
  3030. while(newtime >= 24000) {
  3031. newtime -= 24000;
  3032. }
  3033. world.setTime(world, newtime);
  3034. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  3035. goto("wait");
  3036. }
  3037. newtime = null;
  3038. if(arg0 == "day") {
  3039. newtime = 1000;
  3040. } elseif(arg0 == "noon") {
  3041. newtime = 6000;
  3042. } elseif(arg0 == "night") {
  3043. newtime = 13000;
  3044. } elseif(arg0 == "midnight") {
  3045. newtime = 18000;
  3046. }
  3047. if(newtime != null) {
  3048. world = loc.getWorld(entity.getLocation(player));
  3049. world.setTime(world, newtime);
  3050. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  3051. goto("wait");
  3052. }
  3053. goto("time_syntax");
  3054. @gamerule
  3055. world = loc.getWorld(entity.getLocation(player));
  3056. if(size == 0) {
  3057. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  3058. goto("wait");
  3059. }
  3060. gamerule_string = list.getIndex(args, 0);
  3061. gamerule_key = gamerule.getKey(gamerule_string);
  3062. if(gamerule_key == null) {
  3063. msg.prefix(player, prefix_commands, "Gamerule doesn't exist.");
  3064. goto("wait");
  3065. }
  3066. gamerule_value = gamerule.getValue(world, gamerule_key);
  3067. if(size == 1) {
  3068. if(gamerule.isBool(gamerule_value)) {
  3069. value = gamerule.getBool(gamerule_value);
  3070. } elseif(gamerule.isInt(gamerule_value)) {
  3071. value = text.number(gamerule.getInt(gamerule_value));
  3072. } else {
  3073. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  3074. goto("wait");
  3075. }
  3076. msg.prefix(player, prefix_commands, concat(gamerule_string, " ", value));
  3077. goto("wait");
  3078. }
  3079. if(size == 2) {
  3080. if(!perm.has(player, "gamerule.write")) {
  3081. perm.no(player, "gamerule.write");
  3082. goto("wait");
  3083. }
  3084. value = list.getIndex(args, 1);
  3085. if(gamerule.isBool(gamerule_value)) {
  3086. if(!isBool(value)) {
  3087. msg.prefix(player, prefix_commands, "Boolean expected.");
  3088. goto("wait");
  3089. }
  3090. gamerule.setBool(gamerule_value, value);
  3091. } elseif(gamerule.isInt(gamerule_value)) {
  3092. if(!isDouble(value)) {
  3093. msg.prefix(player, prefix_commands, "Number expected.");
  3094. goto("wait");
  3095. }
  3096. gamerule.setInt(gamerule_value, value);
  3097. value = text.number(value);
  3098. } else {
  3099. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  3100. goto("wait");
  3101. }
  3102. if(world.getName(world) == "overworld") {
  3103. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, "."));
  3104. } else {
  3105. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, " (not persistent)."));
  3106. }
  3107. goto("wait");
  3108. }
  3109. goto("wait");
  3110. @tip
  3111. if(size == 0) {
  3112. msg.prefix(player, prefix_tips, "§r/tip ...");
  3113. msg(player, "§e - list §rList all tips");
  3114. msg(player, "§e - add <tip> <text> §rAdds a tip");
  3115. msg(player, "§e - remove <tip> §rRemoves a tip");
  3116. msg(player, "§e - loop <tip> <boolean> §rTrue shows on tip loop");
  3117. msg(player, "§e - <tip> [player] §rSends a tip to all/a player");
  3118. goto("wait");
  3119. }
  3120. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3121. if(arg0 == "list") {
  3122. msg(player, "§r--==§eTipps§r==--");
  3123. list = tip.getAll();
  3124. if(list.getSize(list) == 0) {
  3125. msg.prefix(player, prefix_tips, "No tips available.");
  3126. goto("wait");
  3127. }
  3128. iter = iterator(list);
  3129. while(hasNext(iter)) {
  3130. a = next(iter);
  3131. tipp_key = a[0];
  3132. tipp_value = a[1];
  3133. tipp_loop = a[2];
  3134. if(tipp_loop) {
  3135. tipp_loop = concat("§a", tipp_loop);
  3136. } else {
  3137. tipp_loop = concat("§c", tipp_loop);
  3138. }
  3139. msg(player, concat(" ", tipp_loop, " §e", tipp_key, "§r : ", tipp_value));
  3140. }
  3141. goto("wait");
  3142. }
  3143. if(arg0 == "add") {
  3144. if(size < 3) {
  3145. msg.prefix(player, prefix_commands, "/tip add <name> <text>");
  3146. goto("wait");
  3147. }
  3148. tipp_key = list.getIndex(args, 1);
  3149. tipp_value = concatList(args, " ", 2, size - 1);
  3150. tipp_value = text.replace(tipp_value, "&", "§");
  3151. tipp.register(tipp_key, tipp_value);
  3152. msg.prefix(player, prefix_tips, "Tip added.");
  3153. goto("wait");
  3154. }
  3155. if(arg0 == "loop") {
  3156. if(size != 3) {
  3157. msg.prefix(player, prefix_commands, "/tip loop <tip> <boolean>");
  3158. goto("wait");
  3159. }
  3160. tipp_key = list.getIndex(args, 1);
  3161. tipp_value = tipp.get(tipp_key);
  3162. if(tipp_value == null) {
  3163. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3164. goto("wait");
  3165. }
  3166. boolean = list.getIndex(args, 2);
  3167. if(text.class(boolean) != "Boolean") {
  3168. msg.prefix(player, prefix_tips, "True or false expected.");
  3169. goto("wait");
  3170. }
  3171. if(boolean) {
  3172. tip.setLoop(tipp_key, boolean);
  3173. } else {
  3174. tip.setLoop(tipp_key, boolean);
  3175. }
  3176. msg.prefix(player, prefix_tips, "Tip settings changed.");
  3177. goto("wait");
  3178. }
  3179. if(arg0 == "remove") {
  3180. if(size != 2) {
  3181. msg.prefix(player, prefix_commands, "/tip remove <name>");
  3182. goto("wait");
  3183. }
  3184. tipp_key = list.getIndex(args, 1);
  3185. tip.remove(tipp_key);
  3186. msg.prefix(player, prefix_tips, "Tip removed.");
  3187. goto("wait");
  3188. }
  3189. tipp_key = arg0;
  3190. tipp_value = tipp.get(tipp_key);
  3191. if(tipp_value == null) {
  3192. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3193. goto("wait");
  3194. }
  3195. if(size == 1) {
  3196. p = "online";
  3197. } else {
  3198. p_name = list.getIndex(args, 1);
  3199. if(!isOnline(p_name)) {
  3200. msg.prefix(player, prefix_tips, "This player is not online.");
  3201. goto("wait");
  3202. }
  3203. p = read.player(p_name);
  3204. msg.prefix(player, prefix_tips, concat("Tip sent to §7", p_name, "§r."));
  3205. }
  3206. if(text.contains(tipp_value, "https://")) {
  3207. a = text.getLinkMessage(tipp_value);
  3208. msg_before = a[0];
  3209. msg_link = a[1];
  3210. msg_after = a[2];
  3211. msg(p, concat("§r[§e", player.getName(player), "§r] "), msg_before, msg_link, msg_after);
  3212. goto("wait");
  3213. }
  3214. msg(p, concat("§r[§e", player.getName(player), "§r] ", tipp_value));
  3215. goto("wait");
  3216. @help
  3217. if(size > 1) {
  3218. msg.prefix(player, prefix_commands, "/help [side]");
  3219. goto("wait");
  3220. }
  3221. //Auf Permission überprüfen
  3222. temp_list = list.new();
  3223. for(i = 0; i < list.getSize(command_list); i++) {
  3224. command = list.getIndex(command_list, i);
  3225. if(perm.has(player, command)) {
  3226. list.add(temp_list, command);
  3227. }
  3228. }
  3229. list.sort(temp_list);
  3230. temp_size = list.getSize(temp_list);
  3231. max_side = temp_size / 10;
  3232. if(size == 0) {
  3233. side = 1;
  3234. print_side = side - 1;
  3235. } else {
  3236. side = list.getIndex(args, 0);
  3237. if(!isDouble(side)) {
  3238. msg.prefix(player, prefix_commands, "/help [side]");
  3239. goto("wait");
  3240. }
  3241. print_side = side - 1;
  3242. if(print_side < 0 || print_side > max_side) {
  3243. msg.prefix(player, prefix_commands, concat("Möglich: 1 - ", text.number(math.roundDown(max_side + 1))));
  3244. goto("wait");
  3245. }
  3246. }
  3247. msg(player, concat("§a --- Help ", text.number(side), " ---"));
  3248. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  3249. if(i < temp_size) {
  3250. command = list.getIndex(temp_list, i);
  3251. command = text.hover(command, map.getOrDefault(command_map, command, ""));
  3252. msg(player, " /", command);
  3253. }
  3254. }
  3255. if(side == 1) {
  3256. backward = "§c<<Backward<<";
  3257. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  3258. } elseif(side > max_side) {
  3259. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  3260. forward = "§c>>Forward>>";
  3261. } else {
  3262. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  3263. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  3264. }
  3265. msg(player, backward, " ", forward);
  3266. goto("wait");
  3267. @cli
  3268. if(size != 1) {
  3269. msg.prefix(player, prefix_commands, "/cli <radius>");
  3270. goto("wait");
  3271. }
  3272. radius = list.getIndex(args, 0);
  3273. if(!isDouble(radius) || radius < 0) {
  3274. msg.prefix(player, prefix_commands, "Positive number expected.");
  3275. goto("wait");
  3276. }
  3277. entity.removeAll("net.minecraft.entity.item.ItemEntity", entity.getLocation(player), radius);
  3278. msg.prefix(player, prefix_commands, "Items removed.");
  3279. goto("wait");
  3280. @plough
  3281. if(size != 1) {
  3282. msg.prefix(player, prefix_commands, "/plough <radius>");
  3283. goto("wait");
  3284. }
  3285. radius = list.getIndex(args, 0);
  3286. if(!isDouble(radius)) {
  3287. msg.prefix(player, prefix_commands, "Number expected.");
  3288. goto("wait");
  3289. }
  3290. if(radius < 0) {
  3291. msg.prefix(player, prefix_commands, "Positive number expected.");
  3292. goto("wait");
  3293. }
  3294. center_loc = getBlockLocation(entity.getLocation(player));
  3295. for(x = radius * -1; x <= radius; x++) {
  3296. for(z = radius * -1; z <= radius; z++) {
  3297. for(y = radius * -1; y <= radius; y++) {
  3298. length = math.hypot(x, math.hypot(y, z));
  3299. if(length <= radius) {
  3300. mod_loc = loc.mod(center_loc, x, y, z);
  3301. block = block.get(mod_loc);
  3302. if(block.hasTag(dirt_tag, block) && block.getType(loc.mod(mod_loc, 0, 1, 0)) == "minecraft:air") {
  3303. block.set(mod_loc, "minecraft:farmland[moisture=7]");
  3304. }
  3305. }
  3306. }
  3307. }
  3308. }
  3309. msg.prefix(player, prefix_commands, "Field ploughed.");
  3310. goto("wait");
  3311. @plant
  3312. if(size != 1) {
  3313. msg.prefix(player, prefix_commands, "/plant <radius>");
  3314. goto("wait");
  3315. }
  3316. radius = list.getIndex(args, 0);
  3317. if(!isDouble(radius)) {
  3318. msg.prefix(player, prefix_commands, "Number expected.");
  3319. goto("wait");
  3320. }
  3321. if(radius < 0) {
  3322. msg.prefix(player, prefix_commands, "Positive number expected.");
  3323. goto("wait");
  3324. }
  3325. center_loc = getBlockLocation(entity.getLocation(player));
  3326. for(x = radius * -1; x <= radius; x++) {
  3327. for(z = radius * -1; z <= radius; z++) {
  3328. for(y = radius * -1; y <= radius; y++) {
  3329. length = math.hypot(x, math.hypot(y, z));
  3330. if(length <= radius) {
  3331. mod_loc = loc.mod(center_loc, x, y, z);
  3332. upper_loc = loc.mod(mod_loc, 0, 1, 0);
  3333. if(block.getType(mod_loc) == "minecraft:farmland" && block.getType(upper_loc) == "minecraft:air") {
  3334. block.set(upper_loc, "minecraft:wheat[age=7]");
  3335. }
  3336. }
  3337. }
  3338. }
  3339. }
  3340. msg.prefix(player, prefix_commands, "Field planted.");
  3341. goto("wait");
  3342. @grow
  3343. if(size != 1) {
  3344. msg.prefix(player, prefix_commands, "/grow <radius>");
  3345. goto("wait");
  3346. }
  3347. radius = list.getIndex(args, 0);
  3348. if(!isDouble(radius)) {
  3349. msg.prefix(player, prefix_commands, "Number expected.");
  3350. goto("wait");
  3351. }
  3352. if(radius < 0) {
  3353. msg.prefix(player, prefix_commands, "Positive number expected.");
  3354. goto("wait");
  3355. }
  3356. center_loc = getBlockLocation(entity.getLocation(player));
  3357. grow(center_loc, radius);
  3358. msg.prefix(player, prefix_commands, "Field grown.");
  3359. goto("wait");
  3360. @start
  3361. if(size != 1) {
  3362. @starthelp
  3363. msg.prefix(sender, prefix_commands, "/start ...");
  3364. msg(sender, " - ai");
  3365. msg(sender, " - chat");
  3366. msg(sender, " - commands");
  3367. msg(sender, " - creative");
  3368. msg(sender, " - damage");
  3369. msg(sender, " - doors");
  3370. msg(sender, " - fixitems");
  3371. msg(sender, " - friends");
  3372. msg(sender, " - games");
  3373. msg(sender, " - gemstones");
  3374. msg(sender, " - harvest");
  3375. msg(sender, " - hawkeye");
  3376. msg(sender, " - herobrine");
  3377. msg(sender, " - lectern");
  3378. msg(sender, " - loom");
  3379. msg(sender, " - mails");
  3380. msg(sender, " - mobarena");
  3381. msg(sender, " - perms");
  3382. msg(sender, " - playerdata");
  3383. msg(sender, " - pumpkin");
  3384. msg(sender, " - recipes");
  3385. msg(sender, " - scheduler");
  3386. msg(sender, " - shop");
  3387. msg(sender, " - sitting");
  3388. msg(sender, " - stats");
  3389. msg(sender, " - story");
  3390. msg(sender, " - survival");
  3391. msg(sender, " - ticket");
  3392. msg(sender, " - timber");
  3393. msg(sender, " - trader");
  3394. msg(sender, " - voxel");
  3395. goto("wait");
  3396. }
  3397. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3398. modTimer(-500);
  3399. if(arg0 == "ai") {
  3400. script = script.get("Ai");
  3401. if(script != null) {
  3402. script.term(script);
  3403. }
  3404. script.startNamed("Ai", "system/ai", "utils/u_general");
  3405. }
  3406. elseif(arg0 == "commands") {
  3407. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
  3408. if(script == null) {
  3409. snuvi.debug("Old commands script still active due to error in new script");
  3410. goto("wait");
  3411. }
  3412. script.term(script.get());
  3413. }
  3414. elseif(arg0 == "chat") {
  3415. script = script.get("Chat");
  3416. if(script != null) {
  3417. script.term(script);
  3418. }
  3419. script.startNamed("Chat", "utils/u_error", "system/chat", "utils/u_general");
  3420. }
  3421. elseif(arg0 == "creative") {
  3422. script = script.get("Creative");
  3423. if(script != null) {
  3424. script.term(script);
  3425. }
  3426. script.startNamed("Creative", "utils/u_error", "system/creative", "utils/u_general");
  3427. }
  3428. elseif(arg0 == "damage") {
  3429. script = script.get("Damage");
  3430. if(script != null) {
  3431. script.term(script);
  3432. }
  3433. script.startNamed("Damage", "utils/u_error", "system/damage", "utils/u_general");
  3434. }
  3435. elseif(arg0 == "doors") {
  3436. script = script.get("Doors");
  3437. if(script != null) {
  3438. script.term(script);
  3439. }
  3440. script.startNamed("Doors", "utils/u_error", "system/doors", "utils/u_general");
  3441. }
  3442. elseif(arg0 == "fixitems") {
  3443. script = script.get("Fixitems");
  3444. if(script != null) {
  3445. script.term(script);
  3446. }
  3447. script.startNamed("Fixitems", "utils/u_error", "system/fixitems", "utils/u_general");
  3448. }
  3449. elseif(arg0 == "games") {
  3450. script = script.get("Gamecenter");
  3451. if(script != null) {
  3452. script.term(script);
  3453. }
  3454. script.startNamed("Gamecenter", "utils/u_error", "system/gamecenter", "utils/u_general", "utils/u_games");
  3455. }
  3456. elseif(arg0 == "gemstones") {
  3457. script = script.get("Gemstones");
  3458. if(script != null) {
  3459. script.term(script);
  3460. }
  3461. script.startNamed("Gemstones", "utils/u_error", "survival/gemstones", "utils/u_general");
  3462. }
  3463. elseif(arg0 == "harvest") {
  3464. script = script.get("Harvest");
  3465. if(script != null) {
  3466. script.term(script);
  3467. }
  3468. script.startNamed("Harvest", "utils/u_error", "survival/harvest", "utils/u_general");
  3469. }
  3470. elseif(arg0 == "hawkeye") {
  3471. script = script.get("Hawkeye");
  3472. if(script != null) {
  3473. script.term(script);
  3474. }
  3475. script.startNamed("Hawkeye", "utils/u_error", "system/hawkeye", "utils/u_general");
  3476. }
  3477. elseif(arg0 == "herobrine") {
  3478. script = script.get("Herobrine");
  3479. if(script != null) {
  3480. script.term(script);
  3481. }
  3482. script.startNamed("Herobrine", "utils/u_error", "survival/herobrine", "utils/u_general");
  3483. }
  3484. elseif(arg0 == "lectern") {
  3485. script = script.get("Lectern");
  3486. if(script != null) {
  3487. script.term(script);
  3488. }
  3489. script.startNamed("Lectern", "utils/u_error", "survival/lectern", "utils/u_general");
  3490. }
  3491. elseif(arg0 == "loom") {
  3492. script = script.get("Loom");
  3493. if(script != null) {
  3494. script.term(script);
  3495. }
  3496. script.startNamed("Loom", "utils/u_error", "survival/loom", "utils/u_general");
  3497. }
  3498. elseif(arg0 == "perms") {
  3499. script.start("system/perms", "utils/u_general");
  3500. }
  3501. elseif(arg0 == "playerdata") {
  3502. script = script.get("Playerdata");
  3503. if(script != null) {
  3504. script.term(script);
  3505. }
  3506. script.startNamed("Playerdata", "utils/u_error", "system/player_data", "utils/u_general");
  3507. }
  3508. elseif(arg0 == "pumpkin") {
  3509. script = script.get("Pumpkin");
  3510. if(script != null) {
  3511. script.term(script);
  3512. }
  3513. script.startNamed("Pumpkin", "utils/u_error", "survival/pumpkin", "utils/u_general");
  3514. }
  3515. elseif(arg0 == "recipes") {
  3516. script = script.get("Recipes");
  3517. if(script != null) {
  3518. script.term(script);
  3519. }
  3520. script.startNamed("Recipes", "survival/recipes");
  3521. }
  3522. elseif(arg0 == "stats") {
  3523. script = script.get("Ranklist");
  3524. if(script != null) {
  3525. script.term(script);
  3526. }
  3527. script.startNamed("Ranklist", "utils/u_error", "system/ranklist", "utils/u_general", "utils/u_games");
  3528. }
  3529. elseif(arg0 == "scheduler") {
  3530. script = script.get("Scheduler");
  3531. if(script != null) {
  3532. script.term(script);
  3533. }
  3534. script.startNamed("Scheduler", "utils/u_error", "system/scheduler", "utils/u_general");
  3535. }
  3536. elseif(arg0 == "shop") {
  3537. script = script.get("Shops");
  3538. if(script != null) {
  3539. script.term(script);
  3540. }
  3541. script.startNamed("Shops", "utils/u_error", "system/chestshops", "utils/u_general");
  3542. }
  3543. elseif(arg0 == "mails") {
  3544. script = script.get("Mails");
  3545. if(script != null) {
  3546. script.term(script);
  3547. }
  3548. script.startNamed("Mails", "utils/u_error", "system/mailsystem", "utils/u_general");
  3549. }
  3550. elseif(arg0 == "mobarena") {
  3551. script = script.get("Mobarena");
  3552. if(script != null) {
  3553. script.term(script);
  3554. }
  3555. script.startNamed("Mobarena", "utils/u_error", "survival/mobarena", "utils/u_general");
  3556. }
  3557. elseif(arg0 == "ticket") {
  3558. script = script.get("Ticket");
  3559. if(script != null) {
  3560. script.term(script);
  3561. }
  3562. script.startNamed("Ticket", "utils/u_error", "system/tickets", "utils/u_general");
  3563. }
  3564. elseif(arg0 == "timber") {
  3565. script = script.get("Timber");
  3566. if(script != null) {
  3567. script.term(script);
  3568. }
  3569. script.startNamed("Timber", "utils/u_error", "survival/timber", "utils/u_general");
  3570. }
  3571. elseif(arg0 == "trader") {
  3572. script = script.get("Trader");
  3573. if(script != null) {
  3574. script.term(script);
  3575. }
  3576. script.startNamed("Trader", "utils/u_error", "survival/trader", "utils/u_general");
  3577. }
  3578. elseif(arg0 == "story") {
  3579. script = script.get("Story");
  3580. if(script != null) {
  3581. script.term(script);
  3582. }
  3583. script.startNamed("Story", "utils/u_error", "story/story", "utils/u_general");
  3584. script = script.get("QuestsAdmont");
  3585. if(script != null) {
  3586. script.term(script);
  3587. }
  3588. script.startNamed("QuestsAdmont", "utils/u_error", "story/admont/core", "utils/u_general", "utils/u_quest");
  3589. script = script.get("QuestsSchiffbruch");
  3590. if(script != null) {
  3591. script.term(script);
  3592. }
  3593. script.startNamed("QuestsSchiffbruch", "utils/u_error", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
  3594. }
  3595. elseif(arg0 == "sitting") {
  3596. script = script.get("Sitting");
  3597. if(script != null) {
  3598. script.term(script);
  3599. }
  3600. script.startNamed("Sitting", "utils/u_error", "system/sitting", "utils/u_general");
  3601. }
  3602. elseif(arg0 == "survival") {
  3603. script = script.get("Survival");
  3604. if(script != null) {
  3605. script.term(script);
  3606. }
  3607. script.startNamed("Survival", "utils/u_error", "survival/survival", "utils/u_general");
  3608. }
  3609. elseif(arg0 == "voxel") {
  3610. script = script.get("Voxel");
  3611. if(script != null) {
  3612. script.term(script);
  3613. }
  3614. script.startNamed("Voxel", "system/voxel");
  3615. }
  3616. else {
  3617. goto("starthelp");
  3618. }
  3619. goto("wait");
  3620. @senditem
  3621. if(size != 1) {
  3622. msg.prefix(player, prefix_commands, "/senditem <player>");
  3623. goto("wait");
  3624. }
  3625. item = living.getEquip(player, "hand");
  3626. if(item.getType(item) == "minecraft:air") {
  3627. msg.prefix(player, prefix_commands, "You need to hold an item in your hand.");
  3628. goto("wait");
  3629. }
  3630. p_name = list.getIndex(args, 0);
  3631. p_uuid = player.getUuid(p_name);
  3632. if(p_uuid == null) {
  3633. msg.prefix(player, prefix_commands, "This player has never been online.");
  3634. goto("wait");
  3635. }
  3636. p = read.player(p_name);
  3637. if(p == null) {
  3638. msg.prefix(player, prefix_commands, "This player is not online.");
  3639. goto("wait");
  3640. }
  3641. player.safeGiveItem(p, item);
  3642. player.removeItem(player, item);
  3643. goto("wait");
  3644. @top
  3645. player_loc = entity.getLocation(player);
  3646. y = 255;
  3647. loc.setY(player_loc, y);
  3648. while(y > 0 && block.isAir(player_loc)) {
  3649. loc.setY(player_loc, y);
  3650. y--;
  3651. }
  3652. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  3653. goto("wait");
  3654. @creative
  3655. crea_spawn = world.getCreativeSpawn();
  3656. world = loc.getWorld(crea_spawn);
  3657. if(world == null) {
  3658. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3659. goto("wait");
  3660. }
  3661. if(size > 1) {
  3662. msg.prefix(player, prefix_commands, "/story [player]");
  3663. goto("wait");
  3664. }
  3665. if(size == 1) {
  3666. affectedname = list.getIndex(args, 0);
  3667. affectedplayer = read.player(affectedname);
  3668. if(affectedplayer == null) {
  3669. msg.prefix(player, prefix_commands, "This player is not online.");
  3670. goto("wait");
  3671. }
  3672. if(!perm.has(player, "teleport.other")) {
  3673. perm.no(player, "teleport.other");
  3674. goto("wait");
  3675. }
  3676. }
  3677. if(player.hasMinigame(affectedplayer)) {
  3678. if(size == 1) {
  3679. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3680. goto("wait");
  3681. }
  3682. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3683. goto("wait");
  3684. }
  3685. if(size == 1) {
  3686. if(player != affectedplayer) {
  3687. affectedname = player.getName(affectedplayer);
  3688. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the creative world."));
  3689. }
  3690. }
  3691. if(player.teleport(affectedplayer, crea_spawn, true)) {
  3692. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the creative world.");
  3693. }
  3694. goto("wait");
  3695. @story
  3696. story_spawn = world.getStorySpawn();
  3697. world = loc.getWorld(story_spawn);
  3698. if(world == null) {
  3699. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3700. goto("wait");
  3701. }
  3702. if(size > 1) {
  3703. msg.prefix(player, prefix_commands, "/story [player]");
  3704. goto("wait");
  3705. }
  3706. if(size == 1) {
  3707. affectedname = list.getIndex(args, 0);
  3708. affectedplayer = read.player(affectedname);
  3709. if(affectedplayer == null) {
  3710. msg.prefix(player, prefix_commands, "This player is not online.");
  3711. goto("wait");
  3712. }
  3713. if(!perm.has(player, "teleport.other")) {
  3714. perm.no(player, "teleport.other");
  3715. goto("wait");
  3716. }
  3717. }
  3718. if(player.hasMinigame(affectedplayer)) {
  3719. if(size == 1) {
  3720. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3721. goto("wait");
  3722. }
  3723. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3724. goto("wait");
  3725. }
  3726. if(size == 1) {
  3727. if(player != affectedplayer) {
  3728. affectedname = player.getName(affectedplayer);
  3729. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the story world."));
  3730. }
  3731. }
  3732. if(player.teleport(affectedplayer, story_spawn, true)) {
  3733. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the story world.");
  3734. }
  3735. goto("wait");
  3736. @games
  3737. world = loc.getWorld(gamesspawn);
  3738. if(world == null) {
  3739. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3740. goto("wait");
  3741. }
  3742. if(size > 1) {
  3743. msg.prefix(player, prefix_commands, "/games [player]");
  3744. goto("wait");
  3745. }
  3746. if(size == 1) {
  3747. affectedname = list.getIndex(args, 0);
  3748. affectedplayer = read.player(affectedname);
  3749. if(affectedplayer == null) {
  3750. msg.prefix(player, prefix_commands, "This player is not online.");
  3751. goto("wait");
  3752. }
  3753. if(!perm.has(player, "teleport.other")) {
  3754. perm.no(player, "teleport.other");
  3755. goto("wait");
  3756. }
  3757. }
  3758. if(player.hasMinigame(affectedplayer)) {
  3759. if(size == 1) {
  3760. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3761. goto("wait");
  3762. }
  3763. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3764. goto("wait");
  3765. }
  3766. if(size == 1) {
  3767. if(player != affectedplayer) {
  3768. affectedname = player.getName(affectedplayer);
  3769. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the games world."));
  3770. }
  3771. }
  3772. if(player.teleport(affectedplayer, gamesspawn, true)) {
  3773. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the games world.");
  3774. }
  3775. goto("wait");
  3776. @bug
  3777. msg.prefix(player, prefix_commands, "Found a bug? Report it to marvinius with §b/mail marvinius <message>");
  3778. goto("wait");
  3779. @repair
  3780. item = living.getEquip(player, "hand");
  3781. if(item.getType(item) == "minecraft:air") {
  3782. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3783. goto("wait");
  3784. }
  3785. item.setDamage(item, 0);
  3786. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  3787. goto("wait");
  3788. @report
  3789. msg.prefix(player, prefix_commands, "Want to report a player?");
  3790. msg(player, " - §b/ticket <message>");
  3791. msg(player, " - §b/mail marvinius <message>");
  3792. goto("wait");
  3793. @playtime
  3794. if(size == 0) {
  3795. p_id = player.getId(player);
  3796. arg0 = player.getName(player);
  3797. } else {
  3798. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3799. if(arg0 == "year") {
  3800. if(!perm.has(player, "playtime.year")) {
  3801. perm.no(player, "playtime.year");
  3802. goto("wait");
  3803. }
  3804. calendar = time.new(time.getMillis());
  3805. now_month = time.getMonth(calendar);
  3806. now_year = time.getYear(calendar);
  3807. if(size == 1) {
  3808. year = now_year;
  3809. } else {
  3810. year = list.getIndex(args, 1);
  3811. if(!isDouble(year)) {
  3812. msg.prefix(player, prefix_commands, "Number expected.");
  3813. goto("wait");
  3814. }
  3815. if(year > now_year) {
  3816. year = now_year;
  3817. }
  3818. }
  3819. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3820. since_minutes = playtime.getTotalOnlineMinutes();
  3821. //Tabelle erstellen
  3822. table = table.new("§8", 4, 5, 5);
  3823. msg(player, table.getStart(table));
  3824. msg(player, table.get(table, text.number(year), "Playtime", "Change"));
  3825. msg(player, table.getMiddle(table));
  3826. //Erstes Mitternacht des gewählten Jahres festlegen
  3827. now_day = time.getDay(calendar);
  3828. time.nextDay(calendar);
  3829. midnight = time.from(calendar) - (time.getDaysBetween(1, 1, year, now_day, now_month, now_year) + 1) * 86400000;
  3830. //Monats-Spielzeit berechnen
  3831. temp_list = list.new();
  3832. list.add(temp_list, playtime.getInterval(midnight - time.getMonthDays(12, year - 1) * 86400000, midnight)); //Dezember des Vorjahres hinzufügen
  3833. for(i = 1; i <= 12; i++) {
  3834. midnight_2 = midnight + time.getMonthDays(i, now_year) * 86400000; //Alle Tage eines Monats * 24 Stunden
  3835. minutes = playtime.getInterval(midnight, midnight_2);
  3836. list.add(temp_list, minutes);
  3837. midnight = midnight_2;
  3838. if(i == now_month && year == now_year) {
  3839. minutes += since_minutes;
  3840. }
  3841. }
  3842. for(i = 1; i <= 12; i++) {
  3843. minutes = list.getIndex(temp_list, i);
  3844. hours = math.roundDown(minutes / 60);
  3845. mod_minutes = minutes % 60;
  3846. if(mod_minutes < 10) {
  3847. time_string = concat("§6", text.number(hours), ":0", text.number(mod_minutes), " h");
  3848. } else {
  3849. time_string = concat("§6", text.number(hours), ":", text.number(mod_minutes), " h");
  3850. }
  3851. pre_minutes = list.getIndex(temp_list, i - 1);
  3852. if(minutes >= pre_minutes) {
  3853. color = "§a+";
  3854. a = minutes;
  3855. b = pre_minutes;
  3856. } else {
  3857. color = "§c-";
  3858. a = pre_minutes;
  3859. b = minutes;
  3860. }
  3861. if(b == 0) {
  3862. change = "";
  3863. } else {
  3864. change = math.round(a / b * 100 - 100);
  3865. change = concat(color, text.number(change), " %");
  3866. }
  3867. msg(player, table.get(table, concat("§6", month.getShortName(i)), time_string, change));
  3868. if(i == now_month && year == now_year) {
  3869. break;
  3870. }
  3871. }
  3872. //Tabelle beenden
  3873. msg(player, table.getEnd(table));
  3874. goto("wait");
  3875. }
  3876. if(arg0 == "month") {
  3877. if(!perm.has(player, "playtime.month")) {
  3878. perm.no(player, "playtime.month");
  3879. goto("wait");
  3880. }
  3881. calendar = time.new(time.getMillis());
  3882. now_month = time.getMonth(calendar);
  3883. now_year = time.getYear(calendar);
  3884. year = now_year;
  3885. if(size == 1) {
  3886. month = now_month;
  3887. } else {
  3888. month = list.getIndex(args, 1);
  3889. if(!isDouble(month)) {
  3890. msg.prefix(player, prefix_commands, "Number expected.");
  3891. goto("wait");
  3892. }
  3893. if(month < 1) {
  3894. month = 1;
  3895. } elseif(month > 12) {
  3896. month = 12;
  3897. }
  3898. if(size == 3) {
  3899. year = list.getIndex(args, 2);
  3900. if(!isDouble(year)) {
  3901. msg.prefix(player, prefix_commands, "Number expected.");
  3902. goto("wait");
  3903. }
  3904. }
  3905. if(year > now_year ||(year >= now_year && month > now_month)) {
  3906. month = now_month;
  3907. year = now_year;
  3908. }
  3909. }
  3910. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3911. since_minutes = playtime.getTotalOnlineMinutes();
  3912. //Tabelle erstellen
  3913. table = table.new("§8", 4, 5, 5);
  3914. msg(player, table.getStart(table));
  3915. msg(player, table.get(table, month.getShortName(month), "Playtime", "Players"));
  3916. msg(player, table.getMiddle(table));
  3917. //Erstes Mitternacht des gewählten Monats festlegen
  3918. now_day = time.getDay(calendar);
  3919. time.nextDay(calendar);
  3920. midnight = time.from(calendar) - (time.getDaysBetween(1, month, year, now_day, now_month, now_year) + 1) * 86400000;
  3921. //Tages-Spielzeit berechnen
  3922. for(i = 1; i <= time.getMonthDays(month, year); i++) {
  3923. players = playtime.getPlayersPerInterval(midnight, midnight + 86400000);
  3924. minutes = playtime.getInterval(midnight, midnight + 86400000);
  3925. midnight += 86400000; //24 Stunden
  3926. if(i == now_day && month == now_month && year == now_year) {
  3927. minutes += since_minutes;
  3928. }
  3929. hours = math.roundDown(minutes / 60);
  3930. minutes = minutes % 60;
  3931. if(minutes < 10) {
  3932. time_string = concat("§6", text.number(hours), ":0", text.number(minutes), " h");
  3933. } else {
  3934. time_string = concat("§6", text.number(hours), ":", text.number(minutes), " h");
  3935. }
  3936. msg(player, table.get(table, concat("§6", text.number(i)), time_string, text.number(players)));
  3937. if(i == now_day && month == now_month && year == now_year) {
  3938. break;
  3939. }
  3940. }
  3941. //Tabelle beenden
  3942. msg(player, table.getEnd(table));
  3943. goto("wait");
  3944. }
  3945. if(arg0 == "all") {
  3946. msg(player, getSpacer());
  3947. msg.prefix(player, prefix_commands, "Server-Playtime");
  3948. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3949. since_minutes = playtime.getTotalOnlineMinutes();
  3950. now_time = time.getMillis();
  3951. //Spielzeit heute
  3952. calendar = time.new(now_time);
  3953. time.nextDay(calendar);
  3954. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3955. minutes = playtime.getInterval(midnight, now_time) + since_minutes;
  3956. hours = text.number(math.roundDown(minutes / 60));
  3957. minutes = text.number(minutes % 60);
  3958. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3959. //Spielzeit 30 Tage für alle Spieler
  3960. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3961. minutes = playtime.getInterval(oneMonthAgo, now_time) + since_minutes;
  3962. hours = text.number(math.roundDown(minutes / 60));
  3963. minutes = text.number(minutes % 60);
  3964. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3965. //Spielzeit gesamt
  3966. minutes = playtime.getTotal();
  3967. hours = text.number(math.roundDown(minutes / 60));
  3968. minutes = text.number(minutes % 60);
  3969. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3970. goto("wait");
  3971. }
  3972. if(!perm.has(player, "playtime.other")) {
  3973. perm.no(player, "playtime.other");
  3974. goto("wait");
  3975. }
  3976. }
  3977. if(!checkIfEverOnline(arg0)) {
  3978. msg.prefix(player, prefix_commands, "This player has never been online.");
  3979. goto("wait");
  3980. }
  3981. now_time = time.getMillis();
  3982. p_uuid = player.getUuid(arg0);
  3983. arg0 = player.getName(p_uuid);
  3984. p_id = player.getId(p_uuid);
  3985. msg(player, getSpacer());
  3986. msg.prefix(player, prefix_commands, concat("Playtime of ", player.getName(p_uuid)));
  3987. //Online seit
  3988. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  3989. if(isOnline(arg0)) {
  3990. since_hours = math.roundDown(since_minutes / 60);
  3991. mod_minutes = since_minutes % 60;
  3992. msg(player, concat("§aOnline since: §r", text.number(since_hours), " hours ", text.number(mod_minutes), " minutes"));
  3993. } else {
  3994. msg(player, "§6Status: ", "§cOffline");
  3995. }
  3996. //Spielzeit heute
  3997. calendar = time.new(now_time);
  3998. time.nextDay(calendar);
  3999. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  4000. minutes = playtime.getPlayerInterval(p_id, midnight, now_time) + since_minutes;
  4001. hours = text.number(math.roundDown(minutes / 60));
  4002. minutes = text.number(minutes % 60);
  4003. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  4004. //Spielzeit 30 Tage
  4005. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  4006. minutes = playtime.getPlayerInterval(p_id, oneMonthAgo, now_time) + since_minutes;
  4007. hours = text.number(math.roundDown(minutes / 60));
  4008. minutes = text.number(minutes % 60);
  4009. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  4010. //Spielzeit gesamt
  4011. minutes = playtime.getPlayerTotal(p_id);
  4012. hours = text.number(math.roundDown(minutes / 60));
  4013. minutes = text.number(minutes % 60);
  4014. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  4015. goto("wait");
  4016. @datatools
  4017. if(size == 0) {
  4018. @datatoolshelp
  4019. msg.prefix(player, prefix_datatools, "/datatools ...");
  4020. msg(player, "§6 - hide <name> §rHides wusi on an itemstack");
  4021. msg(player, "§6 - attribute <attribut> <slot> <double> <op> §rAdd an attribute to an item");
  4022. msg(player, "§6 - hide-entity §rHide an entity");
  4023. msg(player, "§6 - show-entity §rShow an entity");
  4024. msg(player, "§6 - name-entity <name> §rRename an entity");
  4025. msg(player, "§6 - name-visibility <boolean> §rShow name (not) permanent");
  4026. msg(player, "§6 - name-item <name> §rRename an item");
  4027. msg(player, "§6 - lore-item <line> <lore> §rSet an item lore");
  4028. msg(player, "§6 - print-entity §rPrint entities nbt-tag");
  4029. goto("wait");
  4030. }
  4031. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4032. if(arg0 == "hide") {
  4033. if(size < 2) {
  4034. msg.prefix(player, prefix_datatools, "/datatools hide <name>");
  4035. goto("wait");
  4036. }
  4037. item = living.getEquip(player, "hand");
  4038. if(item.getType(item) == "minecraft:air") {
  4039. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  4040. goto("wait");
  4041. }
  4042. name = text.concatList(args, " ", 1, size - 1);
  4043. if(item.hide(item, name)) {
  4044. msg.prefix(player, prefix_datatools, "You hided something.");
  4045. } else {
  4046. msg.prefix(player, prefix_datatools, "You can't hide that.");
  4047. }
  4048. goto("wait");
  4049. }
  4050. if(arg0 == "attribute") {
  4051. if(size < 5) {
  4052. msg.prefix(player, prefix_datatools, "/datatools attribute <attribut> <slot> <double> <op>");
  4053. goto("wait");
  4054. }
  4055. item = living.getEquip(player, "hand");
  4056. if(item.getType(item) == "minecraft:air") {
  4057. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  4058. goto("wait");
  4059. }
  4060. double = list.getIndex(args, 3);
  4061. if(!isDouble(double) || double < 0) {
  4062. msg.prefix(player, prefix_datatools, "Natural number expected.");
  4063. goto("wait");
  4064. }
  4065. attribut = concat("generic.", text.toLowerCase(list.getIndex(args, 1)));
  4066. if(!set.contains(attribut_set, attribut)) {
  4067. msg.prefix(player, prefix_datatools, "Unknown attribute.");
  4068. goto("wait");
  4069. }
  4070. slot = read.slot(list.getIndex(args, 2));
  4071. if(slot == null) {
  4072. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  4073. goto("wait");
  4074. }
  4075. operation = list.getIndex(args, 4);
  4076. if(operation == "ADDITION") {
  4077. operation = 0;
  4078. } elseif(operation == "MULTIPLY_BASE") {
  4079. operation = 1;
  4080. } elseif(operation == "MULTIPLY_TOTAL") {
  4081. operation = 2;
  4082. } else {
  4083. msg.prefix(player, prefix_datatools, "Incorrect operation.");
  4084. goto("wait");
  4085. }
  4086. item.addAttribute(item, attribut, slot, double, operation);
  4087. msg.prefix(player, prefix_datatools, "Attribute added.");
  4088. goto("wait");
  4089. }
  4090. if(arg0 == "name-item") {
  4091. if(size < 2) {
  4092. msg.prefix(player, prefix_datatools, "/datatools name-item <name>");
  4093. goto("wait");
  4094. }
  4095. item = living.getEquip(player, "hand");
  4096. if(item.getType(item) == "minecraft:air") {
  4097. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4098. goto("wait");
  4099. }
  4100. name = text.concatList(args, " ", 1, size - 1);
  4101. name = text.replace(name, "&", "§");
  4102. name = text.replace(name, "\\n", "\n");
  4103. item.setName(item, name);
  4104. msg.prefix(player, prefix_datatools, concat("Item renamed to ", name, "§r."));
  4105. goto("wait");
  4106. }
  4107. if(arg0 == "print-entity") {
  4108. templist = living.near(player, 3);
  4109. if(list.getSize(templist) == 0) {
  4110. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4111. goto("wait");
  4112. }
  4113. entity = list.getIndex(templist, 0);
  4114. txt_ent = text.entity(entity);
  4115. msg(player, text.clipBoard(txt_ent, txt_ent));
  4116. goto("wait");
  4117. }
  4118. if(arg0 == "lore-item") {
  4119. if(size < 3) {
  4120. msg.prefix(player, prefix_datatools, "/datatools lore-item <line> <lore>");
  4121. goto("wait");
  4122. }
  4123. item = living.getEquip(player, "hand");
  4124. if(item.getType(item) == "minecraft:air") {
  4125. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4126. goto("wait");
  4127. }
  4128. line = list.getIndex(args, 1);
  4129. if(!isDouble(line)) {
  4130. msg.prefix(player, prefix_datatools, "Number expected.");
  4131. goto("wait");
  4132. }
  4133. if(line < 0) {
  4134. msg.prefix(player, prefix_datatools, "Positive number expected.");
  4135. goto("wait");
  4136. }
  4137. lore = text.concatList(args, " ", 2, size - 1);
  4138. lore = text.replace(lore, "&", "§");
  4139. item.addLore(item, line, lore);
  4140. msg.prefix(player, prefix_datatools, "New lore added.");
  4141. goto("wait");
  4142. }
  4143. if(arg0 == "maxhealth") {
  4144. if(size < 2) {
  4145. msg.prefix(player, prefix_datatools, "/datatools maxhealth <value>");
  4146. goto("wait");
  4147. }
  4148. value = list.getIndex(args, 1);
  4149. if(!isDouble(value)) {
  4150. msg.prefix(player, prefix_datatools, "Number expected.");
  4151. goto("wait");
  4152. }
  4153. templist = living.near(player, 3);
  4154. if(list.getSize(templist) == 0) {
  4155. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4156. goto("wait");
  4157. }
  4158. entity = list.getIndex(templist, 0);
  4159. if(isPlayer(entity)) {
  4160. msg.prefix(player, prefix_datatools, "To players not usable.");
  4161. goto("wait");
  4162. }
  4163. living.setMaxHealth(entity, value);
  4164. msg.prefix(player, prefix_datatools, concat("Entity ", entity.getType(entity), " has now Maxhealth: ", living.getMaxHealth(entity), "§r."));
  4165. goto("wait");
  4166. }
  4167. if(arg0 == "name-entity") {
  4168. if(size < 2) {
  4169. msg.prefix(player, prefix_datatools, "§r/datatools name-entity <name>");
  4170. goto("wait");
  4171. }
  4172. templist = living.near(player, 3);
  4173. if(list.getSize(templist) == 0) {
  4174. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4175. goto("wait");
  4176. }
  4177. entity = list.getIndex(templist, 0);
  4178. name = text.concatList(args, " ", 1, size - 1);
  4179. name = text.replace(name, "&", "§");
  4180. name = text.replace(name, "\\n", "\n");
  4181. entity.setName(entity, name, true);
  4182. msg.prefix(player, prefix_datatools, concat("Entity renamed to ", name, "§r."));
  4183. goto("wait");
  4184. }
  4185. if(arg0 == "name-visibility") {
  4186. if(size != 2) {
  4187. msg.prefix(player, prefix_datatools, "§r/datatools name-visibility <boolean>");
  4188. goto("wait");
  4189. }
  4190. templist = living.near(player, 3);
  4191. if(list.getSize(templist) == 0) {
  4192. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4193. goto("wait");
  4194. }
  4195. entity = list.getIndex(templist, 0);
  4196. boolean = list.getIndex(args, 1);
  4197. name = entity.getName(entity);
  4198. entity.setName(entity, name, boolean);
  4199. msg.prefix(player, prefix_datatools, "Name-Visibility changed.");
  4200. goto("wait");
  4201. }
  4202. if(arg0 == "hide-entity") {
  4203. if(size != 1) {
  4204. msg.prefix(player, prefix_datatools, "§r/datatools hide-entity");
  4205. goto("wait");
  4206. }
  4207. templist = living.near(player, 3);
  4208. if(list.getSize(templist) == 0) {
  4209. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4210. goto("wait");
  4211. }
  4212. entity = list.getIndex(templist, 0);
  4213. entity.setInvisible(entity, true);
  4214. msg.prefix(player, prefix_datatools, "Entity is now hidden.");
  4215. goto("wait");
  4216. }
  4217. if(arg0 == "show-entity") {
  4218. if(size != 1) {
  4219. msg.prefix(player, prefix_datatools, "§r/datatools show-entity");
  4220. goto("wait");
  4221. }
  4222. templist = living.near(player, 3);
  4223. if(list.getSize(templist) == 0) {
  4224. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4225. goto("wait");
  4226. }
  4227. entity = list.getIndex(templist, 0);
  4228. entity.setInvisible(entity, false);
  4229. msg.prefix(player, prefix_datatools, "Entity is now visible.");
  4230. goto("wait");
  4231. }
  4232. goto("datatoolshelp");
  4233. @human
  4234. if(size == 0) {
  4235. @humanhelp
  4236. msg.prefix(player, prefix_human, "/human ...");
  4237. msg(player, concat("§6 - spawn §rSpawnt einen Human"));
  4238. msg(player, concat("§6 - set <name> §rSetzt den Skin"));
  4239. msg(player, concat("§6 - setuuid <uuid> §rSetzt den Skin"));
  4240. msg(player, concat("§6 - name §rSetzt den Namen"));
  4241. msg(player, concat("§6 - kill §rTötet einen Human"));
  4242. msg(player, concat("§6 - size <scale> §rSetzt die Größenskalierung"));
  4243. msg(player, concat("§6 - steve §rSchaltet auf Steve Skin"));
  4244. msg(player, concat("§6 - alex §rSchaltet auf Alex Skin"));
  4245. msg(player, concat("§6 - statue <bool> §rToggles between statue"));
  4246. goto("wait");
  4247. }
  4248. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4249. if(arg0 == "spawn") {
  4250. human.spawn(entity.getLocation(player));
  4251. msg.prefix(player, prefix_human, "Human gespawnt.");
  4252. goto("wait");
  4253. }
  4254. player_loc = entity.getLocation(player);
  4255. human = entity.get(player_loc, 3, "me.km.entities.EntityHuman");
  4256. if(human == null) {
  4257. msg.prefix(player, prefix_human, "Zu weit weg vom Human.");
  4258. goto("wait");
  4259. }
  4260. if(arg0 == "set") {
  4261. if(size == 2) {
  4262. name = list.getIndex(args, 1);
  4263. human.setSkin(human, name);
  4264. msg.prefix(player, prefix_human, "Skin gesetzt.");
  4265. goto("wait");
  4266. }
  4267. }
  4268. elseif(arg0 == "setuuid") {
  4269. if(size == 2) {
  4270. uuid = list.getIndex(args, 1);
  4271. human.setSkin(human, uuid);
  4272. msg.prefix(player, prefix_human, "Skin gesetzt.");
  4273. goto("wait");
  4274. }
  4275. }
  4276. elseif(arg0 == "name") {
  4277. if(size > 1) {
  4278. name = text.concatList(args, " ", 1, size - 1);
  4279. name = text.replace(name, "&", "§");
  4280. name = text.replace(name, "\\n", "\n");
  4281. entity.setName(human, name, true);
  4282. msg.prefix(player, prefix_human, concat("Das Entity trägt nun den Namen ", name, "§r."));
  4283. goto("wait");
  4284. }
  4285. }
  4286. elseif(arg0 == "kill") {
  4287. entity.remove(human);
  4288. msg.prefix(player, prefix_human, "Human getötet.");
  4289. goto("wait");
  4290. }
  4291. elseif(arg0 == "size") {
  4292. if(size == 2) {
  4293. scale = list.getIndex(args, 1);
  4294. if(!isDouble(scale)) {
  4295. msg.prefix(player, prefix_human, "Number expected.");
  4296. goto("wait");
  4297. }
  4298. if(scale > 10) {
  4299. msg.prefix(player, prefix_human, "Maximal 10.");
  4300. scale = 10;
  4301. }
  4302. human.setScale(human, scale);
  4303. msg.prefix(player, prefix_human, "Größe verändert.");
  4304. goto("wait");
  4305. }
  4306. }
  4307. elseif(arg0 == "steve") {
  4308. human.setSlim(human, false);
  4309. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  4310. goto("wait");
  4311. }
  4312. elseif(arg0 == "alex") {
  4313. human.setSlim(human, true);
  4314. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  4315. goto("wait");
  4316. }
  4317. elseif(arg0 == "statue") {
  4318. if(size == 1) {
  4319. bool = true;
  4320. } elseif(size == 2) {
  4321. bool = list.getIndex(args, 1);
  4322. if(bool != true && bool != false) {
  4323. bool = true;
  4324. }
  4325. }
  4326. human.setStatue(human, bool);
  4327. msg.prefix(player, prefix_human, "Human changed.");
  4328. goto("wait");
  4329. }
  4330. goto("humanhelp");
  4331. @answer
  4332. if(player.isMuted(player)) {
  4333. msg.prefix(player, "§6Commands", "You are muted.");
  4334. goto("wait");
  4335. }
  4336. if(size < 1) {
  4337. msg.prefix(sender, prefix_commands, "/answer <message>");
  4338. goto("wait");
  4339. }
  4340. player_uuid = player.getUuid(sender);
  4341. p_uuid = map.get(answer_map, player_uuid);
  4342. if(p_uuid == null) {
  4343. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  4344. goto("wait");
  4345. }
  4346. message = text.replace(text.concatList(text_args, " ", 0, size - 1), "&", "§");
  4347. if(text.startsWith(message, "https://", 0)) {
  4348. message = text.link(message, message);
  4349. } else {
  4350. message = text.concat("§e", message);
  4351. }
  4352. if(player.getId(p_uuid) == 18) {
  4353. msg(sender, "§6[ -> §cSERVER§6] ", message);
  4354. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  4355. } else {
  4356. p = player.get(p_uuid);
  4357. if(p == null) {
  4358. msg.prefix(sender, prefix_commands, "This player is not online.");
  4359. goto("wait");
  4360. }
  4361. msg(sender, concat("§6[§cme §6-> §c", player.getName(p)), "§6] ", message);
  4362. msg(p, concat("§6[§c", sender_name), " §6-> §cme§6] ", message);
  4363. }
  4364. map.add(answer_map, p_uuid, player_uuid);
  4365. map.add(answer_map, player_uuid, p_uuid);
  4366. goto("wait");
  4367. @msg
  4368. if(player.isMuted(player)) {
  4369. msg.prefix(player, "§6Commands", "You are muted.");
  4370. goto("wait");
  4371. }
  4372. if(size < 2) {
  4373. msg.prefix(sender, prefix_commands, "/msg <player> <message>");
  4374. goto("wait");
  4375. }
  4376. p_name = list.getIndex(args, 0);
  4377. p_uuid = player.getUuid(p_name);
  4378. if(p_uuid == null) {
  4379. msg.prefix(sender, prefix_commands, "Unknown player.");
  4380. goto("wait");
  4381. }
  4382. message = text.replace(text.concatList(text_args, " ", 1, size - 1), "&", "§");
  4383. if(text.startsWith(message, "https://", 0)) {
  4384. message = text.link(message, message);
  4385. } else {
  4386. message = text.concat("§e", message);
  4387. }
  4388. if(text.toUpperCase(p_name) == "SERVER") {
  4389. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  4390. msg(sender, "§6[ -> §cSERVER§6] ", message);
  4391. } else {
  4392. p = read.player(p_name);
  4393. if(p == null) {
  4394. msg.prefix(sender, prefix_commands, "This player is not online.");
  4395. goto("wait");
  4396. }
  4397. msg(p, concat("§6[§c", sender_name), " §6-> §cme§6] ", message);
  4398. msg(sender, concat("§6[§cme §6-> §c", player.getName(p)), "§6] ", message);
  4399. }
  4400. player_uuid = player.getUuid(sender);
  4401. map.add(answer_map, p_uuid, player_uuid);
  4402. map.add(answer_map, player_uuid, p_uuid);
  4403. goto("wait");
  4404. @list
  4405. list = players.toList();
  4406. size = list.getSize(list);
  4407. msg(sender, getSpacer());
  4408. if(size == 1) {
  4409. msg(sender, concat("§6There is ", text.number(size), " players online."));
  4410. } else {
  4411. msg(sender, concat("§6There are ", text.number(size), " players online."));
  4412. }
  4413. for(i = 0; i < size; i++) {
  4414. p = list.getIndex(list, i);
  4415. full_name = player.getFullName(p);
  4416. if(player.isAfk(p)) {
  4417. full_name = concat(full_name, " §5§o[Afk]");
  4418. }
  4419. msg(sender, full_name);
  4420. }
  4421. goto("wait");
  4422. @ass
  4423. if(size < 2) {
  4424. msg.prefix(player, prefix_commands, "§r/ass ...");
  4425. msg(player, " - set <name>");
  4426. msg(player, " - rename <name>");
  4427. msg(player, " - remove <radius>");
  4428. goto("wait");
  4429. }
  4430. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4431. if(arg0 == "set") {
  4432. name = text.concatList(args, " ", 1, size - 1);
  4433. name = text.replace(name, "&", "§");
  4434. name = text.replace(name, "\\n", "\n");
  4435. ent = entity.spawn("km:nobody", entity.getLocation(player), "{NoGravity:true}");
  4436. entity.setName(ent, name);
  4437. goto("wait");
  4438. }
  4439. if(arg0 == "rename") {
  4440. name = text.concatList(args, " ", 1, size - 1);
  4441. name = text.replace(name, "&", "§");
  4442. name = text.replace(name, "\\n", "\n");
  4443. ent_list = living.near(player, 5);
  4444. for(i = 0; i < list.getSize(ent_list); i++) {
  4445. ent = list.getIndex(ent_list, i);
  4446. if(entity.getType(ent) == "nobody") {
  4447. entity.setName(ent, name);
  4448. goto("wait");
  4449. }
  4450. }
  4451. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  4452. goto("wait");
  4453. }
  4454. if(arg0 == "remove") {
  4455. radius = list.getIndex(args, 1);
  4456. if(!isDouble(radius)) {
  4457. msg.prefix(player, prefix_commands, "Number expected.");
  4458. goto("wait");
  4459. }
  4460. if(radius < 0 || radius > 5) {
  4461. msg.prefix(player, prefix_commands, "§rRadius: 0-5");
  4462. goto("wait");
  4463. }
  4464. ent_list = living.near(player, radius);
  4465. for(i = 0; i < list.getSize(ent_list); i++) {
  4466. ent = list.getIndex(ent_list, i);
  4467. if(entity.getType(ent) == "nobody") {
  4468. entity.remove(ent);
  4469. msg.prefix(player, prefix_commands, "§rLufttext entfernt");
  4470. goto("wait");
  4471. }
  4472. }
  4473. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  4474. }
  4475. goto("wait");
  4476. @coords
  4477. target_loc = player.getTarget(player, 5, false, false);
  4478. targettype = block.getType(target_loc);
  4479. if(targettype == "minecraft:air") {
  4480. msg.prefix(player, prefix_commands, "You have to look at a block.");
  4481. goto("wait");
  4482. }
  4483. msg(player, getSpacer());
  4484. x = text.Number(loc.getX(target_loc));
  4485. y = text.Number(loc.getY(target_loc));
  4486. z = text.Number(loc.getZ(target_loc));
  4487. msg(player, "§6World: §r", world.getName(loc.getWorld(target_loc)));
  4488. msg(player, "§6Coords: §r", x, " / ", y, " / ", z);
  4489. msg(player, "§6Block: §r", targettype);
  4490. goto("wait");
  4491. @sign
  4492. if(size == 0) {
  4493. msg.prefix(player, prefix_commands, "/sign <1-4> [text]");
  4494. goto("wait");
  4495. }
  4496. target_loc = player.getTarget(player, 5, false, false);
  4497. block = block.get(target_loc);
  4498. if(!block.hasTag(sign_tag, block)) {
  4499. msg.prefix(player, prefix_commands, "Look at a sign.");
  4500. goto("wait");
  4501. }
  4502. line = list.getIndex(args, 0);
  4503. if(!isDouble(line)) {
  4504. msg.prefix(player, prefix_commands, "Number expected.");
  4505. goto("wait");
  4506. }
  4507. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  4508. msg.prefix(player, prefix_commands, "Number between 1 and 5 expected.");
  4509. goto("wait");
  4510. }
  4511. string = "";
  4512. if(size > 1) {
  4513. for(i = 1; i < size; i++) {
  4514. arg = list.getIndex(text_args, i);
  4515. if(i == 1) {
  4516. string = arg;
  4517. } else {
  4518. string = concat(string, " ", arg);
  4519. }
  4520. }
  4521. }
  4522. string = text.replace(string, "&", "§");
  4523. block.setSign(target_loc, line - 1, string);
  4524. goto("wait");
  4525. @head
  4526. if(size != 1) {
  4527. msg.prefix(player, prefix_commands, "/head <player>");
  4528. goto("wait");
  4529. }
  4530. name = list.getIndex(args, 0);
  4531. uuid = player.getUuid(name);
  4532. if(uuid == null) {
  4533. player.giveItem(player, read.item(concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}")));
  4534. } else {
  4535. player.giveItem(player, player.getHead(uuid, name));
  4536. }
  4537. goto("wait");
  4538. @mute
  4539. if(size < 1) {
  4540. msg.prefix(sender, prefix_commands, "/mute <player>");
  4541. goto("wait");
  4542. }
  4543. p_name = list.getIndex(args, 0);
  4544. if(!isOnline(p_name)) {
  4545. msg.prefix(sender, prefix_commands, "This player is not online.");
  4546. goto("wait");
  4547. }
  4548. p = read.player(p_name);
  4549. p_name = player.getName(p);
  4550. if(p_name == "marvinius") {
  4551. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4552. goto("wait");
  4553. }
  4554. msg("online", concat("§c", p_name, " was muted by ", sender_name, "."));
  4555. player.mute(p, true);
  4556. goto("wait");
  4557. @unmute
  4558. if(size < 1) {
  4559. msg.prefix(sender, prefix_commands, "/unmute <player>");
  4560. goto("wait");
  4561. }
  4562. p_name = list.getIndex(args, 0);
  4563. if(!isOnline(p_name)) {
  4564. msg.prefix(sender, prefix_commands, "This player is not online.");
  4565. goto("wait");
  4566. }
  4567. p = read.player(p_name);
  4568. p_name = player.getName(p);
  4569. if(p_name == "marvinius") {
  4570. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4571. goto("wait");
  4572. }
  4573. msg("online", concat("§c", p_name, " was unmuted by ", sender_name, "."));
  4574. player.mute(p, false);
  4575. goto("wait");
  4576. @kick
  4577. if(size < 1) {
  4578. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  4579. goto("wait");
  4580. }
  4581. p_name = list.getIndex(args, 0);
  4582. if(!isOnline(p_name)) {
  4583. msg.prefix(sender, prefix_commands, "This player is not online.");
  4584. goto("wait");
  4585. }
  4586. p = read.player(p_name);
  4587. p_name = player.getName(p);
  4588. if(p_name == "marvinius") {
  4589. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4590. goto("wait");
  4591. }
  4592. if(size > 1) {
  4593. reason = text.concatList(args, " ", 1, size - 1);
  4594. msg("online", concat("§c", p_name, " was kicked by ", sender_name, ": ", reason));
  4595. } else {
  4596. reason = "You got kicked";
  4597. msg("online", concat("§c", p_name, " was kicked by ", sender_name, "."));
  4598. }
  4599. ban.kick(p, reason);
  4600. goto("wait");
  4601. @silentkick
  4602. if(size < 1) {
  4603. msg.prefix(sender, prefix_commands, "/silentkick <player> [reason]");
  4604. goto("wait");
  4605. }
  4606. p_name = list.getIndex(args, 0);
  4607. if(!isOnline(p_name)) {
  4608. msg.prefix(sender, prefix_commands, "This player is not online.");
  4609. goto("wait");
  4610. }
  4611. p = read.player(p_name);
  4612. p_name = player.getName(p);
  4613. if(p_name == "marvinius") {
  4614. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4615. goto("wait");
  4616. }
  4617. if(size > 1) {
  4618. reason = text.concatList(args, " ", 1, size - 1);
  4619. msg(sender, concat("§cYou silently kicked ", p_name, ": ", reason));
  4620. } else {
  4621. reason = "You got kicked.";
  4622. msg(sender, concat("§cYou silently kicked ", p_name, "."));
  4623. }
  4624. ban.kick(p, reason);
  4625. goto("wait");
  4626. @warn
  4627. if(size != 1) {
  4628. msg.prefix(player, prefix_commands, "/warn <player>");
  4629. goto("wait");
  4630. }
  4631. p_name = list.getIndex(args, 0);
  4632. if(!isOnline(p_name)) {
  4633. msg.prefix(player, prefix_commands, "This player is not online.");
  4634. goto("wait");
  4635. }
  4636. p = read.player(p_name);
  4637. p_name = player.getName(p);
  4638. if(p_name == "marvinius") {
  4639. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  4640. goto("wait");
  4641. }
  4642. head.add(p, 0, sender_name, 0.4, 0.05, 0.2, 0.35);
  4643. title.setSub(p, "is watching you");
  4644. title.send(p, concat("§c", sender_name));
  4645. list.add(warninglist, p_name);
  4646. sgoto(100, "removeWarning");
  4647. msg.prefix(player, prefix_commands, "The player got warned.");
  4648. goto("wait");
  4649. @removeWarning
  4650. p_name = list.getIndex(warninglist, 0);
  4651. if(isOnline(p_name)) {
  4652. p = read.player(p_name);
  4653. head.remove(p, 0);
  4654. list.removeIndex(warninglist, 0);
  4655. }
  4656. goto("wait");
  4657. @ban
  4658. if(size < 1) {
  4659. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  4660. goto("wait");
  4661. }
  4662. p_name = list.getIndex(args, 0);
  4663. if(!checkIfEverOnline(p_name)) {
  4664. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4665. goto("wait");
  4666. }
  4667. p_name = player.getName(player.getUuid(p_name));
  4668. if(p_name == "marvinius") {
  4669. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4670. goto("wait");
  4671. }
  4672. if(size > 1) {
  4673. reason = text.concatList(args, " ", 1, size - 1);
  4674. msg("online", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  4675. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  4676. } else {
  4677. reason = "You got banned.";
  4678. msg("online", concat("§c", p_name, " got banned by ", sender_name, "."));
  4679. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, "."));
  4680. }
  4681. ban.add(player.getUuid(p_name), reason, sender_name);
  4682. if(isOnline(p_name)) {
  4683. p = read.player(p_name);
  4684. ban.kick(p, reason);
  4685. }
  4686. goto("wait");
  4687. @silentban
  4688. if(size < 1) {
  4689. msg.prefix(sender, prefix_commands, "/silentban <player> [reason]");
  4690. goto("wait");
  4691. }
  4692. p_name = list.getIndex(args, 0);
  4693. if(!checkIfEverOnline(p_name)) {
  4694. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4695. goto("wait");
  4696. }
  4697. p_name = player.getName(player.getUuid(p_name));
  4698. if(p_name == "marvinius") {
  4699. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4700. goto("wait");
  4701. }
  4702. if(size > 1) {
  4703. reason = text.concatList(args, " ", 1, size - 1);
  4704. msg(sender, concat("§cYou silently banned ", p_name, ": ", reason));
  4705. } else {
  4706. reason = "You got banned.";
  4707. msg(sender, concat("§cYou silently banned ", p_name, "."));
  4708. }
  4709. ban.add(player.getUuid(p_name), reason, sender_name);
  4710. if(isOnline(p_name)) {
  4711. p = read.player(p_name);
  4712. ban.kick(p, reason);
  4713. }
  4714. goto("wait");
  4715. @unban
  4716. if(size != 1) {
  4717. msg.prefix(sender, prefix_commands, "/unban <player>");
  4718. goto("wait");
  4719. }
  4720. p_name = list.getIndex(args, 0);
  4721. if(!checkIfEverOnline(p_name)) {
  4722. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4723. goto("wait");
  4724. }
  4725. p_name = player.getName(player.getUuid(p_name));
  4726. ban.remove(player.getUuid(p_name));
  4727. msg(sender, concat("§cYou unbanned ", p_name, "."));
  4728. goto("wait");
  4729. @tempban
  4730. if(size < 4) {
  4731. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  4732. goto("wait");
  4733. }
  4734. p_name = list.getIndex(args, 0);
  4735. if(!checkIfEverOnline(p_name)) {
  4736. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4737. goto("wait");
  4738. }
  4739. p_name = player.getName(player.getUuid(p_name));
  4740. if(p_name == "marvinius") {
  4741. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4742. goto("wait");
  4743. }
  4744. days = list.getIndex(args, 1);
  4745. hours = list.getIndex(args, 2);
  4746. minutes = list.getIndex(args, 3);
  4747. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  4748. msg.prefix(sender, prefix_commands, "Number expected.");
  4749. goto("wait");
  4750. }
  4751. if(days < 0 || hours < 0 || minutes < 0) {
  4752. msg.prefix(sender, prefix_commands, "Positive number expected.");
  4753. goto("wait");
  4754. }
  4755. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  4756. timestring = getTimeString(endtime);
  4757. if(size > 4) {
  4758. reason = text.concatList(args, " ", 4, size - 1);
  4759. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  4760. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  4761. } else {
  4762. reason = "You got banned.";
  4763. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  4764. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  4765. }
  4766. calendar = time.new(endtime);
  4767. ban.add(player.getUuid(p_name), reason, sender_name, calendar);
  4768. if(isOnline(p_name)) {
  4769. p = read.player(p_name);
  4770. ban.kick(p, reason);
  4771. }
  4772. goto("wait");
  4773. @ping
  4774. msg(player, "pong");
  4775. goto("wait");
  4776. @plot
  4777. if(size == 0) {
  4778. @plothelp
  4779. msg.prefix(player, prefix_plot, "/plot ...");
  4780. msg(player, "§d - info §rReturns info about current location");
  4781. if(!perm.has(player, "plot.moreinfo")) {
  4782. msg(player, "§d - list §rLists your plots");
  4783. }
  4784. msg(player, "");
  4785. msg(player, "§d - pos1/pos2 §rSet corner points");
  4786. msg(player, "§d - create §rCreates a (sub-)plot (Y: 0 - 255)");
  4787. msg(player, "§d - create3D §rCreates a 3D (sub-)plot");
  4788. msg(player, "");
  4789. msg(player, "§d - remove [id] §rRemoves a plot");
  4790. msg(player, "§d - expand <anzahl> [direction] [id] §rExpands a plot");
  4791. msg(player, "§d - name [id] <name> §rRenames a plot");
  4792. msg(player, "");
  4793. msg(player, "§d - share <player> [id] §rAdd a player to a plot");
  4794. msg(player, "§d - kick <player> [id] §rRemove a player from a plot");
  4795. msg(player, "§d - leader <player> [id] §rPromote to plot-leader");
  4796. msg(player, "§d - mod <player> [id] §rPromote to plot-mod");
  4797. msg(player, "§d - chest <player> [id] §rAllows a player to open chests");
  4798. msg(player, "");
  4799. msg(player, "§d - raise §rRaises a plot to a city. Costs §610 gold snuvis§r.");
  4800. msg(player, "§d - sell <price> §rSells a sub-plot");
  4801. msg(player, "");
  4802. if(perm.has(player, "plot.moreinfo")) {
  4803. msg(player, "§d - list [player] §rLists all plots from a player");
  4804. msg(player, "§d - moreinfo [id] §rReturns more detailed infos");
  4805. msg(player, "§d - listall §rLists all plots");
  4806. msg(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  4807. }
  4808. goto("wait");
  4809. }
  4810. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4811. if(arg0 == "sell") {
  4812. if(size != 2) {
  4813. msg.prefix(player, prefix_commands, "/plot sell <price>");
  4814. goto("wait");
  4815. }
  4816. sign_loc = player.getTarget(player, 5, false, false);
  4817. block = block.get(sign_loc);
  4818. if(!block.hasTag(sign_tag, block)) {
  4819. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  4820. goto("wait");
  4821. }
  4822. if(block.getSign(sign_loc, 0) != "" || block.getSign(sign_loc, 1) != "" || block.getSign(sign_loc, 2) != "" || block.getSign(sign_loc, 3) != "") {
  4823. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  4824. goto("wait");
  4825. }
  4826. plot_list = plot.get(sign_loc);
  4827. amount = list.getSize(plot_list);
  4828. if(amount == 0 || amount == 1) {
  4829. msg.prefix(player, prefix_plot, "You aren't on a sub plot.");
  4830. goto("wait");
  4831. }
  4832. if(amount > 2) {
  4833. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4834. goto("wait");
  4835. }
  4836. plot_1 = list.getIndex(plot_list, 0);
  4837. plot_2 = list.getIndex(plot_list, 1);
  4838. if(plot.isCity(plot_1)) {
  4839. city_plot = plot_1;
  4840. sell_plot = plot_2;
  4841. } elseif(plot.isCity(plot_2)) {
  4842. sell_plot = plot_1;
  4843. city_plot = plot_2;
  4844. } else {
  4845. msg.prefix(player, prefix_plot, "No city found.");
  4846. goto("wait");
  4847. }
  4848. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  4849. msg.prefix(player, prefix_plot, "You aren't a city plot leader or mod.");
  4850. goto("wait");
  4851. }
  4852. snuvis = list.getIndex(args, 1);
  4853. if(!isDouble(snuvis) || snuvis < 0) {
  4854. msg.prefix(player, prefix_plot, "Positive number expected.");
  4855. goto("wait");
  4856. }
  4857. //Sell Plot
  4858. x1 = plot.getMinX(sell_plot);
  4859. y1 = plot.getMinY(sell_plot);
  4860. z1 = plot.getMinZ(sell_plot);
  4861. x2 = plot.getMaxX(sell_plot);
  4862. y2 = plot.getMaxY(sell_plot);
  4863. z2 = plot.getMaxZ(sell_plot);
  4864. length = math.abs(x1 - x2) + 1;
  4865. width = math.abs(z1 - z2) + 1;
  4866. high = math.abs(y1 - y2) + 1;
  4867. //Change plot settings
  4868. plot.setFree(sell_plot, true);
  4869. plot.setName(sell_plot, "Free Plot");
  4870. plot.removePlayer(sell_plot, player.getName(player));
  4871. //Label Sign
  4872. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  4873. block.setSign(sign_loc, 1, concat("§2", text.number(snuvis)));
  4874. if(high == 256) {
  4875. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width)));
  4876. } else {
  4877. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width), " (Y:", text.number(high), ")"));
  4878. }
  4879. block.setSign(sign_loc, 3, text.number(player.getId(player)));
  4880. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  4881. goto("wait");
  4882. }
  4883. if(arg0 == "raise") {
  4884. location = entity.getLocation(player);
  4885. plot_list = plot.get(location);
  4886. amount = list.getSize(plot_list);
  4887. if(amount == 0) {
  4888. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4889. goto("wait");
  4890. }
  4891. plot = list.getIndex(plot_list, 0);
  4892. if(plot.isCity(plot)) {
  4893. msg.prefix(player, prefix_plot, "This plot is already a city.");
  4894. goto("wait");
  4895. }
  4896. if(!plot.isLeader(plot, player)) {
  4897. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  4898. goto("wait");
  4899. }
  4900. if(amount > 1) {
  4901. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4902. goto("wait");
  4903. }
  4904. x1 = plot.getMinX(plot);
  4905. z1 = plot.getMinZ(plot);
  4906. x2 = plot.getMaxX(plot);
  4907. z2 = plot.getMaxZ(plot);
  4908. length = math.abs(x1 - x2) + 1;
  4909. width = math.abs(z1 - z2) + 1;
  4910. plot_size = length * width;
  4911. if(plot_size < 2500) {
  4912. msg.prefix(player, prefix_plot, "Your plot must be over 2500m2.");
  4913. goto("wait");
  4914. }
  4915. snuvis = 40960;
  4916. if(!hasEnoughMoney(player, snuvis)) {
  4917. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4918. goto("wait");
  4919. }
  4920. offerRank(player, "rank.major");
  4921. player.setPlotRaised(player, true);
  4922. subMoney(player, snuvis);
  4923. plot.setCity(plot, true);
  4924. msg.prefix(player, prefix_plot, concat("City created. Spent §6", text.number(snuvis), "§r snuvis."));
  4925. goto("wait");
  4926. }
  4927. if(arg0 == "leader") {
  4928. if(size < 2) {
  4929. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4930. goto("wait");
  4931. }
  4932. p_name = list.getIndex(args, 1);
  4933. p_uuid = player.getUuid(p_name);
  4934. if(p_uuid == null) {
  4935. msg.prefix(player, prefix_plot, "This player has never been online.");
  4936. goto("wait");
  4937. }
  4938. p_name = player.getName(p_uuid);
  4939. location = entity.getLocation(player);
  4940. world = loc.getWorld(location);
  4941. if(size == 2) {
  4942. plot_list = plot.get(location);
  4943. amount = list.getSize(plot_list);
  4944. if(amount == 0) {
  4945. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4946. goto("wait");
  4947. }
  4948. plot = list.getIndex(plot_list, 0);
  4949. if(amount > 1) {
  4950. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4951. for(i = 0; i < amount; i++) {
  4952. plot = list.getIndex(plot_list, i);
  4953. plot_id = plot.getId(plot);
  4954. 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)));
  4955. }
  4956. goto("wait");
  4957. }
  4958. } else {
  4959. if(size != 3) {
  4960. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4961. goto("wait");
  4962. }
  4963. plot_id = list.getIndex(args, 2);
  4964. plot = plot.getFromId(plot_id, world);
  4965. if(plot == null) {
  4966. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4967. goto("wait");
  4968. }
  4969. }
  4970. player_id = player.getId(player);
  4971. if(!perm.has(player, "plot.other")) {
  4972. if(!world.canUsePlots(world)) {
  4973. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4974. goto("wait");
  4975. }
  4976. if(!plot.isLeader(plot, player_id)) {
  4977. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4978. goto("wait");
  4979. }
  4980. if(player_name == p_name) {
  4981. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  4982. goto("wait");
  4983. }
  4984. }
  4985. p_id = player.getId(p_uuid);
  4986. if(plot.isLeader(plot, p_id)) {
  4987. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  4988. goto("wait");
  4989. }
  4990. old_leader = plot.getLeaderId(plot);
  4991. if(old_leader != null) {
  4992. plot.setMod(plot, old_leader);
  4993. }
  4994. plot.setLeader(plot, p_id);
  4995. plot.addPlayer(plot, p_name);
  4996. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot leader."));
  4997. goto("wait");
  4998. }
  4999. if(arg0 == "mod") {
  5000. if(size < 2) {
  5001. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  5002. goto("wait");
  5003. }
  5004. p_name = list.getIndex(args, 1);
  5005. p_uuid = player.getUuid(p_name);
  5006. if(p_uuid == null) {
  5007. msg.prefix(player, prefix_plot, "This player has never been online.");
  5008. goto("wait");
  5009. }
  5010. p_name = player.getName(p_uuid);
  5011. location = entity.getLocation(player);
  5012. world = loc.getWorld(location);
  5013. if(size == 2) {
  5014. plot_list = plot.get(location);
  5015. amount = list.getSize(plot_list);
  5016. if(amount == 0) {
  5017. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5018. goto("wait");
  5019. }
  5020. plot = list.getIndex(plot_list, 0);
  5021. if(amount > 1) {
  5022. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5023. for(i = 0; i < amount; i++) {
  5024. plot = list.getIndex(plot_list, i);
  5025. plot_id = plot.getId(plot);
  5026. 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)));
  5027. }
  5028. goto("wait");
  5029. }
  5030. } else {
  5031. if(size != 3) {
  5032. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  5033. goto("wait");
  5034. }
  5035. plot_id = list.getIndex(args, 2);
  5036. plot = plot.getFromId(plot_id, world);
  5037. if(plot == null) {
  5038. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5039. goto("wait");
  5040. }
  5041. }
  5042. player_id = player.getId(player);
  5043. if(!perm.has(player, "plot.other")) {
  5044. if(!world.canUsePlots(world)) {
  5045. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5046. goto("wait");
  5047. }
  5048. if(!plot.isLeader(plot, player_id)) {
  5049. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  5050. goto("wait");
  5051. }
  5052. }
  5053. p_id = player.getId(p_uuid);
  5054. if(plot.isLeader(plot, p_id)) {
  5055. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  5056. goto("wait");
  5057. }
  5058. if(plot.isMod(plot, p_id)) {
  5059. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  5060. goto("wait");
  5061. }
  5062. plot.setMod(plot, p_id);
  5063. plot.addPlayer(plot, p_name);
  5064. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot mod."));
  5065. goto("wait");
  5066. }
  5067. if(arg0 == "chest") {
  5068. if(size < 2) {
  5069. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5070. goto("wait");
  5071. }
  5072. p_name = list.getIndex(args, 1);
  5073. p_uuid = player.getUuid(p_name);
  5074. if(p_uuid == null) {
  5075. msg.prefix(player, prefix_plot, "This player has never been online.");
  5076. goto("wait");
  5077. }
  5078. p_name = player.getName(p_uuid);
  5079. location = entity.getLocation(player);
  5080. world = loc.getWorld(location);
  5081. if(size == 2) {
  5082. plot_list = plot.get(location);
  5083. amount = list.getSize(plot_list);
  5084. if(amount == 0) {
  5085. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5086. goto("wait");
  5087. }
  5088. plot = list.getIndex(plot_list, 0);
  5089. if(amount > 1) {
  5090. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5091. for(i = 0; i < amount; i++) {
  5092. plot = list.getIndex(plot_list, i);
  5093. plot_id = plot.getId(plot);
  5094. 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)));
  5095. }
  5096. goto("wait");
  5097. }
  5098. } else {
  5099. if(size != 3) {
  5100. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5101. goto("wait");
  5102. }
  5103. plot_id = list.getIndex(args, 2);
  5104. plot = plot.getFromId(plot_id, world);
  5105. if(plot == null) {
  5106. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5107. goto("wait");
  5108. }
  5109. }
  5110. player_id = player.getId(player);
  5111. if(!perm.has(player, "plot.other")) {
  5112. if(!world.canUsePlots(world)) {
  5113. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5114. goto("wait");
  5115. }
  5116. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5117. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5118. goto("wait");
  5119. }
  5120. }
  5121. p_id = player.getId(p_uuid);
  5122. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  5123. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  5124. goto("wait");
  5125. }
  5126. if(plot.canOpenChests(plot, p_id)) {
  5127. msg.prefix(player, prefix_plot, "This player already can open chests.");
  5128. goto("wait");
  5129. }
  5130. plot.setChest(plot, p_id);
  5131. msg.prefix(player, prefix_plot, concat(p_name, " can now open chests."));
  5132. goto("wait");
  5133. }
  5134. if(arg0 == "remove") {
  5135. location = entity.getLocation(player);
  5136. world = loc.getWorld(location);
  5137. if(size == 1) {
  5138. plot_list = plot.get(location);
  5139. amount = list.getSize(plot_list);
  5140. if(amount == 0) {
  5141. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5142. goto("wait");
  5143. }
  5144. plot = list.getIndex(plot_list, 0);
  5145. if(amount > 1) {
  5146. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5147. for(i = 0; i < amount; i++) {
  5148. plot = list.getIndex(plot_list, i);
  5149. plot_id = plot.getId(plot);
  5150. 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)));
  5151. }
  5152. goto("wait");
  5153. }
  5154. } else {
  5155. if(size != 2) {
  5156. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  5157. goto("wait");
  5158. }
  5159. plot_id = list.getIndex(args, 1);
  5160. plot = plot.getFromId(plot_id, world);
  5161. if(plot == null) {
  5162. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5163. goto("wait");
  5164. }
  5165. }
  5166. if(!perm.has(player, "plot.other")) {
  5167. if(!world.canUsePlots(world)) {
  5168. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5169. goto("wait");
  5170. }
  5171. player_id = player.getId(player);
  5172. if(!plot.isLeader(plot, player_id)) {
  5173. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  5174. goto("wait");
  5175. }
  5176. }
  5177. if(plot.isCity(plot)) {
  5178. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  5179. iter = list.iterator(plot_list);
  5180. while(hasNext(iter)) {
  5181. sub_plot = next(iter);
  5182. plot.removeAllPlayers(sub_plot);
  5183. plot.remove(sub_plot, world);
  5184. }
  5185. }
  5186. plot.removeAllPlayers(plot);
  5187. plot.delMoveEvent(plot);
  5188. plot.remove(plot, world);
  5189. msg.prefix(player, prefix_plot, concat("Plot removed. #", text.number(plot.getId(plot)), " §6", plot.getName(plot)));
  5190. goto("wait");
  5191. }
  5192. if(arg0 == "expand") {
  5193. if(size < 2) {
  5194. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  5195. goto("wait");
  5196. }
  5197. location = entity.getLocation(player);
  5198. world = loc.getWorld(location);
  5199. anzahl = list.getIndex(args, 1);
  5200. if(!isDouble(anzahl) || anzahl < 0) {
  5201. msg.prefix(player, prefix_plot, "Positive number expected.");
  5202. goto("wait");
  5203. }
  5204. if(size == 2) {
  5205. yaw = loc.getYaw(location);
  5206. direction = getDirection(yaw);
  5207. if(direction == null) {
  5208. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  5209. goto("wait");
  5210. }
  5211. plot_list = plot.get(location);
  5212. amount = list.getSize(plot_list);
  5213. if(amount == 0) {
  5214. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5215. goto("wait");
  5216. }
  5217. plot = list.getIndex(plot_list, 0);
  5218. if(amount > 1) {
  5219. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5220. for(i = 0; i < amount; i++) {
  5221. plot = list.getIndex(plot_list, i);
  5222. plot_id = plot.getId(plot);
  5223. 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)));
  5224. }
  5225. goto("wait");
  5226. }
  5227. } else {
  5228. if(size != 4) {
  5229. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [<direction> <plot_id>]");
  5230. goto("wait");
  5231. }
  5232. direction = text.toLowerCase(list.getIndex(args, 2));
  5233. plot_id = list.getIndex(args, 3);
  5234. plot = plot.getFromId(plot_id, world);
  5235. if(plot == null) {
  5236. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5237. goto("wait");
  5238. }
  5239. }
  5240. if(plot.isSub(plot)) {
  5241. msg.prefix(player, prefix_plot, "Sub plots can't be expanded.");
  5242. goto("wait");
  5243. }
  5244. x1 = plot.getMinX(plot);
  5245. y1 = plot.getMinY(plot);
  5246. z1 = plot.getMinZ(plot);
  5247. x2 = plot.getMaxX(plot);
  5248. y2 = plot.getMaxY(plot);
  5249. z2 = plot.getMaxZ(plot);
  5250. old_length = math.abs(x1 - x2) + 1;
  5251. old_width = math.abs(z1 - z2) + 1;
  5252. if(direction == "east") {
  5253. old_x2 = x2;
  5254. x2 += anzahl;
  5255. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  5256. } elseif(direction == "south") {
  5257. old_z2 = z2;
  5258. z2 += anzahl;
  5259. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  5260. } elseif(direction == "west") {
  5261. old_x1 = x1;
  5262. x1 -= anzahl;
  5263. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  5264. } elseif(direction == "north") {
  5265. old_z1 = z1;
  5266. z1 -= anzahl;
  5267. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  5268. } else {
  5269. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  5270. goto("wait");
  5271. }
  5272. if(!perm.has(player, "plot.other")) {
  5273. if(list.getSize(list) > 0) {
  5274. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  5275. goto("wait");
  5276. }
  5277. if(!world.canUsePlots(world)) {
  5278. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5279. goto("wait");
  5280. }
  5281. player_id = player.getId(player);
  5282. if(!plot.isLeader(plot, player_id)) {
  5283. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  5284. goto("wait");
  5285. }
  5286. //Calc costs
  5287. length = math.abs(x1 - x2) + 1;
  5288. width = math.abs(z1 - z2) + 1;
  5289. snuvis = plot.calcCost(world, length, width) - plot.calcCost(world, old_length, old_width);
  5290. if(!hasEnoughMoney(player, snuvis)) {
  5291. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  5292. goto("wait");
  5293. }
  5294. subMoney(player, snuvis);
  5295. expand_message = concat("The plot has been expanded. Spent §6", text.number(snuvis), "§r snuvis.");
  5296. if(!player.hasBigPlotCreated(player)) {
  5297. plot_size = length * width;
  5298. if(plot_size >= 900) {
  5299. offerRank(player, "rank.colonizer");
  5300. player.setBigPlotCreated(player, true);
  5301. }
  5302. }
  5303. } else {
  5304. expand_message = concat("The plot has been expanded.");
  5305. }
  5306. //Expand plot
  5307. gs_edge1 = loc.new(world, x1, y1, z1);
  5308. gs_edge2 = loc.new(world, x2, y2, z2);
  5309. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  5310. plot.delMoveEvent(plot);
  5311. plot.setMoveEvent(new_plot, world);
  5312. msg.prefix(player, prefix_plot, expand_message);
  5313. goto("wait");
  5314. }
  5315. if(arg0 == "share") {
  5316. if(size < 2) {
  5317. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  5318. goto("wait");
  5319. }
  5320. p_name = list.getIndex(args, 1);
  5321. p_uuid = player.getUuid(p_name);
  5322. if(p_uuid == null) {
  5323. msg.prefix(player, prefix_plot, "This player has never been online.");
  5324. goto("wait");
  5325. }
  5326. p_name = player.getName(p_uuid);
  5327. location = entity.getLocation(player);
  5328. world = loc.getWorld(location);
  5329. if(size == 2) {
  5330. plot_list = plot.get(location);
  5331. amount = list.getSize(plot_list);
  5332. if(amount == 0) {
  5333. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5334. goto("wait");
  5335. }
  5336. plot = list.getIndex(plot_list, 0);
  5337. if(amount > 1) {
  5338. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5339. for(i = 0; i < amount; i++) {
  5340. plot = list.getIndex(plot_list, i);
  5341. plot_id = plot.getId(plot);
  5342. 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)));
  5343. }
  5344. goto("wait");
  5345. }
  5346. } else {
  5347. if(size != 3) {
  5348. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  5349. goto("wait");
  5350. }
  5351. plot_id = list.getIndex(args, 2);
  5352. plot = plot.getFromId(plot_id, world);
  5353. if(plot == null) {
  5354. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5355. goto("wait");
  5356. }
  5357. }
  5358. if(!perm.has(player, "plot.other")) {
  5359. if(!world.canUsePlots(world)) {
  5360. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5361. goto("wait");
  5362. }
  5363. player_id = player.getId(player);
  5364. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5365. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5366. goto("wait");
  5367. }
  5368. }
  5369. plot.addPlayer(plot, p_name);
  5370. msg.prefix(player, prefix_plot, concat(p_name, " added to the plot."));
  5371. goto("wait");
  5372. }
  5373. if(arg0 == "kick") {
  5374. if(size < 2) {
  5375. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  5376. goto("wait");
  5377. }
  5378. p_name = list.getIndex(args, 1);
  5379. p_uuid = player.getUuid(p_name);
  5380. if(p_uuid == null) {
  5381. msg.prefix(player, prefix_plot, "This player has never been online.");
  5382. goto("wait");
  5383. }
  5384. p_name = player.getName(p_uuid);
  5385. location = entity.getLocation(player);
  5386. world = loc.getWorld(location);
  5387. if(size == 2) {
  5388. plot_list = plot.get(location);
  5389. amount = list.getSize(plot_list);
  5390. if(amount == 0) {
  5391. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5392. goto("wait");
  5393. }
  5394. plot = list.getIndex(plot_list, 0);
  5395. if(amount > 1) {
  5396. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5397. for(i = 0; i < amount; i++) {
  5398. plot = list.getIndex(plot_list, i);
  5399. plot_id = plot.getId(plot);
  5400. 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)));
  5401. }
  5402. goto("wait");
  5403. }
  5404. } else {
  5405. if(size != 3) {
  5406. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  5407. goto("wait");
  5408. }
  5409. plot_id = list.getIndex(args, 2);
  5410. plot = plot.getFromId(plot_id, world);
  5411. if(plot == null) {
  5412. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5413. goto("wait");
  5414. }
  5415. }
  5416. if(!perm.has(player, "plot.other")) {
  5417. if(!world.canUsePlots(world)) {
  5418. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5419. goto("wait");
  5420. }
  5421. player_id = player.getId(player);
  5422. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5423. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5424. goto("wait");
  5425. }
  5426. if(player_name == p_name) {
  5427. msg.prefix(player, prefix_plot, "You can't kick yourself.");
  5428. goto("wait");
  5429. }
  5430. p_id = player.getId(p_uuid);
  5431. if(plot.isLeader(plot, p_id)) {
  5432. msg.prefix(player, prefix_plot, "You can't kick the plot-leader.");
  5433. goto("wait");
  5434. }
  5435. }
  5436. plot.removePlayer(plot, p_name);
  5437. msg.prefix(player, prefix_plot, concat(p_name, " removed from this plot."));
  5438. goto("wait");
  5439. }
  5440. if(arg0 == "name") {
  5441. if(size < 2) {
  5442. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  5443. goto("wait");
  5444. }
  5445. location = entity.getLocation(player);
  5446. world = loc.getWorld(location);
  5447. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  5448. if(size == 2) {
  5449. plot_list = plot.get(location);
  5450. amount = list.getSize(plot_list);
  5451. if(amount == 0) {
  5452. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5453. goto("wait");
  5454. }
  5455. plot = list.getIndex(plot_list, 0);
  5456. name = list.getIndex(args, 1);
  5457. if(amount > 1) {
  5458. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5459. for(i = 0; i < amount; i++) {
  5460. plot = list.getIndex(plot_list, i);
  5461. plot_id = plot.getId(plot);
  5462. msg(player, text.click(" [§cSelect§r] ", concat("/plot name ", plot_id, " ", name)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5463. }
  5464. goto("wait");
  5465. }
  5466. }
  5467. if(size > 2) {
  5468. plot_id = list.getIndex(args, 1);
  5469. if(isDouble(plot_id)) {
  5470. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  5471. plot = plot.getFromId(plot_id, world);
  5472. if(plot == null) {
  5473. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5474. goto("wait");
  5475. }
  5476. name = text.concatList(args, " ", 2, size - 1);
  5477. } else {
  5478. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  5479. name = text.concatList(args, " ", 1, size - 1);
  5480. plot_list = plot.get(location);
  5481. amount = list.getSize(plot_list);
  5482. if(amount == 0) {
  5483. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5484. goto("wait");
  5485. }
  5486. plot = list.getIndex(plot_list, 0);
  5487. if(amount > 1) {
  5488. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5489. for(i = 0; i < amount; i++) {
  5490. plot = list.getIndex(plot_list, i);
  5491. plot_id = plot.getId(plot);
  5492. 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)));
  5493. }
  5494. goto("wait");
  5495. }
  5496. }
  5497. }
  5498. if(!perm.has(player, "plot.other")) {
  5499. if(!world.canUsePlots(world)) {
  5500. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5501. goto("wait");
  5502. }
  5503. player_id = player.getId(player);
  5504. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5505. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5506. goto("wait");
  5507. }
  5508. }
  5509. plot.setName(plot, name);
  5510. msg.prefix(player, prefix_plot, concat("Plot renamed to ", name, "."));
  5511. goto("wait");
  5512. }
  5513. if(arg0 == "create" || arg0 == "create3d") {
  5514. player_id = player.getId(player);
  5515. loc1 = map.get(plotpos1, player_id);
  5516. loc2 = map.get(plotpos2, player_id);
  5517. if(loc1 == null || loc2 == null) {
  5518. msg.prefix(player, prefix_plot, "No corner points set.");
  5519. goto("wait");
  5520. }
  5521. world1 = loc.getWorld(loc1);
  5522. if(world1 != loc.getWorld(loc2)) {
  5523. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  5524. goto("wait");
  5525. }
  5526. x1 = loc.getX(loc1);
  5527. y1 = loc.getY(loc1);
  5528. z1 = loc.getZ(loc1);
  5529. x2 = loc.getX(loc2);
  5530. y2 = loc.getY(loc2);
  5531. z2 = loc.getZ(loc2);
  5532. if(arg0 == "create") {
  5533. loc.setY(loc1, 0);
  5534. loc.setY(loc2, 255);
  5535. }
  5536. create_message = "Plot created.";
  5537. sub_plot = false;
  5538. if(!perm.has(player, "plot.other")) {
  5539. world_name = world.getName(world1);
  5540. if(!world.canUsePlots(world1)) {
  5541. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  5542. goto("wait");
  5543. }
  5544. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  5545. if(list.getSize(list) > 0) {
  5546. city_plot = list.getIndex(list, 0);
  5547. if(plot.isCity(city_plot)) {
  5548. if(!plot.isLeader(city_plot, player_id) && !plot.isMod(city_plot, player_id)) {
  5549. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5550. goto("wait");
  5551. }
  5552. city_id = plot.getId(city_plot);
  5553. if(!loc.hasPlotId(loc1, city_id)) {
  5554. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  5555. goto("wait");
  5556. }
  5557. if(!loc.hasPlotId(loc2, city_id)) {
  5558. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  5559. goto("wait");
  5560. }
  5561. sub_plot = true;
  5562. } else {
  5563. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  5564. goto("wait");
  5565. }
  5566. }
  5567. if(!sub_plot) {
  5568. //Calc costs
  5569. length = math.abs(x1 - x2) + 1;
  5570. width = math.abs(z1 - z2) + 1;
  5571. if(length < 3 || width < 3) {
  5572. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  5573. goto("wait");
  5574. }
  5575. snuvis = plot.calcCost(world1, length, width);
  5576. free_plot_used = player.usedHisFreePlot(player_id);
  5577. if(!free_plot_used && world_name != "creative") {
  5578. snuvis -= plot.calcCost(world1, 16, 16);
  5579. if(snuvis < 0) {
  5580. snuvis = 0;
  5581. }
  5582. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  5583. }
  5584. if(!hasEnoughMoney(player, snuvis)) {
  5585. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  5586. goto("wait");
  5587. }
  5588. create_message = concat("Plot created. Spent §6", text.number(snuvis), "§r snuvis.");
  5589. subMoney(player, snuvis);
  5590. if(!free_plot_used && world_name != "creative") {
  5591. player.setUsedFreePlot(player_id, true);
  5592. offerRank(player, "rank.settler");
  5593. }
  5594. if(!player.hasBigPlotCreated(player)) {
  5595. plot_size = length * width;
  5596. if(plot_size >= 900) {
  5597. offerRank(player, "rank.colonizer");
  5598. player.setBigPlotCreated(player, true);
  5599. }
  5600. }
  5601. }
  5602. }
  5603. //Create plot
  5604. map.remove(plotpos1, player_id);
  5605. map.remove(plotpos2, player_id);
  5606. plot = plot.add(loc1, loc2);
  5607. if(sub_plot) {
  5608. plot.setSub(plot, true);
  5609. }
  5610. plot.setMoveEvent(plot, world1);
  5611. plot.setName(plot, concat(player_name, "'s plot"));
  5612. plot.addPlayer(plot, player_name);
  5613. plot.setLeader(plot, player_id);
  5614. msg.prefix(player, prefix_plot, create_message);
  5615. goto("wait");
  5616. }
  5617. if(arg0 == "pos1" || arg0 == "pos2") {
  5618. loc = entity.getLocation(player);
  5619. loc = getBlockLocation(loc);
  5620. player_id = player.getId(player);
  5621. if(arg0 == "pos1") {
  5622. map.add(plotpos1, player_id, loc);
  5623. pos_string = "Pos1";
  5624. } elseif(arg0 == "pos2") {
  5625. map.add(plotpos2, player_id, loc);
  5626. pos_string = "Pos2";
  5627. }
  5628. x = text.number(loc.getX(loc));
  5629. y = text.number(loc.getY(loc));
  5630. z = text.number(loc.getZ(loc));
  5631. msg.prefix(player, prefix_plot, concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  5632. loc1 = map.get(plotpos1, player_id);
  5633. loc2 = map.get(plotpos2, player_id);
  5634. if(loc1 != null && loc2 != null) {
  5635. world1 = loc.getWorld(loc1);
  5636. snuvis = plot.calcCost(world1, loc1, loc2);
  5637. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  5638. snuvis -= plot.calcCost(world1, 16, 16);
  5639. if(snuvis < 0) {
  5640. snuvis = 0;
  5641. }
  5642. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  5643. }
  5644. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  5645. snuvis = 0;
  5646. }
  5647. msg.prefix(player, prefix_plot, concat("This plot will cost §6", text.number(snuvis), "§r snuvis."));
  5648. }
  5649. goto("wait");
  5650. }
  5651. if(arg0 == "flags") {
  5652. if(!perm.has(player, "plot.moreinfo")) {
  5653. perm.no(player, "plot.moreinfo");
  5654. goto("wait");
  5655. }
  5656. if(size < 3 || size > 4) {
  5657. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  5658. goto("wait");
  5659. }
  5660. flags = list.getIndex(args, 1);
  5661. if(!isDouble(flags) || flags < 0) {
  5662. msg.prefix(player, prefix_commands, "Positive number expected.");
  5663. goto("wait");
  5664. }
  5665. boolean = list.getIndex(args, 2);
  5666. if(!(boolean == true || boolean == false)) {
  5667. msg.prefix(player, prefix_commands, "Boolean expected.");
  5668. goto("wait");
  5669. }
  5670. location = entity.getLocation(player);
  5671. world = loc.getWorld(location);
  5672. if(size == 3) {
  5673. plot_list = plot.get(location);
  5674. amount = list.getSize(plot_list);
  5675. if(amount == 0) {
  5676. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5677. goto("wait");
  5678. }
  5679. plot = list.getIndex(plot_list, 0);
  5680. if(amount > 1) {
  5681. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5682. for(i = 0; i < amount; i++) {
  5683. plot = list.getIndex(plot_list, i);
  5684. plot_id = plot.getId(plot);
  5685. x = loc.getX(location);
  5686. y = loc.getY(location);
  5687. z = loc.getZ(location);
  5688. 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)));
  5689. }
  5690. goto("wait");
  5691. }
  5692. } else {
  5693. plot_id = list.getIndex(args, 3);
  5694. plot = plot.getFromId(plot_id, world);
  5695. if(plot == null) {
  5696. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5697. goto("wait");
  5698. }
  5699. }
  5700. flags_list = list.new();
  5701. temp_flags = 0;
  5702. if(flags >= 512) {
  5703. list.add(flags_list, "SUB_PLOT_FLAG");
  5704. temp_flags += 512;
  5705. }
  5706. if(flags >= 256) {
  5707. list.add(flags_list, "FREE_FLAG");
  5708. temp_flags += 256;
  5709. }
  5710. if(flags >= 128) {
  5711. list.add(flags_list, "CITY_FLAG");
  5712. temp_flags += 128;
  5713. }
  5714. if(flags >= 64) {
  5715. list.add(flags_list, "EXPLOSION_FLAG");
  5716. temp_flags += 64;
  5717. }
  5718. if(flags >= 32) {
  5719. list.add(flags_list, "ENTITY_INTERACT_FLAG");
  5720. temp_flags += 32;
  5721. }
  5722. if(flags >= 16) {
  5723. list.add(flags_list, "BLOCK_INTERACT_FLAG");
  5724. temp_flags += 16;
  5725. }
  5726. if(flags >= 8) {
  5727. list.add(flags_list, "HIT_AMBIENT_FLAG");
  5728. temp_flags += 8;
  5729. }
  5730. if(flags >= 4) {
  5731. list.add(flags_list, "BUCKET_FLAG");
  5732. temp_flags += 4;
  5733. }
  5734. if(flags >= 2) {
  5735. list.add(flags_list, "BREAK_FLAG");
  5736. temp_flags += 2;
  5737. }
  5738. if(flags >= 1) {
  5739. list.add(flags_list, "PLACE_FLAG");
  5740. temp_flags += 1;
  5741. }
  5742. plot.setFlags(plot, flags, boolean);
  5743. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  5744. goto("wait");
  5745. }
  5746. if(arg0 == "list") {
  5747. if(size == 1) {
  5748. p_name = player.getName(player);
  5749. } else {
  5750. if(!perm.has(player, "plot.moreinfo")) {
  5751. perm.no(player, "plot.moreinfo");
  5752. goto("wait");
  5753. }
  5754. p_name = list.getIndex(args, 1);
  5755. }
  5756. p_uuid = player.getUuid(p_name);
  5757. if(p_uuid == null) {
  5758. msg.prefix(player, prefix_plot, "This player has never been online.");
  5759. goto("wait");
  5760. }
  5761. p_name = player.getName(p_uuid);
  5762. msg.prefix(player, prefix_commands, concat(p_name, "'s plots:"));
  5763. world = loc.getWorld(entity.getLocation(player));
  5764. iter = plot.iterator(world, p_uuid);
  5765. while(hasNext(iter)) {
  5766. plot = next(iter);
  5767. msg(player, concat(" - #", text.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5768. }
  5769. goto("wait");
  5770. }
  5771. if(arg0 == "listall") {
  5772. if(!perm.has(player, "plot.moreinfo")) {
  5773. perm.no(player, "plot.moreinfo");
  5774. goto("wait");
  5775. }
  5776. if(size != 1) {
  5777. msg.prefix(player, prefix_commands, "/plot listall");
  5778. goto("wait");
  5779. }
  5780. world = loc.getWorld(entity.getLocation(player));
  5781. msg.prefix(player, prefix_commands, concat("All plots in this world: ", world.getName(world)));
  5782. iterator = plot.iterator(world);
  5783. while(hasNext(iterator)) {
  5784. plot = next(iterator);
  5785. plot_id = plot.getId(plot);
  5786. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5787. }
  5788. goto("wait");
  5789. }
  5790. if(arg0 == "moreinfo" || arg0 == "mi") {
  5791. if(!perm.has(player, "plot.moreinfo")) {
  5792. perm.no(player, "plot.moreinfo");
  5793. goto("wait");
  5794. }
  5795. location = entity.getLocation(player);
  5796. world = loc.getWorld(location);
  5797. if(size == 1) {
  5798. plot_list = plot.get(location);
  5799. amount = list.getSize(plot_list);
  5800. if(amount == 0) {
  5801. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5802. goto("wait");
  5803. }
  5804. plot = list.getIndex(plot_list, 0);
  5805. if(amount > 1) {
  5806. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5807. for(i = 0; i < amount; i++) {
  5808. plot = list.getIndex(plot_list, i);
  5809. plot_id = plot.getId(plot);
  5810. msg(player, text.click(" [§cSelect§r] ", concat("/plot moreinfo ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5811. }
  5812. goto("wait");
  5813. }
  5814. } else {
  5815. if(size != 2) {
  5816. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  5817. goto("wait");
  5818. }
  5819. plot_id = list.getIndex(args, 1);
  5820. plot = plot.getFromId(plot_id, world);
  5821. if(plot == null) {
  5822. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5823. goto("wait");
  5824. }
  5825. }
  5826. owners = "";
  5827. owners_list = plot.getOwners(plot);
  5828. copy_list = list.copy(owners_list);
  5829. plot_id = plot.getId(plot);
  5830. msg.prefix(player, prefix_plot, concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5831. msg(player, " §dWorld: §r", world.getName(world));
  5832. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5833. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5834. leader_name = plot.getLeaderName(plot);
  5835. if(leader_name == "") {
  5836. leader_name = "-";
  5837. }
  5838. msg(player, " §dLeader: §r", leader_name);
  5839. list.remove(copy_list, player.getUuid(leader_name));
  5840. mods_list = plot.getMods(plot);
  5841. mods_amount = list.getSize(mods_list);
  5842. if(mods_amount == 0) {
  5843. mods_string = "-";
  5844. } else {
  5845. iter = list.iterator(mods_list);
  5846. mods_string = "";
  5847. while(hasNext(iter)) {
  5848. p_name = player.getNameFromId(next(iter));
  5849. p_uuid = player.getUuid(p_name);
  5850. list.remove(copy_list, p_uuid);
  5851. if(mods_string == "") {
  5852. mods_string = p_name;
  5853. } else {
  5854. mods_string = concat(mods_string, " / ", p_name);
  5855. }
  5856. }
  5857. }
  5858. msg(player, " §dMods: §r", mods_string);
  5859. members_amount = list.getSize(copy_list);
  5860. if(members_amount == 0) {
  5861. members_string = "-";
  5862. } else {
  5863. iter = list.iterator(copy_list);
  5864. members_string = "";
  5865. while(hasNext(iter)) {
  5866. p_name = player.getName(next(iter));
  5867. if(members_string == "") {
  5868. members_string = p_name;
  5869. } else {
  5870. members_string = concat(members_string, " / ", p_name);
  5871. }
  5872. }
  5873. }
  5874. msg(player, " §dMembers: §r", members_string);
  5875. chests_list = plot.getChestRanks(plot);
  5876. chests_amount = list.getSize(chests_list);
  5877. if(chests_amount == 0) {
  5878. chests_string = "-";
  5879. } else {
  5880. iter = list.iterator(chests_list);
  5881. chests_string = "";
  5882. while(hasNext(iter)) {
  5883. p_name = player.getNameFromId(next(iter));
  5884. if(chests_string == "") {
  5885. chests_string = p_name;
  5886. } else {
  5887. chests_string = concat(chests_string, " / ", p_name);
  5888. }
  5889. }
  5890. }
  5891. msg(player, " §dOnly chest: §r", chests_string);
  5892. flags = plot.getFlags(plot);
  5893. flags_true = list.new();
  5894. flags_false = list.new();
  5895. array = array.new(2);
  5896. array[0] = 512;
  5897. array[1] = "SUB_PLOT_FLAG";
  5898. if(flags >= 512) {
  5899. list.add(flags_true, array);
  5900. flags -= 512;
  5901. } else {
  5902. list.add(flags_false, array);
  5903. }
  5904. array = array.new(2);
  5905. array[0] = 256;
  5906. array[1] = "FREE_FLAG";
  5907. if(flags >= 256) {
  5908. list.add(flags_true, array);
  5909. flags -= 256;
  5910. } else {
  5911. list.add(flags_false, array);
  5912. }
  5913. array = array.new(2);
  5914. array[0] = 128;
  5915. array[1] = "CITY_FLAG";
  5916. if(flags >= 128) {
  5917. list.add(flags_true, array);
  5918. flags -= 128;
  5919. } else {
  5920. list.add(flags_false, array);
  5921. }
  5922. array = array.new(2);
  5923. array[0] = 64;
  5924. array[1] = "EXPLOSION_FLAG";
  5925. if(flags >= 64) {
  5926. list.add(flags_true, array);
  5927. flags -= 64;
  5928. } else {
  5929. list.add(flags_false, array);
  5930. }
  5931. array = array.new(2);
  5932. array[0] = 32;
  5933. array[1] = "ENTITY_INTERACT_FLAG";
  5934. if(flags >= 32) {
  5935. list.add(flags_true, array);
  5936. flags -= 32;
  5937. } else {
  5938. list.add(flags_false, array);
  5939. }
  5940. array = array.new(2);
  5941. array[0] = 16;
  5942. array[1] = "BLOCK_INTERACT_FLAG";
  5943. if(flags >= 16) {
  5944. list.add(flags_true, array);
  5945. flags -= 16;
  5946. } else {
  5947. list.add(flags_false, array);
  5948. }
  5949. array = array.new(2);
  5950. array[0] = 8;
  5951. array[1] = "HIT_AMBIENT_FLAG";
  5952. if(flags >= 8) {
  5953. list.add(flags_true, array);
  5954. flags -= 8;
  5955. } else {
  5956. list.add(flags_false, array);
  5957. }
  5958. array = array.new(2);
  5959. array[0] = 4;
  5960. array[1] = "BUCKET_FLAG";
  5961. if(flags >= 4) {
  5962. list.add(flags_true, array);
  5963. flags -= 4;
  5964. } else {
  5965. list.add(flags_false, array);
  5966. }
  5967. array = array.new(2);
  5968. array[0] = 2;
  5969. array[1] = "BREAK_FLAG";
  5970. if(flags >= 2) {
  5971. list.add(flags_true, array);
  5972. flags -= 2;
  5973. } else {
  5974. list.add(flags_false, array);
  5975. }
  5976. array = array.new(2);
  5977. array[0] = 1;
  5978. array[1] = "PLACE_FLAG";
  5979. if(flags >= 1) {
  5980. list.add(flags_true, array);
  5981. } else {
  5982. list.add(flags_false, array);
  5983. }
  5984. x = loc.getX(location);
  5985. y = loc.getY(location);
  5986. z = loc.getZ(location);
  5987. msg(player, " §dFlags true:");
  5988. iter = list.iterator(flags_true);
  5989. while(hasNext(iter)) {
  5990. array = next(iter);
  5991. flag_number = array[0];
  5992. flag_name = array[1];
  5993. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " false ", plot_id)));
  5994. }
  5995. msg(player, " §dFlags false:");
  5996. iter = list.iterator(flags_false);
  5997. while(hasNext(iter)) {
  5998. array = next(iter);
  5999. flag_number = array[0];
  6000. flag_name = array[1];
  6001. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " true ", plot_id)));
  6002. }
  6003. goto("wait");
  6004. }
  6005. if(arg0 == "info" || arg0 == "i") {
  6006. location = entity.getLocation(player);
  6007. list = plot.get(location);
  6008. world = loc.getWorld(location);
  6009. size = list.getSize(list);
  6010. if(size == 0) {
  6011. msg.prefix(player, prefix_plot, "No plots found.");
  6012. goto("wait");
  6013. }
  6014. if(size == 1) {
  6015. msg.prefix(player, prefix_plot, concat(text.number(size), " plot found:"));
  6016. } else {
  6017. msg.prefix(player, prefix_plot, concat(text.number(size), " plots found:"));
  6018. }
  6019. for(i = 0; i < size; i++) {
  6020. plot = list.getIndex(list, i);
  6021. plot_id = plot.getId(plot);
  6022. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  6023. owners_list = plot.getOwners(plot);
  6024. copy_list = list.copy(owners_list);
  6025. plot_id = plot.getId(plot);
  6026. msg(player, " §dWorld: §r", world.getName(world));
  6027. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  6028. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  6029. leader_name = plot.getLeaderName(plot);
  6030. if(leader_name == "") {
  6031. leader_name = "-";
  6032. }
  6033. msg(player, " §dLeader: §r", leader_name);
  6034. list.remove(copy_list, player.getUuid(leader_name));
  6035. mods_list = plot.getMods(plot);
  6036. mods_amount = list.getSize(mods_list);
  6037. if(mods_amount == 0) {
  6038. mods_string = "-";
  6039. } else {
  6040. iter = list.iterator(mods_list);
  6041. mods_string = "";
  6042. while(hasNext(iter)) {
  6043. p_name = player.getNameFromId(next(iter));
  6044. p_uuid = player.getUuid(p_name);
  6045. list.remove(copy_list, p_uuid);
  6046. if(mods_string == "") {
  6047. mods_string = p_name;
  6048. } else {
  6049. mods_string = concat(mods_string, " / ", p_name);
  6050. }
  6051. }
  6052. }
  6053. msg(player, " §dMods: §r", mods_string);
  6054. members_amount = list.getSize(copy_list);
  6055. if(members_amount == 0) {
  6056. members_string = "-";
  6057. } else {
  6058. iter = list.iterator(copy_list);
  6059. members_string = "";
  6060. while(hasNext(iter)) {
  6061. p_name = player.getName(next(iter));
  6062. if(members_string == "") {
  6063. members_string = p_name;
  6064. } else {
  6065. members_string = concat(members_string, " / ", p_name);
  6066. }
  6067. }
  6068. }
  6069. msg(player, " §dMembers: §r", members_string);
  6070. chests_list = plot.getChestRanks(plot);
  6071. chests_amount = list.getSize(chests_list);
  6072. if(chests_amount == 0) {
  6073. chests_string = "-";
  6074. } else {
  6075. iter = list.iterator(chests_list);
  6076. chests_string = "";
  6077. while(hasNext(iter)) {
  6078. p_name = player.getNameFromId(next(iter));
  6079. if(chests_string == "") {
  6080. chests_string = p_name;
  6081. } else {
  6082. chests_string = concat(chests_string, " / ", p_name);
  6083. }
  6084. }
  6085. }
  6086. msg(player, " §dOnly chest: §r", chests_string);
  6087. }
  6088. goto("wait");
  6089. }
  6090. goto("plothelp");
  6091. @stopadventure
  6092. removeAdventureDisplay(player);
  6093. player.setAdventure(player, false);
  6094. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  6095. goto("wait");
  6096. @speed
  6097. if(size < 1 || size > 2) {
  6098. if(perm.has(player, "speed.other")) {
  6099. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  6100. } else {
  6101. msg.prefix(player, prefix_commands, "/speed <1-10>");
  6102. }
  6103. goto("wait");
  6104. }
  6105. speed = list.getIndex(args, 0);
  6106. if(!isDouble(speed)) {
  6107. msg.prefix(player, prefix_commands, "Number expected.");
  6108. goto("wait");
  6109. }
  6110. if(speed < 1) {
  6111. speed = 1;
  6112. }
  6113. if(speed > 10) {
  6114. speed = 10;
  6115. }
  6116. if(size == 2) {
  6117. if(!perm.has(player, "speed.other")) {
  6118. perm.no(player, "speed.other");
  6119. goto("wait");
  6120. }
  6121. affectedname = list.getIndex(args, 1);
  6122. affectedplayer = read.player(affectedname);
  6123. if(affectedplayer == null) {
  6124. msg.prefix(player, prefix_commands, "This player is not online.");
  6125. goto("wait");
  6126. }
  6127. }
  6128. player.setSpeed(affectedplayer, speed);
  6129. msg.prefix(affectedplayer, prefix_commands, concat("Set your speed to ", text.number(speed), "."));
  6130. if(affectedplayer != player) {
  6131. affectedname = player.getName(affectedplayer);
  6132. msg.prefix(player, prefix_commands, concat(affectedname, " set your speed to ", text.number(speed), "."));
  6133. }
  6134. goto("wait");
  6135. @butcher
  6136. loc = entity.getLocation(player);
  6137. world = loc.getWorld(loc);
  6138. list = world.getEntities(world);
  6139. size = list.getSize(list);
  6140. killed = 0;
  6141. for(i = 0; i < size; i++) {
  6142. element = list.getIndex(list, i);
  6143. if(isLiving(element)) {
  6144. entity_type = entity.getType(element);
  6145. if(set.contains(butcher_set, entity_type)) {
  6146. entity.remove(element);
  6147. killed++;
  6148. }
  6149. }
  6150. }
  6151. msg.prefix(player, prefix_commands, concat(text.number(killed), " mobs killed."));
  6152. goto("wait");
  6153. @enchant
  6154. if(size != 2) {
  6155. msg.prefix(player, prefix_commands, "/enchant <enchantment> <level>");
  6156. goto("wait");
  6157. }
  6158. ench_string = list.getIndex(args, 0);
  6159. ench = enchantment.get(ench_string);
  6160. if(ench == null) {
  6161. msg.prefix(player, prefix_commands, "Unknown enchantment");
  6162. goto("wait");
  6163. }
  6164. lvl = list.getIndex(args, 1);
  6165. if(!isDouble(lvl) || lvl < 1 || lvl > 100) {
  6166. msg.prefix(sender, prefix_commands, "Number greater than 0 and less than 101 expected.");
  6167. goto("wait");
  6168. }
  6169. item = living.getHand(player);
  6170. if(item.getType(item) == "minecraft:air") {
  6171. msg.prefix(sender, prefix_commands, "You need to hold an item in your hand.");
  6172. goto("wait");
  6173. }
  6174. enchantment.add(ench, item, lvl);
  6175. goto("wait");
  6176. @enderchest
  6177. if(size < 1 || size > 2) {
  6178. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  6179. goto("wait");
  6180. }
  6181. if(size == 1) {
  6182. from_name = list.getIndex(args, 0);
  6183. }
  6184. elseif(size == 2) {
  6185. affectedname = list.getIndex(args, 0);
  6186. from_name = list.getIndex(args, 1);
  6187. affectedplayer = read.player(affectedname);
  6188. if(affectedplayer == null) {
  6189. msg.prefix(player, prefix_commands, "This player is not online.");
  6190. goto("wait");
  6191. }
  6192. }
  6193. from_player = read.player(from_name);
  6194. if(from_player == null) {
  6195. msg.prefix(player, prefix_commands, "This player is not online.");
  6196. goto("wait");
  6197. }
  6198. player.openEnderchest(affectedplayer, from_player, concat("Enderchest von ", from_name));
  6199. goto("wait");
  6200. @gamemode
  6201. if(size < 1 || size > 2) {
  6202. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  6203. goto("wait");
  6204. }
  6205. if(size == 2) {
  6206. if(!perm.has(player, "gamemode.other")) {
  6207. perm.no(player, "gamemode.other");
  6208. goto("wait");
  6209. }
  6210. affectedname = list.getIndex(args, 1);
  6211. affectedplayer = read.player(affectedname);
  6212. if(affectedplayer == null) {
  6213. msg.prefix(player, prefix_commands, "This player is not online.");
  6214. goto("wait");
  6215. }
  6216. }
  6217. mode = list.getIndex(args, 0);
  6218. if(isDouble(mode)) {
  6219. mode = text.number(mode);
  6220. } else {
  6221. mode = text.toLowerCase(mode);
  6222. }
  6223. if(mode == "s" || mode == "0" || mode == "survival") {
  6224. mode = "survival";
  6225. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  6226. mode = "creative";
  6227. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  6228. mode = "adventure";
  6229. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  6230. mode = "spectator";
  6231. } else {
  6232. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  6233. goto("wait");
  6234. }
  6235. player.setGamemode(affectedplayer, mode);
  6236. if(affectedplayer != player) {
  6237. affectedname = player.getName(affectedplayer);
  6238. msg.prefix(player, prefix_commands, concat("Gamemode of ", affectedname, " set to ", mode, "."));
  6239. }
  6240. msg.prefix(affectedplayer, prefix_commands, concat("Set your gamemode to ", mode, "."));
  6241. goto("wait");
  6242. @home
  6243. if(size == 0) {
  6244. @homesyntax
  6245. msg.prefix(player, prefix_commands, "/home ...");
  6246. msg(player, "§6 - set <name> §rSets a home");
  6247. msg(player, "§6 - delete <name> §rDeletes a home");
  6248. if(perm.has(player, "home.other")) {
  6249. msg(player, "§6 - list [player] §rLists all homes");
  6250. msg(player, "§6 - <name> [player] §rTeleports to a home");
  6251. } else {
  6252. msg(player, "§6 - list §rLists your homes");
  6253. msg(player, "§6 - <name> §rTeleports to your home");
  6254. }
  6255. goto("wait");
  6256. }
  6257. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6258. if(arg0 == "del" || arg0 == "delete") {
  6259. if(size < 2) {
  6260. goto("homesyntax");
  6261. }
  6262. player_id = player.getId(player);
  6263. name = text.toLowerCase(list.getIndex(args, 1));
  6264. if(!home.exists(player_id, name)) {
  6265. msg.prefix(player, prefix_commands, concat("Home ", name, "doesn't exist."));
  6266. goto("wait");
  6267. }
  6268. home.delete(player_id, name);
  6269. msg.prefix(player, prefix_commands, concat("Home ", name, " deleted."));
  6270. goto("wait");
  6271. }
  6272. if(arg0 == "list") {
  6273. affecteduuid = player.getUuid(affectedname);
  6274. if(size == 2) {
  6275. if(!perm.has(player, "home.other")) {
  6276. perm.no(player, "home.other");
  6277. goto("wait");
  6278. }
  6279. affectedname = text.toLowerCase(list.getIndex(args, 1));
  6280. affecteduuid = player.getUuid(affectedname);
  6281. if(affecteduuid == null) {
  6282. msg.prefix(player, prefix_commands, "This player has never been online.");
  6283. goto("wait");
  6284. }
  6285. }
  6286. id = player.getId(affecteduuid);
  6287. homes_list = home.getList(id);
  6288. home_amount = list.getSize(homes_list);
  6289. if(home_amount == 0) {
  6290. msg.prefix(player, prefix_commands, "No homes existing.");
  6291. } else {
  6292. msg.prefix(player, prefix_commands, concat("Homes of ", affectedname, ":"));
  6293. for(i = 0; i < home_amount; i++) {
  6294. msg(player, concat("§6 - §r", list.getIndex(homes_list, i)));
  6295. }
  6296. }
  6297. goto("wait");
  6298. }
  6299. location = entity.getLocation(player);
  6300. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6301. if(!world.isSurvName(world_name)) {
  6302. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  6303. goto("wait");
  6304. }
  6305. if(arg0 == "set") {
  6306. if(size < 2) {
  6307. goto("homesyntax");
  6308. }
  6309. player_id = player.getId(player);
  6310. homes_list = home.getList(player_id);
  6311. home_amount = list.getSize(homes_list);
  6312. if(perm.has(player, "isAdmin")) {
  6313. max_homes = 100;
  6314. } elseif(perm.has(player, "isMod")) {
  6315. max_homes = 40;
  6316. } elseif(perm.has(player, "isTeam")) {
  6317. max_homes = 20;
  6318. } elseif(perm.has(player, "canTP")) {
  6319. max_homes = 10;
  6320. } else {
  6321. max_homes = 5;
  6322. }
  6323. max_homes += getAdditionalVoteHomes();
  6324. if(home_amount >= max_homes) {
  6325. msg.prefix(player, prefix_commands, concat("You can only set ", text.number(max_homes), " homes."));
  6326. goto("wait");
  6327. }
  6328. name = text.toLowerCase(list.getIndex(args, 1));
  6329. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  6330. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  6331. goto("wait");
  6332. }
  6333. if(!text.onlyletters(name)) {
  6334. msg.prefix(player, prefix_commands, "Only letters allowed.");
  6335. goto("wait");
  6336. }
  6337. if(text.length(name) > 20) {
  6338. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  6339. goto("wait");
  6340. }
  6341. if(home.exists(player_id, name)) {
  6342. msg.prefix(player, prefix_commands, concat("Home ", name, " already exists."));
  6343. goto("wait");
  6344. }
  6345. home.set(player_id, name, location);
  6346. msg.prefix(player, prefix_commands, concat("Home ", name, " set."));
  6347. goto("wait");
  6348. }
  6349. //Teleportation
  6350. if(size == 2) {
  6351. affectedname = text.toLowerCase(list.getIndex(args, 1));
  6352. }
  6353. affecteduuid = player.getUuid(affectedname);
  6354. if(affecteduuid == null) {
  6355. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  6356. goto("wait");
  6357. }
  6358. player_id = player.getID(affecteduuid);
  6359. location = home.getLocation(player_id, arg0);
  6360. if(location == null) {
  6361. msg.prefix(player, prefix_commands, "Home doesn't exist."); //oder die welt ist nicht geladen
  6362. goto("wait");
  6363. }
  6364. player.teleport(player, location, true);
  6365. goto("wait");
  6366. @tpa
  6367. if(size != 1) {
  6368. msg.prefix(player, prefix_commands, "/tpa <player>");
  6369. goto("wait");
  6370. }
  6371. p_name = list.getIndex(args, 0);
  6372. p_uuid = player.getUuid(p_name);
  6373. if(p_uuid == null) {
  6374. msg.prefix(player, prefix_commands, "This player has never been online.");
  6375. goto("wait");
  6376. }
  6377. p_name = player.getName(p_uuid);
  6378. p = read.player(p_name);
  6379. if(p == null) {
  6380. msg.prefix(player, prefix_commands, "This player is not online.");
  6381. goto("wait");
  6382. }
  6383. if(!player.doesAcceptTpaRequests(p)) {
  6384. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  6385. goto("wait");
  6386. }
  6387. if(!player.canTeleport(p)) {
  6388. msg.prefix(player, prefix_commands, "This player can't teleport now.");
  6389. goto("wait");
  6390. }
  6391. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6392. if(world.isGamesName(world_name)) {
  6393. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6394. goto("wait");
  6395. }
  6396. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6397. if(world.isGamesName(world_name)) {
  6398. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6399. goto("wait");
  6400. }
  6401. addTpaRequest(player.getUuid(player), p_uuid);
  6402. msg(player, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  6403. msg(p, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccept ", player_name)));
  6404. goto("wait");
  6405. @tpahere
  6406. if(size != 1) {
  6407. msg.prefix(player, prefix_commands, "/tpahere <player>");
  6408. goto("wait");
  6409. }
  6410. p_name = list.getIndex(args, 0);
  6411. p_uuid = player.getUuid(p_name);
  6412. if(p_uuid == null) {
  6413. msg.prefix(player, prefix_commands, "This player has never been online.");
  6414. goto("wait");
  6415. }
  6416. p_name = player.getName(p_uuid);
  6417. p = read.player(p_name);
  6418. if(p == null) {
  6419. msg.prefix(player, prefix_commands, "This player is not online.");
  6420. goto("wait");
  6421. }
  6422. if(!player.canTeleport(p)) {
  6423. msg.prefix(player, prefix_commands, "This player can't teleport now.");
  6424. goto("wait");
  6425. }
  6426. if(!player.doesAcceptTpaRequests(p)) {
  6427. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  6428. goto("wait");
  6429. }
  6430. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6431. if(world.isGamesName(world_name)) {
  6432. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to this world."));
  6433. goto("wait");
  6434. }
  6435. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6436. if(world.isGamesName(world_name)) {
  6437. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  6438. goto("wait");
  6439. }
  6440. addTpaRequest(p_uuid, player.getUuid(player));
  6441. msg(player, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  6442. msg(p, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccepthere ", player_name)));
  6443. goto("wait");
  6444. @tpaccept
  6445. if(size != 1) {
  6446. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  6447. goto("wait");
  6448. }
  6449. p_name = list.getIndex(args, 0);
  6450. p_uuid = player.getUuid(p_name);
  6451. if(p_uuid == null) {
  6452. msg.prefix(player, prefix_commands, "This player has never been online.");
  6453. goto("wait");
  6454. }
  6455. p_name = player.getName(p_uuid);
  6456. p = read.player(p_name);
  6457. if(p == null) {
  6458. msg.prefix(player, prefix_commands, "This player is not online.");
  6459. goto("wait");
  6460. }
  6461. if(!player.canTeleport(player)) {
  6462. msg.prefix(player, prefix_commands, "This player can't teleport to you now.");
  6463. goto("wait");
  6464. }
  6465. if(!player.canTeleport(p)) {
  6466. msg.prefix(player, prefix_commands, "This player can't teleport to you now.");
  6467. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  6468. }
  6469. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6470. if(world.isGamesName(world_name)) {
  6471. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to your world."));
  6472. goto("wait");
  6473. }
  6474. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6475. if(world.isGamesName(world_name)) {
  6476. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  6477. goto("wait");
  6478. }
  6479. player_uuid = player.getUuid(player);
  6480. if(!hasTpaRequest(p_uuid, player_uuid)) {
  6481. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  6482. goto("wait");
  6483. }
  6484. location = entity.getLocation(player);
  6485. player.teleport(p, location, true);
  6486. goto("wait");
  6487. @tpaccepthere
  6488. if(size != 1) {
  6489. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  6490. goto("wait");
  6491. }
  6492. p_name = list.getIndex(args, 0);
  6493. p_uuid = player.getUuid(p_name);
  6494. if(p_uuid == null) {
  6495. msg.prefix(player, prefix_commands, "This player has never been online.");
  6496. goto("wait");
  6497. }
  6498. p_name = player.getName(p_uuid);
  6499. p = read.player(p_name);
  6500. if(p == null) {
  6501. msg.prefix(player, prefix_commands, "This player is not online.");
  6502. goto("wait");
  6503. }
  6504. if(!player.canTeleport(player)) {
  6505. msg.prefix(p, prefix_commands, "This player can't teleport to you now.");
  6506. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  6507. }
  6508. if(!player.canTeleport(p)) {
  6509. msg.prefix(player, prefix_commands, "You must not teleport to this player now.");
  6510. goto("wait");
  6511. }
  6512. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6513. if(world.isGamesName(world_name)) {
  6514. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6515. goto("wait");
  6516. }
  6517. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6518. if(world.isGamesName(world_name)) {
  6519. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6520. goto("wait");
  6521. }
  6522. player_uuid = player.getUuid(player);
  6523. if(!hasTpaRequest(player_uuid, p_uuid)) {
  6524. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  6525. goto("wait");
  6526. }
  6527. location = entity.getLocation(p);
  6528. player.teleport(player, location, true);
  6529. goto("wait");
  6530. @teleport
  6531. if(size < 1 || size > 2) {
  6532. if(perm.has(player, "teleport.other")) {
  6533. msg.prefix(player, prefix_commands, "/teleport [player] <to-player>");
  6534. } else {
  6535. msg.prefix(player, prefix_commands, "/teleport <player>");
  6536. }
  6537. goto("wait");
  6538. }
  6539. if(size == 1) {
  6540. to_name = list.getIndex(args, 0);
  6541. }
  6542. elseif(size == 2) {
  6543. if(!perm.has(player, "teleport.other")) {
  6544. perm.no(player, "teleport.other");
  6545. goto("wait");
  6546. }
  6547. affectedname = list.getIndex(args, 0);
  6548. affectedplayer = read.player(affectedname);
  6549. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  6550. to_name = list.getIndex(args, 1);
  6551. if(affectedplayer == null) {
  6552. msg.prefix(player, prefix_commands, "This player is not online.");
  6553. goto("wait");
  6554. }
  6555. }
  6556. if(player.hasMinigame(affectedplayer)) {
  6557. if(size == 2) {
  6558. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  6559. goto("wait");
  6560. }
  6561. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6562. goto("wait");
  6563. }
  6564. to_player = read.player(to_name);
  6565. if(to_player == null) {
  6566. msg.prefix(player, prefix_commands, "This player is not online.");
  6567. goto("wait");
  6568. }
  6569. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  6570. to_name = player.getName(to_player);
  6571. location = entity.getLocation(to_player);
  6572. if(player.teleport(affectedplayer, location, true)) {
  6573. if(player != affectedplayer) {
  6574. affectedname = player.getName(affectedplayer);
  6575. msg.prefix(player, prefix_commands, concat("Teleported ", affectedname, " to ", to_name, "."));
  6576. }
  6577. msg.prefix(affectedplayer, prefix_commands, concat("Teleported you to ", to_name, "."));
  6578. }
  6579. goto("wait");
  6580. @say
  6581. if(size == 0) {
  6582. msg.prefix(sender, prefix_commands, "/say <text>");
  6583. goto("wait");
  6584. }
  6585. message = text.concatList(args, " ", 0, size - 1);
  6586. msg.server(message);
  6587. goto("wait");
  6588. @warp
  6589. if(size == 0) {
  6590. @warpsyntax
  6591. msg.prefix(player, prefix_commands, "/warp ...");
  6592. if(perm.has(player, "warp.create")) {
  6593. msg(player, "§6 - set [group] <warp> §rSets a warp");
  6594. msg(player, "§6 - delete [group] <warp> §rDeletes a warp");
  6595. msg(player, "§6 - [group] <warp> §rTeleports to a warp");
  6596. msg(player, "§6 - list [group] §rLists all warps");
  6597. msg(player, "§6 - groups §rLists all warp groups");
  6598. } else {
  6599. msg(player, "§6 - <warp> §rTeleports to a warp");
  6600. msg(player, "§6 - list §rLists all warps");
  6601. }
  6602. goto("wait");
  6603. }
  6604. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6605. if(arg0 == "delete") {
  6606. if(!perm.has(player, "warp.create")) {
  6607. perm.no(player, "warp.create");
  6608. goto("wait");
  6609. }
  6610. if(size < 2) {
  6611. goto("warpsyntax");
  6612. }
  6613. if(size == 2) {
  6614. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6615. warp_group = "default";
  6616. } else {
  6617. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6618. warp_name = text.toLowerCase(list.getIndex(args, 2));
  6619. }
  6620. if(warp.delete(warp_group, warp_name)) {
  6621. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " deleted."));
  6622. } else {
  6623. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  6624. }
  6625. goto("wait");
  6626. }
  6627. if(arg0 == "list") {
  6628. if(size == 1) {
  6629. warp_group = "default";
  6630. } else {
  6631. if(!perm.has(player, "warp.create")) {
  6632. perm.no(player, "warp.create");
  6633. goto("wait");
  6634. }
  6635. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6636. }
  6637. warps_list = warp.getList(warp_group);
  6638. if(list.getSize(warps_list) == 0) {
  6639. msg.prefix(player, prefix_commands, "No warps existing.");
  6640. } else {
  6641. msg.prefix(player, prefix_commands, concat("§6", warp_group, "§r warps:"));
  6642. for(i = 0; i < list.getSize(warps_list); i++) {
  6643. msg(player, concat("§6 - §r", list.getIndex(warps_list, i)));
  6644. }
  6645. }
  6646. goto("wait");
  6647. }
  6648. if(arg0 == "groups") {
  6649. if(!perm.has(player, "warp.create")) {
  6650. perm.no(player, "warp.create");
  6651. goto("wait");
  6652. }
  6653. groups_list = warp.getGroups();
  6654. msg.prefix(player, prefix_commands, "All warp groups:");
  6655. for(i = 0; i < list.getSize(groups_list); i++) {
  6656. msg(player, concat("§6 - §r", list.getIndex(groups_list, i)));
  6657. }
  6658. goto("wait");
  6659. }
  6660. if(arg0 == "set") {
  6661. if(!perm.has(player, "warp.create")) {
  6662. perm.no(player, "warp.create");
  6663. goto("wait");
  6664. }
  6665. if(size < 2) {
  6666. goto("warpsyntax");
  6667. }
  6668. if(size == 2) {
  6669. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6670. warp_group = "default";
  6671. } else {
  6672. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6673. warp_name = text.toLowerCase(list.getIndex(args, 2));
  6674. }
  6675. if(warp.exists(warp_group, warp_name)) {
  6676. msg.prefix(player, prefix_commands, "Warpname already exists.");
  6677. goto("wait");
  6678. }
  6679. warp.create(warp_group, warp_name, entity.getLocation(player));
  6680. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " set."));
  6681. goto("wait");
  6682. }
  6683. //Teleportation
  6684. if(size == 1) {
  6685. warp_name = arg0;
  6686. warp_group = "default";
  6687. } else {
  6688. if(!perm.has(player, "warp.create")) {
  6689. perm.no(player, "warp.create");
  6690. goto("wait");
  6691. }
  6692. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6693. warp_group = arg0;
  6694. }
  6695. warp_loc = warp.get(warp_group, warp_name);
  6696. if(warp_loc == null) {
  6697. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  6698. goto("wait");
  6699. }
  6700. if(!perm.has(player, "warp.create")) {
  6701. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6702. if(world.isGamesName(world_name)) {
  6703. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6704. goto("wait");
  6705. }
  6706. world_name = world.getName(loc.getWorld(warp_loc));
  6707. if(world.isGamesName(world_name)) {
  6708. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6709. goto("wait");
  6710. }
  6711. }
  6712. if(player.teleport(player, warp_loc, true)) {
  6713. msg.prefix(player, prefix_commands, concat("You have been teleported to warp §7", warp_name, "."));
  6714. }
  6715. goto("wait");
  6716. @databank
  6717. if(size == 0) {
  6718. @databankhelp
  6719. msg.prefix(player, prefix_commands, "/databank...");
  6720. msg(player, "§6 - showtables §rShows all tables");
  6721. msg(player, "§6 - showfields §rShows fields from a table");
  6722. msg(player, "§6 - showdataypes §rShows dataypes from a table");
  6723. goto("wait");
  6724. }
  6725. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6726. if(arg0 == "showtables") {
  6727. msg(player, getSpacer());
  6728. stmt = databank.prepare("SHOW TABLES");
  6729. result = databank.execute(stmt);
  6730. while(databank.next(result)) {
  6731. msg(player, databank.getString(result, 1));
  6732. }
  6733. databank.close(result);
  6734. databank.close(stmt);
  6735. goto("wait");
  6736. }
  6737. if(arg0 == "showfields") {
  6738. if(size < 2) {
  6739. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  6740. goto("wait");
  6741. }
  6742. table = list.getIndex(args, 1);
  6743. if(!databank.isExistingTable(table)) {
  6744. msg.prefix(player, prefix_commands, "This in no existing table.");
  6745. goto("wait");
  6746. }
  6747. msg(player, getSpacer());
  6748. fields = databank.getTableFields(table);
  6749. iter = list.iterator(fields);
  6750. while(hasNext(iter)) {
  6751. msg(player, next(iter));
  6752. }
  6753. goto("wait");
  6754. }
  6755. if(arg0 == "showdataypes") {
  6756. if(size < 2) {
  6757. msg.prefix(player, prefix_commands, "/databank showdataypes <table>");
  6758. goto("wait");
  6759. }
  6760. table = list.getIndex(args, 1);
  6761. if(!databank.isExistingTable(table)) {
  6762. msg.prefix(player, prefix_commands, "This in no existing table.");
  6763. goto("wait");
  6764. }
  6765. msg(player, getSpacer());
  6766. msg(player, databank.getTableDatatypes(table));
  6767. goto("wait");
  6768. }
  6769. goto("databankhelp");
  6770. @seen
  6771. if(size != 1) {
  6772. msg.prefix(player, prefix_commands, "/seen <player>");
  6773. goto("wait");
  6774. }
  6775. seen_name = list.getIndex(args, 0);
  6776. seen_uuid = player.getUuid(seen_name);
  6777. if(seen_uuid == null) {
  6778. msg.prefix(player, prefix_commands, "Dieser Spieler war noch nie online.");
  6779. goto("wait");
  6780. }
  6781. if(read.player(seen_name) != null) {
  6782. msg.prefix(player, prefix_commands, "Dieser Spieler ist gerade online.");
  6783. goto("wait");
  6784. }
  6785. seenStatement = databank.prepare("SELECT MAX(leave_time) FROM playtime WHERE player_id = ?;");
  6786. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  6787. result = databank.execute(seenStatement);
  6788. varset = false;
  6789. while(databank.next(result)) {
  6790. time = databank.getLong(result, 1);
  6791. calendar = time.new(time);
  6792. year = text.number(time.getYear(calendar));
  6793. month = text.number(time.getMonth(calendar));
  6794. day = text.number(time.getDay(calendar));
  6795. minute = text.number(time.getMinute(calendar));
  6796. hour = text.number(time.getHour(calendar));
  6797. month = correctTimeFormat(month);
  6798. day = correctTimeFormat(day);
  6799. hour = correctTimeFormat(hour);
  6800. minute = correctTimeFormat(minute);
  6801. dateformat = concat(day, ".", month, ".", year);
  6802. clockformat = concat(hour, ":", minute);
  6803. msg.prefix(player, prefix_commands, concat(seen_name, " war zuletzt am §e", dateformat, "§r um §e", clockformat, " Uhr §ronline."));
  6804. varset = true;
  6805. }
  6806. databank.close(result);
  6807. databank.close(seenStatement);
  6808. if(!varset) {
  6809. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  6810. goto("wait");
  6811. }
  6812. goto("wait");
  6813. @lastseen
  6814. if(size != 1) {
  6815. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  6816. goto("wait");
  6817. }
  6818. amount = list.getIndex(args, 0);
  6819. if(!isDouble(amount)) {
  6820. msg.prefix(sender, prefix_commands, "Number expected.");
  6821. goto("wait");
  6822. }
  6823. if(amount < 1) {
  6824. msg.prefix(sender, prefix_commands, "Positive number expected.");
  6825. goto("wait");
  6826. }
  6827. msg.prefix(sender, prefix_commands, "These players were last seen:");
  6828. table = table.new("§f", 12, 12);
  6829. msg(sender, table.getStart(table));
  6830. msg(sender, table.get(table, "Player", "Date"));
  6831. msg(sender, table.getMiddle(table));
  6832. lastseenStatement = databank.prepare("SELECT player_id, MAX(leave_time) AS max_time FROM playtime GROUP BY player_id ORDER BY max_time DESC LIMIT ?;");
  6833. databank.setInt(lastseenStatement, 1, amount);
  6834. result = databank.execute(lastseenStatement);
  6835. while(databank.next(result)) {
  6836. id = databank.getInt(result, 1);
  6837. time = databank.getLong(result, 2);
  6838. msg(sender, table.get(table, concat("§a", player.getNameFromId(id)), concat("§e", getTimeString(time))));
  6839. }
  6840. msg(sender, table.getEnd(table));
  6841. databank.close(result);
  6842. databank.close(lastseenStatement);
  6843. goto("wait");
  6844. @feed
  6845. if(size > 1) {
  6846. msg.prefix(player, prefix_commands, "/feed [player]");
  6847. goto("wait");
  6848. }
  6849. if(size == 1) {
  6850. affectedname = list.getIndex(args, 0);
  6851. affectedplayer = read.player(affectedname);
  6852. if(affectedplayer == null) {
  6853. msg.prefix(player, prefix_commands, "This player is not online.");
  6854. goto("wait");
  6855. }
  6856. if(player != affectedplayer) {
  6857. affectedname = player.getName(affectedplayer);
  6858. msg.prefix(player, prefix_commands, concat("Der Hunger von ", affectedname, " wurde gestillt."));
  6859. }
  6860. }
  6861. player.setHunger(affectedplayer, 20);
  6862. player.setSaturation(affectedplayer, 5);
  6863. msg.prefix(affectedplayer, prefix_commands, "Dein Hunger wurde gestillt.");
  6864. goto("wait");
  6865. @tempfly
  6866. if(size < 2) {
  6867. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  6868. goto("wait");
  6869. }
  6870. p_name = list.getIndex(args, 0);
  6871. if(!checkIfEverOnline(p_name)) {
  6872. msg.prefix(sender, prefix_commands, "This player has never been online.");
  6873. goto("wait");
  6874. }
  6875. p = read.player(p_name);
  6876. if(p == null) {
  6877. msg.prefix(sender, prefix_commands, "This player is not online.");
  6878. goto("wait");
  6879. }
  6880. p_name = player.getName(player.getUuid(p_name));
  6881. if(player.hasMinigame(p)) {
  6882. msg.prefix(player, prefix_commands, "This player can't fly now.");
  6883. goto("wait");
  6884. }
  6885. sec = list.getIndex(args, 1);
  6886. if(!isDouble(sec) || sec < 0) {
  6887. msg.prefix(sender, prefix_commands, "Positive number expected.");
  6888. goto("wait");
  6889. }
  6890. msg.prefix(sender, prefix_commands, concat(p_name, " can now fly for ", text.number(sec), " seconds."));
  6891. msg.prefix(p, prefix_commands, concat("You can now fly for ", text.number(sec), " seconds."));
  6892. player.setFly(p, true);
  6893. duration = sec * 20;
  6894. data.setTimer(p, "fly", duration);
  6895. status.addTimed(player, 55, duration, "Fly");
  6896. goto("wait");
  6897. @fly
  6898. if(size > 2) {
  6899. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  6900. goto("wait");
  6901. }
  6902. if(size >= 1) {
  6903. if(!perm.has(player, "fly.other")) {
  6904. perm.no(player, "fly.other");
  6905. goto("wait");
  6906. }
  6907. affectedname = list.getIndex(args, 0);
  6908. affectedplayer = read.player(affectedname);
  6909. if(affectedplayer == null) {
  6910. msg.prefix(player, prefix_commands, "This player is not online.");
  6911. goto("wait");
  6912. }
  6913. }
  6914. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6915. if(world.isGamesName(world_name)) {
  6916. if(player.hasMinigame(affectedplayer) || (perm.has(affectedplayer, "fly") && !perm.has(affectedplayer, "isTeam"))) {
  6917. if(size == 2) {
  6918. msg.prefix(player, prefix_commands, "This player can't fly now.");
  6919. } else {
  6920. msg.prefix(player, prefix_commands, "You can't fly now.");
  6921. }
  6922. goto("wait");
  6923. }
  6924. }
  6925. if(size == 2) {
  6926. boolean = list.getIndex(args, 1);
  6927. if(boolean == "on") {
  6928. fly = true;
  6929. } elseif(boolean == "off") {
  6930. fly = false;
  6931. } else {
  6932. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  6933. goto("wait");
  6934. }
  6935. } else {
  6936. if(player.hasFly(affectedplayer)) {
  6937. fly = false;
  6938. } else {
  6939. fly = true;
  6940. }
  6941. }
  6942. player.setFly(affectedplayer, fly);
  6943. if(fly) {
  6944. msg.prefix(affectedplayer, prefix_commands, "You can fly now.");
  6945. if(player != affectedplayer) {
  6946. affectedname = player.getName(affectedplayer);
  6947. msg.prefix(player, prefix_commands, concat(affectedname, " can fly now."));
  6948. }
  6949. } else {
  6950. msg.prefix(affectedplayer, prefix_commands, "You can't fly anymore.");
  6951. if(player != affectedplayer) {
  6952. affectedname = player.getName(affectedplayer);
  6953. msg.prefix(player, prefix_commands, concat(affectedname, " can't fly anymore."));
  6954. }
  6955. }
  6956. goto("wait");
  6957. @tppos
  6958. if(size < 3 || size > 5) {
  6959. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  6960. goto("wait");
  6961. }
  6962. x = list.getIndex(args, 0);
  6963. y = list.getIndex(args, 1);
  6964. z = list.getIndex(args, 2);
  6965. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  6966. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  6967. goto("wait");
  6968. }
  6969. if(size >= 4) {
  6970. worldname = list.getIndex(args, 3);
  6971. world = world.get(worldname);
  6972. if(world == null) {
  6973. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6974. goto("wait");
  6975. }
  6976. } else {
  6977. world = loc.getWorld(entity.getLocation(player));
  6978. }
  6979. if(x < -32000) {
  6980. x = -32000;
  6981. } elseif(x > 32000) {
  6982. x = 32000;
  6983. }
  6984. if(y < 0) {
  6985. y = 0;
  6986. } elseif(y > 255) {
  6987. y = 255;
  6988. }
  6989. if(z < -32000) {
  6990. z = -32000;
  6991. } elseif(z > 32000) {
  6992. z = 32000;
  6993. }
  6994. location = loc.new(world, x, y, z);
  6995. if(size == 5) {
  6996. affectedname = list.getIndex(args, 4);
  6997. affectedplayer = read.player(affectedname);
  6998. if(affectedplayer == null) {
  6999. msg.prefix(player, prefix_commands, "This player is not online.");
  7000. goto("wait");
  7001. }
  7002. }
  7003. if(player.hasMinigame(affectedplayer)) {
  7004. if(size == 5) {
  7005. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  7006. goto("wait");
  7007. }
  7008. msg.prefix(player, prefix_commands, "You can't teleport now.");
  7009. goto("wait");
  7010. }
  7011. if(player.teleport(affectedplayer, location, true)) {
  7012. if(player != affectedplayer) {
  7013. affectedname = player.getName(affectedplayer);
  7014. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported."));
  7015. }
  7016. }
  7017. goto("wait");
  7018. @back
  7019. if(size > 0) {
  7020. msg.prefix(player, prefix_commands, "/back");
  7021. goto("wait");
  7022. }
  7023. if(!player.canTeleport(player)) {
  7024. msg.prefix(player, prefix_commands, "You can't teleport now.");
  7025. goto("wait");
  7026. }
  7027. hasPerms = perm.has(player, "isTeam");
  7028. if(!hasPerms) {
  7029. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7030. if(world.isGamesName(world_name) || world.isStoryName(world_name)) {
  7031. msg.prefix(player, prefix_commands, "You can't use /back in this world.");
  7032. goto("wait");
  7033. }
  7034. }
  7035. location = player.getBackPos(player);
  7036. if(location == null) {
  7037. msg.prefix(player, prefix_commands, "No back-location available.");
  7038. goto("wait");
  7039. }
  7040. world = loc.getWorld(location);
  7041. if(world == null) {
  7042. msg.prefix(player, prefix_commands, "This world is not loaded.");
  7043. goto("wait");
  7044. }
  7045. if(!hasPerms) {
  7046. world_name = world.getName(world);
  7047. if(world.isGamesName(world_name)) {
  7048. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  7049. goto("wait");
  7050. }
  7051. }
  7052. player.teleport(player, location, true);
  7053. goto("wait");
  7054. @clan
  7055. if(size == 0) {
  7056. @clanhelp
  7057. msg.prefix(player, prefix_clan, "§r/clan...");
  7058. msg(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  7059. msg(player, "§2 - list §rLists all clans");
  7060. msg(player, "");
  7061. msg(player, "§2 - create <name> <tag> §rCreates a clan. Costs §64096 §rsnuvis.");
  7062. msg(player, "§2 - invite <name> §rInvites a player");
  7063. msg(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  7064. msg(player, "");
  7065. msg(player, "§2 - kick <name> §rKicks a player");
  7066. msg(player, "§2 - leader <name> §rPromote to clan-leader");
  7067. msg(player, "§2 - mod <name> §rPromote to clan-mod");
  7068. msg(player, "§2 - degrade <name> §rDemote a clan-mod");
  7069. msg(player, "§2 - leave §rLeave a clan");
  7070. msg(player, "");
  7071. msg(player, "§2 - rename <name> <tag> §rRenames a clan. Costs §664 §rsnuvis.");
  7072. msg(player, "§2 - setspawn §rSets a clan-spawn");
  7073. msg(player, "§2 - spawn §rTeleports to clan-spawn");
  7074. msg(player, "§2 - disband §rDisband a clan");
  7075. msg(player, "");
  7076. msg(player, "§2 - deposit <money> §rDeposit money to the clan account");
  7077. msg(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  7078. msg(player, "§2 - msg <message> §rSends a clan-message");
  7079. msg(player, "§2 - mail <message> §rSends a clan-mail");
  7080. msg(player, "§2 - shout <message> §rSends a message to all online players. Costs §664 §rsnuvis.");
  7081. msg(player, "§2 - party §rInvites all online members to a party");
  7082. goto("wait");
  7083. }
  7084. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7085. if(arg0 == "invite") {
  7086. if(size != 2) {
  7087. msg.prefix(player, prefix_commands, "/clan invite <name>");
  7088. goto("wait");
  7089. }
  7090. if(!player.isInClan(player)) {
  7091. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7092. goto("wait");
  7093. }
  7094. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7095. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7096. goto("wait");
  7097. }
  7098. p_name = list.getIndex(args, 1);
  7099. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7100. msg.prefix(player, prefix_clan, "You can't invite yourself.");
  7101. goto("wait");
  7102. }
  7103. if(!checkIfEverOnline(p_name)) {
  7104. msg.prefix(sender, prefix_clan, "This player has never been online.");
  7105. goto("wait");
  7106. }
  7107. if(!isOnline(p_name)) {
  7108. msg.prefix(player, prefix_clan, "This player has to be online.");
  7109. goto("wait");
  7110. }
  7111. p = read.player(p_name);
  7112. if(player.isClanMember(player)) {
  7113. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  7114. goto("wait");
  7115. }
  7116. clan_id = player.getClanId(player);
  7117. p_id = player.getId(p);
  7118. if(player.hasClanInvitation(p_id, clan_id)) {
  7119. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  7120. goto("wait");
  7121. }
  7122. player.addClanInvitation(p_id, clan_id);
  7123. clan_name = clan.getName(clan_id);
  7124. msg.prefix(player, prefix_clan, text.concat("You invited §7", p_name, "§r to your clan."));
  7125. msg.prefix(p, prefix_clan, text.concat("You got an clan invitation by §7", clan_name, "§r."));
  7126. msg(p, text.click("§r[§aAccept§r]", concat("/clan accept ", clan_id)));
  7127. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  7128. goto("wait");
  7129. }
  7130. if(arg0 == "accept") {
  7131. if(size != 2) {
  7132. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  7133. goto("wait");
  7134. }
  7135. if(player.isInClan(player)) {
  7136. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7137. goto("wait");
  7138. }
  7139. arg1 = list.getIndex(args, 1);
  7140. if(isDouble(arg1)) {
  7141. clan_id = arg1;
  7142. clan_name = clan.getName(clan_id);
  7143. if(clan_name == null) {
  7144. msg.prefix(player, prefix_clan, "Unknown clan.");
  7145. goto("wait");
  7146. }
  7147. } else {
  7148. clan_id = clan.getIdFromName(arg1);
  7149. if(clan_id == null) {
  7150. clan_id = clan.getIdFromTag(arg1);
  7151. if(clan_id == null) {
  7152. msg.prefix(player, prefix_clan, "Unknown clan.");
  7153. goto("wait");
  7154. }
  7155. }
  7156. }
  7157. player_id = player.getId(player);
  7158. if(!player.hasClanInvitation(player_id, clan_id)) {
  7159. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  7160. goto("wait");
  7161. }
  7162. clan.addMember(clan_id, player, "member");
  7163. player.setHeadName(player);
  7164. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r joined the clan."));
  7165. msg.prefix(player, prefix_clan, text.concat("You joined §7", clan_name, "§r."));
  7166. clan_size = clan.getMembersAmount(clan_id);
  7167. if(clan_size >= 15) {
  7168. rank.offerClan(clan_id, "rank.lord");
  7169. } elseif(clan_size >= 10) {
  7170. rank.offerClan(clan_id, "rank.chief");
  7171. } elseif(clan_size >= 5) {
  7172. rank.offerClan(clan_id, "rank.commander");
  7173. }
  7174. goto("wait");
  7175. }
  7176. if(arg0 == "create") {
  7177. if(size != 3) {
  7178. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  7179. goto("wait");
  7180. }
  7181. if(player.isInClan(player)) {
  7182. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7183. goto("wait");
  7184. }
  7185. clan_name = list.getIndex(args, 1);
  7186. if(text.length(clan_name) > 20) {
  7187. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7188. goto("wait");
  7189. }
  7190. if(!text.onlyletters(clan_name)) {
  7191. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7192. goto("wait");
  7193. }
  7194. if(clan.isExistingName(clan_name)) {
  7195. msg.prefix(player, prefix_clan, "This name already exists.");
  7196. goto("wait");
  7197. }
  7198. clan_tag = list.getIndex(args, 2);
  7199. tag_length = text.length(clan_tag);
  7200. if(tag_length < 3 || tag_length > 4) {
  7201. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7202. goto("wait");
  7203. }
  7204. if(!text.onlyletters(clan_tag)) {
  7205. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7206. goto("wait");
  7207. }
  7208. if(clan.isExistingTag(clan_tag)) {
  7209. msg.prefix(player, prefix_clan, "This tag already exists.");
  7210. goto("wait");
  7211. }
  7212. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  7213. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  7214. goto("wait");
  7215. }
  7216. subMoney(player, 4096);
  7217. clan_id = clan.create(clan_name, clan_tag);
  7218. clan.addMember(clan_id, player, "leader");
  7219. player.setHeadName(player);
  7220. msg.prefix(player, prefix_clan, "Clan successful created.");
  7221. goto("wait");
  7222. }
  7223. if(arg0 == "info") {
  7224. if(size == 1) {
  7225. if(!player.isInClan(player)) {
  7226. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  7227. goto("wait");
  7228. }
  7229. clan_id = player.getClanId(player);
  7230. clan_name = clan.getName(clan_id);
  7231. clan_tag = clan.getTag(clan_id);
  7232. }
  7233. if(size == 2) {
  7234. arg1 = list.getIndex(args, 1);
  7235. if(isDouble(arg1)) {
  7236. clan_id = arg1;
  7237. clan_name = clan.getName(clan_id);
  7238. if(clan_name == null) {
  7239. msg.prefix(player, prefix_clan, "Unknown clan.");
  7240. goto("wait");
  7241. }
  7242. } else {
  7243. clan_id = clan.getIdFromName(arg1);
  7244. if(clan_id == null) {
  7245. clan_id = clan.getIdFromTag(arg1);
  7246. if(clan_id == null) {
  7247. msg.prefix(player, prefix_clan, "Unknown clan.");
  7248. goto("wait");
  7249. }
  7250. }
  7251. clan_name = clan.getName(clan_id);
  7252. }
  7253. clan_tag = clan.getTag(clan_id);
  7254. }
  7255. list = clan.getMembersList(clan_id);
  7256. mod_list = list.new();
  7257. members_list = list.new();
  7258. iter = list.iterator(list);
  7259. while(hasNext(iter)) {
  7260. player_uuid = next(iter);
  7261. player_name = player.getName(player_uuid);
  7262. player_id = player.getId(player_uuid);
  7263. if(player.isClanLeader(player_id)) {
  7264. leader = player_name;
  7265. } else {
  7266. if(player.isClanMod(player_id)) {
  7267. list.add(mod_list, player_name);
  7268. } else {
  7269. list.add(members_list, player_name);
  7270. }
  7271. }
  7272. }
  7273. if(list.getSize(mod_list) == 0) {
  7274. mods = "-";
  7275. } else {
  7276. mods = text.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  7277. }
  7278. if(list.getSize(members_list) == 0) {
  7279. members = "-";
  7280. } else {
  7281. members = text.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  7282. }
  7283. msg(player, text.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", text.number(clan_id), ")"));
  7284. msg(player, "§6Leader");
  7285. msg(player, "§r", leader);
  7286. msg(player, "§6Mods");
  7287. msg(player, "§r", mods);
  7288. msg(player, "§6Members");
  7289. msg(player, "§r", members);
  7290. msg(player, "§6Money");
  7291. msg(player, text.number(clan.getMoney(clan_id)));
  7292. goto("wait");
  7293. }
  7294. if(arg0 == "rename") {
  7295. if(!player.isInClan(player)) {
  7296. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7297. goto("wait");
  7298. }
  7299. if(!player.isClanLeader(player)) {
  7300. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7301. goto("wait");
  7302. }
  7303. if(size != 3) {
  7304. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  7305. goto("wait");
  7306. }
  7307. clan_name = list.getIndex(args, 1);
  7308. if(text.length(clan_name) > 20) {
  7309. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7310. goto("wait");
  7311. }
  7312. if(!text.onlyletters(clan_name)) {
  7313. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7314. goto("wait");
  7315. }
  7316. if(clan.isExistingName(clan_name)) {
  7317. msg.prefix(player, prefix_clan, "This name already exists.");
  7318. goto("wait");
  7319. }
  7320. clan_tag = list.getIndex(args, 2);
  7321. tag_length = text.length(clan_tag);
  7322. if(tag_length < 3 || tag_length > 4) {
  7323. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7324. goto("wait");
  7325. }
  7326. if(!text.onlyletters(clan_tag)) {
  7327. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7328. goto("wait");
  7329. }
  7330. if(clan.isExistingTag(clan_tag)) {
  7331. msg.prefix(player, prefix_clan, "This tag already exists.");
  7332. goto("wait");
  7333. }
  7334. clan_id = player.getClanId(player);
  7335. if(clan.getMoney(clan_id) < 64) {
  7336. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7337. goto("wait");
  7338. }
  7339. clan.subMoney(clan_id, 64);
  7340. clan.setName(clan_id, clan_name);
  7341. clan.setTag(clan_id, clan_tag);
  7342. clan.msg(clan_id, text.concat("Clan renamed to §7", clan_name, "§r."));
  7343. //New tag for online players
  7344. clan.updateHeadNames(clan_id);
  7345. goto("wait");
  7346. }
  7347. if(arg0 == "msg") {
  7348. if(!player.isInClan(player)) {
  7349. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7350. goto("wait");
  7351. }
  7352. if(size < 2) {
  7353. msg.prefix(player, prefix_commands, "/clan msg <message>");
  7354. goto("wait");
  7355. }
  7356. clan_id = player.getClanId(player);
  7357. clan.msg(clan_id, text.concat(player.getName(player), ": ", text.concatList(args, " ", 1, size - 1)));
  7358. goto("wait");
  7359. }
  7360. if(arg0 == "mail") {
  7361. if(!player.isInClan(player)) {
  7362. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7363. goto("wait");
  7364. }
  7365. if(size < 2) {
  7366. msg.prefix(player, prefix_commands, "/clan mail <message>");
  7367. goto("wait");
  7368. }
  7369. if(player.isClanMember(player)) {
  7370. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7371. goto("wait");
  7372. }
  7373. clan_id = player.getClanId(player);
  7374. clan.mail(clan_id, player.getName(player), text.concatList(args, " ", 1, size - 1));
  7375. goto("wait");
  7376. }
  7377. if(arg0 == "shout") {
  7378. if(!player.isInClan(player)) {
  7379. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7380. goto("wait");
  7381. }
  7382. if(size < 2) {
  7383. msg.prefix(player, prefix_commands, "/clan shout <message>");
  7384. goto("wait");
  7385. }
  7386. if(player.isClanMember(player)) {
  7387. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7388. goto("wait");
  7389. }
  7390. clan_id = player.getClanId(player);
  7391. if(clan.getMoney(clan_id) < 64) {
  7392. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7393. goto("wait");
  7394. }
  7395. clan.subMoney(clan_id, 64);
  7396. msg.prefix("online", prefix_clan, text.concat(clan.getTag(clan_id), ": ", text.concatList(args, " ", 1, size - 1)));
  7397. goto("wait");
  7398. }
  7399. if(arg0 == "deposit") {
  7400. if(!player.isInClan(player)) {
  7401. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7402. goto("wait");
  7403. }
  7404. if(size != 2) {
  7405. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  7406. goto("wait");
  7407. }
  7408. money = list.getIndex(args, 1);
  7409. if(!isDouble(money) || money < 0) {
  7410. msg.prefix(player, prefix_clan, "Positive number expected.");
  7411. goto("wait");
  7412. }
  7413. if(!hasEnoughMoney(player, money)) {
  7414. msg.prefix(player, prefix_clan, "You can't transfer more money than you have.");
  7415. goto("wait");
  7416. }
  7417. clan_id = player.getClanId(player);
  7418. clan.addMoney(clan_id, money);
  7419. subMoney(player, money);
  7420. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r transferred §7", text.number(money), "§r snuvis."));
  7421. goto("wait");
  7422. }
  7423. if(arg0 == "party") {
  7424. counter = 0;
  7425. clan_id = player.getClanId(player);
  7426. list = clan.getMembersList(clan_id);
  7427. iter = list.iterator(list);
  7428. while(hasNext(iter)) {
  7429. p = player.get(next(iter));
  7430. if(p != null) {
  7431. temp = party.invitePlayer(player, p);
  7432. if(temp == true) {
  7433. counter++;
  7434. }
  7435. }
  7436. }
  7437. msg.prefix(player, prefix_clan, concat(text.number(counter), " online clan members invited to a party."));
  7438. goto("wait");
  7439. }
  7440. if(arg0 == "withdraw") {
  7441. if(!player.isInClan(player)) {
  7442. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7443. goto("wait");
  7444. }
  7445. if(!player.isClanLeader(player)) {
  7446. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7447. goto("wait");
  7448. }
  7449. if(size != 2) {
  7450. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  7451. goto("wait");
  7452. }
  7453. money = list.getIndex(args, 1);
  7454. if(!isDouble(money) || money < 0) {
  7455. msg.prefix(player, prefix_clan, "Positive number expected.");
  7456. goto("wait");
  7457. }
  7458. clan_id = player.getClanId(player);
  7459. clan_money = clan.getMoney(clan_id);
  7460. if(clan_money < money) {
  7461. msg.prefix(player, prefix_clan, text.concat("There are only §7", text.number(clan_money), "§r snuvis on the clan account."));
  7462. goto("wait");
  7463. }
  7464. clan.subMoney(clan_id, money);
  7465. addMoney(player, money);
  7466. msg.prefix(player, prefix_clan, text.concat("You have withdrawn §7", text.number(money), "§r snuvis."));
  7467. goto("wait");
  7468. }
  7469. if(arg0 == "leader") {
  7470. if(!player.isInClan(player)) {
  7471. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7472. goto("wait");
  7473. }
  7474. if(!player.isClanLeader(player)) {
  7475. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7476. goto("wait");
  7477. }
  7478. if(size != 2) {
  7479. msg.prefix(player, prefix_commands, "/clan leader <name>");
  7480. goto("wait");
  7481. }
  7482. p_name = list.getIndex(args, 1);
  7483. if(!checkIfEverOnline(p_name)) {
  7484. msg.prefix(player, prefix_clan, "This player has never been online.");
  7485. goto("wait");
  7486. }
  7487. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7488. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7489. goto("wait");
  7490. }
  7491. p_uuid = player.getUuid(p_name);
  7492. p_id = player.getId(p_uuid);
  7493. if(!player.isSameClan(player, p_id)) {
  7494. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7495. goto("wait");
  7496. }
  7497. player.setClanRole(p_id, "leader");
  7498. player.setClanRole(player, "mod");
  7499. clan_id = player.getClanId(player);
  7500. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan leader."));
  7501. goto("wait");
  7502. }
  7503. if(arg0 == "mod") {
  7504. if(!player.isInClan(player)) {
  7505. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7506. goto("wait");
  7507. }
  7508. if(!player.isClanLeader(player)) {
  7509. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7510. goto("wait");
  7511. }
  7512. if(size != 2) {
  7513. msg.prefix(player, prefix_commands, "/clan leader <name>");
  7514. goto("wait");
  7515. }
  7516. p_name = list.getIndex(args, 1);
  7517. if(!checkIfEverOnline(p_name)) {
  7518. msg.prefix(player, prefix_clan, "This player has never been online.");
  7519. goto("wait");
  7520. }
  7521. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7522. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7523. goto("wait");
  7524. }
  7525. p_uuid = player.getUuid(p_name);
  7526. p_id = player.getId(p_uuid);
  7527. if(!player.isSameClan(player, p_id)) {
  7528. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7529. goto("wait");
  7530. }
  7531. player.setClanRole(p_id, "mod");
  7532. clan_id = player.getClanId(player);
  7533. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan mod."));
  7534. goto("wait");
  7535. }
  7536. if(arg0 == "degrade") {
  7537. if(!player.isInClan(player)) {
  7538. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7539. goto("wait");
  7540. }
  7541. if(!player.isClanLeader(player)) {
  7542. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7543. goto("wait");
  7544. }
  7545. if(size != 2) {
  7546. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  7547. goto("wait");
  7548. }
  7549. p_name = list.getIndex(args, 1);
  7550. if(!checkIfEverOnline(p_name)) {
  7551. msg.prefix(player, prefix_clan, "This player has never been online.");
  7552. goto("wait");
  7553. }
  7554. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7555. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7556. goto("wait");
  7557. }
  7558. p_uuid = player.getUuid(p_name);
  7559. p_id = player.getId(p_uuid);
  7560. if(!player.isSameClan(player, p_id)) {
  7561. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7562. goto("wait");
  7563. }
  7564. player.setClanRole(p_id, "member");
  7565. clan_id = player.getClanId(player);
  7566. clan.msg(clan_id, text.concat("§7", p_name, "§r was degraded."));
  7567. goto("wait");
  7568. }
  7569. if(arg0 == "kick") {
  7570. if(!player.isInClan(player)) {
  7571. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7572. goto("wait");
  7573. }
  7574. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7575. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7576. goto("wait");
  7577. }
  7578. if(size != 2) {
  7579. msg.prefix(player, prefix_commands, "/clan kick <name>");
  7580. goto("wait");
  7581. }
  7582. p_name = list.getIndex(args, 1);
  7583. if(!checkIfEverOnline(p_name)) {
  7584. msg.prefix(player, prefix_clan, "This player has never been online.");
  7585. goto("wait");
  7586. }
  7587. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7588. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7589. goto("wait");
  7590. }
  7591. p_uuid = player.getUuid(p_name);
  7592. p_id = player.getId(p_uuid);
  7593. if(!player.isSameClan(player, p_id)) {
  7594. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7595. goto("wait");
  7596. }
  7597. if(player.isClanLeader(p_id)) {
  7598. msg.prefix(player, prefix_clan, "You can't kick the leader.");
  7599. goto("wait");
  7600. }
  7601. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  7602. msg.prefix(player, prefix_clan, "You can't kick another mod.");
  7603. goto("wait");
  7604. }
  7605. clan_id = player.getClanId(player);
  7606. clan.msg(clan_id, text.concat("§7", p_name, "§r got kicked out of the clan."));
  7607. clan.removeMember(clan_id, p_id);
  7608. p = read.player(p_name);
  7609. if(p_name != null) {
  7610. player.setHeadName(p);
  7611. }
  7612. goto("wait");
  7613. }
  7614. if(arg0 == "disband") {
  7615. if(!player.isInClan(player)) {
  7616. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7617. goto("wait");
  7618. }
  7619. if(!player.isClanLeader(player)) {
  7620. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7621. goto("wait");
  7622. }
  7623. clan_id = player.getClanId(player);
  7624. clan.msg(clan_id, "Clan disbanded.");
  7625. list = clan.getMembersList(clan_id);
  7626. clan.delete(clan_id);
  7627. iter = list.iterator(list);
  7628. while(hasNext(iter)) {
  7629. p = player.get(next(iter));
  7630. if(p != null) {
  7631. player.setHeadName(p);
  7632. }
  7633. }
  7634. goto("wait");
  7635. }
  7636. if(arg0 == "leave") {
  7637. if(!player.isInClan(player)) {
  7638. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7639. goto("wait");
  7640. }
  7641. if(player.isClanLeader(player)) {
  7642. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  7643. goto("wait");
  7644. }
  7645. clan_id = player.getClanId(player);
  7646. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r left the clan."));
  7647. clan.removeMember(clan_id, player);
  7648. player.setHeadName(player);
  7649. goto("wait");
  7650. }
  7651. if(arg0 == "list") {
  7652. table = table.new("§b", 2, 6, 4, 5);
  7653. msg(player, table.getStart(table));
  7654. msg(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  7655. msg(player, table.getMiddle(table));
  7656. list = clan.getIdList();
  7657. iter = list.iterator(list);
  7658. while(hasNext(iter)) {
  7659. clan_id = next(iter);
  7660. name = clan.getName(clan_id);
  7661. tag = clan.getTag(clan_id);
  7662. amount = clan.getMembersAmount(clan_id);
  7663. msg(player, table.get(table, text.number(clan_id), name, tag, text.number(amount)));
  7664. }
  7665. msg(player, table.getEnd(table));
  7666. goto("wait");
  7667. }
  7668. if(arg0 == "setspawn") {
  7669. if(!player.isInClan(player)) {
  7670. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7671. goto("wait");
  7672. }
  7673. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7674. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7675. goto("wait");
  7676. }
  7677. clan_id = player.getClanId(player);
  7678. clan.setSpawn(clan_id, entity.getLocation(player));
  7679. msg.prefix(player, prefix_clan, "New clan spawn set.");
  7680. goto("wait");
  7681. }
  7682. if(arg0 == "spawn") {
  7683. if(!player.isInClan(player)) {
  7684. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7685. goto("wait");
  7686. }
  7687. clan_id = player.getClanId(player);
  7688. spawn_loc = clan.getSpawn(clan_id);
  7689. if(spawn_loc == null) {
  7690. msg.prefix(player, prefix_clan, "No clan spawn set.");
  7691. goto("wait");
  7692. }
  7693. if(!perm.has(player, "isTeam")) {
  7694. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7695. if(world.isGamesName(world_name)) {
  7696. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  7697. goto("wait");
  7698. }
  7699. }
  7700. player.teleport(player, spawn_loc, true);
  7701. goto("wait");
  7702. }
  7703. goto("clanhelp");
  7704. @remove_clan_invitation
  7705. list.removeIndex(clan_invitations, 0);
  7706. goto("wait");
  7707. @color
  7708. msg(player, getSpacer());
  7709. msg(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  7710. msg(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  7711. msg(player, " &l §l(bold)");
  7712. msg(player, " &m §m(strikethrough)");
  7713. msg(player, " &n §n(underline)");
  7714. msg(player, " &o §o(italic)");
  7715. goto("wait");
  7716. @setspawn
  7717. if(size != 1) {
  7718. @setspawnhelp
  7719. msg.prefix(player, prefix_commands, "/setspawn ...");
  7720. msg(player, "§6 - server");
  7721. msg(player, "§6 - games");
  7722. msg(player, "§6 - creative");
  7723. msg(player, "§6 - story");
  7724. goto("wait");
  7725. }
  7726. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7727. new_spawn = text.location(entity.getLocation(player));
  7728. config = getScriptVar("server_config");
  7729. if(arg0 == "games") {
  7730. config.set(config, "gamesspawn", new_spawn);
  7731. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  7732. } elseif(arg0 == "server") {
  7733. config.set(config, "serverspawn", new_spawn);
  7734. msg.prefix(player, prefix_commands, "New main Spawn set.");
  7735. } elseif(arg0 == "creative") {
  7736. config.set(config, "creativespawn", new_spawn);
  7737. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  7738. } elseif(arg0 == "story") {
  7739. config.set(config, "storyspawn", new_spawn);
  7740. msg.prefix(player, prefix_commands, "New spawn for story world set.");
  7741. } else {
  7742. goto("setspawnhelp");
  7743. }
  7744. config.saveAsync(config);
  7745. goto("wait");
  7746. @heal
  7747. if(size > 1) {
  7748. msg.prefix(player, prefix_commands, "/heal [player]");
  7749. goto("wait");
  7750. }
  7751. if(size == 1) {
  7752. affectedname = list.getIndex(args, 0);
  7753. affectedplayer = read.player(affectedname);
  7754. if(affectedplayer == null) {
  7755. msg.prefix(player, prefix_commands, "This player is not online.");
  7756. goto("wait");
  7757. }
  7758. if(player != affectedplayer) {
  7759. affectedname = player.getName(affectedplayer);
  7760. msg.prefix(player, prefix_commands, concat(affectedname, " was healed."));
  7761. }
  7762. }
  7763. living.heal(affectedplayer, 50);
  7764. player.setHunger(affectedplayer, 20);
  7765. player.setSaturation(affectedplayer, 5);
  7766. entity.clearEffects(affectedplayer);
  7767. entity.setBurning(affectedplayer, 0);
  7768. msg.prefix(affectedplayer, prefix_commands, "You have been healed.");
  7769. goto("wait");
  7770. @inv
  7771. if(size == 0) {
  7772. @invhelp
  7773. msg.prefix(player, prefix_commands, "/inv ...");
  7774. if(perm.has(player, "inv.ignore")) {
  7775. msg(player, "§6 - ignore §rToggles inventory change on world change");
  7776. }
  7777. if(perm.has(player, "inv.see")) {
  7778. msg(player, "§6 - see <player> §rOpens a player's inventory");
  7779. }
  7780. if(perm.has(player, "inv.reload")) {
  7781. msg(player, "§6 - reload <player> §rReloads a player's inventory");
  7782. }
  7783. if(perm.has(player, "inv.saveFor")) {
  7784. msg(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  7785. }
  7786. if(perm.has(player, "inv.loadFrom")) {
  7787. msg(player, "§6 - loadFrom <player> <world> §rLoads a player's inventory for you");
  7788. }
  7789. goto("wait");
  7790. }
  7791. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7792. if(arg0 == "ignore") {
  7793. if(!perm.has(player, "inv.ignore")) {
  7794. perm.no(player, "inv.ignore");
  7795. goto("wait");
  7796. }
  7797. ignore = player.hasInvIgnore(player);
  7798. if(ignore == null) {
  7799. ignore = false;
  7800. }
  7801. if(ignore) {
  7802. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  7803. } else {
  7804. msg.prefix(player, prefix_commands, "You'll keep your inventory on joining another world.");
  7805. }
  7806. player.invIgnore(player, !ignore);
  7807. goto("wait");
  7808. }
  7809. if(arg0 == "see") {
  7810. if(!perm.has(player, "inv.see")) {
  7811. perm.no(player, "inv.see");
  7812. goto("wait");
  7813. }
  7814. if(size < 2) {
  7815. msg.prefix(player, prefix_commands, "/inv see <player>");
  7816. goto("wait");
  7817. }
  7818. p_name = list.getIndex(args, 1);
  7819. p_uuid = player.getUuid(p_name);
  7820. if(p_uuid == null) {
  7821. msg.prefix(player, prefix_commands, "This player has never been online.");
  7822. goto("wait");
  7823. }
  7824. p = read.player(p_name);
  7825. if(p == null) {
  7826. msg.prefix(player, prefix_commands, "This player is not online.");
  7827. goto("wait");
  7828. }
  7829. inv.show(p, player);
  7830. goto("wait");
  7831. }
  7832. if(arg0 == "reload") {
  7833. if(!perm.has(player, "inv.reload")) {
  7834. perm.no(player, "inv.reload");
  7835. goto("wait");
  7836. }
  7837. if(size < 2) {
  7838. msg.prefix(player, prefix_commands, "/inv reload <player>");
  7839. goto("wait");
  7840. }
  7841. p_name = list.getIndex(args, 1);
  7842. p_uuid = player.getUuid(p_name);
  7843. if(p_uuid == null) {
  7844. msg.prefix(player, prefix_commands, "This player has never been online.");
  7845. goto("wait");
  7846. }
  7847. p = read.player(p_name);
  7848. if(p == null) {
  7849. msg.prefix(player, prefix_commands, "This player is not online.");
  7850. goto("wait");
  7851. }
  7852. world = loc.getWorld(entity.getLocation(p));
  7853. inv.loadFromPlayer(p, p, world);
  7854. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  7855. goto("wait");
  7856. }
  7857. if(arg0 == "savefor") {
  7858. if(size != 1 && size != 3) {
  7859. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  7860. goto("wait");
  7861. }
  7862. if(size == 1) {
  7863. for_player_or_id = player.getId(player);
  7864. world = loc.getWorld(entity.getLocation(player));
  7865. }
  7866. if(size == 3) {
  7867. if(!perm.has(player, "inv.saveFor")) {
  7868. perm.no(player, "inv.saveFor");
  7869. goto("wait");
  7870. }
  7871. p_name = list.getIndex(args, 1);
  7872. p_uuid = player.getUuid(p_name);
  7873. if(p_uuid == null) {
  7874. msg.prefix(player, prefix_commands, "This player has never been online.");
  7875. goto("wait");
  7876. }
  7877. p = read.player(p_name);
  7878. if(p != null) {
  7879. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  7880. goto("wait");
  7881. }
  7882. for_player_or_id = player.getId(p_uuid);
  7883. world_name = list.getIndex(args, 2);
  7884. world = world.get(world_name);
  7885. if(world == null) {
  7886. msg.prefix(player, prefix_world, "This world is not loaded.");
  7887. goto("wait");
  7888. }
  7889. }
  7890. inv.saveForPlayer(player, for_player_or_id, world);
  7891. msg.prefix(player, prefix_commands, "Inventory saved.");
  7892. goto("wait");
  7893. }
  7894. if(arg0 == "loadfrom") {
  7895. if(size != 1 && size != 3) {
  7896. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  7897. goto("wait");
  7898. }
  7899. if(size == 1) {
  7900. from_player_or_id = player.getId(player);
  7901. world = loc.getWorld(entity.getLocation(player));
  7902. }
  7903. if(size == 3) {
  7904. if(!perm.has(player, "inv.loadFrom")) {
  7905. perm.no(player, "inv.loadFrom");
  7906. goto("wait");
  7907. }
  7908. p_name = list.getIndex(args, 1);
  7909. p_uuid = player.getUuid(p_name);
  7910. if(p_uuid == null) {
  7911. msg.prefix(player, prefix_commands, "This player has never been online.");
  7912. goto("wait");
  7913. }
  7914. p = read.player(p_name);
  7915. if(p != null) {
  7916. msg.prefix(player, prefix_commands, "§cThis player is online. Loaded inventory can differ from /inv see!");
  7917. }
  7918. from_player_or_id = player.getId(p_uuid);
  7919. world_name = list.getIndex(args, 2);
  7920. world = world.get(world_name);
  7921. if(world == null) {
  7922. msg.prefix(player, prefix_world, "This world is not loaded.");
  7923. goto("wait");
  7924. }
  7925. }
  7926. inv.loadFromPlayer(player, from_player_or_id, world);
  7927. msg.prefix(player, prefix_commands, "Inventory loaded.");
  7928. goto("wait");
  7929. }
  7930. goto("wait");
  7931. @boost
  7932. entity.throw(player, 0, 5, 0);
  7933. goto("wait");
  7934. @memory
  7935. msg.prefix(player, prefix_commands, concat("Used RAM: ", text.number(usedMemory()), " / ", text.number(math.round(allocatedMemory())), " MB"));
  7936. goto("wait");
  7937. @world
  7938. if(size == 0) {
  7939. @world_syntax
  7940. msg.prefix(player, prefix_world, "/world ...");
  7941. msg(player, "§b - info §rShows info about a world");
  7942. msg(player, "§b - tp <world> [player] §rTeleports a player to a world");
  7943. msg(player, "§b - list §rShows all loaded worlds");
  7944. msg(player, "§b - setspawn §rSets the world's spawn");
  7945. msg(player, "§b - diffi <world> <diffi> §rSets the world's difficulty");
  7946. goto("wait");
  7947. }
  7948. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7949. if(arg0 == "info") {
  7950. msg(player, getSpacer());
  7951. world = loc.getWorld(entity.getLocation(player));
  7952. msg(player, "§6World: §r", world.getName(world));
  7953. msg(player, "§6Rain: §r", world.hasStorm(world));
  7954. time = world.getTime(world);
  7955. while(time >= 24000) {
  7956. time -= 24000;
  7957. }
  7958. msg(player, "§6Time: §r", text.number(time));
  7959. goto("wait");
  7960. }
  7961. if(arg0 == "tp") {
  7962. if(size < 2 || size > 3) {
  7963. msg.prefix(player, prefix_world, "/world tp <world> [player]");
  7964. goto("wait");
  7965. }
  7966. if(size >= 2) {
  7967. world_name = text.toLowerCase(list.getIndex(args, 1));
  7968. world = world.get(world_name);
  7969. if(world == null) {
  7970. msg.prefix(player, prefix_world, "This world is not loaded.");
  7971. goto("wait");
  7972. }
  7973. }
  7974. if(size == 3) {
  7975. affectedname = list.getIndex(args, 2);
  7976. affectedplayer = read.player(affectedname);
  7977. if(affectedplayer == null) {
  7978. msg.prefix(player, prefix_world, "This player is not online.");
  7979. goto("wait");
  7980. }
  7981. }
  7982. if(!player.canTeleport(affectedplayer)) {
  7983. if(size == 3) {
  7984. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  7985. goto("wait");
  7986. }
  7987. msg.prefix(player, prefix_commands, "You can't teleport now.");
  7988. goto("wait");
  7989. }
  7990. if(player != affectedplayer) {
  7991. affectedname = player.getName(affectedplayer);
  7992. msg.prefix(player, prefix_world, concat(affectedname, " was teleported to the spawn of the world ", world_name, "."));
  7993. }
  7994. if(world_name == "games") {
  7995. loc = world.getGamesSpawn();
  7996. } elseif(world_name == "creative") {
  7997. loc = world.getCreativeSpawn();
  7998. } elseif(world_name == "story") {
  7999. loc = world.getStorySpawn();
  8000. } else {
  8001. loc = world.getSpawn(world);
  8002. }
  8003. player.teleport(affectedplayer, loc, true);
  8004. goto("wait");
  8005. }
  8006. if(arg0 == "list") {
  8007. msg.prefix(player, prefix_world, "Loaded worlds:");
  8008. worldlist = world.getAll();
  8009. for(i = 0; i < list.getSize(worldlist); i++) {
  8010. msg(player, " - ", world.getName(list.getIndex(worldlist, i)));
  8011. }
  8012. msg(player, getSpacer());
  8013. goto("wait");
  8014. }
  8015. if(arg0 == "setspawn") {
  8016. location = entity.getLocation(player);
  8017. world.setSpawn(location, 0);
  8018. msg.prefix(player, prefix_world, concat("New spawn of the world ", world.getName(loc.getWorld(location)), " set."));
  8019. goto("wait");
  8020. }
  8021. if(arg0 == "diffi") {
  8022. if(size != 3) {
  8023. msg.prefix(player, prefix_world, "/world diffi <world> <diffi>");
  8024. goto("wait");
  8025. }
  8026. worldname = list.getIndex(args, 1);
  8027. world = world.get(worldname);
  8028. if(world == null) {
  8029. msg.prefix(player, prefix_world, "This world is not loaded.");
  8030. goto("wait");
  8031. }
  8032. diffi_string = list.getIndex(args, 2);
  8033. if(diffi_string != "PEACEFUL" || diffi_string != "EASY" || diffi_string != "NORMAL" || diffi_string != "HARD") {
  8034. msg.prefix(player, prefix_world, "False input.");
  8035. goto("wait");
  8036. }
  8037. world.setDiffi(world, diffi_string);
  8038. msg.prefix(player, prefix_world, "Difficulty changed.");
  8039. goto("wait");
  8040. }
  8041. goto("world_syntax");
  8042. @yeet
  8043. if(size == 0){
  8044. msg.prefix(player, prefix_commands, "/yeet <strength>");
  8045. goto("wait");
  8046. }
  8047. yeet_strength = list.getIndex(args, 0);
  8048. yeet(player,math.abs(yeet_strength));
  8049. msg(player, "§4YEET");
  8050. goto("wait");
  8051. @giveup
  8052. script_id = quest.getFromPlayer(player);
  8053. if(script_id == null) {
  8054. msg.prefix(player, prefix_quest, "You are not in a quest.");
  8055. goto("wait");
  8056. }
  8057. script = script.getFromId(script_id);
  8058. if(script == null) {
  8059. snuvi.debug("Player used giveup on corrupt quest");
  8060. quest.removePlayer(player); //in case of corrupt quest
  8061. msg.prefix(player, prefix_quest, "You have no quest.");
  8062. goto("wait");
  8063. }
  8064. setScriptVar("player", player);
  8065. modTimer.scriptCallEvent("quest_term", script);
  8066. quest.term(script, player);
  8067. msg.prefix(player, prefix_quest, "Quest termed.");
  8068. goto("wait");
  8069. @leave
  8070. set = player.getMinigameIds(player);
  8071. iter = set.iterator(set);
  8072. if(hasNext(iter)) {
  8073. script_id = next(iter);
  8074. script = script.getFromId(script_id);
  8075. if(script == null) {
  8076. snuvi.debug(concat("Player left game without existing gamescript ", set));
  8077. 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.");
  8078. player.resetMinigames(player);
  8079. entity.teleport(player, gamesspawn);
  8080. goto("wait");
  8081. }
  8082. minigame.hub(script, player);
  8083. goto("wait");
  8084. }
  8085. msg.prefix(player, "§dScript", "You are not in a minigame.");
  8086. goto("wait");
  8087. function minigame.hub(script, player) {
  8088. script.setVar(script, "player", player);
  8089. modTimer.scriptCallEvent("player_giveup", script);
  8090. }
  8091. @jail
  8092. if(size != 1) {
  8093. msg.prefix(player, prefix_commands, "/jail <player>");
  8094. } else {
  8095. p_name = list.getIndex(args, 0);
  8096. if(!checkIfEverOnline(p_name)) {
  8097. msg.prefix(player, prefix_jail, "This player has never been online.");
  8098. goto("wait");
  8099. }
  8100. p_uuid = player.getUuid(p_name);
  8101. if(isJailed(p_uuid)) {
  8102. msg.prefix(player, prefix_jail, "This player is already jailed.");
  8103. goto("wait");
  8104. }
  8105. if(player_name == p_name) {
  8106. msg.prefix(player, prefix_jail, "Self-Jailing isn't a good idea.");
  8107. goto("wait");
  8108. }
  8109. if(!isOnline(p_name)) {
  8110. msg.prefix(player, prefix_jail, "This player is not online.");
  8111. goto("wait");
  8112. }
  8113. p = read.player(p_name);
  8114. if(perm.has(p, "jail")) {
  8115. msg.prefix(player, prefix_jail, "You can't jail this player.");
  8116. goto("wait");
  8117. }
  8118. list.add(jailed_list, p_uuid);
  8119. msg.prefix(player, prefix_jail, concat(p_name, " wurde gejailt"));
  8120. showJail(p_name);
  8121. if(!jail_loop_active) {
  8122. sgoto(5, "jailloop");
  8123. }
  8124. }
  8125. goto("wait");
  8126. @unjail
  8127. if(size != 1) {
  8128. msg.prefix(player, prefix_commands, "/unjail <player>");
  8129. } else {
  8130. p_name = list.getIndex(args, 0);
  8131. if(!checkIfEverOnline(p_name)) {
  8132. msg.prefix(player, prefix_jail, "This player has never been online.");
  8133. goto("wait");
  8134. }
  8135. p_uuid = player.getUuid(p_name);
  8136. if(!isJailed(p_uuid)) {
  8137. msg.prefix(player, prefix_jail, "This player is not jailed.");
  8138. goto("wait");
  8139. }
  8140. list.remove(jailed_list, p_uuid);
  8141. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  8142. }
  8143. goto("wait");
  8144. function inv.show(from_player, to_player) {
  8145. player_inv = player.getInv(from_player);
  8146. //inv = inv.new("333303000 333333333 333333333 333333333 000000000 333333333");
  8147. inv = inv.new("333303000333333333333333333333333333000000000333333333");
  8148. set.add($invseeids, inv.getId(inv));
  8149. inv.setItem(inv, 0, living.getEquip(from_player, "head"));
  8150. inv.setItem(inv, 1, living.getEquip(from_player, "chest"));
  8151. inv.setItem(inv, 2, living.getEquip(from_player, "legs"));
  8152. inv.setItem(inv, 3, living.getEquip(from_player, "feet"));
  8153. inv.setItem(inv, 4, living.getEquip(from_player, "offhand"));
  8154. for(slot = 0; slot <= 8; slot++) {
  8155. inv.setItem(inv, slot + 32, inv.getItem(player_inv, slot));
  8156. }
  8157. for(slot = 0; slot <= 26; slot++) {
  8158. inv.setItem(inv, slot + 5, inv.getItem(player_inv, slot + 9));
  8159. }
  8160. inv.open(inv, to_player, concat("Inventory of ", player.getName(from_player)));
  8161. }
  8162. function isAWallSign(location) {
  8163. return block.hasTag($wall_signs_tag, block.get(location));
  8164. }
  8165. function rank.add(index, tech_rank, chat_rank) {
  8166. $rank_array[index, 0] = tech_rank;
  8167. $rank_array[index, 1] = chat_rank;
  8168. }
  8169. //--------------------------------------------------
  8170. //Tip-Utils
  8171. //--------------------------------------------------
  8172. function tip.setLoop(tipp_key, boolean) {
  8173. stmt = databank.prepare("UPDATE tipps SET tipp_loop = ? WHERE tipp_key = ?;");
  8174. databank.setBool(stmt, 1, boolean);
  8175. databank.setString(stmt, 2, tipp_key);
  8176. databank.workerExecute(stmt);
  8177. }
  8178. function tip.remove(tipp_key) {
  8179. stmt = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  8180. databank.setString(stmt, 1, tipp_key);
  8181. databank.workerExecute(stmt);
  8182. }
  8183. function tip.getAll() {
  8184. list = list.new();
  8185. smt = databank.prepare("SELECT * FROM tipps;");
  8186. result = databank.execute(smt);
  8187. while(databank.next(result)) {
  8188. a = array.new(3);
  8189. a[0] = databank.getString(result, 1);
  8190. a[1] = databank.getString(result, 2);
  8191. a[2] = databank.getBool(result, 3);
  8192. list.add(list, a);
  8193. }
  8194. databank.close(smt);
  8195. databank.close(result);
  8196. return list;
  8197. }
  8198. //--------------------------------------------------
  8199. //Databank-Utils
  8200. //--------------------------------------------------
  8201. function databank.isExistingTable(table) {
  8202. temp = false;
  8203. stmt = databank.prepare("SHOW TABLES");
  8204. result = databank.execute(stmt);
  8205. while(databank.next(result)) {
  8206. if(table == databank.getString(result, 1)) {
  8207. temp = true;
  8208. break;
  8209. }
  8210. }
  8211. databank.close(result);
  8212. databank.close(stmt);
  8213. return temp;
  8214. }
  8215. function databank.getTableFields(table) {
  8216. fields = list.new();
  8217. stmt = databank.prepare(concat("SHOW FIELDS FROM ", table));
  8218. result = databank.execute(stmt);
  8219. while(databank.next(result)) {
  8220. list.add(fields, databank.getString(result, 1));
  8221. }
  8222. databank.close(result);
  8223. databank.close(stmt);
  8224. return fields;
  8225. }
  8226. function databank.getTableDatatypes(table) {
  8227. stmt = databank.prepare(concat("SHOW CREATE TABLE ", table));
  8228. result = databank.execute(stmt);
  8229. if(databank.next(result)) {
  8230. temp = databank.getString(result, 2);
  8231. }
  8232. databank.close(result);
  8233. databank.close(stmt);
  8234. return temp;
  8235. }
  8236. //--------------------------------------------------
  8237. //Tipp-Utils
  8238. //--------------------------------------------------
  8239. function tipp.register(tipp_key, tipp_value) {
  8240. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  8241. databank.setString(stmt, 1, tipp_key);
  8242. databank.setString(stmt, 2, tipp_value);
  8243. databank.setString(stmt, 3, tipp_value);
  8244. databank.workerExecute(stmt);
  8245. }
  8246. function tipp.get(tipp_key) {
  8247. tipp_value = null;
  8248. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  8249. databank.setString(stmt, 1, tipp_key);
  8250. result = databank.execute(stmt);
  8251. while(databank.next(result)) {
  8252. tipp_value = databank.getString(result, 1);
  8253. }
  8254. databank.close(result);
  8255. databank.close(stmt);
  8256. return tipp_value;
  8257. }
  8258. //--------------------------------------------------
  8259. //Warp-Utils
  8260. //--------------------------------------------------
  8261. function warp.create(warp_group, warp_name, location) {
  8262. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8263. config.set(config, "world", world.getName(loc.getWorld(location)));
  8264. config.set(config, "x", loc.getX(location));
  8265. config.set(config, "y", loc.getY(location));
  8266. config.set(config, "z", loc.getZ(location));
  8267. config.set(config, "yaw", loc.getYaw(location));
  8268. config.set(config, "pitch", loc.getPitch(location));
  8269. config.saveAsync(config);
  8270. }
  8271. function warp.exists(warp_group, warp_name) {
  8272. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8273. return config.exists(config);
  8274. }
  8275. function warp.getGroups() {
  8276. file = file.new("scripts/configs/warps");
  8277. file_list = file.getList(file);
  8278. groups_list = list.new();
  8279. iter = list.iterator(file_list);
  8280. while(hasNext(iter)) {
  8281. warp = file.getName(next(iter));
  8282. list.add(groups_list, warp);
  8283. }
  8284. return groups_list;
  8285. }
  8286. function warp.get(warp_group, warp_name) {
  8287. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8288. if(config.exists(config)) {
  8289. config.load(config);
  8290. }
  8291. world_name = text.convert(config.getString(config, "world", "null"));
  8292. if(world_name == null) {
  8293. return null;
  8294. }
  8295. world = world.get(world_name);
  8296. x = config.getDouble(config, "x", 0);
  8297. y = config.getDouble(config, "y", 100);
  8298. z = config.getDouble(config, "z", 0);
  8299. yaw = config.getDouble(config, "yaw", 0);
  8300. pitch = config.getDouble(config, "pitch", 0);
  8301. location = loc.new(world, x, y, z, yaw, pitch);
  8302. return location;
  8303. }
  8304. function warp.delete(warp_group, warp_name) {
  8305. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8306. if(!config.exists(config)) {
  8307. return false;
  8308. }
  8309. config.delete(config);
  8310. return true;
  8311. }
  8312. function warp.getList(warp_group) {
  8313. file = file.new(concat("scripts/configs/warps/", warp_group));
  8314. warps_list = list.new();
  8315. if(file.exists(file)) {
  8316. file_list = file.getList(file);
  8317. iter = list.iterator(file_list);
  8318. while(hasNext(iter)) {
  8319. warp = file.getName(next(iter));
  8320. warp = text.replace(warp, ".snuvic", "");
  8321. list.add(warps_list, warp);
  8322. }
  8323. }
  8324. return warps_list;
  8325. }
  8326. //--------------------------------------------------
  8327. //Home-Utils
  8328. //--------------------------------------------------
  8329. function home.set(player_id, home_name, location) {
  8330. stmt = databank.prepare("INSERT INTO homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  8331. databank.setInt(stmt, 1, player_id);
  8332. databank.setString(stmt, 2, home_name);
  8333. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  8334. databank.setInt(stmt, 4, loc.getX(location));
  8335. databank.setInt(stmt, 5, loc.getY(location));
  8336. databank.setInt(stmt, 6, loc.getZ(location));
  8337. databank.setInt(stmt, 7, loc.getYaw(location));
  8338. databank.setInt(stmt, 8, loc.getPitch(location));
  8339. databank.workerExecute(stmt);
  8340. }
  8341. function home.delete(player_id, home_name) {
  8342. stmt = databank.prepare("DELETE FROM homes WHERE player_id = ? AND name = ?;");
  8343. databank.setInt(stmt, 1, player_id);
  8344. databank.setString(stmt, 2, home_name);
  8345. databank.workerExecute(stmt);
  8346. }
  8347. function home.getLocation(player_id, home_name) {
  8348. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM homes WHERE player_id = ? AND name = ?;");
  8349. databank.setInt(stmt, 1, player_id);
  8350. databank.setString(stmt, 2, home_name);
  8351. result = databank.execute(stmt);
  8352. if(databank.next(result)) {
  8353. world = world.get(databank.getString(result, 1));
  8354. if(world == null) {
  8355. return null;
  8356. }
  8357. x = databank.getDouble(result, 2);
  8358. y = databank.getDouble(result, 3);
  8359. z = databank.getDouble(result, 4);
  8360. yaw = databank.getDouble(result, 5);
  8361. pitch = databank.getDouble(result, 6);
  8362. location = loc.new(world, x, y, z, yaw, pitch);
  8363. }
  8364. databank.close(result);
  8365. databank.close(stmt);
  8366. return location;
  8367. }
  8368. function home.exists(player_id, home_name) {
  8369. stmt = databank.prepare("SELECT player_id FROM homes WHERE player_id = ? AND name = ?;");
  8370. databank.setInt(stmt, 1, player_id);
  8371. databank.setString(stmt, 2, home_name);
  8372. result = databank.execute(stmt);
  8373. if(databank.next(result)) {
  8374. temp = true;
  8375. } else {
  8376. temp = false;
  8377. }
  8378. databank.close(result);
  8379. databank.close(stmt);
  8380. return temp;
  8381. }
  8382. function home.getList(player_id) {
  8383. homes_list = list.new();
  8384. stmt = databank.prepare("SELECT name FROM homes WHERE player_id = ?;");
  8385. databank.setInt(stmt, 1, player_id);
  8386. result = databank.execute(stmt);
  8387. while(databank.next(result)) {
  8388. list.add(homes_list, databank.getString(result, 1));
  8389. }
  8390. databank.close(result);
  8391. databank.close(stmt);
  8392. return homes_list;
  8393. }
  8394. function hasTpaRequest(player_uuid, aim_uuid) {
  8395. for(i = 0; i < list.getSize($tpa_request); i++) {
  8396. array = list.getIndex($tpa_request, i);
  8397. if(array[0] == player_uuid && array[1] == aim_uuid) {
  8398. list.removeIndex($tpa_request, i);
  8399. return true;
  8400. }
  8401. }
  8402. return false;
  8403. }
  8404. function addTpaRequest(player_uuid, aim_uuid) {
  8405. array = array.new(2);
  8406. array[0] = player_uuid;
  8407. array[1] = aim_uuid;
  8408. list.add($tpa_request, array);
  8409. }
  8410. function setCommandHelps() {
  8411. command.clearHelp();
  8412. command.clearIgnored();
  8413. //Vanilla ignorieren, danach neu setzen
  8414. command.addIgnored("teleport");
  8415. command.addIgnored("time");
  8416. command.addIgnored("help");
  8417. command.addIgnored("ban");
  8418. command.addIgnored("kick");
  8419. command.addIgnored("gamemode");
  8420. command.addIgnored("enchant");
  8421. command.addIgnored("jumpto");
  8422. commandhelp.add("silentjoin");
  8423. commandhelp.add("nowb");
  8424. commandhelp.add("coords");
  8425. commandhelp.add("ping");
  8426. commandhelp.add("rank");
  8427. commandhelp.add("back");
  8428. commandhelp.add("boost");
  8429. commandhelp.add("bug");
  8430. commandhelp.add("report");
  8431. commandhelp.add("startgame");
  8432. commandhelp.add("top");
  8433. commandhelp.add("ride");
  8434. commandhelp.add("repair");
  8435. commandhelp.add("lag");
  8436. commandhelp.add("live");
  8437. commandhelp.add("hack");
  8438. commandhelp.add("vote");
  8439. commandhelp.add("voteshop");
  8440. commandhelp.addChildPlayer("mute");
  8441. commandhelp.addChildPlayer("unmute");
  8442. commandhelp.addChildPlayer("tpa");
  8443. commandhelp.addChildPlayer("tpaccept");
  8444. commandhelp.addChildPlayer("tpahere");
  8445. commandhelp.addChildPlayer("tpaccepthere");
  8446. commandhelp.addChildPlayer("head");
  8447. commandhelp.addChildPlayer("seen");
  8448. commandhelp.addChildPlayer("heal");
  8449. commandhelp.addChildPlayer("feed");
  8450. help = commandhelp.add("lightning");
  8451. commandhelp.addAlias(help, "thor", "lightning");
  8452. help = commandhelp.add("color");
  8453. commandhelp.addAlias(help, "colour", "color");
  8454. help = commandhelp.add("iteminfo");
  8455. commandhelp.addAlias(help, "itemdb", "iteminfo");
  8456. help = commandhelp.add("head");
  8457. commandhelp.addAlias(help, "skull", "head");
  8458. help = commandhelp.add("memory");
  8459. commandhelp.addAlias(help, "ram", "memory");
  8460. help = commandhelp.add("afk");
  8461. commandhelp.addAlias(help, "afklo", "afk");
  8462. help = commandhelp.add("jumpto");
  8463. commandhelp.addAlias(help, "j", "jumpto");
  8464. help = commandhelp.add("leave");
  8465. commandhelp.addAlias(help, "l", "leave");
  8466. commandhelp.addAlias(help, "hub", "leave");
  8467. help = commandhelp.add("giveup");
  8468. commandhelp.addAlias(help, "fuckit", "giveup");
  8469. help = command.newHelp("vanish", "vanish");
  8470. //vanish [on] [player]
  8471. helpArg0 = command.newHelpLiteral("on");
  8472. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8473. command.addHelpChild(help, helpArg0);
  8474. //vanish [off] [player]
  8475. helpArg0 = command.newHelpLiteral("off");
  8476. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8477. command.addHelpChild(help, helpArg0);
  8478. command.addHelp(help);
  8479. commandhelp.addAlias(help, "v", "vanish");
  8480. help = command.newHelp("start", "start");
  8481. command.addHelpChild(help, command.newHelpLiteral("ai"));
  8482. command.addHelpChild(help, command.newHelpLiteral("chat"));
  8483. command.addHelpChild(help, command.newHelpLiteral("commands"));
  8484. command.addHelpChild(help, command.newHelpLiteral("creative"));
  8485. command.addHelpChild(help, command.newHelpLiteral("damage"));
  8486. command.addHelpChild(help, command.newHelpLiteral("doors"));
  8487. command.addHelpChild(help, command.newHelpLiteral("fixitems"));
  8488. command.addHelpChild(help, command.newHelpLiteral("gemstones"));
  8489. command.addHelpChild(help, command.newHelpLiteral("harvest"));
  8490. command.addHelpChild(help, command.newHelpLiteral("hawkeye"));
  8491. command.addHelpChild(help, command.newHelpLiteral("herobrine"));
  8492. command.addHelpChild(help, command.newHelpLiteral("lectern"));
  8493. command.addHelpChild(help, command.newHelpLiteral("loom"));
  8494. command.addHelpChild(help, command.newHelpLiteral("games"));
  8495. command.addHelpChild(help, command.newHelpLiteral("mails"));
  8496. command.addHelpChild(help, command.newHelpLiteral("mobarena"));
  8497. command.addHelpChild(help, command.newHelpLiteral("perms"));
  8498. command.addHelpChild(help, command.newHelpLiteral("playerdata"));
  8499. command.addHelpChild(help, command.newHelpLiteral("pumpkin"));
  8500. command.addHelpChild(help, command.newHelpLiteral("recipes"));
  8501. command.addHelpChild(help, command.newHelpLiteral("scheduler"));
  8502. command.addHelpChild(help, command.newHelpLiteral("shop"));
  8503. command.addHelpChild(help, command.newHelpLiteral("sitting"));
  8504. command.addHelpChild(help, command.newHelpLiteral("stats"));
  8505. command.addHelpChild(help, command.newHelpLiteral("story"));
  8506. command.addHelpChild(help, command.newHelpLiteral("survival"));
  8507. command.addHelpChild(help, command.newHelpLiteral("ticket"));
  8508. command.addHelpChild(help, command.newHelpLiteral("timber"));
  8509. command.addHelpChild(help, command.newHelpLiteral("trader"));
  8510. command.addHelpChild(help, command.newHelpLiteral("voxel"));
  8511. command.addHelp(help);
  8512. help = command.newHelp("gamemode", "gamemode");
  8513. helpArg0 = command.newHelpLiteral("adventure");
  8514. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8515. command.addHelpChild(help, helpArg0);
  8516. helpArg0 = command.newHelpLiteral("creative");
  8517. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8518. command.addHelpChild(help, helpArg0);
  8519. helpArg0 = command.newHelpLiteral("spectator");
  8520. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8521. command.addHelpChild(help, helpArg0);
  8522. helpArg0 = command.newHelpLiteral("survival");
  8523. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8524. command.addHelpChild(help, helpArg0);
  8525. helpArg0 = command.newHelpInt("0-3", 0, 3);
  8526. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8527. command.addHelpChild(help, helpArg0);
  8528. command.addHelp(help);
  8529. commandhelp.addAlias(help, "gm", "gamemode");
  8530. help = command.newHelp("databank", "databank");
  8531. //databank showtables
  8532. command.addHelpChild(help, command.newHelpLiteral("showtables"));
  8533. //databank showfields <table>
  8534. helpArg0 = command.newHelpLiteral("showfields");
  8535. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  8536. command.addHelpChild(help, helpArg0);
  8537. //databank showdataypes <table>
  8538. helpArg0 = command.newHelpLiteral("showdataypes");
  8539. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  8540. command.addHelpChild(help, helpArg0);
  8541. command.addHelp(help);
  8542. help = command.newHelp("copyisland", "copyisland");
  8543. //copyisland copy/paste
  8544. command.addHelpChild(help, command.newHelpLiteral("copy"));
  8545. command.addHelpChild(help, command.newHelpLiteral("paste"));
  8546. //copyisland pos1/pos2
  8547. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  8548. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  8549. command.addHelp(help);
  8550. help = command.newHelp("fly", "fly");
  8551. helpArg0 = command.newHelpSpecial("Player", "player", "fly.other");
  8552. command.addHelpChild(helpArg0, command.newHelpLiteral("on"));
  8553. command.addHelpChild(helpArg0, command.newHelpLiteral("off"));
  8554. command.addHelpChild(help, helpArg0);
  8555. command.addHelp(help);
  8556. help = command.newHelp("enchant", "enchant");
  8557. helpArg0 = command.newHelpSpecial("Enchantment", "enchantment");
  8558. command.addHelpChild(helpArg0, command.newHelpInt("level", 0, 100));
  8559. command.addHelpChild(help, helpArg0);
  8560. command.addHelp(help);
  8561. help = command.newHelp("allsounds", "allsounds");
  8562. command.addHelpChild(help, command.newHelpLiteral("start"));
  8563. command.addHelpChild(help, command.newHelpLiteral("stop"));
  8564. command.addHelp(help);
  8565. help = command.newHelp("spawn", "spawn");
  8566. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8567. command.addHelp(help);
  8568. help = command.newHelp("games", "games");
  8569. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8570. command.addHelp(help);
  8571. help = command.newHelp("creative", "creative");
  8572. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8573. command.addHelp(help);
  8574. help = command.newHelp("story", "story");
  8575. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8576. command.addHelp(help);
  8577. help = command.newHelp("ass", "ass");
  8578. //ass set <name>
  8579. helpArg0 = command.newHelpLiteral("set");
  8580. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8581. command.addHelpChild(help, helpArg0);
  8582. //ass rename <name>
  8583. helpArg0 = command.newHelpLiteral("rename");
  8584. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8585. command.addHelpChild(help, helpArg0);
  8586. //ass remove <radius>
  8587. helpArg0 = command.newHelpLiteral("remove");
  8588. command.addHelpChild(helpArg0, command.newHelpInt("radius", 0, 30));
  8589. command.addHelpChild(help, helpArg0);
  8590. command.addHelp(help);
  8591. help = command.newHelp("tppos", "tppos");
  8592. helpArg0 = command.newHelpInt("x", -32000, 32000);
  8593. helpArg1 = command.newHelpInt("y", 0, 1000);
  8594. helpArg2 = command.newHelpInt("z", -32000, 32000);
  8595. helpArg3 = command.newHelpString("world", false);
  8596. helpArg4 = command.newHelpSpecial("Player", "player");
  8597. command.addHelpChild(helpArg3, helpArg4);
  8598. command.addHelpChild(helpArg2, helpArg3);
  8599. command.addHelpChild(helpArg1, helpArg2);
  8600. command.addHelpChild(helpArg0, helpArg1);
  8601. command.addHelpChild(help, helpArg0);
  8602. command.addHelp(help);
  8603. help = command.newHelp("stats", "stats");
  8604. addStatsGameHelp(help, "AmongUs");
  8605. addStatsGameHelp(help, "BedWars");
  8606. addStatsGameHelp(help, "RageMode");
  8607. addStatsGameHelp(help, "JR-Endless");
  8608. addStatsGameHelp(help, "Rebuild");
  8609. addStatsGameHelp(help, "FastBridge");
  8610. addStatsGameHelp(help, "Snowfight");
  8611. addStatsGameHelp(help, "JR-Death");
  8612. addStatsGameHelp(help, "JR-Ice");
  8613. addStatsGameHelp(help, "JR-Rooms");
  8614. addStatsGameHelp(help, "Letters");
  8615. addStatsGameHelp(help, "Sammelfieber");
  8616. addStatsGameHelp(help, "Buttons");
  8617. addStatsGameHelp(help, "HideAndSeek");
  8618. addStatsGameHelp(help, "Inverting");
  8619. addStatsGameHelp(help, "Spleef");
  8620. addStatsGameHelp(help, "Knockfight");
  8621. addStatsGameHelp(help, "Leapfrog");
  8622. addStatsGameHelp(help, "Parcour");
  8623. addStatsGameHelp(help, "Halma");
  8624. addStatsGameHelp(help, "ShoppingChaos");
  8625. addStatsGameHelp(help, "MengerRun");
  8626. command.addHelp(help);
  8627. help = command.newHelp("setspawn", "setspawn");
  8628. command.addHelpChild(help, command.newHelpLiteral("server"));
  8629. command.addHelpChild(help, command.newHelpLiteral("games"));
  8630. command.addHelpChild(help, command.newHelpLiteral("creative"));
  8631. command.addHelpChild(help, command.newHelpLiteral("story"));
  8632. command.addHelp(help);
  8633. help = command.newHelp("datatools", "datatools");
  8634. //datatools hide <name>
  8635. helpArg0 = command.newHelpLiteral("hide");
  8636. command.addHelpChild(helpArg0, command.newHelpLiteral("enchantments"));
  8637. command.addHelpChild(helpArg0, command.newHelpLiteral("attributes"));
  8638. command.addHelpChild(helpArg0, command.newHelpLiteral("unbreakable"));
  8639. command.addHelpChild(helpArg0, command.newHelpLiteral("destroys"));
  8640. command.addHelpChild(helpArg0, command.newHelpLiteral("placed_on"));
  8641. command.addHelpChild(helpArg0, command.newHelpLiteral("potion_effects"));
  8642. command.addHelpChild(help, helpArg0);
  8643. //datatools attribute <attribute> <slot> <double> <op>
  8644. helpArg0 = command.newHelpLiteral("attribute");
  8645. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("armor"));
  8646. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("armor_toughness"));
  8647. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("attack_damage"));
  8648. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("knockback_resistance"));
  8649. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("max_health"));
  8650. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("movement_speed"));
  8651. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("attack_speed"));
  8652. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("luck"));
  8653. command.addHelpChild(help, helpArg0);
  8654. //datatools hide-entity
  8655. command.addHelpChild(help, command.newHelpLiteral("hide-entity"));
  8656. //datatools show-entity
  8657. command.addHelpChild(help, command.newHelpLiteral("show-entity"));
  8658. //datatools name-entity <name>
  8659. helpArg0 = command.newHelpLiteral("name-entity");
  8660. helpArg1 = command.newHelpString("name", true);
  8661. command.addHelpChild(helpArg0, helpArg1);
  8662. command.addHelpChild(help, helpArg0);
  8663. //datatools name-visibility <name>
  8664. helpArg0 = command.newHelpLiteral("name-visibility");
  8665. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  8666. command.addHelpChild(help, helpArg0);
  8667. //datatools name-item <name>
  8668. helpArg0 = command.newHelpLiteral("name-item");
  8669. helpArg1 = command.newHelpString("name", true);
  8670. command.addHelpChild(helpArg0, helpArg1);
  8671. command.addHelpChild(help, helpArg0);
  8672. //datatools print-entity
  8673. command.addHelpChild(help, command.newHelpLiteral("print-entity"));
  8674. //datatools lore-item <line> <lore>
  8675. helpArg0 = command.newHelpLiteral("lore-item");
  8676. helpArg1 = command.newHelpInt("line", 0, 1000);
  8677. helpArg2 = command.newHelpString("lore", true);
  8678. command.addHelpChild(helpArg1, helpArg2);
  8679. command.addHelpChild(helpArg0, helpArg1);
  8680. command.addHelpChild(help, helpArg0);
  8681. command.addHelp(help);
  8682. commandhelp.addAlias(help, "dt", "datatools");
  8683. help = command.newHelp("hawkeye", "hawkeye");
  8684. //hawkeye search <parameters>
  8685. helpArg0 = command.newHelpLiteral("search");
  8686. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8687. command.addHelpChild(help, helpArg0);
  8688. //hawkeye undo
  8689. command.addHelpChild(help, command.newHelpLiteral("undo"));
  8690. //hawkeye entries
  8691. command.addHelpChild(help, command.newHelpLiteral("entries"));
  8692. //hawkeye rollback
  8693. command.addHelpChild(help, command.newHelpLiteral("rollback"));
  8694. //hawkeye tool
  8695. command.addHelpChild(help, command.newHelpLiteral("tool"));
  8696. commandhelp.addAlias(help, "ha", "hawkeye");
  8697. command.addHelp(help);
  8698. help = command.newHelp("voxel", "voxel");
  8699. command.addHelpChild(help, command.newHelpInt("radius", 1, 5));
  8700. command.addHelpChild(help, command.newHelpLiteral("block"));
  8701. command.addHelp(help);
  8702. help = command.newHelp("help", "help");
  8703. command.addHelpChild(help, command.newHelpInt("page", 1, 100));
  8704. command.addHelp(help);
  8705. commandhelp.addAlias(help, "mimimi", "help");
  8706. help = command.newHelp("suicide", "suicide");
  8707. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "suicide.other"));
  8708. command.addHelp(help);
  8709. help = command.newHelp("tempfly", "tempfly");
  8710. helpArg0 = command.newHelpSpecial("Player", "player");
  8711. command.addHelpChild(helpArg0, command.newHelpInt("seconds", 1, 10000));
  8712. command.addHelpChild(help, helpArg0);
  8713. command.addHelp(help);
  8714. help = command.newHelp("tempban", "tempban");
  8715. helpArg0 = command.newHelpSpecial("Player", "player");
  8716. helpArg1 = command.newHelpInt("days", 0, 100);
  8717. helpArg2 = command.newHelpInt("hours", 0, 100);
  8718. helpArg3 = command.newHelpInt("minutes", 0, 100);
  8719. command.addHelpChild(helpArg3, command.newHelpString("reason", true));
  8720. command.addHelpChild(helpArg2, helpArg3);
  8721. command.addHelpChild(helpArg1, helpArg2);
  8722. command.addHelpChild(helpArg0, helpArg1);
  8723. command.addHelpChild(help, helpArg0);
  8724. command.addHelp(help);
  8725. help = command.newHelp("unban", "unban");
  8726. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8727. command.addHelp(help);
  8728. commandhelp.addAlias(help, "pardon", "unban");
  8729. help = command.newHelp("ban", "ban");
  8730. helpArg0 = command.newHelpSpecial("Player", "player");
  8731. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8732. command.addHelpChild(help, helpArg0);
  8733. command.addHelp(help);
  8734. help = command.newHelp("silentban", "silentban");
  8735. helpArg0 = command.newHelpSpecial("Player", "player");
  8736. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8737. command.addHelpChild(help, helpArg0);
  8738. command.addHelp(help);
  8739. help = command.newHelp("kick", "kick");
  8740. helpArg0 = command.newHelpSpecial("Player", "player");
  8741. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8742. command.addHelpChild(help, helpArg0);
  8743. command.addHelp(help);
  8744. help = command.newHelp("silentkick", "silentkick");
  8745. helpArg0 = command.newHelpSpecial("Player", "player");
  8746. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8747. command.addHelpChild(help, helpArg0);
  8748. command.addHelp(help);
  8749. help = command.newHelp("answer", "answer");
  8750. command.addHelpChild(help, command.newHelpString("message", true));
  8751. command.addHelp(help);
  8752. commandhelp.addAlias(help, "r", "answer");
  8753. help = command.newHelp("time", "time");
  8754. //time set <time>
  8755. helpArg0 = command.newHelpLiteral("set");
  8756. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  8757. command.addHelpChild(help, helpArg0);
  8758. //time add <time>
  8759. helpArg0 = command.newHelpLiteral("add");
  8760. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  8761. command.addHelpChild(help, helpArg0);
  8762. //time day / noon / night / midnight
  8763. command.addHelpChild(help, command.newHelpLiteral("day"));
  8764. command.addHelpChild(help, command.newHelpLiteral("noon"));
  8765. command.addHelpChild(help, command.newHelpLiteral("night"));
  8766. command.addHelpChild(help, command.newHelpLiteral("midnight"));
  8767. command.addHelp(help);
  8768. help = command.newHelp("enderchest", "enderchest");
  8769. //enderchest [player] <from-player>
  8770. helpArg0 = command.newHelpSpecial("Player", "player");
  8771. command.addHelpChild(helpArg0, command.newHelpString("from-player", false));
  8772. command.addHelpChild(help, helpArg0);
  8773. //enderchest [player] <from-player>
  8774. command.addHelpChild(help, command.newHelpString("from-player", false));
  8775. command.addHelp(help);
  8776. help = command.newHelp("nickname", "nickname");
  8777. command.addHelpChild(help, command.newHelpString("name", true));
  8778. command.addHelpChild(help, command.newHelpLiteral("remove"));
  8779. command.addHelp(help);
  8780. help = command.newHelp("perm", "perm");
  8781. //perm give <player> <perm>
  8782. helpArg0 = command.newHelpLiteral("give", "perm.give");
  8783. helpArg1 = command.newHelpSpecial("Player", "player");
  8784. command.addHelpChild(helpArg1, command.newHelpLiteral("admin", "isAdmin"));
  8785. command.addHelpChild(helpArg1, command.newHelpLiteral("mod", "isAdmin"));
  8786. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  8787. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  8788. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  8789. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  8790. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  8791. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  8792. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  8793. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  8794. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  8795. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass", "isAdmin"));
  8796. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  8797. command.addHelpChild(helpArg0, helpArg1);
  8798. command.addHelpChild(help, helpArg0);
  8799. //perm remove <player> <perm>
  8800. helpArg0 = command.newHelpLiteral("remove", "perm.remove");
  8801. helpArg1 = command.newHelpSpecial("Player", "player");
  8802. command.addHelpChild(helpArg1, command.newHelpLiteral("admin", "isAdmin"));
  8803. command.addHelpChild(helpArg1, command.newHelpLiteral("mod", "isAdmin"));
  8804. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  8805. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  8806. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  8807. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  8808. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  8809. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  8810. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  8811. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  8812. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  8813. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass", "isAdmin"));
  8814. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  8815. command.addHelpChild(helpArg0, helpArg1);
  8816. command.addHelpChild(help, helpArg0);
  8817. //perm removeall <player>
  8818. helpArg0 = command.newHelpLiteral("removeall", "perm.removeall");
  8819. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8820. command.addHelpChild(help, helpArg0);
  8821. //perm list <player>
  8822. helpArg0 = command.newHelpLiteral("list", "perm.list");
  8823. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8824. command.addHelpChild(help, helpArg0);
  8825. //perm toggle
  8826. command.addHelpChild(help, command.newHelpLiteral("toggle", "perm.toggle"));
  8827. command.addHelp(help);
  8828. help = command.newHelp("script", "script");
  8829. //script start <scripts>
  8830. helpArg0 = command.newHelpLiteral("start");
  8831. command.addHelpChild(helpArg0, command.newHelpString("scrips...", true));
  8832. command.addHelpChild(help, helpArg0);
  8833. //script see
  8834. command.addHelpChild(help, command.newHelpLiteral("see"));
  8835. //script term
  8836. helpArg0 = command.newHelpLiteral("term");
  8837. command.addHelpChild(helpArg0, command.newHelpLiteral("all"));
  8838. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 1000000));
  8839. command.addHelpChild(help, helpArg0);
  8840. command.addHelp(help);
  8841. commandhelp.addAlias(help, "s", "script");
  8842. help = command.newHelp("home", "home");
  8843. //home set
  8844. helpArg0 = command.newHelpLiteral("set");
  8845. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8846. command.addHelpChild(help, helpArg0);
  8847. //home delete
  8848. helpArg0 = command.newHelpLiteral("delete");
  8849. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8850. command.addHelpChild(help, helpArg0);
  8851. //home list
  8852. helpArg0 = command.newHelpLiteral("list");
  8853. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  8854. command.addHelpChild(help, helpArg0);
  8855. //home <name>
  8856. helpArg0 = command.newHelpString("name", false);
  8857. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  8858. command.addHelpChild(help, helpArg0);
  8859. command.addHelp(help);
  8860. help = command.newHelp("plot", "plot");
  8861. //plot info
  8862. command.addHelpChild(help, command.newHelpLiteral("info"));
  8863. command.addHelpChild(help, command.newHelpLiteral("i"));
  8864. //plot pos1/pos2
  8865. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  8866. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  8867. //plot create/create3D
  8868. command.addHelpChild(help, command.newHelpLiteral("create"));
  8869. command.addHelpChild(help, command.newHelpLiteral("create3D"));
  8870. //plot remove
  8871. helpArg0 = command.newHelpLiteral("remove");
  8872. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 10000));
  8873. command.addHelpChild(help, helpArg0);
  8874. //plot name <name>
  8875. helpArg0 = command.newHelpLiteral("name");
  8876. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8877. helpArg1 = command.newHelpInt("id", 0, 10000);
  8878. command.addHelpChild(helpArg1, command.newHelpString("name", true));
  8879. command.addHelpChild(helpArg0, helpArg1);
  8880. command.addHelpChild(help, helpArg0);
  8881. //plot share <name>
  8882. helpArg0 = command.newHelpLiteral("share");
  8883. helpArg1 = command.newHelpSpecial("Player", "player");
  8884. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8885. command.addHelpChild(helpArg0, helpArg1);
  8886. command.addHelpChild(help, helpArg0);
  8887. //plot kick <name>
  8888. helpArg0 = command.newHelpLiteral("kick");
  8889. helpArg1 = command.newHelpSpecial("Player", "player");
  8890. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8891. command.addHelpChild(helpArg0, helpArg1);
  8892. command.addHelpChild(help, helpArg0);
  8893. //plot raise
  8894. command.addHelpChild(help, command.newHelpLiteral("raise"));
  8895. //plot leader <name>
  8896. helpArg0 = command.newHelpLiteral("leader");
  8897. helpArg1 = command.newHelpSpecial("Player", "player");
  8898. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8899. command.addHelpChild(helpArg0, helpArg1);
  8900. command.addHelpChild(help, helpArg0);
  8901. //plot mod <name>
  8902. helpArg0 = command.newHelpLiteral("mod");
  8903. helpArg1 = command.newHelpSpecial("Player", "player");
  8904. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8905. command.addHelpChild(helpArg0, helpArg1);
  8906. command.addHelpChild(help, helpArg0);
  8907. //plot chest <name>
  8908. helpArg0 = command.newHelpLiteral("chest");
  8909. helpArg1 = command.newHelpSpecial("Player", "player");
  8910. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8911. command.addHelpChild(helpArg0, helpArg1);
  8912. command.addHelpChild(help, helpArg0);
  8913. //plot sell <price>
  8914. helpArg0 = command.newHelpLiteral("sell");
  8915. command.addHelpChild(helpArg0, command.newHelpInt("price", 1, 10000));
  8916. command.addHelpChild(help, helpArg0);
  8917. //plot moreinfo
  8918. command.addHelpChild(help, command.newHelpLiteral("moreinfo", "plot.moreinfo"));
  8919. //plot listall
  8920. command.addHelpChild(help, command.newHelpLiteral("listall"));
  8921. //plot flags <int> <boolean>
  8922. helpArg0 = command.newHelpLiteral("flags");
  8923. helpArg1 = command.newHelpInt("int", 1, 1000);
  8924. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  8925. command.addHelpChild(helpArg0, helpArg1);
  8926. command.addHelpChild(help, helpArg0);
  8927. //plot expand <anzahl>
  8928. helpArg0 = command.newHelpLiteral("expand");
  8929. helpArg1 = command.newHelpInt("anzahl", 1, 1000);
  8930. helpArg3 = command.newHelpInt("id", 1, 10000);
  8931. helpArg2 = command.newHelpLiteral("north");
  8932. command.addHelpChild(helpArg2, helpArg3);
  8933. command.addHelpChild(helpArg1, helpArg2);
  8934. helpArg2 = command.newHelpLiteral("east");
  8935. command.addHelpChild(helpArg2, helpArg3);
  8936. command.addHelpChild(helpArg1, helpArg2);
  8937. helpArg2 = command.newHelpLiteral("south");
  8938. command.addHelpChild(helpArg2, helpArg3);
  8939. command.addHelpChild(helpArg1, helpArg2);
  8940. helpArg2 = command.newHelpLiteral("west");
  8941. command.addHelpChild(helpArg2, helpArg3);
  8942. command.addHelpChild(helpArg1, helpArg2);
  8943. command.addHelpChild(helpArg0, helpArg1);
  8944. command.addHelpChild(help, helpArg0);
  8945. command.addHelp(help);
  8946. commandhelp.addAlias(help, "p", "plot");
  8947. help = command.newHelp("warp", "warp");
  8948. //warp set [group] <name>
  8949. helpArg0 = command.newHelpLiteral("set", "warp.create");
  8950. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  8951. helpArg1 = command.newHelpString("group", false, "warp.create");
  8952. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  8953. command.addHelpChild(helpArg0, helpArg1);
  8954. command.addHelpChild(help, helpArg0);
  8955. //warp delete [group] <name>
  8956. helpArg0 = command.newHelpLiteral("delete", "warp.create");
  8957. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  8958. helpArg1 = command.newHelpString("group", false, "warp.create");
  8959. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  8960. command.addHelpChild(helpArg0, helpArg1);
  8961. command.addHelpChild(help, helpArg0);
  8962. //warp groups
  8963. command.addHelpChild(help, command.newHelpLiteral("groups", "warp.create"));
  8964. //warp list [group]
  8965. helpArg0 = command.newHelpLiteral("list");
  8966. command.addHelpChild(helpArg0, command.newHelpString("group", false, "warp.create"));
  8967. command.addHelpChild(help, helpArg0);
  8968. //warp [group] <name>
  8969. helpArg0 = command.newHelpString("name", false);
  8970. command.addHelpChild(help, helpArg0);
  8971. helpArg0 = command.newHelpString("group", false, "warp.create");
  8972. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8973. command.addHelpChild(help, helpArg0);
  8974. command.addHelp(help);
  8975. help = command.newHelp("teleport", "teleport");
  8976. helpArg0 = command.newHelpSpecial("Player", "player");
  8977. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "to-player", "teleport.other"));
  8978. command.addHelpChild(help, helpArg0);
  8979. command.addHelp(help);
  8980. commandhelp.addAlias(help, "tp", "teleport");
  8981. help = command.newHelp("lastseen", "lastseen");
  8982. command.addHelpChild(help, command.newHelpInt("amount", 1, 100));
  8983. command.addHelp(help);
  8984. help = command.newHelp("human", "human");
  8985. //human spawn
  8986. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  8987. //human set <name>
  8988. helpArg0 = command.newHelpLiteral("set");
  8989. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8990. command.addHelpChild(help, helpArg0);
  8991. //human setuuid <uuid>
  8992. helpArg0 = command.newHelpLiteral("setuuid");
  8993. command.addHelpChild(helpArg0, command.newHelpString("uuid", false));
  8994. command.addHelpChild(help, helpArg0);
  8995. //human name
  8996. helpArg0 = command.newHelpLiteral("name");
  8997. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8998. command.addHelpChild(help, helpArg0);
  8999. //human kill
  9000. command.addHelpChild(help, command.newHelpLiteral("kill"));
  9001. //human size <scale>
  9002. helpArg0 = command.newHelpLiteral("size");
  9003. command.addHelpChild(helpArg0, command.newHelpInt("scale", 0, 100));
  9004. command.addHelpChild(help, helpArg0);
  9005. //human steve
  9006. command.addHelpChild(help, command.newHelpLiteral("steve"));
  9007. //human alex
  9008. command.addHelpChild(help, command.newHelpLiteral("alex"));
  9009. //human statue
  9010. helpArg0 = command.newHelpLiteral("statue");
  9011. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  9012. command.addHelpChild(help, helpArg0);
  9013. command.addHelp(help);
  9014. help = command.newHelp("mail", "mail");
  9015. //mail <player> <message>
  9016. helpArg0 = command.newHelpSpecial("Player", "player");
  9017. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9018. command.addHelpChild(help, helpArg0);
  9019. //mail new
  9020. command.addHelpChild(help, command.newHelpLiteral("new"));
  9021. //mail inbox
  9022. command.addHelpChild(help, command.newHelpLiteral("inbox"));
  9023. //mail outbox
  9024. command.addHelpChild(help, command.newHelpLiteral("outbox"));
  9025. //mail reset
  9026. command.addHelpChild(help, command.newHelpLiteral("reset", "mail.reset"));
  9027. command.addHelp(help);
  9028. help = command.newHelp("entities", "entities");
  9029. command.addHelpChild(help, command.newHelpString("world", false));
  9030. command.addHelp(help);
  9031. help = command.newHelp("playtime", "playtime");
  9032. //playtime [player]
  9033. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9034. //playtime all
  9035. command.addHelpChild(help, command.newHelpLiteral("all"));
  9036. //playtime month [1-12] [year]
  9037. helpArg0 = command.newHelpLiteral("month");
  9038. helpArg1 = command.newHelpInt("int", 1, 12);
  9039. command.addHelpChild(helpArg1, command.newHelpInt("year", 2019, 2024));
  9040. command.addHelpChild(helpArg0, helpArg1);
  9041. command.addHelpChild(help, helpArg0);
  9042. //playtime year [year]
  9043. helpArg0 = command.newHelpLiteral("year");
  9044. command.addHelpChild(helpArg0, command.newHelpInt("year", 2019, 2024));
  9045. command.addHelpChild(help, helpArg0);
  9046. command.addHelp(help);
  9047. help = command.newHelp("user", "user");
  9048. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  9049. command.addHelp(help);
  9050. help = command.newHelp("skills", "skills");
  9051. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  9052. command.addHelp(help);
  9053. help = command.newHelp("cli", "cli");
  9054. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  9055. command.addHelp(help);
  9056. help = command.newHelp("plant", "plant");
  9057. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  9058. command.addHelp(help);
  9059. help = command.newHelp("grow", "grow");
  9060. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  9061. command.addHelp(help);
  9062. help = command.newHelp("plough", "plough");
  9063. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  9064. command.addHelp(help);
  9065. help = command.newHelp("news", "news");
  9066. command.addHelpChild(help, command.newHelpString("text", true));
  9067. command.addHelp(help);
  9068. help = command.newHelp("inv", "inv");
  9069. //inv ignore
  9070. command.addHelpChild(help, command.newHelpLiteral("ignore"));
  9071. //inv see <player>
  9072. helpArg0 = command.newHelpLiteral("see");
  9073. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9074. command.addHelpChild(help, helpArg0);
  9075. //inv reload <player>
  9076. helpArg0 = command.newHelpLiteral("reload");
  9077. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9078. command.addHelpChild(help, helpArg0);
  9079. //inv loadFrom <player> <world>
  9080. helpArg0 = command.newHelpLiteral("loadFrom");
  9081. helpArg1 = command.newHelpSpecial("Player", "player");
  9082. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  9083. command.addHelpChild(helpArg0, helpArg1);
  9084. command.addHelpChild(help, helpArg0);
  9085. //inv saveFor <player> <world>
  9086. helpArg0 = command.newHelpLiteral("saveFor");
  9087. helpArg1 = command.newHelpSpecial("Player", "player");
  9088. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  9089. command.addHelpChild(helpArg0, helpArg1);
  9090. command.addHelpChild(help, helpArg0);
  9091. command.addHelp(help);
  9092. help = command.newHelp("warn", "warn");
  9093. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9094. command.addHelp(help);
  9095. help = command.newHelp("jail", "jail");
  9096. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9097. command.addHelp(help);
  9098. help = command.newHelp("unjail", "unjail");
  9099. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9100. command.addHelp(help);
  9101. help = command.newHelp("friend", "friend");
  9102. //friend add <player>
  9103. helpArg0 = command.newHelpLiteral("add");
  9104. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9105. command.addHelpChild(help, helpArg0);
  9106. //friend remove <player>
  9107. helpArg0 = command.newHelpLiteral("remove");
  9108. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9109. command.addHelpChild(help, helpArg0);
  9110. //friend list
  9111. command.addHelpChild(help, command.newHelpLiteral("list"));
  9112. command.addHelp(help);
  9113. commandhelp.addAlias(help, "f", "friend");
  9114. help = command.newHelp("sign", "sign");
  9115. helpArg0 = command.newHelpInt("1-4", 1, 4);
  9116. command.addHelpChild(helpArg0, command.newHelpString("text", true));
  9117. command.addHelpChild(help, helpArg0);
  9118. command.addHelp(help);
  9119. help = command.newHelp("speed", "speed");
  9120. helpArg0 = command.newHelpInt("int", 1, 10);
  9121. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "speed.other"));
  9122. command.addHelpChild(help, helpArg0);
  9123. command.addHelp(help);
  9124. help = command.newHelp("errordebug", "errordebug");
  9125. command.addHelpChild(help, command.newHelpLiteral("list"));
  9126. command.addHelpChild(help, command.newHelpLiteral("clear"));
  9127. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  9128. command.addHelp(help);
  9129. help = command.newHelp("error", "error");
  9130. command.addHelpChild(help, command.newHelpLiteral("list"));
  9131. command.addHelpChild(help, command.newHelpLiteral("clear"));
  9132. command.addHelp(help);
  9133. help = command.newHelp("mailbox", "mailbox");
  9134. //mailbox show <player>
  9135. helpArg0 = command.newHelpLiteral("show");
  9136. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "mailbox.other"));
  9137. command.addHelpChild(help, helpArg0);
  9138. //mailbox send <player>
  9139. helpArg0 = command.newHelpLiteral("send");
  9140. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9141. command.addHelpChild(help, helpArg0);
  9142. command.addHelp(help);
  9143. help = command.newHelp("world", "world");
  9144. //world info
  9145. command.addHelpChild(help, command.newHelpLiteral("info"));
  9146. //world tp <world> [player]
  9147. helpArg0 = command.newHelpLiteral("tp");
  9148. helpArg1 = command.newHelpString("world", false);
  9149. command.addHelpChild(helpArg1, command.newHelpSpecial("Player", "player"));
  9150. command.addHelpChild(helpArg0, helpArg1);
  9151. command.addHelpChild(help, helpArg0);
  9152. //world list
  9153. command.addHelpChild(help, command.newHelpLiteral("list"));
  9154. //world diffi <world> <diffi>
  9155. helpArg0 = command.newHelpLiteral("diffi");
  9156. helpArg1 = command.newHelpString("world", false);
  9157. command.addHelpChild(helpArg1, command.newHelpLiteral("PEACEFUL"));
  9158. command.addHelpChild(helpArg1, command.newHelpLiteral("EASY"));
  9159. command.addHelpChild(helpArg1, command.newHelpLiteral("NORMAL"));
  9160. command.addHelpChild(helpArg1, command.newHelpLiteral("HARD"));
  9161. command.addHelpChild(helpArg0, helpArg1);
  9162. command.addHelpChild(help, helpArg0);
  9163. //world setspawn
  9164. helpArg0 = command.newHelpLiteral("setspawn");
  9165. command.addHelpChild(help, helpArg0);
  9166. command.addHelp(help);
  9167. help = command.newHelp("quest", "quest");
  9168. //quest see
  9169. command.addHelpChild(help, command.newHelpLiteral("see"));
  9170. //quest term <player>
  9171. helpArg0 = command.newHelpLiteral("term");
  9172. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9173. command.addHelpChild(help, helpArg0);
  9174. command.addHelp(help);
  9175. help = command.newHelp("pvp", "pvp");
  9176. helpArg0 = command.newHelpLiteral("on");
  9177. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  9178. command.addHelpChild(help, helpArg0);
  9179. helpArg0 = command.newHelpLiteral("off");
  9180. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  9181. command.addHelpChild(help, helpArg0);
  9182. command.addHelp(help);
  9183. help = command.newHelp("game", "game");
  9184. command.addHelpChild(help, command.newHelpLiteral("open"));
  9185. command.addHelpChild(help, command.newHelpLiteral("close"));
  9186. command.addHelp(help);
  9187. help = command.newHelp("party", "party");
  9188. //party invite <player>
  9189. helpArg0 = command.newHelpLiteral("invite");
  9190. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9191. command.addHelpChild(help, helpArg0);
  9192. //party accept <player>
  9193. helpArg0 = command.newHelpLiteral("accept");
  9194. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9195. command.addHelpChild(help, helpArg0);
  9196. //party deny <player>
  9197. helpArg0 = command.newHelpLiteral("deny");
  9198. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9199. command.addHelpChild(help, helpArg0);
  9200. //party kick <player>
  9201. helpArg0 = command.newHelpLiteral("kick");
  9202. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9203. command.addHelpChild(help, helpArg0);
  9204. //party leave
  9205. command.addHelpChild(help, command.newHelpLiteral("leave"));
  9206. //party promote <player>
  9207. helpArg0 = command.newHelpLiteral("promote");
  9208. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9209. command.addHelpChild(help, helpArg0);
  9210. //party demote <player>
  9211. helpArg0 = command.newHelpLiteral("demote");
  9212. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9213. command.addHelpChild(help, helpArg0);
  9214. //party disband
  9215. command.addHelpChild(help, command.newHelpLiteral("disband"));
  9216. //party list
  9217. command.addHelpChild(help, command.newHelpLiteral("list"));
  9218. command.addHelp(help);
  9219. help = command.newHelp("var", "var");
  9220. helpArg0 = command.newHelpInt("id", 0, 1000000);
  9221. command.addHelpChild(helpArg0, command.newHelpString("varname", false));
  9222. command.addHelpChild(help, helpArg0);
  9223. command.addHelp(help);
  9224. help = command.newHelp("mentos", "mentos");
  9225. command.addHelpChild(help, command.newHelpInt("id", 0, 1000000));
  9226. command.addHelp(help);
  9227. help = command.newHelp("setservermessage", "setservermessage");
  9228. command.addHelpChild(help, command.newHelpString("message", true));
  9229. command.addHelp(help);
  9230. help = command.newHelp("clan", "clan");
  9231. //clan invite <name>
  9232. helpArg0 = command.newHelpLiteral("invite");
  9233. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9234. command.addHelpChild(help, helpArg0);
  9235. //clan accept <id/name/tag>
  9236. helpArg0 = command.newHelpLiteral("invite");
  9237. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  9238. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  9239. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  9240. command.addHelpChild(help, helpArg0);
  9241. //clan info [id/name/tag]
  9242. helpArg0 = command.newHelpLiteral("info");
  9243. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  9244. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  9245. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  9246. command.addHelpChild(help, helpArg0);
  9247. //clan create <name> <tag>
  9248. helpArg0 = command.newHelpLiteral("create");
  9249. helpArg1 = command.newHelpString("name", false);
  9250. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  9251. command.addHelpChild(helpArg0, helpArg1);
  9252. command.addHelpChild(help, helpArg0);
  9253. //clan kick <name>
  9254. helpArg0 = command.newHelpLiteral("kick");
  9255. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9256. command.addHelpChild(help, helpArg0);
  9257. //clan leader <name>
  9258. helpArg0 = command.newHelpLiteral("leader");
  9259. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9260. command.addHelpChild(help, helpArg0);
  9261. //clan mod <name>
  9262. helpArg0 = command.newHelpLiteral("mod");
  9263. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9264. command.addHelpChild(help, helpArg0);
  9265. //clan degrade <name>
  9266. helpArg0 = command.newHelpLiteral("degrade");
  9267. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9268. command.addHelpChild(help, helpArg0);
  9269. //clan leave
  9270. command.addHelpChild(help, command.newHelpLiteral("leave"));
  9271. //clan rename <name> <tag>
  9272. helpArg0 = command.newHelpLiteral("rename");
  9273. helpArg1 = command.newHelpString("name", false);
  9274. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  9275. command.addHelpChild(helpArg0, helpArg1);
  9276. command.addHelpChild(help, helpArg0);
  9277. //clan disband
  9278. command.addHelpChild(help, command.newHelpLiteral("disband"));
  9279. //clan msg <message>
  9280. helpArg0 = command.newHelpLiteral("msg");
  9281. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9282. command.addHelpChild(help, helpArg0);
  9283. //clan mail <message>
  9284. helpArg0 = command.newHelpLiteral("mail");
  9285. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9286. command.addHelpChild(help, helpArg0);
  9287. //clan shout <message>
  9288. helpArg0 = command.newHelpLiteral("shout");
  9289. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9290. command.addHelpChild(help, helpArg0);
  9291. //clan deposit <money>
  9292. helpArg0 = command.newHelpLiteral("deposit");
  9293. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  9294. command.addHelpChild(help, helpArg0);
  9295. //clan withdraw <money>
  9296. helpArg0 = command.newHelpLiteral("withdraw");
  9297. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  9298. command.addHelpChild(help, helpArg0);
  9299. //clan party
  9300. command.addHelpChild(help, command.newHelpLiteral("party"));
  9301. //clan setspawn
  9302. command.addHelpChild(help, command.newHelpLiteral("setspawn"));
  9303. //clan spawn
  9304. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  9305. //clan list
  9306. command.addHelpChild(help, command.newHelpLiteral("list"));
  9307. command.addHelp(help);
  9308. help = command.newHelp("shop", "shop");
  9309. //shop create
  9310. command.addHelpChild(help, command.newHelpLiteral("create"));
  9311. //shop admin
  9312. command.addHelpChild(help, command.newHelpLiteral("admin"));
  9313. //shop remove
  9314. helpArg0 = command.newHelpLiteral("remove");
  9315. command.addHelpChild(helpArg0, command.newHelpLiteral("buy"));
  9316. command.addHelpChild(helpArg0, command.newHelpLiteral("sell"));
  9317. command.addHelpChild(help, helpArg0);
  9318. //shop buy <amount> <price>
  9319. helpArg0 = command.newHelpLiteral("buy");
  9320. helpArg1 = command.newHelpInt("amount", 0, 1000);
  9321. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  9322. command.addHelpChild(helpArg0, helpArg1);
  9323. command.addHelpChild(help, helpArg0);
  9324. //shop sell <amount> <price>
  9325. helpArg0 = command.newHelpLiteral("sell");
  9326. helpArg1 = command.newHelpInt("amount", 0, 1000);
  9327. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  9328. command.addHelpChild(helpArg0, helpArg1);
  9329. command.addHelpChild(help, helpArg0);
  9330. command.addHelp(help);
  9331. help = command.newHelp("setmessage", "setmessage");
  9332. //setmessage info
  9333. command.addHelpChild(help, command.newHelpLiteral("info"));
  9334. //setmessage join <message>
  9335. helpArg0 = command.newHelpLiteral("join");
  9336. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9337. command.addHelpChild(help, helpArg0);
  9338. //setmessage leave <message>
  9339. helpArg0 = command.newHelpLiteral("leave");
  9340. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9341. command.addHelpChild(help, helpArg0);
  9342. //setmessage delete <player>
  9343. helpArg0 = command.newHelpLiteral("delete");
  9344. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "setmessage.delete"));
  9345. command.addHelpChild(help, helpArg0);
  9346. command.addHelp(help);
  9347. help = command.newHelp("tip", "tip");
  9348. //tipp list
  9349. helpArg0 = command.newHelpLiteral("list");
  9350. command.addHelpChild(help, helpArg0);
  9351. //tipp add <tipp> <text>
  9352. helpArg0 = command.newHelpLiteral("add");
  9353. helpArg1 = command.newHelpString("tip", false);
  9354. command.addHelpChild(helpArg1, command.newHelpString("text", true));
  9355. command.addHelpChild(helpArg0, helpArg1);
  9356. command.addHelpChild(help, helpArg0);
  9357. //tipp remove <tipp>
  9358. helpArg0 = command.newHelpLiteral("remove");
  9359. command.addHelpChild(helpArg0, command.newHelpString("tip", false));
  9360. command.addHelpChild(help, helpArg0);
  9361. //tipp <tipp> [player]
  9362. helpArg0 = command.newHelpString("tip", false);
  9363. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9364. command.addHelpChild(help, helpArg0);
  9365. //tipp loop <tip> <boolean>
  9366. helpArg0 = command.newHelpLiteral("loop");
  9367. helpArg1 = command.newHelpString("tip", false);
  9368. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  9369. command.addHelpChild(helpArg0, helpArg1);
  9370. command.addHelpChild(help, helpArg0);
  9371. command.addHelp(help);
  9372. help = command.newHelp("ticket", "ticket");
  9373. //ticket new <message>
  9374. helpArg0 = command.newHelpLiteral("new");
  9375. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9376. command.addHelpChild(help, helpArg0);
  9377. //ticket stop <ticket-id>
  9378. helpArg0 = command.newHelpLiteral("stop");
  9379. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000));
  9380. command.addHelpChild(help, helpArg0);
  9381. //ticket list
  9382. command.addHelpChild(help, command.newHelpLiteral("list", "isSupporter"));
  9383. //ticket get [ticket-id]
  9384. helpArg0 = command.newHelpLiteral("get");
  9385. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9386. command.addHelpChild(help, helpArg0);
  9387. //ticket finish <ticket-id>
  9388. helpArg0 = command.newHelpLiteral("finish");
  9389. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9390. command.addHelpChild(help, helpArg0);
  9391. //ticket release <ticket-id>
  9392. helpArg0 = command.newHelpLiteral("release");
  9393. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9394. command.addHelpChild(help, helpArg0);
  9395. //ticket report <ticket-id>
  9396. helpArg0 = command.newHelpLiteral("report");
  9397. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9398. command.addHelpChild(help, helpArg0);
  9399. command.addHelp(help);
  9400. help = command.newHelp("yeet", "yeet");
  9401. command.addHelpChild(help, command.newHelpInt("strength", 1, 10000000000000));
  9402. command.addHelp(help);
  9403. command.sendHelp();
  9404. }
  9405. function commandhelp.add(command) {
  9406. help = command.newHelp(command, command);
  9407. command.addHelp(help);
  9408. return help;
  9409. }
  9410. function commandhelp.addChildString(command, arg0, bool) {
  9411. help = command.newHelp(command, command);
  9412. command.addHelpChild(help, command.newHelpString(arg0, bool));
  9413. command.addHelp(help);
  9414. }
  9415. function commandhelp.addChildPlayer(command) {
  9416. help = command.newHelp(command, command);
  9417. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9418. command.addHelp(help);
  9419. }
  9420. function commandhelp.addChildBool(command, arg0) {
  9421. help = command.newHelp(command, command);
  9422. command.addHelpChild(help, command.newHelpBool(arg0));
  9423. command.addHelp(help);
  9424. }
  9425. function commandhelp.addAlias(help, alias, command) {
  9426. helpAlias = command.newHelp(alias, command);
  9427. command.addHelpAlias(helpAlias, help);
  9428. command.addHelp(helpAlias);
  9429. }
  9430. function addStatsGameHelp(help, game) {
  9431. helpArg0 = command.newHelpLiteral(game);
  9432. command.addHelpChild(helpArg0, command.newHelpLiteral("top"));
  9433. command.addHelpChild(helpArg0, command.newHelpInt("rank", 1, 1000));
  9434. helpArg1 = command.newHelpSpecial("Player", "player");
  9435. command.addHelpChild(helpArg1, command.newHelpLiteral("remove", "stats.remove"));
  9436. command.addHelpChild(helpArg0, helpArg1);
  9437. command.addHelpChild(help, helpArg0);
  9438. }
  9439. function addDtAttributeAttributHelp(attribut) {
  9440. helpArg1 = command.newHelpLiteral(attribut);
  9441. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("mainhand"));
  9442. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("offhand"));
  9443. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("head"));
  9444. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("chest"));
  9445. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("legs"));
  9446. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("feet"));
  9447. return helpArg1;
  9448. }
  9449. function addDtAttributeSlotHelp(slot) {
  9450. helpArg2 = command.newHelpLiteral(slot);
  9451. helpArg3 = command.newHelpInt("double", 0, 1000);
  9452. command.addHelpChild(helpArg3, command.newHelpLiteral("ADDITION"));
  9453. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_BASE"));
  9454. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_TOTAL"));
  9455. command.addHelpChild(helpArg2, helpArg3);
  9456. return helpArg2;
  9457. }
  9458. function showJail(player_name) {
  9459. if(isOnline(player_name)) {
  9460. inv.open($jailmenu, read.player(player_name), "§8Gefängnis");
  9461. }
  9462. }
  9463. function isJailed(player_uuid) {
  9464. return(list.contains($jailed_list, player_uuid));
  9465. }
  9466. function command.register(command, description) {
  9467. command.add(command);
  9468. list.add($command_list, command);
  9469. map.add($command_map, command, description);
  9470. }
  9471. function command.registerAlias(alias, command) {
  9472. command.add(alias);
  9473. map.add($alias_map, alias, command);
  9474. }
  9475. //--------------------------------------------------
  9476. //Time-Utils
  9477. //--------------------------------------------------
  9478. //Spielzeit aller Online-Spieler
  9479. function playtime.getTotalOnlineMinutes() {
  9480. minutes = 0;
  9481. iter = list.iterator(players.toList());
  9482. while(hasNext(iter)) {
  9483. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  9484. }
  9485. return minutes;
  9486. }
  9487. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  9488. function playtime.getInterval(from, to) {
  9489. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  9490. databank.setLong(stmt, 1, from);
  9491. databank.setLong(stmt, 2, to);
  9492. result = databank.execute(stmt);
  9493. if(databank.next(result)) {
  9494. minutes = databank.getLong(result, 1) / 1000 / 60;
  9495. } else {
  9496. minutes = 0;
  9497. }
  9498. databank.close(result);
  9499. databank.close(stmt);
  9500. return minutes;
  9501. }
  9502. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  9503. function playtime.getTotal() {
  9504. minutes = playtime.getTotalOnlineMinutes();
  9505. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  9506. result = databank.execute(stmt);
  9507. if(databank.next(result)) {
  9508. minutes += databank.getLong(result, 1) / 1000 / 60;
  9509. }
  9510. databank.close(result);
  9511. databank.close(stmt);
  9512. return minutes;
  9513. }
  9514. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  9515. function playtime.getPlayerInterval(player_id, from, to) {
  9516. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  9517. databank.setInt(stmt, 1, player_id);
  9518. databank.setLong(stmt, 2, from);
  9519. databank.setLong(stmt, 3, to);
  9520. result = databank.execute(stmt);
  9521. if(databank.next(result)) {
  9522. minutes = databank.getLong(result, 1) / 1000 / 60;
  9523. } else {
  9524. minutes = 0;
  9525. }
  9526. databank.close(result);
  9527. databank.close(stmt);
  9528. return minutes;
  9529. }
  9530. function playtime.getPlayersPerInterval(from, to) {
  9531. set = set.new();
  9532. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  9533. databank.setLong(stmt, 1, from);
  9534. databank.setLong(stmt, 2, to);
  9535. result = databank.execute(stmt);
  9536. while(databank.next(result)) {
  9537. set.add(set, databank.getInt(result, 1));
  9538. }
  9539. databank.close(result);
  9540. databank.close(stmt);
  9541. return set.getSize(set);
  9542. }
  9543. function time.getYearDays(year) {
  9544. days = 365;
  9545. if(year % 4 == 0) {
  9546. days++;
  9547. }
  9548. return days;
  9549. }
  9550. function time.getMonthDays(month, year) {
  9551. days = month.getDays(month);
  9552. //Schaltjahre
  9553. if(month == 2 && year % 4 == 0) {
  9554. days++;
  9555. }
  9556. return days;
  9557. }
  9558. function time.getDaysBetween(day1, month1, year1, day2, month2, year2) {
  9559. d_days = 0;
  9560. m_days = 0;
  9561. y_days = 0;
  9562. y = 0;
  9563. m = 0;
  9564. d = 0;
  9565. //Volle Jahre
  9566. for(year = year1 + 1; year < year2; year++) {
  9567. y_days += time.getYearDays(year);
  9568. y++;
  9569. }
  9570. if(year1 == year2) {
  9571. //Volle Monate
  9572. for(month = month1 + 1; month < month2; month++) {
  9573. m_days += time.getMonthDays(month, year1);
  9574. }
  9575. //Volle Tage
  9576. if(month1 == month2) {
  9577. d_days = day2 - day1;
  9578. } else {
  9579. d_days += month.getDays(month1) - day1;
  9580. d_days += day2;
  9581. }
  9582. } else {
  9583. //Volle Monate
  9584. for(month = month1 + 1; month < 13; month++) {
  9585. m_days += time.getMonthDays(month, year1);
  9586. m++;
  9587. }
  9588. for(month = 1; month < month2; month++) {
  9589. m_days += time.getMonthDays(month, year2);
  9590. m++;
  9591. }
  9592. //Volle Tage
  9593. d_days += month.getDays(month1) - day1;
  9594. d_days += day2;
  9595. }
  9596. return y_days + m_days + d_days;
  9597. }
  9598. function month.add(month_index, shortname, days) {
  9599. $month_array[month_index, 0] = shortname;
  9600. $month_array[month_index, 1] = days;
  9601. }
  9602. function month.getShortName(month) {
  9603. return $month_array[month - 1, 0];
  9604. }
  9605. function month.getDays(month) {
  9606. return $month_array[month - 1, 1];
  9607. }
  9608. //--------------------------------------------------
  9609. //Player-Utils
  9610. //--------------------------------------------------
  9611. function player.hasClanInvitation(player_or_id, clan_id) {
  9612. if(isPlayer(player_or_id)) {
  9613. player_id = player.getId(player_or_id);
  9614. } else {
  9615. player_id = player_or_id;
  9616. }
  9617. iter = list.iterator($clan_invitations);
  9618. while(hasNext(iter)) {
  9619. invitation = next(iter);
  9620. p_id = invitation[0];
  9621. c_id = invitation[1];
  9622. if(player_id == p_id && clan_id == c_id) {
  9623. return true;
  9624. }
  9625. }
  9626. return false;
  9627. }
  9628. function player.addClanInvitation(player_id, clan_id) {
  9629. invitation = array.new(2);
  9630. invitation[0] = player_id;
  9631. invitation[1] = clan_id;
  9632. list.add($clan_invitations, invitation);
  9633. }
  9634. //--------------------------------------------------
  9635. //Party-Utils
  9636. //--------------------------------------------------
  9637. function party.invitePlayer(inviter, invitee) {
  9638. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  9639. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  9640. //Ansonsten neue Party-ID vergeben.
  9641. inviter_uuid = player.getUuid(inviter);
  9642. if(player.isInParty(inviter)) {
  9643. party_id = player.getPartyId(inviter);
  9644. } else {
  9645. party_id = map.get($party_invite_ids, inviter_uuid);
  9646. if(party_id == null) {
  9647. party_id = ++$party_counter;
  9648. }
  9649. }
  9650. if(invitee == null) {
  9651. return "inviteeNotOnline";
  9652. }
  9653. if(inviter == invitee) {
  9654. return "inviterEqualsInvitee";
  9655. }
  9656. if(player.isInParty(inviter)) {
  9657. if(!player.isPartyLeaderOrMod(inviter)) {
  9658. return "inviterNotPermitted";
  9659. }
  9660. }
  9661. if(player.isInParty(invitee)) {
  9662. return "inviteeAlreadyInParty";
  9663. }
  9664. invitee_uuid = player.getUuid(invitee);
  9665. list = map.get($party_invitations, invitee_uuid);
  9666. if(list == null) {
  9667. list = list.new();
  9668. map.add($party_invitations, invitee_uuid, list);
  9669. }
  9670. if(list.contains(list, inviter_uuid)) {
  9671. return "inviteeAlreadyInvited";
  9672. }
  9673. list.add(list, inviter_uuid);
  9674. list.add($deluuid, inviter_uuid);
  9675. list.add($delkeytime, time.getMillis());
  9676. list = map.get($delkeytimes, invitee_uuid);
  9677. if(list == null) {
  9678. list = list.new();
  9679. map.add($delkeytimes, invitee_uuid, list);
  9680. }
  9681. list.add(list, time.getMillis());
  9682. map.add($party_invite_ids, inviter_uuid, party_id);
  9683. inviter_name = player.getName(inviter);
  9684. msg.prefix(invitee, $prefix_party, concat(inviter_name, " invites you to a party."));
  9685. msg(invitee, " §5=> §rAccept ? ", text.click("[§aYes§r] ", concat("/party accept ", inviter_name)), text.click("[§cNo§r]", concat("/party deny ", inviter_name)));
  9686. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  9687. return true;
  9688. }
  9689. function party.kickPlayer(player, reason) {
  9690. party_id = player.getPartyId(player);
  9691. //Nachrichten
  9692. player_name = player.getName(player);
  9693. if(reason == "kick") {
  9694. message = concat("§r", player_name, " has been kicked out of the party.");
  9695. } else {
  9696. message = concat("§r", player_name, " has left the party.");
  9697. }
  9698. party.sendMessage(party_id, message);
  9699. player_uuid = player.getUuid(player_name);
  9700. //aus Partyliste entfernen
  9701. party_list = party.getList(party_id);
  9702. list.remove(party_list, player_uuid);
  9703. //ID und Rang entfernen
  9704. rank = player.getPartyRank(player);
  9705. player.delPartyRank(player);
  9706. player.delPartyId(player);
  9707. //Einladungen löschen
  9708. map.remove($party_invitations, player_uuid);
  9709. map.remove($delkeytimes, player_uuid);
  9710. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  9711. if(list.getSize(party_list) < 2) {
  9712. party.delete(party_id);
  9713. return;
  9714. }
  9715. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  9716. if(rank == "Leader") {
  9717. new_player = player.get(list.getIndex(party_list, 0));
  9718. player.setPartyRank(new_player, "Leader");
  9719. party.sendMessage(party_id, concat("§r", player.getName(new_player), " is now Leader."));
  9720. }
  9721. }
  9722. function party.sendMessage(party_id, message) {
  9723. iter = list.iterator(party.getList(party_id));
  9724. while(hasNext(iter)) {
  9725. msg.prefix(player.get(next(iter)), $prefix_party, message);
  9726. }
  9727. }
  9728. function party.delete(party_id) {
  9729. party.sendMessage(party_id, "Party disbanded.");
  9730. iter = list.iterator(party.getList(party_id));
  9731. while(hasNext(iter)) {
  9732. player = player.get(next(iter));
  9733. player.delPartyRank(player);
  9734. player.delPartyId(player);
  9735. }
  9736. }
  9737. @deletePartyInvitation
  9738. player_uuid = list.getIndex(deluuid, 0);
  9739. invitations = map.get(party_invitations, player_uuid);
  9740. keytimes = map.get(delkeytimes, player_uuid);
  9741. if(invitations != null) {
  9742. if(list.getSize(invitations) != 0) {
  9743. keytime = list.getIndex(delkeytime, 0);
  9744. keytime2 = list.getIndex(keytimes, 0);
  9745. list.remove(delkeytime, keytime);
  9746. if(keytime == keytime2) {
  9747. index = list.getIndexOf(keytimes, keytime2);
  9748. list.remove(keytimes, keytime2);
  9749. list.removeIndex(invitations, index);
  9750. }
  9751. }
  9752. }
  9753. goto("wait");
  9754. //--------------------------------------------------
  9755. //Plot-Utils
  9756. //--------------------------------------------------
  9757. function plot.registerMoveEvents(world) {
  9758. iter = plot.iterator(world);
  9759. while(hasNext(iter)) {
  9760. plot = next(iter);
  9761. if(plot.isCity(plot) || plot.isPlot(plot)) {
  9762. plot.setMoveEvent(plot, world);
  9763. }
  9764. }
  9765. }
  9766. function plot.delMoveEvent(plot) {
  9767. plot_id = plot.getId(plot);
  9768. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  9769. a = list.getIndex($plot_move_ids_list, i);
  9770. if(a[1] == plot_id) {
  9771. event.removeMoveData(a[0]);
  9772. list.removeIndex($plot_move_ids_list, i);
  9773. break;
  9774. }
  9775. }
  9776. }
  9777. function plot.setMoveEvent(plot, world) {
  9778. x1 = plot.getMinX(plot);
  9779. y1 = plot.getMinY(plot);
  9780. z1 = plot.getMinZ(plot);
  9781. x2 = plot.getMaxX(plot);
  9782. y2 = plot.getMaxY(plot);
  9783. z2 = plot.getMaxZ(plot);
  9784. loc1 = loc.new(world, x1, y1, z1);
  9785. loc2 = loc.new(world, x2, y2, z2);
  9786. move_id = event.addMoveData(loc1, loc2, 100, -1);
  9787. plot_id = plot.getId(plot);
  9788. a = array.new(2);
  9789. a[0] = move_id;
  9790. a[1] = plot_id;
  9791. list.add($plot_move_ids_list, a);
  9792. }
  9793. function plot.getPlotIdFromMoveId(move_id) {
  9794. iter = list.iterator($plot_move_ids_list);
  9795. while(hasNext(iter)) {
  9796. a = next(iter);
  9797. if(a[0] == move_id) {
  9798. return a[1];
  9799. }
  9800. }
  9801. return null;
  9802. }
  9803. function plot.getMoveIdFromPlotId(plot_id) {
  9804. iter = list.iterator($plot_move_ids_list);
  9805. while(hasNext(iter)) {
  9806. a = next(iter);
  9807. if(a[1] == plot_id) {
  9808. return a[0];
  9809. }
  9810. }
  9811. return null;
  9812. }
  9813. @checkForPlot
  9814. player_uuid = list.getIndex(check_for_plot_list, 0);
  9815. list.removeIndex(check_for_plot_list, 0);
  9816. player = player.get(player_uuid);
  9817. if(player == null) {
  9818. map.remove(actual_move_id, player_uuid);
  9819. goto("wait");
  9820. }
  9821. player_loc = entity.getLocation(player);
  9822. plot_list = plot.get(player_loc);
  9823. if(list.getSize(plot_list) == 0) {
  9824. map.remove(actual_move_id, player_uuid);
  9825. } else {
  9826. list.add(check_for_plot_list, player_uuid);
  9827. sgoto(100, "checkForPlot");
  9828. }
  9829. goto("wait");
  9830. function tpBottom(player) {
  9831. player_loc = entity.getLocation(player);
  9832. y = loc.getY(player_loc);
  9833. while(y > 0 && block.isAir(player_loc)) {
  9834. loc.setY(player_loc, y);
  9835. y--;
  9836. }
  9837. if(y <= 0) {
  9838. return;
  9839. }
  9840. loc.addY(player_loc, 1);
  9841. entity.teleport(player, player_loc);
  9842. }
  9843. //--------------------------------------------------
  9844. //Hawkeye-Utils
  9845. //--------------------------------------------------
  9846. function hawkeye.getStartIndices(string) {
  9847. a = array.new(5);
  9848. a[0] = text.indexOf(string, "e:", 0);
  9849. a[1] = text.indexOf(string, "p:", 0);
  9850. a[2] = text.indexOf(string, "r:", 0);
  9851. a[3] = text.indexOf(string, "t:", 0);
  9852. a[4] = text.length(string);
  9853. a = array.sort(a, true);
  9854. return a;
  9855. }
  9856. function hawkeye.getParStrings(string, indices) {
  9857. index = 0;
  9858. while(indices[index] == -1) {
  9859. index++;
  9860. }
  9861. start_index = indices[index];
  9862. if(start_index != 0) {
  9863. return null;
  9864. }
  9865. l = list.new();
  9866. while(++index < 5) {
  9867. next_index = indices[index];
  9868. if(index == 4) {
  9869. next_index++;
  9870. }
  9871. par_str = text.trim(text.subString(string, start_index, next_index - 1));
  9872. if(text.length(par_str) < 3) {
  9873. return null;
  9874. }
  9875. list.add(l, par_str);
  9876. start_index = next_index;
  9877. }
  9878. return l;
  9879. }
  9880. function hawkeye.processInput(args, player) {
  9881. string = text.concatList(args, " ", 1, list.getSize(args) - 1);
  9882. indices = hawkeye.getStartIndices(string);
  9883. par_strings = hawkeye.getParStrings(string, indices);
  9884. if(par_strings == null) {
  9885. return "False input parameters";
  9886. }
  9887. first_letters = set.new();
  9888. iter = list.iterator(par_strings);
  9889. while(hasNext(iter)) {
  9890. par_str = next(iter);
  9891. first_letter = text.subString(par_str, 0, 1);
  9892. if(set.contains(first_letters, first_letter)) {
  9893. return "Twice input parameters";
  9894. }
  9895. set.add(first_letters, first_letter);
  9896. par_str = text.subString(par_str, 2, text.length(par_str));
  9897. args_par_str = text.split(",", par_str);
  9898. if(first_letter == "e") {
  9899. events = list.new();
  9900. iter_args = list.iterator(args_par_str);
  9901. while(hasNext(iter_args)) {
  9902. list.add(events, next(iter_args));
  9903. }
  9904. }
  9905. elseif(first_letter == "p") {
  9906. players = list.new();
  9907. iter_args = list.iterator(args_par_str);
  9908. while(hasNext(iter_args)) {
  9909. list.add(players, next(iter_args));
  9910. }
  9911. }
  9912. elseif(first_letter == "r") {
  9913. if(list.getSize(args_par_str) > 1) {
  9914. return "False input at r:";
  9915. }
  9916. radius = list.getIndex(args_par_str, 0);
  9917. if(!isDouble(radius)) {
  9918. return "False input at r:";
  9919. }
  9920. }
  9921. elseif(first_letter == "t") {
  9922. if(list.getSize(args_par_str) > 3) {
  9923. return "False input at t:";
  9924. }
  9925. if(text.contains(par_str, "d")) {
  9926. d = true;
  9927. } else {
  9928. d = false;
  9929. }
  9930. time_span = 0;
  9931. iter_args = list.iterator(args_par_str);
  9932. while(hasNext(iter_args)) {
  9933. arg = next(iter_args);
  9934. if(text.contains(arg, "m")) {
  9935. minutes = text.convert(text.replace(arg, "m", ""));
  9936. if(!isDouble(minutes)) {
  9937. return "False input at t:";
  9938. }
  9939. time_span += minutes * 60;
  9940. }
  9941. elseif(text.contains(arg, "h")) {
  9942. hours = text.convert(text.replace(arg, "h", ""));
  9943. if(!isDouble(hours)) {
  9944. return "False input at t:";
  9945. }
  9946. time_span += hours * 60 * 60;
  9947. } else {
  9948. if(d) {
  9949. days = arg;
  9950. if(!isDouble(days)) {
  9951. return "False input at t:";
  9952. }
  9953. time_span += days * 24 * 60 * 60;
  9954. } else {
  9955. return "False input at t:";
  9956. }
  9957. }
  9958. }
  9959. timeTo = time.getMillis();
  9960. timeFrom = timeTo - time_span * 1000;
  9961. }
  9962. }
  9963. a = array.new(6);
  9964. a[0] = timeFrom;
  9965. a[1] = timeTo;
  9966. a[2] = entity.getLocation(player);
  9967. a[3] = radius;
  9968. a[4] = events;
  9969. a[5] = players;
  9970. return a;
  9971. }
  9972. function hawkeye.getAmountOfAll() {
  9973. stmt = databank.prepare("SELECT COUNT(*) FROM hawkeye;");
  9974. result = databank.execute(stmt);
  9975. if(databank.next(result)) {
  9976. amount = databank.getInt(result, 1);
  9977. } else {
  9978. amount = 0;
  9979. }
  9980. databank.close(result);
  9981. databank.close(stmt);
  9982. return amount;
  9983. }
  9984. function hawkeye.getEventName(event_id) {
  9985. return map.get($event_map, event_id);
  9986. }
  9987. //--------------------------------------------------
  9988. //Mailbox-Utils
  9989. //--------------------------------------------------
  9990. function mailbox.setItem(player_id, index, item) {
  9991. pfad = "scripts/configs/inv_data/mailbox";
  9992. config = config.new(pfad, player_id);
  9993. if(config.exists(config)) {
  9994. config.load(config);
  9995. }
  9996. item_string = text.item(item);
  9997. config.set(config, concat("item-", text.number(index)), item_string);
  9998. config.saveAsync(config);
  9999. }
  10000. function mailbox.getFreeIndex(player_id) {
  10001. pfad = "scripts/configs/inv_data/mailbox";
  10002. config = config.new(pfad, player_id);
  10003. if(config.exists(config)) {
  10004. config.load(config);
  10005. }
  10006. for(i = 0; i < 27; i++) {
  10007. item_string = config.getString(config, concat("item-", text.number(i)), "minecraft:air");
  10008. if(item_string == "minecraft:air") {
  10009. return i;
  10010. }
  10011. }
  10012. return -1;
  10013. }
  10014. function mailbox.show(to_player, player_id) {
  10015. pfad = "scripts/configs/inv_data/mailbox";
  10016. config = config.new(pfad, player_id);
  10017. if(config.exists(config)) {
  10018. config.load(config);
  10019. }
  10020. inv = inv.new("333333333333333333333333333");
  10021. for(i = 0; i < 27; i++) {
  10022. item_string = config.getString(config, concat("item-", text.number(i)), "minecraft:air");
  10023. item = read.item(item_string);
  10024. if(item == null) {
  10025. continue;
  10026. }
  10027. inv.setItem(inv, i, item);
  10028. }
  10029. inv.open(inv, to_player, concat("Mailbox from ", player.getNameFromId(player_id)));
  10030. }
  10031. function updateVoteInv() {
  10032. inv.setItem($vote_inv, 2, read.item("km:skill20", 1, "§aMore Homes", "§fCost: §e1 VP", concat("§fCounter: §e", text.number(getHomeBoost())), "Every 20 VP the possible homes increase by one. Counter automatically shrinks by one every day."));
  10033. }
  10034. function getAdditionalVoteHomes() {
  10035. return math.roundDown(getHomeBoost() / 20);
  10036. }
  10037. function getHomeBoost() {
  10038. config = getScriptVar("server_config");
  10039. return config.getDouble(config, "homeBoostPoints", 0);
  10040. }
  10041. function increaseHomeBoost() {
  10042. config = getScriptVar("server_config");
  10043. points = config.getDouble(config, "homeBoostPoints", 0) + 1;
  10044. config.set(config, "homeBoostPoints", points);
  10045. config.saveAsync(config);
  10046. updateVoteInv();
  10047. }
  10048. function decreaseHomeBoost() {
  10049. config = getScriptVar("server_config");
  10050. points = config.getDouble(config, "homeBoostPoints", 0) - 1;
  10051. if(points < 0) {
  10052. points = 0;
  10053. }
  10054. config.set(config, "homeBoostPoints", points);
  10055. config.saveAsync(config);
  10056. updateVoteInv();
  10057. }