commands.txt 281 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949
  1. waitfor(5); //Verhindert Endlos-Schleife on /start commands
  2. setCommandHelps();
  3. command.clear();
  4. //Games
  5. //command.add("hack");
  6. command.add("nextplayer");
  7. command.add("invstats");
  8. command.add("topinvstats");
  9. command.add("removeinvstats");
  10. command.add("sfstats");
  11. command.add("topsfstats");
  12. command.add("removesfstats");
  13. command.add("questanswer");
  14. command.add("infopoint1");
  15. command.add("infopoint2");
  16. command.add("infopoint3");
  17. command.add("infopoint4");
  18. command.add("infopoint5");
  19. command.add("infopoint6");
  20. command.add("infopoint7");
  21. command.add("infopoint8");
  22. command.add("infopoint9");
  23. command.add("infopoint10");
  24. command.add("infopoint11");
  25. //Vanilla überschreiben
  26. command.add("help");
  27. command.add("butcher");
  28. alias_map = map.new();
  29. command_list = list.new();
  30. command_map = map.new();
  31. command.register("afk", "Toggles afk");
  32. command.register("allsounds", "Plays all sounds");
  33. command.register("answer", "Answers the last private message");
  34. command.register("ass", "Armor Stand Signs");
  35. command.register("back", "Teleports to the last position");
  36. command.register("ban", "Bans a player");
  37. command.register("boost", "Boosts you up to the clouds");
  38. command.register("bug", "Report a bug");
  39. command.register("clan", "Clan-Commands");
  40. command.register("cli", "Clears items in a radius");
  41. command.register("color", "Shows all colors");
  42. command.register("coords", "Shows infos for the targeted block");
  43. command.register("copyisland", "Copyisland-Commands");
  44. command.register("databank", "Databank-Commands");
  45. command.register("datatools", "Datatools-Commands");
  46. command.register("enderchest", "Shows enderchests");
  47. command.register("error", "Error-Logger");
  48. command.register("errordebug", "Debug-Logger");
  49. command.register("feed", "Fills hunger bar");
  50. command.register("fly", "Toggles fly");
  51. command.register("friend", "Friend-Commands");
  52. command.register("game", "marvs minigame shit");
  53. command.register("gamemode", "Change gamemode");
  54. command.register("gamerule", "Manage gamerules");
  55. command.register("games", "Teleports to games-spawn");
  56. command.register("giveup", "Giveup a quest");
  57. command.register("grow", "Grow seeds");
  58. command.register("hat", "Be fame with a new hat");
  59. command.register("head", "Gives you a player's head");
  60. command.register("heal", "Heals, fills hunger bar and remove effects");
  61. command.register("home", "Manage your homes");
  62. command.register("live", "Toggles Live-Mode");
  63. command.register("leave", "Leave a minigame");
  64. command.register("human", "Human-Commands");
  65. command.register("inv", "Inv-Commands");
  66. command.register("iteminfo", "Returns information about an item");
  67. command.register("jail", "Sends a player to jail");
  68. command.register("kick", "Kicks a player");
  69. command.register("kill", "Kill yourself");
  70. command.register("lastseen", "Shows the last players online");
  71. command.register("lightning", "Summons a lightning_bolt");
  72. command.register("list", "List all players online");
  73. command.register("mail", "Mail-Commands");
  74. command.register("memory", "Returns RAM-usage");
  75. command.register("msg", "Send a private message");
  76. command.register("mute", "Mutes a player");
  77. command.register("news", "Send Push-News to all players");
  78. command.register("nickname", "Set a nickname");
  79. command.register("nowb", "Sends no 'is back' message if afk");
  80. command.register("party", "Party-Commands");
  81. command.register("perm", "Manage permissions");
  82. command.register("plant", "Plant seeds");
  83. command.register("playtime", "Shows your playtime");
  84. command.register("plot", "Plot-Commands");
  85. command.register("plough", "Plough dirt around you");
  86. command.register("pvp", "Toggles pvp");
  87. command.register("rank", "Shows your available ranks");
  88. command.register("repair", "Repairs your item in mainhand");
  89. command.register("report", "Report whatever you want");
  90. command.register("ride", "Rides an entity");
  91. command.register("say", "[Server] chat message");
  92. command.register("script", "Script-Commands");
  93. command.register("seen", "Returns the last date the player was online");
  94. command.register("senditem", "Sends an itemstack to another player");
  95. command.register("setmessage", "Set your join/leave-message");
  96. command.register("setrank", "");
  97. command.register("setservermessage", "Sets the server-message in the serverlist");
  98. command.register("setspawn", "Changes a spawn");
  99. command.register("shop", "Shop-Commands");
  100. command.register("sign", "Edit a sign");
  101. command.register("silentban", "Silently bans a player");
  102. command.register("silentjoin", "Toggled Silentjoins");
  103. command.register("silentkick", "Silently kicks a player");
  104. command.register("skills", "Shows all skills");
  105. command.register("spawn", "Teleports to spawn");
  106. command.register("speed", "Sets your speed");
  107. command.register("start", "Starts a script");
  108. command.register("startgame", "Reduces start-countdown for a minigame");
  109. command.register("stats", "Statistics-Commands");
  110. command.register("stopadventure", "Stops an adventure");
  111. command.register("story", "Teleports to story-spawn");
  112. command.register("teleport", "Teleports a player to a player");
  113. command.register("tempban", "Bans a player temporarly");
  114. command.register("tempfly", "Let a player temporarly fly");
  115. command.register("ticket", "Ticket-Commands");
  116. command.register("time", "Time-Commands");
  117. command.register("tip", "Tip-Commands");
  118. command.register("top", "Teleports to to highest point at the current position");
  119. command.register("tpa", "Sends a teleport request to a player");
  120. command.register("tpahere", "Sends a teleport request to a player");
  121. command.register("tpaccept", "Accepts a teleport request");
  122. command.register("tpaccepthere", "Accepts a teleport request");
  123. command.register("tppos", "Teleports to coordinates");
  124. command.register("unban", "Unbans a player");
  125. command.register("unjail", "Releases a player from jail");
  126. command.register("unmute", "Unmutes a player");
  127. command.register("user", "Returns infos about a user");
  128. command.register("vanish", "Vanishes a player");
  129. command.register("var", "Reads variables from a scripts");
  130. command.register("voxel", "Set radius for voxel");
  131. command.register("warn", "Warns a player");
  132. command.register("warp", "Warp-Commands");
  133. command.register("weather", "Weather-Commands");
  134. command.register("world", "World-Commands");
  135. command.registerAlias("afklo", "afk");
  136. command.registerAlias("itemdb", "iteminfo");
  137. command.registerAlias("skull", "head");
  138. command.registerAlias("skick", "silentkick");
  139. command.registerAlias("sban", "silentban");
  140. command.registerAlias("tell", "msg");
  141. command.registerAlias("r", "answer");
  142. command.registerAlias("pardon", "unban");
  143. command.registerAlias("mimimi", "help");
  144. command.registerAlias("ci", "copyisland");
  145. command.registerAlias("mem", "memory");
  146. command.registerAlias("tp", "teleport");
  147. command.registerAlias("homes", "home");
  148. command.registerAlias("colour", "color");
  149. command.registerAlias("gm", "gamemode");
  150. command.registerAlias("p", "plot");
  151. command.registerAlias("coord", "coords");
  152. command.registerAlias("dt", "datatools");
  153. command.registerAlias("f", "friend");
  154. command.registerAlias("suicide", "kill");
  155. command.registerAlias("l", "leave");
  156. command.registerAlias("v", "vanish");
  157. command.registerAlias("hub", "leave");
  158. command.registerAlias("fuckit", "giveup");
  159. command.registerAlias("ram", "memory");
  160. command.registerAlias("thor", "lightning");
  161. composter_par = particle.get("composter");
  162. beds_tag = block.getTag("minecraft:beds");
  163. chest_tag = block.getTag("forge:chests");
  164. sign_tag = block.getTag("minecraft:signs");
  165. dirt_tag = block.getTag("forge:dirt");
  166. gamesspawn = world.getGamesSpawn();
  167. serverspawn = world.getServerSpawn();
  168. prefix_clan = "§2Clan";
  169. prefix_tips = "§eTips";
  170. prefix_lock = "§eLock";
  171. prefix_commands = "§6Commands";
  172. prefix_friends = "§5Friends";
  173. prefix_world = "§bWorld";
  174. prefix_jail = "§5Jail";
  175. prefix_quest = "§dQuest";
  176. prefix_perms = "§6Perms";
  177. prefix_datatools = "§6DataTools";
  178. prefix_human = "§6Human";
  179. prefix_plot = "§dPlots";
  180. prefix_party = "§5Party";
  181. prefix_skill = "§2Skill";
  182. party_ids = getScriptVar("party_ids");
  183. if(party_ids == null) {
  184. party_ids = map.new();
  185. setScriptVar("party_ids", map.new()); //Player, partyid
  186. }
  187. party_lists = getScriptVar("party_lists");
  188. if(party_lists == null) {
  189. party_lists = map.new();
  190. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  191. }
  192. party_ranks = getScriptVar("party_ranks");
  193. if(party_ranks == null) {
  194. party_ranks = map.new();
  195. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  196. }
  197. party_counter = getScriptVar("party_counter");
  198. if(party_counter == null) {
  199. party_counter = 0;
  200. setScriptVar("party_counter", party_counter); //Player, partyid
  201. }
  202. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  203. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  204. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  205. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  206. party_invite_ids = map.new(); //Player_uuid, partyid
  207. list = getScriptVar("block_commands_list");
  208. if(list == null) {
  209. list = list.new();
  210. setScriptVar("block_commands_list", list);
  211. }
  212. live_set = getScriptVar("live_set");
  213. if(live_set == null) {
  214. live_set = set.new();
  215. setScriptVar("live_set", live_set);
  216. } else {
  217. //Register all Live-Players again
  218. iter = set.iterator(live_set);
  219. while(hasNext(iter)) {
  220. player = player.get(next(iter));
  221. if(player != null) {
  222. player.setLive(player, true);
  223. }
  224. }
  225. }
  226. afk_map = getScriptVar("afk_map");
  227. if(afk_map == null) {
  228. afk_map = map.new();
  229. setScriptVar("afk_map", afk_map);
  230. } else {
  231. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  232. iter = map.iterator(afk_map);
  233. while(hasNext(iter)) {
  234. element = next(iter);
  235. player = player.get(map.getKey(element));
  236. if(player != null) {
  237. player.setAfk(player, true);
  238. }
  239. }
  240. }
  241. sgoto(10, "coordsloop");
  242. clan_invitations = list.new();
  243. friend_requests = map.new();
  244. lock_chests = map.new();
  245. chatbuffer = map.new();
  246. tpa_request = list.new();
  247. answer_map = map.new();
  248. warninglist = list.new();
  249. plotpos1 = map.new();
  250. plotpos2 = map.new();
  251. invseeids = set.new();
  252. ride_set = set.new();
  253. fields = set.new();
  254. vanish_set = set.new();
  255. butcher_set = set.new();
  256. set.add(butcher_set, "zombie");
  257. set.add(butcher_set, "zombie_villager");
  258. set.add(butcher_set, "husk");
  259. set.add(butcher_set, "skeleton");
  260. set.add(butcher_set, "creeper");
  261. set.add(butcher_set, "enderman");
  262. set.add(butcher_set, "pillager");
  263. set.add(butcher_set, "spider");
  264. set.add(butcher_set, "phantom");
  265. set.add(butcher_set, "witch");
  266. set.add(butcher_set, "stray");
  267. set.add(butcher_set, "drowned");
  268. set.add(butcher_set, "wither");
  269. rank_array = array.new(25, 2);
  270. //Playtime
  271. rank_array[0, 0] = "rank.owner";
  272. rank_array[0, 1] = "4Owner";
  273. rank_array[1, 0] = "rank.admin";
  274. rank_array[1, 1] = "cAdmin";
  275. rank_array[2, 0] = "rank.moderator";
  276. rank_array[2, 1] = "9Moderator";
  277. rank_array[3, 0] = "rank.supporter";
  278. rank_array[3, 1] = "bSupporter";
  279. rank_array[4, 0] = "rank.dev";
  280. rank_array[4, 1] = "5Developer";
  281. rank_array[5, 0] = "rank.builder";
  282. rank_array[5, 1] = "5Builder";
  283. rank_array[6, 0] = "rank.vip";
  284. rank_array[6, 1] = "dVIP";
  285. rank_array[7, 0] = "rank.influencer";
  286. rank_array[7, 1] = "dInfluencer";
  287. rank_array[8, 0] = "rank.sponsor";
  288. rank_array[8, 1] = "dSponsor";
  289. rank_array[9, 0] = "rank.legend";
  290. rank_array[9, 1] = "2Legend";
  291. rank_array[10, 0] = "rank.pioneer";
  292. rank_array[10, 1] = "2Pioneer";
  293. rank_array[11, 0] = "rank.lord";
  294. rank_array[11, 1] = "2Lord";
  295. rank_array[12, 0] = "rank.altruist";
  296. rank_array[12, 1] = "2Altruist";
  297. rank_array[13, 0] = "major";
  298. rank_array[13, 1] = "2Major";
  299. rank_array[14, 0] = "rank.frequenter";
  300. rank_array[14, 1] = "6Frequenter";
  301. rank_array[15, 0] = "rank.explorer";
  302. rank_array[15, 1] = "6Explorer";
  303. rank_array[16, 0] = "rank.chief";
  304. rank_array[16, 1] = "6Chief";
  305. rank_array[17, 0] = "rank.friend";
  306. rank_array[17, 1] = "6Friend";
  307. rank_array[18, 0] = "rank.colonizer";
  308. rank_array[18, 1] = "6Colonizer";
  309. rank_array[19, 0] = "rank.newcomer";
  310. rank_array[19, 1] = "eNewcomer";
  311. rank_array[20, 0] = "rank.adventurer";
  312. rank_array[20, 1] = "eAdventurer";
  313. rank_array[21, 0] = "rank.commander";
  314. rank_array[21, 1] = "eCommander";
  315. rank_array[22, 0] = "rank.volunteer";
  316. rank_array[22, 1] = "eVolunteer";
  317. rank_array[23, 0] = "rank.settler";
  318. rank_array[23, 1] = "eSettler";
  319. rank_array[24, 0] = "rank.user";
  320. rank_array[24, 1] = "3User";
  321. setScriptVar("ranks", rank_array);
  322. permgroupToRank = map.new();
  323. map.add(permgroupToRank, "admin", "cAdmin");
  324. map.add(permgroupToRank, "builder", "5Builder");
  325. map.add(permgroupToRank, "vip", "dVIP");
  326. map.add(permgroupToRank, "dev", "5Developer");
  327. map.add(permgroupToRank, "supporter", "bSupporter");
  328. map.add(permgroupToRank, "mod", "9Moderator");
  329. map.add(permgroupToRank, "yt", "dInfluencer");
  330. map.add(permgroupToRank, "streamer", "dInfluencer");
  331. map.add(permgroupToRank, "sponsor", "dSponsor");
  332. permgroupsmap = map.new();
  333. map.add(permgroupsmap, "worldedit", 1);
  334. map.add(permgroupsmap, "admin", 2);
  335. map.add(permgroupsmap, "builder", 3);
  336. map.add(permgroupsmap, "vip", 4);
  337. map.add(permgroupsmap, "dev", 5);
  338. map.add(permgroupsmap, "teleport", 6);
  339. map.add(permgroupsmap, "supporter", 9);
  340. map.add(permgroupsmap, "streamer", 11);
  341. map.add(permgroupsmap, "mod", 12);
  342. map.add(permgroupsmap, "yt", 13);
  343. map.add(permgroupsmap, "sponsor", 14);
  344. map.add(permgroupsmap, "bypass", 15);
  345. map.add(permgroupsmap, "creative", 17);
  346. permgroupsmap2 = map.new();
  347. map.add(permgroupsmap2, 1, "worldedit");
  348. map.add(permgroupsmap2, 2, "admin");
  349. map.add(permgroupsmap2, 3, "builder");
  350. map.add(permgroupsmap2, 4, "vip");
  351. map.add(permgroupsmap2, 5, "dev");
  352. map.add(permgroupsmap2, 6, "teleport");
  353. map.add(permgroupsmap2, 9, "supporter");
  354. map.add(permgroupsmap2, 11, "streamer");
  355. map.add(permgroupsmap2, 12, "mod");
  356. map.add(permgroupsmap2, 13, "yt");
  357. map.add(permgroupsmap2, 14, "sponsor");
  358. map.add(permgroupsmap2, 15, "bypass");
  359. map.add(permgroupsmap2, 17, "creative");
  360. monthlist = map.new();
  361. map.add(monthlist, 1, "Jan");
  362. map.add(monthlist, 2, "Feb");
  363. map.add(monthlist, 3, "Mar");
  364. map.add(monthlist, 4, "Apr");
  365. map.add(monthlist, 5, "May");
  366. map.add(monthlist, 6, "Jun");
  367. map.add(monthlist, 7, "Jul");
  368. map.add(monthlist, 8, "Aug");
  369. map.add(monthlist, 9, "Sep");
  370. map.add(monthlist, 10, "Oct");
  371. map.add(monthlist, 11, "Nov");
  372. map.add(monthlist, 12, "Dec");
  373. monthdays = map.new();
  374. map.add(monthdays, 1, 31);
  375. map.add(monthdays, 2, 28);
  376. map.add(monthdays, 3, 31);
  377. map.add(monthdays, 4, 30);
  378. map.add(monthdays, 5, 31);
  379. map.add(monthdays, 6, 30);
  380. map.add(monthdays, 7, 31);
  381. map.add(monthdays, 8, 31);
  382. map.add(monthdays, 9, 30);
  383. map.add(monthdays, 10, 31);
  384. map.add(monthdays, 11, 30);
  385. map.add(monthdays, 12, 31);
  386. jailed_list = list.new();
  387. ironbars = read.item("minecraft:iron_bars", 1, "§r");
  388. jailmenu = inv.new("222222222");
  389. inv.setItem(jailmenu, 0, ironbars);
  390. inv.setItem(jailmenu, 1, ironbars);
  391. inv.setItem(jailmenu, 2, ironbars);
  392. inv.setItem(jailmenu, 3, ironbars);
  393. inv.setItem(jailmenu, 4, ironbars);
  394. inv.setItem(jailmenu, 5, ironbars);
  395. inv.setItem(jailmenu, 6, ironbars);
  396. inv.setItem(jailmenu, 7, ironbars);
  397. inv.setItem(jailmenu, 8, ironbars);
  398. consoleCommands = set.new();
  399. set.add(consoleCommands, "ban");
  400. set.add(consoleCommands, "tempfly");
  401. set.add(consoleCommands, "silentban");
  402. set.add(consoleCommands, "tempban");
  403. set.add(consoleCommands, "unban");
  404. set.add(consoleCommands, "kick");
  405. set.add(consoleCommands, "silentkick");
  406. set.add(consoleCommands, "say");
  407. set.add(consoleCommands, "list");
  408. set.add(consoleCommands, "lastseen");
  409. set.add(consoleCommands, "start");
  410. set.add(consoleCommands, "msg");
  411. set.add(consoleCommands, "answer");
  412. 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);"));
  413. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS logoutdata (player_id INT NOT NULL PRIMARY KEY, logouttime BIGINT, FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  414. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS tipps (tipp_key VARCHAR(20) PRIMARY KEY, tipp_value VARCHAR(255));"));
  415. 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);"));
  416. 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);"));
  417. jail_loop_active = false;
  418. afk_loop_active = false;
  419. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  420. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  421. check_for_plot_list = list.new();
  422. plot.registerMoveEvents(world.get("overworld"));
  423. plot.registerMoveEvents(world.get("the_nether"));
  424. plot.registerMoveEvents(world.get("the_end"));
  425. plot.registerMoveEvents(world.get("games"));
  426. event.load("entity_click");
  427. event.load("player_move");
  428. event.load("inv_click");
  429. event.load("inv_close");
  430. event.load("function_key");
  431. event.load("missing_perm");
  432. event.load("missing_command");
  433. event.load("custom_command");
  434. event.load("block_place");
  435. event.load("block_break");
  436. event.load("block_click");
  437. event.load("player_logout");
  438. event.load("player_data_tick");
  439. msg("dev", "§bCommands §rloaded.");
  440. @wait
  441. wait();
  442. if(event == "custom_command") {
  443. //Permission-Check
  444. command = text.toLowerCase(command);
  445. command = map.getOrDefault(alias_map, command, command);
  446. size = list.getSize(args);
  447. if(player == null) {
  448. sender = "SERVER";
  449. sender_name = "SERVER";
  450. if(set.contains(consoleCommands, command)) {
  451. ignoreGoto(command);
  452. goto("wait");
  453. }
  454. msg("SERVER", "Sorry. Not a console-command yet. Go and tell marvinius.");
  455. goto("wait");
  456. }
  457. if(!perm.has(player, command)) {
  458. perm.no(player, command);
  459. goto("wait");
  460. }
  461. sender = player;
  462. sender_name = player.getName(player);
  463. affectedname = player.getName(player);
  464. player_name = player.getName(player);
  465. affectedplayer = player;
  466. if(command != "leave") {
  467. if(player.isCommandBlocked(player)) {
  468. msg.prefix(player, prefix_commands, "§rThe most important rule in competition: Sabotage!");
  469. goto("wait");
  470. }
  471. }
  472. ignoreGoto(command);
  473. goto("wait");
  474. }
  475. if(event == "player_move") {
  476. player_uuid = player.getUuid(player);
  477. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  478. if(last_move_id == id) {
  479. goto("wait");
  480. }
  481. world = loc.getWorld(entity.getLocation(player));
  482. plot_id = plot.getPlotIdFromMoveId(id);
  483. plot = plot.getFromId(plot_id, world);
  484. if(plot == null) {
  485. goto("wait");
  486. }
  487. if(plot.isCity(plot)) {
  488. color_code = "§c";
  489. } else {
  490. color_code = "§e";
  491. }
  492. title.reset(player);
  493. title.setSub(player, concat("You entered ", color_code, plot.getName(plot), "."));
  494. title.send(player, "");
  495. map.add(actual_move_id, player_uuid, id);
  496. list.add(check_for_plot_list, player_uuid);
  497. sgoto(100, "checkForPlot");
  498. goto("wait");
  499. }
  500. if(event == "block_click") {
  501. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  502. if(action == "right" && !isSurvWorldName(world_name) && block.hasTag(beds_tag, block)) {
  503. cancel = true;
  504. goto("wait");
  505. }
  506. if(perm.has(player, "plot.bypass")) {
  507. goto("wait");
  508. }
  509. if(block.hasTag(chest_tag, block)) {
  510. if(plot.check(block_loc, player, 16, true)) {
  511. cancel = false;
  512. goto("wait");
  513. }
  514. player_id = player.getId(player);
  515. player_uuid = player.getUuid(player);
  516. list = plot.get(block_loc);
  517. if(list.getSize(list) > 0) {
  518. iter = list.iterator(list);
  519. access = false;
  520. while(hasNext(iter)) {
  521. plot = next(iter);
  522. canOpenChests = plot.canOpenChests(plot, player_id);
  523. if(plot.isSub(plot)) {
  524. if(canOpenChests) {
  525. cancel = false;
  526. goto("wait");
  527. }
  528. cancel = true;
  529. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  530. goto("wait");
  531. }
  532. if(canOpenChests) {
  533. access = true;
  534. cancel = false;
  535. }
  536. }
  537. if(!access) {
  538. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  539. }
  540. }
  541. goto("wait");
  542. }
  543. if(action == "right" && block.hasTag(sign_tag, block)) {
  544. line0 = block.getSign(block_loc, 0);
  545. if(line0 != "§3[§bFree Plot§3]") {
  546. goto("wait");
  547. }
  548. price = text.convert(removeFormat(block.getSign(block_loc, 1)));
  549. if(!isDouble(price) || price < 0) {
  550. msg.prefix(player, prefix_plot, "Positive number expected.");
  551. goto("wait");
  552. }
  553. p_id = text.convert(block.getSign(block_loc, 3));
  554. if(!isDouble(p_id)) {
  555. msg.prefix(player, prefix_plot, "Invalid city owner.");
  556. goto("wait");
  557. }
  558. if(player.getNameFromId(p_id) == null) {
  559. msg.prefix(player, prefix_plot, "Invalid city owner.");
  560. goto("wait");
  561. }
  562. if(!hasEnoughMoney(player, price)) {
  563. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(price), "§r snuvis for this."));
  564. goto("wait");
  565. }
  566. plot_list = plot.get(block_loc);
  567. iter = list.iterator(plot_list);
  568. while(hasNext(iter)) {
  569. plot = next(iter);
  570. if(plot.isFree(plot)) {
  571. break;
  572. }
  573. }
  574. if(!plot.isFree(plot)) {
  575. msg.prefix(player, prefix_plot, "You aren't on a free plot.");
  576. goto("wait");
  577. }
  578. //Plot claimen
  579. subMoney(player, price);
  580. addMoney(p_id, price);
  581. plot.setSub(plot, true);
  582. plot.setLeader(plot, player.getId(player));
  583. player_name = player.getName(player);
  584. plot.addPlayer(plot, player_name);
  585. plot.setName(plot, concat(player_name, "'s plot"));
  586. msg.prefix(player, prefix_plot, concat("Plot claimed. Spent §6", text.number(price), "§r snuvis."));
  587. goto("wait");
  588. }
  589. goto("wait");
  590. }
  591. if(event == "missing_command") {
  592. if(player == null) { //--> Server
  593. player = "SERVER";
  594. if(command_name == null) {
  595. msg.prefix(player, prefix_commands, concat("Missing Command"));
  596. goto("wait");
  597. }
  598. }
  599. msg.prefix(player, prefix_commands, concat("No command ", command_name));
  600. goto("wait");
  601. }
  602. if(event == "player_logout") {
  603. player.setAfk(player, false);
  604. list.remove(jailed_list, player.getUuid(player));
  605. if(player.hasQuest2(player)) {
  606. script_id = quest.getFromPlayer(player);
  607. script = script.getFromId(script_id);
  608. setScriptVar("player", player);
  609. script.callEvent("quest_term", script);
  610. quest.term(script, player);
  611. }
  612. if(player.isInParty(player)) {
  613. party.kickPlayer(player, "logout");
  614. }
  615. goto("wait");
  616. }
  617. if(event == "missing_perm") {
  618. if(player == null) { //--> Server
  619. player = "SERVER";
  620. if(command_name == null) {
  621. msg.prefix(player, prefix_commands, concat("Missing Perm"));
  622. goto("wait");
  623. }
  624. }
  625. perm.no(player, command_name);
  626. goto("wait");
  627. }
  628. if(event == "entity_click") {
  629. player_uuid = player.getUuid(player);
  630. if(set.contains(ride_set, player_uuid)) {
  631. set.remove(ride_set, player_uuid);
  632. entity.mount(player, entity);
  633. }
  634. goto("wait");
  635. }
  636. if(event == "inv_click") {
  637. //inv see
  638. if(set.contains(invseeids, inv_id)) {
  639. //On inv_click in an invsee inventory
  640. split_list = text.split(" ", inv_name);
  641. p_name = list.getIndex(split_list, 2);
  642. p = read.player(p_name);
  643. if(p == null) {
  644. inv.close(player);
  645. 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.");
  646. goto("wait");
  647. }
  648. //Transmit item
  649. player.removeItem(p, item);
  650. safeGiveItemPlayer(player, item);
  651. inv.setItem(inv, inv_slot, read.item("minecraft:air"));
  652. inv.update(player);
  653. }
  654. if(inv_name == "Skills") {
  655. if(item.getType(item) == "minecraft:air") {
  656. goto("wait");
  657. }
  658. skill_name = removeFormat(item.getName(item));
  659. tech_name = skill.getTechName(skill_name);
  660. //Toggle skill
  661. if(skill.isToggleable(skill_name)) {
  662. if(skill.isActivated(player, tech_name)) {
  663. skill.setActivated(player, tech_name, false);
  664. } else {
  665. skill.setActivated(player, tech_name, true);
  666. }
  667. inv.setItem(inv, inv_slot, skill.getShopItem(player, tech_name));
  668. inv.update(player);
  669. goto("wait");
  670. }
  671. //Activate skill
  672. if(skill.isActive(skill_name)) {
  673. player_loc = entity.getLocation(player);
  674. world_name = world.getName(loc.getWorld(player_loc));
  675. if(!isSurvWorldName(world_name)) {
  676. msg.prefix(player, prefix_skill, "You can't use this in this world.");
  677. goto("wait");
  678. }
  679. if(tech_name == "skill.fly10min") {
  680. duration = data.getTimer(player, "fly");
  681. if(duration > 0) {
  682. msg.prefix(player, prefix_skill, "Skill already active.");
  683. goto("wait");
  684. }
  685. amount = skill.getAmount(player, "skill.fly10min");
  686. if(amount > 0) {
  687. status.addTimed(player, 50, 12000, "Fly");
  688. data.setTimer(player, "fly", 12000);
  689. player.setFly(player, true);
  690. new_amount = amount - 1;
  691. skill.setAmount(player, "skill.fly10min", new_amount);
  692. msg.prefix(player, prefix_skill, concat("Used Fly 10min. New amount: ", text.number(new_amount)));
  693. }
  694. goto("wait");
  695. }
  696. if(tech_name == "skill.grow") {
  697. amount = skill.getAmount(player, "skill.grow");
  698. if(amount > 0) {
  699. grow(player_loc, 5);
  700. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  701. new_amount = amount - 1;
  702. skill.setAmount(player, "skill.grow", new_amount);
  703. msg.prefix(player, prefix_skill, concat("Used Grow. New amount: ", text.number(new_amount)));
  704. }
  705. goto("wait");
  706. }
  707. if(tech_name == "skill.haste") {
  708. amount = skill.getAmount(player, "skill.haste");
  709. if(amount > 0) {
  710. entity.addEffect(player, "haste", 2400, 0);
  711. new_amount = amount - 1;
  712. skill.setAmount(player, "skill.haste", new_amount);
  713. msg.prefix(player, prefix_skill, concat("Used Haste. New amount: ", text.number(new_amount)));
  714. }
  715. goto("wait");
  716. }
  717. if(tech_name == "skill.speed") {
  718. amount = skill.getAmount(player, "skill.speed");
  719. if(amount > 0) {
  720. entity.addEffect(player, "speed", 2400, 0);
  721. new_amount = amount - 1;
  722. skill.setAmount(player, "skill.speed", new_amount);
  723. msg.prefix(player, prefix_skill, concat("Used Speed. New amount: ", text.number(new_amount)));
  724. }
  725. goto("wait");
  726. }
  727. if(tech_name == "skill.jump_boost") {
  728. amount = skill.getAmount(player, "skill.jump_boost");
  729. if(amount > 0) {
  730. entity.addEffect(player, "jump_boost", 2400, 1);
  731. new_amount = amount - 1;
  732. skill.setAmount(player, "skill.jump_boost", new_amount);
  733. msg.prefix(player, prefix_skill, concat("Used Jump Boost. New amount: ", text.number(new_amount)));
  734. }
  735. goto("wait");
  736. }
  737. if(tech_name == "skill.dolphin") {
  738. amount = skill.getAmount(player, "skill.dolphin");
  739. if(amount > 0) {
  740. entity.addEffect(player, "dolphins_grace", 1200, 0);
  741. new_amount = amount - 1;
  742. skill.setAmount(player, "skill.dolphin", new_amount);
  743. msg.prefix(player, prefix_skill, concat("Used Dolphin. New amount: ", text.number(new_amount)));
  744. }
  745. goto("wait");
  746. }
  747. if(tech_name == "skill.block_up") {
  748. duration = data.getTimer(player, "block_up");
  749. if(duration > 0) {
  750. msg.prefix(player, prefix_skill, "Skill already active.");
  751. goto("wait");
  752. }
  753. amount = skill.getAmount(player, "skill.block_up");
  754. if(amount > 0) {
  755. status.addTimed(player, 50, 1200, "Block Up");
  756. data.setTimer(player, "block_up", 1200);
  757. new_amount = amount - 1;
  758. skill.setAmount(player, "skill.block_up", new_amount);
  759. msg.prefix(player, prefix_skill, concat("Used Block Up. New amount: ", text.number(new_amount)));
  760. }
  761. goto("wait");
  762. }
  763. if(tech_name == "skill.block_down") {
  764. duration = data.getTimer(player, "block_down");
  765. if(duration > 0) {
  766. msg.prefix(player, prefix_skill, "Skill already active.");
  767. goto("wait");
  768. }
  769. amount = skill.getAmount(player, "skill.block_down");
  770. if(amount > 0) {
  771. status.addTimed(player, 50, 1200, "Block Down");
  772. data.setTimer(player, "block_down", 1200);
  773. new_amount = amount - 1;
  774. skill.setAmount(player, "skill.block_down", new_amount);
  775. msg.prefix(player, prefix_skill, concat("Used Block Down. New amount: ", text.number(new_amount)));
  776. }
  777. goto("wait");
  778. }
  779. }
  780. goto("wait");
  781. }
  782. if(inv_name == "§8Settings") {
  783. if(inv_slot == 0) {
  784. new_value = !player.getAutoCloseDoor(player);
  785. player.setAutoCloseDoor(player, new_value);
  786. inv.setItem(inv, inv_slot, read.item("minecraft:oak_door", 1, "§fAuto Door-Close", new_value));
  787. }
  788. elseif(inv_slot == 1) {
  789. new_value = !player.doesAcceptTpaRequests(player);
  790. player.acceptTpaRequests(player, new_value);
  791. inv.setItem(inv, inv_slot, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", new_value));
  792. }
  793. elseif(inv_slot == 2) {
  794. new_value = !showCoords.get(player);
  795. showCoords.set(player, new_value);
  796. inv.setItem(inv, inv_slot, read.item("minecraft:compass", 1, "§fShow Coords", new_value));
  797. if(!new_value) {
  798. display.remove(player, 30);
  799. }
  800. }
  801. elseif(inv_slot == 3) {
  802. new_value = !player.hasSittingActivated(player);
  803. player.activateSitting(player, new_value);
  804. inv.setItem(inv, inv_slot, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", new_value));
  805. }
  806. elseif(inv_slot == 4) {
  807. new_value = !hasPvpOn(player);
  808. setPvp(player, new_value);
  809. inv.setItem(inv, inv_slot, read.item("minecraft:iron_sword", 1, "§fPvP", new_value));
  810. }
  811. inv.update(player);
  812. }
  813. goto("wait");
  814. }
  815. if(event == "inv_close") {
  816. if(set.contains(invseeids, inv_id)) {
  817. set.remove(invseeids, inv_id);
  818. }
  819. goto("wait");
  820. }
  821. if(event == "function_key") {
  822. if(player.hasMinigame(player)) {
  823. goto("wait");
  824. }
  825. if(key == 1) {
  826. inv = inv.new("333333333");
  827. inv.setItem(inv, 0, read.item("minecraft:oak_door", 1, "§fAuto Door-Close", player.getAutoCloseDoor(player)));
  828. inv.setItem(inv, 1, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", player.doesAcceptTpaRequests(player)));
  829. inv.setItem(inv, 2, read.item("minecraft:compass", 1, "§fShow Coords", showCoords.get(player)));
  830. inv.setItem(inv, 3, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", player.hasSittingActivated(player)));
  831. inv.setItem(inv, 4, read.item("minecraft:iron_sword", 1, "§fPvP", hasPvpOn(player)));
  832. inv.open(inv, player, "§8Settings");
  833. goto("wait");
  834. }
  835. if(key == 2) {
  836. skill.showAll(player);
  837. goto("wait");
  838. }
  839. goto("wait");
  840. }
  841. if(event == "player_data_tick") {
  842. if(var == "fly") {
  843. tpBottom(player);
  844. player.setFly(player, false);
  845. }
  846. }
  847. goto("wait");
  848. @skills
  849. skill.showAll(player);
  850. goto("wait");
  851. @infopoint1
  852. msg(player, getSpacer());
  853. msg.prefix(player, "§eSurvival", "§aEnjoy our modded survival feeling. New ores, items and displays, and we are still beginner friendly.");
  854. goto("wait");
  855. @infopoint2
  856. msg(player, getSpacer());
  857. 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.");
  858. goto("wait");
  859. @infopoint3
  860. msg(player, getSpacer());
  861. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  862. goto("wait");
  863. @infopoint4
  864. msg(player, getSpacer());
  865. 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.");
  866. goto("wait");
  867. @infopoint5
  868. msg(player, getSpacer());
  869. 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.");
  870. goto("wait");
  871. @infopoint6
  872. msg(player, getSpacer());
  873. 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.");
  874. goto("wait");
  875. @infopoint7
  876. msg(player, getSpacer());
  877. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  878. goto("wait");
  879. @infopoint8
  880. msg(player, getSpacer());
  881. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  882. goto("wait");
  883. @infopoint9
  884. msg(player, getSpacer());
  885. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  886. goto("wait");
  887. @infopoint10
  888. msg(player, getSpacer());
  889. msg.prefix(player, "§eRules", "§aThere is at least one rule: Be respectful. Look at our fake rules.");
  890. goto("wait");
  891. @infopoint11
  892. msg(player, getSpacer());
  893. msg.prefix(player, "§eNote", "§aEverything is self-coded. Worldedit is the only external mod we use.");
  894. goto("wait");
  895. @party
  896. if(size == 0) {
  897. @partyhelp
  898. msg.prefix(player, prefix_party, "§r/party ...");
  899. msg(player, "§5 - invite <player> §rInvite a player");
  900. msg(player, "§5 - accept <player> §rAccept an invitation");
  901. msg(player, "§5 - deny <player> §rDeny an invitation");
  902. msg(player, "§5 - kick <player> §rKick a player");
  903. msg(player, "§5 - leave §rLeave the party");
  904. msg(player, "§5 - promote <player> §rPromote a player");
  905. msg(player, "§5 - demote <player> §rDemote a player");
  906. msg(player, "§5 - disband §rDisband a party");
  907. msg(player, "§5 - list §rParty information");
  908. msg(player, "§5 - <nachricht> §rSends a party message");
  909. goto("wait");
  910. }
  911. arg0 = text.toLowerCase(list.getIndex(args, 0));
  912. if(arg0 == "list") {
  913. if(size != 1) {
  914. msg.prefix(player, prefix_party, "§5/party list");
  915. } else {
  916. if(!player.isInParty(player)) {
  917. msg.prefix(player, prefix_party, "You are not in a party.");
  918. goto("wait");
  919. }
  920. list = party.getList(player.getPartyId(player));
  921. table = table.new("§5", 13, 7);
  922. msg(player, table.getStart(table));
  923. msg(player, table.get(table, "§lName", "§lRole"));
  924. msg(player, table.getMiddle(table));
  925. iter = list.iterator(list);
  926. while(hasNext(iter)) {
  927. p = player.get(next(iter));
  928. msg(player, table.get(table, player.getName(p), player.getPartyRank(p)));
  929. }
  930. msg(player, table.getEnd(table));
  931. }
  932. goto("wait");
  933. }
  934. if(arg0 == "leave") {
  935. if(size != 1) {
  936. msg.prefix(player, prefix_party, "§5/party leave");
  937. } else {
  938. if(!player.isInParty(player)) {
  939. msg.prefix(player, prefix_party, "You are not in a party.");
  940. goto("wait");
  941. }
  942. party.kickPlayer(player, "leave");
  943. }
  944. goto("wait");
  945. }
  946. if(arg0 == "disband") {
  947. if(size != 1) {
  948. msg.prefix(player, prefix_party, "§5/party disband");
  949. } else {
  950. if(!player.isInParty(player)) {
  951. msg.prefix(player, prefix_party, "You are not in a party.");
  952. goto("wait");
  953. }
  954. if(!player.isPartyLeader(player)) {
  955. msg.prefix(player, prefix_party, "You are not the party leader.");
  956. goto("wait");
  957. }
  958. party.delete(player.getPartyId(player));
  959. }
  960. goto("wait");
  961. }
  962. if(arg0 == "kick") {
  963. if(size != 2) {
  964. msg.prefix(player, prefix_party, "§5/party kick <player>");
  965. } else {
  966. if(!player.isInParty(player)) {
  967. msg.prefix(player, prefix_party, "You are not in a party.");
  968. goto("wait");
  969. }
  970. if(!player.isPartyLeaderOrMod(player)) {
  971. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  972. goto("wait");
  973. }
  974. pname = list.getIndex(args, 1);
  975. if(!checkIfEverOnline(pname)) {
  976. msg.prefix(player, prefix_party, "This player has never been online.");
  977. goto("wait");
  978. }
  979. p = read.player(pname);
  980. if(p == null) {
  981. msg.prefix(player, prefix_party, "This player is not online.");
  982. goto("wait");
  983. }
  984. if(player == p) {
  985. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  986. goto("wait");
  987. }
  988. if(!party.same(p, player)) {
  989. msg.prefix(player, prefix_party, "This player is not in your party.");
  990. goto("wait");
  991. }
  992. ownrank = player.getPartyRank(player);
  993. if(ownrank == "Moderator") {
  994. if(player.isPartyLeaderOrMod(p)) {
  995. msg.prefix(player, prefix_party, "§rDu darfst diesen Spieler nicht kicken");
  996. goto("wait");
  997. }
  998. }
  999. party.kickPlayer(p, "kick");
  1000. }
  1001. goto("wait");
  1002. }
  1003. if(arg0 == "promote" || arg0 == "demote") {
  1004. if(size != 2) {
  1005. msg.prefix(player, prefix_party, concat("§5/party ", arg0, " <player>"));
  1006. } else {
  1007. pname = list.getIndex(args, 1);
  1008. if(!player.isInParty(player)) {
  1009. msg.prefix(player, prefix_party, "You are not in a party.");
  1010. goto("wait");
  1011. }
  1012. if(!player.isPartyLeader(player)) {
  1013. msg.prefix(player, prefix_party, "You are not the party leader.");
  1014. goto("wait");
  1015. }
  1016. if(!checkIfEverOnline(pname)) {
  1017. msg.prefix(player, prefix_party, "This player has never been online.");
  1018. goto("wait");
  1019. }
  1020. p = read.player(pname);
  1021. if(p == null) {
  1022. msg.prefix(player, prefix_party, "This player is not online.");
  1023. goto("wait");
  1024. }
  1025. if(player == p) {
  1026. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1027. goto("wait");
  1028. }
  1029. if(!party.same(p, player)) {
  1030. msg.prefix(player, prefix_party, "This player is not in your party.");
  1031. goto("wait");
  1032. }
  1033. partyid = player.getPartyId(player);
  1034. rank = player.getPartyRank(p);
  1035. if(arg0 == "promote") {
  1036. if(rank == "Player") {
  1037. player.setPartyRank(p, "Moderator");
  1038. party.sendMessage(partyid, concat("§r", pname, " is now Moderator."));
  1039. } elseif(rank == "Moderator") {
  1040. player.setPartyRank(p, "Leader");
  1041. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1042. party.sendMessage(partyid, concat("§r", pname, " is now Leader."));
  1043. }
  1044. } elseif(arg0 == "demote") {
  1045. if(rank == "Moderator") {
  1046. player.setPartyRank(p, "Player");
  1047. party.sendMessage(partyid, concat("§r", pname, " is no longer Moderator."));
  1048. } else {
  1049. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1050. }
  1051. }
  1052. }
  1053. goto("wait");
  1054. }
  1055. if(arg0 == "invite") {
  1056. if(size != 2) {
  1057. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1058. } else {
  1059. p_name = list.getIndex(args, 1);
  1060. if(!checkIfEverOnline(p_name)) {
  1061. msg.prefix(player, prefix_party, "This player has never been online.");
  1062. goto("wait");
  1063. }
  1064. p = read.player(p_name);
  1065. temp = party.invitePlayer(player, p);
  1066. if(temp == "inviteeNotOnline") {
  1067. msg.prefix(player, prefix_party, "This player is not online.");
  1068. } elseif(temp == "inviterEqualsInvitee") {
  1069. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1070. } elseif(temp == "inviterNotPermitted") {
  1071. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1072. } elseif(temp == "inviteeAlreadyInParty") {
  1073. msg.prefix(player, prefix_party, "This player is already in your party.");
  1074. } elseif(temp == "inviteeAlreadyInvited") {
  1075. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1076. } else {
  1077. msg.prefix(player, prefix_party, "Invitation sent.");
  1078. }
  1079. }
  1080. goto("wait");
  1081. }
  1082. if(arg0 == "accept") {
  1083. if(size != 2) {
  1084. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1085. } else {
  1086. if(player.isInParty(player)) {
  1087. msg.prefix(player, prefix_party, "You are already in a party.");
  1088. goto("wait");
  1089. }
  1090. pname = list.getIndex(args, 1);
  1091. if(!checkIfEverOnline(pname)) {
  1092. msg.prefix(player, prefix_party, "This player has never been online.");
  1093. goto("wait");
  1094. }
  1095. p = read.player(pname);
  1096. if(p == null) {
  1097. msg.prefix(player, prefix_party, "This player is no longer online.");
  1098. goto("wait");
  1099. }
  1100. player_uuid = player.getUuid(player);
  1101. p_uuid = player.getUuid(p);
  1102. list = map.get(party_invitations, player_uuid);
  1103. if(list == null || !list.contains(list, p_uuid)) {
  1104. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1105. goto("wait");
  1106. }
  1107. if(player.isInParty(p)) { //wenn einlader bereits in party
  1108. partyid = player.getPartyId(p);
  1109. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1110. party.addPlayer(partyid, player);
  1111. player.setPartyRank(player, "Player");
  1112. } else {
  1113. msg.prefix(player, prefix_party, "This player is already in another party.");
  1114. goto("wait");
  1115. }
  1116. } else {
  1117. partyid = map.get(party_invite_ids, p_uuid);
  1118. party.setList(partyid, list.new());
  1119. party.addPlayer(partyid, p);
  1120. party.addPlayer(partyid, player);
  1121. player.setPartyRank(p, "Leader");
  1122. player.setPartyRank(player, "Player");
  1123. msg.prefix(p, prefix_party, "The party was created.");
  1124. }
  1125. list.clear(list); //Einladungs-Liste von oben
  1126. party.sendMessage(partyid, concat("§r", player_name, " joined the party."));
  1127. }
  1128. goto("wait");
  1129. }
  1130. if(arg0 == "deny") {
  1131. if(size != 2) {
  1132. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1133. } else {
  1134. player_uuid = player.getUuid(player);
  1135. list = map.get(party_invitations, player_uuid);
  1136. if(list != null) {
  1137. pname = list.getIndex(args, 1);
  1138. p = read.player(pname);
  1139. if(p == null) {
  1140. msg.prefix(player, prefix_party, "This player is no longer online.");
  1141. goto("wait");
  1142. }
  1143. p_uuid = player.getUuid(p);
  1144. if(list == null || !list.contains(list, p_uuid)) {
  1145. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1146. goto("wait");
  1147. }
  1148. index = list.getIndexOf(list, p_uuid);
  1149. list.remove(list, p_uuid);
  1150. keytimes = map.get(delkeytimes, player_uuid);
  1151. list.removeIndex(keytimes, index);
  1152. p = read.player(pname);
  1153. if(p != null) {
  1154. msg.prefix(p, prefix_party, concat("§r", player_name, " has denied your invitation."));
  1155. }
  1156. msg.prefix(player, prefix_party, concat("Invitation from ", pname, " denied."));
  1157. }
  1158. }
  1159. goto("wait");
  1160. }
  1161. if(player.isInParty(player)) {
  1162. message = concat(pname, " §1| §r", text.concatList(args, " ", 0, list.getSize(args) - 1));
  1163. party.sendMessage(player.getPartyId(player), message);
  1164. goto("wait");
  1165. }
  1166. goto("partyhelp");
  1167. @setmessage
  1168. if(size == 0) {
  1169. @setmessagehelp
  1170. msg.prefix(player, prefix_commands, "§r/setmessage ...");
  1171. msg(player, "§e- join <message> §rSets your joinmessage");
  1172. msg(player, "§e- leave <message> §rSets your leavemessage");
  1173. msg(player, "§e- info §rShows you set messages");
  1174. if(perm.has(player, "setmessage.delete")) {
  1175. msg(player, "§e- delete <player> §rDeletes a players messages");
  1176. }
  1177. goto("wait");
  1178. }
  1179. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1180. if(arg0 == "info") {
  1181. fullname = player.getFullName(player);
  1182. message = text.convert(player.getJoinMessage(player));
  1183. if(message == null) {
  1184. msg.prefix(player, prefix_commands, "No join message set.");
  1185. } else {
  1186. msg.prefix(player, prefix_commands, concat("§a§l> §r", fullname, " §9", message));
  1187. }
  1188. message = text.convert(player.getLeaveMessage(player));
  1189. if(message == null) {
  1190. msg.prefix(player, prefix_commands, "No leave message set.");
  1191. } else {
  1192. msg.prefix(player, prefix_commands, concat("§c§l> §r", fullname, " §9", message));
  1193. }
  1194. goto("wait");
  1195. }
  1196. if(arg0 == "join") {
  1197. if(size < 2) {
  1198. goto("setmessagehelp");
  1199. }
  1200. message = text.concatList(args, " ", 1, size - 1);
  1201. player.setJoinMessage(player, message);
  1202. msg.prefix(player, prefix_commands, "Join-Message set.");
  1203. goto("wait");
  1204. }
  1205. if(arg0 == "leave") {
  1206. if(size < 2) {
  1207. goto("setmessagehelp");
  1208. }
  1209. message = text.concatList(args, " ", 1, size - 1);
  1210. player.setLeaveMessage(player, message);
  1211. msg.prefix(player, prefix_commands, "Leave-Message set.");
  1212. goto("wait");
  1213. }
  1214. if(arg0 == "delete") {
  1215. if(size == 1) {
  1216. p_uuid = player.getUuid(player);
  1217. } elseif(size == 2) {
  1218. if(!perm.has(player, "setmessage.delete")) {
  1219. perm.no(player, "setmessage.delete");
  1220. goto("wait");
  1221. }
  1222. p_name = list.getIndex(args, 1);
  1223. if(!checkIfEverOnline(p_name)) {
  1224. msg.prefix(player, prefix_commands, "This player has never been online.");
  1225. goto("wait");
  1226. }
  1227. p_uuid = player.getUuid(p_name);
  1228. } else {
  1229. goto("setmessagehelp");
  1230. }
  1231. p_id = player.getId(p_uuid);
  1232. player.setJoinMessage(p_id, "null");
  1233. player.setLeaveMessage(p_id, "null");
  1234. msg.prefix(player, prefix_commands, "Messages deleted.");
  1235. goto("wait");
  1236. }
  1237. goto("wait");
  1238. @live
  1239. boolean = !player.isLive(player);
  1240. player.setLive(player, boolean);
  1241. player.setHeadName(player);
  1242. player.setTabName(player);
  1243. msg.prefix(player, prefix_commands, "Live toggled.");
  1244. goto("wait");
  1245. @lightning
  1246. location = player.getTarget(player, 50, true, true);
  1247. if(block.getType(location) == "minecraft:air") {
  1248. msg.prefix(player, prefix_commands, "No block in sight.");
  1249. goto("wait");
  1250. }
  1251. entity.spawn("minecraft:lightning_bolt", location);
  1252. goto("wait");
  1253. @ride
  1254. player_uuid = player.getUuid(player);
  1255. if(set.contains(ride_set, player_uuid)) {
  1256. msg.prefix(player, prefix_commands, "Entity-Ride-Click removed.");
  1257. set.remove(ride_set, player_uuid);
  1258. } else {
  1259. msg.prefix(player, prefix_commands, "Click an entity to ride it.");
  1260. set.add(ride_set, player_uuid);
  1261. }
  1262. goto("wait");
  1263. @vanish
  1264. //vanish [on/off] [player]
  1265. if(size == 0) {
  1266. if(set.contains(vanish_set, player.getUuid(affectedplayer))) {
  1267. bool = "off";
  1268. } else {
  1269. bool = "on";
  1270. }
  1271. }
  1272. if(size >= 1) {
  1273. bool = list.getIndex(args, 0);
  1274. }
  1275. if(size == 2) {
  1276. affectedname = list.getIndex(args, 1);
  1277. affectedplayer = read.player(affectedname);
  1278. affectedname = player.getName(affectedplayer);
  1279. if(affectedplayer == null) {
  1280. msg.prefix(player, prefix_commands, "This player is not online.");
  1281. goto("wait");
  1282. }
  1283. }
  1284. if(bool == "on") {
  1285. if(affectedname != player_name) {
  1286. msg.prefix(player, prefix_commands, concat(affectedname, " has been vanished."));
  1287. msg.prefix(affectedplayer, prefix_commands, concat("You have been vanished by ", player_name, "."));
  1288. } else {
  1289. msg.prefix(affectedplayer, prefix_commands, "You are vanished.");
  1290. }
  1291. set.add(vanish_set, player.getUuid(affectedplayer));
  1292. player.hide(affectedplayer);
  1293. } elseif(bool == "off") {
  1294. if(affectedname != player_name) {
  1295. msg.prefix(player, prefix_commands, concat(affectedname, " is no longer vanished."));
  1296. msg.prefix(affectedplayer, prefix_commands, concat("You are no longer vanished caused by ", player_name, "."));
  1297. } else {
  1298. msg.prefix(affectedplayer, prefix_commands, "You are no longer vanished.");
  1299. }
  1300. set.remove(vanish_set, player.getUuid(affectedplayer));
  1301. player.show(affectedplayer);
  1302. } else {
  1303. msg.prefix(player, prefix_commands, "§r/vanish [on/off] [player]");
  1304. }
  1305. goto("wait");
  1306. @user
  1307. if(size == 0) {
  1308. p_name = player.getName(player);
  1309. p_uuid = player.getUuid(p_name);
  1310. } else {
  1311. if(!perm.has(player, "user.other")) {
  1312. perm.no(player, "user.other");
  1313. goto("wait");
  1314. }
  1315. p_name = list.getIndex(args, 0);
  1316. if(!checkIfEverOnline(p_name)) {
  1317. msg.prefix(player, prefix_commands, "This player has never been online.");
  1318. goto("wait");
  1319. }
  1320. p_uuid = player.getUuid(p_name);
  1321. p_name = player.getName(p_uuid);
  1322. }
  1323. p = read.player(p_name);
  1324. p_id = player.getId(p_uuid);
  1325. if(p == null) {
  1326. p_or_id = p_id;
  1327. } else {
  1328. p_or_id = p;
  1329. }
  1330. table = table.new("§8", 6, 24);
  1331. msg(player, table.getStart(table));
  1332. msg(player, table.get(table, "Player", p_name));
  1333. msg(player, table.getMiddle(table));
  1334. msg(player, table.get(table, "Playtime", text.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  1335. msg(player, table.get(table, "Joins", text.number(player.getJoins(p_or_id))));
  1336. msg(player, table.get(table, "First Join", getDateString(player.getFirstJoin(p_or_id))));
  1337. msg(player, table.get(table, "Last Join", getDateString(player.getLastJoin(p_or_id))));
  1338. msg(player, table.get(table, "UUID", p_uuid));
  1339. msg(player, table.get(table, "ID", text.number(p_id)));
  1340. msg(player, table.get(table, "Rank", getRank(p_or_id)));
  1341. msg(player, table.get(table, "PvP", hasPvpOn(p_or_id)));
  1342. msg(player, table.get(table, "Quests", text.number(quest.getCounter(p_or_id))));
  1343. msg(player, table.get(table, "Money", text.number(getMoney(p_or_id))));
  1344. msg(player, table.getEnd(table));
  1345. goto("wait");
  1346. @friend
  1347. if(size == 0) {
  1348. @friend_syntax
  1349. msg.prefix(player, prefix_friends, "§r/friend ...");
  1350. msg(player, "§5 - add <player> §rAdds a friend");
  1351. msg(player, "§5 - remove <player> §rRemoves a friend");
  1352. msg(player, "§5 - list §rLists all your friends");
  1353. goto("wait");
  1354. }
  1355. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1356. if(arg0 == "add") {
  1357. if(size != 2) {
  1358. msg.prefix(player, prefix_friends, "§r/friend add <player>");
  1359. goto("wait");
  1360. }
  1361. friend_name = list.getIndex(args, 1);
  1362. if(player_name == friend_name) {
  1363. msg.prefix(player, prefix_friends, "You can't invite yourself.");
  1364. goto("wait");
  1365. }
  1366. player_id = player.getId(player);
  1367. if(!checkIfEverOnline(friend_name)) {
  1368. msg.prefix(player, prefix_friends, "This player has never been online.");
  1369. goto("wait");
  1370. }
  1371. friend_id = player.getId(player.getUuid(friend_name));
  1372. if(friend.check(player_id, friend_id)) {
  1373. msg.prefix(player, prefix_friends, "This player is already your friend.");
  1374. goto("wait");
  1375. }
  1376. if(map.contains(friend_requests, friend_id)) {
  1377. if(map.get(friend_requests, friend_id) == player_id) {
  1378. friend.add(player_id, friend_id);
  1379. map.remove(friend_requests, friend_id);
  1380. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is your friend now."));
  1381. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is your friend now."), true);
  1382. goto("wait");
  1383. }
  1384. }
  1385. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  1386. friend = read.player(friend_name);
  1387. msg.prefix(player, prefix_friends, concat("You sent an invitation to §7", friend_name, "§r."));
  1388. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r wants to be your friend."), true);
  1389. if(friend != null) {
  1390. msg(friend, text.click("§r[§aAccept§r]", concat("/friend add ", player_name)));
  1391. }
  1392. goto("wait");
  1393. }
  1394. if(arg0 == "remove") {
  1395. if(size != 2) {
  1396. msg.prefix(player, prefix_friends, "§r/friend remove <player>");
  1397. goto("wait");
  1398. }
  1399. friend_name = list.getIndex(args, 1);
  1400. player_id = player.getId(player);
  1401. if(!checkIfEverOnline(friend_name)) {
  1402. msg.prefix(player, prefix_friends, "This player has never been online.");
  1403. goto("wait");
  1404. }
  1405. friend_id = player.getId(player.getUuid(friend_name));
  1406. if(!friend.check(player_id, friend_id)) {
  1407. msg.prefix(player, prefix_friends, "This player isn't your friend.");
  1408. goto("wait");
  1409. }
  1410. friend.delete(player_id, friend_id);
  1411. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is no longer your friend."));
  1412. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is no longer your friend."), true);
  1413. goto("wait");
  1414. }
  1415. if(arg0 == "list") {
  1416. if(size != 1) {
  1417. msg.prefix(player, prefix_friends, "/friend list");
  1418. goto("wait");
  1419. }
  1420. player_id = player.getId(player);
  1421. friendlist = friend.getList(player_id);
  1422. listsize = list.getSize(friendlist);
  1423. if(listsize == 0) {
  1424. msg.prefix(player, prefix_friends, "You have no friends yet.");
  1425. goto("wait");
  1426. }
  1427. msg(player, "§5Friends:");
  1428. for(i = 0; i <= listsize - 1; i++) {
  1429. msg(player, "§r- ", list.getIndex(friendlist, i));
  1430. }
  1431. goto("wait");
  1432. }
  1433. goto("friend_syntax");
  1434. @var
  1435. if(size != 2) {
  1436. msg.prefix(player, prefix_commands, "§r/var <id> <varname>");
  1437. goto("wait");
  1438. }
  1439. script_id = list.getIndex(args, 0);
  1440. script = script.getFromId(script_id);
  1441. if(script == null) {
  1442. msg.prefix(player, "§dScript", "Invalid id");
  1443. goto("wait");
  1444. }
  1445. var_name = list.getIndex(args, 1);
  1446. var = script.getVar(script, var_name);
  1447. msg.prefix(player, "§dScript", concat(var_name, " = ", var));
  1448. goto("wait");
  1449. @voxel
  1450. if(size < 1) {
  1451. @voxelhelp
  1452. msg.prefix(player, prefix_commands, "/voxel <radius:1-5>");
  1453. msg.prefix(player, prefix_commands, "/voxel block");
  1454. goto("wait");
  1455. }
  1456. arg0 = list.getIndex(args, 0);
  1457. if(isDouble(arg0)) {
  1458. radius = arg0;
  1459. if(radius < 1) {
  1460. radius = 1;
  1461. }
  1462. if(radius > 5) {
  1463. radius = 5;
  1464. }
  1465. script = script.get("Voxel");
  1466. map = script.getVar(script, "radius_per_player");
  1467. map.add(map, player.getUuid(player), radius);
  1468. script.setVar(script, "radius_per_player", map);
  1469. msg.prefix(player, prefix_commands, concat("Set radius to ", text.number(radius), "."));
  1470. goto("wait");
  1471. }
  1472. if(arg0 == "block") {
  1473. item = entity.getEquip(player, "hand");
  1474. item_type = item.getType(item);
  1475. if(item_type == "minecraft:air") {
  1476. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1477. goto("wait");
  1478. }
  1479. state = block.newState(item_type);
  1480. script = script.get("Voxel");
  1481. map = script.getVar(script, "state_per_player");
  1482. map.add(map, player.getUuid(player), state);
  1483. script.setVar(script, "state_per_player", map);
  1484. msg.prefix(player, prefix_commands, concat("Set block to ", item_type, "."));
  1485. goto("wait");
  1486. }
  1487. goto("voxelhelp");
  1488. @setservermessage
  1489. if(size < 1) {
  1490. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  1491. goto("wait");
  1492. }
  1493. message = text.concatList(args, " ", 0, size - 1);
  1494. message = text.replace(message, "&", "§");
  1495. setMOTD(message);
  1496. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  1497. goto("wait");
  1498. @error
  1499. if(size < 1) {
  1500. msg.prefix(player, "§cError", "§r/error ...");
  1501. msg(player, "§c - list §rLists all errors");
  1502. msg(player, "§c - clear §rDeletes all errors");
  1503. goto("wait");
  1504. }
  1505. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1506. if(arg0 == "list") {
  1507. error_size = error.getSize();
  1508. if(error_size == 0) {
  1509. msg.prefix(player, "§cError", "No errors existing.");
  1510. goto("wait");
  1511. }
  1512. for(i = 0; i < error_size; i++) {
  1513. msg(player, error.getIndex(i));
  1514. }
  1515. goto("wait");
  1516. }
  1517. if(arg0 == "clear") {
  1518. error.clear();
  1519. msg.prefix(player, "§cError", "All errors deleted.");
  1520. goto("wait");
  1521. }
  1522. goto("wait");
  1523. @errordebug
  1524. if(size < 1) {
  1525. msg.prefix(player, "§cErrorDebugs", "§r/errordebug ...");
  1526. msg(player, "§c - list §rLists all errordebugs");
  1527. msg(player, "§c - clear §rDeletes all errordebugs");
  1528. msg(player, "§c - toggle §rToggles errordebugs");
  1529. goto("wait");
  1530. }
  1531. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1532. if(arg0 == "list") {
  1533. error_size = debug.getSize();
  1534. if(error_size == 0) {
  1535. msg.prefix(player, "§cErrorDebugs", "No errordebugs existing.");
  1536. goto("wait");
  1537. }
  1538. for(i = 0; i < error_size; i++) {
  1539. msg(player, debug.getIndex(i));
  1540. }
  1541. goto("wait");
  1542. }
  1543. if(arg0 == "clear") {
  1544. debug.clear();
  1545. msg.prefix(player, "§cErrorDebugs", "All errordebugs deleted.");
  1546. goto("wait");
  1547. }
  1548. if(arg0 == "toggle") {
  1549. new_value = !perm.has(player, "script.debug");
  1550. player.showDebug(player, new_value);
  1551. if(new_value) {
  1552. msg.prefix(player, prefix_commands, "Debug messages are now shown.");
  1553. } else {
  1554. msg.prefix(player, prefix_commands, "Debug messages are now hidden.");
  1555. }
  1556. goto("wait");
  1557. }
  1558. goto("wait");
  1559. @hat
  1560. item = entity.getEquip(player, "hand");
  1561. if(item.getType(item) == "minecraft:air") {
  1562. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  1563. goto("wait");
  1564. }
  1565. entity.setEquip(player, "head", item);
  1566. entity.setEquip(player, "hand", read.item("minecraft:air"));
  1567. goto("wait");
  1568. @news
  1569. if(size < 1) {
  1570. msg.prefix(player, prefix_commands, "/news <text>");
  1571. goto("wait");
  1572. }
  1573. message = text.concatList(args, " ", 0, size - 1);
  1574. online_list = players.toList();
  1575. for(i = 0; i < list.getSize(online_list); i++) {
  1576. p = list.getIndex(online_list, i);
  1577. title.reset(p);
  1578. title.setSub(p, concat("by ", player_name));
  1579. title.send(p, "§cNews");
  1580. msg.prefix(p, "§4News", concat("§c", message));
  1581. }
  1582. goto("wait");
  1583. @spawn
  1584. if(size == 1) {
  1585. if(!perm.has(player, "teleport.other")) {
  1586. perm.no(player, "teleport.other");
  1587. goto("wait");
  1588. }
  1589. affectedname = list.getIndex(args, 0);
  1590. affectedplayer = read.player(affectedname);
  1591. if(affectedplayer == null) {
  1592. msg.prefix(player, prefix_commands, "This player is not online.");
  1593. goto("wait");
  1594. }
  1595. }
  1596. if(player.hasMinigame(affectedplayer)) {
  1597. if(size == 1) {
  1598. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  1599. } else {
  1600. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  1601. }
  1602. goto("wait");
  1603. }
  1604. if(player.teleport(affectedplayer, serverspawn, true)) {
  1605. if(player == affectedplayer) {
  1606. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the spawn.");
  1607. } else {
  1608. affectedname = player.getName(affectedplayer);
  1609. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the spawn."));
  1610. }
  1611. }
  1612. goto("wait");
  1613. @rank
  1614. msg(player, getSpacer());
  1615. rank = getRank(player);
  1616. msg(player, concat("§6Current rank: §r[", rank, "§r]"));
  1617. msg(player, "Choose a rank:");
  1618. rank.showAll(player);
  1619. goto("wait");
  1620. @setrank
  1621. if(size < 2) {
  1622. msg.prefix(player, prefix_commands, "§r/setrank <player> <rank>");
  1623. goto("wait");
  1624. }
  1625. p_name = list.getIndex(args, 0);
  1626. if(!checkIfEverOnline(p_name)) {
  1627. msg.prefix(player, prefix_commands, "This player has never been online.");
  1628. goto("wait");
  1629. }
  1630. p = read.player(p_name);
  1631. if(p == null) {
  1632. msg.prefix(player, prefix_commands, "This player is not online.");
  1633. goto("wait");
  1634. }
  1635. p_name = player.getName(p);
  1636. rank = text.concatList(args, " ", 1, size - 1);
  1637. if(!perm.has(player, "setrank.other")) {
  1638. if(player.getName(player) != p_name) {
  1639. perm.no(player, "setrank.other");
  1640. goto("wait");
  1641. }
  1642. colored = text.startsWith(rank, "&", 0);
  1643. if(colored) {
  1644. rank = text.subString(rank, 1, text.length(rank));
  1645. }
  1646. a = rank.getRankArray();
  1647. a_size = array.getSize(a);
  1648. for(i = 0; i < a_size; i++) {
  1649. tech_name = a[i, 0];
  1650. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  1651. perm.no(p, tech_name);
  1652. goto("wait");
  1653. }
  1654. }
  1655. if(colored) {
  1656. rank = concat("&", rank);
  1657. }
  1658. }
  1659. if(text.length(rank) >= 30) {
  1660. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  1661. goto("wait");
  1662. }
  1663. rank = text.replace(rank, "&", "§");
  1664. setRank(p, rank);
  1665. player.setTabName(p);
  1666. msg.prefix(player, prefix_commands, concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  1667. goto("wait");
  1668. @nowb
  1669. if(player.isAfk(player)) {
  1670. player.setAfk(player, false);
  1671. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  1672. player.setTabName(player);
  1673. } else {
  1674. msg.prefix(player, prefix_commands, "You are not afk.");
  1675. }
  1676. goto("wait");
  1677. @afk
  1678. nickname = player.getNickname(player);
  1679. if(player.isAfk(player)) {
  1680. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  1681. player.setAfk(player, false);
  1682. } else {
  1683. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  1684. player.setAfk(player, true);
  1685. }
  1686. player.setTabName(player);
  1687. if(!afk_loop_active) {
  1688. sgoto(30, "afk_loop");
  1689. }
  1690. goto("wait");
  1691. @silentjoin
  1692. silentjoin = player.getSilentJoin(player);
  1693. if(silentjoin) {
  1694. player.setSilentJoin(player, false);
  1695. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  1696. } else {
  1697. player.setSilentJoin(player, true);
  1698. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  1699. }
  1700. goto("wait");
  1701. @jailloop
  1702. size = list.getSize(jailed_list);
  1703. for(i = 0; i < size; i++) {
  1704. p_name = player.getName(list.getIndex(jailed_list, i));
  1705. showJail(p_name);
  1706. }
  1707. if(size > 0) {
  1708. jail_loop_active = true;
  1709. sgoto(5, "jailloop");
  1710. } else {
  1711. jail_loop_active = false;
  1712. }
  1713. goto("wait");
  1714. @coordsloop
  1715. list = players.toList();
  1716. size = list.getSize(list);
  1717. for(i = 0; i < size; i++) {
  1718. p = list.getIndex(list, i);
  1719. if(showcoords.get(p)) {
  1720. p_loc = entity.getLocation(p);
  1721. 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"))));
  1722. }
  1723. }
  1724. sgoto(10, "coordsloop");
  1725. goto("wait");
  1726. @afk_loop
  1727. afk_map = getScriptVar("afk_map");
  1728. iter = map.iterator(afk_map);
  1729. while(hasNext(iter)) {
  1730. element = next(iter);
  1731. yaw = map.getValue(element);
  1732. player = player.get(map.getKey(element));
  1733. if(player != null) {
  1734. if(yaw != loc.getYaw(entity.getLocation(player))) {
  1735. nickname = player.getNickname(player);
  1736. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  1737. remove(iter);
  1738. player.setAfk(player, false);
  1739. player.setTabName(player);
  1740. }
  1741. }
  1742. }
  1743. size = map.getSize(afk_map);
  1744. if(size > 0) {
  1745. afk_loop_active = true;
  1746. sgoto(30, "afk_loop");
  1747. } else {
  1748. afk_loop_active = false;
  1749. }
  1750. goto("wait");
  1751. @pvp
  1752. if(size == 0) {
  1753. if(hasPvpOn(player)) {
  1754. mode = "off";
  1755. } else {
  1756. mode = "on";
  1757. }
  1758. } elseif(size == 1) {
  1759. mode = list.getIndex(args, 0);
  1760. if(!(mode == "on" || mode == "off")) {
  1761. goto("pvphelp");
  1762. }
  1763. } elseif(size == 2) {
  1764. if(!perm.has(player, "pvp.other")) {
  1765. perm.no(player, "pvp.other");
  1766. goto("wait");
  1767. }
  1768. mode = list.getIndex(args, 0);
  1769. if(!(mode == "on" || mode == "off")) {
  1770. goto("pvphelp");
  1771. }
  1772. affectedname = list.getIndex(args, 1);
  1773. if(!checkIfEverOnline(affectedname)) {
  1774. msg.prefix(player, prefix_commands, "This player has never been online.");
  1775. goto("wait");
  1776. }
  1777. affectedplayer = read.player(affectedname);
  1778. if(affectedplayer == null) {
  1779. msg.prefix(player, prefix_commands, "This player is not online.");
  1780. goto("wait");
  1781. }
  1782. } else {
  1783. @pvphelp
  1784. if(perm.has(player, "pvp.other")) {
  1785. msg.prefix(player, prefix_commands, "§r/pvp [on/off] [player]");
  1786. } else {
  1787. msg.prefix(player, prefix_commands, "§r/pvp [on/off]");
  1788. }
  1789. goto("wait");
  1790. }
  1791. if(mode == "on") {
  1792. setPvp(affectedplayer, true);
  1793. msg.prefix(affectedplayer, prefix_commands, "You have enabled PvP!");
  1794. if(affectedplayer != player) {
  1795. affectedname = player.getName(affectedplayer);
  1796. msg.prefix(player, prefix_commands, concat(affectedname, " has now enabled PvP!"));
  1797. }
  1798. } else {
  1799. setPvp(affectedplayer, false);
  1800. msg.prefix(affectedplayer, prefix_commands, "You have PvP disabled!");
  1801. if(affectedplayer != player) {
  1802. affectedname = player.getName(affectedplayer);
  1803. msg.prefix(player, prefix_commands, concat(affectedname, " has now disabled PvP!"));
  1804. }
  1805. }
  1806. goto("wait");
  1807. @kill
  1808. if(size < 0 || size > 1) {
  1809. msg.prefix(player, prefix_commands, "§r/kill [player]");
  1810. goto("wait");
  1811. }
  1812. if(size == 1) {
  1813. if(!perm.has(player, "kill.other")) {
  1814. perm.no(player, "kill.other");
  1815. goto("wait");
  1816. }
  1817. affectedname = list.getIndex(args, 0);
  1818. affectedplayer = read.player(affectedname);
  1819. if(affectedplayer == null) {
  1820. msg.prefix(player, prefix_commands, "This player is not online.");
  1821. goto("wait");
  1822. }
  1823. }
  1824. if(affectedplayer != player) {
  1825. affectedname = player.getName(affectedplayer);
  1826. msg.prefix(player, prefix_commands, concat(affectedname, " has been killed."));
  1827. msg.prefix(affectedplayer, prefix_commands, concat("You have been killed by ", player_name, "."));
  1828. } else {
  1829. msg.prefix(affectedplayer, prefix_commands, "You killed yourself.");
  1830. }
  1831. entity.damage(affectedplayer, 1000);
  1832. goto("wait");
  1833. @nickname
  1834. if(size < 1) {
  1835. msg.prefix(player, "§eNickname", "§r/nickname ...");
  1836. msg(player, "§e - <name> ", "Sets a nickname");
  1837. msg(player, "§e - remove ", "Removes a nickname");
  1838. goto("wait");
  1839. }
  1840. nickname = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  1841. if(nickname == "remove") {
  1842. player.removeNickName(player);
  1843. msg.prefix(player, prefix_commands, concat("§rYour nickname was removed."));
  1844. } else {
  1845. player.setNickName(player, nickname);
  1846. msg.prefix(player, prefix_commands, concat("§rYour nickname was changed to ", nickname, "§r."));
  1847. }
  1848. player.setTabName(player);
  1849. goto("wait");
  1850. @iteminfo
  1851. item = entity.getEquip(player, "hand");
  1852. text = text.item(item);
  1853. text = text.replace(text, "\"", "\\\"");
  1854. msg(player, text.clipBoard(text, text));
  1855. goto("wait");
  1856. @perm
  1857. if(size == 0) {
  1858. @perm_syntax
  1859. msg.prefix(player, prefix_perms, "§r/perm ...");
  1860. if(perm.has(player, "perm.give")) {
  1861. msg(player, "§6 - give <player> <perm>");
  1862. }
  1863. if(perm.has(player, "perm.remove")) {
  1864. msg(player, "§6 - remove <player> <perm>");
  1865. }
  1866. if(perm.has(player, "perm.removeall")) {
  1867. msg(player, "§6 - removeall <player>");
  1868. }
  1869. if(perm.has(player, "perm.list")) {
  1870. msg(player, "§6 - list <player>");
  1871. }
  1872. if(perm.has(player, "perm.toggle")) {
  1873. msg(player, "§6 - toggle <player>");
  1874. }
  1875. goto("wait");
  1876. }
  1877. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1878. if(arg0 == "give") {
  1879. if(!perm.has(player, "perm.give")) {
  1880. perm.no(player, "perm.give");
  1881. goto("wait");
  1882. }
  1883. if(size != 3) {
  1884. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  1885. } else {
  1886. p_name = list.getIndex(args, 1);
  1887. perm = list.getIndex(args, 2);
  1888. if(!checkIfEverOnline(p_name)) {
  1889. msg.prefix(player, prefix_perms, "This player has never been online.");
  1890. goto("wait");
  1891. }
  1892. if(!isAPermGroup(perm)) {
  1893. msg.prefix(player, prefix_perms, "This is no permission group.");
  1894. goto("wait");
  1895. }
  1896. p_uuid = player.getUuid(p_name);
  1897. p_id = player.getId(p_uuid);
  1898. p_name = player.getName(p_uuid);
  1899. perm_id = map.get(permgroupsmap, perm);
  1900. if(hasPermAlready(p_id, perm_id)) {
  1901. msg.prefix(player, prefix_perms, "Perm already added.");
  1902. goto("wait");
  1903. }
  1904. if(isOnline(p_name)) {
  1905. p = read.player(p_name);
  1906. rank = map.get(permgroupToRank, perm);
  1907. if(rank != null) {
  1908. offerRank(p, rank.getTechName(rank));
  1909. }
  1910. }
  1911. givePerm(p_id, perm_id);
  1912. msg.prefix(player, prefix_perms, concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  1913. }
  1914. goto("wait");
  1915. }
  1916. if(arg0 == "remove") {
  1917. if(!perm.has(player, "perm.remove")) {
  1918. perm.no(player, "perm.remove");
  1919. goto("wait");
  1920. }
  1921. if(size != 3) {
  1922. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  1923. } else {
  1924. p_name = list.getIndex(args, 1);
  1925. perm = list.getIndex(args, 2);
  1926. if(!checkIfEverOnline(p_name)) {
  1927. msg.prefix(player, prefix_perms, "This player has never been online.");
  1928. goto("wait");
  1929. }
  1930. if(!isAPermGroup(perm)) {
  1931. msg.prefix(player, prefix_perms, "This is no permission group.");
  1932. goto("wait");
  1933. }
  1934. p_uuid = player.getUuid(p_name);
  1935. p_id = player.getId(p_uuid);
  1936. p_name = player.getName(p_uuid);
  1937. //Wenn marvinius eine Permission entfernt wird, wird dies blockiert, ausgenommen er tut dies selbst
  1938. player_id = player.getId(player);
  1939. if(player_id != 2) {
  1940. if(p_id == 2) {
  1941. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  1942. goto("wait");
  1943. }
  1944. }
  1945. perm_id = map.get(permgroupsmap, perm);
  1946. if(!hasPermAlready(p_id, perm_id)) {
  1947. msg.prefix(player, prefix_perms, "This player doesn't have that perm.");
  1948. goto("wait");
  1949. }
  1950. removePerm(p_id, perm_id);
  1951. msg.prefix(player, prefix_perms, concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  1952. }
  1953. goto("wait");
  1954. }
  1955. if(arg0 == "removeall") {
  1956. if(!perm.has(player, "perm.removeall")) {
  1957. perm.no(player, "perm.removeall");
  1958. goto("wait");
  1959. }
  1960. if(size != 2) {
  1961. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  1962. } else {
  1963. p_name = list.getIndex(args, 1);
  1964. if(!checkIfEverOnline(p_name)) {
  1965. msg.prefix(player, prefix_perms, "This player has never been online.");
  1966. goto("wait");
  1967. }
  1968. //Wenn marvinius Permissions entfernt werden, wird dies blockiert, ausgenommen er tut dies selbst
  1969. p_id = player.getId(player.getUuid(p_name));
  1970. player_id = player.getId(player);
  1971. if(player_id != 2) {
  1972. if(p_id == 2) {
  1973. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  1974. goto("wait");
  1975. }
  1976. }
  1977. removeAllPerms(p_id);
  1978. msg.prefix(player, prefix_perms, concat("§r All perms of §7", p_name, " §rwere removed"));
  1979. }
  1980. goto("wait");
  1981. }
  1982. if(arg0 == "list") {
  1983. if(!perm.has(player, "perm.list")) {
  1984. perm.no(player, "perm.list");
  1985. goto("wait");
  1986. }
  1987. if(size != 2) {
  1988. msg.prefix(player, prefix_perms, "/perm list <player>");
  1989. } else {
  1990. p_name = list.getIndex(args, 1);
  1991. if(!checkIfEverOnline(p_name)) {
  1992. msg.prefix(player, prefix_perms, "This player has never been online.");
  1993. goto("wait");
  1994. }
  1995. p_id = player.getId(player.getUuid(p_name));
  1996. permslist = getPermsFromPlayer(p_id);
  1997. listsize = list.getSize(permslist);
  1998. if(listsize == 0) {
  1999. msg.prefix(player, prefix_perms, "§rKeine Permissions vorhanden");
  2000. } else {
  2001. msg.prefix(player, prefix_perms, p_name);
  2002. for(i = 0; i < listsize; i++) {
  2003. msg(player, " - ", map.get(permgroupsmap2, list.getIndex(permslist, i)));
  2004. }
  2005. }
  2006. }
  2007. goto("wait");
  2008. }
  2009. if(arg0 == "toggle") {
  2010. if(!perm.has(player, "perm.toggle")) {
  2011. perm.no(player, "perm.toggle");
  2012. goto("wait");
  2013. }
  2014. player_id = player.getId(player);
  2015. if(perm.has(player, "pseudoPerm")) {
  2016. reloadAllPerms(player_id);
  2017. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  2018. } else {
  2019. removeAllPermsTemporarly(player_id);
  2020. msg.prefix(player, prefix_commands, "Have fun as a user.");
  2021. }
  2022. goto("wait");
  2023. }
  2024. goto("perm_syntax");
  2025. @allsounds
  2026. if(size == 0) {
  2027. msg.prefix(player, prefix_commands, "§r/allsounds...");
  2028. msg(player, "§e - start");
  2029. msg(player, "§e - stop");
  2030. goto("wait");
  2031. }
  2032. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2033. if(arg0 == "start") {
  2034. if(!map.exists(sounds_map)) {
  2035. sounds_map = map.new();
  2036. }
  2037. player_uuid = player.getUuid(player);
  2038. script_id = map.get(sounds_map, player_uuid);
  2039. if(script_id != null) {
  2040. script = script.getFromId(script_id);
  2041. if(script != null) {
  2042. msg.prefix(player, prefix_commands, "Sounds already started.");
  2043. goto("wait");
  2044. }
  2045. }
  2046. script = script.start("system/playsounds");
  2047. script.setVar(script, "player", player);
  2048. map.add(sounds_map, player.getUuid(player), script.getId(script));
  2049. msg.prefix(player, prefix_commands, "Sounds started.");
  2050. goto("wait");
  2051. }
  2052. if(arg0 == "stop") {
  2053. if(!map.exists(sounds_map)) {
  2054. sounds_map = map.new();
  2055. }
  2056. script_id = map.get(sounds_map, player.getUuid(player));
  2057. if(script_id == null) {
  2058. msg.prefix(player, prefix_commands, "No sounds playing.");
  2059. goto("wait");
  2060. }
  2061. script = script.getFromId(script_id);
  2062. if(script == null) {
  2063. msg.prefix(player, prefix_commands, "No sounds playing.");
  2064. goto("wait");
  2065. }
  2066. script.term(script);
  2067. msg.prefix(player, prefix_commands, "Sounds stopped.");
  2068. goto("wait");
  2069. }
  2070. goto("wait");
  2071. @weather
  2072. if(size == 0) {
  2073. @weather_syntax
  2074. msg.prefix(player, "§eWeather", "§r/weather ...");
  2075. msg(player, "§e - clear [duration]");
  2076. msg(player, "§e - rain [duration]");
  2077. msg(player, "§e - thunder [duration]");
  2078. goto("wait");
  2079. }
  2080. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2081. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  2082. if(size == 2) {
  2083. duration = list.getIndex(args, 1);
  2084. if(!isDouble(duration)) {
  2085. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2086. goto("wait");
  2087. }
  2088. if(duration < 0) {
  2089. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2090. goto("wait");
  2091. }
  2092. } else {
  2093. duration = 12000;
  2094. }
  2095. world = loc.getWorld(entity.getLocation(player));
  2096. if(arg0 == "clear") {
  2097. if(size > 2) {
  2098. msg.prefix(player, prefix_commands, "§r/weather clear [duration]");
  2099. goto("wait");
  2100. }
  2101. world.clearWeather(world, duration);
  2102. msg.prefix(player, prefix_commands, "§rWetter wurde auf Klar gestellt");
  2103. goto("wait");
  2104. }
  2105. if(arg0 == "rain") {
  2106. if(size > 2) {
  2107. msg.prefix(player, prefix_commands, "§r/weather rain [duration]");
  2108. goto("wait");
  2109. }
  2110. world.setRain(world, duration);
  2111. msg.prefix(player, prefix_commands, "§rWetter wurde auf Regen gestellt");
  2112. goto("wait");
  2113. }
  2114. if(arg0 == "thunder") {
  2115. if(size > 2) {
  2116. msg.prefix(player, prefix_commands, "§r/weather thunder [duration]");
  2117. goto("wait");
  2118. }
  2119. world.setThunder(world, duration);
  2120. msg.prefix(player, prefix_commands, "§rWetter wurde auf Gewitter gestellt");
  2121. goto("wait");
  2122. }
  2123. goto("wait");
  2124. }
  2125. goto("weather_syntax");
  2126. @time
  2127. if(size == 0) {
  2128. @time_syntax
  2129. msg.prefix(player, "§eTime", "§r/time ...");
  2130. msg(player, "§e - set <time>");
  2131. msg(player, "§e - add <time>");
  2132. msg(player, "§e - <day / noon / night / midnight>");
  2133. goto("wait");
  2134. }
  2135. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2136. if(arg0 == "set") {
  2137. if(size != 2) {
  2138. msg.prefix(player, prefix_commands, "§r/time set <time>");
  2139. goto("wait");
  2140. }
  2141. setTime = list.getIndex(args, 1);
  2142. if(!isDouble(setTime)) {
  2143. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2144. goto("wait");
  2145. }
  2146. if(setTime < 0) {
  2147. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2148. goto("wait");
  2149. }
  2150. world = loc.getWorld(entity.getLocation(player));
  2151. while(setTime >= 24000) {
  2152. setTime -= 24000;
  2153. }
  2154. world.setTime(world, setTime);
  2155. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(setTime), "."));
  2156. goto("wait");
  2157. }
  2158. if(arg0 == "add") {
  2159. if(size != 2) {
  2160. msg.prefix(player, prefix_commands, "§r/time add <time>");
  2161. goto("wait");
  2162. }
  2163. addTime = list.getIndex(args, 1);
  2164. if(!isDouble(addTime)) {
  2165. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2166. goto("wait");
  2167. }
  2168. if(addTime < 0) {
  2169. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2170. goto("wait");
  2171. }
  2172. world = loc.getWorld(entity.getLocation(player));
  2173. newtime = world.getTime(world) + addTime;
  2174. while(newtime >= 24000) {
  2175. newtime -= 24000;
  2176. }
  2177. world.setTime(world, newtime);
  2178. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2179. goto("wait");
  2180. }
  2181. newtime = null;
  2182. if(arg0 == "day") {
  2183. newtime = 1000;
  2184. } elseif(arg0 == "noon") {
  2185. newtime = 6000;
  2186. } elseif(arg0 == "night") {
  2187. newtime = 13000;
  2188. } elseif(arg0 == "midnight") {
  2189. newtime = 18000;
  2190. }
  2191. if(newtime != null) {
  2192. world = loc.getWorld(entity.getLocation(player));
  2193. world.setTime(world, newtime);
  2194. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2195. goto("wait");
  2196. }
  2197. goto("time_syntax");
  2198. @gamerule
  2199. world = loc.getWorld(entity.getLocation(player));
  2200. if(size == 0) {
  2201. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  2202. goto("wait");
  2203. }
  2204. gamerule_string = list.getIndex(args, 0);
  2205. gamerule_key = gamerule.getKey(gamerule_string);
  2206. if(gamerule_key == null) {
  2207. msg.prefix(player, prefix_commands, "Gamerule doesn't exist.");
  2208. goto("wait");
  2209. }
  2210. gamerule_value = gamerule.getValue(world, gamerule_key);
  2211. if(size == 1) {
  2212. if(gamerule.isBool(gamerule_value)) {
  2213. value = gamerule.getBool(gamerule_value);
  2214. } elseif(gamerule.isInt(gamerule_value)) {
  2215. value = text.number(gamerule.getInt(gamerule_value));
  2216. } else {
  2217. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  2218. goto("wait");
  2219. }
  2220. msg.prefix(player, prefix_commands, concat(gamerule_string, " ", value));
  2221. goto("wait");
  2222. }
  2223. if(size == 2) {
  2224. if(!perm.has(player, "gamerule.write")) {
  2225. perm.no(player, "gamerule.write");
  2226. goto("wait");
  2227. }
  2228. value = list.getIndex(args, 1);
  2229. if(gamerule.isBool(gamerule_value)) {
  2230. if(!isBool(value)) {
  2231. msg.prefix(player, prefix_commands, "Boolean expected.");
  2232. goto("wait");
  2233. }
  2234. gamerule.setBool(gamerule_value, value);
  2235. } elseif(gamerule.isInt(gamerule_value)) {
  2236. if(!isDouble(value)) {
  2237. msg.prefix(player, prefix_commands, "Number expected.");
  2238. goto("wait");
  2239. }
  2240. gamerule.setInt(gamerule_value, value);
  2241. value = text.number(value);
  2242. } else {
  2243. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  2244. goto("wait");
  2245. }
  2246. if(world.getName(world) == "overworld") {
  2247. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, "."));
  2248. } else {
  2249. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, " (not persistent)."));
  2250. }
  2251. goto("wait");
  2252. }
  2253. goto("wait");
  2254. @tip
  2255. if(size == 0) {
  2256. msg.prefix(player, prefix_tips, "§r/tip ...");
  2257. msg(player, "§e - list §rList all tips");
  2258. msg(player, "§e - add <tip> <text> §rAdds a tip");
  2259. msg(player, "§e - remove <tip> §rRemoves a tip");
  2260. msg(player, "§e - <tip> [player] §rSends a tip to all/a player");
  2261. goto("wait");
  2262. }
  2263. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2264. if(arg0 == "list") {
  2265. msg(player, "§r--==§eTipps§r==--");
  2266. counter = 0;
  2267. getTippsListStatement = databank.prepare("SELECT * FROM tipps;");
  2268. result = databank.execute(getTippsListStatement);
  2269. while(databank.next(result)) {
  2270. tipp_key = databank.getString(result, 1);
  2271. tipp_value = databank.getString(result, 2);
  2272. msg(player, concat("§e", tipp_key, "§r : ", tipp_value));
  2273. counter++;
  2274. }
  2275. databank.close(result);
  2276. databank.close(getTippsListStatement);
  2277. if(counter == 0) {
  2278. msg.prefix(player, prefix_tips, "§rIm Moment stehen keine Tipps zur Verfügung.");
  2279. }
  2280. goto("wait");
  2281. }
  2282. if(arg0 == "add") {
  2283. if(size < 3) {
  2284. msg.prefix(player, prefix_commands, "§r/tip add <name> <text>");
  2285. goto("wait");
  2286. }
  2287. tipp_key = list.getIndex(args, 1);
  2288. tipp_value = concatList(args, " ", 2, size - 1);
  2289. tipp.register(tipp_key, tipp_value);
  2290. msg.prefix(player, prefix_tips, "§rDer Tipp wurde hinzugefügt.");
  2291. goto("wait");
  2292. }
  2293. if(arg0 == "remove") {
  2294. if(size != 2) {
  2295. msg.prefix(player, prefix_commands, "§r/tip remove <name>");
  2296. goto("wait");
  2297. }
  2298. tipp_key = list.getIndex(args, 1);
  2299. removeTippStatement = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  2300. databank.setInt(removeTippStatement, 1, tipp_key);
  2301. databank.workerExecute(removeTippStatement);
  2302. msg.prefix(player, prefix_tips, "§rDer Tipp wurde entfernt.");
  2303. goto("wait");
  2304. }
  2305. tipp_key = arg0;
  2306. tipp_value = tipp.get(tipp_key);
  2307. if(tipp_value == null) {
  2308. msg.prefix(player, prefix_tips, "§rDer Tipp existiert nicht.");
  2309. goto("wait");
  2310. }
  2311. if(size == 1) {
  2312. msg.prefix("online", prefix_tips, tipp_value);
  2313. } else {
  2314. p_name = list.getIndex(args, 1);
  2315. if(!isOnline(p_name)) {
  2316. msg.prefix(player, prefix_tips, "§rDieser Spieler ist nicht online");
  2317. goto("wait");
  2318. }
  2319. p = read.player(p_name);
  2320. msg.prefix(p, prefix_tips, tipp_value);
  2321. msg.prefix(player, prefix_tips, concat("§rDer Tipp wurde §7", p_name, "§r gesendet."));
  2322. }
  2323. goto("wait");
  2324. @help
  2325. if(size > 1) {
  2326. msg.prefix(player, prefix_commands, "§r/help [side]");
  2327. goto("wait");
  2328. }
  2329. //Auf Permission überprüfen
  2330. temp_list = list.new();
  2331. for(i = 0; i < list.getSize(command_list); i++) {
  2332. command = list.getIndex(command_list, i);
  2333. if(perm.has(player, command)) {
  2334. list.add(temp_list, command);
  2335. }
  2336. }
  2337. list.sort(temp_list);
  2338. temp_size = list.getSize(temp_list);
  2339. max_side = temp_size / 10;
  2340. if(size == 0) {
  2341. side = 1;
  2342. print_side = side - 1;
  2343. } else {
  2344. side = list.getIndex(args, 0);
  2345. if(!isDouble(side)) {
  2346. msg.prefix(player, prefix_commands, "§r/help [side]");
  2347. goto("wait");
  2348. }
  2349. print_side = side - 1;
  2350. if(print_side < 0 || print_side > max_side) {
  2351. msg.prefix(player, prefix_commands, concat("Möglich: 1 - ", text.number(math.roundDown(max_side + 1))));
  2352. goto("wait");
  2353. }
  2354. }
  2355. msg(player, concat("§a --- Help ", text.number(side), " ---"));
  2356. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  2357. if(i < temp_size) {
  2358. command = list.getIndex(temp_list, i);
  2359. command = text.hover(command, map.getOrDefault(command_map, command, ""));
  2360. msg(player, " /", command);
  2361. }
  2362. }
  2363. if(side == 1) {
  2364. backward = "§c<<Backward<<";
  2365. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  2366. } elseif(side > max_side) {
  2367. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  2368. forward = "§c>>Forward>>";
  2369. } else {
  2370. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  2371. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  2372. }
  2373. msg(player, backward, " ", forward);
  2374. goto("wait");
  2375. @cli
  2376. if(size != 1) {
  2377. msg.prefix(player, prefix_commands, "§r/cli <radius>");
  2378. goto("wait");
  2379. }
  2380. radius = list.getIndex(args, 0);
  2381. if(!isDouble(radius) || radius < 0) {
  2382. msg.prefix(player, prefix_commands, "Positive number expected.");
  2383. goto("wait");
  2384. }
  2385. entity.removeAll("net.minecraft.entity.item.ItemEntity", entity.getLocation(player), radius);
  2386. msg.prefix(player, prefix_commands, "§rItems entfernt");
  2387. goto("wait");
  2388. @plough
  2389. if(size != 1) {
  2390. msg.prefix(player, prefix_commands, "§r/plough <radius>");
  2391. goto("wait");
  2392. }
  2393. radius = list.getIndex(args, 0);
  2394. if(!isDouble(radius)) {
  2395. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2396. goto("wait");
  2397. }
  2398. if(radius < 0) {
  2399. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2400. goto("wait");
  2401. }
  2402. center_loc = getBlockLocation(entity.getLocation(player));
  2403. for(x = radius * -1; x <= radius; x++) {
  2404. for(z = radius * -1; z <= radius; z++) {
  2405. for(y = radius * -1; y <= radius; y++) {
  2406. length = math.hypot(x, math.hypot(y, z));
  2407. if(length <= radius) {
  2408. mod_loc = loc.mod(center_loc, x, y, z);
  2409. block = block.get(mod_loc);
  2410. if(block.hasTag(dirt_tag, block) && block.getType(loc.mod(mod_loc, 0, 1, 0)) == "minecraft:air") {
  2411. block.set(mod_loc, "minecraft:farmland[moisture=7]");
  2412. }
  2413. }
  2414. }
  2415. }
  2416. }
  2417. msg.prefix(player, prefix_commands, "§rFeld gepflügt");
  2418. goto("wait");
  2419. @plant
  2420. if(size != 1) {
  2421. msg.prefix(player, prefix_commands, "§r/plant <radius>");
  2422. goto("wait");
  2423. }
  2424. radius = list.getIndex(args, 0);
  2425. if(!isDouble(radius)) {
  2426. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2427. goto("wait");
  2428. }
  2429. if(radius < 0) {
  2430. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2431. goto("wait");
  2432. }
  2433. center_loc = getBlockLocation(entity.getLocation(player));
  2434. for(x = radius * -1; x <= radius; x++) {
  2435. for(z = radius * -1; z <= radius; z++) {
  2436. for(y = radius * -1; y <= radius; y++) {
  2437. length = math.hypot(x, math.hypot(y, z));
  2438. if(length <= radius) {
  2439. mod_loc = loc.mod(center_loc, x, y, z);
  2440. upper_loc = loc.mod(mod_loc, 0, 1, 0);
  2441. if(block.getType(mod_loc) == "minecraft:farmland" && block.getType(upper_loc) == "minecraft:air") {
  2442. block.set(upper_loc, "minecraft:wheat[age=7]");
  2443. }
  2444. }
  2445. }
  2446. }
  2447. }
  2448. msg.prefix(player, prefix_commands, "§rFeld bepflanzt");
  2449. goto("wait");
  2450. @grow
  2451. if(size != 1) {
  2452. msg.prefix(player, prefix_commands, "§r/grow <radius>");
  2453. goto("wait");
  2454. }
  2455. radius = list.getIndex(args, 0);
  2456. if(!isDouble(radius)) {
  2457. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2458. goto("wait");
  2459. }
  2460. if(radius < 0) {
  2461. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2462. goto("wait");
  2463. }
  2464. center_loc = getBlockLocation(entity.getLocation(player));
  2465. grow(center_loc, radius);
  2466. msg.prefix(player, prefix_commands, "§rFeld gedüngt");
  2467. goto("wait");
  2468. @start
  2469. if(size != 1) {
  2470. @starthelp
  2471. msg.prefix(sender, prefix_commands, "/start ...");
  2472. msg(sender, " - ai");
  2473. msg(sender, " - chat");
  2474. msg(sender, " - commands");
  2475. msg(sender, " - creative");
  2476. msg(sender, " - damage");
  2477. msg(sender, " - doors");
  2478. msg(sender, " - friends");
  2479. msg(sender, " - games");
  2480. msg(sender, " - harvest");
  2481. msg(sender, " - herobrine");
  2482. msg(sender, " - mails");
  2483. msg(sender, " - perms");
  2484. msg(sender, " - pumpkin");
  2485. msg(sender, " - scheduler");
  2486. msg(sender, " - shop");
  2487. msg(sender, " - sitting");
  2488. msg(sender, " - stats");
  2489. msg(sender, " - story");
  2490. msg(sender, " - survival");
  2491. msg(sender, " - ticket");
  2492. msg(sender, " - voxel");
  2493. goto("wait");
  2494. }
  2495. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2496. if(arg0 == "ai") {
  2497. script = script.get("Ai");
  2498. if(script != null) {
  2499. script.term(script);
  2500. }
  2501. script.startNamed("Ai", "system/ai", "utils/u_general");
  2502. }
  2503. elseif(arg0 == "commands") {
  2504. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
  2505. if(script == null) {
  2506. snuvi.debug("Old commands script still active due to error in new script");
  2507. goto("wait");
  2508. }
  2509. script.term(script.get());
  2510. }
  2511. elseif(arg0 == "chat") {
  2512. script = script.get("Chat");
  2513. if(script != null) {
  2514. script.term(script);
  2515. }
  2516. script.startNamed("Chat", "system/chat", "utils/u_general");
  2517. }
  2518. elseif(arg0 == "creative") {
  2519. script = script.get("Creative");
  2520. if(script != null) {
  2521. script.term(script);
  2522. }
  2523. script.startNamed("Creative", "system/creative", "utils/u_general");
  2524. }
  2525. elseif(arg0 == "damage") {
  2526. script = script.get("Damage");
  2527. if(script != null) {
  2528. script.term(script);
  2529. }
  2530. script.startNamed("Damage", "system/damage");
  2531. }
  2532. elseif(arg0 == "doors") {
  2533. script = script.get("Doors");
  2534. if(script != null) {
  2535. script.term(script);
  2536. }
  2537. script.startNamed("Doors", "system/doors", "utils/u_general");
  2538. }
  2539. elseif(arg0 == "games") {
  2540. script = script.get("Gamecenter");
  2541. if(script != null) {
  2542. script.term(script);
  2543. }
  2544. script.startNamed("Gamecenter", "system/gamecenter", "utils/u_general", "utils/u_games");
  2545. }
  2546. elseif(arg0 == "harvest") {
  2547. script = script.get("Harvest");
  2548. if(script != null) {
  2549. script.term(script);
  2550. }
  2551. script.startNamed("Harvest", "system/harvest", "utils/u_general");
  2552. }
  2553. elseif(arg0 == "herobrine") {
  2554. script = script.get("Herobrine");
  2555. if(script != null) {
  2556. script.term(script);
  2557. }
  2558. script.startNamed("Herobrine", "system/herobrine", "utils/u_general");
  2559. }
  2560. elseif(arg0 == "perms") {
  2561. script.start("system/perms", "utils/u_general");
  2562. }
  2563. elseif(arg0 == "pumpkin") {
  2564. script = script.get("Pumpkin");
  2565. if(script != null) {
  2566. script.term(script);
  2567. }
  2568. script.startNamed("Pumpkin", "system/pumpkin", "utils/u_general");
  2569. }
  2570. elseif(arg0 == "stats") {
  2571. script = script.get("Ranklist");
  2572. if(script != null) {
  2573. script.term(script);
  2574. }
  2575. script.startNamed("Ranklist", "system/ranklist", "utils/u_general", "utils/u_games");
  2576. }
  2577. elseif(arg0 == "scheduler") {
  2578. script = script.get("Scheduler");
  2579. if(script != null) {
  2580. script.term(script);
  2581. }
  2582. script.startNamed("Scheduler", "system/scheduler", "utils/u_general");
  2583. }
  2584. elseif(arg0 == "shop") {
  2585. script = script.get("Shops");
  2586. if(script != null) {
  2587. script.term(script);
  2588. }
  2589. script.startNamed("Shops", "system/chestshops", "utils/u_general");
  2590. }
  2591. elseif(arg0 == "mails") {
  2592. script = script.get("Mails");
  2593. if(script != null) {
  2594. script.term(script);
  2595. }
  2596. script.startNamed("Mails", "system/mailsystem", "utils/u_general");
  2597. }
  2598. elseif(arg0 == "ticket") {
  2599. script = script.get("Ticket");
  2600. if(script != null) {
  2601. script.term(script);
  2602. }
  2603. script.startNamed("Ticket", "system/tickets", "utils/u_general");
  2604. }
  2605. elseif(arg0 == "story") {
  2606. script = script.get("Story");
  2607. if(script != null) {
  2608. script.term(script);
  2609. }
  2610. script.startNamed("Story", "system/story", "utils/u_general");
  2611. script = script.get("QuestsAdmont");
  2612. if(script != null) {
  2613. script.term(script);
  2614. }
  2615. script.startNamed("QuestsAdmont", "story/admont/core", "utils/u_general", "utils/u_quest");
  2616. script = script.get("QuestsSchiffbruch");
  2617. if(script != null) {
  2618. script.term(script);
  2619. }
  2620. script.startNamed("QuestsSchiffbruch", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
  2621. }
  2622. elseif(arg0 == "sitting") {
  2623. script = script.get("Sitting");
  2624. if(script != null) {
  2625. script.term(script);
  2626. }
  2627. script.startNamed("Sitting", "system/sitting", "utils/u_general");
  2628. }
  2629. elseif(arg0 == "survival") {
  2630. script = script.get("Survival");
  2631. if(script != null) {
  2632. script.term(script);
  2633. }
  2634. script.startNamed("Survival", "system/survival", "utils/u_general");
  2635. }
  2636. elseif(arg0 == "voxel") {
  2637. script = script.get("Voxel");
  2638. if(script != null) {
  2639. script.term(script);
  2640. }
  2641. script.startNamed("Voxel", "system/voxel");
  2642. }
  2643. else {
  2644. goto("starthelp");
  2645. }
  2646. goto("wait");
  2647. @senditem
  2648. if(size != 1) {
  2649. msg.prefix(player, prefix_commands, "/senditem <player>");
  2650. goto("wait");
  2651. }
  2652. item = entity.getEquip(player, "hand");
  2653. if(item.getType(item) == "minecraft:air") {
  2654. msg.prefix(player, prefix_commands, "§rDu musst ein Item in der Hand halten");
  2655. goto("wait");
  2656. }
  2657. p_name = list.getIndex(args, 0);
  2658. p_uuid = player.getUuid(p_name);
  2659. if(p_uuid == null) {
  2660. msg.prefix(player, prefix_commands, "This player has never been online.");
  2661. goto("wait");
  2662. }
  2663. p = read.player(p_name);
  2664. if(p == null) {
  2665. msg.prefix(player, prefix_commands, "This player is not online.");
  2666. goto("wait");
  2667. }
  2668. safeGiveItemPlayer(p, item);
  2669. player.removeItem(player, item);
  2670. goto("wait");
  2671. @top
  2672. player_loc = entity.getLocation(player);
  2673. y = 255;
  2674. loc.setY(player_loc, y);
  2675. while(block.isAir(player_loc)) {
  2676. loc.setY(player_loc, y);
  2677. y--;
  2678. }
  2679. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  2680. goto("wait");
  2681. @story
  2682. story_spawn = world.getStorySpawn();
  2683. world = loc.getWorld(story_spawn);
  2684. if(world == null) {
  2685. msg.prefix(player, prefix_commands, "This world is not loaded.");
  2686. goto("wait");
  2687. }
  2688. if(size > 1) {
  2689. msg.prefix(player, prefix_commands, "/story [player]");
  2690. goto("wait");
  2691. }
  2692. if(size == 1) {
  2693. affectedname = list.getIndex(args, 0);
  2694. affectedplayer = read.player(affectedname);
  2695. if(affectedplayer == null) {
  2696. msg.prefix(player, prefix_commands, "This player is not online.");
  2697. goto("wait");
  2698. }
  2699. if(!perm.has(player, "teleport.other")) {
  2700. perm.no(player, "teleport.other");
  2701. goto("wait");
  2702. }
  2703. }
  2704. if(player.hasMinigame(affectedplayer)) {
  2705. if(size == 1) {
  2706. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  2707. } else {
  2708. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  2709. }
  2710. goto("wait");
  2711. }
  2712. if(size == 1) {
  2713. if(player != affectedplayer) {
  2714. affectedname = player.getName(affectedplayer);
  2715. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the story world."));
  2716. }
  2717. }
  2718. if(player.teleport(affectedplayer, story_spawn, true)) {
  2719. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the story world.");
  2720. }
  2721. goto("wait");
  2722. @games
  2723. world = loc.getWorld(gamesspawn);
  2724. if(world == null) {
  2725. msg.prefix(player, prefix_commands, "This world is not loaded.");
  2726. goto("wait");
  2727. }
  2728. if(size > 1) {
  2729. msg.prefix(player, prefix_commands, "/games [player]");
  2730. goto("wait");
  2731. }
  2732. if(size == 1) {
  2733. affectedname = list.getIndex(args, 0);
  2734. affectedplayer = read.player(affectedname);
  2735. if(affectedplayer == null) {
  2736. msg.prefix(player, prefix_commands, "This player is not online.");
  2737. goto("wait");
  2738. }
  2739. if(!perm.has(player, "teleport.other")) {
  2740. perm.no(player, "teleport.other");
  2741. goto("wait");
  2742. }
  2743. }
  2744. if(player.hasMinigame(affectedplayer)) {
  2745. if(size == 1) {
  2746. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  2747. } else {
  2748. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  2749. }
  2750. goto("wait");
  2751. }
  2752. if(size == 1) {
  2753. if(player != affectedplayer) {
  2754. affectedname = player.getName(affectedplayer);
  2755. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the games world."));
  2756. }
  2757. }
  2758. if(player.teleport(affectedplayer, gamesspawn, true)) {
  2759. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the games world.");
  2760. }
  2761. goto("wait");
  2762. @bug
  2763. msg.prefix(player, prefix_commands, "Found a bug? Report it to marvinius with §b/mail marvinius <message>");
  2764. goto("wait");
  2765. @repair
  2766. item = entity.getEquip(player, "hand");
  2767. if(item.getType(item) == "minecraft:air") {
  2768. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  2769. goto("wait");
  2770. }
  2771. item.setDamage(item, 0);
  2772. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  2773. goto("wait");
  2774. @report
  2775. msg.prefix(player, prefix_commands, "Want to report a player?");
  2776. msg(player, " - §b/ticket <message>");
  2777. msg(player, " - §b/mail marvinius <message>");
  2778. goto("wait");
  2779. @playtime
  2780. if(size == 0) {
  2781. p_id = player.getId(player);
  2782. arg0 = player.getName(player);
  2783. } else {
  2784. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2785. if(arg0 == "year") {
  2786. if(!perm.has(player, "playtime.year")) {
  2787. perm.no(player, "playtime.year");
  2788. goto("wait");
  2789. }
  2790. calendar = time.new(time.getMillis());
  2791. now_month = time.getMonth(calendar);
  2792. now_year = time.getYear(calendar);
  2793. if(size == 1) {
  2794. year = now_year;
  2795. } else {
  2796. year = list.getIndex(args, 1);
  2797. if(!isDouble(year)) {
  2798. msg.prefix(player, prefix_commands, "Number expected.");
  2799. goto("wait");
  2800. }
  2801. if(year > now_year) {
  2802. year = now_year;
  2803. }
  2804. }
  2805. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  2806. since_minutes = playtime.getTotalOnlineMinutes();
  2807. //Tabelle erstellen
  2808. table = table.new("§8", 4, 5, 5);
  2809. msg(player, table.getStart(table));
  2810. msg(player, table.get(table, text.number(year), "Playtime", "Change"));
  2811. msg(player, table.getMiddle(table));
  2812. //Erstes Mitternacht des gewählten Jahres festlegen
  2813. now_day = time.getDay(calendar);
  2814. time.nextDay(calendar);
  2815. midnight = time.from(calendar) - (time.getDaysBetween(1, 1, year, now_day, now_month, now_year) + 1) * 86400000;
  2816. //Monats-Spielzeit berechnen
  2817. temp_list = list.new();
  2818. list.add(temp_list, playtime.getInterval(midnight - time.getMonthDays(12, year - 1) * 86400000, midnight)); //Dezember des Vorjahres hinzufügen
  2819. for(i = 1; i <= 12; i++) {
  2820. midnight_2 = midnight + time.getMonthDays(i, now_year) * 86400000; //Alle Tage eines Monats * 24 Stunden
  2821. minutes = playtime.getInterval(midnight, midnight_2);
  2822. list.add(temp_list, minutes);
  2823. midnight = midnight_2;
  2824. if(i == now_month && year == now_year) {
  2825. minutes += since_minutes;
  2826. }
  2827. }
  2828. for(i = 1; i <= 12; i++) {
  2829. minutes = list.getIndex(temp_list, i);
  2830. hours = math.roundDown(minutes / 60);
  2831. mod_minutes = minutes % 60;
  2832. if(mod_minutes < 10) {
  2833. time_string = concat("§6", text.number(hours), ":0", text.number(mod_minutes), " h");
  2834. } else {
  2835. time_string = concat("§6", text.number(hours), ":", text.number(mod_minutes), " h");
  2836. }
  2837. pre_minutes = list.getIndex(temp_list, i - 1);
  2838. if(minutes >= pre_minutes) {
  2839. color = "§a+";
  2840. a = minutes;
  2841. b = pre_minutes;
  2842. } else {
  2843. color = "§c-";
  2844. a = pre_minutes;
  2845. b = minutes;
  2846. }
  2847. if(b == 0) {
  2848. change = "";
  2849. } else {
  2850. change = math.round(a / b * 100 - 100);
  2851. change = concat(color, text.number(change), " %");
  2852. }
  2853. msg(player, table.get(table, concat("§6", map.get(monthlist, i)), time_string, change));
  2854. if(i == now_month && year == now_year) {
  2855. break;
  2856. }
  2857. }
  2858. //Tabelle beenden
  2859. msg(player, table.getEnd(table));
  2860. goto("wait");
  2861. }
  2862. if(arg0 == "month") {
  2863. if(!perm.has(player, "playtime.month")) {
  2864. perm.no(player, "playtime.month");
  2865. goto("wait");
  2866. }
  2867. calendar = time.new(time.getMillis());
  2868. now_month = time.getMonth(calendar);
  2869. now_year = time.getYear(calendar);
  2870. year = now_year;
  2871. if(size == 1) {
  2872. month = now_month;
  2873. } else {
  2874. month = list.getIndex(args, 1);
  2875. if(!isDouble(month)) {
  2876. msg.prefix(player, prefix_commands, "Number expected.");
  2877. goto("wait");
  2878. }
  2879. if(month < 1) {
  2880. month = 1;
  2881. } elseif(month > 12) {
  2882. month = 12;
  2883. }
  2884. if(size == 3) {
  2885. year = list.getIndex(args, 2);
  2886. if(!isDouble(year)) {
  2887. msg.prefix(player, prefix_commands, "Number expected.");
  2888. goto("wait");
  2889. }
  2890. }
  2891. if(year > now_year ||(year >= now_year && month > now_month)) {
  2892. month = now_month;
  2893. year = now_year;
  2894. }
  2895. }
  2896. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  2897. since_minutes = playtime.getTotalOnlineMinutes();
  2898. //Tabelle erstellen
  2899. table = table.new("§8", 4, 5, 5);
  2900. msg(player, table.getStart(table));
  2901. msg(player, table.get(table, map.get(monthlist, month), "Playtime", "Players"));
  2902. msg(player, table.getMiddle(table));
  2903. //Erstes Mitternacht des gewählten Monats festlegen
  2904. now_day = time.getDay(calendar);
  2905. time.nextDay(calendar);
  2906. midnight = time.from(calendar) - (time.getDaysBetween(1, month, year, now_day, now_month, now_year) + 1) * 86400000;
  2907. //Tages-Spielzeit berechnen
  2908. for(i = 1; i <= time.getMonthDays(month, year); i++) {
  2909. players = playtime.getPlayersPerInterval(midnight, midnight + 86400000);
  2910. minutes = playtime.getInterval(midnight, midnight + 86400000);
  2911. midnight += 86400000; //24 Stunden
  2912. if(i == now_day && month == now_month && year == now_year) {
  2913. minutes += since_minutes;
  2914. }
  2915. hours = math.roundDown(minutes / 60);
  2916. minutes = minutes % 60;
  2917. if(minutes < 10) {
  2918. time_string = concat("§6", text.number(hours), ":0", text.number(minutes), " h");
  2919. } else {
  2920. time_string = concat("§6", text.number(hours), ":", text.number(minutes), " h");
  2921. }
  2922. msg(player, table.get(table, concat("§6", text.number(i)), time_string, text.number(players)));
  2923. if(i == now_day && month == now_month && year == now_year) {
  2924. break;
  2925. }
  2926. }
  2927. //Tabelle beenden
  2928. msg(player, table.getEnd(table));
  2929. goto("wait");
  2930. }
  2931. if(arg0 == "all") {
  2932. msg(player, getSpacer());
  2933. msg.prefix(player, prefix_commands, "Server-Playtime");
  2934. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  2935. since_minutes = playtime.getTotalOnlineMinutes();
  2936. now_time = time.getMillis();
  2937. //Spielzeit heute
  2938. calendar = time.new(now_time);
  2939. time.nextDay(calendar);
  2940. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  2941. minutes = playtime.getInterval(midnight, now_time) + since_minutes;
  2942. hours = text.number(math.roundDown(minutes / 60));
  2943. minutes = text.number(minutes % 60);
  2944. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  2945. //Spielzeit 30 Tage für alle Spieler
  2946. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  2947. minutes = playtime.getInterval(oneMonthAgo, now_time) + since_minutes;
  2948. hours = text.number(math.roundDown(minutes / 60));
  2949. minutes = text.number(minutes % 60);
  2950. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  2951. //Spielzeit gesamt
  2952. minutes = playtime.getTotal();
  2953. hours = text.number(math.roundDown(minutes / 60));
  2954. minutes = text.number(minutes % 60);
  2955. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  2956. goto("wait");
  2957. }
  2958. if(!perm.has(player, "playtime.other")) {
  2959. perm.no(player, "playtime.other");
  2960. goto("wait");
  2961. }
  2962. }
  2963. if(!checkIfEverOnline(arg0)) {
  2964. msg.prefix(player, prefix_commands, "This player has never been online.");
  2965. goto("wait");
  2966. }
  2967. now_time = time.getMillis();
  2968. p_uuid = player.getUuid(arg0);
  2969. arg0 = player.getName(p_uuid);
  2970. p_id = player.getId(p_uuid);
  2971. msg(player, getSpacer());
  2972. msg.prefix(player, prefix_commands, concat("Playtime of ", player.getName(p_uuid)));
  2973. //Online seit
  2974. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  2975. if(isOnline(arg0)) {
  2976. since_hours = math.roundDown(since_minutes / 60);
  2977. mod_minutes = since_minutes % 60;
  2978. msg(player, concat("§aOnline since: §r", text.number(since_hours), " hours ", text.number(mod_minutes), " minutes"));
  2979. } else {
  2980. msg(player, "§6Status: ", "§cOffline");
  2981. }
  2982. //Spielzeit heute
  2983. calendar = time.new(now_time);
  2984. time.nextDay(calendar);
  2985. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  2986. minutes = playtime.getPlayerInterval(p_id, midnight, now_time) + since_minutes;
  2987. hours = text.number(math.roundDown(minutes / 60));
  2988. minutes = text.number(minutes % 60);
  2989. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  2990. //Spielzeit 30 Tage
  2991. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  2992. minutes = playtime.getPlayerInterval(p_id, oneMonthAgo, now_time) + since_minutes;
  2993. hours = text.number(math.roundDown(minutes / 60));
  2994. minutes = text.number(minutes % 60);
  2995. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  2996. //Spielzeit gesamt
  2997. minutes = playtime.getPlayerTotal(p_id);
  2998. hours = text.number(math.roundDown(minutes / 60));
  2999. minutes = text.number(minutes % 60);
  3000. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3001. goto("wait");
  3002. @datatools
  3003. if(size == 0) {
  3004. @datatoolshelp
  3005. msg.prefix(player, prefix_datatools, "/datatools ...");
  3006. msg(player, "§6 - hide <name> §rHides wusi on an itemstack");
  3007. msg(player, "§6 - attribute <attribut> <slot> <double> <op> §rFügt ein Attribut zu einem ItemStack hinzu");
  3008. msg(player, "§6 - hide-entity §rMacht ein Entity unsichtbar");
  3009. msg(player, "§6 - show-entity §rMacht ein Entity sichtbar");
  3010. msg(player, "§6 - name-entity <name> §rSetzt den Namen des Entities");
  3011. msg(player, "§6 - name-visibility <boolean> §rZeigt den Namen (nicht) dauerhaft");
  3012. msg(player, "§6 - name-item <name> §rSetzt den Itemnamen");
  3013. msg(player, "§6 - lore-item <line> <lore> §rSetzt die Itemlore");
  3014. goto("wait");
  3015. }
  3016. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3017. if(arg0 == "hide") {
  3018. if(size < 2) {
  3019. msg.prefix(player, prefix_datatools, "§r/datatools hide <name>");
  3020. goto("wait");
  3021. }
  3022. item = entity.getEquip(player, "hand");
  3023. if(item.getType(item) == "minecraft:air") {
  3024. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  3025. goto("wait");
  3026. }
  3027. name = text.concatList(args, " ", 1, size - 1);
  3028. if(item.hide(item, name)) {
  3029. msg.prefix(player, prefix_datatools, "You hided something.");
  3030. } else {
  3031. msg.prefix(player, prefix_datatools, "You can't hide that.");
  3032. }
  3033. goto("wait");
  3034. }
  3035. if(arg0 == "attribute") {
  3036. if(size < 5) {
  3037. msg.prefix(player, prefix_datatools, "/datatools attribute <attribut> <slot> <double> <op>");
  3038. goto("wait");
  3039. }
  3040. item = entity.getEquip(player, "hand");
  3041. if(item.getType(item) == "minecraft:air") {
  3042. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3043. goto("wait");
  3044. }
  3045. double = list.getIndex(args, 3);
  3046. if(!isDouble(double) || double < 0) {
  3047. msg.prefix(player, prefix_datatools, "Natural number expected.");
  3048. goto("wait");
  3049. }
  3050. attribut = concat("generic.", list.getIndex(args, 1));
  3051. slot = read.slot(list.getIndex(args, 2));
  3052. if(slot == null) {
  3053. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  3054. goto("wait");
  3055. }
  3056. operation = list.getIndex(args, 4);
  3057. if(operation == "ADDITION") {
  3058. operation = 0;
  3059. } elseif(operation == "MULTIPLY_BASE") {
  3060. operation = 1;
  3061. } elseif(operation == "MULTIPLY_TOTAL") {
  3062. operation = 2;
  3063. } else {
  3064. msg.prefix(player, prefix_datatools, "Incorrect operation.");
  3065. goto("wait");
  3066. }
  3067. item.addAttribute(item, attribut, slot, double, operation);
  3068. msg.prefix(player, prefix_datatools, "Attribute added.");
  3069. goto("wait");
  3070. }
  3071. if(arg0 == "name-item") {
  3072. if(size < 2) {
  3073. msg.prefix(player, prefix_datatools, "§r/datatools name-item <name>");
  3074. goto("wait");
  3075. }
  3076. item = entity.getEquip(player, "hand");
  3077. if(item.getType(item) == "minecraft:air") {
  3078. msg.prefix(player, prefix_datatools, "§rDu musst ein Item in der Hand halten.");
  3079. goto("wait");
  3080. }
  3081. name = text.concatList(args, " ", 1, size - 1);
  3082. name = text.replace(name, "&", "§");
  3083. name = text.replace(name, "\\n", "\n");
  3084. item.setName(item, name);
  3085. msg.prefix(player, prefix_datatools, concat("Das Item trägt nun den Namen ", name, "§r."));
  3086. goto("wait");
  3087. }
  3088. if(arg0 == "lore-item") {
  3089. if(size < 3) {
  3090. msg.prefix(player, prefix_datatools, "§r/datatools lore-item <line> <lore>");
  3091. goto("wait");
  3092. }
  3093. item = entity.getEquip(player, "hand");
  3094. if(item.getType(item) == "minecraft:air") {
  3095. msg.prefix(player, prefix_datatools, "§rDu musst ein Item in der Hand halten.");
  3096. goto("wait");
  3097. }
  3098. line = list.getIndex(args, 1);
  3099. if(!isDouble(line)) {
  3100. msg.prefix(player, prefix_datatools, "Zahl erwartet.");
  3101. goto("wait");
  3102. }
  3103. if(line < 0) {
  3104. msg.prefix(player, prefix_datatools, "Positive Zahl erwartet.");
  3105. goto("wait");
  3106. }
  3107. lore = text.concatList(args, " ", 2, size - 1);
  3108. lore = text.replace(lore, "&", "§");
  3109. item.addLore(item, line, lore);
  3110. msg.prefix(player, prefix_datatools, "Die neue Lore wurde hinzugefügt.");
  3111. goto("wait");
  3112. }
  3113. if(arg0 == "maxhealth") {
  3114. if(size < 2) {
  3115. msg.prefix(player, prefix_datatools, "§r/datatools maxhealth <value>");
  3116. goto("wait");
  3117. }
  3118. value = list.getIndex(args, 1);
  3119. if(!isDouble(value)) {
  3120. msg.prefix(player, prefix_datatools, "Zahl erwartet.");
  3121. goto("wait");
  3122. }
  3123. templist = living.near(player, 3);
  3124. if(list.getSize(templist) == 0) {
  3125. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3126. goto("wait");
  3127. }
  3128. entity = list.getIndex(templist, 0);
  3129. if(isPlayer(entity)) {
  3130. msg.prefix(player, prefix_datatools, "Auf Spieler nicht anwendbar.");
  3131. goto("wait");
  3132. }
  3133. living.setMaxHealth(entity, value);
  3134. msg.prefix(player, prefix_datatools, concat("Das Entity ", entity.getType(entity), " hat nun Maxhealth: ", entity.getMaxHealth(entity), "§r."));
  3135. goto("wait");
  3136. }
  3137. if(arg0 == "name-entity") {
  3138. if(size < 2) {
  3139. msg.prefix(player, prefix_datatools, "§r/datatools name-entity <name>");
  3140. goto("wait");
  3141. }
  3142. templist = living.near(player, 3);
  3143. if(list.getSize(templist) == 0) {
  3144. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3145. goto("wait");
  3146. }
  3147. entity = list.getIndex(templist, 0);
  3148. name = text.concatList(args, " ", 1, size - 1);
  3149. name = text.replace(name, "&", "§");
  3150. name = text.replace(name, "\\n", "\n");
  3151. entity.setName(entity, name, true);
  3152. msg.prefix(player, prefix_datatools, concat("Das Entity trägt nun den Namen ", name, "§r."));
  3153. goto("wait");
  3154. }
  3155. if(arg0 == "name-visibility") {
  3156. if(size != 2) {
  3157. msg.prefix(player, prefix_datatools, "§r/datatools name-visibility <boolean>");
  3158. goto("wait");
  3159. }
  3160. templist = living.near(player, 3);
  3161. if(list.getSize(templist) == 0) {
  3162. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3163. goto("wait");
  3164. }
  3165. entity = list.getIndex(templist, 0);
  3166. boolean = list.getIndex(args, 1);
  3167. name = entity.getName(entity);
  3168. entity.setName(entity, name, boolean);
  3169. msg.prefix(player, prefix_datatools, "Änderung durchgeführt.");
  3170. goto("wait");
  3171. }
  3172. if(arg0 == "hide-entity") {
  3173. if(size != 1) {
  3174. msg.prefix(player, prefix_datatools, "§r/datatools hide-entity");
  3175. goto("wait");
  3176. }
  3177. templist = living.near(player, 3);
  3178. if(list.getSize(templist) == 0) {
  3179. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3180. goto("wait");
  3181. }
  3182. entity = list.getIndex(templist, 0);
  3183. entity.setInvisible(entity, true);
  3184. msg.prefix(player, prefix_datatools, "Das Entity ist nun unsichtbar.");
  3185. goto("wait");
  3186. }
  3187. if(arg0 == "show-entity") {
  3188. if(size != 1) {
  3189. msg.prefix(player, prefix_datatools, "§r/datatools show-entity");
  3190. goto("wait");
  3191. }
  3192. templist = living.near(player, 3);
  3193. if(list.getSize(templist) == 0) {
  3194. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3195. goto("wait");
  3196. }
  3197. entity = list.getIndex(templist, 0);
  3198. entity.setInvisible(entity, false);
  3199. msg.prefix(player, prefix_datatools, "Das Entity ist nun sichtbar.");
  3200. goto("wait");
  3201. }
  3202. goto("datatoolshelp");
  3203. @human
  3204. if(size == 0) {
  3205. @humanhelp
  3206. msg.prefix(player, prefix_human, "/human ...");
  3207. msg(player, concat("§6 - spawn §rSpawnt einen Human"));
  3208. msg(player, concat("§6 - set <name> §rSetzt den Skin"));
  3209. msg(player, concat("§6 - setuuid <uuid> §rSetzt den Skin"));
  3210. msg(player, concat("§6 - name §rSetzt den Namen"));
  3211. msg(player, concat("§6 - kill §rTötet einen Human"));
  3212. msg(player, concat("§6 - size <scale> §rSetzt die Größenskalierung"));
  3213. msg(player, concat("§6 - steve §rSchaltet auf Steve Skin"));
  3214. msg(player, concat("§6 - alex §rSchaltet auf Alex Skin"));
  3215. msg(player, concat("§6 - statue <bool> §rToggles between statue"));
  3216. goto("wait");
  3217. }
  3218. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3219. if(arg0 == "spawn") {
  3220. human.spawn(entity.getLocation(player));
  3221. msg.prefix(player, prefix_human, "Human gespawnt.");
  3222. goto("wait");
  3223. }
  3224. player_loc = entity.getLocation(player);
  3225. human = entity.get(player_loc, 3, "me.km.entities.EntityHuman");
  3226. if(human == null) {
  3227. msg.prefix(player, prefix_human, "Zu weit weg vom Human.");
  3228. goto("wait");
  3229. }
  3230. if(arg0 == "set") {
  3231. if(size == 2) {
  3232. name = list.getIndex(args, 1);
  3233. human.setSkin(human, name);
  3234. msg.prefix(player, prefix_human, "Skin gesetzt.");
  3235. goto("wait");
  3236. }
  3237. }
  3238. elseif(arg0 == "setuuid") {
  3239. if(size == 2) {
  3240. uuid = list.getIndex(args, 1);
  3241. human.setSkin(human, uuid);
  3242. msg.prefix(player, prefix_human, "Skin gesetzt.");
  3243. goto("wait");
  3244. }
  3245. }
  3246. elseif(arg0 == "name") {
  3247. if(size > 1) {
  3248. name = text.concatList(args, " ", 1, size - 1);
  3249. name = text.replace(name, "&", "§");
  3250. name = text.replace(name, "\\n", "\n");
  3251. entity.setName(human, name, true);
  3252. msg.prefix(player, prefix_human, concat("Das Entity trägt nun den Namen ", name, "§r."));
  3253. goto("wait");
  3254. }
  3255. }
  3256. elseif(arg0 == "kill") {
  3257. entity.remove(human);
  3258. msg.prefix(player, prefix_human, "Human getötet.");
  3259. goto("wait");
  3260. }
  3261. elseif(arg0 == "size") {
  3262. if(size == 2) {
  3263. scale = list.getIndex(args, 1);
  3264. if(!isDouble(scale)) {
  3265. msg.prefix(player, prefix_human, "Zahl erwartet.");
  3266. goto("wait");
  3267. }
  3268. if(scale > 10) {
  3269. msg.prefix(player, prefix_human, "Maximal 10.");
  3270. scale = 10;
  3271. }
  3272. human.setScale(human, scale);
  3273. msg.prefix(player, prefix_human, "Größe verändert.");
  3274. goto("wait");
  3275. }
  3276. }
  3277. elseif(arg0 == "steve") {
  3278. human.setSlim(human, false);
  3279. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  3280. goto("wait");
  3281. }
  3282. elseif(arg0 == "alex") {
  3283. human.setSlim(human, true);
  3284. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  3285. goto("wait");
  3286. }
  3287. elseif(arg0 == "statue") {
  3288. if(size == 1) {
  3289. bool = true;
  3290. } elseif(size == 2) {
  3291. bool = list.getIndex(args, 1);
  3292. if(bool != true && bool != false) {
  3293. bool = true;
  3294. }
  3295. }
  3296. human.setStatue(human, bool);
  3297. msg.prefix(player, prefix_human, "Human changed.");
  3298. goto("wait");
  3299. }
  3300. goto("humanhelp");
  3301. @answer
  3302. if(player.isMuted(player)) {
  3303. msg.prefix(player, "§6Commands", "You are muted.");
  3304. goto("wait");
  3305. }
  3306. if(size < 1) {
  3307. msg.prefix(sender, prefix_commands, "/answer <nachricht>");
  3308. goto("wait");
  3309. }
  3310. player_uuid = player.getUuid(sender);
  3311. p_uuid = map.get(answer_map, player_uuid);
  3312. if(p_uuid == null) {
  3313. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  3314. goto("wait");
  3315. }
  3316. nachricht = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  3317. if(player.getId(p_uuid) == 18) {
  3318. msg(sender, concat("§6[ -> §cSERVER§6] §r", nachricht));
  3319. msg("SERVER", concat("§6[§c", sender_name, "§6] §r", nachricht));
  3320. } else {
  3321. p = player.get(p_uuid);
  3322. if(p == null) {
  3323. msg.prefix(sender, prefix_commands, "This player is not online.");
  3324. goto("wait");
  3325. }
  3326. msg(sender, concat("§6[ -> §c", player.getName(p), "§6] §r", nachricht));
  3327. msg(p, concat("§6[§c", sender_name, "§6] §r", nachricht));
  3328. }
  3329. map.add(answer_map, p_uuid, player_uuid);
  3330. map.add(answer_map, player_uuid, p_uuid);
  3331. goto("wait");
  3332. @msg
  3333. if(player.isMuted(player)) {
  3334. msg.prefix(player, "§6Commands", "You are muted.");
  3335. goto("wait");
  3336. }
  3337. if(size < 2) {
  3338. msg.prefix(sender, prefix_commands, "/msg <player> <nachricht>");
  3339. goto("wait");
  3340. }
  3341. p_name = list.getIndex(args, 0);
  3342. p_uuid = player.getUuid(p_name);
  3343. if(p_uuid == null) {
  3344. msg.prefix(sender, prefix_commands, "Unknown player.");
  3345. goto("wait");
  3346. }
  3347. nachricht = text.replace(text.concatList(args, " ", 1, size - 1), "&", "§");
  3348. if(text.toUpperCase(p_name) == "SERVER") {
  3349. msg("SERVER", concat("§6[§c", sender_name, "§6] §r", nachricht));
  3350. msg(sender, concat("§6[ -> §cSERVER§6] §r", nachricht));
  3351. } else {
  3352. p = read.player(p_name);
  3353. if(p == null) {
  3354. msg.prefix(sender, prefix_commands, "This player is not online.");
  3355. goto("wait");
  3356. }
  3357. msg(p, concat("§6[§c", sender_name, "§6] §r", nachricht));
  3358. msg(sender, concat("§6[ -> §c", player.getName(p), "§6] §r", nachricht));
  3359. }
  3360. player_uuid = player.getUuid(sender);
  3361. map.add(answer_map, p_uuid, player_uuid);
  3362. map.add(answer_map, player_uuid, p_uuid);
  3363. goto("wait");
  3364. @list
  3365. list = players.toList();
  3366. size = list.getSize(list);
  3367. msg(sender, getSpacer());
  3368. if(size == 1) {
  3369. msg(sender, concat("§6There is ", text.number(size), " players online."));
  3370. } else {
  3371. msg(sender, concat("§6There are ", text.number(size), " players online."));
  3372. }
  3373. for(i = 0; i < size; i++) {
  3374. p = list.getIndex(list, i);
  3375. full_name = player.getFullName(p);
  3376. if(player.isAfk(p)) {
  3377. full_name = concat("§7§m", removeFormat(full_name));
  3378. }
  3379. msg(sender, full_name);
  3380. }
  3381. goto("wait");
  3382. @ass
  3383. if(size < 2) {
  3384. msg.prefix(player, prefix_commands, "§r/ass ...");
  3385. msg(player, " - set <name>");
  3386. msg(player, " - rename <name>");
  3387. msg(player, " - remove <radius>");
  3388. goto("wait");
  3389. }
  3390. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3391. if(arg0 == "set") {
  3392. name = text.concatList(args, " ", 1, size - 1);
  3393. name = text.replace(name, "&", "§");
  3394. name = text.replace(name, "\\n", "\n");
  3395. ent = entity.spawn("km:nobody", entity.getLocation(player), "{NoGravity:true}");
  3396. entity.setName(ent, name);
  3397. goto("wait");
  3398. }
  3399. if(arg0 == "rename") {
  3400. name = text.concatList(args, " ", 1, size - 1);
  3401. name = text.replace(name, "&", "§");
  3402. name = text.replace(name, "\\n", "\n");
  3403. ent_list = living.near(player, 5);
  3404. for(i = 0; i < list.getSize(ent_list); i++) {
  3405. ent = list.getIndex(ent_list, i);
  3406. if(entity.getType(ent) == "nobody") {
  3407. entity.setName(ent, name);
  3408. goto("wait");
  3409. }
  3410. }
  3411. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  3412. goto("wait");
  3413. }
  3414. if(arg0 == "remove") {
  3415. radius = list.getIndex(args, 1);
  3416. if(!isDouble(radius)) {
  3417. msg.prefix(player, prefix_commands, "Zahl erwartet.");
  3418. goto("wait");
  3419. }
  3420. if(radius < 0 || radius > 5) {
  3421. msg.prefix(player, prefix_commands, "§rRadius: 0-5");
  3422. goto("wait");
  3423. }
  3424. ent_list = living.near(player, radius);
  3425. for(i = 0; i < list.getSize(ent_list); i++) {
  3426. ent = list.getIndex(ent_list, i);
  3427. if(entity.getType(ent) == "nobody") {
  3428. entity.remove(ent);
  3429. msg.prefix(player, prefix_commands, "§rLufttext entfernt");
  3430. goto("wait");
  3431. }
  3432. }
  3433. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  3434. }
  3435. goto("wait");
  3436. @coords
  3437. target_loc = player.getTarget(player, 5, false, false);
  3438. targettype = block.getType(target_loc);
  3439. if(targettype == "minecraft:air") {
  3440. msg.prefix(player, prefix_commands, "You have to look at a block.");
  3441. goto("wait");
  3442. }
  3443. msg(player, getSpacer());
  3444. x = text.Number(loc.getX(target_loc));
  3445. y = text.Number(loc.getY(target_loc));
  3446. z = text.Number(loc.getZ(target_loc));
  3447. msg(player, "§6World: §r", world.getName(loc.getWorld(target_loc)));
  3448. msg(player, "§6Coords: §r", x, " / ", y, " / ", z);
  3449. msg(player, "§6Block: §r", targettype);
  3450. goto("wait");
  3451. @sign
  3452. if(size == 0) {
  3453. msg.prefix(player, prefix_commands, "/sign <1-4> [text]");
  3454. goto("wait");
  3455. }
  3456. target_loc = player.getTarget(player, 5, false, false);
  3457. block = block.get(target_loc);
  3458. if(!block.hasTag(sign_tag, block)) {
  3459. msg.prefix(player, prefix_commands, "Look at a sign.");
  3460. goto("wait");
  3461. }
  3462. line = list.getIndex(args, 0);
  3463. if(!isDouble(line)) {
  3464. msg.prefix(player, prefix_commands, "Number expected.");
  3465. goto("wait");
  3466. }
  3467. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  3468. msg.prefix(player, prefix_commands, "Number between 1 and 5 expected.");
  3469. goto("wait");
  3470. }
  3471. string = "";
  3472. if(size > 1) {
  3473. for(i = 1; i < size; i++) {
  3474. arg = list.getIndex(args, i);
  3475. if(isDouble(arg)) {
  3476. arg = text.number(arg);
  3477. }
  3478. if(i == 1) {
  3479. string = arg;
  3480. } else {
  3481. string = concat(string, " ", arg);
  3482. }
  3483. }
  3484. }
  3485. string = text.replace(string, "&", "§");
  3486. block.setSign(target_loc, line - 1, string);
  3487. goto("wait");
  3488. @head
  3489. if(size != 1) {
  3490. msg.prefix(player, prefix_commands, "/head <player>");
  3491. goto("wait");
  3492. }
  3493. name = list.getIndex(args, 0);
  3494. uuid = player.getUuid(name);
  3495. if(uuid == null) {
  3496. player.giveItem(player, read.item(concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}")));
  3497. } else {
  3498. player.giveItem(player, player.getHead(uuid, name));
  3499. }
  3500. goto("wait");
  3501. @mute
  3502. if(size < 1) {
  3503. msg.prefix(sender, prefix_commands, "/mute <player>");
  3504. goto("wait");
  3505. }
  3506. p_name = list.getIndex(args, 0);
  3507. if(!isOnline(p_name)) {
  3508. msg.prefix(sender, prefix_commands, "This player is not online.");
  3509. goto("wait");
  3510. }
  3511. p = read.player(p_name);
  3512. p_name = player.getName(p);
  3513. if(p_name == "marvinius") {
  3514. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3515. goto("wait");
  3516. }
  3517. msg("online", concat("§c", p_name, " was muted by ", sender_name, "."));
  3518. player.mute(p, true);
  3519. goto("wait");
  3520. @unmute
  3521. if(size < 1) {
  3522. msg.prefix(sender, prefix_commands, "/unmute <player>");
  3523. goto("wait");
  3524. }
  3525. p_name = list.getIndex(args, 0);
  3526. if(!isOnline(p_name)) {
  3527. msg.prefix(sender, prefix_commands, "This player is not online.");
  3528. goto("wait");
  3529. }
  3530. p = read.player(p_name);
  3531. p_name = player.getName(p);
  3532. if(p_name == "marvinius") {
  3533. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3534. goto("wait");
  3535. }
  3536. msg("online", concat("§c", p_name, " was unmuted by ", sender_name, "."));
  3537. player.mute(p, false);
  3538. goto("wait");
  3539. @kick
  3540. if(size < 1) {
  3541. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  3542. goto("wait");
  3543. }
  3544. p_name = list.getIndex(args, 0);
  3545. if(!isOnline(p_name)) {
  3546. msg.prefix(sender, prefix_commands, "This player is not online.");
  3547. goto("wait");
  3548. }
  3549. p = read.player(p_name);
  3550. p_name = player.getName(p);
  3551. if(p_name == "marvinius") {
  3552. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3553. goto("wait");
  3554. }
  3555. if(size > 1) {
  3556. reason = text.concatList(args, " ", 1, size - 1);
  3557. msg("online", concat("§c", p_name, " was kicked by ", sender_name, ": ", reason));
  3558. } else {
  3559. reason = "You got kicked";
  3560. msg("online", concat("§c", p_name, " was kicked by ", sender_name, "."));
  3561. }
  3562. ban.kick(p, reason);
  3563. goto("wait");
  3564. @silentkick
  3565. if(size < 1) {
  3566. msg.prefix(sender, prefix_commands, "/silentkick <player> [reason]");
  3567. goto("wait");
  3568. }
  3569. p_name = list.getIndex(args, 0);
  3570. if(!isOnline(p_name)) {
  3571. msg.prefix(sender, prefix_commands, "This player is not online.");
  3572. goto("wait");
  3573. }
  3574. p = read.player(p_name);
  3575. p_name = player.getName(p);
  3576. if(p_name == "marvinius") {
  3577. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3578. goto("wait");
  3579. }
  3580. if(size > 1) {
  3581. reason = text.concatList(args, " ", 1, size - 1);
  3582. msg(sender, concat("§cYou silently kicked ", p_name, ": ", reason));
  3583. } else {
  3584. reason = "Du wurdest gekickt";
  3585. msg(sender, concat("§cYou silently kicked ", p_name, "."));
  3586. }
  3587. ban.kick(p, reason);
  3588. goto("wait");
  3589. @warn
  3590. if(size != 1) {
  3591. msg.prefix(player, prefix_commands, "/warn <player>");
  3592. goto("wait");
  3593. }
  3594. p_name = list.getIndex(args, 0);
  3595. if(!isOnline(p_name)) {
  3596. msg.prefix(player, prefix_commands, "This player is not online.");
  3597. goto("wait");
  3598. }
  3599. p = read.player(p_name);
  3600. p_name = player.getName(p);
  3601. if(p_name == "marvinius") {
  3602. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  3603. goto("wait");
  3604. }
  3605. head.add(p, 0, sender_name, 160, 50, 20);
  3606. title.setSub(p, "is watching you");
  3607. title.send(p, concat("§c", sender_name));
  3608. list.add(warninglist, p_name);
  3609. sgoto(100, "removeWarning");
  3610. msg.prefix(player, prefix_commands, "The player got warned.");
  3611. goto("wait");
  3612. @removeWarning
  3613. p_name = list.getIndex(warninglist, 0);
  3614. if(isOnline(p_name)) {
  3615. p = read.player(p_name);
  3616. head.remove(p, 0);
  3617. list.removeIndex(warninglist, 0);
  3618. }
  3619. goto("wait");
  3620. @ban
  3621. if(size < 1) {
  3622. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  3623. goto("wait");
  3624. }
  3625. p_name = list.getIndex(args, 0);
  3626. if(!checkIfEverOnline(p_name)) {
  3627. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3628. goto("wait");
  3629. }
  3630. p_name = player.getName(player.getUuid(p_name));
  3631. if(p_name == "marvinius") {
  3632. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3633. goto("wait");
  3634. }
  3635. if(size > 1) {
  3636. reason = text.concatList(args, " ", 1, size - 1);
  3637. msg("online", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  3638. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  3639. } else {
  3640. reason = "Du wurdest gebannt";
  3641. msg("online", concat("§c", p_name, " got banned by ", sender_name, "."));
  3642. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, "."));
  3643. }
  3644. ban.add(player.getUuid(p_name), reason, sender_name);
  3645. if(isOnline(p_name)) {
  3646. p = read.player(p_name);
  3647. ban.kick(p, reason);
  3648. }
  3649. goto("wait");
  3650. @silentban
  3651. if(size < 1) {
  3652. msg.prefix(sender, prefix_commands, "/silentban <player> [reason]");
  3653. goto("wait");
  3654. }
  3655. p_name = list.getIndex(args, 0);
  3656. if(!checkIfEverOnline(p_name)) {
  3657. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3658. goto("wait");
  3659. }
  3660. p_name = player.getName(player.getUuid(p_name));
  3661. if(p_name == "marvinius") {
  3662. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3663. goto("wait");
  3664. }
  3665. if(size > 1) {
  3666. reason = text.concatList(args, " ", 1, size - 1);
  3667. msg(sender, concat("§cYou silently banned ", p_name, ": ", reason));
  3668. } else {
  3669. reason = "You got banned.";
  3670. msg(sender, concat("§cYou silently banned ", p_name, "."));
  3671. }
  3672. ban.add(player.getUuid(p_name), reason, sender_name);
  3673. if(isOnline(p_name)) {
  3674. p = read.player(p_name);
  3675. ban.kick(p, reason);
  3676. }
  3677. goto("wait");
  3678. @unban
  3679. if(size != 1) {
  3680. msg.prefix(sender, prefix_commands, "/unban <player>");
  3681. goto("wait");
  3682. }
  3683. p_name = list.getIndex(args, 0);
  3684. if(!checkIfEverOnline(p_name)) {
  3685. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3686. goto("wait");
  3687. }
  3688. p_name = player.getName(player.getUuid(p_name));
  3689. ban.remove(player.getUuid(p_name));
  3690. msg(sender, concat("§cYou unbanned ", p_name, "."));
  3691. goto("wait");
  3692. @tempban
  3693. if(size < 4) {
  3694. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  3695. goto("wait");
  3696. }
  3697. p_name = list.getIndex(args, 0);
  3698. if(!checkIfEverOnline(p_name)) {
  3699. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3700. goto("wait");
  3701. }
  3702. p_name = player.getName(player.getUuid(p_name));
  3703. if(p_name == "marvinius") {
  3704. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3705. goto("wait");
  3706. }
  3707. days = list.getIndex(args, 1);
  3708. hours = list.getIndex(args, 2);
  3709. minutes = list.getIndex(args, 3);
  3710. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  3711. msg.prefix(sender, prefix_commands, "Number expected.");
  3712. goto("wait");
  3713. }
  3714. if(days < 0 || hours < 0 || minutes < 0) {
  3715. msg.prefix(sender, prefix_commands, "Positive number expected.");
  3716. goto("wait");
  3717. }
  3718. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  3719. timestring = getTimeString(endtime);
  3720. if(size > 4) {
  3721. reason = text.concatList(args, " ", 4, size - 1);
  3722. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  3723. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  3724. } else {
  3725. reason = "Du wurdest gebannt";
  3726. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  3727. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  3728. }
  3729. calendar = time.new(endtime);
  3730. ban.add(player.getUuid(p_name), reason, sender_name, calendar);
  3731. if(isOnline(p_name)) {
  3732. p = read.player(p_name);
  3733. ban.kick(p, reason);
  3734. }
  3735. goto("wait");
  3736. @ping
  3737. msg(player, "pong");
  3738. goto("wait");
  3739. @plot
  3740. if(size == 0) {
  3741. @plothelp
  3742. msg.prefix(player, prefix_plot, "/plot ...");
  3743. msg(player, "§d - info §rReturns info about current location");
  3744. msg(player, "§d - pos1/pos2 §rSet corner points");
  3745. msg(player, "§d - create §rCreates a (sub-)plot (Y: 0 - 255)");
  3746. msg(player, "§d - create3D §rCreates a 3D (sub-)plot");
  3747. msg(player, "§d - remove [id] §rRemoves a plot");
  3748. msg(player, "§d - expand <anzahl> [id] §rExpands a plot");
  3749. msg(player, "§d - name [id] <name> §rRenames a plot");
  3750. msg(player, "§d - share <player> [id] §rAdd a player to a plot");
  3751. msg(player, "§d - kick <player> [id] §rRemove a player from a plot");
  3752. msg(player, "§d - leader <player> [id] §rPromote to plot-leader");
  3753. msg(player, "§d - mod <player> [id] §rPromote to plot-mod");
  3754. msg(player, "§d - chest <player> [id] §rAllows a player to open chests");
  3755. msg(player, "§d - degrade <player> [id] §rDemote a player");
  3756. msg(player, "§d - raise §rRaises a plot to a city");
  3757. msg(player, "§d - sell <price> §rSells a sub-plot");
  3758. if(perm.has(player, "plot.moreinfo")) {
  3759. msg(player, "§d - list [player] §rLists all plots from a player");
  3760. msg(player, "§d - moreinfo [id] §rReturns more detailed infos");
  3761. msg(player, "§d - listall §rLists all plots");
  3762. msg(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  3763. } else {
  3764. msg(player, "§d - list §rLists your plots");
  3765. }
  3766. goto("wait");
  3767. }
  3768. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3769. if(arg0 == "sell") {
  3770. if(size != 2) {
  3771. msg.prefix(player, prefix_commands, "/plot sell <price>");
  3772. goto("wait");
  3773. }
  3774. sign_loc = player.getTarget(player, 5, false, false);
  3775. block = block.get(sign_loc);
  3776. if(!block.hasTag(sign_tag, block)) {
  3777. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  3778. goto("wait");
  3779. }
  3780. if(block.getSign(sign_loc, 0) != "" || block.getSign(sign_loc, 1) != "" || block.getSign(sign_loc, 2) != "" || block.getSign(sign_loc, 3) != "") {
  3781. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  3782. goto("wait");
  3783. }
  3784. plot_list = plot.get(sign_loc);
  3785. amount = list.getSize(plot_list);
  3786. if(amount == 0 || amount == 1) {
  3787. msg.prefix(player, prefix_plot, "You aren't on a sub plot.");
  3788. goto("wait");
  3789. }
  3790. if(amount > 2) {
  3791. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  3792. goto("wait");
  3793. }
  3794. plot_1 = list.getIndex(plot_list, 0);
  3795. plot_2 = list.getIndex(plot_list, 1);
  3796. if(plot.isCity(plot_1)) {
  3797. city_plot = plot_1;
  3798. sell_plot = plot_2;
  3799. } elseif(plot.isCity(plot_2)) {
  3800. sell_plot = plot_1;
  3801. city_plot = plot_2;
  3802. } else {
  3803. msg.prefix(player, prefix_plot, "No city found.");
  3804. goto("wait");
  3805. }
  3806. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  3807. msg.prefix(player, prefix_plot, "You aren't a city plot leader or mod.");
  3808. goto("wait");
  3809. }
  3810. snuvis = list.getIndex(args, 1);
  3811. if(!isDouble(snuvis) || snuvis < 0) {
  3812. msg.prefix(player, prefix_plot, "Positive number expected.");
  3813. goto("wait");
  3814. }
  3815. //Sell Plot
  3816. x1 = plot.getMinX(sell_plot);
  3817. y1 = plot.getMinY(sell_plot);
  3818. z1 = plot.getMinZ(sell_plot);
  3819. x2 = plot.getMaxX(sell_plot);
  3820. y2 = plot.getMaxY(sell_plot);
  3821. z2 = plot.getMaxZ(sell_plot);
  3822. length = math.abs(x1 - x2) + 1;
  3823. width = math.abs(z1 - z2) + 1;
  3824. high = math.abs(y1 - y2) + 1;
  3825. //Change plot settings
  3826. plot.setFree(sell_plot, true);
  3827. plot.setName(sell_plot, "Free Plot");
  3828. plot.removePlayer(sell_plot, player.getName(player));
  3829. //Label Sign
  3830. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  3831. block.setSign(sign_loc, 1, concat("§2", text.number(snuvis)));
  3832. if(high == 256) {
  3833. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width)));
  3834. } else {
  3835. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width), " (Y:", text.number(high), ")"));
  3836. }
  3837. block.setSign(sign_loc, 3, text.number(player.getId(player)));
  3838. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  3839. goto("wait");
  3840. }
  3841. if(arg0 == "raise") {
  3842. location = entity.getLocation(player);
  3843. plot_list = plot.get(location);
  3844. amount = list.getSize(plot_list);
  3845. if(amount == 0) {
  3846. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  3847. goto("wait");
  3848. }
  3849. if(!player.isClanLeader(player)) {
  3850. msg.prefix(player, prefix_plot, "Only a clan leader can do this.");
  3851. goto("wait");
  3852. }
  3853. clan_id = player.getClanId(player);
  3854. if(clan.getMembersAmount(clan_id) < 5) {
  3855. msg.prefix(player, prefix_plot, "Your clan needs 4 members to do this.");
  3856. goto("wait");
  3857. }
  3858. plot = list.getIndex(plot_list, 0);
  3859. if(plot.isCity(plot)) {
  3860. msg.prefix(player, prefix_plot, "This plot is already a city.");
  3861. goto("wait");
  3862. }
  3863. if(!plot.isLeader(plot, player)) {
  3864. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  3865. goto("wait");
  3866. }
  3867. if(amount > 1) {
  3868. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  3869. goto("wait");
  3870. }
  3871. x1 = plot.getMinX(plot);
  3872. z1 = plot.getMinZ(plot);
  3873. x2 = plot.getMaxX(plot);
  3874. z2 = plot.getMaxZ(plot);
  3875. length = math.abs(x1 - x2) + 1;
  3876. width = math.abs(z1 - z2) + 1;
  3877. plot_size = length * width;
  3878. if(plot_size < 900) {
  3879. msg.prefix(player, prefix_plot, "Your plot must be over 900m2.");
  3880. goto("wait");
  3881. }
  3882. snuvis = 4096;
  3883. if(!hasEnoughMoney(player, snuvis)) {
  3884. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  3885. goto("wait");
  3886. }
  3887. offerRank(player, "rank.major");
  3888. player.setPlotRaised(player, true);
  3889. subMoney(player, snuvis);
  3890. plot.setCity(plot, true);
  3891. msg.prefix(player, prefix_plot, concat("City created. Spent §6", text.number(snuvis), "§r snuvis."));
  3892. goto("wait");
  3893. }
  3894. if(arg0 == "leader") {
  3895. if(size < 2) {
  3896. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  3897. goto("wait");
  3898. }
  3899. p_name = list.getIndex(args, 1);
  3900. p_uuid = player.getUuid(p_name);
  3901. if(p_uuid == null) {
  3902. msg.prefix(player, prefix_plot, "This player has never been online.");
  3903. goto("wait");
  3904. }
  3905. p_name = player.getName(p_uuid);
  3906. location = entity.getLocation(player);
  3907. world = loc.getWorld(location);
  3908. if(size == 2) {
  3909. plot_list = plot.get(location);
  3910. amount = list.getSize(plot_list);
  3911. if(amount == 0) {
  3912. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  3913. goto("wait");
  3914. }
  3915. plot = list.getIndex(plot_list, 0);
  3916. if(amount > 1) {
  3917. msg.prefix(player, prefix_plot, "Multiple plots present:");
  3918. for(i = 0; i < amount; i++) {
  3919. plot = list.getIndex(plot_list, i);
  3920. plot_id = plot.getId(plot);
  3921. 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)));
  3922. }
  3923. goto("wait");
  3924. }
  3925. } else {
  3926. if(size != 3) {
  3927. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  3928. goto("wait");
  3929. }
  3930. plot_id = list.getIndex(args, 2);
  3931. plot = plot.getFromId(plot_id, world);
  3932. if(plot == null) {
  3933. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  3934. goto("wait");
  3935. }
  3936. }
  3937. player_id = player.getId(player);
  3938. if(!perm.has(player, "plot.other")) {
  3939. if(!world.canUsePlots(world)) {
  3940. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  3941. goto("wait");
  3942. }
  3943. if(!plot.isLeader(plot, player_id)) {
  3944. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  3945. goto("wait");
  3946. }
  3947. if(player_name == p_name) {
  3948. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  3949. goto("wait");
  3950. }
  3951. }
  3952. p_id = player.getId(p_uuid);
  3953. if(plot.isLeader(plot, p_id)) {
  3954. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  3955. goto("wait");
  3956. }
  3957. old_leader = plot.getLeaderId(plot);
  3958. if(old_leader != null) {
  3959. plot.setMod(plot, old_leader);
  3960. }
  3961. plot.setLeader(plot, p_id);
  3962. plot.addPlayer(plot, p_name);
  3963. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot leader."));
  3964. goto("wait");
  3965. }
  3966. if(arg0 == "mod") {
  3967. if(size < 2) {
  3968. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  3969. goto("wait");
  3970. }
  3971. p_name = list.getIndex(args, 1);
  3972. p_uuid = player.getUuid(p_name);
  3973. if(p_uuid == null) {
  3974. msg.prefix(player, prefix_plot, "This player has never been online.");
  3975. goto("wait");
  3976. }
  3977. p_name = player.getName(p_uuid);
  3978. location = entity.getLocation(player);
  3979. world = loc.getWorld(location);
  3980. if(size == 2) {
  3981. plot_list = plot.get(location);
  3982. amount = list.getSize(plot_list);
  3983. if(amount == 0) {
  3984. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  3985. goto("wait");
  3986. }
  3987. plot = list.getIndex(plot_list, 0);
  3988. if(amount > 1) {
  3989. msg.prefix(player, prefix_plot, "Multiple plots present:");
  3990. for(i = 0; i < amount; i++) {
  3991. plot = list.getIndex(plot_list, i);
  3992. plot_id = plot.getId(plot);
  3993. 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)));
  3994. }
  3995. goto("wait");
  3996. }
  3997. } else {
  3998. if(size != 3) {
  3999. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4000. goto("wait");
  4001. }
  4002. plot_id = list.getIndex(args, 2);
  4003. plot = plot.getFromId(plot_id, world);
  4004. if(plot == null) {
  4005. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4006. goto("wait");
  4007. }
  4008. }
  4009. player_id = player.getId(player);
  4010. if(!perm.has(player, "plot.other")) {
  4011. if(!world.canUsePlots(world)) {
  4012. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4013. goto("wait");
  4014. }
  4015. if(!plot.isLeader(plot, player_id)) {
  4016. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4017. goto("wait");
  4018. }
  4019. }
  4020. p_id = player.getId(p_uuid);
  4021. if(plot.isLeader(plot, p_id)) {
  4022. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  4023. goto("wait");
  4024. }
  4025. if(plot.isMod(plot, p_id)) {
  4026. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  4027. goto("wait");
  4028. }
  4029. plot.setMod(plot, p_id);
  4030. plot.addPlayer(plot, p_name);
  4031. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot mod."));
  4032. goto("wait");
  4033. }
  4034. if(arg0 == "chest") {
  4035. if(size < 2) {
  4036. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4037. goto("wait");
  4038. }
  4039. p_name = list.getIndex(args, 1);
  4040. p_uuid = player.getUuid(p_name);
  4041. if(p_uuid == null) {
  4042. msg.prefix(player, prefix_plot, "This player has never been online.");
  4043. goto("wait");
  4044. }
  4045. p_name = player.getName(p_uuid);
  4046. location = entity.getLocation(player);
  4047. world = loc.getWorld(location);
  4048. if(size == 2) {
  4049. plot_list = plot.get(location);
  4050. amount = list.getSize(plot_list);
  4051. if(amount == 0) {
  4052. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4053. goto("wait");
  4054. }
  4055. plot = list.getIndex(plot_list, 0);
  4056. if(amount > 1) {
  4057. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4058. for(i = 0; i < amount; i++) {
  4059. plot = list.getIndex(plot_list, i);
  4060. plot_id = plot.getId(plot);
  4061. 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)));
  4062. }
  4063. goto("wait");
  4064. }
  4065. } else {
  4066. if(size != 3) {
  4067. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4068. goto("wait");
  4069. }
  4070. plot_id = list.getIndex(args, 2);
  4071. plot = plot.getFromId(plot_id, world);
  4072. if(plot == null) {
  4073. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4074. goto("wait");
  4075. }
  4076. }
  4077. player_id = player.getId(player);
  4078. if(!perm.has(player, "plot.other")) {
  4079. if(!world.canUsePlots(world)) {
  4080. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4081. goto("wait");
  4082. }
  4083. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4084. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4085. goto("wait");
  4086. }
  4087. }
  4088. p_id = player.getId(p_uuid);
  4089. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  4090. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  4091. goto("wait");
  4092. }
  4093. if(plot.canOpenChests(plot, p_id)) {
  4094. msg.prefix(player, prefix_plot, "This player already can open chests.");
  4095. goto("wait");
  4096. }
  4097. plot.setChest(plot, p_id);
  4098. msg.prefix(player, prefix_plot, concat(p_name, " can now open chests."));
  4099. goto("wait");
  4100. }
  4101. if(arg0 == "degrade") {
  4102. if(size < 2) {
  4103. msg.prefix(player, prefix_commands, "/plot degrade <player> [plot_id]");
  4104. goto("wait");
  4105. }
  4106. p_name = list.getIndex(args, 1);
  4107. p_uuid = player.getUuid(p_name);
  4108. if(p_uuid == null) {
  4109. msg.prefix(player, prefix_plot, "This player has never been online.");
  4110. goto("wait");
  4111. }
  4112. p_name = player.getName(p_uuid);
  4113. location = entity.getLocation(player);
  4114. world = loc.getWorld(location);
  4115. if(size == 2) {
  4116. plot_list = plot.get(location);
  4117. amount = list.getSize(plot_list);
  4118. if(amount == 0) {
  4119. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4120. goto("wait");
  4121. }
  4122. plot = list.getIndex(plot_list, 0);
  4123. if(amount > 1) {
  4124. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4125. for(i = 0; i < amount; i++) {
  4126. plot = list.getIndex(plot_list, i);
  4127. plot_id = plot.getId(plot);
  4128. msg(player, text.click(" [§cSelect§r] ", concat("/plot degrade ", p_name, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  4129. }
  4130. goto("wait");
  4131. }
  4132. } else {
  4133. if(size != 3) {
  4134. msg.prefix(player, prefix_commands, "/plot degrade <player> [plot_id]");
  4135. goto("wait");
  4136. }
  4137. plot_id = list.getIndex(args, 2);
  4138. plot = plot.getFromId(plot_id, world);
  4139. if(plot == null) {
  4140. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4141. goto("wait");
  4142. }
  4143. }
  4144. player_id = player.getId(player);
  4145. if(!perm.has(player, "plot.other")) {
  4146. if(!world.canUsePlots(world)) {
  4147. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4148. goto("wait");
  4149. }
  4150. if(!plot.isLeader(plot, player_id)) {
  4151. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4152. goto("wait");
  4153. }
  4154. }
  4155. p_id = player.getId(p_uuid);
  4156. if(plot.isMod(plot, p_id)) {
  4157. plot.removeRank(plot, p_id);
  4158. msg.prefix(player, prefix_plot, concat(p_name, " is no longer a plot mod."));
  4159. goto("wait");
  4160. }
  4161. if(plot.canOpenChests(plot, p_id)) {
  4162. plot.removeRank(plot, p_id);
  4163. msg.prefix(player, prefix_plot, concat(p_name, " can no longer open chests."));
  4164. goto("wait");
  4165. }
  4166. msg.prefix(player, prefix_plot, "This player is not a plot mod or can't open chests.");
  4167. goto("wait");
  4168. }
  4169. if(arg0 == "remove") {
  4170. location = entity.getLocation(player);
  4171. world = loc.getWorld(location);
  4172. if(size == 1) {
  4173. plot_list = plot.get(location);
  4174. amount = list.getSize(plot_list);
  4175. if(amount == 0) {
  4176. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4177. goto("wait");
  4178. }
  4179. plot = list.getIndex(plot_list, 0);
  4180. if(amount > 1) {
  4181. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4182. for(i = 0; i < amount; i++) {
  4183. plot = list.getIndex(plot_list, i);
  4184. plot_id = plot.getId(plot);
  4185. 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)));
  4186. }
  4187. goto("wait");
  4188. }
  4189. } else {
  4190. if(size != 2) {
  4191. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  4192. goto("wait");
  4193. }
  4194. plot_id = list.getIndex(args, 1);
  4195. plot = plot.getFromId(plot_id, world);
  4196. if(plot == null) {
  4197. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4198. goto("wait");
  4199. }
  4200. }
  4201. if(!perm.has(player, "plot.other")) {
  4202. if(!world.canUsePlots(world)) {
  4203. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4204. goto("wait");
  4205. }
  4206. player_id = player.getId(player);
  4207. if(!plot.isLeader(plot, player_id)) {
  4208. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4209. goto("wait");
  4210. }
  4211. }
  4212. if(plot.isCity(plot)) {
  4213. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  4214. iter = list.iterator(plot_list);
  4215. while(hasNext(iter)) {
  4216. sub_plot = next(iter);
  4217. plot.removeAllPlayers(sub_plot);
  4218. plot.remove(sub_plot, world);
  4219. }
  4220. }
  4221. plot.removeAllPlayers(plot);
  4222. plot.delMoveEvent(plot);
  4223. plot.remove(plot, world);
  4224. msg.prefix(player, prefix_plot, concat("Plot removed. #", text.number(plot.getId(plot)), " §6", plot.getName(plot)));
  4225. goto("wait");
  4226. }
  4227. if(arg0 == "expand") {
  4228. if(size < 2) {
  4229. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  4230. goto("wait");
  4231. }
  4232. location = entity.getLocation(player);
  4233. world = loc.getWorld(location);
  4234. anzahl = list.getIndex(args, 1);
  4235. if(!isDouble(anzahl) || anzahl < 0) {
  4236. msg.prefix(player, prefix_plot, "Positive number expected.");
  4237. goto("wait");
  4238. }
  4239. if(size == 2) {
  4240. yaw = loc.getYaw(location);
  4241. direction = getDirection(yaw);
  4242. if(direction == null) {
  4243. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  4244. goto("wait");
  4245. }
  4246. plot_list = plot.get(location);
  4247. amount = list.getSize(plot_list);
  4248. if(amount == 0) {
  4249. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4250. goto("wait");
  4251. }
  4252. plot = list.getIndex(plot_list, 0);
  4253. if(amount > 1) {
  4254. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4255. for(i = 0; i < amount; i++) {
  4256. plot = list.getIndex(plot_list, i);
  4257. plot_id = plot.getId(plot);
  4258. 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)));
  4259. }
  4260. goto("wait");
  4261. }
  4262. } else {
  4263. if(size != 4) {
  4264. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  4265. goto("wait");
  4266. }
  4267. direction = text.toLowerCase(list.getIndex(args, 2));
  4268. plot_id = list.getIndex(args, 3);
  4269. plot = plot.getFromId(plot_id, world);
  4270. if(plot == null) {
  4271. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4272. goto("wait");
  4273. }
  4274. }
  4275. if(plot.isSub(plot)) {
  4276. msg.prefix(player, prefix_plot, "Sub plots can't be expanded.");
  4277. goto("wait");
  4278. }
  4279. x1 = plot.getMinX(plot);
  4280. y1 = plot.getMinY(plot);
  4281. z1 = plot.getMinZ(plot);
  4282. x2 = plot.getMaxX(plot);
  4283. y2 = plot.getMaxY(plot);
  4284. z2 = plot.getMaxZ(plot);
  4285. if(direction == "east") {
  4286. old_x2 = x2;
  4287. x2 += anzahl;
  4288. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  4289. } elseif(direction == "south") {
  4290. old_z2 = z2;
  4291. z2 += anzahl;
  4292. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  4293. } elseif(direction == "west") {
  4294. old_x1 = x1;
  4295. x1 -= anzahl;
  4296. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  4297. } elseif(direction == "north") {
  4298. old_z1 = z1;
  4299. z1 -= anzahl;
  4300. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  4301. } else {
  4302. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  4303. goto("wait");
  4304. }
  4305. if(!perm.has(player, "plot.other")) {
  4306. if(list.getSize(list) > 0) {
  4307. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  4308. goto("wait");
  4309. }
  4310. if(!world.canUsePlots(world)) {
  4311. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4312. goto("wait");
  4313. }
  4314. player_id = player.getId(player);
  4315. if(!plot.isLeader(plot, player_id)) {
  4316. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4317. goto("wait");
  4318. }
  4319. //Calc costs
  4320. length = math.abs(x1 - x2) + 1;
  4321. width = math.abs(z1 - z2) + 1;
  4322. snuvis = plot.calcCost(world, length, width);
  4323. if(!hasEnoughMoney(player, snuvis)) {
  4324. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4325. goto("wait");
  4326. }
  4327. subMoney(player, snuvis);
  4328. expand_message = concat("The plot has been expanded. Spent §6", text.number(snuvis), "§r snuvis.");
  4329. if(!player.hasBigPlotCreated(player)) {
  4330. plot_size = length * width;
  4331. if(plot_size >= 900) {
  4332. offerRank(player, "rank.colonizer");
  4333. player.setBigPlotCreated(player, true);
  4334. }
  4335. }
  4336. } else {
  4337. expand_message = concat("The plot has been expanded.");
  4338. }
  4339. //Expand plot
  4340. gs_edge1 = loc.new(world, x1, y1, z1);
  4341. gs_edge2 = loc.new(world, x2, y2, z2);
  4342. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  4343. plot.delMoveEvent(plot);
  4344. plot.setMoveEvent(new_plot, world);
  4345. msg.prefix(player, prefix_plot, expand_message);
  4346. goto("wait");
  4347. }
  4348. if(arg0 == "share") {
  4349. if(size < 2) {
  4350. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  4351. goto("wait");
  4352. }
  4353. p_name = list.getIndex(args, 1);
  4354. p_uuid = player.getUuid(p_name);
  4355. if(p_uuid == null) {
  4356. msg.prefix(player, prefix_plot, "This player has never been online.");
  4357. goto("wait");
  4358. }
  4359. p_name = player.getName(p_uuid);
  4360. location = entity.getLocation(player);
  4361. world = loc.getWorld(location);
  4362. if(size == 2) {
  4363. plot_list = plot.get(location);
  4364. amount = list.getSize(plot_list);
  4365. if(amount == 0) {
  4366. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4367. goto("wait");
  4368. }
  4369. plot = list.getIndex(plot_list, 0);
  4370. if(amount > 1) {
  4371. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4372. for(i = 0; i < amount; i++) {
  4373. plot = list.getIndex(plot_list, i);
  4374. plot_id = plot.getId(plot);
  4375. 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)));
  4376. }
  4377. goto("wait");
  4378. }
  4379. } else {
  4380. if(size != 3) {
  4381. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  4382. goto("wait");
  4383. }
  4384. plot_id = list.getIndex(args, 2);
  4385. plot = plot.getFromId(plot_id, world);
  4386. if(plot == null) {
  4387. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4388. goto("wait");
  4389. }
  4390. }
  4391. if(!perm.has(player, "plot.other")) {
  4392. if(!world.canUsePlots(world)) {
  4393. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4394. goto("wait");
  4395. }
  4396. player_id = player.getId(player);
  4397. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4398. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4399. goto("wait");
  4400. }
  4401. }
  4402. plot.addPlayer(plot, p_name);
  4403. msg.prefix(player, prefix_plot, concat(p_name, " added to the plot."));
  4404. goto("wait");
  4405. }
  4406. if(arg0 == "kick") {
  4407. if(size < 2) {
  4408. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  4409. goto("wait");
  4410. }
  4411. p_name = list.getIndex(args, 1);
  4412. p_uuid = player.getUuid(p_name);
  4413. if(p_uuid == null) {
  4414. msg.prefix(player, prefix_plot, "This player has never been online.");
  4415. goto("wait");
  4416. }
  4417. p_name = player.getName(p_uuid);
  4418. location = entity.getLocation(player);
  4419. world = loc.getWorld(location);
  4420. if(size == 2) {
  4421. plot_list = plot.get(location);
  4422. amount = list.getSize(plot_list);
  4423. if(amount == 0) {
  4424. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4425. goto("wait");
  4426. }
  4427. plot = list.getIndex(plot_list, 0);
  4428. if(amount > 1) {
  4429. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4430. for(i = 0; i < amount; i++) {
  4431. plot = list.getIndex(plot_list, i);
  4432. plot_id = plot.getId(plot);
  4433. 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)));
  4434. }
  4435. goto("wait");
  4436. }
  4437. } else {
  4438. if(size != 3) {
  4439. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  4440. goto("wait");
  4441. }
  4442. plot_id = list.getIndex(args, 2);
  4443. plot = plot.getFromId(plot_id, world);
  4444. if(plot == null) {
  4445. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4446. goto("wait");
  4447. }
  4448. }
  4449. if(!perm.has(player, "plot.other")) {
  4450. if(!world.canUsePlots(world)) {
  4451. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4452. goto("wait");
  4453. }
  4454. player_id = player.getId(player);
  4455. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4456. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4457. goto("wait");
  4458. }
  4459. if(player_name == p_name) {
  4460. msg.prefix(player, prefix_plot, "You can't kick yourself.");
  4461. goto("wait");
  4462. }
  4463. p_id = player.getId(p_uuid);
  4464. if(plot.isLeader(plot, p_id)) {
  4465. msg.prefix(player, prefix_plot, "You can't kick the plot-leader.");
  4466. goto("wait");
  4467. }
  4468. }
  4469. plot.removePlayer(plot, p_name);
  4470. msg.prefix(player, prefix_plot, concat(p_name, " removed from this plot."));
  4471. goto("wait");
  4472. }
  4473. if(arg0 == "name") {
  4474. if(size < 2) {
  4475. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  4476. goto("wait");
  4477. }
  4478. location = entity.getLocation(player);
  4479. world = loc.getWorld(location);
  4480. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  4481. if(size == 2) {
  4482. plot_list = plot.get(location);
  4483. amount = list.getSize(plot_list);
  4484. if(amount == 0) {
  4485. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4486. goto("wait");
  4487. }
  4488. plot = list.getIndex(plot_list, 0);
  4489. name = list.getIndex(args, 1);
  4490. if(amount > 1) {
  4491. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4492. for(i = 0; i < amount; i++) {
  4493. plot = list.getIndex(plot_list, i);
  4494. plot_id = plot.getId(plot);
  4495. 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)));
  4496. }
  4497. goto("wait");
  4498. }
  4499. }
  4500. if(size > 2) {
  4501. plot_id = list.getIndex(args, 1);
  4502. if(isDouble(plot_id)) {
  4503. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  4504. plot = plot.getFromId(plot_id, world);
  4505. if(plot == null) {
  4506. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4507. goto("wait");
  4508. }
  4509. name = text.concatList(args, " ", 2, size - 1);
  4510. } else {
  4511. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  4512. name = text.concatList(args, " ", 1, size - 1);
  4513. plot_list = plot.get(location);
  4514. amount = list.getSize(plot_list);
  4515. if(amount == 0) {
  4516. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4517. goto("wait");
  4518. }
  4519. plot = list.getIndex(plot_list, 0);
  4520. if(amount > 1) {
  4521. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4522. for(i = 0; i < amount; i++) {
  4523. plot = list.getIndex(plot_list, i);
  4524. plot_id = plot.getId(plot);
  4525. 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)));
  4526. }
  4527. goto("wait");
  4528. }
  4529. }
  4530. }
  4531. if(!perm.has(player, "plot.other")) {
  4532. if(!world.canUsePlots(world)) {
  4533. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4534. goto("wait");
  4535. }
  4536. player_id = player.getId(player);
  4537. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4538. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4539. goto("wait");
  4540. }
  4541. }
  4542. plot.setName(plot, name);
  4543. msg.prefix(player, prefix_plot, concat("Plot renamed to ", name, "."));
  4544. goto("wait");
  4545. }
  4546. if(arg0 == "create" || arg0 == "create3d") {
  4547. player_id = player.getId(player);
  4548. loc1 = map.get(plotpos1, player_id);
  4549. loc2 = map.get(plotpos2, player_id);
  4550. if(loc1 == null || loc2 == null) {
  4551. msg.prefix(player, prefix_plot, "No corner points set.");
  4552. goto("wait");
  4553. }
  4554. world1 = loc.getWorld(loc1);
  4555. if(world1 != loc.getWorld(loc2)) {
  4556. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  4557. goto("wait");
  4558. }
  4559. x1 = loc.getX(loc1);
  4560. y1 = loc.getY(loc1);
  4561. z1 = loc.getZ(loc1);
  4562. x2 = loc.getX(loc2);
  4563. y2 = loc.getY(loc2);
  4564. z2 = loc.getZ(loc2);
  4565. if(arg0 == "create") {
  4566. loc.setY(loc1, 0);
  4567. loc.setY(loc2, 255);
  4568. }
  4569. create_message = "Plot created.";
  4570. sub_plot = false;
  4571. if(!perm.has(player, "plot.other")) {
  4572. world_name = world.getName(world1);
  4573. if(!world.canUsePlots(world1)) {
  4574. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  4575. goto("wait");
  4576. }
  4577. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  4578. if(list.getSize(list) > 0) {
  4579. city_plot = list.getIndex(list, 0);
  4580. if(plot.isCity(city_plot)) {
  4581. city_id = plot.getId(city_plot);
  4582. if(!loc.hasPlotId(loc1, city_id)) {
  4583. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  4584. goto("wait");
  4585. }
  4586. if(!loc.hasPlotId(loc2, city_id)) {
  4587. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  4588. goto("wait");
  4589. }
  4590. sub_plot = true;
  4591. } else {
  4592. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  4593. goto("wait");
  4594. }
  4595. }
  4596. if(!sub_plot) {
  4597. //Calc costs
  4598. length = math.abs(x1 - x2) + 1;
  4599. width = math.abs(z1 - z2) + 1;
  4600. if(length < 3 || width < 3) {
  4601. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  4602. goto("wait");
  4603. }
  4604. snuvis = plot.calcCost(world1, length, width);
  4605. free_plot_used = player.usedHisFreePlot(player_id);
  4606. if(!free_plot_used && world_name != "creative") {
  4607. snuvis -= plot.calcCost(world1, 16, 16);
  4608. if(snuvis < 0) {
  4609. snuvis = 0;
  4610. }
  4611. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  4612. }
  4613. if(!hasEnoughMoney(player, snuvis)) {
  4614. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4615. goto("wait");
  4616. }
  4617. create_message = concat("Plot created. Spent §6", text.number(snuvis), "§r snuvis.");
  4618. subMoney(player, snuvis);
  4619. if(!free_plot_used && world_name != "creative") {
  4620. player.setUsedFreePlot(player_id, true);
  4621. offerRank(player, "rank.settler");
  4622. }
  4623. if(!player.hasBigPlotCreated(player)) {
  4624. plot_size = length * width;
  4625. if(plot_size >= 900) {
  4626. offerRank(player, "rank.colonizer");
  4627. player.setBigPlotCreated(player, true);
  4628. }
  4629. }
  4630. }
  4631. }
  4632. //Create plot
  4633. map.remove(plotpos1, player_id);
  4634. map.remove(plotpos2, player_id);
  4635. plot = plot.add(loc1, loc2);
  4636. if(sub_plot) {
  4637. plot.setSub(plot, true);
  4638. }
  4639. plot.setMoveEvent(plot, world1);
  4640. plot.setName(plot, concat(player_name, "'s plot"));
  4641. plot.addPlayer(plot, player_name);
  4642. plot.setLeader(plot, player_id);
  4643. msg.prefix(player, prefix_plot, create_message);
  4644. goto("wait");
  4645. }
  4646. if(arg0 == "pos1" || arg0 == "pos2") {
  4647. loc = entity.getLocation(player);
  4648. loc = getBlockLocation(loc);
  4649. player_id = player.getId(player);
  4650. if(arg0 == "pos1") {
  4651. map.add(plotpos1, player_id, loc);
  4652. pos_string = "Pos1";
  4653. } elseif(arg0 == "pos2") {
  4654. map.add(plotpos2, player_id, loc);
  4655. pos_string = "Pos2";
  4656. }
  4657. x = text.number(loc.getX(loc));
  4658. y = text.number(loc.getY(loc));
  4659. z = text.number(loc.getZ(loc));
  4660. msg.prefix(player, prefix_plot, concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  4661. loc1 = map.get(plotpos1, player_id);
  4662. loc2 = map.get(plotpos2, player_id);
  4663. if(loc1 != null && loc2 != null) {
  4664. world1 = loc.getWorld(loc1);
  4665. snuvis = plot.calcCost(world1, loc1, loc2);
  4666. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  4667. snuvis -= plot.calcCost(world1, 16, 16);
  4668. if(snuvis < 0) {
  4669. snuvis = 0;
  4670. }
  4671. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  4672. }
  4673. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  4674. snuvis = 0;
  4675. }
  4676. msg.prefix(player, prefix_plot, concat("This plot will cost §6", text.number(snuvis), "§r snuvis."));
  4677. }
  4678. goto("wait");
  4679. }
  4680. if(arg0 == "flags") {
  4681. if(!perm.has(player, "plot.moreinfo")) {
  4682. perm.no(player, "plot.moreinfo");
  4683. goto("wait");
  4684. }
  4685. if(size < 3 || size > 4) {
  4686. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  4687. goto("wait");
  4688. }
  4689. flags = list.getIndex(args, 1);
  4690. if(!isDouble(flags) || flags < 0) {
  4691. msg.prefix(player, prefix_commands, "Positive number expected.");
  4692. goto("wait");
  4693. }
  4694. boolean = list.getIndex(args, 2);
  4695. if(!(boolean == true || boolean == false)) {
  4696. msg.prefix(player, prefix_commands, "Boolean expected.");
  4697. goto("wait");
  4698. }
  4699. location = entity.getLocation(player);
  4700. world = loc.getWorld(location);
  4701. if(size == 3) {
  4702. plot_list = plot.get(location);
  4703. amount = list.getSize(plot_list);
  4704. if(amount == 0) {
  4705. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4706. goto("wait");
  4707. }
  4708. plot = list.getIndex(plot_list, 0);
  4709. if(amount > 1) {
  4710. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4711. for(i = 0; i < amount; i++) {
  4712. plot = list.getIndex(plot_list, i);
  4713. plot_id = plot.getId(plot);
  4714. x = loc.getX(location);
  4715. y = loc.getY(location);
  4716. z = loc.getZ(location);
  4717. 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)));
  4718. }
  4719. goto("wait");
  4720. }
  4721. } else {
  4722. plot_id = list.getIndex(args, 3);
  4723. plot = plot.getFromId(plot_id, world);
  4724. if(plot == null) {
  4725. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4726. goto("wait");
  4727. }
  4728. }
  4729. flags_list = list.new();
  4730. temp_flags = 0;
  4731. if(flags >= 512) {
  4732. list.add(flags_list, "SUB_PLOT_FLAG");
  4733. temp_flags += 512;
  4734. }
  4735. if(flags >= 256) {
  4736. list.add(flags_list, "FREE_FLAG");
  4737. temp_flags += 256;
  4738. }
  4739. if(flags >= 128) {
  4740. list.add(flags_list, "CITY_FLAG");
  4741. temp_flags += 128;
  4742. }
  4743. if(flags >= 64) {
  4744. list.add(flags_list, "EXPLOSION_FLAG");
  4745. temp_flags += 64;
  4746. }
  4747. if(flags >= 32) {
  4748. list.add(flags_list, "ENTITY_INTERACT_FLAG");
  4749. temp_flags += 32;
  4750. }
  4751. if(flags >= 16) {
  4752. list.add(flags_list, "BLOCK_INTERACT_FLAG");
  4753. temp_flags += 16;
  4754. }
  4755. if(flags >= 8) {
  4756. list.add(flags_list, "HIT_AMBIENT_FLAG");
  4757. temp_flags += 8;
  4758. }
  4759. if(flags >= 4) {
  4760. list.add(flags_list, "BUCKET_FLAG");
  4761. temp_flags += 4;
  4762. }
  4763. if(flags >= 2) {
  4764. list.add(flags_list, "BREAK_FLAG");
  4765. temp_flags += 2;
  4766. }
  4767. if(flags >= 1) {
  4768. list.add(flags_list, "PLACE_FLAG");
  4769. temp_flags += 1;
  4770. }
  4771. plot.setFlags(plot, flags, boolean);
  4772. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  4773. goto("wait");
  4774. }
  4775. if(arg0 == "list") {
  4776. if(size == 1) {
  4777. p_name = player.getName(player);
  4778. } else {
  4779. if(!perm.has(player, "plot.moreinfo")) {
  4780. perm.no(player, "plot.moreinfo");
  4781. goto("wait");
  4782. }
  4783. p_name = list.getIndex(args, 1);
  4784. }
  4785. p_uuid = player.getUuid(p_name);
  4786. if(p_uuid == null) {
  4787. msg.prefix(player, prefix_plot, "This player has never been online.");
  4788. goto("wait");
  4789. }
  4790. p_name = player.getName(p_uuid);
  4791. msg.prefix(player, prefix_commands, concat(p_name, "'s plots:"));
  4792. world = loc.getWorld(entity.getLocation(player));
  4793. iter = plot.iterator(world, p_uuid);
  4794. while(hasNext(iter)) {
  4795. plot = next(iter);
  4796. msg(player, concat(" - #", text.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  4797. }
  4798. goto("wait");
  4799. }
  4800. if(arg0 == "listall") {
  4801. if(!perm.has(player, "plot.moreinfo")) {
  4802. perm.no(player, "plot.moreinfo");
  4803. goto("wait");
  4804. }
  4805. if(size != 1) {
  4806. msg.prefix(player, prefix_commands, "/plot listall");
  4807. goto("wait");
  4808. }
  4809. world = loc.getWorld(entity.getLocation(player));
  4810. msg.prefix(player, prefix_commands, concat("All plots in this world: ", world.getName(world)));
  4811. iterator = plot.iterator(world);
  4812. while(hasNext(iterator)) {
  4813. plot = next(iterator);
  4814. plot_id = plot.getId(plot);
  4815. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  4816. }
  4817. goto("wait");
  4818. }
  4819. if(arg0 == "moreinfo" || arg0 == "mi") {
  4820. if(!perm.has(player, "plot.moreinfo")) {
  4821. perm.no(player, "plot.moreinfo");
  4822. goto("wait");
  4823. }
  4824. location = entity.getLocation(player);
  4825. world = loc.getWorld(location);
  4826. if(size == 1) {
  4827. plot_list = plot.get(location);
  4828. amount = list.getSize(plot_list);
  4829. if(amount == 0) {
  4830. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4831. goto("wait");
  4832. }
  4833. plot = list.getIndex(plot_list, 0);
  4834. if(amount > 1) {
  4835. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4836. for(i = 0; i < amount; i++) {
  4837. plot = list.getIndex(plot_list, i);
  4838. plot_id = plot.getId(plot);
  4839. msg(player, text.click(" [§cSelect§r] ", concat("/plot moreinfo ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  4840. }
  4841. goto("wait");
  4842. }
  4843. } else {
  4844. if(size != 2) {
  4845. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  4846. goto("wait");
  4847. }
  4848. plot_id = list.getIndex(args, 1);
  4849. plot = plot.getFromId(plot_id, world);
  4850. if(plot == null) {
  4851. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4852. goto("wait");
  4853. }
  4854. }
  4855. owners = "";
  4856. owners_list = plot.getOwners(plot);
  4857. for(i = 0; i < list.getSize(owners_list); i++) {
  4858. owners = concat(owners, "/", player.getName(list.getIndex(owners_list, i)));
  4859. }
  4860. plot_id = plot.getId(plot);
  4861. msg.prefix(player, prefix_plot, concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", owners));
  4862. msg(player, " §dWorld: §r", world.getName(world));
  4863. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  4864. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  4865. if(leader == "") {
  4866. leader = "-";
  4867. }
  4868. msg(player, " §dLeader: §r", leader);
  4869. mods_list = plot.getMods(plot);
  4870. mods_amount = list.getSize(mods_list);
  4871. if(mods_amount == 0) {
  4872. mods_string = "-";
  4873. } else {
  4874. iter = list.iterator(mods_list);
  4875. mods_string = "";
  4876. while(hasNext(iter)) {
  4877. p_name = player.getNameFromId(next(iter));
  4878. if(mods_string == "") {
  4879. mods_string = p_name;
  4880. } else {
  4881. mods_string = concat(mods_string, " / ", p_name);
  4882. }
  4883. }
  4884. }
  4885. msg(player, " §dMods: §r", mods_string);
  4886. chests_list = plot.getChestRanks(plot);
  4887. chests_amount = list.getSize(chests_list);
  4888. if(chests_amount == 0) {
  4889. chests_string = "-";
  4890. } else {
  4891. iter = list.iterator(chests_list);
  4892. chests_string = "";
  4893. while(hasNext(iter)) {
  4894. p_name = player.getNameFromId(next(iter));
  4895. if(chests_string == "") {
  4896. chests_string = p_name;
  4897. } else {
  4898. chests_string = concat(chests_string, " / ", p_name);
  4899. }
  4900. }
  4901. }
  4902. msg(player, " §dChest: §r", chests_string);
  4903. flags = plot.getFlags(plot);
  4904. flags_true = list.new();
  4905. flags_false = list.new();
  4906. array = array.new(2);
  4907. array[0] = 512;
  4908. array[1] = "SUB_PLOT_FLAG";
  4909. if(flags >= 512) {
  4910. list.add(flags_true, array);
  4911. flags -= 512;
  4912. } else {
  4913. list.add(flags_false, array);
  4914. }
  4915. array = array.new(2);
  4916. array[0] = 256;
  4917. array[1] = "FREE_FLAG";
  4918. if(flags >= 256) {
  4919. list.add(flags_true, array);
  4920. flags -= 256;
  4921. } else {
  4922. list.add(flags_false, array);
  4923. }
  4924. array = array.new(2);
  4925. array[0] = 128;
  4926. array[1] = "CITY_FLAG";
  4927. if(flags >= 128) {
  4928. list.add(flags_true, array);
  4929. flags -= 128;
  4930. } else {
  4931. list.add(flags_false, array);
  4932. }
  4933. array = array.new(2);
  4934. array[0] = 64;
  4935. array[1] = "EXPLOSION_FLAG";
  4936. if(flags >= 64) {
  4937. list.add(flags_true, array);
  4938. flags -= 64;
  4939. } else {
  4940. list.add(flags_false, array);
  4941. }
  4942. array = array.new(2);
  4943. array[0] = 32;
  4944. array[1] = "ENTITY_INTERACT_FLAG";
  4945. if(flags >= 32) {
  4946. list.add(flags_true, array);
  4947. flags -= 32;
  4948. } else {
  4949. list.add(flags_false, array);
  4950. }
  4951. array = array.new(2);
  4952. array[0] = 16;
  4953. array[1] = "BLOCK_INTERACT_FLAG";
  4954. if(flags >= 16) {
  4955. list.add(flags_true, array);
  4956. flags -= 16;
  4957. } else {
  4958. list.add(flags_false, array);
  4959. }
  4960. array = array.new(2);
  4961. array[0] = 8;
  4962. array[1] = "HIT_AMBIENT_FLAG";
  4963. if(flags >= 8) {
  4964. list.add(flags_true, array);
  4965. flags -= 8;
  4966. } else {
  4967. list.add(flags_false, array);
  4968. }
  4969. array = array.new(2);
  4970. array[0] = 4;
  4971. array[1] = "BUCKET_FLAG";
  4972. if(flags >= 4) {
  4973. list.add(flags_true, array);
  4974. flags -= 4;
  4975. } else {
  4976. list.add(flags_false, array);
  4977. }
  4978. array = array.new(2);
  4979. array[0] = 2;
  4980. array[1] = "BREAK_FLAG";
  4981. if(flags >= 2) {
  4982. list.add(flags_true, array);
  4983. flags -= 2;
  4984. } else {
  4985. list.add(flags_false, array);
  4986. }
  4987. array = array.new(2);
  4988. array[0] = 1;
  4989. array[1] = "PLACE_FLAG";
  4990. if(flags >= 1) {
  4991. list.add(flags_true, array);
  4992. } else {
  4993. list.add(flags_false, array);
  4994. }
  4995. x = loc.getX(location);
  4996. y = loc.getY(location);
  4997. z = loc.getZ(location);
  4998. msg(player, " §dFlags true:");
  4999. iter = list.iterator(flags_true);
  5000. while(hasNext(iter)) {
  5001. array = next(iter);
  5002. flag_number = array[0];
  5003. flag_name = array[1];
  5004. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " false ", plot_id)));
  5005. }
  5006. msg(player, " §dFlags false:");
  5007. iter = list.iterator(flags_false);
  5008. while(hasNext(iter)) {
  5009. array = next(iter);
  5010. flag_number = array[0];
  5011. flag_name = array[1];
  5012. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " true ", plot_id)));
  5013. }
  5014. goto("wait");
  5015. }
  5016. if(arg0 == "info" || arg0 == "i") {
  5017. location = entity.getLocation(player);
  5018. list = plot.get(location);
  5019. world = loc.getWorld(location);
  5020. size = list.getSize(list);
  5021. if(size == 0) {
  5022. msg.prefix(player, prefix_plot, "No plots found.");
  5023. goto("wait");
  5024. }
  5025. if(size == 1) {
  5026. msg.prefix(player, prefix_plot, concat(text.number(size), " plot found:"));
  5027. } else {
  5028. msg.prefix(player, prefix_plot, concat(text.number(size), " plots found:"));
  5029. }
  5030. for(i = 0; i < size; i++) {
  5031. plot = list.getIndex(list, i);
  5032. plot_id = plot.getId(plot);
  5033. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5034. owners = "";
  5035. owners_list = plot.getOwners(plot);
  5036. for(h = 0; h < list.getSize(owners_list); h++) {
  5037. owners = concat(owners, "/", player.getName(list.getIndex(owners_list, h)));
  5038. }
  5039. plot_id = plot.getId(plot);
  5040. msg(player, " §dWorld: §r", world.getName(world));
  5041. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5042. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5043. leader = plot.getLeaderName(plot);
  5044. if(leader == "") {
  5045. leader = "-";
  5046. }
  5047. msg(player, " §dLeader: §r", leader);
  5048. mods_list = plot.getMods(plot);
  5049. mods_amount = list.getSize(mods_list);
  5050. if(mods_amount == 0) {
  5051. mods_string = "-";
  5052. } else {
  5053. iter = list.iterator(mods_list);
  5054. mods_string = "";
  5055. while(hasNext(iter)) {
  5056. p_name = player.getNameFromId(next(iter));
  5057. if(mods_string == "") {
  5058. mods_string = p_name;
  5059. } else {
  5060. mods_string = concat(mods_string, " / ", p_name);
  5061. }
  5062. }
  5063. }
  5064. msg(player, " §dMods: §r", mods_string);
  5065. chests_list = plot.getChestRanks(plot);
  5066. chests_amount = list.getSize(chests_list);
  5067. if(chests_amount == 0) {
  5068. chests_string = "-";
  5069. } else {
  5070. iter = list.iterator(chests_list);
  5071. chests_string = "";
  5072. while(hasNext(iter)) {
  5073. p_name = player.getNameFromId(next(iter));
  5074. if(chests_string == "") {
  5075. chests_string = p_name;
  5076. } else {
  5077. chests_string = concat(chests_string, " / ", p_name);
  5078. }
  5079. }
  5080. }
  5081. msg(player, " §dChest: §r", chests_string);
  5082. }
  5083. goto("wait");
  5084. }
  5085. goto("plothelp");
  5086. @stopadventure
  5087. removeAdventureDisplay(player);
  5088. player.setAdventure(player, false);
  5089. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  5090. goto("wait");
  5091. @speed
  5092. if(size < 1 || size > 2) {
  5093. if(perm.has(player, "speed.other")) {
  5094. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  5095. } else {
  5096. msg.prefix(player, prefix_commands, "/speed <1-10>");
  5097. }
  5098. goto("wait");
  5099. }
  5100. speed = list.getIndex(args, 0);
  5101. if(!isDouble(speed)) {
  5102. msg.prefix(player, prefix_commands, "Zahl erwartet.");
  5103. goto("wait");
  5104. }
  5105. if(speed < 1) {
  5106. speed = 1;
  5107. }
  5108. if(speed > 10) {
  5109. speed = 10;
  5110. }
  5111. if(size == 2) {
  5112. if(!perm.has(player, "speed.other")) {
  5113. perm.no(player, "speed.other");
  5114. goto("wait");
  5115. }
  5116. affectedname = list.getIndex(args, 1);
  5117. affectedplayer = read.player(affectedname);
  5118. if(affectedplayer == null) {
  5119. msg.prefix(player, prefix_commands, "This player is not online.");
  5120. goto("wait");
  5121. }
  5122. }
  5123. player.setSpeed(affectedplayer, speed);
  5124. msg.prefix(affectedplayer, prefix_commands, concat("Set your speed to ", text.number(speed), "."));
  5125. if(affectedplayer != player) {
  5126. affectedname = player.getName(affectedplayer);
  5127. msg.prefix(player, prefix_commands, concat(affectedname, " set your speed to ", text.number(speed), "."));
  5128. }
  5129. goto("wait");
  5130. @butcher
  5131. loc = entity.getLocation(player);
  5132. world = loc.getWorld(loc);
  5133. list = world.getEntities(world);
  5134. size = list.getSize(list);
  5135. killed = 0;
  5136. for(i = 0; i < size; i++) {
  5137. element = list.getIndex(list, i);
  5138. if(isLiving(element)) {
  5139. entity_type = entity.getType(element);
  5140. if(set.contains(butcher_set, entity_type)) {
  5141. entity.remove(element);
  5142. killed++;
  5143. }
  5144. }
  5145. }
  5146. msg.prefix(player, prefix_commands, concat(text.number(killed), " mobs killed."));
  5147. goto("wait");
  5148. @enderchest
  5149. if(size < 1 || size > 2) {
  5150. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  5151. goto("wait");
  5152. }
  5153. if(size == 1) {
  5154. from_name = list.getIndex(args, 0);
  5155. }
  5156. elseif(size == 2) {
  5157. affectedname = list.getIndex(args, 0);
  5158. from_name = list.getIndex(args, 1);
  5159. affectedplayer = read.player(affectedname);
  5160. if(affectedplayer == null) {
  5161. msg.prefix(player, prefix_commands, "This player is not online.");
  5162. goto("wait");
  5163. }
  5164. }
  5165. from_player = read.player(from_name);
  5166. if(from_player == null) {
  5167. msg.prefix(player, prefix_commands, "This player is not online.");
  5168. goto("wait");
  5169. }
  5170. player.openEnderchest(affectedplayer, from_player, concat("Enderchest von ", from_name));
  5171. goto("wait");
  5172. @gamemode
  5173. if(size < 1 || size > 2) {
  5174. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  5175. goto("wait");
  5176. }
  5177. if(size == 2) {
  5178. if(!perm.has(player, "gamemode.other")) {
  5179. perm.no(player, "gamemode.other");
  5180. goto("wait");
  5181. }
  5182. affectedname = list.getIndex(args, 1);
  5183. affectedplayer = read.player(affectedname);
  5184. if(affectedplayer == null) {
  5185. msg.prefix(player, prefix_commands, "This player is not online.");
  5186. goto("wait");
  5187. }
  5188. }
  5189. mode = list.getIndex(args, 0);
  5190. if(isDouble(mode)) {
  5191. mode = text.number(mode);
  5192. } else {
  5193. mode = text.toLowerCase(mode);
  5194. }
  5195. if(mode == "s" || mode == "0" || mode == "survival") {
  5196. mode = "survival";
  5197. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  5198. mode = "creative";
  5199. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  5200. mode = "adventure";
  5201. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  5202. mode = "spectator";
  5203. } else {
  5204. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  5205. goto("wait");
  5206. }
  5207. player.setGamemode(affectedplayer, mode);
  5208. if(affectedplayer != player) {
  5209. affectedname = player.getName(affectedplayer);
  5210. msg.prefix(player, prefix_commands, concat("Gamemode of ", affectedname, " set to ", mode, "."));
  5211. }
  5212. msg.prefix(affectedplayer, prefix_commands, concat("Set your gamemode to ", mode, "."));
  5213. goto("wait");
  5214. @home
  5215. if(size == 0) {
  5216. @homesyntax
  5217. msg.prefix(player, prefix_commands, "/home ...");
  5218. msg(player, "§6 - set <home> §rSets a home");
  5219. msg(player, "§6 - delete <home> §rDeletes a home");
  5220. if(perm.has(player, "home.other")) {
  5221. msg(player, "§6 - list [player] §rLists all homes");
  5222. msg(player, "§6 - <home> [player] §rTeleports to a home");
  5223. } else {
  5224. msg(player, "§6 - list §rLists your homes");
  5225. msg(player, "§6 - <home> §rTeleports to your home");
  5226. }
  5227. goto("wait");
  5228. }
  5229. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5230. if(arg0 == "del" || arg0 == "delete") {
  5231. if(size < 2) {
  5232. goto("homesyntax");
  5233. }
  5234. player_id = player.getId(player);
  5235. name = text.toLowerCase(list.getIndex(args, 1));
  5236. if(!home.exists(player_id, name)) {
  5237. msg.prefix(player, prefix_commands, concat("Home ", name, "doesn't exist."));
  5238. goto("wait");
  5239. }
  5240. home.delete(player_id, name);
  5241. msg.prefix(player, prefix_commands, concat("Home ", name, " deleted."));
  5242. goto("wait");
  5243. }
  5244. if(arg0 == "list") {
  5245. affecteduuid = player.getUuid(affectedname);
  5246. if(size == 2) {
  5247. if(!perm.has(player, "home.other")) {
  5248. perm.no(player, "home.other");
  5249. goto("wait");
  5250. }
  5251. affectedname = text.toLowerCase(list.getIndex(args, 1));
  5252. affecteduuid = player.getUuid(affectedname);
  5253. if(affecteduuid == null) {
  5254. msg.prefix(player, prefix_commands, "This player has never been online.");
  5255. goto("wait");
  5256. }
  5257. }
  5258. id = player.getId(affecteduuid);
  5259. homes_list = home.getList(id);
  5260. home_amount = list.getSize(homes_list);
  5261. if(home_amount == 0) {
  5262. msg.prefix(player, prefix_commands, "No homes existing.");
  5263. } else {
  5264. msg.prefix(player, prefix_commands, concat("Homes of ", affectedname, ":"));
  5265. for(i = 0; i < home_amount; i++) {
  5266. msg(player, concat("§6 - §r", list.getIndex(homes_list, i)));
  5267. }
  5268. }
  5269. goto("wait");
  5270. }
  5271. location = entity.getLocation(player);
  5272. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5273. if(!isSurvWorldName(world_name)) {
  5274. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  5275. goto("wait");
  5276. }
  5277. if(arg0 == "set") {
  5278. if(size < 2) {
  5279. goto("homesyntax");
  5280. }
  5281. player_id = player.getId(player);
  5282. homes_list = home.getList(player_id);
  5283. home_amount = list.getSize(homes_list);
  5284. if(perm.has(player, "isAdmin")) {
  5285. max_homes = 100;
  5286. } elseif(perm.has(player, "isMod")) {
  5287. max_homes = 40;
  5288. } elseif(perm.has(player, "isTeam")) {
  5289. max_homes = 20;
  5290. } elseif(perm.has(player, "canTP")) {
  5291. max_homes = 10;
  5292. } else {
  5293. max_homes = 5;
  5294. }
  5295. if(home_amount >= max_homes) {
  5296. msg.prefix(player, prefix_commands, concat("You can only set ", text.number(max_homes), " homes."));
  5297. goto("wait");
  5298. }
  5299. name = text.toLowerCase(list.getIndex(args, 1));
  5300. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  5301. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  5302. goto("wait");
  5303. }
  5304. if(!text.onlyletters(name)) {
  5305. msg.prefix(player, prefix_commands, "Only letters allowed.");
  5306. goto("wait");
  5307. }
  5308. if(text.length(name) > 20) {
  5309. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  5310. goto("wait");
  5311. }
  5312. if(home.exists(player_id, name)) {
  5313. msg.prefix(player, prefix_commands, concat("Home ", name, " already exists."));
  5314. goto("wait");
  5315. }
  5316. home.set(player_id, name, location);
  5317. msg.prefix(player, prefix_commands, concat("Home ", name, " set."));
  5318. goto("wait");
  5319. }
  5320. //Teleportation
  5321. if(size == 2) {
  5322. affectedname = text.toLowerCase(list.getIndex(args, 1));
  5323. }
  5324. affecteduuid = player.getUuid(affectedname);
  5325. if(affecteduuid == null) {
  5326. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  5327. goto("wait");
  5328. }
  5329. player_id = player.getID(affecteduuid);
  5330. location = home.getLocation(player_id, arg0);
  5331. if(location == null) {
  5332. msg.prefix(player, prefix_commands, "Home doesn't exist."); //oder die welt ist nicht geladen
  5333. goto("wait");
  5334. }
  5335. player.teleport(player, location, true);
  5336. goto("wait");
  5337. @tpa
  5338. if(size != 1) {
  5339. msg.prefix(player, prefix_commands, "/tpa <player>");
  5340. goto("wait");
  5341. }
  5342. p_name = list.getIndex(args, 0);
  5343. p_uuid = player.getUuid(p_name);
  5344. if(p_uuid == null) {
  5345. msg.prefix(player, prefix_commands, "This player has never been online.");
  5346. goto("wait");
  5347. }
  5348. p_name = player.getName(p_uuid);
  5349. p = read.player(p_name);
  5350. if(p == null) {
  5351. msg.prefix(player, prefix_commands, "This player is not online.");
  5352. goto("wait");
  5353. }
  5354. if(!player.doesAcceptTpaRequests(p)) {
  5355. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  5356. goto("wait");
  5357. }
  5358. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5359. if(isGamesWorldName(world_name)) {
  5360. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5361. goto("wait");
  5362. }
  5363. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5364. if(isGamesWorldName(world_name)) {
  5365. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5366. goto("wait");
  5367. }
  5368. addTpaRequest(player.getUuid(player), p_uuid);
  5369. msg(player, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  5370. msg(p, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccept ", player_name)));
  5371. goto("wait");
  5372. @tpahere
  5373. if(size != 1) {
  5374. msg.prefix(player, prefix_commands, "/tpahere <player>");
  5375. goto("wait");
  5376. }
  5377. p_name = list.getIndex(args, 0);
  5378. p_uuid = player.getUuid(p_name);
  5379. if(p_uuid == null) {
  5380. msg.prefix(player, prefix_commands, "This player has never been online.");
  5381. goto("wait");
  5382. }
  5383. p_name = player.getName(p_uuid);
  5384. p = read.player(p_name);
  5385. if(p == null) {
  5386. msg.prefix(player, prefix_commands, "This player is not online.");
  5387. goto("wait");
  5388. }
  5389. if(!player.doesAcceptTpaRequests(p)) {
  5390. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  5391. goto("wait");
  5392. }
  5393. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5394. if(isGamesWorldName(world_name)) {
  5395. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to this world."));
  5396. goto("wait");
  5397. }
  5398. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5399. if(isGamesWorldName(world_name)) {
  5400. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  5401. goto("wait");
  5402. }
  5403. addTpaRequest(p_uuid, player.getUuid(player));
  5404. msg(player, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  5405. msg(p, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccepthere ", player_name)));
  5406. goto("wait");
  5407. @tpaccept
  5408. if(size != 1) {
  5409. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  5410. goto("wait");
  5411. }
  5412. p_name = list.getIndex(args, 0);
  5413. p_uuid = player.getUuid(p_name);
  5414. if(p_uuid == null) {
  5415. msg.prefix(player, prefix_commands, "This player has never been online.");
  5416. goto("wait");
  5417. }
  5418. p_name = player.getName(p_uuid);
  5419. p = read.player(p_name);
  5420. if(p == null) {
  5421. msg.prefix(player, prefix_commands, "This player is not online.");
  5422. goto("wait");
  5423. }
  5424. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5425. if(isGamesWorldName(world_name)) {
  5426. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to your world."));
  5427. goto("wait");
  5428. }
  5429. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5430. if(isGamesWorldName(world_name)) {
  5431. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  5432. goto("wait");
  5433. }
  5434. player_uuid = player.getUuid(player);
  5435. if(!hasTpaRequest(p_uuid, player_uuid)) {
  5436. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  5437. goto("wait");
  5438. }
  5439. location = entity.getLocation(player);
  5440. player.teleport(p, location, true);
  5441. goto("wait");
  5442. @tpaccepthere
  5443. if(size != 1) {
  5444. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  5445. goto("wait");
  5446. }
  5447. p_name = list.getIndex(args, 0);
  5448. p_uuid = player.getUuid(p_name);
  5449. if(p_uuid == null) {
  5450. msg.prefix(player, prefix_commands, "This player has never been online.");
  5451. goto("wait");
  5452. }
  5453. p_name = player.getName(p_uuid);
  5454. p = read.player(p_name);
  5455. if(p == null) {
  5456. msg.prefix(player, prefix_commands, "This player is not online.");
  5457. goto("wait");
  5458. }
  5459. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5460. if(isGamesWorldName(world_name)) {
  5461. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5462. goto("wait");
  5463. }
  5464. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5465. if(isGamesWorldName(world_name)) {
  5466. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5467. goto("wait");
  5468. }
  5469. player_uuid = player.getUuid(player);
  5470. if(!hasTpaRequest(player_uuid, p_uuid)) {
  5471. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  5472. goto("wait");
  5473. }
  5474. location = entity.getLocation(p);
  5475. player.teleport(player, location, true);
  5476. goto("wait");
  5477. @teleport
  5478. if(size < 1 || size > 2) {
  5479. if(perm.has(player, "teleport.other")) {
  5480. msg.prefix(player, prefix_commands, "/teleport [player] <to-player>");
  5481. } else {
  5482. msg.prefix(player, prefix_commands, "/teleport <player>");
  5483. }
  5484. goto("wait");
  5485. }
  5486. if(size == 1) {
  5487. to_name = list.getIndex(args, 0);
  5488. }
  5489. elseif(size == 2) {
  5490. if(!perm.has(player, "teleport.other")) {
  5491. perm.no(player, "teleport.other");
  5492. goto("wait");
  5493. }
  5494. affectedname = list.getIndex(args, 0);
  5495. affectedplayer = read.player(affectedname);
  5496. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  5497. to_name = list.getIndex(args, 1);
  5498. if(affectedplayer == null) {
  5499. msg.prefix(player, prefix_commands, "This player is not online.");
  5500. goto("wait");
  5501. }
  5502. }
  5503. if(player.hasMinigame(affectedplayer)) {
  5504. if(size == 2) {
  5505. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  5506. } else {
  5507. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  5508. }
  5509. goto("wait");
  5510. }
  5511. to_player = read.player(to_name);
  5512. if(to_player == null) {
  5513. msg.prefix(player, prefix_commands, "This player is not online.");
  5514. goto("wait");
  5515. }
  5516. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  5517. to_name = player.getName(to_player);
  5518. location = entity.getLocation(to_player);
  5519. if(player.teleport(affectedplayer, location, true)) {
  5520. if(player != affectedplayer) {
  5521. affectedname = player.getName(affectedplayer);
  5522. msg.prefix(player, prefix_commands, concat("Teleported ", affectedname, " to ", to_name, "."));
  5523. }
  5524. msg.prefix(affectedplayer, prefix_commands, concat("Teleported you to ", to_name, "."));
  5525. }
  5526. goto("wait");
  5527. @say
  5528. if(size == 0) {
  5529. msg.prefix(sender, prefix_commands, "/say <text>");
  5530. goto("wait");
  5531. }
  5532. message = text.concatList(args, " ", 0, size - 1);
  5533. msg("online", text.hover("[§cServer§r]", "The center of Wusiness"), " ", text.replace(message, "&", "§"));
  5534. msg("SERVER", "[§cServer§r] ", text.replace(message, "&", "§"));
  5535. goto("wait");
  5536. @warp
  5537. if(size == 0) {
  5538. @warpsyntax
  5539. msg.prefix(player, prefix_commands, "/warp ...");
  5540. if(perm.has(player, "warp.create")) {
  5541. msg(player, "§6 - set [group] <warp> §rSets a warp");
  5542. msg(player, "§6 - delete [group] <warp> §rDeletes a warp");
  5543. msg(player, "§6 - [group] <warp> §rTeleports to a warp");
  5544. msg(player, "§6 - list [group] §rLists all warps");
  5545. msg(player, "§6 - groups §rLists all warp groups");
  5546. } else {
  5547. msg(player, "§6 - <warp> §rTeleports to a warp");
  5548. msg(player, "§6 - list §rLists all warps");
  5549. }
  5550. goto("wait");
  5551. }
  5552. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5553. if(arg0 == "delete") {
  5554. if(!perm.has(player, "warp.create")) {
  5555. perm.no(player, "warp.create");
  5556. goto("wait");
  5557. }
  5558. if(size < 2) {
  5559. goto("warpsyntax");
  5560. }
  5561. if(size == 2) {
  5562. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5563. warp_group = "default";
  5564. } else {
  5565. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5566. warp_name = text.toLowerCase(list.getIndex(args, 2));
  5567. }
  5568. if(warp.delete(warp_group, warp_name)) {
  5569. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " deleted."));
  5570. } else {
  5571. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  5572. }
  5573. goto("wait");
  5574. }
  5575. if(arg0 == "list") {
  5576. if(size == 1) {
  5577. warp_group = "default";
  5578. } else {
  5579. if(!perm.has(player, "warp.create")) {
  5580. perm.no(player, "warp.create");
  5581. goto("wait");
  5582. }
  5583. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5584. }
  5585. warps_list = warp.getList(warp_group);
  5586. if(list.getSize(warps_list) == 0) {
  5587. msg.prefix(player, prefix_commands, "No warps existing.");
  5588. } else {
  5589. msg.prefix(player, prefix_commands, concat("§6", warp_group, "§r warps:"));
  5590. for(i = 0; i < list.getSize(warps_list); i++) {
  5591. msg(player, concat("§6 - §r", list.getIndex(warps_list, i)));
  5592. }
  5593. }
  5594. goto("wait");
  5595. }
  5596. if(arg0 == "groups") {
  5597. if(!perm.has(player, "warp.create")) {
  5598. perm.no(player, "warp.create");
  5599. goto("wait");
  5600. }
  5601. groups_list = warp.getGroups();
  5602. msg.prefix(player, prefix_commands, "All warp groups:");
  5603. for(i = 0; i < list.getSize(groups_list); i++) {
  5604. msg(player, concat("§6 - §r", list.getIndex(groups_list, i)));
  5605. }
  5606. goto("wait");
  5607. }
  5608. if(arg0 == "set") {
  5609. if(!perm.has(player, "warp.create")) {
  5610. perm.no(player, "warp.create");
  5611. goto("wait");
  5612. }
  5613. if(size < 2) {
  5614. goto("warpsyntax");
  5615. }
  5616. if(size == 2) {
  5617. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5618. warp_group = "default";
  5619. } else {
  5620. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5621. warp_name = text.toLowerCase(list.getIndex(args, 2));
  5622. }
  5623. if(warp.exists(warp_group, warp_name)) {
  5624. msg.prefix(player, prefix_commands, "Warpname already exists.");
  5625. goto("wait");
  5626. }
  5627. warp.create(warp_group, warp_name, entity.getLocation(player));
  5628. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " set."));
  5629. goto("wait");
  5630. }
  5631. //Teleportation
  5632. if(size == 1) {
  5633. warp_name = arg0;
  5634. warp_group = "default";
  5635. } else {
  5636. if(!perm.has(player, "warp.create")) {
  5637. perm.no(player, "warp.create");
  5638. goto("wait");
  5639. }
  5640. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5641. warp_group = arg0;
  5642. }
  5643. warp_loc = warp.get(warp_group, warp_name);
  5644. if(warp_loc == null) {
  5645. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  5646. goto("wait");
  5647. }
  5648. if(!perm.has(player, "warp.create")) {
  5649. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5650. if(isGamesWorldName(world_name)) {
  5651. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5652. goto("wait");
  5653. }
  5654. world_name = world.getName(loc.getWorld(warp_loc));
  5655. if(isGamesWorldName(world_name)) {
  5656. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5657. goto("wait");
  5658. }
  5659. }
  5660. if(player.teleport(player, warp_loc, true)) {
  5661. msg.prefix(player, prefix_commands, concat("You have been teleported to warp §7", warp_name, "."));
  5662. }
  5663. goto("wait");
  5664. @databank
  5665. if(size == 0) {
  5666. @databankhelp
  5667. msg.prefix(player, prefix_commands, "/databank...");
  5668. msg(player, "§6 - showtables §rShows all tables");
  5669. msg(player, "§6 - showfields §rShows fields from a table");
  5670. msg(player, "§6 - showdataypes §rShows dataypes from a table");
  5671. goto("wait");
  5672. }
  5673. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5674. if(arg0 == "showtables") {
  5675. msg(player, getSpacer());
  5676. stmt = databank.prepare("SHOW TABLES");
  5677. result = databank.execute(stmt);
  5678. while(databank.next(result)) {
  5679. msg(player, databank.getString(result, 1));
  5680. }
  5681. databank.close(result);
  5682. databank.close(stmt);
  5683. goto("wait");
  5684. }
  5685. if(arg0 == "showfields") {
  5686. if(size < 2) {
  5687. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  5688. goto("wait");
  5689. }
  5690. table = list.getIndex(args, 1);
  5691. if(!databank.isExistingTable(table)) {
  5692. msg.prefix(player, prefix_commands, "This in no existing table.");
  5693. goto("wait");
  5694. }
  5695. msg(player, getSpacer());
  5696. fields = databank.getTableFields(table);
  5697. iter = list.iterator(fields);
  5698. while(hasNext(iter)) {
  5699. msg(player, next(iter));
  5700. }
  5701. goto("wait");
  5702. }
  5703. if(arg0 == "showdataypes") {
  5704. if(size < 2) {
  5705. msg.prefix(player, prefix_commands, "/databank showdataypes <table>");
  5706. goto("wait");
  5707. }
  5708. table = list.getIndex(args, 1);
  5709. if(!databank.isExistingTable(table)) {
  5710. msg.prefix(player, prefix_commands, "This in no existing table.");
  5711. goto("wait");
  5712. }
  5713. msg(player, getSpacer());
  5714. msg(player, databank.getTableDatatypes(table));
  5715. goto("wait");
  5716. }
  5717. goto("databankhelp");
  5718. @seen
  5719. if(size != 1) {
  5720. msg.prefix(player, prefix_commands, "/seen <player>");
  5721. goto("wait");
  5722. }
  5723. seen_name = list.getIndex(args, 0);
  5724. seen_uuid = player.getUuid(seen_name);
  5725. if(seen_uuid == null) {
  5726. msg.prefix(player, prefix_commands, "Dieser Spieler war noch nie online.");
  5727. goto("wait");
  5728. }
  5729. if(read.player(seen_name) != null) {
  5730. msg.prefix(player, prefix_commands, "Dieser Spieler ist gerade online.");
  5731. goto("wait");
  5732. }
  5733. seenStatement = databank.prepare("SELECT logouttime FROM logoutdata WHERE player_id = ?;");
  5734. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  5735. result = databank.execute(seenStatement);
  5736. varset = false;
  5737. while(databank.next(result)) {
  5738. time = databank.getLong(result, 1);
  5739. calendar = time.new(time);
  5740. year = text.number(time.getYear(calendar));
  5741. month = text.number(time.getMonth(calendar));
  5742. day = text.number(time.getDay(calendar));
  5743. minute = text.number(time.getMinute(calendar));
  5744. hour = text.number(time.getHour(calendar));
  5745. month = correctTimeFormat(month);
  5746. day = correctTimeFormat(day);
  5747. hour = correctTimeFormat(hour);
  5748. minute = correctTimeFormat(minute);
  5749. dateformat = concat(day, ".", month, ".", year);
  5750. clockformat = concat(hour, ":", minute);
  5751. msg.prefix(player, prefix_commands, concat(seen_name, " war zuletzt am §e", dateformat, "§r um §e", clockformat, " Uhr §ronline."));
  5752. varset = true;
  5753. }
  5754. databank.close(result);
  5755. databank.close(seenStatement);
  5756. if(!varset) {
  5757. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  5758. goto("wait");
  5759. }
  5760. goto("wait");
  5761. @lastseen
  5762. if(size != 1) {
  5763. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  5764. goto("wait");
  5765. }
  5766. amount = list.getIndex(args, 0);
  5767. if(!isDouble(amount)) {
  5768. msg.prefix(sender, prefix_commands, "Zahl erwartet.");
  5769. goto("wait");
  5770. }
  5771. if(amount < 1) {
  5772. msg.prefix(sender, prefix_commands, "Zahl größer 0 erwartet.");
  5773. goto("wait");
  5774. }
  5775. msg.prefix(sender, prefix_commands, "These players were last seen:");
  5776. table = table.new("§f", 12, 12);
  5777. msg(sender, table.getStart(table));
  5778. msg(sender, table.get(table, "Player", "Date"));
  5779. msg(sender, table.getMiddle(table));
  5780. lastseenStatement = databank.prepare("SELECT player_id, logouttime FROM logoutdata ORDER BY logouttime DESC LIMIT ?;");
  5781. databank.setInt(lastseenStatement, 1, amount);
  5782. result = databank.execute(lastseenStatement);
  5783. while(databank.next(result)) {
  5784. id = databank.getInt(result, 1);
  5785. time = databank.getLong(result, 2);
  5786. msg(sender, table.get(table, concat("§a", player.getNameFromId(id)), concat("§e", getTimeString(time))));
  5787. }
  5788. msg(sender, table.getEnd(table));
  5789. databank.close(result);
  5790. databank.close(lastseenStatement);
  5791. goto("wait");
  5792. @feed
  5793. if(size > 1) {
  5794. msg.prefix(player, prefix_commands, "/feed [player]");
  5795. goto("wait");
  5796. }
  5797. if(size == 1) {
  5798. affectedname = list.getIndex(args, 0);
  5799. affectedplayer = read.player(affectedname);
  5800. if(affectedplayer == null) {
  5801. msg.prefix(player, prefix_commands, "This player is not online.");
  5802. goto("wait");
  5803. }
  5804. if(player != affectedplayer) {
  5805. affectedname = player.getName(affectedplayer);
  5806. msg.prefix(player, prefix_commands, concat("Der Hunger von ", affectedname, " wurde gestillt."));
  5807. }
  5808. }
  5809. player.setHunger(affectedplayer, 20);
  5810. player.setSaturation(affectedplayer, 5);
  5811. msg.prefix(affectedplayer, prefix_commands, "Dein Hunger wurde gestillt.");
  5812. goto("wait");
  5813. @tempfly
  5814. if(size < 2) {
  5815. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  5816. goto("wait");
  5817. }
  5818. p_name = list.getIndex(args, 0);
  5819. if(!checkIfEverOnline(p_name)) {
  5820. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5821. goto("wait");
  5822. }
  5823. p = read.player(p_name);
  5824. if(p == null) {
  5825. msg.prefix(sender, prefix_commands, "This player is not online.");
  5826. goto("wait");
  5827. }
  5828. p_name = player.getName(player.getUuid(p_name));
  5829. if(player.hasMinigame(p)) {
  5830. msg.prefix(player, prefix_commands, "This player can't fly now.");
  5831. goto("wait");
  5832. }
  5833. sec = list.getIndex(args, 1);
  5834. if(!isDouble(sec) || sec < 0) {
  5835. msg.prefix(sender, prefix_commands, "Positive number expected.");
  5836. goto("wait");
  5837. }
  5838. msg.prefix(sender, prefix_commands, concat(p_name, " can now fly for ", text.number(sec), " seconds."));
  5839. msg.prefix(p, prefix_commands, concat("You can now fly for ", text.number(sec), " seconds."));
  5840. player.setFly(p, true);
  5841. duration = sec * 20;
  5842. data.setTimer(p, "fly", duration);
  5843. status.addTimed(player, 50, duration, "Fly");
  5844. goto("wait");
  5845. @fly
  5846. if(size > 2) {
  5847. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  5848. goto("wait");
  5849. }
  5850. if(size >= 1) {
  5851. if(!perm.has(player, "fly.other")) {
  5852. perm.no(player, "fly.other");
  5853. goto("wait");
  5854. }
  5855. affectedname = list.getIndex(args, 0);
  5856. affectedplayer = read.player(affectedname);
  5857. if(affectedplayer == null) {
  5858. msg.prefix(player, prefix_commands, "This player is not online.");
  5859. goto("wait");
  5860. }
  5861. }
  5862. if(player.hasMinigame(affectedplayer)) {
  5863. if(size == 2) {
  5864. msg.prefix(player, prefix_commands, "This player can't fly now.");
  5865. } else {
  5866. msg.prefix(player, prefix_commands, "You can't fly now.");
  5867. }
  5868. goto("wait");
  5869. }
  5870. if(size == 2) {
  5871. boolean = list.getIndex(args, 1);
  5872. if(boolean == "on") {
  5873. fly = true;
  5874. } elseif(boolean == "off") {
  5875. fly = false;
  5876. } else {
  5877. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  5878. goto("wait");
  5879. }
  5880. } else {
  5881. if(player.hasFly(affectedplayer)) {
  5882. fly = false;
  5883. } else {
  5884. fly = true;
  5885. }
  5886. }
  5887. player.setFly(affectedplayer, fly);
  5888. if(fly) {
  5889. msg.prefix(affectedplayer, prefix_commands, "You can fly now.");
  5890. if(player != affectedplayer) {
  5891. affectedname = player.getName(affectedplayer);
  5892. msg.prefix(player, prefix_commands, concat(affectedname, " can fly now."));
  5893. }
  5894. } else {
  5895. msg.prefix(affectedplayer, prefix_commands, "You can't fly anymore.");
  5896. if(player != affectedplayer) {
  5897. affectedname = player.getName(affectedplayer);
  5898. msg.prefix(player, prefix_commands, concat(affectedname, " can't fly anymore."));
  5899. }
  5900. }
  5901. goto("wait");
  5902. @tppos
  5903. if(size < 3 || size > 5) {
  5904. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  5905. goto("wait");
  5906. }
  5907. x = list.getIndex(args, 0);
  5908. y = list.getIndex(args, 1);
  5909. z = list.getIndex(args, 2);
  5910. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  5911. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  5912. goto("wait");
  5913. }
  5914. if(size >= 4) {
  5915. worldname = list.getIndex(args, 3);
  5916. world = world.get(worldname);
  5917. if(world == null) {
  5918. msg.prefix(player, prefix_commands, "This world is not loaded.");
  5919. goto("wait");
  5920. }
  5921. } else {
  5922. world = loc.getWorld(entity.getLocation(player));
  5923. }
  5924. if(x < -16000) {
  5925. x = -16000;
  5926. } elseif(x > 16000) {
  5927. x = 16000;
  5928. }
  5929. if(y < 0) {
  5930. y = 0;
  5931. } elseif(y > 255) {
  5932. y = 255;
  5933. }
  5934. if(z < -16000) {
  5935. z = -16000;
  5936. } elseif(z > 16000) {
  5937. z = 16000;
  5938. }
  5939. location = loc.new(world, x, y, z);
  5940. if(size == 5) {
  5941. affectedname = list.getIndex(args, 4);
  5942. affectedplayer = read.player(affectedname);
  5943. if(affectedplayer == null) {
  5944. msg.prefix(player, prefix_commands, "This player is not online.");
  5945. goto("wait");
  5946. }
  5947. }
  5948. if(player.hasMinigame(affectedplayer)) {
  5949. if(size == 5) {
  5950. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  5951. } else {
  5952. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  5953. }
  5954. goto("wait");
  5955. }
  5956. if(player.teleport(affectedplayer, location, true)) {
  5957. if(player != affectedplayer) {
  5958. affectedname = player.getName(affectedplayer);
  5959. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported."));
  5960. }
  5961. }
  5962. goto("wait");
  5963. @back
  5964. if(size > 0) {
  5965. msg.prefix(player, prefix_commands, "/back");
  5966. goto("wait");
  5967. }
  5968. if(player.hasMinigame(player)) {
  5969. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  5970. goto("wait");
  5971. }
  5972. hasPerms = perm.has(player, "isTeam");
  5973. if(!hasPerms) {
  5974. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5975. if(isGamesWorldName(world_name) || isStoryWorldName(world_name)) {
  5976. msg.prefix(player, prefix_commands, "You can't use /back in this world.");
  5977. goto("wait");
  5978. }
  5979. }
  5980. location = player.getBackPos(player);
  5981. if(location == null) {
  5982. msg.prefix(player, prefix_commands, "No back-location available.");
  5983. goto("wait");
  5984. }
  5985. world = loc.getWorld(location);
  5986. if(world == null) {
  5987. msg.prefix(player, prefix_commands, "This world is not loaded.");
  5988. goto("wait");
  5989. }
  5990. if(!hasPerms) {
  5991. world_name = world.getName(world);
  5992. if(isGamesWorldName(world_name)) {
  5993. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5994. goto("wait");
  5995. }
  5996. }
  5997. player.teleport(player, location, true);
  5998. goto("wait");
  5999. @clan
  6000. if(size == 0) {
  6001. @clanhelp
  6002. msg.prefix(player, prefix_clan, "§r/clan...");
  6003. msg(player, "§2 - invite <name> §rInvites a player");
  6004. msg(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  6005. msg(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  6006. msg(player, "§2 - create <name> <tag> §rCreates a clan");
  6007. msg(player, "§2 - kick <name> §rKicks a player");
  6008. msg(player, "§2 - leader <name> §rPromote to clan-leader");
  6009. msg(player, "§2 - mod <name> §rPromote to clan-mod");
  6010. msg(player, "§2 - degrade <name> §rDemote a clan-mod");
  6011. msg(player, "§2 - leave §rLeave a clan");
  6012. msg(player, "§2 - disband §rDisband a clan");
  6013. msg(player, "§2 - rename <name> <tag> §rRenames a clan");
  6014. msg(player, "§2 - setspawn §rSets a clan-spawn");
  6015. msg(player, "§2 - spawn §rTeleports to clan-spawn");
  6016. msg(player, "§2 - msg <message> §rSends a clan-message");
  6017. msg(player, "§2 - mail <message> §rSends a clan-mail");
  6018. msg(player, "§2 - shout <message> §rSends a message to all online players");
  6019. msg(player, "§2 - deposit <money> §rDeposit money to the clan account");
  6020. msg(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  6021. msg(player, "§2 - party §rInvites all online members to a party");
  6022. msg(player, "§2 - list §rLists all clans");
  6023. goto("wait");
  6024. }
  6025. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6026. if(arg0 == "invite") {
  6027. if(size != 2) {
  6028. msg.prefix(player, prefix_commands, "/clan invite <name>");
  6029. goto("wait");
  6030. }
  6031. if(!player.isInClan(player)) {
  6032. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6033. goto("wait");
  6034. }
  6035. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6036. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6037. goto("wait");
  6038. }
  6039. p_name = list.getIndex(args, 1);
  6040. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6041. msg.prefix(player, prefix_clan, "You can't invite yourself.");
  6042. goto("wait");
  6043. }
  6044. if(!checkIfEverOnline(p_name)) {
  6045. msg.prefix(sender, prefix_clan, "This player has never been online.");
  6046. goto("wait");
  6047. }
  6048. if(!isOnline(p_name)) {
  6049. msg.prefix(player, prefix_clan, "This player has to be online.");
  6050. goto("wait");
  6051. }
  6052. p = read.player(p_name);
  6053. if(player.isClanMember(player)) {
  6054. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  6055. goto("wait");
  6056. }
  6057. clan_id = player.getClanId(player);
  6058. p_id = player.getId(p);
  6059. if(player.hasClanInvitation(p_id, clan_id)) {
  6060. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  6061. goto("wait");
  6062. }
  6063. player.addClanInvitation(p_id, clan_id);
  6064. clan_name = clan.getName(clan_id);
  6065. msg.prefix(player, prefix_clan, text.concat("You invited §7", p_name, "§r to your clan."));
  6066. msg.prefix(p, prefix_clan, text.concat("You got an clan invitation by §7", clan_name, "§r."));
  6067. msg(p, text.click("§r[§aAccept§r]", concat("/clan accept ", clan_id)));
  6068. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  6069. goto("wait");
  6070. }
  6071. if(arg0 == "accept") {
  6072. if(size != 2) {
  6073. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  6074. goto("wait");
  6075. }
  6076. if(player.isInClan(player)) {
  6077. msg.prefix(player, prefix_clan, "You are already in a clan.");
  6078. goto("wait");
  6079. }
  6080. arg1 = list.getIndex(args, 1);
  6081. if(isDouble(arg1)) {
  6082. clan_id = arg1;
  6083. clan_name = clan.getName(clan_id);
  6084. if(clan_name == null) {
  6085. msg.prefix(player, prefix_clan, "Unknown clan.");
  6086. goto("wait");
  6087. }
  6088. } else {
  6089. clan_id = clan.getIdFromName(arg1);
  6090. if(clan_id == null) {
  6091. clan_id = clan.getIdFromTag(arg1);
  6092. if(clan_id == null) {
  6093. msg.prefix(player, prefix_clan, "Unknown clan.");
  6094. goto("wait");
  6095. }
  6096. }
  6097. }
  6098. player_id = player.getId(player);
  6099. if(!player.hasClanInvitation(player_id, clan_id)) {
  6100. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  6101. goto("wait");
  6102. }
  6103. clan.addMember(clan_id, player, "member");
  6104. player.setHeadName(player);
  6105. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r joined the clan."));
  6106. msg.prefix(player, prefix_clan, text.concat("You joined §7", clan_name, "§r."));
  6107. clan_size = clan.getMembersAmount(clan_id);
  6108. if(clan_size >= 15) {
  6109. rank.offerClan(clan_id, "rank.lord");
  6110. } elseif(clan_size >= 10) {
  6111. rank.offerClan(clan_id, "rank.chief");
  6112. } elseif(clan_size >= 5) {
  6113. rank.offerClan(clan_id, "rank.commander");
  6114. }
  6115. goto("wait");
  6116. }
  6117. if(arg0 == "create") {
  6118. if(size != 3) {
  6119. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  6120. goto("wait");
  6121. }
  6122. if(player.isInClan(player)) {
  6123. msg.prefix(player, prefix_clan, "You are already in a clan.");
  6124. goto("wait");
  6125. }
  6126. clan_name = list.getIndex(args, 1);
  6127. if(text.length(clan_name) > 20) {
  6128. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  6129. goto("wait");
  6130. }
  6131. if(!text.onlyletters(clan_name)) {
  6132. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6133. goto("wait");
  6134. }
  6135. if(clan.isExistingName(clan_name)) {
  6136. msg.prefix(player, prefix_clan, "This name already exists.");
  6137. goto("wait");
  6138. }
  6139. clan_tag = list.getIndex(args, 2);
  6140. tag_length = text.length(clan_tag);
  6141. if(tag_length < 3 || tag_length > 4) {
  6142. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  6143. goto("wait");
  6144. }
  6145. if(!text.onlyletters(clan_tag)) {
  6146. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6147. goto("wait");
  6148. }
  6149. if(clan.isExistingTag(clan_tag)) {
  6150. msg.prefix(player, prefix_clan, "This tag already exists.");
  6151. goto("wait");
  6152. }
  6153. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  6154. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  6155. goto("wait");
  6156. }
  6157. subMoney(player, 4096);
  6158. clan_id = clan.create(clan_name, clan_tag);
  6159. clan.addMember(clan_id, player, "leader");
  6160. player.setHeadName(player);
  6161. msg.prefix(player, prefix_clan, "Clan successful created.");
  6162. goto("wait");
  6163. }
  6164. if(arg0 == "info") {
  6165. if(size == 1) {
  6166. if(!player.isInClan(player)) {
  6167. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  6168. goto("wait");
  6169. }
  6170. clan_id = player.getClanId(player);
  6171. clan_name = clan.getName(clan_id);
  6172. clan_tag = clan.getTag(clan_id);
  6173. }
  6174. if(size == 2) {
  6175. arg1 = list.getIndex(args, 1);
  6176. if(isDouble(arg1)) {
  6177. clan_id = arg1;
  6178. clan_name = clan.getName(clan_id);
  6179. if(clan_name == null) {
  6180. msg.prefix(player, prefix_clan, "Unknown clan.");
  6181. goto("wait");
  6182. }
  6183. } else {
  6184. clan_id = clan.getIdFromName(arg1);
  6185. if(clan_id == null) {
  6186. clan_id = clan.getIdFromTag(arg1);
  6187. if(clan_id == null) {
  6188. msg.prefix(player, prefix_clan, "Unknown clan.");
  6189. goto("wait");
  6190. }
  6191. }
  6192. clan_name = clan.getName(clan_id);
  6193. }
  6194. clan_tag = clan.getTag(clan_id);
  6195. }
  6196. list = clan.getMembersList(clan_id);
  6197. mod_list = list.new();
  6198. members_list = list.new();
  6199. iter = list.iterator(list);
  6200. while(hasNext(iter)) {
  6201. player_uuid = next(iter);
  6202. player_name = player.getName(player_uuid);
  6203. player_id = player.getId(player_uuid);
  6204. if(player.isClanLeader(player_id)) {
  6205. leader = player_name;
  6206. } else {
  6207. if(player.isClanMod(player_id)) {
  6208. list.add(mod_list, player_name);
  6209. } else {
  6210. list.add(members_list, player_name);
  6211. }
  6212. }
  6213. }
  6214. if(list.getSize(mod_list) == 0) {
  6215. mods = "-";
  6216. } else {
  6217. mods = text.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  6218. }
  6219. if(list.getSize(members_list) == 0) {
  6220. members = "-";
  6221. } else {
  6222. members = text.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  6223. }
  6224. msg(player, text.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", text.number(clan_id), ")"));
  6225. msg(player, "§6Leader");
  6226. msg(player, "§r", leader);
  6227. msg(player, "§6Mods");
  6228. msg(player, "§r", mods);
  6229. msg(player, "§6Members");
  6230. msg(player, "§r", members);
  6231. msg(player, "§6Money");
  6232. msg(player, text.number(clan.getMoney(clan_id)));
  6233. goto("wait");
  6234. }
  6235. if(arg0 == "rename") {
  6236. if(!player.isInClan(player)) {
  6237. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6238. goto("wait");
  6239. }
  6240. if(!player.isClanLeader(player)) {
  6241. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6242. goto("wait");
  6243. }
  6244. if(size != 3) {
  6245. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  6246. goto("wait");
  6247. }
  6248. clan_name = list.getIndex(args, 1);
  6249. if(text.length(clan_name) > 20) {
  6250. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  6251. goto("wait");
  6252. }
  6253. if(!text.onlyletters(clan_name)) {
  6254. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6255. goto("wait");
  6256. }
  6257. if(clan.isExistingName(clan_name)) {
  6258. msg.prefix(player, prefix_clan, "This name already exists.");
  6259. goto("wait");
  6260. }
  6261. clan_tag = list.getIndex(args, 2);
  6262. tag_length = text.length(clan_tag);
  6263. if(tag_length < 3 || tag_length > 4) {
  6264. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  6265. goto("wait");
  6266. }
  6267. if(!text.onlyletters(clan_tag)) {
  6268. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6269. goto("wait");
  6270. }
  6271. if(clan.isExistingTag(clan_tag)) {
  6272. msg.prefix(player, prefix_clan, "This tag already exists.");
  6273. goto("wait");
  6274. }
  6275. clan_id = player.getClanId(player);
  6276. if(clan.getMoney(clan_id) < 64) {
  6277. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  6278. goto("wait");
  6279. }
  6280. clan.subMoney(clan_id, 64);
  6281. clan.setName(clan_id, clan_name);
  6282. clan.setTag(clan_id, clan_tag);
  6283. clan.msg(clan_id, text.concat("Clan renamed to §7", clan_name, "§r."));
  6284. //New tag for online players
  6285. clan.updateHeadNames(clan_id);
  6286. goto("wait");
  6287. }
  6288. if(arg0 == "msg") {
  6289. if(!player.isInClan(player)) {
  6290. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6291. goto("wait");
  6292. }
  6293. if(size < 2) {
  6294. msg.prefix(player, prefix_commands, "/clan msg <message>");
  6295. goto("wait");
  6296. }
  6297. clan_id = player.getClanId(player);
  6298. clan.msg(clan_id, text.concat(player.getName(player), ": ", text.concatList(args, " ", 1, size - 1)));
  6299. goto("wait");
  6300. }
  6301. if(arg0 == "mail") {
  6302. if(!player.isInClan(player)) {
  6303. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6304. goto("wait");
  6305. }
  6306. if(size < 2) {
  6307. msg.prefix(player, prefix_commands, "/clan mail <message>");
  6308. goto("wait");
  6309. }
  6310. if(player.isClanMember(player)) {
  6311. msg.prefix(player, prefix_commands, "You have no permission for this.");
  6312. goto("wait");
  6313. }
  6314. clan_id = player.getClanId(player);
  6315. clan.mail(clan_id, player.getName(player), text.concatList(args, " ", 1, size - 1));
  6316. goto("wait");
  6317. }
  6318. if(arg0 == "shout") {
  6319. if(!player.isInClan(player)) {
  6320. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6321. goto("wait");
  6322. }
  6323. if(size < 2) {
  6324. msg.prefix(player, prefix_commands, "/clan shout <message>");
  6325. goto("wait");
  6326. }
  6327. if(player.isClanMember(player)) {
  6328. msg.prefix(player, prefix_commands, "You have no permission for this.");
  6329. goto("wait");
  6330. }
  6331. clan_id = player.getClanId(player);
  6332. if(clan.getMoney(clan_id) < 10) {
  6333. msg.prefix(player, prefix_clan, "Your clan needs 10 snuvis.");
  6334. goto("wait");
  6335. }
  6336. clan.subMoney(clan_id, 10);
  6337. msg.prefix("online", prefix_clan, text.concat(clan.getTag(clan_id), ": ", text.concatList(args, " ", 1, size - 1)));
  6338. goto("wait");
  6339. }
  6340. if(arg0 == "deposit") {
  6341. if(!player.isInClan(player)) {
  6342. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6343. goto("wait");
  6344. }
  6345. if(size != 2) {
  6346. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  6347. goto("wait");
  6348. }
  6349. money = list.getIndex(args, 1);
  6350. if(!isDouble(money) || money < 0) {
  6351. msg.prefix(player, prefix_clan, "Positive number expected.");
  6352. goto("wait");
  6353. }
  6354. if(!hasEnoughMoney(player, money)) {
  6355. msg.prefix(player, prefix_clan, "You can't transfer more money than you have.");
  6356. goto("wait");
  6357. }
  6358. clan_id = player.getClanId(player);
  6359. clan.addMoney(clan_id, money);
  6360. subMoney(player, money);
  6361. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r transferred §7", text.number(money), "§r snuvis."));
  6362. goto("wait");
  6363. }
  6364. if(arg0 == "party") {
  6365. counter = 0;
  6366. clan_id = player.getClanId(player);
  6367. list = clan.getMembersList(clan_id);
  6368. iter = list.iterator(list);
  6369. while(hasNext(iter)) {
  6370. p = player.get(next(iter));
  6371. if(p != null) {
  6372. temp = party.invitePlayer(player, p);
  6373. if(temp == true) {
  6374. counter++;
  6375. }
  6376. }
  6377. }
  6378. msg.prefix(player, prefix_clan, concat(text.number(counter), " online clan members invited to a party."));
  6379. goto("wait");
  6380. }
  6381. if(arg0 == "withdraw") {
  6382. if(!player.isInClan(player)) {
  6383. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6384. goto("wait");
  6385. }
  6386. if(!player.isClanLeader(player)) {
  6387. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6388. goto("wait");
  6389. }
  6390. if(size != 2) {
  6391. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  6392. goto("wait");
  6393. }
  6394. money = list.getIndex(args, 1);
  6395. if(!isDouble(money) || money < 0) {
  6396. msg.prefix(player, prefix_clan, "Positive number expected.");
  6397. goto("wait");
  6398. }
  6399. clan_id = player.getClanId(player);
  6400. clan_money = clan.getMoney(clan_id);
  6401. if(clan_money < money) {
  6402. msg.prefix(player, prefix_clan, text.concat("There are only §7", text.number(clan_money), "§r snuvis on the clan account."));
  6403. goto("wait");
  6404. }
  6405. clan.subMoney(clan_id, money);
  6406. addMoney(player, money);
  6407. msg.prefix(player, prefix_clan, text.concat("You have withdrawn §7", text.number(money), "§r snuvis."));
  6408. goto("wait");
  6409. }
  6410. if(arg0 == "leader") {
  6411. if(!player.isInClan(player)) {
  6412. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6413. goto("wait");
  6414. }
  6415. if(!player.isClanLeader(player)) {
  6416. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6417. goto("wait");
  6418. }
  6419. if(size != 2) {
  6420. msg.prefix(player, prefix_commands, "/clan leader <name>");
  6421. goto("wait");
  6422. }
  6423. p_name = list.getIndex(args, 1);
  6424. if(!checkIfEverOnline(p_name)) {
  6425. msg.prefix(player, prefix_clan, "This player has never been online.");
  6426. goto("wait");
  6427. }
  6428. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6429. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6430. goto("wait");
  6431. }
  6432. p_uuid = player.getUuid(p_name);
  6433. p_id = player.getId(p_uuid);
  6434. if(!player.isSameClan(player, p_id)) {
  6435. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6436. goto("wait");
  6437. }
  6438. player.setClanRole(p_id, "leader");
  6439. player.setClanRole(player, "mod");
  6440. clan_id = player.getClanId(player);
  6441. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan leader."));
  6442. goto("wait");
  6443. }
  6444. if(arg0 == "mod") {
  6445. if(!player.isInClan(player)) {
  6446. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6447. goto("wait");
  6448. }
  6449. if(!player.isClanLeader(player)) {
  6450. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6451. goto("wait");
  6452. }
  6453. if(size != 2) {
  6454. msg.prefix(player, prefix_commands, "/clan leader <name>");
  6455. goto("wait");
  6456. }
  6457. p_name = list.getIndex(args, 1);
  6458. if(!checkIfEverOnline(p_name)) {
  6459. msg.prefix(player, prefix_clan, "This player has never been online.");
  6460. goto("wait");
  6461. }
  6462. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6463. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6464. goto("wait");
  6465. }
  6466. p_uuid = player.getUuid(p_name);
  6467. p_id = player.getId(p_uuid);
  6468. if(!player.isSameClan(player, p_id)) {
  6469. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6470. goto("wait");
  6471. }
  6472. player.setClanRole(p_id, "mod");
  6473. clan_id = player.getClanId(player);
  6474. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan mod."));
  6475. goto("wait");
  6476. }
  6477. if(arg0 == "degrade") {
  6478. if(!player.isInClan(player)) {
  6479. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6480. goto("wait");
  6481. }
  6482. if(!player.isClanLeader(player)) {
  6483. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6484. goto("wait");
  6485. }
  6486. if(size != 2) {
  6487. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  6488. goto("wait");
  6489. }
  6490. p_name = list.getIndex(args, 1);
  6491. if(!checkIfEverOnline(p_name)) {
  6492. msg.prefix(player, prefix_clan, "This player has never been online.");
  6493. goto("wait");
  6494. }
  6495. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6496. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6497. goto("wait");
  6498. }
  6499. p_uuid = player.getUuid(p_name);
  6500. p_id = player.getId(p_uuid);
  6501. if(!player.isSameClan(player, p_id)) {
  6502. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6503. goto("wait");
  6504. }
  6505. player.setClanRole(p_id, "member");
  6506. clan_id = player.getClanId(player);
  6507. clan.msg(clan_id, text.concat("§7", p_name, "§r was degraded."));
  6508. goto("wait");
  6509. }
  6510. if(arg0 == "kick") {
  6511. if(!player.isInClan(player)) {
  6512. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6513. goto("wait");
  6514. }
  6515. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6516. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6517. goto("wait");
  6518. }
  6519. if(size != 2) {
  6520. msg.prefix(player, prefix_commands, "/clan kick <name>");
  6521. goto("wait");
  6522. }
  6523. p_name = list.getIndex(args, 1);
  6524. if(!checkIfEverOnline(p_name)) {
  6525. msg.prefix(player, prefix_clan, "This player has never been online.");
  6526. goto("wait");
  6527. }
  6528. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6529. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6530. goto("wait");
  6531. }
  6532. p_uuid = player.getUuid(p_name);
  6533. p_id = player.getId(p_uuid);
  6534. if(!player.isSameClan(player, p_id)) {
  6535. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6536. goto("wait");
  6537. }
  6538. if(player.isClanLeader(p_id)) {
  6539. msg.prefix(player, prefix_clan, "You can't kick the leader.");
  6540. goto("wait");
  6541. }
  6542. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  6543. msg.prefix(player, prefix_clan, "You can't kick another mod.");
  6544. goto("wait");
  6545. }
  6546. clan_id = player.getClanId(player);
  6547. clan.msg(clan_id, text.concat("§7", p_name, "§r got kicked out of the clan."));
  6548. clan.removeMember(clan_id, p_id);
  6549. p = read.player(p_name);
  6550. if(p_name != null) {
  6551. player.setHeadName(p);
  6552. }
  6553. goto("wait");
  6554. }
  6555. if(arg0 == "disband") {
  6556. if(!player.isInClan(player)) {
  6557. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6558. goto("wait");
  6559. }
  6560. if(!player.isClanLeader(player)) {
  6561. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6562. goto("wait");
  6563. }
  6564. clan_id = player.getClanId(player);
  6565. clan.msg(clan_id, "Clan disbanded.");
  6566. list = clan.getMembersList(clan_id);
  6567. clan.delete(clan_id);
  6568. iter = list.iterator(list);
  6569. while(hasNext(iter)) {
  6570. p = player.get(next(iter));
  6571. if(p != null) {
  6572. player.setHeadName(p);
  6573. }
  6574. }
  6575. goto("wait");
  6576. }
  6577. if(arg0 == "leave") {
  6578. if(!player.isInClan(player)) {
  6579. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6580. goto("wait");
  6581. }
  6582. if(player.isClanLeader(player)) {
  6583. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  6584. goto("wait");
  6585. }
  6586. clan_id = player.getClanId(player);
  6587. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r left the clan."));
  6588. clan.removeMember(clan_id, player);
  6589. player.setHeadName(player);
  6590. goto("wait");
  6591. }
  6592. if(arg0 == "list") {
  6593. table = table.new("§b", 2, 6, 4, 5);
  6594. msg(player, table.getStart(table));
  6595. msg(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  6596. msg(player, table.getMiddle(table));
  6597. list = clan.getIdList();
  6598. iter = list.iterator(list);
  6599. while(hasNext(iter)) {
  6600. clan_id = next(iter);
  6601. name = clan.getName(clan_id);
  6602. tag = clan.getTag(clan_id);
  6603. amount = clan.getMembersAmount(clan_id);
  6604. msg(player, table.get(table, text.number(clan_id), name, tag, text.number(amount)));
  6605. }
  6606. msg(player, table.getEnd(table));
  6607. goto("wait");
  6608. }
  6609. if(arg0 == "setspawn") {
  6610. if(!player.isInClan(player)) {
  6611. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6612. goto("wait");
  6613. }
  6614. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6615. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6616. goto("wait");
  6617. }
  6618. clan_id = player.getClanId(player);
  6619. clan.setSpawn(clan_id, entity.getLocation(player));
  6620. msg.prefix(player, prefix_clan, "New clan spawn set.");
  6621. goto("wait");
  6622. }
  6623. if(arg0 == "spawn") {
  6624. if(!player.isInClan(player)) {
  6625. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6626. goto("wait");
  6627. }
  6628. clan_id = player.getClanId(player);
  6629. spawn_loc = clan.getSpawn(clan_id);
  6630. if(spawn_loc == null) {
  6631. msg.prefix(player, prefix_clan, "No clan spawn set.");
  6632. goto("wait");
  6633. }
  6634. if(!perm.has(player, "isTeam")) {
  6635. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6636. if(isGamesWorldName(world_name)) {
  6637. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6638. goto("wait");
  6639. }
  6640. }
  6641. player.teleport(player, spawn_loc, true);
  6642. goto("wait");
  6643. }
  6644. goto("clanhelp");
  6645. @remove_clan_invitation
  6646. list.removeIndex(clan_invitations, 0);
  6647. goto("wait");
  6648. @color
  6649. msg(player, getSpacer());
  6650. msg(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  6651. msg(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  6652. msg(player, " &l §l(bold)");
  6653. msg(player, " &m §m(strikethrough)");
  6654. msg(player, " &n §n(underline)");
  6655. msg(player, " &o §o(italic)");
  6656. goto("wait");
  6657. @setspawn
  6658. if(size != 1) {
  6659. @setspawnhelp
  6660. msg.prefix(player, prefix_commands, "§r/setspawn ...");
  6661. msg(player, "§6 - server");
  6662. msg(player, "§6 - games");
  6663. msg(player, "§6 - creative");
  6664. msg(player, "§6 - story");
  6665. goto("wait");
  6666. }
  6667. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6668. new_spawn = text.location(entity.getLocation(player));
  6669. config = getScriptVar("server_config");
  6670. if(arg0 == "games") {
  6671. config.set(config, "gamesspawn", new_spawn);
  6672. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  6673. } elseif(arg0 == "server") {
  6674. config.set(config, "serverspawn", new_spawn);
  6675. msg.prefix(player, prefix_commands, "New main Spawn set.");
  6676. } elseif(arg0 == "creative") {
  6677. config.set(config, "creativespawn", new_spawn);
  6678. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  6679. } elseif(arg0 == "story") {
  6680. config.set(config, "storyspawn", new_spawn);
  6681. msg.prefix(player, prefix_commands, "New spawn for story world set.");
  6682. } else {
  6683. goto("setspawnhelp");
  6684. }
  6685. config.saveAsync(config);
  6686. goto("wait");
  6687. @heal
  6688. if(size > 1) {
  6689. msg.prefix(player, prefix_commands, "/heal [player]");
  6690. goto("wait");
  6691. }
  6692. if(size == 1) {
  6693. affectedname = list.getIndex(args, 0);
  6694. affectedplayer = read.player(affectedname);
  6695. if(affectedplayer == null) {
  6696. msg.prefix(player, prefix_commands, "This player is not online.");
  6697. goto("wait");
  6698. }
  6699. if(player != affectedplayer) {
  6700. affectedname = player.getName(affectedplayer);
  6701. msg.prefix(player, prefix_commands, concat(affectedname, " was healed."));
  6702. }
  6703. }
  6704. entity.heal(affectedplayer, 50);
  6705. player.setHunger(affectedplayer, 20);
  6706. player.setSaturation(affectedplayer, 5);
  6707. entity.clearEffects(affectedplayer);
  6708. entity.setBurning(affectedplayer, 0);
  6709. msg.prefix(affectedplayer, prefix_commands, "You have been healed.");
  6710. goto("wait");
  6711. @inv
  6712. if(size == 0) {
  6713. @invhelp
  6714. msg.prefix(player, prefix_commands, "§r/inv ...");
  6715. if(perm.has(player, "inv.ignore")) {
  6716. msg(player, "§6 - ignore §rToggles inventory change on world change");
  6717. }
  6718. if(perm.has(player, "inv.see")) {
  6719. msg(player, "§6 - see <player> §rOpens a player's inventory");
  6720. }
  6721. if(perm.has(player, "inv.reload")) {
  6722. msg(player, "§6 - reload <player> §rReloads a player's inventory");
  6723. }
  6724. if(perm.has(player, "inv.saveFor")) {
  6725. msg(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  6726. }
  6727. if(perm.has(player, "inv.loadFrom")) {
  6728. msg(player, "§6 - loadFrom <player> <world> §rLoads a player's inventory for you");
  6729. }
  6730. goto("wait");
  6731. }
  6732. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6733. if(arg0 == "ignore") {
  6734. if(!perm.has(player, "inv.ignore")) {
  6735. perm.no(player, "inv.ignore");
  6736. goto("wait");
  6737. }
  6738. ignore = player.hasInvIgnore(player);
  6739. if(ignore == null) {
  6740. ignore = false;
  6741. }
  6742. if(ignore) {
  6743. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  6744. } else {
  6745. msg.prefix(player, prefix_commands, "You'll keep your inventory on joining another world.");
  6746. }
  6747. player.invIgnore(player, !ignore);
  6748. goto("wait");
  6749. }
  6750. if(arg0 == "see") {
  6751. if(!perm.has(player, "inv.see")) {
  6752. perm.no(player, "inv.see");
  6753. goto("wait");
  6754. }
  6755. if(size < 2) {
  6756. msg.prefix(player, prefix_commands, "/inv see <player>");
  6757. goto("wait");
  6758. }
  6759. p_name = list.getIndex(args, 1);
  6760. p_uuid = player.getUuid(p_name);
  6761. if(p_uuid == null) {
  6762. msg.prefix(player, prefix_commands, "This player has never been online.");
  6763. goto("wait");
  6764. }
  6765. p = read.player(p_name);
  6766. if(p == null) {
  6767. msg.prefix(player, prefix_commands, "This player is not online.");
  6768. goto("wait");
  6769. }
  6770. inv.show(p, player);
  6771. goto("wait");
  6772. }
  6773. if(arg0 == "reload") {
  6774. if(!perm.has(player, "inv.reload")) {
  6775. perm.no(player, "inv.reload");
  6776. goto("wait");
  6777. }
  6778. if(size < 2) {
  6779. msg.prefix(player, prefix_commands, "/inv reload <player>");
  6780. goto("wait");
  6781. }
  6782. p_name = list.getIndex(args, 1);
  6783. p_uuid = player.getUuid(p_name);
  6784. if(p_uuid == null) {
  6785. msg.prefix(player, prefix_commands, "This player has never been online.");
  6786. goto("wait");
  6787. }
  6788. p = read.player(p_name);
  6789. if(p == null) {
  6790. msg.prefix(player, prefix_commands, "This player is not online.");
  6791. goto("wait");
  6792. }
  6793. world = loc.getWorld(entity.getLocation(p));
  6794. inv.loadFromPlayer(p, p, world);
  6795. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  6796. goto("wait");
  6797. }
  6798. if(arg0 == "savefor") {
  6799. if(size != 1 && size != 3) {
  6800. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  6801. goto("wait");
  6802. }
  6803. if(size == 1) {
  6804. for_player_or_id = player.getId(player);
  6805. world = loc.getWorld(entity.getLocation(player));
  6806. }
  6807. if(size == 3) {
  6808. if(!perm.has(player, "inv.saveFor")) {
  6809. perm.no(player, "inv.saveFor");
  6810. goto("wait");
  6811. }
  6812. p_name = list.getIndex(args, 1);
  6813. p_uuid = player.getUuid(p_name);
  6814. if(p_uuid == null) {
  6815. msg.prefix(player, prefix_commands, "This player has never been online.");
  6816. goto("wait");
  6817. }
  6818. p = read.player(p_name);
  6819. if(p != null) {
  6820. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  6821. goto("wait");
  6822. }
  6823. for_player_or_id = player.getId(p_uuid);
  6824. world_name = list.getIndex(args, 2);
  6825. world = world.get(world_name);
  6826. if(world == null) {
  6827. msg.prefix(player, prefix_world, "This world is not loaded.");
  6828. goto("wait");
  6829. }
  6830. }
  6831. inv.saveForPlayer(player, for_player_or_id, world);
  6832. msg.prefix(player, prefix_commands, "Inventory saved.");
  6833. goto("wait");
  6834. }
  6835. if(arg0 == "loadfrom") {
  6836. if(size != 1 && size != 3) {
  6837. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  6838. goto("wait");
  6839. }
  6840. if(size == 1) {
  6841. from_player_or_id = player.getId(player);
  6842. world = loc.getWorld(entity.getLocation(player));
  6843. }
  6844. if(size == 3) {
  6845. if(!perm.has(player, "inv.loadFrom")) {
  6846. perm.no(player, "inv.loadFrom");
  6847. goto("wait");
  6848. }
  6849. p_name = list.getIndex(args, 1);
  6850. p_uuid = player.getUuid(p_name);
  6851. if(p_uuid == null) {
  6852. msg.prefix(player, prefix_commands, "This player has never been online.");
  6853. goto("wait");
  6854. }
  6855. p = read.player(p_name);
  6856. if(p != null) {
  6857. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  6858. goto("wait");
  6859. }
  6860. from_player_or_id = player.getId(p_uuid);
  6861. world_name = list.getIndex(args, 2);
  6862. world = world.get(world_name);
  6863. if(world == null) {
  6864. msg.prefix(player, prefix_world, "This world is not loaded.");
  6865. goto("wait");
  6866. }
  6867. }
  6868. inv.loadFromPlayer(player, from_player_or_id, world);
  6869. msg.prefix(player, prefix_commands, "Inventory loaded.");
  6870. goto("wait");
  6871. }
  6872. goto("wait");
  6873. @boost
  6874. entity.throw(player, 0, 5, 0);
  6875. goto("wait");
  6876. @memory
  6877. msg.prefix(player, prefix_commands, concat("Used RAM: ", text.number(usedMemory()), " / ", text.number(math.round(allocatedMemory())), " MB"));
  6878. goto("wait");
  6879. @world
  6880. if(size == 0) {
  6881. @world_syntax
  6882. msg.prefix(player, prefix_world, "/world ...");
  6883. msg(player, "§b - info <world> §rShows info about a world");
  6884. msg(player, "§b - tp <world> [player] §rTeleports a player to a world");
  6885. msg(player, "§b - list §rShows all loaded worlds");
  6886. msg(player, "§b - load <world> §rLoads a world");
  6887. msg(player, "§b - unload <world> §rUnloads a world (removes it from memory)");
  6888. msg(player, "§b - setspawn §rSets the world's spawn");
  6889. msg(player, "§b - diffi <world> <diffi> §rSets the world's difficulty");
  6890. goto("wait");
  6891. }
  6892. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6893. if(arg0 == "info") {
  6894. msg(player, getSpacer());
  6895. world = loc.getWorld(entity.getLocation(player));
  6896. msg(player, "§6World: §r", world.getName(world));
  6897. msg(player, "§6Rain: §r", world.hasStorm(world));
  6898. time = world.getTime(world);
  6899. while(time >= 24000) {
  6900. time -= 24000;
  6901. }
  6902. msg(player, "§6Zeit: §r", text.number(time));
  6903. goto("wait");
  6904. }
  6905. if(arg0 == "tp") {
  6906. if(size < 2 || size > 3) {
  6907. msg.prefix(player, prefix_world, "§r/world tp <world> [player]");
  6908. goto("wait");
  6909. }
  6910. if(size >= 2) {
  6911. world_name = text.toLowerCase(list.getIndex(args, 1));
  6912. world = world.get(world_name);
  6913. if(world == null) {
  6914. msg.prefix(player, prefix_world, "This world is not loaded.");
  6915. goto("wait");
  6916. }
  6917. }
  6918. if(size == 3) {
  6919. affectedname = list.getIndex(args, 2);
  6920. affectedplayer = read.player(affectedname);
  6921. if(affectedplayer == null) {
  6922. msg.prefix(player, prefix_world, "This player is not online.");
  6923. goto("wait");
  6924. }
  6925. }
  6926. if(player.hasMinigame(affectedplayer)) {
  6927. if(size == 3) {
  6928. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  6929. } else {
  6930. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6931. }
  6932. goto("wait");
  6933. }
  6934. if(player != affectedplayer) {
  6935. affectedname = player.getName(affectedplayer);
  6936. msg.prefix(player, prefix_world, concat(affectedname, " was teleported to the spawn of the world ", world_name, "."));
  6937. }
  6938. if(world_name == "games") {
  6939. loc = world.getGamesSpawn();
  6940. } elseif(world_name == "creative") {
  6941. loc = world.getCreativeSpawn();
  6942. } elseif(world_name == "story") {
  6943. loc = world.getStorySpawn();
  6944. } else {
  6945. loc = world.getSpawn(world);
  6946. }
  6947. player.teleport(affectedplayer, loc, true);
  6948. goto("wait");
  6949. }
  6950. if(arg0 == "list") {
  6951. msg.prefix(player, prefix_world, "Loaded worlds:");
  6952. worldlist = world.getAll();
  6953. for(i = 0; i < list.getSize(worldlist); i++) {
  6954. msg(player, " - ", world.getName(list.getIndex(worldlist, i)));
  6955. }
  6956. msg(player, getSpacer());
  6957. goto("wait");
  6958. }
  6959. if(arg0 == "load") {
  6960. if(size != 2) {
  6961. msg.prefix(player, prefix_world, "§r/world load <world>");
  6962. goto("wait");
  6963. }
  6964. worldname = list.getIndex(args, 1);
  6965. world = world.get(worldname);
  6966. if(world != null) {
  6967. msg.prefix(player, prefix_world, "This world is already loaded.");
  6968. goto("wait");
  6969. }
  6970. if(!world.register(worldname)) {
  6971. msg.prefix(player, prefix_world, concat("The world ", worldname, " can't be found."));
  6972. goto("wait");
  6973. }
  6974. msg.prefix(player, prefix_world, "The world was loaded.");
  6975. goto("wait");
  6976. }
  6977. if(arg0 == "unload") {
  6978. if(size != 2) {
  6979. msg.prefix(player, prefix_world, "§r/world unload <world>");
  6980. goto("wait");
  6981. }
  6982. worldname = list.getIndex(args, 1);
  6983. world = world.get(worldname);
  6984. if(world == null) {
  6985. msg.prefix(player, prefix_world, "This world is not loaded.");
  6986. goto("wait");
  6987. }
  6988. if(!world.unregister(worldname)) {
  6989. msg.prefix(player, prefix_world, "This world can't be unlaoded.");
  6990. goto("wait");
  6991. }
  6992. msg.prefix(player, prefix_world, "You unlaoded this world.");
  6993. goto("wait");
  6994. }
  6995. if(arg0 == "setspawn") {
  6996. location = entity.getLocation(player);
  6997. world.setSpawn(location, 0);
  6998. msg.prefix(player, prefix_world, concat("New spawn of the world ", world.getName(loc.getWorld(location)), " set."));
  6999. goto("wait");
  7000. }
  7001. if(arg0 == "diffi") {
  7002. if(size != 3) {
  7003. msg.prefix(player, prefix_world, "§r/world diffi <world> <diffi>");
  7004. goto("wait");
  7005. }
  7006. worldname = list.getIndex(args, 1);
  7007. world = world.get(worldname);
  7008. if(world == null) {
  7009. msg.prefix(player, prefix_world, "This world is not loaded.");
  7010. goto("wait");
  7011. }
  7012. diffi_string = list.getIndex(args, 2);
  7013. if(diffi_string != "PEACEFUL" || diffi_string != "EASY" || diffi_string != "NORMAL" || diffi_string != "HARD") {
  7014. msg.prefix(player, prefix_world, "False input.");
  7015. goto("wait");
  7016. }
  7017. world.setDiffi(world, diffi_string);
  7018. msg.prefix(player, prefix_world, "Difficulty changed.");
  7019. goto("wait");
  7020. }
  7021. goto("world_syntax");
  7022. @giveup
  7023. script_id = quest.getFromPlayer(player);
  7024. if(script_id == null) {
  7025. msg.prefix(player, prefix_quest, "You are not in a quest.");
  7026. goto("wait");
  7027. }
  7028. script = script.getFromId(script_id);
  7029. if(script == null) {
  7030. msg.prefix(player, prefix_quest, "You have no quest.");
  7031. goto("wait");
  7032. }
  7033. setScriptVar("player", player);
  7034. script.callEvent("quest_term", script);
  7035. quest.term(script, player);
  7036. msg.prefix(player, prefix_quest, "Quest termed.");
  7037. goto("wait");
  7038. @leave
  7039. set = player.getMinigameIds(player);
  7040. iter = set.iterator(set);
  7041. if(hasNext(iter)) {
  7042. script_id = next(iter);
  7043. script = script.getFromId(script_id);
  7044. if(script == null) {
  7045. snuvi.debug(concat("Player left game without existing gamescript ", set));
  7046. 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.");
  7047. player.resetMinigames(player);
  7048. entity.teleport(player, gamesspawn);
  7049. goto("wait");
  7050. }
  7051. minigame.hub(script, player);
  7052. goto("wait");
  7053. }
  7054. msg.prefix(player, "§dScript", "You are not in a minigame.");
  7055. goto("wait");
  7056. function minigame.hub(script, player) {
  7057. script.setVar(script, "player", player);
  7058. script.callEvent("player_giveup", script);
  7059. }
  7060. @jail
  7061. if(size != 1) {
  7062. msg.prefix(player, prefix_commands, "/jail <player>");
  7063. } else {
  7064. p_name = list.getIndex(args, 0);
  7065. if(!checkIfEverOnline(p_name)) {
  7066. msg.prefix(player, prefix_jail, "This player has never been online.");
  7067. goto("wait");
  7068. }
  7069. p_uuid = player.getUuid(p_name);
  7070. if(isJailed(p_uuid)) {
  7071. msg.prefix(player, prefix_jail, "This player is already jailed.");
  7072. goto("wait");
  7073. }
  7074. if(player_name == p_name) {
  7075. msg.prefix(player, prefix_jail, "Self-Jailing isn't a good idea.");
  7076. goto("wait");
  7077. }
  7078. if(!isOnline(p_name)) {
  7079. msg.prefix(player, prefix_jail, "This player is not online.");
  7080. goto("wait");
  7081. }
  7082. p = read.player(p_name);
  7083. if(perm.has(p, "jail")) {
  7084. msg.prefix(player, prefix_jail, "You can't jail this player.");
  7085. goto("wait");
  7086. }
  7087. list.add(jailed_list, p_uuid);
  7088. msg.prefix(player, prefix_jail, concat(p_name, " wurde gejailt"));
  7089. showJail(p_name);
  7090. if(!jail_loop_active) {
  7091. sgoto(5, "jailloop");
  7092. }
  7093. }
  7094. goto("wait");
  7095. @unjail
  7096. if(size != 1) {
  7097. msg.prefix(player, prefix_commands, "/unjail <player>");
  7098. } else {
  7099. p_name = list.getIndex(args, 0);
  7100. if(!checkIfEverOnline(p_name)) {
  7101. msg.prefix(player, prefix_jail, "This player has never been online.");
  7102. goto("wait");
  7103. }
  7104. p_uuid = player.getUuid(p_name);
  7105. if(!isJailed(p_uuid)) {
  7106. msg.prefix(player, prefix_jail, "This player is not jailed.");
  7107. goto("wait");
  7108. }
  7109. list.remove(jailed_list, p_uuid);
  7110. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  7111. }
  7112. goto("wait");
  7113. //--------------------------------------------------
  7114. //Inv-Utils
  7115. //--------------------------------------------------
  7116. function inv.show(from_player, to_player) {
  7117. inv = inv.new("333333333333333333333333333333333333");
  7118. set.add($invseeids, inv.getId(inv));
  7119. for(slot = 0; slot <= 35; slot++) {
  7120. inv.setItem(inv, slot, player.getInvSlot(from_player, slot));
  7121. }
  7122. inv.open(inv, to_player, concat("Inventory of ", player.getName(from_player)));
  7123. }
  7124. //--------------------------------------------------
  7125. //Databank-Utils
  7126. //--------------------------------------------------
  7127. function databank.isExistingTable(table) {
  7128. temp = false;
  7129. stmt = databank.prepare("SHOW TABLES");
  7130. result = databank.execute(stmt);
  7131. while(databank.next(result)) {
  7132. if(table == databank.getString(result, 1)) {
  7133. temp = true;
  7134. break;
  7135. }
  7136. }
  7137. databank.close(result);
  7138. databank.close(stmt);
  7139. return temp;
  7140. }
  7141. function databank.getTableFields(table) {
  7142. fields = list.new();
  7143. stmt = databank.prepare(concat("SHOW FIELDS FROM ", table));
  7144. result = databank.execute(stmt);
  7145. while(databank.next(result)) {
  7146. list.add(fields, databank.getString(result, 1));
  7147. }
  7148. databank.close(result);
  7149. databank.close(stmt);
  7150. return fields;
  7151. }
  7152. function databank.getTableDatatypes(table) {
  7153. stmt = databank.prepare(concat("SHOW CREATE TABLE ", table));
  7154. result = databank.execute(stmt);
  7155. if(databank.next(result)) {
  7156. temp = databank.getString(result, 2);
  7157. }
  7158. databank.close(result);
  7159. databank.close(stmt);
  7160. return temp;
  7161. }
  7162. //--------------------------------------------------
  7163. //Tipp-Utils
  7164. //--------------------------------------------------
  7165. function tipp.register(tipp_key, tipp_value) {
  7166. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  7167. databank.setString(stmt, 1, tipp_key);
  7168. databank.setString(stmt, 2, tipp_value);
  7169. databank.setString(stmt, 3, tipp_value);
  7170. databank.workerExecute(stmt);
  7171. }
  7172. function tipp.get(tipp_key) {
  7173. tipp_value = null;
  7174. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  7175. databank.setString(stmt, 1, tipp_key);
  7176. result = databank.execute(stmt);
  7177. while(databank.next(result)) {
  7178. tipp_value = databank.getString(result, 1);
  7179. }
  7180. databank.close(result);
  7181. databank.close(stmt);
  7182. return tipp_value;
  7183. }
  7184. //--------------------------------------------------
  7185. //Warp-Utils
  7186. //--------------------------------------------------
  7187. function warp.create(warp_group, warp_name, location) {
  7188. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7189. config.set(config, "world", world.getName(loc.getWorld(location)));
  7190. config.set(config, "x", loc.getX(location));
  7191. config.set(config, "y", loc.getY(location));
  7192. config.set(config, "z", loc.getZ(location));
  7193. config.set(config, "yaw", loc.getYaw(location));
  7194. config.set(config, "pitch", loc.getPitch(location));
  7195. config.saveAsync(config);
  7196. }
  7197. function warp.exists(warp_group, warp_name) {
  7198. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7199. return config.exists(config);
  7200. }
  7201. function warp.getGroups() {
  7202. file = file.new("scripts/configs/warps");
  7203. file_list = file.getList(file);
  7204. groups_list = list.new();
  7205. iter = list.iterator(file_list);
  7206. while(hasNext(iter)) {
  7207. warp = file.getName(next(iter));
  7208. list.add(groups_list, warp);
  7209. }
  7210. return groups_list;
  7211. }
  7212. function warp.get(warp_group, warp_name) {
  7213. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7214. if(config.exists(config)) {
  7215. config.load(config);
  7216. }
  7217. world_name = text.convert(config.getString(config, "world", "null"));
  7218. if(world_name == null) {
  7219. return null;
  7220. }
  7221. world = world.get(world_name);
  7222. x = config.getDouble(config, "x", 0);
  7223. y = config.getDouble(config, "y", 100);
  7224. z = config.getDouble(config, "z", 0);
  7225. yaw = config.getDouble(config, "yaw", 0);
  7226. pitch = config.getDouble(config, "pitch", 0);
  7227. location = loc.new(world, x, y, z, yaw, pitch);
  7228. return location;
  7229. }
  7230. function warp.delete(warp_group, warp_name) {
  7231. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7232. if(!config.exists(config)) {
  7233. return false;
  7234. }
  7235. config.delete(config);
  7236. return true;
  7237. }
  7238. function warp.getList(warp_group) {
  7239. file = file.new(concat("scripts/configs/warps/", warp_group));
  7240. warps_list = list.new();
  7241. if(file.exists(file)) {
  7242. file_list = file.getList(file);
  7243. iter = list.iterator(file_list);
  7244. while(hasNext(iter)) {
  7245. warp = file.getName(next(iter));
  7246. warp = text.replace(warp, ".snuvic", "");
  7247. list.add(warps_list, warp);
  7248. }
  7249. }
  7250. return warps_list;
  7251. }
  7252. //--------------------------------------------------
  7253. //Home-Utils
  7254. //--------------------------------------------------
  7255. function home.set(player_id, home_name, location) {
  7256. stmt = databank.prepare("INSERT INTO homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  7257. databank.setInt(stmt, 1, player_id);
  7258. databank.setString(stmt, 2, home_name);
  7259. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  7260. databank.setInt(stmt, 4, loc.getX(location));
  7261. databank.setInt(stmt, 5, loc.getY(location));
  7262. databank.setInt(stmt, 6, loc.getZ(location));
  7263. databank.setInt(stmt, 7, loc.getYaw(location));
  7264. databank.setInt(stmt, 8, loc.getPitch(location));
  7265. databank.workerExecute(stmt);
  7266. }
  7267. function home.delete(player_id, home_name) {
  7268. stmt = databank.prepare("DELETE FROM homes WHERE player_id = ? AND name = ?;");
  7269. databank.setInt(stmt, 1, player_id);
  7270. databank.setString(stmt, 2, home_name);
  7271. databank.workerExecute(stmt);
  7272. }
  7273. function home.getLocation(player_id, home_name) {
  7274. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM homes WHERE player_id = ? AND name = ?;");
  7275. databank.setInt(stmt, 1, player_id);
  7276. databank.setString(stmt, 2, home_name);
  7277. result = databank.execute(stmt);
  7278. if(databank.next(result)) {
  7279. world = world.get(databank.getString(result, 1));
  7280. if(world == null) {
  7281. return null;
  7282. }
  7283. x = databank.getDouble(result, 2);
  7284. y = databank.getDouble(result, 3);
  7285. z = databank.getDouble(result, 4);
  7286. yaw = databank.getDouble(result, 5);
  7287. pitch = databank.getDouble(result, 6);
  7288. location = loc.new(world, x, y, z, yaw, pitch);
  7289. }
  7290. databank.close(result);
  7291. databank.close(stmt);
  7292. return location;
  7293. }
  7294. function home.exists(player_id, home_name) {
  7295. stmt = databank.prepare("SELECT player_id FROM homes WHERE player_id = ? AND name = ?;");
  7296. databank.setInt(stmt, 1, player_id);
  7297. databank.setString(stmt, 2, home_name);
  7298. result = databank.execute(stmt);
  7299. if(databank.next(result)) {
  7300. temp = true;
  7301. } else {
  7302. temp = false;
  7303. }
  7304. databank.close(result);
  7305. databank.close(stmt);
  7306. return temp;
  7307. }
  7308. function home.getList(player_id) {
  7309. homes_list = list.new();
  7310. stmt = databank.prepare("SELECT name FROM homes WHERE player_id = ?;");
  7311. databank.setInt(stmt, 1, player_id);
  7312. result = databank.execute(stmt);
  7313. while(databank.next(result)) {
  7314. list.add(homes_list, databank.getString(result, 1));
  7315. }
  7316. databank.close(result);
  7317. databank.close(stmt);
  7318. return homes_list;
  7319. }
  7320. function hasTpaRequest(player_uuid, aim_uuid) {
  7321. for(i = 0; i < list.getSize($tpa_request); i++) {
  7322. array = list.getIndex($tpa_request, i);
  7323. if(array[0] == player_uuid && array[1] == aim_uuid) {
  7324. list.removeIndex($tpa_request, i);
  7325. return true;
  7326. }
  7327. }
  7328. return false;
  7329. }
  7330. function addTpaRequest(player_uuid, aim_uuid) {
  7331. array = array.new(2);
  7332. array[0] = player_uuid;
  7333. array[1] = aim_uuid;
  7334. list.add($tpa_request, array);
  7335. }
  7336. function setCommandHelps() {
  7337. command.clearHelp();
  7338. command.clearIgnored();
  7339. command.addIgnored("teleport");
  7340. command.addIgnored("time");
  7341. command.addIgnored("help");
  7342. command.addIgnored("ban");
  7343. command.addIgnored("kick");
  7344. command.addIgnored("kill");
  7345. command.addIgnored("gamemode");
  7346. addCommandHelp("silentjoin");
  7347. addCommandHelp("nowb");
  7348. addCommandHelp("coords");
  7349. addCommandHelp("ping");
  7350. addCommandHelp("rank");
  7351. addCommandHelp("back");
  7352. addCommandHelp("boost");
  7353. addCommandHelp("bug");
  7354. addCommandHelp("report");
  7355. addCommandHelp("skills");
  7356. addCommandHelp("startgame");
  7357. addCommandHelp("top");
  7358. addCommandHelp("ride");
  7359. addCommandHelp("repair");
  7360. addCommandHelp("live");
  7361. addCommandHelp("hack");
  7362. addCommandHelpChildPlayer("mute");
  7363. addCommandHelpChildPlayer("unmute");
  7364. addCommandHelpChildPlayer("tpa");
  7365. addCommandHelpChildPlayer("tpaccept");
  7366. addCommandHelpChildPlayer("tpahere");
  7367. addCommandHelpChildPlayer("tpaccepthere");
  7368. addCommandHelpChildPlayer("head");
  7369. addCommandHelpChildPlayer("seen");
  7370. addCommandHelpChildPlayer("heal");
  7371. addCommandHelpChildPlayer("feed");
  7372. help = addCommandHelp("lightning");
  7373. addCommandAlias(help, "thor", "lightning");
  7374. help = addCommandHelp("color");
  7375. addCommandAlias(help, "colour", "color");
  7376. help = addCommandHelp("iteminfo");
  7377. addCommandAlias(help, "itemdb", "iteminfo");
  7378. help = addCommandHelp("head");
  7379. addCommandAlias(help, "skull", "head");
  7380. help = addCommandHelp("memory");
  7381. addCommandAlias(help, "ram", "memory");
  7382. help = addCommandHelp("afk");
  7383. addCommandAlias(help, "afklo", "afk");
  7384. help = addCommandHelp("leave");
  7385. addCommandAlias(help, "l", "leave");
  7386. addCommandAlias(help, "hub", "leave");
  7387. help = addCommandHelp("giveup");
  7388. addCommandAlias(help, "fuckit", "giveup");
  7389. help = command.newHelp("vanish", "vanish");
  7390. //vanish [on] [player]
  7391. helpArg0 = command.newHelpLiteral("on");
  7392. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7393. command.addHelpChild(help, helpArg0);
  7394. //vanish [off] [player]
  7395. helpArg0 = command.newHelpLiteral("off");
  7396. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7397. command.addHelpChild(help, helpArg0);
  7398. command.addHelp(help);
  7399. addCommandAlias(help, "v", "vanish");
  7400. help = command.newHelp("start", "start");
  7401. command.addHelpChild(help, command.newHelpLiteral("ai"));
  7402. command.addHelpChild(help, command.newHelpLiteral("chat"));
  7403. command.addHelpChild(help, command.newHelpLiteral("commands"));
  7404. command.addHelpChild(help, command.newHelpLiteral("creative"));
  7405. command.addHelpChild(help, command.newHelpLiteral("damage"));
  7406. command.addHelpChild(help, command.newHelpLiteral("doors"));
  7407. command.addHelpChild(help, command.newHelpLiteral("harvest"));
  7408. command.addHelpChild(help, command.newHelpLiteral("herobrine"));
  7409. command.addHelpChild(help, command.newHelpLiteral("games"));
  7410. command.addHelpChild(help, command.newHelpLiteral("mails"));
  7411. command.addHelpChild(help, command.newHelpLiteral("perms"));
  7412. command.addHelpChild(help, command.newHelpLiteral("pumpkin"));
  7413. command.addHelpChild(help, command.newHelpLiteral("scheduler"));
  7414. command.addHelpChild(help, command.newHelpLiteral("shop"));
  7415. command.addHelpChild(help, command.newHelpLiteral("sitting"));
  7416. command.addHelpChild(help, command.newHelpLiteral("stats"));
  7417. command.addHelpChild(help, command.newHelpLiteral("story"));
  7418. command.addHelpChild(help, command.newHelpLiteral("survival"));
  7419. command.addHelpChild(help, command.newHelpLiteral("ticket"));
  7420. command.addHelpChild(help, command.newHelpLiteral("voxel"));
  7421. command.addHelp(help);
  7422. help = command.newHelp("gamemode", "gamemode");
  7423. helpArg0 = command.newHelpLiteral("adventure");
  7424. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7425. command.addHelpChild(help, helpArg0);
  7426. helpArg0 = command.newHelpLiteral("creative");
  7427. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7428. command.addHelpChild(help, helpArg0);
  7429. helpArg0 = command.newHelpLiteral("spectator");
  7430. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7431. command.addHelpChild(help, helpArg0);
  7432. helpArg0 = command.newHelpLiteral("survival");
  7433. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7434. command.addHelpChild(help, helpArg0);
  7435. helpArg0 = command.newHelpInt("0-3", 0, 3);
  7436. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7437. command.addHelpChild(help, helpArg0);
  7438. command.addHelp(help);
  7439. addCommandAlias(help, "gm", "gamemode");
  7440. help = command.newHelp("databank", "databank");
  7441. //databank showtables
  7442. command.addHelpChild(help, command.newHelpLiteral("showtables"));
  7443. //databank showfields <table>
  7444. helpArg0 = command.newHelpLiteral("showfields");
  7445. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  7446. command.addHelpChild(help, helpArg0);
  7447. //databank showdataypes <table>
  7448. helpArg0 = command.newHelpLiteral("showdataypes");
  7449. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  7450. command.addHelpChild(help, helpArg0);
  7451. command.addHelp(help);
  7452. help = command.newHelp("copyisland", "copyisland");
  7453. //copyisland copy/paste
  7454. command.addHelpChild(help, command.newHelpLiteral("copy"));
  7455. command.addHelpChild(help, command.newHelpLiteral("paste"));
  7456. //copyisland pos1/pos2
  7457. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  7458. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  7459. command.addHelp(help);
  7460. help = command.newHelp("fly", "fly");
  7461. helpArg0 = command.newHelpSpecial("Player", "player", "fly.other");
  7462. command.addHelpChild(helpArg0, command.newHelpLiteral("on"));
  7463. command.addHelpChild(helpArg0, command.newHelpLiteral("off"));
  7464. command.addHelpChild(help, helpArg0);
  7465. command.addHelp(help);
  7466. help = command.newHelp("allsounds", "allsounds");
  7467. command.addHelpChild(help, command.newHelpLiteral("start"));
  7468. command.addHelpChild(help, command.newHelpLiteral("stop"));
  7469. command.addHelp(help);
  7470. help = command.newHelp("spawn", "spawn");
  7471. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7472. command.addHelp(help);
  7473. help = command.newHelp("games", "games");
  7474. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7475. command.addHelp(help);
  7476. help = command.newHelp("story", "story");
  7477. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7478. command.addHelp(help);
  7479. help = command.newHelp("ass", "ass");
  7480. //ass set <name>
  7481. helpArg0 = command.newHelpLiteral("set");
  7482. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7483. command.addHelpChild(help, helpArg0);
  7484. //ass rename <name>
  7485. helpArg0 = command.newHelpLiteral("rename");
  7486. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7487. command.addHelpChild(help, helpArg0);
  7488. //ass remove <radius>
  7489. helpArg0 = command.newHelpLiteral("remove");
  7490. command.addHelpChild(helpArg0, command.newHelpInt("radius", 0, 30));
  7491. command.addHelpChild(help, helpArg0);
  7492. command.addHelp(help);
  7493. help = command.newHelp("tppos", "tppos");
  7494. helpArg0 = command.newHelpInt("x", -16000, 16000);
  7495. helpArg1 = command.newHelpInt("y", 0, 1000);
  7496. helpArg2 = command.newHelpInt("z", -16000, 16000);
  7497. helpArg3 = command.newHelpString("world", false);
  7498. helpArg4 = command.newHelpSpecial("Player", "player");
  7499. command.addHelpChild(helpArg3, helpArg4);
  7500. command.addHelpChild(helpArg2, helpArg3);
  7501. command.addHelpChild(helpArg1, helpArg2);
  7502. command.addHelpChild(helpArg0, helpArg1);
  7503. command.addHelpChild(help, helpArg0);
  7504. command.addHelp(help);
  7505. help = command.newHelp("stats", "stats");
  7506. addStatsGameHelp(help, "BedWars");
  7507. addStatsGameHelp(help, "RageMode");
  7508. addStatsGameHelp(help, "Jump'n'Run");
  7509. addStatsGameHelp(help, "Rebuild");
  7510. addStatsGameHelp(help, "FastBridge");
  7511. addStatsGameHelp(help, "SnowGame");
  7512. addStatsGameHelp(help, "TJR");
  7513. addStatsGameHelp(help, "IJR");
  7514. addStatsGameHelp(help, "Letters");
  7515. addStatsGameHelp(help, "Sammelfieber");
  7516. addStatsGameHelp(help, "Buttons");
  7517. addStatsGameHelp(help, "HideAndSeek");
  7518. addStatsGameHelp(help, "Inverting");
  7519. addStatsGameHelp(help, "Spleef");
  7520. addStatsGameHelp(help, "Knockfight");
  7521. addStatsGameHelp(help, "Leapfrog");
  7522. addStatsGameHelp(help, "Parcour");
  7523. addStatsGameHelp(help, "Halma");
  7524. addStatsGameHelp(help, "ShoppingChaos");
  7525. addStatsGameHelp(help, "MengerRun");
  7526. command.addHelp(help);
  7527. help = command.newHelp("setspawn", "setspawn");
  7528. command.addHelpChild(help, command.newHelpLiteral("server"));
  7529. command.addHelpChild(help, command.newHelpLiteral("games"));
  7530. command.addHelpChild(help, command.newHelpLiteral("creative"));
  7531. command.addHelpChild(help, command.newHelpLiteral("story"));
  7532. command.addHelp(help);
  7533. help = command.newHelp("datatools", "datatools");
  7534. //datatools hide <name>
  7535. helpArg0 = command.newHelpLiteral("hide");
  7536. command.addHelpChild(helpArg0, command.newHelpLiteral("enchantments"));
  7537. command.addHelpChild(helpArg0, command.newHelpLiteral("attributes"));
  7538. command.addHelpChild(helpArg0, command.newHelpLiteral("unbreakable"));
  7539. command.addHelpChild(helpArg0, command.newHelpLiteral("destroys"));
  7540. command.addHelpChild(helpArg0, command.newHelpLiteral("placed_on"));
  7541. command.addHelpChild(helpArg0, command.newHelpLiteral("potion_effects"));
  7542. command.addHelpChild(help, helpArg0);
  7543. //datatools attribute <attribute> <slot> <double> <op>
  7544. helpArg0 = command.newHelpLiteral("attribute");
  7545. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR"));
  7546. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR_TOUGHNESS"));
  7547. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_DAMAGE"));
  7548. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("KNOCKBACK_RESISTANCE"));
  7549. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MAX_HEALTH"));
  7550. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MOVEMENT_SPEED"));
  7551. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_SPEED"));
  7552. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("LUCK"));
  7553. command.addHelpChild(help, helpArg0);
  7554. //datatools hide-entity
  7555. command.addHelpChild(help, command.newHelpLiteral("hide-entity"));
  7556. //datatools show-entity
  7557. command.addHelpChild(help, command.newHelpLiteral("show-entity"));
  7558. //datatools name-entity <name>
  7559. helpArg0 = command.newHelpLiteral("name-entity");
  7560. helpArg1 = command.newHelpString("name", true);
  7561. command.addHelpChild(helpArg0, helpArg1);
  7562. command.addHelpChild(help, helpArg0);
  7563. //datatools name-visibility <name>
  7564. helpArg0 = command.newHelpLiteral("name-visibility");
  7565. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  7566. command.addHelpChild(help, helpArg0);
  7567. //datatools name-item <name>
  7568. helpArg0 = command.newHelpLiteral("name-item");
  7569. helpArg1 = command.newHelpString("name", true);
  7570. command.addHelpChild(helpArg0, helpArg1);
  7571. command.addHelpChild(help, helpArg0);
  7572. //datatools lore-item <line> <lore>
  7573. helpArg0 = command.newHelpLiteral("lore-item");
  7574. helpArg1 = command.newHelpInt("line", 0, 1000);
  7575. helpArg2 = command.newHelpString("lore", true);
  7576. command.addHelpChild(helpArg1, helpArg2);
  7577. command.addHelpChild(helpArg0, helpArg1);
  7578. command.addHelpChild(help, helpArg0);
  7579. command.addHelp(help);
  7580. addCommandAlias(help, "dt", "datatools");
  7581. help = command.newHelp("voxel", "voxel");
  7582. command.addHelpChild(help, command.newHelpInt("radius", 1, 5));
  7583. command.addHelpChild(help, command.newHelpLiteral("block"));
  7584. command.addHelp(help);
  7585. help = command.newHelp("help", "help");
  7586. command.addHelpChild(help, command.newHelpInt("page", 1, 100));
  7587. command.addHelp(help);
  7588. addCommandAlias(help, "mimimi", "help");
  7589. help = command.newHelp("kill", "kill");
  7590. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "kill.other"));
  7591. command.addHelp(help);
  7592. addCommandAlias(help, "suicide", "kill");
  7593. help = command.newHelp("tempfly", "tempfly");
  7594. helpArg0 = command.newHelpSpecial("Player", "player");
  7595. command.addHelpChild(helpArg0, command.newHelpInt("seconds", 1, 10000));
  7596. command.addHelpChild(help, helpArg0);
  7597. command.addHelp(help);
  7598. help = command.newHelp("tempban", "tempban");
  7599. helpArg0 = command.newHelpSpecial("Player", "player");
  7600. helpArg1 = command.newHelpInt("days", 1, 100);
  7601. helpArg2 = command.newHelpInt("hours", 1, 100);
  7602. helpArg3 = command.newHelpInt("minutes", 1, 100);
  7603. command.addHelpChild(helpArg3, command.newHelpString("reason", true));
  7604. command.addHelpChild(helpArg2, helpArg3);
  7605. command.addHelpChild(helpArg1, helpArg2);
  7606. command.addHelpChild(helpArg0, helpArg1);
  7607. command.addHelpChild(help, helpArg0);
  7608. command.addHelp(help);
  7609. help = command.newHelp("ban", "ban");
  7610. helpArg0 = command.newHelpSpecial("Player", "player");
  7611. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7612. command.addHelpChild(help, helpArg0);
  7613. command.addHelp(help);
  7614. help = command.newHelp("silentban", "silentban");
  7615. helpArg0 = command.newHelpSpecial("Player", "player");
  7616. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7617. command.addHelpChild(help, helpArg0);
  7618. command.addHelp(help);
  7619. help = command.newHelp("kick", "kick");
  7620. helpArg0 = command.newHelpSpecial("Player", "player");
  7621. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7622. command.addHelpChild(help, helpArg0);
  7623. command.addHelp(help);
  7624. help = command.newHelp("silentkick", "silentkick");
  7625. helpArg0 = command.newHelpSpecial("Player", "player");
  7626. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7627. command.addHelpChild(help, helpArg0);
  7628. command.addHelp(help);
  7629. help = command.newHelp("time", "time");
  7630. //time set <time>
  7631. helpArg0 = command.newHelpLiteral("set");
  7632. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  7633. command.addHelpChild(help, helpArg0);
  7634. //time add <time>
  7635. helpArg0 = command.newHelpLiteral("add");
  7636. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  7637. command.addHelpChild(help, helpArg0);
  7638. //time day / noon / night / midnight
  7639. command.addHelpChild(help, command.newHelpLiteral("day"));
  7640. command.addHelpChild(help, command.newHelpLiteral("noon"));
  7641. command.addHelpChild(help, command.newHelpLiteral("night"));
  7642. command.addHelpChild(help, command.newHelpLiteral("midnight"));
  7643. command.addHelp(help);
  7644. help = command.newHelp("enderchest", "enderchest");
  7645. //enderchest [player] <from-player>
  7646. helpArg0 = command.newHelpSpecial("Player", "player");
  7647. command.addHelpChild(helpArg0, command.newHelpString("from-player", false));
  7648. command.addHelpChild(help, helpArg0);
  7649. //enderchest [player] <from-player>
  7650. command.addHelpChild(help, command.newHelpString("from-player", false));
  7651. command.addHelp(help);
  7652. help = command.newHelp("nickname", "nickname");
  7653. command.addHelpChild(help, command.newHelpString("name", true));
  7654. command.addHelpChild(help, command.newHelpLiteral("remove"));
  7655. command.addHelp(help);
  7656. help = command.newHelp("perm", "perm");
  7657. //perm give <player> <perm>
  7658. helpArg0 = command.newHelpLiteral("give");
  7659. helpArg1 = command.newHelpSpecial("Player", "player");
  7660. command.addHelpChild(helpArg1, command.newHelpLiteral("admin"));
  7661. command.addHelpChild(helpArg1, command.newHelpLiteral("mod"));
  7662. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  7663. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  7664. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  7665. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  7666. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  7667. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  7668. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  7669. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  7670. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  7671. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass"));
  7672. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  7673. command.addHelpChild(helpArg0, helpArg1);
  7674. command.addHelpChild(help, helpArg0);
  7675. //perm remove <player> <perm>
  7676. helpArg0 = command.newHelpLiteral("remove");
  7677. helpArg1 = command.newHelpSpecial("Player", "player");
  7678. command.addHelpChild(helpArg1, command.newHelpLiteral("admin"));
  7679. command.addHelpChild(helpArg1, command.newHelpLiteral("mod"));
  7680. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  7681. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  7682. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  7683. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  7684. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  7685. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  7686. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  7687. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  7688. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass"));
  7689. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  7690. command.addHelpChild(helpArg0, helpArg1);
  7691. command.addHelpChild(help, helpArg0);
  7692. //perm removeall <player>
  7693. helpArg0 = command.newHelpLiteral("removeall");
  7694. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7695. command.addHelpChild(help, helpArg0);
  7696. //perm list <player>
  7697. helpArg0 = command.newHelpLiteral("list");
  7698. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7699. command.addHelpChild(help, helpArg0);
  7700. //perm toggle
  7701. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  7702. command.addHelp(help);
  7703. help = command.newHelp("script", "script");
  7704. //script start <scripts>
  7705. helpArg0 = command.newHelpLiteral("start");
  7706. command.addHelpChild(helpArg0, command.newHelpString("scrips...", true));
  7707. command.addHelpChild(help, helpArg0);
  7708. //script see
  7709. command.addHelpChild(help, command.newHelpLiteral("see"));
  7710. //script term
  7711. helpArg0 = command.newHelpLiteral("term");
  7712. command.addHelpChild(helpArg0, command.newHelpLiteral("all"));
  7713. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 1000000));
  7714. command.addHelpChild(help, helpArg0);
  7715. command.addHelp(help);
  7716. addCommandAlias(help, "s", "script");
  7717. help = command.newHelp("home", "home");
  7718. //home set
  7719. helpArg0 = command.newHelpLiteral("set");
  7720. command.addHelpChild(helpArg0, command.newHelpString("home", false));
  7721. command.addHelpChild(help, helpArg0);
  7722. //home delete
  7723. helpArg0 = command.newHelpLiteral("delete");
  7724. command.addHelpChild(helpArg0, command.newHelpString("home", false));
  7725. command.addHelpChild(help, helpArg0);
  7726. //home list
  7727. helpArg0 = command.newHelpLiteral("list");
  7728. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  7729. command.addHelpChild(help, helpArg0);
  7730. //home <name>
  7731. helpArg0 = command.newHelpString("home", false);
  7732. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  7733. command.addHelpChild(help, helpArg0);
  7734. command.addHelp(help);
  7735. help = command.newHelp("plot", "plot");
  7736. //plot info
  7737. command.addHelpChild(help, command.newHelpLiteral("info"));
  7738. command.addHelpChild(help, command.newHelpLiteral("i"));
  7739. //plot pos1/pos2
  7740. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  7741. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  7742. //plot create/create3D
  7743. command.addHelpChild(help, command.newHelpLiteral("create"));
  7744. command.addHelpChild(help, command.newHelpLiteral("create3D"));
  7745. //plot remove
  7746. helpArg0 = command.newHelpLiteral("remove");
  7747. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 10000));
  7748. command.addHelpChild(help, helpArg0);
  7749. //plot name <name>
  7750. helpArg0 = command.newHelpLiteral("name");
  7751. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7752. helpArg1 = command.newHelpInt("id", 0, 10000);
  7753. command.addHelpChild(helpArg1, command.newHelpString("name", true));
  7754. command.addHelpChild(helpArg0, helpArg1);
  7755. command.addHelpChild(help, helpArg0);
  7756. //plot share <name>
  7757. helpArg0 = command.newHelpLiteral("share");
  7758. helpArg1 = command.newHelpSpecial("Player", "player");
  7759. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7760. command.addHelpChild(helpArg0, helpArg1);
  7761. command.addHelpChild(help, helpArg0);
  7762. //plot kick <name>
  7763. helpArg0 = command.newHelpLiteral("kick");
  7764. helpArg1 = command.newHelpSpecial("Player", "player");
  7765. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7766. command.addHelpChild(helpArg0, helpArg1);
  7767. command.addHelpChild(help, helpArg0);
  7768. //plot raise
  7769. command.addHelpChild(help, command.newHelpLiteral("raise"));
  7770. //plot leader <name>
  7771. helpArg0 = command.newHelpLiteral("leader");
  7772. helpArg1 = command.newHelpSpecial("Player", "player");
  7773. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7774. command.addHelpChild(helpArg0, helpArg1);
  7775. command.addHelpChild(help, helpArg0);
  7776. //plot mod <name>
  7777. helpArg0 = command.newHelpLiteral("mod");
  7778. helpArg1 = command.newHelpSpecial("Player", "player");
  7779. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7780. command.addHelpChild(helpArg0, helpArg1);
  7781. command.addHelpChild(help, helpArg0);
  7782. //plot chest <name>
  7783. helpArg0 = command.newHelpLiteral("chest");
  7784. helpArg1 = command.newHelpSpecial("Player", "player");
  7785. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7786. command.addHelpChild(helpArg0, helpArg1);
  7787. command.addHelpChild(help, helpArg0);
  7788. //plot degrade <name>
  7789. helpArg0 = command.newHelpLiteral("degrade");
  7790. helpArg1 = command.newHelpSpecial("Player", "player");
  7791. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7792. command.addHelpChild(helpArg0, helpArg1);
  7793. command.addHelpChild(help, helpArg0);
  7794. //plot sell <price>
  7795. helpArg0 = command.newHelpLiteral("sell");
  7796. command.addHelpChild(helpArg0, command.newHelpInt("price", 1, 10000));
  7797. command.addHelpChild(help, helpArg0);
  7798. //plot moreinfo
  7799. command.addHelpChild(help, command.newHelpLiteral("moreinfo", "plot.moreinfo"));
  7800. //plot listall
  7801. command.addHelpChild(help, command.newHelpLiteral("listall"));
  7802. //plot flags <int> <boolean>
  7803. helpArg0 = command.newHelpLiteral("flags");
  7804. helpArg1 = command.newHelpInt("int", 1, 1000);
  7805. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  7806. command.addHelpChild(helpArg0, helpArg1);
  7807. command.addHelpChild(help, helpArg0);
  7808. //plot expand <anzahl>
  7809. helpArg0 = command.newHelpLiteral("expand");
  7810. helpArg1 = command.newHelpInt("anzahl", 1, 1000);
  7811. command.addHelpChild(helpArg1, command.newHelpInt("id", 1, 10000));
  7812. command.addHelpChild(helpArg0, helpArg1);
  7813. command.addHelpChild(help, helpArg0);
  7814. command.addHelp(help);
  7815. addCommandAlias(help, "p", "plot");
  7816. help = command.newHelp("warp", "warp");
  7817. //warp set [group] <name>
  7818. helpArg0 = command.newHelpLiteral("set", "warp.create");
  7819. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  7820. helpArg1 = command.newHelpString("group", false, "warp.create");
  7821. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  7822. command.addHelpChild(helpArg0, helpArg1);
  7823. command.addHelpChild(help, helpArg0);
  7824. //warp delete [group] <name>
  7825. helpArg0 = command.newHelpLiteral("delete", "warp.create");
  7826. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  7827. helpArg1 = command.newHelpString("group", false, "warp.create");
  7828. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  7829. command.addHelpChild(helpArg0, helpArg1);
  7830. command.addHelpChild(help, helpArg0);
  7831. //warp groups
  7832. command.addHelpChild(help, command.newHelpLiteral("groups", "warp.create"));
  7833. //warp list [group]
  7834. helpArg0 = command.newHelpLiteral("list");
  7835. command.addHelpChild(helpArg0, command.newHelpString("group", false, "warp.create"));
  7836. command.addHelpChild(help, helpArg0);
  7837. //warp [group] <name>
  7838. helpArg0 = command.newHelpString("name", false);
  7839. command.addHelpChild(help, helpArg0);
  7840. helpArg0 = command.newHelpString("group", false, "warp.create");
  7841. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  7842. command.addHelpChild(help, helpArg0);
  7843. command.addHelp(help);
  7844. help = command.newHelp("teleport", "teleport");
  7845. helpArg0 = command.newHelpSpecial("Player", "player");
  7846. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "to-player", "teleport.other"));
  7847. command.addHelpChild(help, helpArg0);
  7848. command.addHelp(help);
  7849. addCommandAlias(help, "tp", "teleport");
  7850. help = command.newHelp("lastseen", "lastseen");
  7851. command.addHelpChild(help, command.newHelpInt("amount", 1, 100));
  7852. command.addHelp(help);
  7853. help = command.newHelp("human", "human");
  7854. //human spawn
  7855. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  7856. //human set <name>
  7857. helpArg0 = command.newHelpLiteral("set");
  7858. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  7859. command.addHelpChild(help, helpArg0);
  7860. //human setuuid <uuid>
  7861. helpArg0 = command.newHelpLiteral("setuuid");
  7862. command.addHelpChild(helpArg0, command.newHelpString("uuid", false));
  7863. command.addHelpChild(help, helpArg0);
  7864. //human name
  7865. helpArg0 = command.newHelpLiteral("name");
  7866. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7867. command.addHelpChild(help, helpArg0);
  7868. //human kill
  7869. command.addHelpChild(help, command.newHelpLiteral("kill"));
  7870. //human size <scale>
  7871. helpArg0 = command.newHelpLiteral("size");
  7872. command.addHelpChild(helpArg0, command.newHelpInt("scale", 0, 100));
  7873. command.addHelpChild(help, helpArg0);
  7874. //human steve
  7875. command.addHelpChild(help, command.newHelpLiteral("steve"));
  7876. //human alex
  7877. command.addHelpChild(help, command.newHelpLiteral("alex"));
  7878. //human statue
  7879. helpArg0 = command.newHelpLiteral("statue");
  7880. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  7881. command.addHelpChild(help, helpArg0);
  7882. command.addHelp(help);
  7883. help = command.newHelp("mail", "mail");
  7884. //mail <player> <nachricht>
  7885. helpArg0 = command.newHelpSpecial("Player", "player");
  7886. command.addHelpChild(helpArg0, command.newHelpString("nachricht", true));
  7887. command.addHelpChild(help, helpArg0);
  7888. //mail new
  7889. command.addHelpChild(help, command.newHelpLiteral("new"));
  7890. //mail inbox
  7891. command.addHelpChild(help, command.newHelpLiteral("inbox"));
  7892. //mail outbox
  7893. command.addHelpChild(help, command.newHelpLiteral("outbox"));
  7894. //mail reset
  7895. command.addHelpChild(help, command.newHelpLiteral("reset", "mail.reset"));
  7896. command.addHelp(help);
  7897. help = command.newHelp("playtime", "playtime");
  7898. //playtime [player]
  7899. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  7900. //playtime all
  7901. command.addHelpChild(help, command.newHelpLiteral("all"));
  7902. //playtime month [1-12] [year]
  7903. helpArg0 = command.newHelpLiteral("month");
  7904. helpArg1 = command.newHelpInt("int", 1, 12);
  7905. command.addHelpChild(helpArg1, command.newHelpInt("year", 2019, 2024));
  7906. command.addHelpChild(helpArg0, helpArg1);
  7907. command.addHelpChild(help, helpArg0);
  7908. //playtime year [year]
  7909. helpArg0 = command.newHelpLiteral("year");
  7910. command.addHelpChild(helpArg0, command.newHelpInt("year", 2019, 2024));
  7911. command.addHelpChild(help, helpArg0);
  7912. command.addHelp(help);
  7913. help = command.newHelp("user", "user");
  7914. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  7915. command.addHelp(help);
  7916. help = command.newHelp("cli", "cli");
  7917. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  7918. command.addHelp(help);
  7919. help = command.newHelp("plant", "plant");
  7920. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  7921. command.addHelp(help);
  7922. help = command.newHelp("grow", "grow");
  7923. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  7924. command.addHelp(help);
  7925. help = command.newHelp("plough", "plough");
  7926. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  7927. command.addHelp(help);
  7928. help = command.newHelp("news", "news");
  7929. command.addHelpChild(help, command.newHelpString("text", true));
  7930. command.addHelp(help);
  7931. help = command.newHelp("inv", "inv");
  7932. //inv ignore
  7933. command.addHelpChild(help, command.newHelpLiteral("ignore"));
  7934. //inv see <player>
  7935. helpArg0 = command.newHelpLiteral("see");
  7936. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7937. command.addHelpChild(help, helpArg0);
  7938. //inv reload <player>
  7939. helpArg0 = command.newHelpLiteral("reload");
  7940. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7941. command.addHelpChild(help, helpArg0);
  7942. //inv loadFrom <player> <world>
  7943. helpArg0 = command.newHelpLiteral("loadFrom");
  7944. helpArg1 = command.newHelpSpecial("Player", "player");
  7945. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  7946. command.addHelpChild(helpArg0, helpArg1);
  7947. command.addHelpChild(help, helpArg0);
  7948. //inv saveFor <player> <world>
  7949. helpArg0 = command.newHelpLiteral("saveFor");
  7950. helpArg1 = command.newHelpSpecial("Player", "player");
  7951. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  7952. command.addHelpChild(helpArg0, helpArg1);
  7953. command.addHelpChild(help, helpArg0);
  7954. command.addHelp(help);
  7955. help = command.newHelp("warn", "warn");
  7956. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  7957. command.addHelp(help);
  7958. help = command.newHelp("jail", "jail");
  7959. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  7960. command.addHelp(help);
  7961. help = command.newHelp("unjail", "unjail");
  7962. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  7963. command.addHelp(help);
  7964. help = command.newHelp("friend", "friend");
  7965. //friend add <player>
  7966. helpArg0 = command.newHelpLiteral("add");
  7967. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7968. command.addHelpChild(help, helpArg0);
  7969. //friend remove <player>
  7970. helpArg0 = command.newHelpLiteral("remove");
  7971. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7972. command.addHelpChild(help, helpArg0);
  7973. //friend list
  7974. command.addHelpChild(help, command.newHelpLiteral("list"));
  7975. command.addHelp(help);
  7976. addCommandAlias(help, "f", "friend");
  7977. help = command.newHelp("sign", "sign");
  7978. helpArg0 = command.newHelpInt("1-4", 1, 4);
  7979. command.addHelpChild(helpArg0, command.newHelpString("text", true));
  7980. command.addHelpChild(help, helpArg0);
  7981. command.addHelp(help);
  7982. help = command.newHelp("speed", "speed");
  7983. helpArg0 = command.newHelpInt("int", 1, 10);
  7984. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "speed.other"));
  7985. command.addHelpChild(help, helpArg0);
  7986. command.addHelp(help);
  7987. help = command.newHelp("errordebug", "errordebug");
  7988. command.addHelpChild(help, command.newHelpLiteral("list"));
  7989. command.addHelpChild(help, command.newHelpLiteral("clear"));
  7990. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  7991. command.addHelp(help);
  7992. help = command.newHelp("error", "error");
  7993. command.addHelpChild(help, command.newHelpLiteral("list"));
  7994. command.addHelpChild(help, command.newHelpLiteral("clear"));
  7995. command.addHelp(help);
  7996. help = command.newHelp("world", "world");
  7997. //world info <world>
  7998. helpArg0 = command.newHelpLiteral("info");
  7999. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8000. command.addHelpChild(help, helpArg0);
  8001. //world tp <world> [player]
  8002. helpArg0 = command.newHelpLiteral("tp");
  8003. helpArg1 = command.newHelpString("world", false);
  8004. command.addHelpChild(helpArg1, command.newHelpSpecial("Player", "player"));
  8005. command.addHelpChild(helpArg0, helpArg1);
  8006. command.addHelpChild(help, helpArg0);
  8007. //world list
  8008. command.addHelpChild(help, command.newHelpLiteral("list"));
  8009. //world load <world>
  8010. helpArg0 = command.newHelpLiteral("load");
  8011. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8012. command.addHelpChild(help, helpArg0);
  8013. //world unload <world>
  8014. helpArg0 = command.newHelpLiteral("unload");
  8015. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8016. command.addHelpChild(help, helpArg0);
  8017. //world diffi <world> <diffi>
  8018. helpArg0 = command.newHelpLiteral("diffi");
  8019. helpArg1 = command.newHelpString("world", false);
  8020. command.addHelpChild(helpArg1, command.newHelpLiteral("PEACEFUL"));
  8021. command.addHelpChild(helpArg1, command.newHelpLiteral("EASY"));
  8022. command.addHelpChild(helpArg1, command.newHelpLiteral("NORMAL"));
  8023. command.addHelpChild(helpArg1, command.newHelpLiteral("HARD"));
  8024. command.addHelpChild(helpArg0, helpArg1);
  8025. command.addHelpChild(help, helpArg0);
  8026. //world setspawn
  8027. helpArg0 = command.newHelpLiteral("setspawn");
  8028. command.addHelpChild(help, helpArg0);
  8029. command.addHelp(help);
  8030. help = command.newHelp("pvp", "pvp");
  8031. helpArg0 = command.newHelpLiteral("on");
  8032. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  8033. command.addHelpChild(help, helpArg0);
  8034. helpArg0 = command.newHelpLiteral("off");
  8035. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  8036. command.addHelpChild(help, helpArg0);
  8037. command.addHelp(help);
  8038. help = command.newHelp("game", "game");
  8039. command.addHelpChild(help, command.newHelpLiteral("open"));
  8040. command.addHelpChild(help, command.newHelpLiteral("close"));
  8041. command.addHelp(help);
  8042. help = command.newHelp("party", "party");
  8043. //party invite <player>
  8044. helpArg0 = command.newHelpLiteral("invite");
  8045. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8046. command.addHelpChild(help, helpArg0);
  8047. //party accept <player>
  8048. helpArg0 = command.newHelpLiteral("accept");
  8049. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8050. command.addHelpChild(help, helpArg0);
  8051. //party deny <player>
  8052. helpArg0 = command.newHelpLiteral("deny");
  8053. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8054. command.addHelpChild(help, helpArg0);
  8055. //party kick <player>
  8056. helpArg0 = command.newHelpLiteral("kick");
  8057. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8058. command.addHelpChild(help, helpArg0);
  8059. //party leave
  8060. command.addHelpChild(help, command.newHelpLiteral("leave"));
  8061. //party promote <player>
  8062. helpArg0 = command.newHelpLiteral("promote");
  8063. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8064. command.addHelpChild(help, helpArg0);
  8065. //party demote <player>
  8066. helpArg0 = command.newHelpLiteral("demote");
  8067. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8068. command.addHelpChild(help, helpArg0);
  8069. //party disband
  8070. command.addHelpChild(help, command.newHelpLiteral("disband"));
  8071. //party list
  8072. command.addHelpChild(help, command.newHelpLiteral("list"));
  8073. command.addHelp(help);
  8074. help = command.newHelp("var", "var");
  8075. helpArg0 = command.newHelpInt("id", 0, 1000000);
  8076. command.addHelpChild(helpArg0, command.newHelpString("varname", false));
  8077. command.addHelpChild(help, helpArg0);
  8078. command.addHelp(help);
  8079. help = command.newHelp("setservermessage", "setservermessage");
  8080. command.addHelpChild(help, command.newHelpString("message", true));
  8081. command.addHelp(help);
  8082. help = command.newHelp("clan", "clan");
  8083. //clan invite <name>
  8084. helpArg0 = command.newHelpLiteral("invite");
  8085. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8086. command.addHelpChild(help, helpArg0);
  8087. //clan accept <id/name/tag>
  8088. helpArg0 = command.newHelpLiteral("invite");
  8089. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  8090. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8091. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  8092. command.addHelpChild(help, helpArg0);
  8093. //clan info [id/name/tag]
  8094. helpArg0 = command.newHelpLiteral("info");
  8095. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  8096. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8097. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  8098. command.addHelpChild(help, helpArg0);
  8099. //clan create <name> <tag>
  8100. helpArg0 = command.newHelpLiteral("create");
  8101. helpArg1 = command.newHelpString("name", false);
  8102. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  8103. command.addHelpChild(helpArg0, helpArg1);
  8104. command.addHelpChild(help, helpArg0);
  8105. //clan kick <name>
  8106. helpArg0 = command.newHelpLiteral("kick");
  8107. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8108. command.addHelpChild(help, helpArg0);
  8109. //clan leader <name>
  8110. helpArg0 = command.newHelpLiteral("leader");
  8111. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8112. command.addHelpChild(help, helpArg0);
  8113. //clan mod <name>
  8114. helpArg0 = command.newHelpLiteral("mod");
  8115. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8116. command.addHelpChild(help, helpArg0);
  8117. //clan degrade <name>
  8118. helpArg0 = command.newHelpLiteral("degrade");
  8119. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8120. command.addHelpChild(help, helpArg0);
  8121. //clan leave
  8122. command.addHelpChild(help, command.newHelpLiteral("leave"));
  8123. //clan rename <name> <tag>
  8124. helpArg0 = command.newHelpLiteral("rename");
  8125. helpArg1 = command.newHelpString("name", false);
  8126. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  8127. command.addHelpChild(helpArg0, helpArg1);
  8128. command.addHelpChild(help, helpArg0);
  8129. //clan disband
  8130. command.addHelpChild(help, command.newHelpLiteral("disband"));
  8131. //clan msg <message>
  8132. helpArg0 = command.newHelpLiteral("msg");
  8133. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8134. command.addHelpChild(help, helpArg0);
  8135. //clan mail <message>
  8136. helpArg0 = command.newHelpLiteral("mail");
  8137. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8138. command.addHelpChild(help, helpArg0);
  8139. //clan shout <message>
  8140. helpArg0 = command.newHelpLiteral("shout");
  8141. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8142. command.addHelpChild(help, helpArg0);
  8143. //clan deposit <money>
  8144. helpArg0 = command.newHelpLiteral("deposit");
  8145. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  8146. command.addHelpChild(help, helpArg0);
  8147. //clan withdraw <money>
  8148. helpArg0 = command.newHelpLiteral("withdraw");
  8149. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  8150. command.addHelpChild(help, helpArg0);
  8151. //clan party
  8152. command.addHelpChild(help, command.newHelpLiteral("party"));
  8153. //clan setspawn
  8154. command.addHelpChild(help, command.newHelpLiteral("setspawn"));
  8155. //clan spawn
  8156. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  8157. //clan list
  8158. command.addHelpChild(help, command.newHelpLiteral("list"));
  8159. command.addHelp(help);
  8160. help = command.newHelp("shop", "shop");
  8161. //shop create
  8162. command.addHelpChild(help, command.newHelpLiteral("create"));
  8163. //shop admin
  8164. command.addHelpChild(help, command.newHelpLiteral("admin"));
  8165. //shop remove
  8166. helpArg0 = command.newHelpLiteral("remove");
  8167. command.addHelpChild(helpArg0, command.newHelpLiteral("buy"));
  8168. command.addHelpChild(helpArg0, command.newHelpLiteral("sell"));
  8169. command.addHelpChild(help, helpArg0);
  8170. //shop buy <amount> <price>
  8171. helpArg0 = command.newHelpLiteral("buy");
  8172. helpArg1 = command.newHelpInt("amount", 0, 1000);
  8173. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  8174. command.addHelpChild(helpArg0, helpArg1);
  8175. command.addHelpChild(help, helpArg0);
  8176. //shop sell <amount> <price>
  8177. helpArg0 = command.newHelpLiteral("sell");
  8178. helpArg1 = command.newHelpInt("amount", 0, 1000);
  8179. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  8180. command.addHelpChild(helpArg0, helpArg1);
  8181. command.addHelpChild(help, helpArg0);
  8182. command.addHelp(help);
  8183. help = command.newHelp("setmessage", "setmessage");
  8184. //setmessage info
  8185. command.addHelpChild(help, command.newHelpLiteral("info"));
  8186. //setmessage join <message>
  8187. helpArg0 = command.newHelpLiteral("join");
  8188. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8189. command.addHelpChild(help, helpArg0);
  8190. //setmessage leave <message>
  8191. helpArg0 = command.newHelpLiteral("leave");
  8192. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8193. command.addHelpChild(help, helpArg0);
  8194. //setmessage delete <player>
  8195. helpArg0 = command.newHelpLiteral("delete");
  8196. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "setmessage.delete"));
  8197. command.addHelpChild(help, helpArg0);
  8198. command.addHelp(help);
  8199. help = command.newHelp("tip", "tip");
  8200. //tipp list
  8201. helpArg0 = command.newHelpLiteral("list");
  8202. command.addHelpChild(help, helpArg0);
  8203. //tipp add <tipp> <text>
  8204. helpArg0 = command.newHelpLiteral("add");
  8205. helpArg1 = command.newHelpString("tip", false);
  8206. command.addHelpChild(helpArg1, command.newHelpString("text", true));
  8207. command.addHelpChild(helpArg0, helpArg1);
  8208. command.addHelpChild(help, helpArg0);
  8209. //tipp remove <tipp>
  8210. helpArg0 = command.newHelpLiteral("remove");
  8211. command.addHelpChild(helpArg0, command.newHelpString("tip", false));
  8212. command.addHelpChild(help, helpArg0);
  8213. //tipp <tipp> [player]
  8214. helpArg0 = command.newHelpString("tip", false);
  8215. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8216. command.addHelpChild(help, helpArg0);
  8217. command.addHelp(help);
  8218. help = command.newHelp("ticket", "ticket");
  8219. //ticket new <nachricht>
  8220. helpArg0 = command.newHelpLiteral("new");
  8221. command.addHelpChild(helpArg0, command.newHelpString("nachricht", true));
  8222. command.addHelpChild(help, helpArg0);
  8223. //ticket stop <ticket-id>
  8224. helpArg0 = command.newHelpLiteral("stop");
  8225. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000));
  8226. command.addHelpChild(help, helpArg0);
  8227. //ticket list
  8228. command.addHelpChild(help, command.newHelpLiteral("list", "isSupporter"));
  8229. //ticket get [ticket-id]
  8230. helpArg0 = command.newHelpLiteral("get");
  8231. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8232. command.addHelpChild(help, helpArg0);
  8233. //ticket finish <ticket-id>
  8234. helpArg0 = command.newHelpLiteral("finish");
  8235. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8236. command.addHelpChild(help, helpArg0);
  8237. //ticket release <ticket-id>
  8238. helpArg0 = command.newHelpLiteral("release");
  8239. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8240. command.addHelpChild(help, helpArg0);
  8241. //ticket report <ticket-id>
  8242. helpArg0 = command.newHelpLiteral("report");
  8243. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8244. command.addHelpChild(help, helpArg0);
  8245. command.addHelp(help);
  8246. command.sendHelp();
  8247. }
  8248. function addCommandHelp(command) {
  8249. help = command.newHelp(command, command);
  8250. command.addHelp(help);
  8251. return help;
  8252. }
  8253. function addCommandHelpChildString(command, arg0, bool) {
  8254. help = command.newHelp(command, command);
  8255. command.addHelpChild(help, command.newHelpString(arg0, bool));
  8256. command.addHelp(help);
  8257. }
  8258. function addCommandHelpChildPlayer(command) {
  8259. help = command.newHelp(command, command);
  8260. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8261. command.addHelp(help);
  8262. }
  8263. function addCommandHelpChildBool(command, arg0) {
  8264. help = command.newHelp(command, command);
  8265. command.addHelpChild(help, command.newHelpBool(arg0));
  8266. command.addHelp(help);
  8267. }
  8268. function addCommandAlias(help, alias, command) {
  8269. helpAlias = command.newHelp(alias, command);
  8270. command.addHelpAlias(helpAlias, help);
  8271. command.addHelp(helpAlias);
  8272. }
  8273. function addStatsGameHelp(help, game) {
  8274. helpArg0 = command.newHelpLiteral(game);
  8275. command.addHelpChild(helpArg0, command.newHelpLiteral("top"));
  8276. command.addHelpChild(helpArg0, command.newHelpInt("rank", 1, 1000));
  8277. helpArg1 = command.newHelpSpecial("Player", "player");
  8278. command.addHelpChild(helpArg1, command.newHelpLiteral("remove", "stats.remove"));
  8279. command.addHelpChild(helpArg0, helpArg1);
  8280. command.addHelpChild(help, helpArg0);
  8281. }
  8282. function addDtAttributeAttributHelp(attribut) {
  8283. helpArg1 = command.newHelpLiteral(attribut);
  8284. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("mainhand"));
  8285. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("offhand"));
  8286. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("head"));
  8287. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("chest"));
  8288. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("legs"));
  8289. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("feet"));
  8290. return helpArg1;
  8291. }
  8292. function addDtAttributeSlotHelp(slot) {
  8293. helpArg2 = command.newHelpLiteral(slot);
  8294. helpArg3 = command.newHelpInt("double", 0, 1000);
  8295. command.addHelpChild(helpArg3, command.newHelpLiteral("ADDITION"));
  8296. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_BASE"));
  8297. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_TOTAL"));
  8298. command.addHelpChild(helpArg2, helpArg3);
  8299. return helpArg2;
  8300. }
  8301. function showJail(player_name) {
  8302. if(isOnline(player_name)) {
  8303. inv.open($jailmenu, read.player(player_name), "§8Gefängnis");
  8304. }
  8305. }
  8306. function isJailed(player_uuid) {
  8307. return(list.contains($jailed_list, player_uuid));
  8308. }
  8309. function command.register(command, description) {
  8310. command.add(command);
  8311. list.add($command_list, command);
  8312. map.add($command_map, command, description);
  8313. }
  8314. function command.registerAlias(alias, command) {
  8315. command.add(alias);
  8316. map.add($alias_map, alias, command);
  8317. }
  8318. //Spielzeit aller Online-Spieler
  8319. function playtime.getTotalOnlineMinutes() {
  8320. minutes = 0;
  8321. iter = list.iterator(players.toList());
  8322. while(hasNext(iter)) {
  8323. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  8324. }
  8325. return minutes;
  8326. }
  8327. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  8328. function playtime.getInterval(from, to) {
  8329. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  8330. databank.setLong(stmt, 1, from);
  8331. databank.setLong(stmt, 2, to);
  8332. result = databank.execute(stmt);
  8333. if(databank.next(result)) {
  8334. minutes = databank.getLong(result, 1) / 1000 / 60;
  8335. } else {
  8336. minutes = 0;
  8337. }
  8338. databank.close(result);
  8339. databank.close(stmt);
  8340. return minutes;
  8341. }
  8342. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  8343. function playtime.getTotal() {
  8344. minutes = playtime.getTotalOnlineMinutes();
  8345. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  8346. result = databank.execute(stmt);
  8347. if(databank.next(result)) {
  8348. minutes += databank.getLong(result, 1) / 1000 / 60;
  8349. }
  8350. databank.close(result);
  8351. databank.close(stmt);
  8352. return minutes;
  8353. }
  8354. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  8355. function playtime.getPlayerInterval(player_id, from, to) {
  8356. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  8357. databank.setInt(stmt, 1, player_id);
  8358. databank.setLong(stmt, 2, from);
  8359. databank.setLong(stmt, 3, to);
  8360. result = databank.execute(stmt);
  8361. if(databank.next(result)) {
  8362. minutes = databank.getLong(result, 1) / 1000 / 60;
  8363. } else {
  8364. minutes = 0;
  8365. }
  8366. databank.close(result);
  8367. databank.close(stmt);
  8368. return minutes;
  8369. }
  8370. function playtime.getPlayersPerInterval(from, to) {
  8371. set = set.new();
  8372. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  8373. databank.setLong(stmt, 1, from);
  8374. databank.setLong(stmt, 2, to);
  8375. result = databank.execute(stmt);
  8376. while(databank.next(result)) {
  8377. set.add(set, databank.getInt(result, 1));
  8378. }
  8379. databank.close(result);
  8380. databank.close(stmt);
  8381. return set.getSize(set);
  8382. }
  8383. function time.getYearDays(year) {
  8384. days = 365;
  8385. if(year % 4 == 0) {
  8386. days++;
  8387. }
  8388. return days;
  8389. }
  8390. function time.getMonthDays(month, year) {
  8391. days = map.get($monthdays, month);
  8392. //Schaltjahre
  8393. if(month == 2 && year % 4 == 0) {
  8394. days++;
  8395. }
  8396. return days;
  8397. }
  8398. function time.getDaysBetween(day1, month1, year1, day2, month2, year2) {
  8399. d_days = 0;
  8400. m_days = 0;
  8401. y_days = 0;
  8402. y = 0;
  8403. m = 0;
  8404. d = 0;
  8405. //Volle Jahre
  8406. for(year = year1 + 1; year < year2; year++) {
  8407. y_days += time.getYearDays(year);
  8408. y++;
  8409. }
  8410. if(year1 == year2) {
  8411. //Volle Monate
  8412. for(month = month1 + 1; month < month2; month++) {
  8413. m_days += time.getMonthDays(month, year1);
  8414. }
  8415. //Volle Tage
  8416. if(month1 == month2) {
  8417. d_days = day2 - day1;
  8418. } else {
  8419. d_days += map.get($monthdays, month1) - day1;
  8420. d_days += day2;
  8421. }
  8422. } else {
  8423. //Volle Monate
  8424. for(month = month1 + 1; month < 13; month++) {
  8425. m_days += time.getMonthDays(month, year1);
  8426. m++;
  8427. }
  8428. for(month = 1; month < month2; month++) {
  8429. m_days += time.getMonthDays(month, year2);
  8430. m++;
  8431. }
  8432. //Volle Tage
  8433. d_days += map.get($monthdays, month1) - day1;
  8434. d_days += day2;
  8435. }
  8436. return y_days + m_days + d_days;
  8437. }
  8438. //--------------------------------------------------
  8439. //Player-Utils
  8440. //--------------------------------------------------
  8441. function player.hasClanInvitation(player_or_id, clan_id) {
  8442. if(isPlayer(player_or_id)) {
  8443. player_id = player.getId(player_or_id);
  8444. } else {
  8445. player_id = player_or_id;
  8446. }
  8447. iter = list.iterator($clan_invitations);
  8448. while(hasNext(iter)) {
  8449. invitation = next(iter);
  8450. p_id = invitation[0];
  8451. c_id = invitation[1];
  8452. if(player_id == p_id && clan_id == c_id) {
  8453. return true;
  8454. }
  8455. }
  8456. return false;
  8457. }
  8458. function player.addClanInvitation(player_id, clan_id) {
  8459. invitation = array.new(2);
  8460. invitation[0] = player_id;
  8461. invitation[1] = clan_id;
  8462. list.add($clan_invitations, invitation);
  8463. }
  8464. //--------------------------------------------------
  8465. //Party-Utils
  8466. //--------------------------------------------------
  8467. function party.invitePlayer(inviter, invitee) {
  8468. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  8469. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  8470. //Ansonsten neue Party-ID vergeben.
  8471. inviter_uuid = player.getUuid(inviter);
  8472. if(player.isInParty(inviter)) {
  8473. party_id = player.getPartyId(inviter);
  8474. } else {
  8475. party_id = map.get($party_invite_ids, inviter_uuid);
  8476. if(party_id == null) {
  8477. party_id = ++$party_counter;
  8478. }
  8479. }
  8480. if(invitee == null) {
  8481. return "inviteeNotOnline";
  8482. }
  8483. if(inviter == invitee) {
  8484. return "inviterEqualsInvitee";
  8485. }
  8486. if(player.isInParty(inviter)) {
  8487. if(!player.isPartyLeaderOrMod(inviter)) {
  8488. return "inviterNotPermitted";
  8489. }
  8490. }
  8491. if(player.isInParty(invitee)) {
  8492. return "inviteeAlreadyInParty";
  8493. }
  8494. invitee_uuid = player.getUuid(invitee);
  8495. list = map.get($party_invitations, invitee_uuid);
  8496. if(list == null) {
  8497. list = list.new();
  8498. map.add($party_invitations, invitee_uuid, list);
  8499. }
  8500. if(list.contains(list, inviter_uuid)) {
  8501. return "inviteeAlreadyInvited";
  8502. }
  8503. list.add(list, inviter_uuid);
  8504. list.add($deluuid, inviter_uuid);
  8505. list.add($delkeytime, time.getMillis());
  8506. list = map.get($delkeytimes, invitee_uuid);
  8507. if(list == null) {
  8508. list = list.new();
  8509. map.add($delkeytimes, invitee_uuid, list);
  8510. }
  8511. list.add(list, time.getMillis());
  8512. map.add($party_invite_ids, inviter_uuid, party_id);
  8513. inviter_name = player.getName(inviter);
  8514. msg.prefix(invitee, $prefix_party, concat(inviter_name, " invites you to a party."));
  8515. msg(invitee, " §5=> §rAccept ? ", text.click("[§aYes§r] ", concat("/party accept ", inviter_name)), text.click("[§cNo§r]", concat("/party deny ", inviter_name)));
  8516. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  8517. return true;
  8518. }
  8519. function party.kickPlayer(player, reason) {
  8520. party_id = player.getPartyId(player);
  8521. //Nachrichten
  8522. player_name = player.getName(player);
  8523. if(reason == "kick") {
  8524. message = concat("§r", player_name, " has been kicked out of the party.");
  8525. } else {
  8526. message = concat("§r", player_name, " has left the party.");
  8527. }
  8528. party.sendMessage(party_id, message);
  8529. player_uuid = player.getUuid(player_name);
  8530. //aus Partyliste entfernen
  8531. party_list = party.getList(party_id);
  8532. list.remove(party_list, player_uuid);
  8533. //ID und Rang entfernen
  8534. rank = player.getPartyRank(player);
  8535. player.delPartyRank(player);
  8536. player.delPartyId(player);
  8537. //Einladungen löschen
  8538. map.remove($party_invitations, player_uuid);
  8539. map.remove($delkeytimes, player_uuid);
  8540. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  8541. if(list.getSize(party_list) < 2) {
  8542. party.delete(party_id);
  8543. return;
  8544. }
  8545. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  8546. if(rank == "Leader") {
  8547. new_player = player.get(list.getIndex(party_list, 0));
  8548. player.setPartyRank(new_player, "Leader");
  8549. party.sendMessage(party_id, concat("§r", player.getName(new_player), " is now Leader."));
  8550. }
  8551. }
  8552. function party.sendMessage(party_id, message) {
  8553. iter = list.iterator(party.getList(party_id));
  8554. while(hasNext(iter)) {
  8555. msg.prefix(player.get(next(iter)), $prefix_party, message);
  8556. }
  8557. }
  8558. function party.delete(party_id) {
  8559. party.sendMessage(party_id, "Party disbanded.");
  8560. iter = list.iterator(party.getList(party_id));
  8561. while(hasNext(iter)) {
  8562. player = player.get(next(iter));
  8563. player.delPartyRank(player);
  8564. player.delPartyId(player);
  8565. }
  8566. }
  8567. @deletePartyInvitation
  8568. player_uuid = list.getIndex(deluuid, 0);
  8569. invitations = map.get(party_invitations, player_uuid);
  8570. keytimes = map.get(delkeytimes, player_uuid);
  8571. if(invitations != null) {
  8572. if(list.getSize(invitations) != 0) {
  8573. keytime = list.getIndex(delkeytime, 0);
  8574. keytime2 = list.getIndex(keytimes, 0);
  8575. list.remove(delkeytime, keytime);
  8576. if(keytime == keytime2) {
  8577. index = list.getIndexOf(keytimes, keytime2);
  8578. list.remove(keytimes, keytime2);
  8579. list.removeIndex(invitations, index);
  8580. }
  8581. }
  8582. }
  8583. goto("wait");
  8584. //--------------------------------------------------
  8585. //Plot-Utils
  8586. //--------------------------------------------------
  8587. function plot.registerMoveEvents(world) {
  8588. iter = plot.iterator(world);
  8589. while(hasNext(iter)) {
  8590. plot = next(iter);
  8591. if(plot.isCity(plot) || plot.isPlot(plot)) {
  8592. plot.setMoveEvent(plot, world);
  8593. }
  8594. }
  8595. }
  8596. function plot.delMoveEvent(plot) {
  8597. plot_id = plot.getId(plot);
  8598. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  8599. a = list.getIndex($plot_move_ids_list, i);
  8600. if(a[1] == plot_id) {
  8601. event.removeMoveData(a[0]);
  8602. list.removeIndex($plot_move_ids_list, i);
  8603. break;
  8604. }
  8605. }
  8606. }
  8607. function plot.setMoveEvent(plot, world) {
  8608. x1 = plot.getMinX(plot);
  8609. y1 = plot.getMinY(plot);
  8610. z1 = plot.getMinZ(plot);
  8611. x2 = plot.getMaxX(plot);
  8612. y2 = plot.getMaxY(plot);
  8613. z2 = plot.getMaxZ(plot);
  8614. loc1 = loc.new(world, x1, y1, z1);
  8615. loc2 = loc.new(world, x2, y2, z2);
  8616. move_id = event.addMoveData(loc1, loc2, 100, -1);
  8617. plot_id = plot.getId(plot);
  8618. a = array.new(2);
  8619. a[0] = move_id;
  8620. a[1] = plot_id;
  8621. list.add($plot_move_ids_list, a);
  8622. }
  8623. function plot.getPlotIdFromMoveId(move_id) {
  8624. iter = list.iterator($plot_move_ids_list);
  8625. while(hasNext(iter)) {
  8626. a = next(iter);
  8627. if(a[0] == move_id) {
  8628. return a[1];
  8629. }
  8630. }
  8631. return null;
  8632. }
  8633. function plot.getMoveIdFromPlotId(plot_id) {
  8634. iter = list.iterator($plot_move_ids_list);
  8635. while(hasNext(iter)) {
  8636. a = next(iter);
  8637. if(a[1] == plot_id) {
  8638. return a[0];
  8639. }
  8640. }
  8641. return null;
  8642. }
  8643. @checkForPlot
  8644. player_uuid = list.getIndex(check_for_plot_list, 0);
  8645. list.removeIndex(check_for_plot_list, 0);
  8646. player = player.get(player_uuid);
  8647. if(player == null) {
  8648. map.remove(actual_move_id, player_uuid);
  8649. goto("wait");
  8650. }
  8651. player_loc = entity.getLocation(player);
  8652. plot_list = plot.get(player_loc);
  8653. if(list.getSize(plot_list) == 0) {
  8654. map.remove(actual_move_id, player_uuid);
  8655. } else {
  8656. list.add(check_for_plot_list, player_uuid);
  8657. sgoto(100, "checkForPlot");
  8658. }
  8659. goto("wait");
  8660. function tpBottom(player) {
  8661. player_loc = entity.getLocation(player);
  8662. y = loc.getY(player_loc);
  8663. while(block.isAir(player_loc)) {
  8664. loc.setY(player_loc, y);
  8665. y--;
  8666. }
  8667. loc.addY(player_loc, 1);
  8668. entity.teleport(player, player_loc);
  8669. }