commands.txt 284 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068
  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("lastseen", "Shows the last players online");
  70. command.register("lightning", "Summons a lightning_bolt");
  71. command.register("list", "List all players online");
  72. command.register("mail", "Mail-Commands");
  73. command.register("memory", "Returns RAM-usage");
  74. command.register("msg", "Send a private message");
  75. command.register("mute", "Mutes a player");
  76. command.register("news", "Send Push-News to all players");
  77. command.register("nickname", "Set a nickname");
  78. command.register("nowb", "Sends no 'is back' message if afk");
  79. command.register("party", "Party-Commands");
  80. command.register("perm", "Manage permissions");
  81. command.register("plant", "Plant seeds");
  82. command.register("playtime", "Shows your playtime");
  83. command.register("plot", "Plot-Commands");
  84. command.register("plough", "Plough dirt around you");
  85. command.register("pvp", "Toggles pvp");
  86. command.register("rank", "Shows your available ranks");
  87. command.register("repair", "Repairs your item in mainhand");
  88. command.register("report", "Report whatever you want");
  89. command.register("ride", "Rides an entity");
  90. command.register("say", "[Server] chat message");
  91. command.register("script", "Script-Commands");
  92. command.register("seen", "Returns the last date the player was online");
  93. command.register("senditem", "Sends an itemstack to another player");
  94. command.register("setmessage", "Set your join/leave-message");
  95. command.register("setrank", "");
  96. command.register("setservermessage", "Sets the server-message in the serverlist");
  97. command.register("setspawn", "Changes a spawn");
  98. command.register("shop", "Shop-Commands");
  99. command.register("sign", "Edit a sign");
  100. command.register("silentban", "Silently bans a player");
  101. command.register("silentjoin", "Toggled Silentjoins");
  102. command.register("silentkick", "Silently kicks a player");
  103. command.register("skills", "Shows all skills");
  104. command.register("spawn", "Teleports to spawn");
  105. command.register("speed", "Sets your speed");
  106. command.register("start", "Starts a script");
  107. command.register("startgame", "Reduces start-countdown for a minigame");
  108. command.register("stats", "Statistics-Commands");
  109. command.register("stopadventure", "Stops an adventure");
  110. command.register("story", "Teleports to story-spawn");
  111. command.register("suicide", "Kill yourself");
  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("l", "leave");
  155. command.registerAlias("v", "vanish");
  156. command.registerAlias("hub", "leave");
  157. command.registerAlias("fuckit", "giveup");
  158. command.registerAlias("ram", "memory");
  159. command.registerAlias("thor", "lightning");
  160. composter_par = particle.get("composter");
  161. beds_tag = block.getTag("minecraft:beds");
  162. chest_tag = block.getTag("forge:chests");
  163. sign_tag = block.getTag("minecraft:signs");
  164. dirt_tag = block.getTag("forge:dirt");
  165. gamesspawn = world.getGamesSpawn();
  166. serverspawn = world.getServerSpawn();
  167. prefix_clan = "§2Clan";
  168. prefix_tips = "§eTips";
  169. prefix_lock = "§eLock";
  170. prefix_commands = "§6Commands";
  171. prefix_friends = "§5Friends";
  172. prefix_world = "§bWorld";
  173. prefix_jail = "§5Jail";
  174. prefix_quest = "§dQuest";
  175. prefix_perms = "§6Perms";
  176. prefix_datatools = "§6DataTools";
  177. prefix_human = "§6Human";
  178. prefix_plot = "§dPlots";
  179. prefix_party = "§5Party";
  180. prefix_skill = "§2Skill";
  181. party_ids = getScriptVar("party_ids");
  182. if(party_ids == null) {
  183. party_ids = map.new();
  184. setScriptVar("party_ids", map.new()); //Player, partyid
  185. }
  186. party_lists = getScriptVar("party_lists");
  187. if(party_lists == null) {
  188. party_lists = map.new();
  189. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  190. }
  191. party_ranks = getScriptVar("party_ranks");
  192. if(party_ranks == null) {
  193. party_ranks = map.new();
  194. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  195. }
  196. party_counter = getScriptVar("party_counter");
  197. if(party_counter == null) {
  198. party_counter = 0;
  199. setScriptVar("party_counter", party_counter); //Player, partyid
  200. }
  201. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  202. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  203. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  204. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  205. party_invite_ids = map.new(); //Player_uuid, partyid
  206. list = getScriptVar("block_commands_list");
  207. if(list == null) {
  208. list = list.new();
  209. setScriptVar("block_commands_list", list);
  210. }
  211. live_set = getScriptVar("live_set");
  212. if(live_set == null) {
  213. live_set = set.new();
  214. setScriptVar("live_set", live_set);
  215. } else {
  216. //Register all Live-Players again
  217. iter = set.iterator(live_set);
  218. while(hasNext(iter)) {
  219. player = player.get(next(iter));
  220. if(player != null) {
  221. player.setLive(player, true);
  222. }
  223. }
  224. }
  225. afk_map = getScriptVar("afk_map");
  226. if(afk_map == null) {
  227. afk_map = map.new();
  228. setScriptVar("afk_map", afk_map);
  229. } else {
  230. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  231. iter = map.iterator(afk_map);
  232. while(hasNext(iter)) {
  233. element = next(iter);
  234. player = player.get(map.getKey(element));
  235. if(player != null) {
  236. player.setAfk(player, true);
  237. }
  238. }
  239. }
  240. sgoto(10, "coordsloop");
  241. clan_invitations = list.new();
  242. friend_requests = map.new();
  243. lock_chests = map.new();
  244. chatbuffer = map.new();
  245. tpa_request = list.new();
  246. answer_map = map.new();
  247. warninglist = list.new();
  248. plotpos1 = map.new();
  249. plotpos2 = map.new();
  250. invseeids = set.new();
  251. ride_set = set.new();
  252. fields = set.new();
  253. vanish_set = set.new();
  254. skip_night_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. set.add(butcher_set, "silverfish");
  270. set.add(butcher_set, "zombified_piglin");
  271. rank_array = array.new(25, 2);
  272. //Playtime
  273. rank_array[0, 0] = "rank.owner";
  274. rank_array[0, 1] = "4Owner";
  275. rank_array[1, 0] = "rank.admin";
  276. rank_array[1, 1] = "cAdmin";
  277. rank_array[2, 0] = "rank.moderator";
  278. rank_array[2, 1] = "9Moderator";
  279. rank_array[3, 0] = "rank.supporter";
  280. rank_array[3, 1] = "bSupporter";
  281. rank_array[4, 0] = "rank.dev";
  282. rank_array[4, 1] = "5Developer";
  283. rank_array[5, 0] = "rank.builder";
  284. rank_array[5, 1] = "5Builder";
  285. rank_array[6, 0] = "rank.vip";
  286. rank_array[6, 1] = "dVIP";
  287. rank_array[7, 0] = "rank.influencer";
  288. rank_array[7, 1] = "dInfluencer";
  289. rank_array[8, 0] = "rank.sponsor";
  290. rank_array[8, 1] = "dSponsor";
  291. rank_array[9, 0] = "rank.legend";
  292. rank_array[9, 1] = "2Legend";
  293. rank_array[10, 0] = "rank.pioneer";
  294. rank_array[10, 1] = "2Pioneer";
  295. rank_array[11, 0] = "rank.lord";
  296. rank_array[11, 1] = "2Lord";
  297. rank_array[12, 0] = "rank.altruist";
  298. rank_array[12, 1] = "2Altruist";
  299. rank_array[13, 0] = "major";
  300. rank_array[13, 1] = "2Major";
  301. rank_array[14, 0] = "rank.frequenter";
  302. rank_array[14, 1] = "6Frequenter";
  303. rank_array[15, 0] = "rank.explorer";
  304. rank_array[15, 1] = "6Explorer";
  305. rank_array[16, 0] = "rank.chief";
  306. rank_array[16, 1] = "6Chief";
  307. rank_array[17, 0] = "rank.friend";
  308. rank_array[17, 1] = "6Friend";
  309. rank_array[18, 0] = "rank.colonizer";
  310. rank_array[18, 1] = "6Colonizer";
  311. rank_array[19, 0] = "rank.newcomer";
  312. rank_array[19, 1] = "eNewcomer";
  313. rank_array[20, 0] = "rank.adventurer";
  314. rank_array[20, 1] = "eAdventurer";
  315. rank_array[21, 0] = "rank.commander";
  316. rank_array[21, 1] = "eCommander";
  317. rank_array[22, 0] = "rank.volunteer";
  318. rank_array[22, 1] = "eVolunteer";
  319. rank_array[23, 0] = "rank.settler";
  320. rank_array[23, 1] = "eSettler";
  321. rank_array[24, 0] = "rank.user";
  322. rank_array[24, 1] = "3User";
  323. setScriptVar("ranks", rank_array);
  324. permgroupToRank = map.new();
  325. map.add(permgroupToRank, "admin", "cAdmin");
  326. map.add(permgroupToRank, "builder", "5Builder");
  327. map.add(permgroupToRank, "vip", "dVIP");
  328. map.add(permgroupToRank, "dev", "5Developer");
  329. map.add(permgroupToRank, "supporter", "bSupporter");
  330. map.add(permgroupToRank, "mod", "9Moderator");
  331. map.add(permgroupToRank, "yt", "dInfluencer");
  332. map.add(permgroupToRank, "streamer", "dInfluencer");
  333. map.add(permgroupToRank, "sponsor", "dSponsor");
  334. permgroupsmap = map.new();
  335. map.add(permgroupsmap, "worldedit", 1);
  336. map.add(permgroupsmap, "admin", 2);
  337. map.add(permgroupsmap, "builder", 3);
  338. map.add(permgroupsmap, "vip", 4);
  339. map.add(permgroupsmap, "dev", 5);
  340. map.add(permgroupsmap, "teleport", 6);
  341. map.add(permgroupsmap, "supporter", 9);
  342. map.add(permgroupsmap, "streamer", 11);
  343. map.add(permgroupsmap, "mod", 12);
  344. map.add(permgroupsmap, "yt", 13);
  345. map.add(permgroupsmap, "sponsor", 14);
  346. map.add(permgroupsmap, "bypass", 15);
  347. map.add(permgroupsmap, "creative", 17);
  348. permgroupsmap2 = map.new();
  349. map.add(permgroupsmap2, 1, "worldedit");
  350. map.add(permgroupsmap2, 2, "admin");
  351. map.add(permgroupsmap2, 3, "builder");
  352. map.add(permgroupsmap2, 4, "vip");
  353. map.add(permgroupsmap2, 5, "dev");
  354. map.add(permgroupsmap2, 6, "teleport");
  355. map.add(permgroupsmap2, 9, "supporter");
  356. map.add(permgroupsmap2, 11, "streamer");
  357. map.add(permgroupsmap2, 12, "mod");
  358. map.add(permgroupsmap2, 13, "yt");
  359. map.add(permgroupsmap2, 14, "sponsor");
  360. map.add(permgroupsmap2, 15, "bypass");
  361. map.add(permgroupsmap2, 17, "creative");
  362. monthlist = map.new();
  363. map.add(monthlist, 1, "Jan");
  364. map.add(monthlist, 2, "Feb");
  365. map.add(monthlist, 3, "Mar");
  366. map.add(monthlist, 4, "Apr");
  367. map.add(monthlist, 5, "May");
  368. map.add(monthlist, 6, "Jun");
  369. map.add(monthlist, 7, "Jul");
  370. map.add(monthlist, 8, "Aug");
  371. map.add(monthlist, 9, "Sep");
  372. map.add(monthlist, 10, "Oct");
  373. map.add(monthlist, 11, "Nov");
  374. map.add(monthlist, 12, "Dec");
  375. monthdays = map.new();
  376. map.add(monthdays, 1, 31);
  377. map.add(monthdays, 2, 28);
  378. map.add(monthdays, 3, 31);
  379. map.add(monthdays, 4, 30);
  380. map.add(monthdays, 5, 31);
  381. map.add(monthdays, 6, 30);
  382. map.add(monthdays, 7, 31);
  383. map.add(monthdays, 8, 31);
  384. map.add(monthdays, 9, 30);
  385. map.add(monthdays, 10, 31);
  386. map.add(monthdays, 11, 30);
  387. map.add(monthdays, 12, 31);
  388. jailed_list = list.new();
  389. ironbars = read.item("minecraft:iron_bars", 1, "§r");
  390. jailmenu = inv.new("222222222");
  391. inv.setItem(jailmenu, 0, ironbars);
  392. inv.setItem(jailmenu, 1, ironbars);
  393. inv.setItem(jailmenu, 2, ironbars);
  394. inv.setItem(jailmenu, 3, ironbars);
  395. inv.setItem(jailmenu, 4, ironbars);
  396. inv.setItem(jailmenu, 5, ironbars);
  397. inv.setItem(jailmenu, 6, ironbars);
  398. inv.setItem(jailmenu, 7, ironbars);
  399. inv.setItem(jailmenu, 8, ironbars);
  400. skip_night_inv = inv.new("002020200");
  401. inv.setItem(skip_night_inv, 0, read.item("km:check_green", 1, "§fYes"));
  402. inv.setItem(skip_night_inv, 1, read.item("km:gem_stone", 1, "§fI don't care"));
  403. inv.setItem(skip_night_inv, 2, read.item("km:cross_red", 1, "§fNo"));
  404. skip_night_inv_id = inv.getId(skip_night_inv);
  405. consoleCommands = set.new();
  406. set.add(consoleCommands, "ban");
  407. set.add(consoleCommands, "tempfly");
  408. set.add(consoleCommands, "silentban");
  409. set.add(consoleCommands, "tempban");
  410. set.add(consoleCommands, "unban");
  411. set.add(consoleCommands, "kick");
  412. set.add(consoleCommands, "silentkick");
  413. set.add(consoleCommands, "say");
  414. set.add(consoleCommands, "list");
  415. set.add(consoleCommands, "lastseen");
  416. set.add(consoleCommands, "start");
  417. set.add(consoleCommands, "msg");
  418. set.add(consoleCommands, "answer");
  419. 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);"));
  420. 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);"));
  421. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS tipps (tipp_key VARCHAR(20) PRIMARY KEY, tipp_value VARCHAR(255));"));
  422. 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);"));
  423. 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);"));
  424. last_skip_night = 0;
  425. skip_night_started = false;
  426. jail_loop_active = false;
  427. afk_loop_active = false;
  428. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  429. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  430. check_for_plot_list = list.new();
  431. plot.registerMoveEvents(world.get("overworld"));
  432. plot.registerMoveEvents(world.get("the_nether"));
  433. plot.registerMoveEvents(world.get("the_end"));
  434. plot.registerMoveEvents(world.get("games"));
  435. event.load("entity_click");
  436. event.load("player_move");
  437. event.load("inv_click");
  438. event.load("inv_close");
  439. event.load("function_key");
  440. event.load("missing_perm");
  441. event.load("missing_command");
  442. event.load("custom_command");
  443. event.load("block_place");
  444. event.load("block_break");
  445. event.load("block_click");
  446. event.load("player_logout");
  447. event.load("player_data_tick");
  448. msg("dev", "§bCommands §rloaded.");
  449. @wait
  450. wait();
  451. if(event == "custom_command") {
  452. //Permission-Check
  453. command = text.toLowerCase(command);
  454. command = map.getOrDefault(alias_map, command, command);
  455. size = list.getSize(args);
  456. if(player == null) {
  457. sender = "SERVER";
  458. sender_name = "SERVER";
  459. if(set.contains(consoleCommands, command)) {
  460. ignoreGoto(command);
  461. goto("wait");
  462. }
  463. msg("SERVER", "Sorry. Not a console-command yet. Go and tell marvinius.");
  464. goto("wait");
  465. }
  466. if(!perm.has(player, command)) {
  467. perm.no(player, command);
  468. goto("wait");
  469. }
  470. sender = player;
  471. sender_name = player.getName(player);
  472. affectedname = player.getName(player);
  473. player_name = player.getName(player);
  474. affectedplayer = player;
  475. if(command != "leave") {
  476. if(player.isCommandBlocked(player)) {
  477. msg.prefix(player, prefix_commands, "§rThe most important rule in competition: Sabotage!");
  478. goto("wait");
  479. }
  480. }
  481. ignoreGoto(command);
  482. goto("wait");
  483. }
  484. if(event == "player_move") {
  485. player_uuid = player.getUuid(player);
  486. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  487. if(last_move_id == id) {
  488. goto("wait");
  489. }
  490. world = loc.getWorld(entity.getLocation(player));
  491. plot_id = plot.getPlotIdFromMoveId(id);
  492. plot = plot.getFromId(plot_id, world);
  493. if(plot == null) {
  494. goto("wait");
  495. }
  496. if(plot.isCity(plot)) {
  497. color_code = "§c";
  498. } else {
  499. color_code = "§e";
  500. }
  501. title.reset(player);
  502. title.setSub(player, concat("You entered ", color_code, plot.getName(plot), "."));
  503. title.send(player, "");
  504. map.add(actual_move_id, player_uuid, id);
  505. list.add(check_for_plot_list, player_uuid);
  506. sgoto(100, "checkForPlot");
  507. goto("wait");
  508. }
  509. if(event == "block_click") {
  510. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  511. if(action == "right" && !isSurvWorldName(world_name) && block.hasTag(beds_tag, block)) {
  512. cancel = true;
  513. goto("wait");
  514. }
  515. if(perm.has(player, "plot.bypass")) {
  516. goto("wait");
  517. }
  518. if(block.hasTag(chest_tag, block)) {
  519. if(plot.check(block_loc, player, 16, true)) {
  520. cancel = false;
  521. goto("wait");
  522. }
  523. player_id = player.getId(player);
  524. player_uuid = player.getUuid(player);
  525. list = plot.get(block_loc);
  526. if(list.getSize(list) > 0) {
  527. iter = list.iterator(list);
  528. access = false;
  529. while(hasNext(iter)) {
  530. plot = next(iter);
  531. canOpenChests = plot.canOpenChests(plot, player_id);
  532. if(plot.isSub(plot)) {
  533. if(canOpenChests) {
  534. cancel = false;
  535. goto("wait");
  536. }
  537. cancel = true;
  538. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  539. goto("wait");
  540. }
  541. if(canOpenChests) {
  542. access = true;
  543. cancel = false;
  544. }
  545. }
  546. if(!access) {
  547. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  548. }
  549. }
  550. goto("wait");
  551. }
  552. if(action == "right" && block.hasTag(sign_tag, block)) {
  553. line0 = block.getSign(block_loc, 0);
  554. if(line0 != "§3[§bFree Plot§3]") {
  555. goto("wait");
  556. }
  557. price = text.convert(removeFormat(block.getSign(block_loc, 1)));
  558. if(!isDouble(price) || price < 0) {
  559. msg.prefix(player, prefix_plot, "Positive number expected.");
  560. goto("wait");
  561. }
  562. p_id = text.convert(block.getSign(block_loc, 3));
  563. if(!isDouble(p_id)) {
  564. msg.prefix(player, prefix_plot, "Invalid city owner.");
  565. goto("wait");
  566. }
  567. if(player.getNameFromId(p_id) == null) {
  568. msg.prefix(player, prefix_plot, "Invalid city owner.");
  569. goto("wait");
  570. }
  571. if(!hasEnoughMoney(player, price)) {
  572. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(price), "§r snuvis for this."));
  573. goto("wait");
  574. }
  575. plot_list = plot.get(block_loc);
  576. iter = list.iterator(plot_list);
  577. while(hasNext(iter)) {
  578. plot = next(iter);
  579. if(plot.isFree(plot)) {
  580. break;
  581. }
  582. }
  583. if(!plot.isFree(plot)) {
  584. msg.prefix(player, prefix_plot, "You aren't on a free plot.");
  585. goto("wait");
  586. }
  587. //Plot claimen
  588. subMoney(player, price);
  589. addMoney(p_id, price);
  590. plot.setSub(plot, true);
  591. plot.setLeader(plot, player.getId(player));
  592. player_name = player.getName(player);
  593. plot.addPlayer(plot, player_name);
  594. plot.setName(plot, concat(player_name, "'s plot"));
  595. msg.prefix(player, prefix_plot, concat("Plot claimed. Spent §6", text.number(price), "§r snuvis."));
  596. goto("wait");
  597. }
  598. goto("wait");
  599. }
  600. if(event == "missing_command") {
  601. if(player == null) { //--> Server
  602. player = "SERVER";
  603. if(command_name == null) {
  604. msg.prefix(player, prefix_commands, concat("Missing Command"));
  605. goto("wait");
  606. }
  607. }
  608. msg.prefix(player, prefix_commands, concat("No command ", command_name));
  609. goto("wait");
  610. }
  611. if(event == "player_logout") {
  612. player.setAfk(player, false);
  613. list.remove(jailed_list, player.getUuid(player));
  614. if(player.hasQuest2(player)) {
  615. script_id = quest.getFromPlayer(player);
  616. script = script.getFromId(script_id);
  617. if(script == null) {
  618. goto("wait");
  619. }
  620. setScriptVar("player", player);
  621. script.callEvent("quest_term", script);
  622. quest.term(script, player);
  623. }
  624. if(player.isInParty(player)) {
  625. party.kickPlayer(player, "logout");
  626. }
  627. goto("wait");
  628. }
  629. if(event == "missing_perm") {
  630. if(player == null) { //--> Server
  631. player = "SERVER";
  632. if(command_name == null) {
  633. msg.prefix(player, prefix_commands, concat("Missing Perm"));
  634. goto("wait");
  635. }
  636. }
  637. perm.no(player, command_name);
  638. goto("wait");
  639. }
  640. if(event == "entity_click") {
  641. player_uuid = player.getUuid(player);
  642. if(set.contains(ride_set, player_uuid)) {
  643. set.remove(ride_set, player_uuid);
  644. entity.mount(player, entity);
  645. }
  646. goto("wait");
  647. }
  648. if(event == "inv_click") {
  649. //inv see
  650. if(set.contains(invseeids, inv_id)) {
  651. //On inv_click in an invsee inventory
  652. split_list = text.split(" ", inv_name);
  653. p_name = list.getIndex(split_list, 2);
  654. p = read.player(p_name);
  655. if(p == null) {
  656. inv.close(player);
  657. 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.");
  658. goto("wait");
  659. }
  660. //Transmit item
  661. player.removeItem(p, item);
  662. safeGiveItemPlayer(player, item);
  663. inv.setItem(inv, inv_slot, read.item("minecraft:air"));
  664. inv.update(player);
  665. goto("wait");
  666. }
  667. if(inv_id == skip_night_inv_id) {
  668. world = world.getOverWorld();
  669. world_time = world.getTime(world);
  670. while(world_time >= 24000) {
  671. world_time -= 24000;
  672. }
  673. if(world_time <= 12500) {
  674. goto("wait");
  675. }
  676. player_uuid = player.getUuid(player);
  677. if(set.contains(skip_night_set, player_uuid)) {
  678. msg.prefix(player, prefix_commands, "Already voted.");
  679. goto("wait");
  680. }
  681. set.add(skip_night_set, player_uuid);
  682. if(!skip_night_started) {
  683. world.addTimedStatus(world, 49, 600, "Skip night?");
  684. sendMessageToWorld(world, "[§6Commands§r] Skip night? Vote within 30 seconds.");
  685. skip_night_counter = 30;
  686. skip_night_yes = 0;
  687. skip_night_no = 0;
  688. skip_night_no_care = 0;
  689. skip_night_started = true;
  690. sgoto(20, "skip_night_loop");
  691. }
  692. if(inv_slot == 0) {
  693. skip_night_yes++;
  694. inv.close(player);
  695. goto("wait");
  696. }
  697. if(inv_slot == 1) {
  698. skip_night_no_care++;
  699. inv.close(player);
  700. goto("wait");
  701. }
  702. if(inv_slot == 2) {
  703. skip_night_no++;
  704. inv.close(player);
  705. goto("wait");
  706. }
  707. goto("wait");
  708. }
  709. if(inv_name == "Skills") {
  710. if(item.getType(item) == "minecraft:air") {
  711. goto("wait");
  712. }
  713. skill_name = removeFormat(item.getName(item));
  714. tech_name = skill.getTechName(skill_name);
  715. //Toggle skill
  716. if(skill.isToggleable(skill_name)) {
  717. if(skill.isActivated(player, tech_name)) {
  718. skill.setActivated(player, tech_name, false);
  719. } else {
  720. skill.setActivated(player, tech_name, true);
  721. }
  722. inv.setItem(inv, inv_slot, skill.getShopItem(player, tech_name));
  723. inv.update(player);
  724. goto("wait");
  725. }
  726. //Activate skill
  727. if(skill.isActive(skill_name)) {
  728. player_loc = entity.getLocation(player);
  729. world_name = world.getName(loc.getWorld(player_loc));
  730. if(!isSurvWorldName(world_name)) {
  731. msg.prefix(player, prefix_skill, "You can't use this in this world.");
  732. goto("wait");
  733. }
  734. if(tech_name == "skill.timber") {
  735. duration = data.getTimer(player, "timber");
  736. if(duration > 0) {
  737. msg.prefix(player, prefix_skill, "Skill already active.");
  738. goto("wait");
  739. }
  740. amount = skill.getAmount(player, "skill.timber");
  741. if(amount > 0) {
  742. status.addTimed(player, 50, 1200, "Timber");
  743. data.setTimer(player, "timber", 1200);
  744. new_amount = amount - 1;
  745. skill.setAmount(player, "skill.timber", new_amount);
  746. msg.prefix(player, prefix_skill, concat("Used Timber. New amount: ", text.number(new_amount)));
  747. }
  748. goto("wait");
  749. }
  750. if(tech_name == "skill.fly10min") {
  751. duration = data.getTimer(player, "fly");
  752. if(duration > 0) {
  753. msg.prefix(player, prefix_skill, "Skill already active.");
  754. goto("wait");
  755. }
  756. amount = skill.getAmount(player, "skill.fly10min");
  757. if(amount > 0) {
  758. status.addTimed(player, 50, 12000, "Fly");
  759. data.setTimer(player, "fly", 12000);
  760. player.setFly(player, true);
  761. new_amount = amount - 1;
  762. skill.setAmount(player, "skill.fly10min", new_amount);
  763. msg.prefix(player, prefix_skill, concat("Used Fly 10min. New amount: ", text.number(new_amount)));
  764. }
  765. goto("wait");
  766. }
  767. if(tech_name == "skill.grow") {
  768. amount = skill.getAmount(player, "skill.grow");
  769. if(amount > 0) {
  770. grow(player_loc, 5);
  771. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  772. new_amount = amount - 1;
  773. skill.setAmount(player, "skill.grow", new_amount);
  774. msg.prefix(player, prefix_skill, concat("Used Grow. New amount: ", text.number(new_amount)));
  775. }
  776. goto("wait");
  777. }
  778. if(tech_name == "skill.haste") {
  779. amount = skill.getAmount(player, "skill.haste");
  780. if(amount > 0) {
  781. entity.addEffect(player, "haste", 2400, 0);
  782. new_amount = amount - 1;
  783. skill.setAmount(player, "skill.haste", new_amount);
  784. msg.prefix(player, prefix_skill, concat("Used Haste. New amount: ", text.number(new_amount)));
  785. }
  786. goto("wait");
  787. }
  788. if(tech_name == "skill.speed") {
  789. amount = skill.getAmount(player, "skill.speed");
  790. if(amount > 0) {
  791. entity.addEffect(player, "speed", 2400, 0);
  792. new_amount = amount - 1;
  793. skill.setAmount(player, "skill.speed", new_amount);
  794. msg.prefix(player, prefix_skill, concat("Used Speed. New amount: ", text.number(new_amount)));
  795. }
  796. goto("wait");
  797. }
  798. if(tech_name == "skill.jump_boost") {
  799. amount = skill.getAmount(player, "skill.jump_boost");
  800. if(amount > 0) {
  801. entity.addEffect(player, "jump_boost", 2400, 1);
  802. new_amount = amount - 1;
  803. skill.setAmount(player, "skill.jump_boost", new_amount);
  804. msg.prefix(player, prefix_skill, concat("Used Jump Boost. New amount: ", text.number(new_amount)));
  805. }
  806. goto("wait");
  807. }
  808. if(tech_name == "skill.dolphin") {
  809. amount = skill.getAmount(player, "skill.dolphin");
  810. if(amount > 0) {
  811. entity.addEffect(player, "dolphins_grace", 1200, 0);
  812. new_amount = amount - 1;
  813. skill.setAmount(player, "skill.dolphin", new_amount);
  814. msg.prefix(player, prefix_skill, concat("Used Dolphin. New amount: ", text.number(new_amount)));
  815. }
  816. goto("wait");
  817. }
  818. if(tech_name == "skill.block_up") {
  819. duration = data.getTimer(player, "block_up");
  820. if(duration > 0) {
  821. msg.prefix(player, prefix_skill, "Skill already active.");
  822. goto("wait");
  823. }
  824. amount = skill.getAmount(player, "skill.block_up");
  825. if(amount > 0) {
  826. status.addTimed(player, 51, 1200, "Block Up");
  827. data.setTimer(player, "block_up", 1200);
  828. new_amount = amount - 1;
  829. skill.setAmount(player, "skill.block_up", new_amount);
  830. msg.prefix(player, prefix_skill, concat("Used Block Up. New amount: ", text.number(new_amount)));
  831. }
  832. goto("wait");
  833. }
  834. if(tech_name == "skill.block_down") {
  835. duration = data.getTimer(player, "block_down");
  836. if(duration > 0) {
  837. msg.prefix(player, prefix_skill, "Skill already active.");
  838. goto("wait");
  839. }
  840. amount = skill.getAmount(player, "skill.block_down");
  841. if(amount > 0) {
  842. status.addTimed(player, 52, 1200, "Block Down");
  843. data.setTimer(player, "block_down", 1200);
  844. new_amount = amount - 1;
  845. skill.setAmount(player, "skill.block_down", new_amount);
  846. msg.prefix(player, prefix_skill, concat("Used Block Down. New amount: ", text.number(new_amount)));
  847. }
  848. goto("wait");
  849. }
  850. }
  851. goto("wait");
  852. }
  853. if(inv_name == "§8Settings") {
  854. if(inv_slot == 0) {
  855. new_value = !player.getAutoCloseDoor(player);
  856. player.setAutoCloseDoor(player, new_value);
  857. inv.setItem(inv, inv_slot, read.item("minecraft:oak_door", 1, "§fAuto Door-Close", new_value));
  858. }
  859. elseif(inv_slot == 1) {
  860. new_value = !player.doesAcceptTpaRequests(player);
  861. player.acceptTpaRequests(player, new_value);
  862. inv.setItem(inv, inv_slot, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", new_value));
  863. }
  864. elseif(inv_slot == 2) {
  865. new_value = !showCoords.get(player);
  866. showCoords.set(player, new_value);
  867. inv.setItem(inv, inv_slot, read.item("minecraft:compass", 1, "§fShow Coords", new_value));
  868. if(!new_value) {
  869. display.remove(player, 30);
  870. }
  871. }
  872. elseif(inv_slot == 3) {
  873. new_value = !player.hasSittingActivated(player);
  874. player.activateSitting(player, new_value);
  875. inv.setItem(inv, inv_slot, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", new_value));
  876. }
  877. elseif(inv_slot == 4) {
  878. new_value = !hasPvpOn(player);
  879. setPvp(player, new_value);
  880. inv.setItem(inv, inv_slot, read.item("minecraft:iron_sword", 1, "§fPvP", new_value));
  881. }
  882. inv.update(player);
  883. }
  884. goto("wait");
  885. }
  886. if(event == "inv_close") {
  887. if(set.contains(invseeids, inv_id)) {
  888. set.remove(invseeids, inv_id);
  889. }
  890. goto("wait");
  891. }
  892. if(event == "function_key") {
  893. if(player.hasMinigame(player)) {
  894. goto("wait");
  895. }
  896. if(key == 1) {
  897. inv = inv.new("333333333");
  898. inv.setItem(inv, 0, read.item("minecraft:oak_door", 1, "§fAuto Door-Close", player.getAutoCloseDoor(player)));
  899. inv.setItem(inv, 1, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", player.doesAcceptTpaRequests(player)));
  900. inv.setItem(inv, 2, read.item("minecraft:compass", 1, "§fShow Coords", showCoords.get(player)));
  901. inv.setItem(inv, 3, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", player.hasSittingActivated(player)));
  902. inv.setItem(inv, 4, read.item("minecraft:iron_sword", 1, "§fPvP", hasPvpOn(player)));
  903. inv.open(inv, player, "§8Settings");
  904. goto("wait");
  905. }
  906. if(key == 2) {
  907. player_loc = entity.getLocation(player);
  908. world_name = world.getName(loc.getWorld(player_loc));
  909. if(isSurvWorldName(world_name) || world_name == "story") {
  910. skill.showAll(player);
  911. }
  912. goto("wait");
  913. }
  914. if(key == 3) {
  915. player_loc = entity.getLocation(player);
  916. world_name = world.getName(loc.getWorld(player_loc));
  917. if(!isSurvWorldName(world_name)) {
  918. goto("wait");
  919. }
  920. world_time = world.getTime(world.getOverWorld());
  921. while(world_time >= 24000) {
  922. world_time -= 24000;
  923. }
  924. if(world_time <= 12500) {
  925. msg.prefix(player, prefix_commands, "Only during night possible.");
  926. goto("wait");
  927. }
  928. if(set.contains(skip_night_set, player_uuid)) {
  929. msg.prefix(player, prefix_commands, "Already voted.");
  930. goto("wait");
  931. }
  932. if(time.getMillis() - last_skip_night < 420000) {
  933. msg.prefix(player, prefix_commands, "Only once per night possible.");
  934. goto("wait");
  935. }
  936. inv.open(skip_night_inv, player, "Skip Night?");
  937. goto("wait");
  938. }
  939. goto("wait");
  940. }
  941. if(event == "player_data_tick") {
  942. if(var == "fly") {
  943. tpBottom(player);
  944. player.setFly(player, false);
  945. }
  946. }
  947. goto("wait");
  948. @skip_night_loop
  949. skip_night_counter--;
  950. if(skip_night_counter == 0) {
  951. world = world.getOverWorld();
  952. sendMessageToWorld(world, "[§6Commands§r] Skip night results:");
  953. sendMessageToWorld(world, concat("§e - §rYes: §e", text.number(skip_night_yes)));
  954. sendMessageToWorld(world, concat("§e - §rNo: §e", text.number(skip_night_no)));
  955. sendMessageToWorld(world, concat("§e - §rI don't care: §e", text.number(skip_night_no_care)));
  956. if(skip_night_yes > skip_night_no) {
  957. world.setTime(world, 0);
  958. }
  959. set.clear(skip_night_set);
  960. last_skip_night = time.getMillis();
  961. sgoto(8400, "reset_skip_night");
  962. }
  963. sgoto(20, "skip_night_loop");
  964. goto("wait");
  965. @reset_skip_night
  966. skip_night_started = false;
  967. goto("wait");
  968. @skills
  969. skill.showAll(player);
  970. goto("wait");
  971. @infopoint1
  972. msg(player, getSpacer());
  973. msg.prefix(player, "§eSurvival", "§aEnjoy our modded survival feeling. New ores, items and displays, and we are still beginner friendly.");
  974. goto("wait");
  975. @infopoint2
  976. msg(player, getSpacer());
  977. 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.");
  978. goto("wait");
  979. @infopoint3
  980. msg(player, getSpacer());
  981. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  982. goto("wait");
  983. @infopoint4
  984. msg(player, getSpacer());
  985. 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.");
  986. goto("wait");
  987. @infopoint5
  988. msg(player, getSpacer());
  989. 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.");
  990. goto("wait");
  991. @infopoint6
  992. msg(player, getSpacer());
  993. 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.");
  994. goto("wait");
  995. @infopoint7
  996. msg(player, getSpacer());
  997. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  998. goto("wait");
  999. @infopoint8
  1000. msg(player, getSpacer());
  1001. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  1002. goto("wait");
  1003. @infopoint9
  1004. msg(player, getSpacer());
  1005. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  1006. goto("wait");
  1007. @infopoint10
  1008. msg(player, getSpacer());
  1009. msg.prefix(player, "§eRules", "§aThere is at least one rule: Be respectful. Look at our fake rules.");
  1010. goto("wait");
  1011. @infopoint11
  1012. msg(player, getSpacer());
  1013. msg.prefix(player, "§eNote", "§aEverything is self-coded. Worldedit is the only external mod we use.");
  1014. goto("wait");
  1015. @party
  1016. if(size == 0) {
  1017. @partyhelp
  1018. msg.prefix(player, prefix_party, "§r/party ...");
  1019. msg(player, "§5 - invite <player> §rInvite a player");
  1020. msg(player, "§5 - accept <player> §rAccept an invitation");
  1021. msg(player, "§5 - deny <player> §rDeny an invitation");
  1022. msg(player, "§5 - kick <player> §rKick a player");
  1023. msg(player, "§5 - leave §rLeave the party");
  1024. msg(player, "§5 - promote <player> §rPromote a player");
  1025. msg(player, "§5 - demote <player> §rDemote a player");
  1026. msg(player, "§5 - disband §rDisband a party");
  1027. msg(player, "§5 - list §rParty information");
  1028. msg(player, "§5 - <message> §rSends a party message");
  1029. goto("wait");
  1030. }
  1031. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1032. if(arg0 == "list") {
  1033. if(size != 1) {
  1034. msg.prefix(player, prefix_party, "§5/party list");
  1035. } else {
  1036. if(!player.isInParty(player)) {
  1037. msg.prefix(player, prefix_party, "You are not in a party.");
  1038. goto("wait");
  1039. }
  1040. list = party.getList(player.getPartyId(player));
  1041. table = table.new("§5", 13, 7);
  1042. msg(player, table.getStart(table));
  1043. msg(player, table.get(table, "§lName", "§lRole"));
  1044. msg(player, table.getMiddle(table));
  1045. iter = list.iterator(list);
  1046. while(hasNext(iter)) {
  1047. p = player.get(next(iter));
  1048. msg(player, table.get(table, player.getName(p), player.getPartyRank(p)));
  1049. }
  1050. msg(player, table.getEnd(table));
  1051. }
  1052. goto("wait");
  1053. }
  1054. if(arg0 == "leave") {
  1055. if(size != 1) {
  1056. msg.prefix(player, prefix_party, "§5/party leave");
  1057. } else {
  1058. if(!player.isInParty(player)) {
  1059. msg.prefix(player, prefix_party, "You are not in a party.");
  1060. goto("wait");
  1061. }
  1062. party.kickPlayer(player, "leave");
  1063. }
  1064. goto("wait");
  1065. }
  1066. if(arg0 == "disband") {
  1067. if(size != 1) {
  1068. msg.prefix(player, prefix_party, "§5/party disband");
  1069. } else {
  1070. if(!player.isInParty(player)) {
  1071. msg.prefix(player, prefix_party, "You are not in a party.");
  1072. goto("wait");
  1073. }
  1074. if(!player.isPartyLeader(player)) {
  1075. msg.prefix(player, prefix_party, "You are not the party leader.");
  1076. goto("wait");
  1077. }
  1078. party.delete(player.getPartyId(player));
  1079. }
  1080. goto("wait");
  1081. }
  1082. if(arg0 == "kick") {
  1083. if(size != 2) {
  1084. msg.prefix(player, prefix_party, "§5/party kick <player>");
  1085. } else {
  1086. if(!player.isInParty(player)) {
  1087. msg.prefix(player, prefix_party, "You are not in a party.");
  1088. goto("wait");
  1089. }
  1090. if(!player.isPartyLeaderOrMod(player)) {
  1091. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1092. goto("wait");
  1093. }
  1094. pname = list.getIndex(args, 1);
  1095. if(!checkIfEverOnline(pname)) {
  1096. msg.prefix(player, prefix_party, "This player has never been online.");
  1097. goto("wait");
  1098. }
  1099. p = read.player(pname);
  1100. if(p == null) {
  1101. msg.prefix(player, prefix_party, "This player is not online.");
  1102. goto("wait");
  1103. }
  1104. if(player == p) {
  1105. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1106. goto("wait");
  1107. }
  1108. if(!party.same(p, player)) {
  1109. msg.prefix(player, prefix_party, "This player is not in your party.");
  1110. goto("wait");
  1111. }
  1112. ownrank = player.getPartyRank(player);
  1113. if(ownrank == "Moderator") {
  1114. if(player.isPartyLeaderOrMod(p)) {
  1115. msg.prefix(player, prefix_party, "§rDu darfst diesen Spieler nicht kicken");
  1116. goto("wait");
  1117. }
  1118. }
  1119. party.kickPlayer(p, "kick");
  1120. }
  1121. goto("wait");
  1122. }
  1123. if(arg0 == "promote" || arg0 == "demote") {
  1124. if(size != 2) {
  1125. msg.prefix(player, prefix_party, concat("§5/party ", arg0, " <player>"));
  1126. } else {
  1127. pname = list.getIndex(args, 1);
  1128. if(!player.isInParty(player)) {
  1129. msg.prefix(player, prefix_party, "You are not in a party.");
  1130. goto("wait");
  1131. }
  1132. if(!player.isPartyLeader(player)) {
  1133. msg.prefix(player, prefix_party, "You are not the party leader.");
  1134. goto("wait");
  1135. }
  1136. if(!checkIfEverOnline(pname)) {
  1137. msg.prefix(player, prefix_party, "This player has never been online.");
  1138. goto("wait");
  1139. }
  1140. p = read.player(pname);
  1141. if(p == null) {
  1142. msg.prefix(player, prefix_party, "This player is not online.");
  1143. goto("wait");
  1144. }
  1145. if(player == p) {
  1146. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1147. goto("wait");
  1148. }
  1149. if(!party.same(p, player)) {
  1150. msg.prefix(player, prefix_party, "This player is not in your party.");
  1151. goto("wait");
  1152. }
  1153. partyid = player.getPartyId(player);
  1154. rank = player.getPartyRank(p);
  1155. if(arg0 == "promote") {
  1156. if(rank == "Player") {
  1157. player.setPartyRank(p, "Moderator");
  1158. party.sendMessage(partyid, concat("§r", pname, " is now Moderator."));
  1159. } elseif(rank == "Moderator") {
  1160. player.setPartyRank(p, "Leader");
  1161. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1162. party.sendMessage(partyid, concat("§r", pname, " is now Leader."));
  1163. }
  1164. } elseif(arg0 == "demote") {
  1165. if(rank == "Moderator") {
  1166. player.setPartyRank(p, "Player");
  1167. party.sendMessage(partyid, concat("§r", pname, " is no longer Moderator."));
  1168. } else {
  1169. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1170. }
  1171. }
  1172. }
  1173. goto("wait");
  1174. }
  1175. if(arg0 == "invite") {
  1176. if(size != 2) {
  1177. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1178. } else {
  1179. p_name = list.getIndex(args, 1);
  1180. if(!checkIfEverOnline(p_name)) {
  1181. msg.prefix(player, prefix_party, "This player has never been online.");
  1182. goto("wait");
  1183. }
  1184. p = read.player(p_name);
  1185. temp = party.invitePlayer(player, p);
  1186. if(temp == "inviteeNotOnline") {
  1187. msg.prefix(player, prefix_party, "This player is not online.");
  1188. } elseif(temp == "inviterEqualsInvitee") {
  1189. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1190. } elseif(temp == "inviterNotPermitted") {
  1191. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1192. } elseif(temp == "inviteeAlreadyInParty") {
  1193. msg.prefix(player, prefix_party, "This player is already in your party.");
  1194. } elseif(temp == "inviteeAlreadyInvited") {
  1195. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1196. } else {
  1197. msg.prefix(player, prefix_party, "Invitation sent.");
  1198. }
  1199. }
  1200. goto("wait");
  1201. }
  1202. if(arg0 == "accept") {
  1203. if(size != 2) {
  1204. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1205. } else {
  1206. if(player.isInParty(player)) {
  1207. msg.prefix(player, prefix_party, "You are already in a party.");
  1208. goto("wait");
  1209. }
  1210. pname = list.getIndex(args, 1);
  1211. if(!checkIfEverOnline(pname)) {
  1212. msg.prefix(player, prefix_party, "This player has never been online.");
  1213. goto("wait");
  1214. }
  1215. p = read.player(pname);
  1216. if(p == null) {
  1217. msg.prefix(player, prefix_party, "This player is no longer online.");
  1218. goto("wait");
  1219. }
  1220. player_uuid = player.getUuid(player);
  1221. p_uuid = player.getUuid(p);
  1222. list = map.get(party_invitations, player_uuid);
  1223. if(list == null || !list.contains(list, p_uuid)) {
  1224. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1225. goto("wait");
  1226. }
  1227. if(player.isInParty(p)) { //wenn einlader bereits in party
  1228. partyid = player.getPartyId(p);
  1229. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1230. party.addPlayer(partyid, player);
  1231. player.setPartyRank(player, "Player");
  1232. } else {
  1233. msg.prefix(player, prefix_party, "This player is already in another party.");
  1234. goto("wait");
  1235. }
  1236. } else {
  1237. partyid = map.get(party_invite_ids, p_uuid);
  1238. party.setList(partyid, list.new());
  1239. party.addPlayer(partyid, p);
  1240. party.addPlayer(partyid, player);
  1241. player.setPartyRank(p, "Leader");
  1242. player.setPartyRank(player, "Player");
  1243. msg.prefix(p, prefix_party, "The party was created.");
  1244. }
  1245. list.clear(list); //Einladungs-Liste von oben
  1246. party.sendMessage(partyid, concat("§r", player_name, " joined the party."));
  1247. }
  1248. goto("wait");
  1249. }
  1250. if(arg0 == "deny") {
  1251. if(size != 2) {
  1252. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1253. } else {
  1254. player_uuid = player.getUuid(player);
  1255. list = map.get(party_invitations, player_uuid);
  1256. if(list != null) {
  1257. pname = list.getIndex(args, 1);
  1258. p = read.player(pname);
  1259. if(p == null) {
  1260. msg.prefix(player, prefix_party, "This player is no longer online.");
  1261. goto("wait");
  1262. }
  1263. p_uuid = player.getUuid(p);
  1264. if(list == null || !list.contains(list, p_uuid)) {
  1265. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1266. goto("wait");
  1267. }
  1268. index = list.getIndexOf(list, p_uuid);
  1269. list.remove(list, p_uuid);
  1270. keytimes = map.get(delkeytimes, player_uuid);
  1271. list.removeIndex(keytimes, index);
  1272. p = read.player(pname);
  1273. if(p != null) {
  1274. msg.prefix(p, prefix_party, concat("§r", player_name, " has denied your invitation."));
  1275. }
  1276. msg.prefix(player, prefix_party, concat("Invitation from ", pname, " denied."));
  1277. }
  1278. }
  1279. goto("wait");
  1280. }
  1281. if(player.isInParty(player)) {
  1282. message = concat(pname, " §1| §r", text.concatList(args, " ", 0, list.getSize(args) - 1));
  1283. party.sendMessage(player.getPartyId(player), message);
  1284. goto("wait");
  1285. }
  1286. goto("partyhelp");
  1287. @setmessage
  1288. if(size == 0) {
  1289. @setmessagehelp
  1290. msg.prefix(player, prefix_commands, "§r/setmessage ...");
  1291. msg(player, "§e- join <message> §rSets your joinmessage");
  1292. msg(player, "§e- leave <message> §rSets your leavemessage");
  1293. msg(player, "§e- info §rShows you set messages");
  1294. if(perm.has(player, "setmessage.delete")) {
  1295. msg(player, "§e- delete <player> §rDeletes a players messages");
  1296. }
  1297. goto("wait");
  1298. }
  1299. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1300. if(arg0 == "info") {
  1301. fullname = player.getFullName(player);
  1302. message = text.convert(player.getJoinMessage(player));
  1303. if(message == null) {
  1304. msg.prefix(player, prefix_commands, "No join message set.");
  1305. } else {
  1306. msg.prefix(player, prefix_commands, concat("§a§l> §r", fullname, " §9", message));
  1307. }
  1308. message = text.convert(player.getLeaveMessage(player));
  1309. if(message == null) {
  1310. msg.prefix(player, prefix_commands, "No leave message set.");
  1311. } else {
  1312. msg.prefix(player, prefix_commands, concat("§c§l> §r", fullname, " §9", message));
  1313. }
  1314. goto("wait");
  1315. }
  1316. if(arg0 == "join") {
  1317. if(size < 2) {
  1318. goto("setmessagehelp");
  1319. }
  1320. message = text.concatList(args, " ", 1, size - 1);
  1321. player.setJoinMessage(player, message);
  1322. msg.prefix(player, prefix_commands, "Join-Message set.");
  1323. goto("wait");
  1324. }
  1325. if(arg0 == "leave") {
  1326. if(size < 2) {
  1327. goto("setmessagehelp");
  1328. }
  1329. message = text.concatList(args, " ", 1, size - 1);
  1330. player.setLeaveMessage(player, message);
  1331. msg.prefix(player, prefix_commands, "Leave-Message set.");
  1332. goto("wait");
  1333. }
  1334. if(arg0 == "delete") {
  1335. if(size == 1) {
  1336. p_uuid = player.getUuid(player);
  1337. } elseif(size == 2) {
  1338. if(!perm.has(player, "setmessage.delete")) {
  1339. perm.no(player, "setmessage.delete");
  1340. goto("wait");
  1341. }
  1342. p_name = list.getIndex(args, 1);
  1343. if(!checkIfEverOnline(p_name)) {
  1344. msg.prefix(player, prefix_commands, "This player has never been online.");
  1345. goto("wait");
  1346. }
  1347. p_uuid = player.getUuid(p_name);
  1348. } else {
  1349. goto("setmessagehelp");
  1350. }
  1351. p_id = player.getId(p_uuid);
  1352. player.setJoinMessage(p_id, "null");
  1353. player.setLeaveMessage(p_id, "null");
  1354. msg.prefix(player, prefix_commands, "Messages deleted.");
  1355. goto("wait");
  1356. }
  1357. goto("wait");
  1358. @live
  1359. boolean = !player.isLive(player);
  1360. player.setLive(player, boolean);
  1361. player.setHeadName(player);
  1362. player.setTabName(player);
  1363. msg.prefix(player, prefix_commands, "Live toggled.");
  1364. goto("wait");
  1365. @lightning
  1366. location = player.getTarget(player, 50, true, true);
  1367. if(block.getType(location) == "minecraft:air") {
  1368. msg.prefix(player, prefix_commands, "No block in sight.");
  1369. goto("wait");
  1370. }
  1371. entity.spawn("minecraft:lightning_bolt", location);
  1372. goto("wait");
  1373. @ride
  1374. player_uuid = player.getUuid(player);
  1375. if(set.contains(ride_set, player_uuid)) {
  1376. msg.prefix(player, prefix_commands, "Entity-Ride-Click removed.");
  1377. set.remove(ride_set, player_uuid);
  1378. } else {
  1379. msg.prefix(player, prefix_commands, "Click an entity to ride it.");
  1380. set.add(ride_set, player_uuid);
  1381. }
  1382. goto("wait");
  1383. @vanish
  1384. //vanish [on/off] [player]
  1385. if(size == 0) {
  1386. if(set.contains(vanish_set, player.getUuid(affectedplayer))) {
  1387. bool = "off";
  1388. } else {
  1389. bool = "on";
  1390. }
  1391. }
  1392. if(size >= 1) {
  1393. bool = list.getIndex(args, 0);
  1394. }
  1395. if(size == 2) {
  1396. affectedname = list.getIndex(args, 1);
  1397. affectedplayer = read.player(affectedname);
  1398. affectedname = player.getName(affectedplayer);
  1399. if(affectedplayer == null) {
  1400. msg.prefix(player, prefix_commands, "This player is not online.");
  1401. goto("wait");
  1402. }
  1403. }
  1404. if(bool == "on") {
  1405. if(affectedname != player_name) {
  1406. msg.prefix(player, prefix_commands, concat(affectedname, " has been vanished."));
  1407. msg.prefix(affectedplayer, prefix_commands, concat("You have been vanished by ", player_name, "."));
  1408. } else {
  1409. msg.prefix(affectedplayer, prefix_commands, "You are vanished.");
  1410. }
  1411. set.add(vanish_set, player.getUuid(affectedplayer));
  1412. player.hide(affectedplayer);
  1413. } elseif(bool == "off") {
  1414. if(affectedname != player_name) {
  1415. msg.prefix(player, prefix_commands, concat(affectedname, " is no longer vanished."));
  1416. msg.prefix(affectedplayer, prefix_commands, concat("You are no longer vanished caused by ", player_name, "."));
  1417. } else {
  1418. msg.prefix(affectedplayer, prefix_commands, "You are no longer vanished.");
  1419. }
  1420. set.remove(vanish_set, player.getUuid(affectedplayer));
  1421. player.show(affectedplayer);
  1422. } else {
  1423. msg.prefix(player, prefix_commands, "§r/vanish [on/off] [player]");
  1424. }
  1425. goto("wait");
  1426. @user
  1427. if(size == 0) {
  1428. p_name = player.getName(player);
  1429. p_uuid = player.getUuid(p_name);
  1430. } else {
  1431. if(!perm.has(player, "user.other")) {
  1432. perm.no(player, "user.other");
  1433. goto("wait");
  1434. }
  1435. p_name = list.getIndex(args, 0);
  1436. if(!checkIfEverOnline(p_name)) {
  1437. msg.prefix(player, prefix_commands, "This player has never been online.");
  1438. goto("wait");
  1439. }
  1440. p_uuid = player.getUuid(p_name);
  1441. p_name = player.getName(p_uuid);
  1442. }
  1443. p = read.player(p_name);
  1444. p_id = player.getId(p_uuid);
  1445. if(p == null) {
  1446. p_or_id = p_id;
  1447. } else {
  1448. p_or_id = p;
  1449. }
  1450. table = table.new("§8", 6, 24);
  1451. msg(player, table.getStart(table));
  1452. msg(player, table.get(table, "Player", p_name));
  1453. msg(player, table.getMiddle(table));
  1454. msg(player, table.get(table, "Playtime", text.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  1455. msg(player, table.get(table, "Joins", text.number(player.getJoins(p_or_id))));
  1456. msg(player, table.get(table, "First Join", getDateString(player.getFirstJoin(p_or_id))));
  1457. msg(player, table.get(table, "Last Join", getDateString(player.getLastJoin(p_or_id))));
  1458. msg(player, table.get(table, "UUID", p_uuid));
  1459. msg(player, table.get(table, "ID", text.number(p_id)));
  1460. msg(player, table.get(table, "Rank", getRank(p_or_id)));
  1461. msg(player, table.get(table, "PvP", hasPvpOn(p_or_id)));
  1462. msg(player, table.get(table, "Quests", text.number(quest.getCounter(p_or_id))));
  1463. msg(player, table.get(table, "Money", text.number(getMoney(p_or_id))));
  1464. msg(player, table.getEnd(table));
  1465. goto("wait");
  1466. @friend
  1467. if(size == 0) {
  1468. @friend_syntax
  1469. msg.prefix(player, prefix_friends, "§r/friend ...");
  1470. msg(player, "§5 - add <player> §rAdds a friend");
  1471. msg(player, "§5 - remove <player> §rRemoves a friend");
  1472. msg(player, "§5 - list §rLists all your friends");
  1473. goto("wait");
  1474. }
  1475. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1476. if(arg0 == "add") {
  1477. if(size != 2) {
  1478. msg.prefix(player, prefix_friends, "§r/friend add <player>");
  1479. goto("wait");
  1480. }
  1481. friend_name = list.getIndex(args, 1);
  1482. if(player_name == friend_name) {
  1483. msg.prefix(player, prefix_friends, "You can't invite yourself.");
  1484. goto("wait");
  1485. }
  1486. player_id = player.getId(player);
  1487. if(!checkIfEverOnline(friend_name)) {
  1488. msg.prefix(player, prefix_friends, "This player has never been online.");
  1489. goto("wait");
  1490. }
  1491. friend_id = player.getId(player.getUuid(friend_name));
  1492. if(friend.check(player_id, friend_id)) {
  1493. msg.prefix(player, prefix_friends, "This player is already your friend.");
  1494. goto("wait");
  1495. }
  1496. if(map.contains(friend_requests, friend_id)) {
  1497. if(map.get(friend_requests, friend_id) == player_id) {
  1498. friend.add(player_id, friend_id);
  1499. map.remove(friend_requests, friend_id);
  1500. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is your friend now."));
  1501. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is your friend now."), true);
  1502. goto("wait");
  1503. }
  1504. }
  1505. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  1506. friend = read.player(friend_name);
  1507. msg.prefix(player, prefix_friends, concat("You sent an invitation to §7", friend_name, "§r."));
  1508. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r wants to be your friend."), true);
  1509. if(friend != null) {
  1510. msg(friend, text.click("§r[§aAccept§r]", concat("/friend add ", player_name)));
  1511. }
  1512. goto("wait");
  1513. }
  1514. if(arg0 == "remove") {
  1515. if(size != 2) {
  1516. msg.prefix(player, prefix_friends, "§r/friend remove <player>");
  1517. goto("wait");
  1518. }
  1519. friend_name = list.getIndex(args, 1);
  1520. player_id = player.getId(player);
  1521. if(!checkIfEverOnline(friend_name)) {
  1522. msg.prefix(player, prefix_friends, "This player has never been online.");
  1523. goto("wait");
  1524. }
  1525. friend_id = player.getId(player.getUuid(friend_name));
  1526. if(!friend.check(player_id, friend_id)) {
  1527. msg.prefix(player, prefix_friends, "This player isn't your friend.");
  1528. goto("wait");
  1529. }
  1530. friend.delete(player_id, friend_id);
  1531. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is no longer your friend."));
  1532. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is no longer your friend."), true);
  1533. goto("wait");
  1534. }
  1535. if(arg0 == "list") {
  1536. if(size != 1) {
  1537. msg.prefix(player, prefix_friends, "/friend list");
  1538. goto("wait");
  1539. }
  1540. player_id = player.getId(player);
  1541. friendlist = friend.getList(player_id);
  1542. listsize = list.getSize(friendlist);
  1543. if(listsize == 0) {
  1544. msg.prefix(player, prefix_friends, "You have no friends yet.");
  1545. goto("wait");
  1546. }
  1547. msg(player, "§5Friends:");
  1548. for(i = 0; i <= listsize - 1; i++) {
  1549. msg(player, "§r- ", list.getIndex(friendlist, i));
  1550. }
  1551. goto("wait");
  1552. }
  1553. goto("friend_syntax");
  1554. @var
  1555. if(size != 2) {
  1556. msg.prefix(player, prefix_commands, "§r/var <id> <varname>");
  1557. goto("wait");
  1558. }
  1559. script_id = list.getIndex(args, 0);
  1560. script = script.getFromId(script_id);
  1561. if(script == null) {
  1562. msg.prefix(player, "§dScript", "Invalid id");
  1563. goto("wait");
  1564. }
  1565. var_name = list.getIndex(args, 1);
  1566. var = script.getVar(script, var_name);
  1567. msg.prefix(player, "§dScript", concat(var_name, " = ", var));
  1568. goto("wait");
  1569. @voxel
  1570. if(size < 1) {
  1571. @voxelhelp
  1572. msg.prefix(player, prefix_commands, "/voxel <radius:1-5>");
  1573. msg.prefix(player, prefix_commands, "/voxel block");
  1574. goto("wait");
  1575. }
  1576. arg0 = list.getIndex(args, 0);
  1577. if(isDouble(arg0)) {
  1578. radius = arg0;
  1579. if(radius < 1) {
  1580. radius = 1;
  1581. }
  1582. if(radius > 5) {
  1583. radius = 5;
  1584. }
  1585. script = script.get("Voxel");
  1586. map = script.getVar(script, "radius_per_player");
  1587. map.add(map, player.getUuid(player), radius);
  1588. script.setVar(script, "radius_per_player", map);
  1589. msg.prefix(player, prefix_commands, concat("Set radius to ", text.number(radius), "."));
  1590. goto("wait");
  1591. }
  1592. if(arg0 == "block") {
  1593. item = entity.getEquip(player, "hand");
  1594. item_type = item.getType(item);
  1595. if(item_type == "minecraft:air") {
  1596. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1597. goto("wait");
  1598. }
  1599. state = block.newState(item_type);
  1600. script = script.get("Voxel");
  1601. map = script.getVar(script, "state_per_player");
  1602. map.add(map, player.getUuid(player), state);
  1603. script.setVar(script, "state_per_player", map);
  1604. msg.prefix(player, prefix_commands, concat("Set block to ", item_type, "."));
  1605. goto("wait");
  1606. }
  1607. goto("voxelhelp");
  1608. @setservermessage
  1609. if(size < 1) {
  1610. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  1611. goto("wait");
  1612. }
  1613. message = text.concatList(args, " ", 0, size - 1);
  1614. message = text.replace(message, "&", "§");
  1615. setMOTD(message);
  1616. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  1617. goto("wait");
  1618. @error
  1619. if(size < 1) {
  1620. msg.prefix(player, "§cError", "§r/error ...");
  1621. msg(player, "§c - list §rLists all errors");
  1622. msg(player, "§c - clear §rDeletes all errors");
  1623. goto("wait");
  1624. }
  1625. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1626. if(arg0 == "list") {
  1627. error_size = error.getSize();
  1628. if(error_size == 0) {
  1629. msg.prefix(player, "§cError", "No errors existing.");
  1630. goto("wait");
  1631. }
  1632. for(i = 0; i < error_size; i++) {
  1633. msg(player, error.getIndex(i));
  1634. }
  1635. goto("wait");
  1636. }
  1637. if(arg0 == "clear") {
  1638. error.clear();
  1639. msg.prefix(player, "§cError", "All errors deleted.");
  1640. goto("wait");
  1641. }
  1642. goto("wait");
  1643. @errordebug
  1644. if(size < 1) {
  1645. msg.prefix(player, "§cErrorDebugs", "§r/errordebug ...");
  1646. msg(player, "§c - list §rLists all errordebugs");
  1647. msg(player, "§c - clear §rDeletes all errordebugs");
  1648. msg(player, "§c - toggle §rToggles errordebugs");
  1649. goto("wait");
  1650. }
  1651. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1652. if(arg0 == "list") {
  1653. error_size = debug.getSize();
  1654. if(error_size == 0) {
  1655. msg.prefix(player, "§cErrorDebugs", "No errordebugs existing.");
  1656. goto("wait");
  1657. }
  1658. for(i = 0; i < error_size; i++) {
  1659. msg(player, debug.getIndex(i));
  1660. }
  1661. goto("wait");
  1662. }
  1663. if(arg0 == "clear") {
  1664. debug.clear();
  1665. msg.prefix(player, "§cErrorDebugs", "All errordebugs deleted.");
  1666. goto("wait");
  1667. }
  1668. if(arg0 == "toggle") {
  1669. new_value = !perm.has(player, "script.debug");
  1670. player.showDebug(player, new_value);
  1671. if(new_value) {
  1672. msg.prefix(player, prefix_commands, "Debug messages are now shown.");
  1673. } else {
  1674. msg.prefix(player, prefix_commands, "Debug messages are now hidden.");
  1675. }
  1676. goto("wait");
  1677. }
  1678. goto("wait");
  1679. @hat
  1680. item = entity.getEquip(player, "hand");
  1681. if(item.getType(item) == "minecraft:air") {
  1682. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  1683. goto("wait");
  1684. }
  1685. entity.setEquip(player, "head", item);
  1686. entity.setEquip(player, "hand", read.item("minecraft:air"));
  1687. goto("wait");
  1688. @news
  1689. if(size < 1) {
  1690. msg.prefix(player, prefix_commands, "/news <text>");
  1691. goto("wait");
  1692. }
  1693. message = text.concatList(args, " ", 0, size - 1);
  1694. online_list = players.toList();
  1695. for(i = 0; i < list.getSize(online_list); i++) {
  1696. p = list.getIndex(online_list, i);
  1697. title.reset(p);
  1698. title.setSub(p, concat("by ", player_name));
  1699. title.send(p, "§cNews");
  1700. msg.prefix(p, "§4News", concat("§c", message));
  1701. }
  1702. goto("wait");
  1703. @spawn
  1704. if(size == 1) {
  1705. if(!perm.has(player, "teleport.other")) {
  1706. perm.no(player, "teleport.other");
  1707. goto("wait");
  1708. }
  1709. affectedname = list.getIndex(args, 0);
  1710. affectedplayer = read.player(affectedname);
  1711. if(affectedplayer == null) {
  1712. msg.prefix(player, prefix_commands, "This player is not online.");
  1713. goto("wait");
  1714. }
  1715. }
  1716. if(player.hasMinigame(affectedplayer)) {
  1717. if(size == 1) {
  1718. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  1719. } else {
  1720. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  1721. }
  1722. goto("wait");
  1723. }
  1724. if(player.teleport(affectedplayer, serverspawn, true)) {
  1725. if(player == affectedplayer) {
  1726. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the spawn.");
  1727. } else {
  1728. affectedname = player.getName(affectedplayer);
  1729. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the spawn."));
  1730. }
  1731. }
  1732. goto("wait");
  1733. @rank
  1734. msg(player, getSpacer());
  1735. rank = getRank(player);
  1736. msg(player, concat("§6Current rank: §r[", rank, "§r]"));
  1737. msg(player, "Choose a rank:");
  1738. rank.showAll(player);
  1739. goto("wait");
  1740. @setrank
  1741. if(size < 2) {
  1742. msg.prefix(player, prefix_commands, "§r/setrank <player> <rank>");
  1743. goto("wait");
  1744. }
  1745. p_name = list.getIndex(args, 0);
  1746. if(!checkIfEverOnline(p_name)) {
  1747. msg.prefix(player, prefix_commands, "This player has never been online.");
  1748. goto("wait");
  1749. }
  1750. p = read.player(p_name);
  1751. if(p == null) {
  1752. msg.prefix(player, prefix_commands, "This player is not online.");
  1753. goto("wait");
  1754. }
  1755. p_name = player.getName(p);
  1756. rank = text.concatList(args, " ", 1, size - 1);
  1757. if(!perm.has(player, "setrank.other")) {
  1758. if(player.getName(player) != p_name) {
  1759. perm.no(player, "setrank.other");
  1760. goto("wait");
  1761. }
  1762. colored = text.startsWith(rank, "&", 0);
  1763. if(colored) {
  1764. rank = text.subString(rank, 1, text.length(rank));
  1765. }
  1766. a = rank.getRankArray();
  1767. a_size = array.getSize(a);
  1768. for(i = 0; i < a_size; i++) {
  1769. tech_name = a[i, 0];
  1770. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  1771. perm.no(p, tech_name);
  1772. goto("wait");
  1773. }
  1774. }
  1775. if(colored) {
  1776. rank = concat("&", rank);
  1777. }
  1778. }
  1779. if(text.length(rank) >= 30) {
  1780. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  1781. goto("wait");
  1782. }
  1783. rank = text.replace(rank, "&", "§");
  1784. setRank(p, rank);
  1785. player.setTabName(p);
  1786. msg.prefix(player, prefix_commands, concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  1787. goto("wait");
  1788. @nowb
  1789. if(player.isAfk(player)) {
  1790. player.setAfk(player, false);
  1791. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  1792. player.setTabName(player);
  1793. } else {
  1794. msg.prefix(player, prefix_commands, "You are not afk.");
  1795. }
  1796. goto("wait");
  1797. @afk
  1798. nickname = player.getNickname(player);
  1799. if(player.isAfk(player)) {
  1800. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  1801. player.setAfk(player, false);
  1802. } else {
  1803. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  1804. player.setAfk(player, true);
  1805. }
  1806. player.setTabName(player);
  1807. if(!afk_loop_active) {
  1808. sgoto(30, "afk_loop");
  1809. }
  1810. goto("wait");
  1811. @silentjoin
  1812. silentjoin = player.getSilentJoin(player);
  1813. if(silentjoin) {
  1814. player.setSilentJoin(player, false);
  1815. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  1816. } else {
  1817. player.setSilentJoin(player, true);
  1818. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  1819. }
  1820. goto("wait");
  1821. @jailloop
  1822. size = list.getSize(jailed_list);
  1823. for(i = 0; i < size; i++) {
  1824. p_name = player.getName(list.getIndex(jailed_list, i));
  1825. showJail(p_name);
  1826. }
  1827. if(size > 0) {
  1828. jail_loop_active = true;
  1829. sgoto(5, "jailloop");
  1830. } else {
  1831. jail_loop_active = false;
  1832. }
  1833. goto("wait");
  1834. @coordsloop
  1835. list = players.toList();
  1836. size = list.getSize(list);
  1837. for(i = 0; i < size; i++) {
  1838. p = list.getIndex(list, i);
  1839. if(showcoords.get(p)) {
  1840. p_loc = entity.getLocation(p);
  1841. 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"))));
  1842. }
  1843. }
  1844. sgoto(10, "coordsloop");
  1845. goto("wait");
  1846. @afk_loop
  1847. afk_map = getScriptVar("afk_map");
  1848. iter = map.iterator(afk_map);
  1849. while(hasNext(iter)) {
  1850. element = next(iter);
  1851. yaw = map.getValue(element);
  1852. player = player.get(map.getKey(element));
  1853. if(player != null) {
  1854. if(yaw != loc.getYaw(entity.getLocation(player))) {
  1855. nickname = player.getNickname(player);
  1856. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  1857. remove(iter);
  1858. player.setAfk(player, false);
  1859. player.setTabName(player);
  1860. }
  1861. }
  1862. }
  1863. size = map.getSize(afk_map);
  1864. if(size > 0) {
  1865. afk_loop_active = true;
  1866. sgoto(30, "afk_loop");
  1867. } else {
  1868. afk_loop_active = false;
  1869. }
  1870. goto("wait");
  1871. @pvp
  1872. if(size == 0) {
  1873. if(hasPvpOn(player)) {
  1874. mode = "off";
  1875. } else {
  1876. mode = "on";
  1877. }
  1878. } elseif(size == 1) {
  1879. mode = list.getIndex(args, 0);
  1880. if(!(mode == "on" || mode == "off")) {
  1881. goto("pvphelp");
  1882. }
  1883. } elseif(size == 2) {
  1884. if(!perm.has(player, "pvp.other")) {
  1885. perm.no(player, "pvp.other");
  1886. goto("wait");
  1887. }
  1888. mode = list.getIndex(args, 0);
  1889. if(!(mode == "on" || mode == "off")) {
  1890. goto("pvphelp");
  1891. }
  1892. affectedname = list.getIndex(args, 1);
  1893. if(!checkIfEverOnline(affectedname)) {
  1894. msg.prefix(player, prefix_commands, "This player has never been online.");
  1895. goto("wait");
  1896. }
  1897. affectedplayer = read.player(affectedname);
  1898. if(affectedplayer == null) {
  1899. msg.prefix(player, prefix_commands, "This player is not online.");
  1900. goto("wait");
  1901. }
  1902. } else {
  1903. @pvphelp
  1904. if(perm.has(player, "pvp.other")) {
  1905. msg.prefix(player, prefix_commands, "§r/pvp [on/off] [player]");
  1906. } else {
  1907. msg.prefix(player, prefix_commands, "§r/pvp [on/off]");
  1908. }
  1909. goto("wait");
  1910. }
  1911. if(mode == "on") {
  1912. setPvp(affectedplayer, true);
  1913. msg.prefix(affectedplayer, prefix_commands, "You have enabled PvP!");
  1914. if(affectedplayer != player) {
  1915. affectedname = player.getName(affectedplayer);
  1916. msg.prefix(player, prefix_commands, concat(affectedname, " has now enabled PvP!"));
  1917. }
  1918. } else {
  1919. setPvp(affectedplayer, false);
  1920. msg.prefix(affectedplayer, prefix_commands, "You have PvP disabled!");
  1921. if(affectedplayer != player) {
  1922. affectedname = player.getName(affectedplayer);
  1923. msg.prefix(player, prefix_commands, concat(affectedname, " has now disabled PvP!"));
  1924. }
  1925. }
  1926. goto("wait");
  1927. @suicide
  1928. if(size < 0 || size > 1) {
  1929. msg.prefix(player, prefix_commands, "§r/suicide [player]");
  1930. goto("wait");
  1931. }
  1932. if(size == 1) {
  1933. if(!perm.has(player, "kill.other")) {
  1934. perm.no(player, "kill.other");
  1935. goto("wait");
  1936. }
  1937. affectedname = list.getIndex(args, 0);
  1938. affectedplayer = read.player(affectedname);
  1939. if(affectedplayer == null) {
  1940. msg.prefix(player, prefix_commands, "This player is not online.");
  1941. goto("wait");
  1942. }
  1943. }
  1944. if(affectedplayer != player) {
  1945. affectedname = player.getName(affectedplayer);
  1946. msg.prefix(player, prefix_commands, concat(affectedname, " has been killed."));
  1947. msg.prefix(affectedplayer, prefix_commands, concat("You have been killed by ", player_name, "."));
  1948. } else {
  1949. msg.prefix(affectedplayer, prefix_commands, "You killed yourself.");
  1950. }
  1951. entity.damage(affectedplayer, 1000);
  1952. goto("wait");
  1953. @nickname
  1954. if(size < 1) {
  1955. msg.prefix(player, "§eNickname", "§r/nickname ...");
  1956. msg(player, "§e - <name> ", "Sets a nickname");
  1957. msg(player, "§e - remove ", "Removes a nickname");
  1958. goto("wait");
  1959. }
  1960. nickname = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  1961. if(nickname == "remove") {
  1962. player.removeNickName(player);
  1963. msg.prefix(player, prefix_commands, concat("§rYour nickname was removed."));
  1964. } else {
  1965. player.setNickName(player, nickname);
  1966. msg.prefix(player, prefix_commands, concat("§rYour nickname was changed to ", nickname, "§r."));
  1967. }
  1968. player.setTabName(player);
  1969. goto("wait");
  1970. @iteminfo
  1971. item = entity.getEquip(player, "hand");
  1972. text = text.item(item);
  1973. text = text.replace(text, "\"", "\\\"");
  1974. msg(player, text.clipBoard(text, text));
  1975. goto("wait");
  1976. @perm
  1977. if(size == 0) {
  1978. @perm_syntax
  1979. msg.prefix(player, prefix_perms, "§r/perm ...");
  1980. if(perm.has(player, "perm.give")) {
  1981. msg(player, "§6 - give <player> <perm>");
  1982. }
  1983. if(perm.has(player, "perm.remove")) {
  1984. msg(player, "§6 - remove <player> <perm>");
  1985. }
  1986. if(perm.has(player, "perm.removeall")) {
  1987. msg(player, "§6 - removeall <player>");
  1988. }
  1989. if(perm.has(player, "perm.list")) {
  1990. msg(player, "§6 - list <player>");
  1991. }
  1992. if(perm.has(player, "perm.toggle")) {
  1993. msg(player, "§6 - toggle <player>");
  1994. }
  1995. goto("wait");
  1996. }
  1997. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1998. if(arg0 == "give") {
  1999. if(!perm.has(player, "perm.give")) {
  2000. perm.no(player, "perm.give");
  2001. goto("wait");
  2002. }
  2003. if(size != 3) {
  2004. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  2005. } else {
  2006. p_name = list.getIndex(args, 1);
  2007. perm = list.getIndex(args, 2);
  2008. if(!checkIfEverOnline(p_name)) {
  2009. msg.prefix(player, prefix_perms, "This player has never been online.");
  2010. goto("wait");
  2011. }
  2012. if(!isAPermGroup(perm)) {
  2013. msg.prefix(player, prefix_perms, "This is no permission group.");
  2014. goto("wait");
  2015. }
  2016. p_uuid = player.getUuid(p_name);
  2017. p_id = player.getId(p_uuid);
  2018. p_name = player.getName(p_uuid);
  2019. perm_id = map.get(permgroupsmap, perm);
  2020. if(hasPermAlready(p_id, perm_id)) {
  2021. msg.prefix(player, prefix_perms, "Perm already added.");
  2022. goto("wait");
  2023. }
  2024. if(isOnline(p_name)) {
  2025. p = read.player(p_name);
  2026. rank = map.get(permgroupToRank, perm);
  2027. if(rank != null) {
  2028. offerRank(p, rank.getTechName(rank));
  2029. }
  2030. }
  2031. givePerm(p_id, perm_id);
  2032. msg.prefix(player, prefix_perms, concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  2033. }
  2034. goto("wait");
  2035. }
  2036. if(arg0 == "remove") {
  2037. if(!perm.has(player, "perm.remove")) {
  2038. perm.no(player, "perm.remove");
  2039. goto("wait");
  2040. }
  2041. if(size != 3) {
  2042. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  2043. } else {
  2044. p_name = list.getIndex(args, 1);
  2045. perm = list.getIndex(args, 2);
  2046. if(!checkIfEverOnline(p_name)) {
  2047. msg.prefix(player, prefix_perms, "This player has never been online.");
  2048. goto("wait");
  2049. }
  2050. if(!isAPermGroup(perm)) {
  2051. msg.prefix(player, prefix_perms, "This is no permission group.");
  2052. goto("wait");
  2053. }
  2054. p_uuid = player.getUuid(p_name);
  2055. p_id = player.getId(p_uuid);
  2056. p_name = player.getName(p_uuid);
  2057. //Wenn marvinius eine Permission entfernt wird, wird dies blockiert, ausgenommen er tut dies selbst
  2058. player_id = player.getId(player);
  2059. if(player_id != 2) {
  2060. if(p_id == 2) {
  2061. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  2062. goto("wait");
  2063. }
  2064. }
  2065. perm_id = map.get(permgroupsmap, perm);
  2066. if(!hasPermAlready(p_id, perm_id)) {
  2067. msg.prefix(player, prefix_perms, "This player doesn't have that perm.");
  2068. goto("wait");
  2069. }
  2070. removePerm(p_id, perm_id);
  2071. msg.prefix(player, prefix_perms, concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  2072. }
  2073. goto("wait");
  2074. }
  2075. if(arg0 == "removeall") {
  2076. if(!perm.has(player, "perm.removeall")) {
  2077. perm.no(player, "perm.removeall");
  2078. goto("wait");
  2079. }
  2080. if(size != 2) {
  2081. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  2082. } else {
  2083. p_name = list.getIndex(args, 1);
  2084. if(!checkIfEverOnline(p_name)) {
  2085. msg.prefix(player, prefix_perms, "This player has never been online.");
  2086. goto("wait");
  2087. }
  2088. //Wenn marvinius Permissions entfernt werden, wird dies blockiert, ausgenommen er tut dies selbst
  2089. p_id = player.getId(player.getUuid(p_name));
  2090. player_id = player.getId(player);
  2091. if(player_id != 2) {
  2092. if(p_id == 2) {
  2093. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  2094. goto("wait");
  2095. }
  2096. }
  2097. removeAllPerms(p_id);
  2098. msg.prefix(player, prefix_perms, concat("§r All perms of §7", p_name, " §rwere removed"));
  2099. }
  2100. goto("wait");
  2101. }
  2102. if(arg0 == "list") {
  2103. if(!perm.has(player, "perm.list")) {
  2104. perm.no(player, "perm.list");
  2105. goto("wait");
  2106. }
  2107. if(size != 2) {
  2108. msg.prefix(player, prefix_perms, "/perm list <player>");
  2109. } else {
  2110. p_name = list.getIndex(args, 1);
  2111. if(!checkIfEverOnline(p_name)) {
  2112. msg.prefix(player, prefix_perms, "This player has never been online.");
  2113. goto("wait");
  2114. }
  2115. p_id = player.getId(player.getUuid(p_name));
  2116. permslist = getPermsFromPlayer(p_id);
  2117. listsize = list.getSize(permslist);
  2118. if(listsize == 0) {
  2119. msg.prefix(player, prefix_perms, "§rKeine Permissions vorhanden");
  2120. } else {
  2121. msg.prefix(player, prefix_perms, p_name);
  2122. for(i = 0; i < listsize; i++) {
  2123. msg(player, " - ", map.get(permgroupsmap2, list.getIndex(permslist, i)));
  2124. }
  2125. }
  2126. }
  2127. goto("wait");
  2128. }
  2129. if(arg0 == "toggle") {
  2130. if(!perm.has(player, "perm.toggle")) {
  2131. perm.no(player, "perm.toggle");
  2132. goto("wait");
  2133. }
  2134. player_id = player.getId(player);
  2135. if(perm.has(player, "pseudoPerm")) {
  2136. reloadAllPerms(player_id);
  2137. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  2138. } else {
  2139. removeAllPermsTemporarly(player_id);
  2140. msg.prefix(player, prefix_commands, "Have fun as a user.");
  2141. }
  2142. goto("wait");
  2143. }
  2144. goto("perm_syntax");
  2145. @allsounds
  2146. if(size == 0) {
  2147. msg.prefix(player, prefix_commands, "§r/allsounds...");
  2148. msg(player, "§e - start");
  2149. msg(player, "§e - stop");
  2150. goto("wait");
  2151. }
  2152. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2153. if(arg0 == "start") {
  2154. if(!map.exists(sounds_map)) {
  2155. sounds_map = map.new();
  2156. }
  2157. player_uuid = player.getUuid(player);
  2158. script_id = map.get(sounds_map, player_uuid);
  2159. if(script_id != null) {
  2160. script = script.getFromId(script_id);
  2161. if(script != null) {
  2162. msg.prefix(player, prefix_commands, "Sounds already started.");
  2163. goto("wait");
  2164. }
  2165. }
  2166. script = script.start("system/playsounds");
  2167. script.setVar(script, "player", player);
  2168. map.add(sounds_map, player.getUuid(player), script.getId(script));
  2169. msg.prefix(player, prefix_commands, "Sounds started.");
  2170. goto("wait");
  2171. }
  2172. if(arg0 == "stop") {
  2173. if(!map.exists(sounds_map)) {
  2174. sounds_map = map.new();
  2175. }
  2176. script_id = map.get(sounds_map, player.getUuid(player));
  2177. if(script_id == null) {
  2178. msg.prefix(player, prefix_commands, "No sounds playing.");
  2179. goto("wait");
  2180. }
  2181. script = script.getFromId(script_id);
  2182. if(script == null) {
  2183. msg.prefix(player, prefix_commands, "No sounds playing.");
  2184. goto("wait");
  2185. }
  2186. script.term(script);
  2187. msg.prefix(player, prefix_commands, "Sounds stopped.");
  2188. goto("wait");
  2189. }
  2190. goto("wait");
  2191. @weather
  2192. if(size == 0) {
  2193. @weather_syntax
  2194. msg.prefix(player, "§eWeather", "§r/weather ...");
  2195. msg(player, "§e - clear [duration]");
  2196. msg(player, "§e - rain [duration]");
  2197. msg(player, "§e - thunder [duration]");
  2198. goto("wait");
  2199. }
  2200. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2201. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  2202. if(size == 2) {
  2203. duration = list.getIndex(args, 1);
  2204. if(!isDouble(duration)) {
  2205. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2206. goto("wait");
  2207. }
  2208. if(duration < 0) {
  2209. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2210. goto("wait");
  2211. }
  2212. } else {
  2213. duration = 12000;
  2214. }
  2215. world = loc.getWorld(entity.getLocation(player));
  2216. if(arg0 == "clear") {
  2217. if(size > 2) {
  2218. msg.prefix(player, prefix_commands, "§r/weather clear [duration]");
  2219. goto("wait");
  2220. }
  2221. world.clearWeather(world, duration);
  2222. msg.prefix(player, prefix_commands, "§rWetter wurde auf Klar gestellt");
  2223. goto("wait");
  2224. }
  2225. if(arg0 == "rain") {
  2226. if(size > 2) {
  2227. msg.prefix(player, prefix_commands, "§r/weather rain [duration]");
  2228. goto("wait");
  2229. }
  2230. world.setRain(world, duration);
  2231. msg.prefix(player, prefix_commands, "§rWetter wurde auf Regen gestellt");
  2232. goto("wait");
  2233. }
  2234. if(arg0 == "thunder") {
  2235. if(size > 2) {
  2236. msg.prefix(player, prefix_commands, "§r/weather thunder [duration]");
  2237. goto("wait");
  2238. }
  2239. world.setThunder(world, duration);
  2240. msg.prefix(player, prefix_commands, "§rWetter wurde auf Gewitter gestellt");
  2241. goto("wait");
  2242. }
  2243. goto("wait");
  2244. }
  2245. goto("weather_syntax");
  2246. @time
  2247. if(size == 0) {
  2248. @time_syntax
  2249. msg.prefix(player, "§eTime", "§r/time ...");
  2250. msg(player, "§e - set <time>");
  2251. msg(player, "§e - add <time>");
  2252. msg(player, "§e - <day / noon / night / midnight>");
  2253. goto("wait");
  2254. }
  2255. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2256. if(arg0 == "set") {
  2257. if(size != 2) {
  2258. msg.prefix(player, prefix_commands, "§r/time set <time>");
  2259. goto("wait");
  2260. }
  2261. setTime = list.getIndex(args, 1);
  2262. if(!isDouble(setTime)) {
  2263. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2264. goto("wait");
  2265. }
  2266. if(setTime < 0) {
  2267. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2268. goto("wait");
  2269. }
  2270. world = loc.getWorld(entity.getLocation(player));
  2271. while(setTime >= 24000) {
  2272. setTime -= 24000;
  2273. }
  2274. world.setTime(world, setTime);
  2275. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(setTime), "."));
  2276. goto("wait");
  2277. }
  2278. if(arg0 == "add") {
  2279. if(size != 2) {
  2280. msg.prefix(player, prefix_commands, "§r/time add <time>");
  2281. goto("wait");
  2282. }
  2283. addTime = list.getIndex(args, 1);
  2284. if(!isDouble(addTime)) {
  2285. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2286. goto("wait");
  2287. }
  2288. if(addTime < 0) {
  2289. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2290. goto("wait");
  2291. }
  2292. world = loc.getWorld(entity.getLocation(player));
  2293. newtime = world.getTime(world) + addTime;
  2294. while(newtime >= 24000) {
  2295. newtime -= 24000;
  2296. }
  2297. world.setTime(world, newtime);
  2298. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2299. goto("wait");
  2300. }
  2301. newtime = null;
  2302. if(arg0 == "day") {
  2303. newtime = 1000;
  2304. } elseif(arg0 == "noon") {
  2305. newtime = 6000;
  2306. } elseif(arg0 == "night") {
  2307. newtime = 13000;
  2308. } elseif(arg0 == "midnight") {
  2309. newtime = 18000;
  2310. }
  2311. if(newtime != null) {
  2312. world = loc.getWorld(entity.getLocation(player));
  2313. world.setTime(world, newtime);
  2314. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2315. goto("wait");
  2316. }
  2317. goto("time_syntax");
  2318. @gamerule
  2319. world = loc.getWorld(entity.getLocation(player));
  2320. if(size == 0) {
  2321. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  2322. goto("wait");
  2323. }
  2324. gamerule_string = list.getIndex(args, 0);
  2325. gamerule_key = gamerule.getKey(gamerule_string);
  2326. if(gamerule_key == null) {
  2327. msg.prefix(player, prefix_commands, "Gamerule doesn't exist.");
  2328. goto("wait");
  2329. }
  2330. gamerule_value = gamerule.getValue(world, gamerule_key);
  2331. if(size == 1) {
  2332. if(gamerule.isBool(gamerule_value)) {
  2333. value = gamerule.getBool(gamerule_value);
  2334. } elseif(gamerule.isInt(gamerule_value)) {
  2335. value = text.number(gamerule.getInt(gamerule_value));
  2336. } else {
  2337. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  2338. goto("wait");
  2339. }
  2340. msg.prefix(player, prefix_commands, concat(gamerule_string, " ", value));
  2341. goto("wait");
  2342. }
  2343. if(size == 2) {
  2344. if(!perm.has(player, "gamerule.write")) {
  2345. perm.no(player, "gamerule.write");
  2346. goto("wait");
  2347. }
  2348. value = list.getIndex(args, 1);
  2349. if(gamerule.isBool(gamerule_value)) {
  2350. if(!isBool(value)) {
  2351. msg.prefix(player, prefix_commands, "Boolean expected.");
  2352. goto("wait");
  2353. }
  2354. gamerule.setBool(gamerule_value, value);
  2355. } elseif(gamerule.isInt(gamerule_value)) {
  2356. if(!isDouble(value)) {
  2357. msg.prefix(player, prefix_commands, "Number expected.");
  2358. goto("wait");
  2359. }
  2360. gamerule.setInt(gamerule_value, value);
  2361. value = text.number(value);
  2362. } else {
  2363. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  2364. goto("wait");
  2365. }
  2366. if(world.getName(world) == "overworld") {
  2367. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, "."));
  2368. } else {
  2369. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, " (not persistent)."));
  2370. }
  2371. goto("wait");
  2372. }
  2373. goto("wait");
  2374. @tip
  2375. if(size == 0) {
  2376. msg.prefix(player, prefix_tips, "§r/tip ...");
  2377. msg(player, "§e - list §rList all tips");
  2378. msg(player, "§e - add <tip> <text> §rAdds a tip");
  2379. msg(player, "§e - remove <tip> §rRemoves a tip");
  2380. msg(player, "§e - <tip> [player] §rSends a tip to all/a player");
  2381. goto("wait");
  2382. }
  2383. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2384. if(arg0 == "list") {
  2385. msg(player, "§r--==§eTipps§r==--");
  2386. counter = 0;
  2387. getTippsListStatement = databank.prepare("SELECT * FROM tipps;");
  2388. result = databank.execute(getTippsListStatement);
  2389. while(databank.next(result)) {
  2390. tipp_key = databank.getString(result, 1);
  2391. tipp_value = databank.getString(result, 2);
  2392. msg(player, concat("§e", tipp_key, "§r : ", tipp_value));
  2393. counter++;
  2394. }
  2395. databank.close(result);
  2396. databank.close(getTippsListStatement);
  2397. if(counter == 0) {
  2398. msg.prefix(player, prefix_tips, "§rIm Moment stehen keine Tipps zur Verfügung.");
  2399. }
  2400. goto("wait");
  2401. }
  2402. if(arg0 == "add") {
  2403. if(size < 3) {
  2404. msg.prefix(player, prefix_commands, "§r/tip add <name> <text>");
  2405. goto("wait");
  2406. }
  2407. tipp_key = list.getIndex(args, 1);
  2408. tipp_value = concatList(args, " ", 2, size - 1);
  2409. tipp.register(tipp_key, tipp_value);
  2410. msg.prefix(player, prefix_tips, "§rDer Tipp wurde hinzugefügt.");
  2411. goto("wait");
  2412. }
  2413. if(arg0 == "remove") {
  2414. if(size != 2) {
  2415. msg.prefix(player, prefix_commands, "§r/tip remove <name>");
  2416. goto("wait");
  2417. }
  2418. tipp_key = list.getIndex(args, 1);
  2419. removeTippStatement = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  2420. databank.setInt(removeTippStatement, 1, tipp_key);
  2421. databank.workerExecute(removeTippStatement);
  2422. msg.prefix(player, prefix_tips, "§rDer Tipp wurde entfernt.");
  2423. goto("wait");
  2424. }
  2425. tipp_key = arg0;
  2426. tipp_value = tipp.get(tipp_key);
  2427. if(tipp_value == null) {
  2428. msg.prefix(player, prefix_tips, "§rDer Tipp existiert nicht.");
  2429. goto("wait");
  2430. }
  2431. if(size == 1) {
  2432. msg.prefix("online", prefix_tips, tipp_value);
  2433. } else {
  2434. p_name = list.getIndex(args, 1);
  2435. if(!isOnline(p_name)) {
  2436. msg.prefix(player, prefix_tips, "§rDieser Spieler ist nicht online");
  2437. goto("wait");
  2438. }
  2439. p = read.player(p_name);
  2440. msg.prefix(p, prefix_tips, tipp_value);
  2441. msg.prefix(player, prefix_tips, concat("§rDer Tipp wurde §7", p_name, "§r gesendet."));
  2442. }
  2443. goto("wait");
  2444. @help
  2445. if(size > 1) {
  2446. msg.prefix(player, prefix_commands, "§r/help [side]");
  2447. goto("wait");
  2448. }
  2449. //Auf Permission überprüfen
  2450. temp_list = list.new();
  2451. for(i = 0; i < list.getSize(command_list); i++) {
  2452. command = list.getIndex(command_list, i);
  2453. if(perm.has(player, command)) {
  2454. list.add(temp_list, command);
  2455. }
  2456. }
  2457. list.sort(temp_list);
  2458. temp_size = list.getSize(temp_list);
  2459. max_side = temp_size / 10;
  2460. if(size == 0) {
  2461. side = 1;
  2462. print_side = side - 1;
  2463. } else {
  2464. side = list.getIndex(args, 0);
  2465. if(!isDouble(side)) {
  2466. msg.prefix(player, prefix_commands, "§r/help [side]");
  2467. goto("wait");
  2468. }
  2469. print_side = side - 1;
  2470. if(print_side < 0 || print_side > max_side) {
  2471. msg.prefix(player, prefix_commands, concat("Möglich: 1 - ", text.number(math.roundDown(max_side + 1))));
  2472. goto("wait");
  2473. }
  2474. }
  2475. msg(player, concat("§a --- Help ", text.number(side), " ---"));
  2476. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  2477. if(i < temp_size) {
  2478. command = list.getIndex(temp_list, i);
  2479. command = text.hover(command, map.getOrDefault(command_map, command, ""));
  2480. msg(player, " /", command);
  2481. }
  2482. }
  2483. if(side == 1) {
  2484. backward = "§c<<Backward<<";
  2485. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  2486. } elseif(side > max_side) {
  2487. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  2488. forward = "§c>>Forward>>";
  2489. } else {
  2490. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  2491. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  2492. }
  2493. msg(player, backward, " ", forward);
  2494. goto("wait");
  2495. @cli
  2496. if(size != 1) {
  2497. msg.prefix(player, prefix_commands, "§r/cli <radius>");
  2498. goto("wait");
  2499. }
  2500. radius = list.getIndex(args, 0);
  2501. if(!isDouble(radius) || radius < 0) {
  2502. msg.prefix(player, prefix_commands, "Positive number expected.");
  2503. goto("wait");
  2504. }
  2505. entity.removeAll("net.minecraft.entity.item.ItemEntity", entity.getLocation(player), radius);
  2506. msg.prefix(player, prefix_commands, "§rItems entfernt");
  2507. goto("wait");
  2508. @plough
  2509. if(size != 1) {
  2510. msg.prefix(player, prefix_commands, "§r/plough <radius>");
  2511. goto("wait");
  2512. }
  2513. radius = list.getIndex(args, 0);
  2514. if(!isDouble(radius)) {
  2515. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2516. goto("wait");
  2517. }
  2518. if(radius < 0) {
  2519. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2520. goto("wait");
  2521. }
  2522. center_loc = getBlockLocation(entity.getLocation(player));
  2523. for(x = radius * -1; x <= radius; x++) {
  2524. for(z = radius * -1; z <= radius; z++) {
  2525. for(y = radius * -1; y <= radius; y++) {
  2526. length = math.hypot(x, math.hypot(y, z));
  2527. if(length <= radius) {
  2528. mod_loc = loc.mod(center_loc, x, y, z);
  2529. block = block.get(mod_loc);
  2530. if(block.hasTag(dirt_tag, block) && block.getType(loc.mod(mod_loc, 0, 1, 0)) == "minecraft:air") {
  2531. block.set(mod_loc, "minecraft:farmland[moisture=7]");
  2532. }
  2533. }
  2534. }
  2535. }
  2536. }
  2537. msg.prefix(player, prefix_commands, "§rFeld gepflügt");
  2538. goto("wait");
  2539. @plant
  2540. if(size != 1) {
  2541. msg.prefix(player, prefix_commands, "§r/plant <radius>");
  2542. goto("wait");
  2543. }
  2544. radius = list.getIndex(args, 0);
  2545. if(!isDouble(radius)) {
  2546. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2547. goto("wait");
  2548. }
  2549. if(radius < 0) {
  2550. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2551. goto("wait");
  2552. }
  2553. center_loc = getBlockLocation(entity.getLocation(player));
  2554. for(x = radius * -1; x <= radius; x++) {
  2555. for(z = radius * -1; z <= radius; z++) {
  2556. for(y = radius * -1; y <= radius; y++) {
  2557. length = math.hypot(x, math.hypot(y, z));
  2558. if(length <= radius) {
  2559. mod_loc = loc.mod(center_loc, x, y, z);
  2560. upper_loc = loc.mod(mod_loc, 0, 1, 0);
  2561. if(block.getType(mod_loc) == "minecraft:farmland" && block.getType(upper_loc) == "minecraft:air") {
  2562. block.set(upper_loc, "minecraft:wheat[age=7]");
  2563. }
  2564. }
  2565. }
  2566. }
  2567. }
  2568. msg.prefix(player, prefix_commands, "§rFeld bepflanzt");
  2569. goto("wait");
  2570. @grow
  2571. if(size != 1) {
  2572. msg.prefix(player, prefix_commands, "§r/grow <radius>");
  2573. goto("wait");
  2574. }
  2575. radius = list.getIndex(args, 0);
  2576. if(!isDouble(radius)) {
  2577. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2578. goto("wait");
  2579. }
  2580. if(radius < 0) {
  2581. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2582. goto("wait");
  2583. }
  2584. center_loc = getBlockLocation(entity.getLocation(player));
  2585. grow(center_loc, radius);
  2586. msg.prefix(player, prefix_commands, "§rFeld gedüngt");
  2587. goto("wait");
  2588. @start
  2589. if(size != 1) {
  2590. @starthelp
  2591. msg.prefix(sender, prefix_commands, "/start ...");
  2592. msg(sender, " - ai");
  2593. msg(sender, " - chat");
  2594. msg(sender, " - commands");
  2595. msg(sender, " - creative");
  2596. msg(sender, " - damage");
  2597. msg(sender, " - doors");
  2598. msg(sender, " - friends");
  2599. msg(sender, " - games");
  2600. msg(sender, " - harvest");
  2601. msg(sender, " - herobrine");
  2602. msg(sender, " - mails");
  2603. msg(sender, " - perms");
  2604. msg(sender, " - pumpkin");
  2605. msg(sender, " - scheduler");
  2606. msg(sender, " - shop");
  2607. msg(sender, " - sitting");
  2608. msg(sender, " - stats");
  2609. msg(sender, " - story");
  2610. msg(sender, " - survival");
  2611. msg(sender, " - ticket");
  2612. msg(sender, " - timber");
  2613. msg(sender, " - voxel");
  2614. goto("wait");
  2615. }
  2616. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2617. if(arg0 == "ai") {
  2618. script = script.get("Ai");
  2619. if(script != null) {
  2620. script.term(script);
  2621. }
  2622. script.startNamed("Ai", "system/ai", "utils/u_general");
  2623. }
  2624. elseif(arg0 == "commands") {
  2625. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
  2626. if(script == null) {
  2627. snuvi.debug("Old commands script still active due to error in new script");
  2628. goto("wait");
  2629. }
  2630. script.term(script.get());
  2631. }
  2632. elseif(arg0 == "chat") {
  2633. script = script.get("Chat");
  2634. if(script != null) {
  2635. script.term(script);
  2636. }
  2637. script.startNamed("Chat", "system/chat", "utils/u_general");
  2638. }
  2639. elseif(arg0 == "creative") {
  2640. script = script.get("Creative");
  2641. if(script != null) {
  2642. script.term(script);
  2643. }
  2644. script.startNamed("Creative", "system/creative", "utils/u_general");
  2645. }
  2646. elseif(arg0 == "damage") {
  2647. script = script.get("Damage");
  2648. if(script != null) {
  2649. script.term(script);
  2650. }
  2651. script.startNamed("Damage", "system/damage");
  2652. }
  2653. elseif(arg0 == "doors") {
  2654. script = script.get("Doors");
  2655. if(script != null) {
  2656. script.term(script);
  2657. }
  2658. script.startNamed("Doors", "system/doors", "utils/u_general");
  2659. }
  2660. elseif(arg0 == "games") {
  2661. script = script.get("Gamecenter");
  2662. if(script != null) {
  2663. script.term(script);
  2664. }
  2665. script.startNamed("Gamecenter", "system/gamecenter", "utils/u_general", "utils/u_games");
  2666. }
  2667. elseif(arg0 == "harvest") {
  2668. script = script.get("Harvest");
  2669. if(script != null) {
  2670. script.term(script);
  2671. }
  2672. script.startNamed("Harvest", "system/harvest", "utils/u_general");
  2673. }
  2674. elseif(arg0 == "herobrine") {
  2675. script = script.get("Herobrine");
  2676. if(script != null) {
  2677. script.term(script);
  2678. }
  2679. script.startNamed("Herobrine", "system/herobrine", "utils/u_general");
  2680. }
  2681. elseif(arg0 == "perms") {
  2682. script.start("system/perms", "utils/u_general");
  2683. }
  2684. elseif(arg0 == "pumpkin") {
  2685. script = script.get("Pumpkin");
  2686. if(script != null) {
  2687. script.term(script);
  2688. }
  2689. script.startNamed("Pumpkin", "system/pumpkin", "utils/u_general");
  2690. }
  2691. elseif(arg0 == "stats") {
  2692. script = script.get("Ranklist");
  2693. if(script != null) {
  2694. script.term(script);
  2695. }
  2696. script.startNamed("Ranklist", "system/ranklist", "utils/u_general", "utils/u_games");
  2697. }
  2698. elseif(arg0 == "scheduler") {
  2699. script = script.get("Scheduler");
  2700. if(script != null) {
  2701. script.term(script);
  2702. }
  2703. script.startNamed("Scheduler", "system/scheduler", "utils/u_general");
  2704. }
  2705. elseif(arg0 == "shop") {
  2706. script = script.get("Shops");
  2707. if(script != null) {
  2708. script.term(script);
  2709. }
  2710. script.startNamed("Shops", "system/chestshops", "utils/u_general");
  2711. }
  2712. elseif(arg0 == "mails") {
  2713. script = script.get("Mails");
  2714. if(script != null) {
  2715. script.term(script);
  2716. }
  2717. script.startNamed("Mails", "system/mailsystem", "utils/u_general");
  2718. }
  2719. elseif(arg0 == "ticket") {
  2720. script = script.get("Ticket");
  2721. if(script != null) {
  2722. script.term(script);
  2723. }
  2724. script.startNamed("Ticket", "system/tickets", "utils/u_general");
  2725. }
  2726. elseif(arg0 == "timber") {
  2727. script = script.get("Timber");
  2728. if(script != null) {
  2729. script.term(script);
  2730. }
  2731. script.startNamed("Timber", "system/timber", "utils/u_general");
  2732. }
  2733. elseif(arg0 == "story") {
  2734. script = script.get("Story");
  2735. if(script != null) {
  2736. script.term(script);
  2737. }
  2738. script.startNamed("Story", "system/story", "utils/u_general");
  2739. script = script.get("QuestsAdmont");
  2740. if(script != null) {
  2741. script.term(script);
  2742. }
  2743. script.startNamed("QuestsAdmont", "story/admont/core", "utils/u_general", "utils/u_quest");
  2744. script = script.get("QuestsSchiffbruch");
  2745. if(script != null) {
  2746. script.term(script);
  2747. }
  2748. script.startNamed("QuestsSchiffbruch", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
  2749. }
  2750. elseif(arg0 == "sitting") {
  2751. script = script.get("Sitting");
  2752. if(script != null) {
  2753. script.term(script);
  2754. }
  2755. script.startNamed("Sitting", "system/sitting", "utils/u_general");
  2756. }
  2757. elseif(arg0 == "survival") {
  2758. script = script.get("Survival");
  2759. if(script != null) {
  2760. script.term(script);
  2761. }
  2762. script.startNamed("Survival", "system/survival", "utils/u_general");
  2763. }
  2764. elseif(arg0 == "voxel") {
  2765. script = script.get("Voxel");
  2766. if(script != null) {
  2767. script.term(script);
  2768. }
  2769. script.startNamed("Voxel", "system/voxel");
  2770. }
  2771. else {
  2772. goto("starthelp");
  2773. }
  2774. goto("wait");
  2775. @senditem
  2776. if(size != 1) {
  2777. msg.prefix(player, prefix_commands, "/senditem <player>");
  2778. goto("wait");
  2779. }
  2780. item = entity.getEquip(player, "hand");
  2781. if(item.getType(item) == "minecraft:air") {
  2782. msg.prefix(player, prefix_commands, "§rDu musst ein Item in der Hand halten");
  2783. goto("wait");
  2784. }
  2785. p_name = list.getIndex(args, 0);
  2786. p_uuid = player.getUuid(p_name);
  2787. if(p_uuid == null) {
  2788. msg.prefix(player, prefix_commands, "This player has never been online.");
  2789. goto("wait");
  2790. }
  2791. p = read.player(p_name);
  2792. if(p == null) {
  2793. msg.prefix(player, prefix_commands, "This player is not online.");
  2794. goto("wait");
  2795. }
  2796. safeGiveItemPlayer(p, item);
  2797. player.removeItem(player, item);
  2798. goto("wait");
  2799. @top
  2800. player_loc = entity.getLocation(player);
  2801. y = 255;
  2802. loc.setY(player_loc, y);
  2803. while(block.isAir(player_loc)) {
  2804. loc.setY(player_loc, y);
  2805. y--;
  2806. }
  2807. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  2808. goto("wait");
  2809. @story
  2810. story_spawn = world.getStorySpawn();
  2811. world = loc.getWorld(story_spawn);
  2812. if(world == null) {
  2813. msg.prefix(player, prefix_commands, "This world is not loaded.");
  2814. goto("wait");
  2815. }
  2816. if(size > 1) {
  2817. msg.prefix(player, prefix_commands, "/story [player]");
  2818. goto("wait");
  2819. }
  2820. if(size == 1) {
  2821. affectedname = list.getIndex(args, 0);
  2822. affectedplayer = read.player(affectedname);
  2823. if(affectedplayer == null) {
  2824. msg.prefix(player, prefix_commands, "This player is not online.");
  2825. goto("wait");
  2826. }
  2827. if(!perm.has(player, "teleport.other")) {
  2828. perm.no(player, "teleport.other");
  2829. goto("wait");
  2830. }
  2831. }
  2832. if(player.hasMinigame(affectedplayer)) {
  2833. if(size == 1) {
  2834. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  2835. } else {
  2836. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  2837. }
  2838. goto("wait");
  2839. }
  2840. if(size == 1) {
  2841. if(player != affectedplayer) {
  2842. affectedname = player.getName(affectedplayer);
  2843. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the story world."));
  2844. }
  2845. }
  2846. if(player.teleport(affectedplayer, story_spawn, true)) {
  2847. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the story world.");
  2848. }
  2849. goto("wait");
  2850. @games
  2851. world = loc.getWorld(gamesspawn);
  2852. if(world == null) {
  2853. msg.prefix(player, prefix_commands, "This world is not loaded.");
  2854. goto("wait");
  2855. }
  2856. if(size > 1) {
  2857. msg.prefix(player, prefix_commands, "/games [player]");
  2858. goto("wait");
  2859. }
  2860. if(size == 1) {
  2861. affectedname = list.getIndex(args, 0);
  2862. affectedplayer = read.player(affectedname);
  2863. if(affectedplayer == null) {
  2864. msg.prefix(player, prefix_commands, "This player is not online.");
  2865. goto("wait");
  2866. }
  2867. if(!perm.has(player, "teleport.other")) {
  2868. perm.no(player, "teleport.other");
  2869. goto("wait");
  2870. }
  2871. }
  2872. if(player.hasMinigame(affectedplayer)) {
  2873. if(size == 1) {
  2874. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  2875. } else {
  2876. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  2877. }
  2878. goto("wait");
  2879. }
  2880. if(size == 1) {
  2881. if(player != affectedplayer) {
  2882. affectedname = player.getName(affectedplayer);
  2883. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the games world."));
  2884. }
  2885. }
  2886. if(player.teleport(affectedplayer, gamesspawn, true)) {
  2887. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the games world.");
  2888. }
  2889. goto("wait");
  2890. @bug
  2891. msg.prefix(player, prefix_commands, "Found a bug? Report it to marvinius with §b/mail marvinius <message>");
  2892. goto("wait");
  2893. @repair
  2894. item = entity.getEquip(player, "hand");
  2895. if(item.getType(item) == "minecraft:air") {
  2896. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  2897. goto("wait");
  2898. }
  2899. item.setDamage(item, 0);
  2900. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  2901. goto("wait");
  2902. @report
  2903. msg.prefix(player, prefix_commands, "Want to report a player?");
  2904. msg(player, " - §b/ticket <message>");
  2905. msg(player, " - §b/mail marvinius <message>");
  2906. goto("wait");
  2907. @playtime
  2908. if(size == 0) {
  2909. p_id = player.getId(player);
  2910. arg0 = player.getName(player);
  2911. } else {
  2912. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2913. if(arg0 == "year") {
  2914. if(!perm.has(player, "playtime.year")) {
  2915. perm.no(player, "playtime.year");
  2916. goto("wait");
  2917. }
  2918. calendar = time.new(time.getMillis());
  2919. now_month = time.getMonth(calendar);
  2920. now_year = time.getYear(calendar);
  2921. if(size == 1) {
  2922. year = now_year;
  2923. } else {
  2924. year = list.getIndex(args, 1);
  2925. if(!isDouble(year)) {
  2926. msg.prefix(player, prefix_commands, "Number expected.");
  2927. goto("wait");
  2928. }
  2929. if(year > now_year) {
  2930. year = now_year;
  2931. }
  2932. }
  2933. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  2934. since_minutes = playtime.getTotalOnlineMinutes();
  2935. //Tabelle erstellen
  2936. table = table.new("§8", 4, 5, 5);
  2937. msg(player, table.getStart(table));
  2938. msg(player, table.get(table, text.number(year), "Playtime", "Change"));
  2939. msg(player, table.getMiddle(table));
  2940. //Erstes Mitternacht des gewählten Jahres festlegen
  2941. now_day = time.getDay(calendar);
  2942. time.nextDay(calendar);
  2943. midnight = time.from(calendar) - (time.getDaysBetween(1, 1, year, now_day, now_month, now_year) + 1) * 86400000;
  2944. //Monats-Spielzeit berechnen
  2945. temp_list = list.new();
  2946. list.add(temp_list, playtime.getInterval(midnight - time.getMonthDays(12, year - 1) * 86400000, midnight)); //Dezember des Vorjahres hinzufügen
  2947. for(i = 1; i <= 12; i++) {
  2948. midnight_2 = midnight + time.getMonthDays(i, now_year) * 86400000; //Alle Tage eines Monats * 24 Stunden
  2949. minutes = playtime.getInterval(midnight, midnight_2);
  2950. list.add(temp_list, minutes);
  2951. midnight = midnight_2;
  2952. if(i == now_month && year == now_year) {
  2953. minutes += since_minutes;
  2954. }
  2955. }
  2956. for(i = 1; i <= 12; i++) {
  2957. minutes = list.getIndex(temp_list, i);
  2958. hours = math.roundDown(minutes / 60);
  2959. mod_minutes = minutes % 60;
  2960. if(mod_minutes < 10) {
  2961. time_string = concat("§6", text.number(hours), ":0", text.number(mod_minutes), " h");
  2962. } else {
  2963. time_string = concat("§6", text.number(hours), ":", text.number(mod_minutes), " h");
  2964. }
  2965. pre_minutes = list.getIndex(temp_list, i - 1);
  2966. if(minutes >= pre_minutes) {
  2967. color = "§a+";
  2968. a = minutes;
  2969. b = pre_minutes;
  2970. } else {
  2971. color = "§c-";
  2972. a = pre_minutes;
  2973. b = minutes;
  2974. }
  2975. if(b == 0) {
  2976. change = "";
  2977. } else {
  2978. change = math.round(a / b * 100 - 100);
  2979. change = concat(color, text.number(change), " %");
  2980. }
  2981. msg(player, table.get(table, concat("§6", map.get(monthlist, i)), time_string, change));
  2982. if(i == now_month && year == now_year) {
  2983. break;
  2984. }
  2985. }
  2986. //Tabelle beenden
  2987. msg(player, table.getEnd(table));
  2988. goto("wait");
  2989. }
  2990. if(arg0 == "month") {
  2991. if(!perm.has(player, "playtime.month")) {
  2992. perm.no(player, "playtime.month");
  2993. goto("wait");
  2994. }
  2995. calendar = time.new(time.getMillis());
  2996. now_month = time.getMonth(calendar);
  2997. now_year = time.getYear(calendar);
  2998. year = now_year;
  2999. if(size == 1) {
  3000. month = now_month;
  3001. } else {
  3002. month = list.getIndex(args, 1);
  3003. if(!isDouble(month)) {
  3004. msg.prefix(player, prefix_commands, "Number expected.");
  3005. goto("wait");
  3006. }
  3007. if(month < 1) {
  3008. month = 1;
  3009. } elseif(month > 12) {
  3010. month = 12;
  3011. }
  3012. if(size == 3) {
  3013. year = list.getIndex(args, 2);
  3014. if(!isDouble(year)) {
  3015. msg.prefix(player, prefix_commands, "Number expected.");
  3016. goto("wait");
  3017. }
  3018. }
  3019. if(year > now_year ||(year >= now_year && month > now_month)) {
  3020. month = now_month;
  3021. year = now_year;
  3022. }
  3023. }
  3024. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3025. since_minutes = playtime.getTotalOnlineMinutes();
  3026. //Tabelle erstellen
  3027. table = table.new("§8", 4, 5, 5);
  3028. msg(player, table.getStart(table));
  3029. msg(player, table.get(table, map.get(monthlist, month), "Playtime", "Players"));
  3030. msg(player, table.getMiddle(table));
  3031. //Erstes Mitternacht des gewählten Monats festlegen
  3032. now_day = time.getDay(calendar);
  3033. time.nextDay(calendar);
  3034. midnight = time.from(calendar) - (time.getDaysBetween(1, month, year, now_day, now_month, now_year) + 1) * 86400000;
  3035. //Tages-Spielzeit berechnen
  3036. for(i = 1; i <= time.getMonthDays(month, year); i++) {
  3037. players = playtime.getPlayersPerInterval(midnight, midnight + 86400000);
  3038. minutes = playtime.getInterval(midnight, midnight + 86400000);
  3039. midnight += 86400000; //24 Stunden
  3040. if(i == now_day && month == now_month && year == now_year) {
  3041. minutes += since_minutes;
  3042. }
  3043. hours = math.roundDown(minutes / 60);
  3044. minutes = minutes % 60;
  3045. if(minutes < 10) {
  3046. time_string = concat("§6", text.number(hours), ":0", text.number(minutes), " h");
  3047. } else {
  3048. time_string = concat("§6", text.number(hours), ":", text.number(minutes), " h");
  3049. }
  3050. msg(player, table.get(table, concat("§6", text.number(i)), time_string, text.number(players)));
  3051. if(i == now_day && month == now_month && year == now_year) {
  3052. break;
  3053. }
  3054. }
  3055. //Tabelle beenden
  3056. msg(player, table.getEnd(table));
  3057. goto("wait");
  3058. }
  3059. if(arg0 == "all") {
  3060. msg(player, getSpacer());
  3061. msg.prefix(player, prefix_commands, "Server-Playtime");
  3062. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3063. since_minutes = playtime.getTotalOnlineMinutes();
  3064. now_time = time.getMillis();
  3065. //Spielzeit heute
  3066. calendar = time.new(now_time);
  3067. time.nextDay(calendar);
  3068. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3069. minutes = playtime.getInterval(midnight, now_time) + since_minutes;
  3070. hours = text.number(math.roundDown(minutes / 60));
  3071. minutes = text.number(minutes % 60);
  3072. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3073. //Spielzeit 30 Tage für alle Spieler
  3074. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3075. minutes = playtime.getInterval(oneMonthAgo, now_time) + since_minutes;
  3076. hours = text.number(math.roundDown(minutes / 60));
  3077. minutes = text.number(minutes % 60);
  3078. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3079. //Spielzeit gesamt
  3080. minutes = playtime.getTotal();
  3081. hours = text.number(math.roundDown(minutes / 60));
  3082. minutes = text.number(minutes % 60);
  3083. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3084. goto("wait");
  3085. }
  3086. if(!perm.has(player, "playtime.other")) {
  3087. perm.no(player, "playtime.other");
  3088. goto("wait");
  3089. }
  3090. }
  3091. if(!checkIfEverOnline(arg0)) {
  3092. msg.prefix(player, prefix_commands, "This player has never been online.");
  3093. goto("wait");
  3094. }
  3095. now_time = time.getMillis();
  3096. p_uuid = player.getUuid(arg0);
  3097. arg0 = player.getName(p_uuid);
  3098. p_id = player.getId(p_uuid);
  3099. msg(player, getSpacer());
  3100. msg.prefix(player, prefix_commands, concat("Playtime of ", player.getName(p_uuid)));
  3101. //Online seit
  3102. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  3103. if(isOnline(arg0)) {
  3104. since_hours = math.roundDown(since_minutes / 60);
  3105. mod_minutes = since_minutes % 60;
  3106. msg(player, concat("§aOnline since: §r", text.number(since_hours), " hours ", text.number(mod_minutes), " minutes"));
  3107. } else {
  3108. msg(player, "§6Status: ", "§cOffline");
  3109. }
  3110. //Spielzeit heute
  3111. calendar = time.new(now_time);
  3112. time.nextDay(calendar);
  3113. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3114. minutes = playtime.getPlayerInterval(p_id, midnight, now_time) + since_minutes;
  3115. hours = text.number(math.roundDown(minutes / 60));
  3116. minutes = text.number(minutes % 60);
  3117. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3118. //Spielzeit 30 Tage
  3119. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3120. minutes = playtime.getPlayerInterval(p_id, oneMonthAgo, now_time) + since_minutes;
  3121. hours = text.number(math.roundDown(minutes / 60));
  3122. minutes = text.number(minutes % 60);
  3123. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3124. //Spielzeit gesamt
  3125. minutes = playtime.getPlayerTotal(p_id);
  3126. hours = text.number(math.roundDown(minutes / 60));
  3127. minutes = text.number(minutes % 60);
  3128. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3129. goto("wait");
  3130. @datatools
  3131. if(size == 0) {
  3132. @datatoolshelp
  3133. msg.prefix(player, prefix_datatools, "/datatools ...");
  3134. msg(player, "§6 - hide <name> §rHides wusi on an itemstack");
  3135. msg(player, "§6 - attribute <attribut> <slot> <double> <op> §rFügt ein Attribut zu einem ItemStack hinzu");
  3136. msg(player, "§6 - hide-entity §rMacht ein Entity unsichtbar");
  3137. msg(player, "§6 - show-entity §rMacht ein Entity sichtbar");
  3138. msg(player, "§6 - name-entity <name> §rSetzt den Namen des Entities");
  3139. msg(player, "§6 - name-visibility <boolean> §rZeigt den Namen (nicht) dauerhaft");
  3140. msg(player, "§6 - name-item <name> §rSetzt den Itemnamen");
  3141. msg(player, "§6 - lore-item <line> <lore> §rSetzt die Itemlore");
  3142. goto("wait");
  3143. }
  3144. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3145. if(arg0 == "hide") {
  3146. if(size < 2) {
  3147. msg.prefix(player, prefix_datatools, "§r/datatools hide <name>");
  3148. goto("wait");
  3149. }
  3150. item = entity.getEquip(player, "hand");
  3151. if(item.getType(item) == "minecraft:air") {
  3152. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  3153. goto("wait");
  3154. }
  3155. name = text.concatList(args, " ", 1, size - 1);
  3156. if(item.hide(item, name)) {
  3157. msg.prefix(player, prefix_datatools, "You hided something.");
  3158. } else {
  3159. msg.prefix(player, prefix_datatools, "You can't hide that.");
  3160. }
  3161. goto("wait");
  3162. }
  3163. if(arg0 == "attribute") {
  3164. if(size < 5) {
  3165. msg.prefix(player, prefix_datatools, "/datatools attribute <attribut> <slot> <double> <op>");
  3166. goto("wait");
  3167. }
  3168. item = entity.getEquip(player, "hand");
  3169. if(item.getType(item) == "minecraft:air") {
  3170. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3171. goto("wait");
  3172. }
  3173. double = list.getIndex(args, 3);
  3174. if(!isDouble(double) || double < 0) {
  3175. msg.prefix(player, prefix_datatools, "Natural number expected.");
  3176. goto("wait");
  3177. }
  3178. attribut = concat("generic.", list.getIndex(args, 1));
  3179. slot = read.slot(list.getIndex(args, 2));
  3180. if(slot == null) {
  3181. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  3182. goto("wait");
  3183. }
  3184. operation = list.getIndex(args, 4);
  3185. if(operation == "ADDITION") {
  3186. operation = 0;
  3187. } elseif(operation == "MULTIPLY_BASE") {
  3188. operation = 1;
  3189. } elseif(operation == "MULTIPLY_TOTAL") {
  3190. operation = 2;
  3191. } else {
  3192. msg.prefix(player, prefix_datatools, "Incorrect operation.");
  3193. goto("wait");
  3194. }
  3195. item.addAttribute(item, attribut, slot, double, operation);
  3196. msg.prefix(player, prefix_datatools, "Attribute added.");
  3197. goto("wait");
  3198. }
  3199. if(arg0 == "name-item") {
  3200. if(size < 2) {
  3201. msg.prefix(player, prefix_datatools, "§r/datatools name-item <name>");
  3202. goto("wait");
  3203. }
  3204. item = entity.getEquip(player, "hand");
  3205. if(item.getType(item) == "minecraft:air") {
  3206. msg.prefix(player, prefix_datatools, "§rDu musst ein Item in der Hand halten.");
  3207. goto("wait");
  3208. }
  3209. name = text.concatList(args, " ", 1, size - 1);
  3210. name = text.replace(name, "&", "§");
  3211. name = text.replace(name, "\\n", "\n");
  3212. item.setName(item, name);
  3213. msg.prefix(player, prefix_datatools, concat("Das Item trägt nun den Namen ", name, "§r."));
  3214. goto("wait");
  3215. }
  3216. if(arg0 == "lore-item") {
  3217. if(size < 3) {
  3218. msg.prefix(player, prefix_datatools, "§r/datatools lore-item <line> <lore>");
  3219. goto("wait");
  3220. }
  3221. item = entity.getEquip(player, "hand");
  3222. if(item.getType(item) == "minecraft:air") {
  3223. msg.prefix(player, prefix_datatools, "§rDu musst ein Item in der Hand halten.");
  3224. goto("wait");
  3225. }
  3226. line = list.getIndex(args, 1);
  3227. if(!isDouble(line)) {
  3228. msg.prefix(player, prefix_datatools, "Zahl erwartet.");
  3229. goto("wait");
  3230. }
  3231. if(line < 0) {
  3232. msg.prefix(player, prefix_datatools, "Positive Zahl erwartet.");
  3233. goto("wait");
  3234. }
  3235. lore = text.concatList(args, " ", 2, size - 1);
  3236. lore = text.replace(lore, "&", "§");
  3237. item.addLore(item, line, lore);
  3238. msg.prefix(player, prefix_datatools, "Die neue Lore wurde hinzugefügt.");
  3239. goto("wait");
  3240. }
  3241. if(arg0 == "maxhealth") {
  3242. if(size < 2) {
  3243. msg.prefix(player, prefix_datatools, "§r/datatools maxhealth <value>");
  3244. goto("wait");
  3245. }
  3246. value = list.getIndex(args, 1);
  3247. if(!isDouble(value)) {
  3248. msg.prefix(player, prefix_datatools, "Zahl erwartet.");
  3249. goto("wait");
  3250. }
  3251. templist = living.near(player, 3);
  3252. if(list.getSize(templist) == 0) {
  3253. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3254. goto("wait");
  3255. }
  3256. entity = list.getIndex(templist, 0);
  3257. if(isPlayer(entity)) {
  3258. msg.prefix(player, prefix_datatools, "Auf Spieler nicht anwendbar.");
  3259. goto("wait");
  3260. }
  3261. living.setMaxHealth(entity, value);
  3262. msg.prefix(player, prefix_datatools, concat("Das Entity ", entity.getType(entity), " hat nun Maxhealth: ", entity.getMaxHealth(entity), "§r."));
  3263. goto("wait");
  3264. }
  3265. if(arg0 == "name-entity") {
  3266. if(size < 2) {
  3267. msg.prefix(player, prefix_datatools, "§r/datatools name-entity <name>");
  3268. goto("wait");
  3269. }
  3270. templist = living.near(player, 3);
  3271. if(list.getSize(templist) == 0) {
  3272. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3273. goto("wait");
  3274. }
  3275. entity = list.getIndex(templist, 0);
  3276. name = text.concatList(args, " ", 1, size - 1);
  3277. name = text.replace(name, "&", "§");
  3278. name = text.replace(name, "\\n", "\n");
  3279. entity.setName(entity, name, true);
  3280. msg.prefix(player, prefix_datatools, concat("Das Entity trägt nun den Namen ", name, "§r."));
  3281. goto("wait");
  3282. }
  3283. if(arg0 == "name-visibility") {
  3284. if(size != 2) {
  3285. msg.prefix(player, prefix_datatools, "§r/datatools name-visibility <boolean>");
  3286. goto("wait");
  3287. }
  3288. templist = living.near(player, 3);
  3289. if(list.getSize(templist) == 0) {
  3290. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3291. goto("wait");
  3292. }
  3293. entity = list.getIndex(templist, 0);
  3294. boolean = list.getIndex(args, 1);
  3295. name = entity.getName(entity);
  3296. entity.setName(entity, name, boolean);
  3297. msg.prefix(player, prefix_datatools, "Änderung durchgeführt.");
  3298. goto("wait");
  3299. }
  3300. if(arg0 == "hide-entity") {
  3301. if(size != 1) {
  3302. msg.prefix(player, prefix_datatools, "§r/datatools hide-entity");
  3303. goto("wait");
  3304. }
  3305. templist = living.near(player, 3);
  3306. if(list.getSize(templist) == 0) {
  3307. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3308. goto("wait");
  3309. }
  3310. entity = list.getIndex(templist, 0);
  3311. entity.setInvisible(entity, true);
  3312. msg.prefix(player, prefix_datatools, "Das Entity ist nun unsichtbar.");
  3313. goto("wait");
  3314. }
  3315. if(arg0 == "show-entity") {
  3316. if(size != 1) {
  3317. msg.prefix(player, prefix_datatools, "§r/datatools show-entity");
  3318. goto("wait");
  3319. }
  3320. templist = living.near(player, 3);
  3321. if(list.getSize(templist) == 0) {
  3322. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3323. goto("wait");
  3324. }
  3325. entity = list.getIndex(templist, 0);
  3326. entity.setInvisible(entity, false);
  3327. msg.prefix(player, prefix_datatools, "Das Entity ist nun sichtbar.");
  3328. goto("wait");
  3329. }
  3330. goto("datatoolshelp");
  3331. @human
  3332. if(size == 0) {
  3333. @humanhelp
  3334. msg.prefix(player, prefix_human, "/human ...");
  3335. msg(player, concat("§6 - spawn §rSpawnt einen Human"));
  3336. msg(player, concat("§6 - set <name> §rSetzt den Skin"));
  3337. msg(player, concat("§6 - setuuid <uuid> §rSetzt den Skin"));
  3338. msg(player, concat("§6 - name §rSetzt den Namen"));
  3339. msg(player, concat("§6 - kill §rTötet einen Human"));
  3340. msg(player, concat("§6 - size <scale> §rSetzt die Größenskalierung"));
  3341. msg(player, concat("§6 - steve §rSchaltet auf Steve Skin"));
  3342. msg(player, concat("§6 - alex §rSchaltet auf Alex Skin"));
  3343. msg(player, concat("§6 - statue <bool> §rToggles between statue"));
  3344. goto("wait");
  3345. }
  3346. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3347. if(arg0 == "spawn") {
  3348. human.spawn(entity.getLocation(player));
  3349. msg.prefix(player, prefix_human, "Human gespawnt.");
  3350. goto("wait");
  3351. }
  3352. player_loc = entity.getLocation(player);
  3353. human = entity.get(player_loc, 3, "me.km.entities.EntityHuman");
  3354. if(human == null) {
  3355. msg.prefix(player, prefix_human, "Zu weit weg vom Human.");
  3356. goto("wait");
  3357. }
  3358. if(arg0 == "set") {
  3359. if(size == 2) {
  3360. name = list.getIndex(args, 1);
  3361. human.setSkin(human, name);
  3362. msg.prefix(player, prefix_human, "Skin gesetzt.");
  3363. goto("wait");
  3364. }
  3365. }
  3366. elseif(arg0 == "setuuid") {
  3367. if(size == 2) {
  3368. uuid = list.getIndex(args, 1);
  3369. human.setSkin(human, uuid);
  3370. msg.prefix(player, prefix_human, "Skin gesetzt.");
  3371. goto("wait");
  3372. }
  3373. }
  3374. elseif(arg0 == "name") {
  3375. if(size > 1) {
  3376. name = text.concatList(args, " ", 1, size - 1);
  3377. name = text.replace(name, "&", "§");
  3378. name = text.replace(name, "\\n", "\n");
  3379. entity.setName(human, name, true);
  3380. msg.prefix(player, prefix_human, concat("Das Entity trägt nun den Namen ", name, "§r."));
  3381. goto("wait");
  3382. }
  3383. }
  3384. elseif(arg0 == "kill") {
  3385. entity.remove(human);
  3386. msg.prefix(player, prefix_human, "Human getötet.");
  3387. goto("wait");
  3388. }
  3389. elseif(arg0 == "size") {
  3390. if(size == 2) {
  3391. scale = list.getIndex(args, 1);
  3392. if(!isDouble(scale)) {
  3393. msg.prefix(player, prefix_human, "Zahl erwartet.");
  3394. goto("wait");
  3395. }
  3396. if(scale > 10) {
  3397. msg.prefix(player, prefix_human, "Maximal 10.");
  3398. scale = 10;
  3399. }
  3400. human.setScale(human, scale);
  3401. msg.prefix(player, prefix_human, "Größe verändert.");
  3402. goto("wait");
  3403. }
  3404. }
  3405. elseif(arg0 == "steve") {
  3406. human.setSlim(human, false);
  3407. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  3408. goto("wait");
  3409. }
  3410. elseif(arg0 == "alex") {
  3411. human.setSlim(human, true);
  3412. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  3413. goto("wait");
  3414. }
  3415. elseif(arg0 == "statue") {
  3416. if(size == 1) {
  3417. bool = true;
  3418. } elseif(size == 2) {
  3419. bool = list.getIndex(args, 1);
  3420. if(bool != true && bool != false) {
  3421. bool = true;
  3422. }
  3423. }
  3424. human.setStatue(human, bool);
  3425. msg.prefix(player, prefix_human, "Human changed.");
  3426. goto("wait");
  3427. }
  3428. goto("humanhelp");
  3429. @answer
  3430. if(player.isMuted(player)) {
  3431. msg.prefix(player, "§6Commands", "You are muted.");
  3432. goto("wait");
  3433. }
  3434. if(size < 1) {
  3435. msg.prefix(sender, prefix_commands, "/answer <message>");
  3436. goto("wait");
  3437. }
  3438. player_uuid = player.getUuid(sender);
  3439. p_uuid = map.get(answer_map, player_uuid);
  3440. if(p_uuid == null) {
  3441. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  3442. goto("wait");
  3443. }
  3444. message = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  3445. if(text.startsWith(message, "https://", 0)) {
  3446. message = text.link(message, message);
  3447. }
  3448. if(player.getId(p_uuid) == 18) {
  3449. msg(sender, "§6[ -> §cSERVER§6] ", message);
  3450. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  3451. } else {
  3452. p = player.get(p_uuid);
  3453. if(p == null) {
  3454. msg.prefix(sender, prefix_commands, "This player is not online.");
  3455. goto("wait");
  3456. }
  3457. msg(sender, text.concat2(concat("§6[ -> §c", player.getName(p), "§6] "), message));
  3458. msg(p, text.concat2(concat("§6[§c", sender_name, "§6] "), message));
  3459. }
  3460. map.add(answer_map, p_uuid, player_uuid);
  3461. map.add(answer_map, player_uuid, p_uuid);
  3462. goto("wait");
  3463. @msg
  3464. if(player.isMuted(player)) {
  3465. msg.prefix(player, "§6Commands", "You are muted.");
  3466. goto("wait");
  3467. }
  3468. if(size < 2) {
  3469. msg.prefix(sender, prefix_commands, "/msg <player> <message>");
  3470. goto("wait");
  3471. }
  3472. p_name = list.getIndex(args, 0);
  3473. p_uuid = player.getUuid(p_name);
  3474. if(p_uuid == null) {
  3475. msg.prefix(sender, prefix_commands, "Unknown player.");
  3476. goto("wait");
  3477. }
  3478. message = text.replace(text.concatList(args, " ", 1, size - 1), "&", "§");
  3479. if(text.startsWith(message, "https://", 0)) {
  3480. message = text.link(message, message);
  3481. }
  3482. if(text.toUpperCase(p_name) == "SERVER") {
  3483. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  3484. msg(sender, "§6[ -> §cSERVER§6] ", message);
  3485. } else {
  3486. p = read.player(p_name);
  3487. if(p == null) {
  3488. msg.prefix(sender, prefix_commands, "This player is not online.");
  3489. goto("wait");
  3490. }
  3491. msg(p, concat("§6[§c", sender_name), "§6] ", message);
  3492. msg(sender, concat("§6[ -> §c", player.getName(p)), "§6] ", message);
  3493. }
  3494. player_uuid = player.getUuid(sender);
  3495. map.add(answer_map, p_uuid, player_uuid);
  3496. map.add(answer_map, player_uuid, p_uuid);
  3497. goto("wait");
  3498. @list
  3499. list = players.toList();
  3500. size = list.getSize(list);
  3501. msg(sender, getSpacer());
  3502. if(size == 1) {
  3503. msg(sender, concat("§6There is ", text.number(size), " players online."));
  3504. } else {
  3505. msg(sender, concat("§6There are ", text.number(size), " players online."));
  3506. }
  3507. for(i = 0; i < size; i++) {
  3508. p = list.getIndex(list, i);
  3509. full_name = player.getFullName(p);
  3510. if(player.isAfk(p)) {
  3511. full_name = concat("§7§m", removeFormat(full_name));
  3512. }
  3513. msg(sender, full_name);
  3514. }
  3515. goto("wait");
  3516. @ass
  3517. if(size < 2) {
  3518. msg.prefix(player, prefix_commands, "§r/ass ...");
  3519. msg(player, " - set <name>");
  3520. msg(player, " - rename <name>");
  3521. msg(player, " - remove <radius>");
  3522. goto("wait");
  3523. }
  3524. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3525. if(arg0 == "set") {
  3526. name = text.concatList(args, " ", 1, size - 1);
  3527. name = text.replace(name, "&", "§");
  3528. name = text.replace(name, "\\n", "\n");
  3529. ent = entity.spawn("km:nobody", entity.getLocation(player), "{NoGravity:true}");
  3530. entity.setName(ent, name);
  3531. goto("wait");
  3532. }
  3533. if(arg0 == "rename") {
  3534. name = text.concatList(args, " ", 1, size - 1);
  3535. name = text.replace(name, "&", "§");
  3536. name = text.replace(name, "\\n", "\n");
  3537. ent_list = living.near(player, 5);
  3538. for(i = 0; i < list.getSize(ent_list); i++) {
  3539. ent = list.getIndex(ent_list, i);
  3540. if(entity.getType(ent) == "nobody") {
  3541. entity.setName(ent, name);
  3542. goto("wait");
  3543. }
  3544. }
  3545. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  3546. goto("wait");
  3547. }
  3548. if(arg0 == "remove") {
  3549. radius = list.getIndex(args, 1);
  3550. if(!isDouble(radius)) {
  3551. msg.prefix(player, prefix_commands, "Zahl erwartet.");
  3552. goto("wait");
  3553. }
  3554. if(radius < 0 || radius > 5) {
  3555. msg.prefix(player, prefix_commands, "§rRadius: 0-5");
  3556. goto("wait");
  3557. }
  3558. ent_list = living.near(player, radius);
  3559. for(i = 0; i < list.getSize(ent_list); i++) {
  3560. ent = list.getIndex(ent_list, i);
  3561. if(entity.getType(ent) == "nobody") {
  3562. entity.remove(ent);
  3563. msg.prefix(player, prefix_commands, "§rLufttext entfernt");
  3564. goto("wait");
  3565. }
  3566. }
  3567. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  3568. }
  3569. goto("wait");
  3570. @coords
  3571. target_loc = player.getTarget(player, 5, false, false);
  3572. targettype = block.getType(target_loc);
  3573. if(targettype == "minecraft:air") {
  3574. msg.prefix(player, prefix_commands, "You have to look at a block.");
  3575. goto("wait");
  3576. }
  3577. msg(player, getSpacer());
  3578. x = text.Number(loc.getX(target_loc));
  3579. y = text.Number(loc.getY(target_loc));
  3580. z = text.Number(loc.getZ(target_loc));
  3581. msg(player, "§6World: §r", world.getName(loc.getWorld(target_loc)));
  3582. msg(player, "§6Coords: §r", x, " / ", y, " / ", z);
  3583. msg(player, "§6Block: §r", targettype);
  3584. goto("wait");
  3585. @sign
  3586. if(size == 0) {
  3587. msg.prefix(player, prefix_commands, "/sign <1-4> [text]");
  3588. goto("wait");
  3589. }
  3590. target_loc = player.getTarget(player, 5, false, false);
  3591. block = block.get(target_loc);
  3592. if(!block.hasTag(sign_tag, block)) {
  3593. msg.prefix(player, prefix_commands, "Look at a sign.");
  3594. goto("wait");
  3595. }
  3596. line = list.getIndex(args, 0);
  3597. if(!isDouble(line)) {
  3598. msg.prefix(player, prefix_commands, "Number expected.");
  3599. goto("wait");
  3600. }
  3601. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  3602. msg.prefix(player, prefix_commands, "Number between 1 and 5 expected.");
  3603. goto("wait");
  3604. }
  3605. string = "";
  3606. if(size > 1) {
  3607. for(i = 1; i < size; i++) {
  3608. arg = list.getIndex(args, i);
  3609. if(isDouble(arg)) {
  3610. arg = text.number(arg);
  3611. }
  3612. if(i == 1) {
  3613. string = arg;
  3614. } else {
  3615. string = concat(string, " ", arg);
  3616. }
  3617. }
  3618. }
  3619. string = text.replace(string, "&", "§");
  3620. block.setSign(target_loc, line - 1, string);
  3621. goto("wait");
  3622. @head
  3623. if(size != 1) {
  3624. msg.prefix(player, prefix_commands, "/head <player>");
  3625. goto("wait");
  3626. }
  3627. name = list.getIndex(args, 0);
  3628. uuid = player.getUuid(name);
  3629. if(uuid == null) {
  3630. player.giveItem(player, read.item(concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}")));
  3631. } else {
  3632. player.giveItem(player, player.getHead(uuid, name));
  3633. }
  3634. goto("wait");
  3635. @mute
  3636. if(size < 1) {
  3637. msg.prefix(sender, prefix_commands, "/mute <player>");
  3638. goto("wait");
  3639. }
  3640. p_name = list.getIndex(args, 0);
  3641. if(!isOnline(p_name)) {
  3642. msg.prefix(sender, prefix_commands, "This player is not online.");
  3643. goto("wait");
  3644. }
  3645. p = read.player(p_name);
  3646. p_name = player.getName(p);
  3647. if(p_name == "marvinius") {
  3648. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3649. goto("wait");
  3650. }
  3651. msg("online", concat("§c", p_name, " was muted by ", sender_name, "."));
  3652. player.mute(p, true);
  3653. goto("wait");
  3654. @unmute
  3655. if(size < 1) {
  3656. msg.prefix(sender, prefix_commands, "/unmute <player>");
  3657. goto("wait");
  3658. }
  3659. p_name = list.getIndex(args, 0);
  3660. if(!isOnline(p_name)) {
  3661. msg.prefix(sender, prefix_commands, "This player is not online.");
  3662. goto("wait");
  3663. }
  3664. p = read.player(p_name);
  3665. p_name = player.getName(p);
  3666. if(p_name == "marvinius") {
  3667. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3668. goto("wait");
  3669. }
  3670. msg("online", concat("§c", p_name, " was unmuted by ", sender_name, "."));
  3671. player.mute(p, false);
  3672. goto("wait");
  3673. @kick
  3674. if(size < 1) {
  3675. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  3676. goto("wait");
  3677. }
  3678. p_name = list.getIndex(args, 0);
  3679. if(!isOnline(p_name)) {
  3680. msg.prefix(sender, prefix_commands, "This player is not online.");
  3681. goto("wait");
  3682. }
  3683. p = read.player(p_name);
  3684. p_name = player.getName(p);
  3685. if(p_name == "marvinius") {
  3686. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3687. goto("wait");
  3688. }
  3689. if(size > 1) {
  3690. reason = text.concatList(args, " ", 1, size - 1);
  3691. msg("online", concat("§c", p_name, " was kicked by ", sender_name, ": ", reason));
  3692. } else {
  3693. reason = "You got kicked";
  3694. msg("online", concat("§c", p_name, " was kicked by ", sender_name, "."));
  3695. }
  3696. ban.kick(p, reason);
  3697. goto("wait");
  3698. @silentkick
  3699. if(size < 1) {
  3700. msg.prefix(sender, prefix_commands, "/silentkick <player> [reason]");
  3701. goto("wait");
  3702. }
  3703. p_name = list.getIndex(args, 0);
  3704. if(!isOnline(p_name)) {
  3705. msg.prefix(sender, prefix_commands, "This player is not online.");
  3706. goto("wait");
  3707. }
  3708. p = read.player(p_name);
  3709. p_name = player.getName(p);
  3710. if(p_name == "marvinius") {
  3711. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3712. goto("wait");
  3713. }
  3714. if(size > 1) {
  3715. reason = text.concatList(args, " ", 1, size - 1);
  3716. msg(sender, concat("§cYou silently kicked ", p_name, ": ", reason));
  3717. } else {
  3718. reason = "Du wurdest gekickt";
  3719. msg(sender, concat("§cYou silently kicked ", p_name, "."));
  3720. }
  3721. ban.kick(p, reason);
  3722. goto("wait");
  3723. @warn
  3724. if(size != 1) {
  3725. msg.prefix(player, prefix_commands, "/warn <player>");
  3726. goto("wait");
  3727. }
  3728. p_name = list.getIndex(args, 0);
  3729. if(!isOnline(p_name)) {
  3730. msg.prefix(player, prefix_commands, "This player is not online.");
  3731. goto("wait");
  3732. }
  3733. p = read.player(p_name);
  3734. p_name = player.getName(p);
  3735. if(p_name == "marvinius") {
  3736. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  3737. goto("wait");
  3738. }
  3739. head.add(p, 0, sender_name, 160, 50, 20);
  3740. title.setSub(p, "is watching you");
  3741. title.send(p, concat("§c", sender_name));
  3742. list.add(warninglist, p_name);
  3743. sgoto(100, "removeWarning");
  3744. msg.prefix(player, prefix_commands, "The player got warned.");
  3745. goto("wait");
  3746. @removeWarning
  3747. p_name = list.getIndex(warninglist, 0);
  3748. if(isOnline(p_name)) {
  3749. p = read.player(p_name);
  3750. head.remove(p, 0);
  3751. list.removeIndex(warninglist, 0);
  3752. }
  3753. goto("wait");
  3754. @ban
  3755. if(size < 1) {
  3756. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  3757. goto("wait");
  3758. }
  3759. p_name = list.getIndex(args, 0);
  3760. if(!checkIfEverOnline(p_name)) {
  3761. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3762. goto("wait");
  3763. }
  3764. p_name = player.getName(player.getUuid(p_name));
  3765. if(p_name == "marvinius") {
  3766. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3767. goto("wait");
  3768. }
  3769. if(size > 1) {
  3770. reason = text.concatList(args, " ", 1, size - 1);
  3771. msg("online", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  3772. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  3773. } else {
  3774. reason = "Du wurdest gebannt";
  3775. msg("online", concat("§c", p_name, " got banned by ", sender_name, "."));
  3776. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, "."));
  3777. }
  3778. ban.add(player.getUuid(p_name), reason, sender_name);
  3779. if(isOnline(p_name)) {
  3780. p = read.player(p_name);
  3781. ban.kick(p, reason);
  3782. }
  3783. goto("wait");
  3784. @silentban
  3785. if(size < 1) {
  3786. msg.prefix(sender, prefix_commands, "/silentban <player> [reason]");
  3787. goto("wait");
  3788. }
  3789. p_name = list.getIndex(args, 0);
  3790. if(!checkIfEverOnline(p_name)) {
  3791. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3792. goto("wait");
  3793. }
  3794. p_name = player.getName(player.getUuid(p_name));
  3795. if(p_name == "marvinius") {
  3796. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3797. goto("wait");
  3798. }
  3799. if(size > 1) {
  3800. reason = text.concatList(args, " ", 1, size - 1);
  3801. msg(sender, concat("§cYou silently banned ", p_name, ": ", reason));
  3802. } else {
  3803. reason = "You got banned.";
  3804. msg(sender, concat("§cYou silently banned ", p_name, "."));
  3805. }
  3806. ban.add(player.getUuid(p_name), reason, sender_name);
  3807. if(isOnline(p_name)) {
  3808. p = read.player(p_name);
  3809. ban.kick(p, reason);
  3810. }
  3811. goto("wait");
  3812. @unban
  3813. if(size != 1) {
  3814. msg.prefix(sender, prefix_commands, "/unban <player>");
  3815. goto("wait");
  3816. }
  3817. p_name = list.getIndex(args, 0);
  3818. if(!checkIfEverOnline(p_name)) {
  3819. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3820. goto("wait");
  3821. }
  3822. p_name = player.getName(player.getUuid(p_name));
  3823. ban.remove(player.getUuid(p_name));
  3824. msg(sender, concat("§cYou unbanned ", p_name, "."));
  3825. goto("wait");
  3826. @tempban
  3827. if(size < 4) {
  3828. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  3829. goto("wait");
  3830. }
  3831. p_name = list.getIndex(args, 0);
  3832. if(!checkIfEverOnline(p_name)) {
  3833. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3834. goto("wait");
  3835. }
  3836. p_name = player.getName(player.getUuid(p_name));
  3837. if(p_name == "marvinius") {
  3838. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3839. goto("wait");
  3840. }
  3841. days = list.getIndex(args, 1);
  3842. hours = list.getIndex(args, 2);
  3843. minutes = list.getIndex(args, 3);
  3844. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  3845. msg.prefix(sender, prefix_commands, "Number expected.");
  3846. goto("wait");
  3847. }
  3848. if(days < 0 || hours < 0 || minutes < 0) {
  3849. msg.prefix(sender, prefix_commands, "Positive number expected.");
  3850. goto("wait");
  3851. }
  3852. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  3853. timestring = getTimeString(endtime);
  3854. if(size > 4) {
  3855. reason = text.concatList(args, " ", 4, size - 1);
  3856. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  3857. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  3858. } else {
  3859. reason = "Du wurdest gebannt";
  3860. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  3861. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  3862. }
  3863. calendar = time.new(endtime);
  3864. ban.add(player.getUuid(p_name), reason, sender_name, calendar);
  3865. if(isOnline(p_name)) {
  3866. p = read.player(p_name);
  3867. ban.kick(p, reason);
  3868. }
  3869. goto("wait");
  3870. @ping
  3871. msg(player, "pong");
  3872. goto("wait");
  3873. @plot
  3874. if(size == 0) {
  3875. @plothelp
  3876. msg.prefix(player, prefix_plot, "/plot ...");
  3877. msg(player, "§d - info §rReturns info about current location");
  3878. msg(player, "§d - pos1/pos2 §rSet corner points");
  3879. msg(player, "§d - create §rCreates a (sub-)plot (Y: 0 - 255)");
  3880. msg(player, "§d - create3D §rCreates a 3D (sub-)plot");
  3881. msg(player, "§d - remove [id] §rRemoves a plot");
  3882. msg(player, "§d - expand <anzahl> [id] §rExpands a plot");
  3883. msg(player, "§d - name [id] <name> §rRenames a plot");
  3884. msg(player, "§d - share <player> [id] §rAdd a player to a plot");
  3885. msg(player, "§d - kick <player> [id] §rRemove a player from a plot");
  3886. msg(player, "§d - leader <player> [id] §rPromote to plot-leader");
  3887. msg(player, "§d - mod <player> [id] §rPromote to plot-mod");
  3888. msg(player, "§d - chest <player> [id] §rAllows a player to open chests");
  3889. msg(player, "§d - raise §rRaises a plot to a city");
  3890. msg(player, "§d - sell <price> §rSells a sub-plot");
  3891. if(perm.has(player, "plot.moreinfo")) {
  3892. msg(player, "§d - list [player] §rLists all plots from a player");
  3893. msg(player, "§d - moreinfo [id] §rReturns more detailed infos");
  3894. msg(player, "§d - listall §rLists all plots");
  3895. msg(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  3896. } else {
  3897. msg(player, "§d - list §rLists your plots");
  3898. }
  3899. goto("wait");
  3900. }
  3901. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3902. if(arg0 == "sell") {
  3903. if(size != 2) {
  3904. msg.prefix(player, prefix_commands, "/plot sell <price>");
  3905. goto("wait");
  3906. }
  3907. sign_loc = player.getTarget(player, 5, false, false);
  3908. block = block.get(sign_loc);
  3909. if(!block.hasTag(sign_tag, block)) {
  3910. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  3911. goto("wait");
  3912. }
  3913. if(block.getSign(sign_loc, 0) != "" || block.getSign(sign_loc, 1) != "" || block.getSign(sign_loc, 2) != "" || block.getSign(sign_loc, 3) != "") {
  3914. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  3915. goto("wait");
  3916. }
  3917. plot_list = plot.get(sign_loc);
  3918. amount = list.getSize(plot_list);
  3919. if(amount == 0 || amount == 1) {
  3920. msg.prefix(player, prefix_plot, "You aren't on a sub plot.");
  3921. goto("wait");
  3922. }
  3923. if(amount > 2) {
  3924. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  3925. goto("wait");
  3926. }
  3927. plot_1 = list.getIndex(plot_list, 0);
  3928. plot_2 = list.getIndex(plot_list, 1);
  3929. if(plot.isCity(plot_1)) {
  3930. city_plot = plot_1;
  3931. sell_plot = plot_2;
  3932. } elseif(plot.isCity(plot_2)) {
  3933. sell_plot = plot_1;
  3934. city_plot = plot_2;
  3935. } else {
  3936. msg.prefix(player, prefix_plot, "No city found.");
  3937. goto("wait");
  3938. }
  3939. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  3940. msg.prefix(player, prefix_plot, "You aren't a city plot leader or mod.");
  3941. goto("wait");
  3942. }
  3943. snuvis = list.getIndex(args, 1);
  3944. if(!isDouble(snuvis) || snuvis < 0) {
  3945. msg.prefix(player, prefix_plot, "Positive number expected.");
  3946. goto("wait");
  3947. }
  3948. //Sell Plot
  3949. x1 = plot.getMinX(sell_plot);
  3950. y1 = plot.getMinY(sell_plot);
  3951. z1 = plot.getMinZ(sell_plot);
  3952. x2 = plot.getMaxX(sell_plot);
  3953. y2 = plot.getMaxY(sell_plot);
  3954. z2 = plot.getMaxZ(sell_plot);
  3955. length = math.abs(x1 - x2) + 1;
  3956. width = math.abs(z1 - z2) + 1;
  3957. high = math.abs(y1 - y2) + 1;
  3958. //Change plot settings
  3959. plot.setFree(sell_plot, true);
  3960. plot.setName(sell_plot, "Free Plot");
  3961. plot.removePlayer(sell_plot, player.getName(player));
  3962. //Label Sign
  3963. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  3964. block.setSign(sign_loc, 1, concat("§2", text.number(snuvis)));
  3965. if(high == 256) {
  3966. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width)));
  3967. } else {
  3968. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width), " (Y:", text.number(high), ")"));
  3969. }
  3970. block.setSign(sign_loc, 3, text.number(player.getId(player)));
  3971. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  3972. goto("wait");
  3973. }
  3974. if(arg0 == "raise") {
  3975. location = entity.getLocation(player);
  3976. plot_list = plot.get(location);
  3977. amount = list.getSize(plot_list);
  3978. if(amount == 0) {
  3979. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  3980. goto("wait");
  3981. }
  3982. if(!player.isClanLeader(player)) {
  3983. msg.prefix(player, prefix_plot, "Only a clan leader can do this.");
  3984. goto("wait");
  3985. }
  3986. clan_id = player.getClanId(player);
  3987. if(clan.getMembersAmount(clan_id) < 5) {
  3988. msg.prefix(player, prefix_plot, "Your clan needs 4 members to do this.");
  3989. goto("wait");
  3990. }
  3991. plot = list.getIndex(plot_list, 0);
  3992. if(plot.isCity(plot)) {
  3993. msg.prefix(player, prefix_plot, "This plot is already a city.");
  3994. goto("wait");
  3995. }
  3996. if(!plot.isLeader(plot, player)) {
  3997. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  3998. goto("wait");
  3999. }
  4000. if(amount > 1) {
  4001. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4002. goto("wait");
  4003. }
  4004. x1 = plot.getMinX(plot);
  4005. z1 = plot.getMinZ(plot);
  4006. x2 = plot.getMaxX(plot);
  4007. z2 = plot.getMaxZ(plot);
  4008. length = math.abs(x1 - x2) + 1;
  4009. width = math.abs(z1 - z2) + 1;
  4010. plot_size = length * width;
  4011. if(plot_size < 900) {
  4012. msg.prefix(player, prefix_plot, "Your plot must be over 900m2.");
  4013. goto("wait");
  4014. }
  4015. snuvis = 4096;
  4016. if(!hasEnoughMoney(player, snuvis)) {
  4017. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4018. goto("wait");
  4019. }
  4020. offerRank(player, "rank.major");
  4021. player.setPlotRaised(player, true);
  4022. subMoney(player, snuvis);
  4023. plot.setCity(plot, true);
  4024. msg.prefix(player, prefix_plot, concat("City created. Spent §6", text.number(snuvis), "§r snuvis."));
  4025. goto("wait");
  4026. }
  4027. if(arg0 == "leader") {
  4028. if(size < 2) {
  4029. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4030. goto("wait");
  4031. }
  4032. p_name = list.getIndex(args, 1);
  4033. p_uuid = player.getUuid(p_name);
  4034. if(p_uuid == null) {
  4035. msg.prefix(player, prefix_plot, "This player has never been online.");
  4036. goto("wait");
  4037. }
  4038. p_name = player.getName(p_uuid);
  4039. location = entity.getLocation(player);
  4040. world = loc.getWorld(location);
  4041. if(size == 2) {
  4042. plot_list = plot.get(location);
  4043. amount = list.getSize(plot_list);
  4044. if(amount == 0) {
  4045. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4046. goto("wait");
  4047. }
  4048. plot = list.getIndex(plot_list, 0);
  4049. if(amount > 1) {
  4050. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4051. for(i = 0; i < amount; i++) {
  4052. plot = list.getIndex(plot_list, i);
  4053. plot_id = plot.getId(plot);
  4054. 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)));
  4055. }
  4056. goto("wait");
  4057. }
  4058. } else {
  4059. if(size != 3) {
  4060. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4061. goto("wait");
  4062. }
  4063. plot_id = list.getIndex(args, 2);
  4064. plot = plot.getFromId(plot_id, world);
  4065. if(plot == null) {
  4066. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4067. goto("wait");
  4068. }
  4069. }
  4070. player_id = player.getId(player);
  4071. if(!perm.has(player, "plot.other")) {
  4072. if(!world.canUsePlots(world)) {
  4073. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4074. goto("wait");
  4075. }
  4076. if(!plot.isLeader(plot, player_id)) {
  4077. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4078. goto("wait");
  4079. }
  4080. if(player_name == p_name) {
  4081. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  4082. goto("wait");
  4083. }
  4084. }
  4085. p_id = player.getId(p_uuid);
  4086. if(plot.isLeader(plot, p_id)) {
  4087. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  4088. goto("wait");
  4089. }
  4090. old_leader = plot.getLeaderId(plot);
  4091. if(old_leader != null) {
  4092. plot.setMod(plot, old_leader);
  4093. }
  4094. plot.setLeader(plot, p_id);
  4095. plot.addPlayer(plot, p_name);
  4096. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot leader."));
  4097. goto("wait");
  4098. }
  4099. if(arg0 == "mod") {
  4100. if(size < 2) {
  4101. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4102. goto("wait");
  4103. }
  4104. p_name = list.getIndex(args, 1);
  4105. p_uuid = player.getUuid(p_name);
  4106. if(p_uuid == null) {
  4107. msg.prefix(player, prefix_plot, "This player has never been online.");
  4108. goto("wait");
  4109. }
  4110. p_name = player.getName(p_uuid);
  4111. location = entity.getLocation(player);
  4112. world = loc.getWorld(location);
  4113. if(size == 2) {
  4114. plot_list = plot.get(location);
  4115. amount = list.getSize(plot_list);
  4116. if(amount == 0) {
  4117. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4118. goto("wait");
  4119. }
  4120. plot = list.getIndex(plot_list, 0);
  4121. if(amount > 1) {
  4122. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4123. for(i = 0; i < amount; i++) {
  4124. plot = list.getIndex(plot_list, i);
  4125. plot_id = plot.getId(plot);
  4126. 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)));
  4127. }
  4128. goto("wait");
  4129. }
  4130. } else {
  4131. if(size != 3) {
  4132. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4133. goto("wait");
  4134. }
  4135. plot_id = list.getIndex(args, 2);
  4136. plot = plot.getFromId(plot_id, world);
  4137. if(plot == null) {
  4138. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4139. goto("wait");
  4140. }
  4141. }
  4142. player_id = player.getId(player);
  4143. if(!perm.has(player, "plot.other")) {
  4144. if(!world.canUsePlots(world)) {
  4145. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4146. goto("wait");
  4147. }
  4148. if(!plot.isLeader(plot, player_id)) {
  4149. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4150. goto("wait");
  4151. }
  4152. }
  4153. p_id = player.getId(p_uuid);
  4154. if(plot.isLeader(plot, p_id)) {
  4155. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  4156. goto("wait");
  4157. }
  4158. if(plot.isMod(plot, p_id)) {
  4159. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  4160. goto("wait");
  4161. }
  4162. plot.setMod(plot, p_id);
  4163. plot.addPlayer(plot, p_name);
  4164. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot mod."));
  4165. goto("wait");
  4166. }
  4167. if(arg0 == "chest") {
  4168. if(size < 2) {
  4169. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4170. goto("wait");
  4171. }
  4172. p_name = list.getIndex(args, 1);
  4173. p_uuid = player.getUuid(p_name);
  4174. if(p_uuid == null) {
  4175. msg.prefix(player, prefix_plot, "This player has never been online.");
  4176. goto("wait");
  4177. }
  4178. p_name = player.getName(p_uuid);
  4179. location = entity.getLocation(player);
  4180. world = loc.getWorld(location);
  4181. if(size == 2) {
  4182. plot_list = plot.get(location);
  4183. amount = list.getSize(plot_list);
  4184. if(amount == 0) {
  4185. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4186. goto("wait");
  4187. }
  4188. plot = list.getIndex(plot_list, 0);
  4189. if(amount > 1) {
  4190. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4191. for(i = 0; i < amount; i++) {
  4192. plot = list.getIndex(plot_list, i);
  4193. plot_id = plot.getId(plot);
  4194. 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)));
  4195. }
  4196. goto("wait");
  4197. }
  4198. } else {
  4199. if(size != 3) {
  4200. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4201. goto("wait");
  4202. }
  4203. plot_id = list.getIndex(args, 2);
  4204. plot = plot.getFromId(plot_id, world);
  4205. if(plot == null) {
  4206. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4207. goto("wait");
  4208. }
  4209. }
  4210. player_id = player.getId(player);
  4211. if(!perm.has(player, "plot.other")) {
  4212. if(!world.canUsePlots(world)) {
  4213. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4214. goto("wait");
  4215. }
  4216. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4217. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4218. goto("wait");
  4219. }
  4220. }
  4221. p_id = player.getId(p_uuid);
  4222. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  4223. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  4224. goto("wait");
  4225. }
  4226. if(plot.canOpenChests(plot, p_id)) {
  4227. msg.prefix(player, prefix_plot, "This player already can open chests.");
  4228. goto("wait");
  4229. }
  4230. plot.setChest(plot, p_id);
  4231. msg.prefix(player, prefix_plot, concat(p_name, " can now open chests."));
  4232. goto("wait");
  4233. }
  4234. if(arg0 == "remove") {
  4235. location = entity.getLocation(player);
  4236. world = loc.getWorld(location);
  4237. if(size == 1) {
  4238. plot_list = plot.get(location);
  4239. amount = list.getSize(plot_list);
  4240. if(amount == 0) {
  4241. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4242. goto("wait");
  4243. }
  4244. plot = list.getIndex(plot_list, 0);
  4245. if(amount > 1) {
  4246. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4247. for(i = 0; i < amount; i++) {
  4248. plot = list.getIndex(plot_list, i);
  4249. plot_id = plot.getId(plot);
  4250. 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)));
  4251. }
  4252. goto("wait");
  4253. }
  4254. } else {
  4255. if(size != 2) {
  4256. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  4257. goto("wait");
  4258. }
  4259. plot_id = list.getIndex(args, 1);
  4260. plot = plot.getFromId(plot_id, world);
  4261. if(plot == null) {
  4262. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4263. goto("wait");
  4264. }
  4265. }
  4266. if(!perm.has(player, "plot.other")) {
  4267. if(!world.canUsePlots(world)) {
  4268. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4269. goto("wait");
  4270. }
  4271. player_id = player.getId(player);
  4272. if(!plot.isLeader(plot, player_id)) {
  4273. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4274. goto("wait");
  4275. }
  4276. }
  4277. if(plot.isCity(plot)) {
  4278. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  4279. iter = list.iterator(plot_list);
  4280. while(hasNext(iter)) {
  4281. sub_plot = next(iter);
  4282. plot.removeAllPlayers(sub_plot);
  4283. plot.remove(sub_plot, world);
  4284. }
  4285. }
  4286. plot.removeAllPlayers(plot);
  4287. plot.delMoveEvent(plot);
  4288. plot.remove(plot, world);
  4289. msg.prefix(player, prefix_plot, concat("Plot removed. #", text.number(plot.getId(plot)), " §6", plot.getName(plot)));
  4290. goto("wait");
  4291. }
  4292. if(arg0 == "expand") {
  4293. if(size < 2) {
  4294. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  4295. goto("wait");
  4296. }
  4297. location = entity.getLocation(player);
  4298. world = loc.getWorld(location);
  4299. anzahl = list.getIndex(args, 1);
  4300. if(!isDouble(anzahl) || anzahl < 0) {
  4301. msg.prefix(player, prefix_plot, "Positive number expected.");
  4302. goto("wait");
  4303. }
  4304. if(size == 2) {
  4305. yaw = loc.getYaw(location);
  4306. direction = getDirection(yaw);
  4307. if(direction == null) {
  4308. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  4309. goto("wait");
  4310. }
  4311. plot_list = plot.get(location);
  4312. amount = list.getSize(plot_list);
  4313. if(amount == 0) {
  4314. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4315. goto("wait");
  4316. }
  4317. plot = list.getIndex(plot_list, 0);
  4318. if(amount > 1) {
  4319. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4320. for(i = 0; i < amount; i++) {
  4321. plot = list.getIndex(plot_list, i);
  4322. plot_id = plot.getId(plot);
  4323. 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)));
  4324. }
  4325. goto("wait");
  4326. }
  4327. } else {
  4328. if(size != 4) {
  4329. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  4330. goto("wait");
  4331. }
  4332. direction = text.toLowerCase(list.getIndex(args, 2));
  4333. plot_id = list.getIndex(args, 3);
  4334. plot = plot.getFromId(plot_id, world);
  4335. if(plot == null) {
  4336. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4337. goto("wait");
  4338. }
  4339. }
  4340. if(plot.isSub(plot)) {
  4341. msg.prefix(player, prefix_plot, "Sub plots can't be expanded.");
  4342. goto("wait");
  4343. }
  4344. x1 = plot.getMinX(plot);
  4345. y1 = plot.getMinY(plot);
  4346. z1 = plot.getMinZ(plot);
  4347. x2 = plot.getMaxX(plot);
  4348. y2 = plot.getMaxY(plot);
  4349. z2 = plot.getMaxZ(plot);
  4350. if(direction == "east") {
  4351. old_x2 = x2;
  4352. x2 += anzahl;
  4353. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  4354. } elseif(direction == "south") {
  4355. old_z2 = z2;
  4356. z2 += anzahl;
  4357. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  4358. } elseif(direction == "west") {
  4359. old_x1 = x1;
  4360. x1 -= anzahl;
  4361. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  4362. } elseif(direction == "north") {
  4363. old_z1 = z1;
  4364. z1 -= anzahl;
  4365. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  4366. } else {
  4367. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  4368. goto("wait");
  4369. }
  4370. if(!perm.has(player, "plot.other")) {
  4371. if(list.getSize(list) > 0) {
  4372. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  4373. goto("wait");
  4374. }
  4375. if(!world.canUsePlots(world)) {
  4376. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4377. goto("wait");
  4378. }
  4379. player_id = player.getId(player);
  4380. if(!plot.isLeader(plot, player_id)) {
  4381. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4382. goto("wait");
  4383. }
  4384. //Calc costs
  4385. length = math.abs(x1 - x2) + 1;
  4386. width = math.abs(z1 - z2) + 1;
  4387. snuvis = plot.calcCost(world, length, width);
  4388. if(!hasEnoughMoney(player, snuvis)) {
  4389. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4390. goto("wait");
  4391. }
  4392. subMoney(player, snuvis);
  4393. expand_message = concat("The plot has been expanded. Spent §6", text.number(snuvis), "§r snuvis.");
  4394. if(!player.hasBigPlotCreated(player)) {
  4395. plot_size = length * width;
  4396. if(plot_size >= 900) {
  4397. offerRank(player, "rank.colonizer");
  4398. player.setBigPlotCreated(player, true);
  4399. }
  4400. }
  4401. } else {
  4402. expand_message = concat("The plot has been expanded.");
  4403. }
  4404. //Expand plot
  4405. gs_edge1 = loc.new(world, x1, y1, z1);
  4406. gs_edge2 = loc.new(world, x2, y2, z2);
  4407. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  4408. plot.delMoveEvent(plot);
  4409. plot.setMoveEvent(new_plot, world);
  4410. msg.prefix(player, prefix_plot, expand_message);
  4411. goto("wait");
  4412. }
  4413. if(arg0 == "share") {
  4414. if(size < 2) {
  4415. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  4416. goto("wait");
  4417. }
  4418. p_name = list.getIndex(args, 1);
  4419. p_uuid = player.getUuid(p_name);
  4420. if(p_uuid == null) {
  4421. msg.prefix(player, prefix_plot, "This player has never been online.");
  4422. goto("wait");
  4423. }
  4424. p_name = player.getName(p_uuid);
  4425. location = entity.getLocation(player);
  4426. world = loc.getWorld(location);
  4427. if(size == 2) {
  4428. plot_list = plot.get(location);
  4429. amount = list.getSize(plot_list);
  4430. if(amount == 0) {
  4431. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4432. goto("wait");
  4433. }
  4434. plot = list.getIndex(plot_list, 0);
  4435. if(amount > 1) {
  4436. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4437. for(i = 0; i < amount; i++) {
  4438. plot = list.getIndex(plot_list, i);
  4439. plot_id = plot.getId(plot);
  4440. 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)));
  4441. }
  4442. goto("wait");
  4443. }
  4444. } else {
  4445. if(size != 3) {
  4446. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  4447. goto("wait");
  4448. }
  4449. plot_id = list.getIndex(args, 2);
  4450. plot = plot.getFromId(plot_id, world);
  4451. if(plot == null) {
  4452. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4453. goto("wait");
  4454. }
  4455. }
  4456. if(!perm.has(player, "plot.other")) {
  4457. if(!world.canUsePlots(world)) {
  4458. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4459. goto("wait");
  4460. }
  4461. player_id = player.getId(player);
  4462. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4463. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4464. goto("wait");
  4465. }
  4466. }
  4467. plot.addPlayer(plot, p_name);
  4468. msg.prefix(player, prefix_plot, concat(p_name, " added to the plot."));
  4469. goto("wait");
  4470. }
  4471. if(arg0 == "kick") {
  4472. if(size < 2) {
  4473. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  4474. goto("wait");
  4475. }
  4476. p_name = list.getIndex(args, 1);
  4477. p_uuid = player.getUuid(p_name);
  4478. if(p_uuid == null) {
  4479. msg.prefix(player, prefix_plot, "This player has never been online.");
  4480. goto("wait");
  4481. }
  4482. p_name = player.getName(p_uuid);
  4483. location = entity.getLocation(player);
  4484. world = loc.getWorld(location);
  4485. if(size == 2) {
  4486. plot_list = plot.get(location);
  4487. amount = list.getSize(plot_list);
  4488. if(amount == 0) {
  4489. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4490. goto("wait");
  4491. }
  4492. plot = list.getIndex(plot_list, 0);
  4493. if(amount > 1) {
  4494. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4495. for(i = 0; i < amount; i++) {
  4496. plot = list.getIndex(plot_list, i);
  4497. plot_id = plot.getId(plot);
  4498. 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)));
  4499. }
  4500. goto("wait");
  4501. }
  4502. } else {
  4503. if(size != 3) {
  4504. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  4505. goto("wait");
  4506. }
  4507. plot_id = list.getIndex(args, 2);
  4508. plot = plot.getFromId(plot_id, world);
  4509. if(plot == null) {
  4510. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4511. goto("wait");
  4512. }
  4513. }
  4514. if(!perm.has(player, "plot.other")) {
  4515. if(!world.canUsePlots(world)) {
  4516. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4517. goto("wait");
  4518. }
  4519. player_id = player.getId(player);
  4520. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4521. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4522. goto("wait");
  4523. }
  4524. if(player_name == p_name) {
  4525. msg.prefix(player, prefix_plot, "You can't kick yourself.");
  4526. goto("wait");
  4527. }
  4528. p_id = player.getId(p_uuid);
  4529. if(plot.isLeader(plot, p_id)) {
  4530. msg.prefix(player, prefix_plot, "You can't kick the plot-leader.");
  4531. goto("wait");
  4532. }
  4533. }
  4534. plot.removePlayer(plot, p_name);
  4535. msg.prefix(player, prefix_plot, concat(p_name, " removed from this plot."));
  4536. goto("wait");
  4537. }
  4538. if(arg0 == "name") {
  4539. if(size < 2) {
  4540. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  4541. goto("wait");
  4542. }
  4543. location = entity.getLocation(player);
  4544. world = loc.getWorld(location);
  4545. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  4546. if(size == 2) {
  4547. plot_list = plot.get(location);
  4548. amount = list.getSize(plot_list);
  4549. if(amount == 0) {
  4550. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4551. goto("wait");
  4552. }
  4553. plot = list.getIndex(plot_list, 0);
  4554. name = list.getIndex(args, 1);
  4555. if(amount > 1) {
  4556. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4557. for(i = 0; i < amount; i++) {
  4558. plot = list.getIndex(plot_list, i);
  4559. plot_id = plot.getId(plot);
  4560. 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)));
  4561. }
  4562. goto("wait");
  4563. }
  4564. }
  4565. if(size > 2) {
  4566. plot_id = list.getIndex(args, 1);
  4567. if(isDouble(plot_id)) {
  4568. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  4569. plot = plot.getFromId(plot_id, world);
  4570. if(plot == null) {
  4571. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4572. goto("wait");
  4573. }
  4574. name = text.concatList(args, " ", 2, size - 1);
  4575. } else {
  4576. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  4577. name = text.concatList(args, " ", 1, size - 1);
  4578. plot_list = plot.get(location);
  4579. amount = list.getSize(plot_list);
  4580. if(amount == 0) {
  4581. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4582. goto("wait");
  4583. }
  4584. plot = list.getIndex(plot_list, 0);
  4585. if(amount > 1) {
  4586. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4587. for(i = 0; i < amount; i++) {
  4588. plot = list.getIndex(plot_list, i);
  4589. plot_id = plot.getId(plot);
  4590. 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)));
  4591. }
  4592. goto("wait");
  4593. }
  4594. }
  4595. }
  4596. if(!perm.has(player, "plot.other")) {
  4597. if(!world.canUsePlots(world)) {
  4598. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4599. goto("wait");
  4600. }
  4601. player_id = player.getId(player);
  4602. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4603. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4604. goto("wait");
  4605. }
  4606. }
  4607. plot.setName(plot, name);
  4608. msg.prefix(player, prefix_plot, concat("Plot renamed to ", name, "."));
  4609. goto("wait");
  4610. }
  4611. if(arg0 == "create" || arg0 == "create3d") {
  4612. player_id = player.getId(player);
  4613. loc1 = map.get(plotpos1, player_id);
  4614. loc2 = map.get(plotpos2, player_id);
  4615. if(loc1 == null || loc2 == null) {
  4616. msg.prefix(player, prefix_plot, "No corner points set.");
  4617. goto("wait");
  4618. }
  4619. world1 = loc.getWorld(loc1);
  4620. if(world1 != loc.getWorld(loc2)) {
  4621. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  4622. goto("wait");
  4623. }
  4624. x1 = loc.getX(loc1);
  4625. y1 = loc.getY(loc1);
  4626. z1 = loc.getZ(loc1);
  4627. x2 = loc.getX(loc2);
  4628. y2 = loc.getY(loc2);
  4629. z2 = loc.getZ(loc2);
  4630. if(arg0 == "create") {
  4631. loc.setY(loc1, 0);
  4632. loc.setY(loc2, 255);
  4633. }
  4634. create_message = "Plot created.";
  4635. sub_plot = false;
  4636. if(!perm.has(player, "plot.other")) {
  4637. world_name = world.getName(world1);
  4638. if(!world.canUsePlots(world1)) {
  4639. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  4640. goto("wait");
  4641. }
  4642. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  4643. if(list.getSize(list) > 0) {
  4644. city_plot = list.getIndex(list, 0);
  4645. if(plot.isCity(city_plot)) {
  4646. if(!plot.isLeader(city_plot, player_id) && !plot.isMod(city_plot, player_id)) {
  4647. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4648. goto("wait");
  4649. }
  4650. city_id = plot.getId(city_plot);
  4651. if(!loc.hasPlotId(loc1, city_id)) {
  4652. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  4653. goto("wait");
  4654. }
  4655. if(!loc.hasPlotId(loc2, city_id)) {
  4656. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  4657. goto("wait");
  4658. }
  4659. sub_plot = true;
  4660. } else {
  4661. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  4662. goto("wait");
  4663. }
  4664. }
  4665. if(!sub_plot) {
  4666. //Calc costs
  4667. length = math.abs(x1 - x2) + 1;
  4668. width = math.abs(z1 - z2) + 1;
  4669. if(length < 3 || width < 3) {
  4670. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  4671. goto("wait");
  4672. }
  4673. snuvis = plot.calcCost(world1, length, width);
  4674. free_plot_used = player.usedHisFreePlot(player_id);
  4675. if(!free_plot_used && world_name != "creative") {
  4676. snuvis -= plot.calcCost(world1, 16, 16);
  4677. if(snuvis < 0) {
  4678. snuvis = 0;
  4679. }
  4680. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  4681. }
  4682. if(!hasEnoughMoney(player, snuvis)) {
  4683. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4684. goto("wait");
  4685. }
  4686. create_message = concat("Plot created. Spent §6", text.number(snuvis), "§r snuvis.");
  4687. subMoney(player, snuvis);
  4688. if(!free_plot_used && world_name != "creative") {
  4689. player.setUsedFreePlot(player_id, true);
  4690. offerRank(player, "rank.settler");
  4691. }
  4692. if(!player.hasBigPlotCreated(player)) {
  4693. plot_size = length * width;
  4694. if(plot_size >= 900) {
  4695. offerRank(player, "rank.colonizer");
  4696. player.setBigPlotCreated(player, true);
  4697. }
  4698. }
  4699. }
  4700. }
  4701. //Create plot
  4702. map.remove(plotpos1, player_id);
  4703. map.remove(plotpos2, player_id);
  4704. plot = plot.add(loc1, loc2);
  4705. if(sub_plot) {
  4706. plot.setSub(plot, true);
  4707. }
  4708. plot.setMoveEvent(plot, world1);
  4709. plot.setName(plot, concat(player_name, "'s plot"));
  4710. plot.addPlayer(plot, player_name);
  4711. plot.setLeader(plot, player_id);
  4712. msg.prefix(player, prefix_plot, create_message);
  4713. goto("wait");
  4714. }
  4715. if(arg0 == "pos1" || arg0 == "pos2") {
  4716. loc = entity.getLocation(player);
  4717. loc = getBlockLocation(loc);
  4718. player_id = player.getId(player);
  4719. if(arg0 == "pos1") {
  4720. map.add(plotpos1, player_id, loc);
  4721. pos_string = "Pos1";
  4722. } elseif(arg0 == "pos2") {
  4723. map.add(plotpos2, player_id, loc);
  4724. pos_string = "Pos2";
  4725. }
  4726. x = text.number(loc.getX(loc));
  4727. y = text.number(loc.getY(loc));
  4728. z = text.number(loc.getZ(loc));
  4729. msg.prefix(player, prefix_plot, concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  4730. loc1 = map.get(plotpos1, player_id);
  4731. loc2 = map.get(plotpos2, player_id);
  4732. if(loc1 != null && loc2 != null) {
  4733. world1 = loc.getWorld(loc1);
  4734. snuvis = plot.calcCost(world1, loc1, loc2);
  4735. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  4736. snuvis -= plot.calcCost(world1, 16, 16);
  4737. if(snuvis < 0) {
  4738. snuvis = 0;
  4739. }
  4740. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  4741. }
  4742. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  4743. snuvis = 0;
  4744. }
  4745. msg.prefix(player, prefix_plot, concat("This plot will cost §6", text.number(snuvis), "§r snuvis."));
  4746. }
  4747. goto("wait");
  4748. }
  4749. if(arg0 == "flags") {
  4750. if(!perm.has(player, "plot.moreinfo")) {
  4751. perm.no(player, "plot.moreinfo");
  4752. goto("wait");
  4753. }
  4754. if(size < 3 || size > 4) {
  4755. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  4756. goto("wait");
  4757. }
  4758. flags = list.getIndex(args, 1);
  4759. if(!isDouble(flags) || flags < 0) {
  4760. msg.prefix(player, prefix_commands, "Positive number expected.");
  4761. goto("wait");
  4762. }
  4763. boolean = list.getIndex(args, 2);
  4764. if(!(boolean == true || boolean == false)) {
  4765. msg.prefix(player, prefix_commands, "Boolean expected.");
  4766. goto("wait");
  4767. }
  4768. location = entity.getLocation(player);
  4769. world = loc.getWorld(location);
  4770. if(size == 3) {
  4771. plot_list = plot.get(location);
  4772. amount = list.getSize(plot_list);
  4773. if(amount == 0) {
  4774. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4775. goto("wait");
  4776. }
  4777. plot = list.getIndex(plot_list, 0);
  4778. if(amount > 1) {
  4779. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4780. for(i = 0; i < amount; i++) {
  4781. plot = list.getIndex(plot_list, i);
  4782. plot_id = plot.getId(plot);
  4783. x = loc.getX(location);
  4784. y = loc.getY(location);
  4785. z = loc.getZ(location);
  4786. 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)));
  4787. }
  4788. goto("wait");
  4789. }
  4790. } else {
  4791. plot_id = list.getIndex(args, 3);
  4792. plot = plot.getFromId(plot_id, world);
  4793. if(plot == null) {
  4794. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4795. goto("wait");
  4796. }
  4797. }
  4798. flags_list = list.new();
  4799. temp_flags = 0;
  4800. if(flags >= 512) {
  4801. list.add(flags_list, "SUB_PLOT_FLAG");
  4802. temp_flags += 512;
  4803. }
  4804. if(flags >= 256) {
  4805. list.add(flags_list, "FREE_FLAG");
  4806. temp_flags += 256;
  4807. }
  4808. if(flags >= 128) {
  4809. list.add(flags_list, "CITY_FLAG");
  4810. temp_flags += 128;
  4811. }
  4812. if(flags >= 64) {
  4813. list.add(flags_list, "EXPLOSION_FLAG");
  4814. temp_flags += 64;
  4815. }
  4816. if(flags >= 32) {
  4817. list.add(flags_list, "ENTITY_INTERACT_FLAG");
  4818. temp_flags += 32;
  4819. }
  4820. if(flags >= 16) {
  4821. list.add(flags_list, "BLOCK_INTERACT_FLAG");
  4822. temp_flags += 16;
  4823. }
  4824. if(flags >= 8) {
  4825. list.add(flags_list, "HIT_AMBIENT_FLAG");
  4826. temp_flags += 8;
  4827. }
  4828. if(flags >= 4) {
  4829. list.add(flags_list, "BUCKET_FLAG");
  4830. temp_flags += 4;
  4831. }
  4832. if(flags >= 2) {
  4833. list.add(flags_list, "BREAK_FLAG");
  4834. temp_flags += 2;
  4835. }
  4836. if(flags >= 1) {
  4837. list.add(flags_list, "PLACE_FLAG");
  4838. temp_flags += 1;
  4839. }
  4840. plot.setFlags(plot, flags, boolean);
  4841. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  4842. goto("wait");
  4843. }
  4844. if(arg0 == "list") {
  4845. if(size == 1) {
  4846. p_name = player.getName(player);
  4847. } else {
  4848. if(!perm.has(player, "plot.moreinfo")) {
  4849. perm.no(player, "plot.moreinfo");
  4850. goto("wait");
  4851. }
  4852. p_name = list.getIndex(args, 1);
  4853. }
  4854. p_uuid = player.getUuid(p_name);
  4855. if(p_uuid == null) {
  4856. msg.prefix(player, prefix_plot, "This player has never been online.");
  4857. goto("wait");
  4858. }
  4859. p_name = player.getName(p_uuid);
  4860. msg.prefix(player, prefix_commands, concat(p_name, "'s plots:"));
  4861. world = loc.getWorld(entity.getLocation(player));
  4862. iter = plot.iterator(world, p_uuid);
  4863. while(hasNext(iter)) {
  4864. plot = next(iter);
  4865. msg(player, concat(" - #", text.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  4866. }
  4867. goto("wait");
  4868. }
  4869. if(arg0 == "listall") {
  4870. if(!perm.has(player, "plot.moreinfo")) {
  4871. perm.no(player, "plot.moreinfo");
  4872. goto("wait");
  4873. }
  4874. if(size != 1) {
  4875. msg.prefix(player, prefix_commands, "/plot listall");
  4876. goto("wait");
  4877. }
  4878. world = loc.getWorld(entity.getLocation(player));
  4879. msg.prefix(player, prefix_commands, concat("All plots in this world: ", world.getName(world)));
  4880. iterator = plot.iterator(world);
  4881. while(hasNext(iterator)) {
  4882. plot = next(iterator);
  4883. plot_id = plot.getId(plot);
  4884. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  4885. }
  4886. goto("wait");
  4887. }
  4888. if(arg0 == "moreinfo" || arg0 == "mi") {
  4889. if(!perm.has(player, "plot.moreinfo")) {
  4890. perm.no(player, "plot.moreinfo");
  4891. goto("wait");
  4892. }
  4893. location = entity.getLocation(player);
  4894. world = loc.getWorld(location);
  4895. if(size == 1) {
  4896. plot_list = plot.get(location);
  4897. amount = list.getSize(plot_list);
  4898. if(amount == 0) {
  4899. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4900. goto("wait");
  4901. }
  4902. plot = list.getIndex(plot_list, 0);
  4903. if(amount > 1) {
  4904. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4905. for(i = 0; i < amount; i++) {
  4906. plot = list.getIndex(plot_list, i);
  4907. plot_id = plot.getId(plot);
  4908. msg(player, text.click(" [§cSelect§r] ", concat("/plot moreinfo ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  4909. }
  4910. goto("wait");
  4911. }
  4912. } else {
  4913. if(size != 2) {
  4914. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  4915. goto("wait");
  4916. }
  4917. plot_id = list.getIndex(args, 1);
  4918. plot = plot.getFromId(plot_id, world);
  4919. if(plot == null) {
  4920. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4921. goto("wait");
  4922. }
  4923. }
  4924. owners = "";
  4925. owners_list = plot.getOwners(plot);
  4926. copy_list = list.copy(owners_list);
  4927. plot_id = plot.getId(plot);
  4928. msg.prefix(player, prefix_plot, concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  4929. msg(player, " §dWorld: §r", world.getName(world));
  4930. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  4931. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  4932. leader_name = plot.getLeaderName(plot);
  4933. if(leader_name == "") {
  4934. leader_name = "-";
  4935. }
  4936. msg(player, " §dLeader: §r", leader_name);
  4937. list.remove(copy_list, player.getUuid(leader_name));
  4938. mods_list = plot.getMods(plot);
  4939. mods_amount = list.getSize(mods_list);
  4940. if(mods_amount == 0) {
  4941. mods_string = "-";
  4942. } else {
  4943. iter = list.iterator(mods_list);
  4944. mods_string = "";
  4945. while(hasNext(iter)) {
  4946. p_name = player.getNameFromId(next(iter));
  4947. p_uuid = player.getUuid(p_name);
  4948. list.remove(copy_list, p_uuid);
  4949. if(mods_string == "") {
  4950. mods_string = p_name;
  4951. } else {
  4952. mods_string = concat(mods_string, " / ", p_name);
  4953. }
  4954. }
  4955. }
  4956. msg(player, " §dMods: §r", mods_string);
  4957. members_amount = list.getSize(copy_list);
  4958. if(members_amount == 0) {
  4959. members_string = "-";
  4960. } else {
  4961. iter = list.iterator(copy_list);
  4962. members_string = "";
  4963. while(hasNext(iter)) {
  4964. p_name = player.getName(next(iter));
  4965. if(members_string == "") {
  4966. members_string = p_name;
  4967. } else {
  4968. members_string = concat(members_string, " / ", p_name);
  4969. }
  4970. }
  4971. }
  4972. msg(player, " §dMembers: §r", members_string);
  4973. chests_list = plot.getChestRanks(plot);
  4974. chests_amount = list.getSize(chests_list);
  4975. if(chests_amount == 0) {
  4976. chests_string = "-";
  4977. } else {
  4978. iter = list.iterator(chests_list);
  4979. chests_string = "";
  4980. while(hasNext(iter)) {
  4981. p_name = player.getNameFromId(next(iter));
  4982. if(chests_string == "") {
  4983. chests_string = p_name;
  4984. } else {
  4985. chests_string = concat(chests_string, " / ", p_name);
  4986. }
  4987. }
  4988. }
  4989. msg(player, " §dOnly chest: §r", chests_string);
  4990. flags = plot.getFlags(plot);
  4991. flags_true = list.new();
  4992. flags_false = list.new();
  4993. array = array.new(2);
  4994. array[0] = 512;
  4995. array[1] = "SUB_PLOT_FLAG";
  4996. if(flags >= 512) {
  4997. list.add(flags_true, array);
  4998. flags -= 512;
  4999. } else {
  5000. list.add(flags_false, array);
  5001. }
  5002. array = array.new(2);
  5003. array[0] = 256;
  5004. array[1] = "FREE_FLAG";
  5005. if(flags >= 256) {
  5006. list.add(flags_true, array);
  5007. flags -= 256;
  5008. } else {
  5009. list.add(flags_false, array);
  5010. }
  5011. array = array.new(2);
  5012. array[0] = 128;
  5013. array[1] = "CITY_FLAG";
  5014. if(flags >= 128) {
  5015. list.add(flags_true, array);
  5016. flags -= 128;
  5017. } else {
  5018. list.add(flags_false, array);
  5019. }
  5020. array = array.new(2);
  5021. array[0] = 64;
  5022. array[1] = "EXPLOSION_FLAG";
  5023. if(flags >= 64) {
  5024. list.add(flags_true, array);
  5025. flags -= 64;
  5026. } else {
  5027. list.add(flags_false, array);
  5028. }
  5029. array = array.new(2);
  5030. array[0] = 32;
  5031. array[1] = "ENTITY_INTERACT_FLAG";
  5032. if(flags >= 32) {
  5033. list.add(flags_true, array);
  5034. flags -= 32;
  5035. } else {
  5036. list.add(flags_false, array);
  5037. }
  5038. array = array.new(2);
  5039. array[0] = 16;
  5040. array[1] = "BLOCK_INTERACT_FLAG";
  5041. if(flags >= 16) {
  5042. list.add(flags_true, array);
  5043. flags -= 16;
  5044. } else {
  5045. list.add(flags_false, array);
  5046. }
  5047. array = array.new(2);
  5048. array[0] = 8;
  5049. array[1] = "HIT_AMBIENT_FLAG";
  5050. if(flags >= 8) {
  5051. list.add(flags_true, array);
  5052. flags -= 8;
  5053. } else {
  5054. list.add(flags_false, array);
  5055. }
  5056. array = array.new(2);
  5057. array[0] = 4;
  5058. array[1] = "BUCKET_FLAG";
  5059. if(flags >= 4) {
  5060. list.add(flags_true, array);
  5061. flags -= 4;
  5062. } else {
  5063. list.add(flags_false, array);
  5064. }
  5065. array = array.new(2);
  5066. array[0] = 2;
  5067. array[1] = "BREAK_FLAG";
  5068. if(flags >= 2) {
  5069. list.add(flags_true, array);
  5070. flags -= 2;
  5071. } else {
  5072. list.add(flags_false, array);
  5073. }
  5074. array = array.new(2);
  5075. array[0] = 1;
  5076. array[1] = "PLACE_FLAG";
  5077. if(flags >= 1) {
  5078. list.add(flags_true, array);
  5079. } else {
  5080. list.add(flags_false, array);
  5081. }
  5082. x = loc.getX(location);
  5083. y = loc.getY(location);
  5084. z = loc.getZ(location);
  5085. msg(player, " §dFlags true:");
  5086. iter = list.iterator(flags_true);
  5087. while(hasNext(iter)) {
  5088. array = next(iter);
  5089. flag_number = array[0];
  5090. flag_name = array[1];
  5091. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " false ", plot_id)));
  5092. }
  5093. msg(player, " §dFlags false:");
  5094. iter = list.iterator(flags_false);
  5095. while(hasNext(iter)) {
  5096. array = next(iter);
  5097. flag_number = array[0];
  5098. flag_name = array[1];
  5099. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " true ", plot_id)));
  5100. }
  5101. goto("wait");
  5102. }
  5103. if(arg0 == "info" || arg0 == "i") {
  5104. location = entity.getLocation(player);
  5105. list = plot.get(location);
  5106. world = loc.getWorld(location);
  5107. size = list.getSize(list);
  5108. if(size == 0) {
  5109. msg.prefix(player, prefix_plot, "No plots found.");
  5110. goto("wait");
  5111. }
  5112. if(size == 1) {
  5113. msg.prefix(player, prefix_plot, concat(text.number(size), " plot found:"));
  5114. } else {
  5115. msg.prefix(player, prefix_plot, concat(text.number(size), " plots found:"));
  5116. }
  5117. for(i = 0; i < size; i++) {
  5118. plot = list.getIndex(list, i);
  5119. plot_id = plot.getId(plot);
  5120. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5121. owners_list = plot.getOwners(plot);
  5122. copy_list = list.copy(owners_list);
  5123. plot_id = plot.getId(plot);
  5124. msg(player, " §dWorld: §r", world.getName(world));
  5125. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5126. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5127. leader_name = plot.getLeaderName(plot);
  5128. if(leader_name == "") {
  5129. leader_name = "-";
  5130. }
  5131. msg(player, " §dLeader: §r", leader_name);
  5132. list.remove(copy_list, player.getUuid(leader_name));
  5133. mods_list = plot.getMods(plot);
  5134. mods_amount = list.getSize(mods_list);
  5135. if(mods_amount == 0) {
  5136. mods_string = "-";
  5137. } else {
  5138. iter = list.iterator(mods_list);
  5139. mods_string = "";
  5140. while(hasNext(iter)) {
  5141. p_name = player.getNameFromId(next(iter));
  5142. p_uuid = player.getUuid(p_name);
  5143. list.remove(copy_list, p_uuid);
  5144. if(mods_string == "") {
  5145. mods_string = p_name;
  5146. } else {
  5147. mods_string = concat(mods_string, " / ", p_name);
  5148. }
  5149. }
  5150. }
  5151. msg(player, " §dMods: §r", mods_string);
  5152. members_amount = list.getSize(copy_list);
  5153. if(members_amount == 0) {
  5154. members_string = "-";
  5155. } else {
  5156. iter = list.iterator(copy_list);
  5157. members_string = "";
  5158. while(hasNext(iter)) {
  5159. p_name = player.getName(next(iter));
  5160. if(members_string == "") {
  5161. members_string = p_name;
  5162. } else {
  5163. members_string = concat(members_string, " / ", p_name);
  5164. }
  5165. }
  5166. }
  5167. msg(player, " §dMembers: §r", members_string);
  5168. chests_list = plot.getChestRanks(plot);
  5169. chests_amount = list.getSize(chests_list);
  5170. if(chests_amount == 0) {
  5171. chests_string = "-";
  5172. } else {
  5173. iter = list.iterator(chests_list);
  5174. chests_string = "";
  5175. while(hasNext(iter)) {
  5176. p_name = player.getNameFromId(next(iter));
  5177. if(chests_string == "") {
  5178. chests_string = p_name;
  5179. } else {
  5180. chests_string = concat(chests_string, " / ", p_name);
  5181. }
  5182. }
  5183. }
  5184. msg(player, " §dOnly chest: §r", chests_string);
  5185. }
  5186. goto("wait");
  5187. }
  5188. goto("plothelp");
  5189. @stopadventure
  5190. removeAdventureDisplay(player);
  5191. player.setAdventure(player, false);
  5192. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  5193. goto("wait");
  5194. @speed
  5195. if(size < 1 || size > 2) {
  5196. if(perm.has(player, "speed.other")) {
  5197. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  5198. } else {
  5199. msg.prefix(player, prefix_commands, "/speed <1-10>");
  5200. }
  5201. goto("wait");
  5202. }
  5203. speed = list.getIndex(args, 0);
  5204. if(!isDouble(speed)) {
  5205. msg.prefix(player, prefix_commands, "Zahl erwartet.");
  5206. goto("wait");
  5207. }
  5208. if(speed < 1) {
  5209. speed = 1;
  5210. }
  5211. if(speed > 10) {
  5212. speed = 10;
  5213. }
  5214. if(size == 2) {
  5215. if(!perm.has(player, "speed.other")) {
  5216. perm.no(player, "speed.other");
  5217. goto("wait");
  5218. }
  5219. affectedname = list.getIndex(args, 1);
  5220. affectedplayer = read.player(affectedname);
  5221. if(affectedplayer == null) {
  5222. msg.prefix(player, prefix_commands, "This player is not online.");
  5223. goto("wait");
  5224. }
  5225. }
  5226. player.setSpeed(affectedplayer, speed);
  5227. msg.prefix(affectedplayer, prefix_commands, concat("Set your speed to ", text.number(speed), "."));
  5228. if(affectedplayer != player) {
  5229. affectedname = player.getName(affectedplayer);
  5230. msg.prefix(player, prefix_commands, concat(affectedname, " set your speed to ", text.number(speed), "."));
  5231. }
  5232. goto("wait");
  5233. @butcher
  5234. loc = entity.getLocation(player);
  5235. world = loc.getWorld(loc);
  5236. list = world.getEntities(world);
  5237. size = list.getSize(list);
  5238. killed = 0;
  5239. for(i = 0; i < size; i++) {
  5240. element = list.getIndex(list, i);
  5241. if(isLiving(element)) {
  5242. entity_type = entity.getType(element);
  5243. if(set.contains(butcher_set, entity_type)) {
  5244. entity.remove(element);
  5245. killed++;
  5246. }
  5247. }
  5248. }
  5249. msg.prefix(player, prefix_commands, concat(text.number(killed), " mobs killed."));
  5250. goto("wait");
  5251. @enderchest
  5252. if(size < 1 || size > 2) {
  5253. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  5254. goto("wait");
  5255. }
  5256. if(size == 1) {
  5257. from_name = list.getIndex(args, 0);
  5258. }
  5259. elseif(size == 2) {
  5260. affectedname = list.getIndex(args, 0);
  5261. from_name = list.getIndex(args, 1);
  5262. affectedplayer = read.player(affectedname);
  5263. if(affectedplayer == null) {
  5264. msg.prefix(player, prefix_commands, "This player is not online.");
  5265. goto("wait");
  5266. }
  5267. }
  5268. from_player = read.player(from_name);
  5269. if(from_player == null) {
  5270. msg.prefix(player, prefix_commands, "This player is not online.");
  5271. goto("wait");
  5272. }
  5273. player.openEnderchest(affectedplayer, from_player, concat("Enderchest von ", from_name));
  5274. goto("wait");
  5275. @gamemode
  5276. if(size < 1 || size > 2) {
  5277. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  5278. goto("wait");
  5279. }
  5280. if(size == 2) {
  5281. if(!perm.has(player, "gamemode.other")) {
  5282. perm.no(player, "gamemode.other");
  5283. goto("wait");
  5284. }
  5285. affectedname = list.getIndex(args, 1);
  5286. affectedplayer = read.player(affectedname);
  5287. if(affectedplayer == null) {
  5288. msg.prefix(player, prefix_commands, "This player is not online.");
  5289. goto("wait");
  5290. }
  5291. }
  5292. mode = list.getIndex(args, 0);
  5293. if(isDouble(mode)) {
  5294. mode = text.number(mode);
  5295. } else {
  5296. mode = text.toLowerCase(mode);
  5297. }
  5298. if(mode == "s" || mode == "0" || mode == "survival") {
  5299. mode = "survival";
  5300. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  5301. mode = "creative";
  5302. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  5303. mode = "adventure";
  5304. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  5305. mode = "spectator";
  5306. } else {
  5307. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  5308. goto("wait");
  5309. }
  5310. player.setGamemode(affectedplayer, mode);
  5311. if(affectedplayer != player) {
  5312. affectedname = player.getName(affectedplayer);
  5313. msg.prefix(player, prefix_commands, concat("Gamemode of ", affectedname, " set to ", mode, "."));
  5314. }
  5315. msg.prefix(affectedplayer, prefix_commands, concat("Set your gamemode to ", mode, "."));
  5316. goto("wait");
  5317. @home
  5318. if(size == 0) {
  5319. @homesyntax
  5320. msg.prefix(player, prefix_commands, "/home ...");
  5321. msg(player, "§6 - set <home> §rSets a home");
  5322. msg(player, "§6 - delete <home> §rDeletes a home");
  5323. if(perm.has(player, "home.other")) {
  5324. msg(player, "§6 - list [player] §rLists all homes");
  5325. msg(player, "§6 - <home> [player] §rTeleports to a home");
  5326. } else {
  5327. msg(player, "§6 - list §rLists your homes");
  5328. msg(player, "§6 - <home> §rTeleports to your home");
  5329. }
  5330. goto("wait");
  5331. }
  5332. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5333. if(arg0 == "del" || arg0 == "delete") {
  5334. if(size < 2) {
  5335. goto("homesyntax");
  5336. }
  5337. player_id = player.getId(player);
  5338. name = text.toLowerCase(list.getIndex(args, 1));
  5339. if(!home.exists(player_id, name)) {
  5340. msg.prefix(player, prefix_commands, concat("Home ", name, "doesn't exist."));
  5341. goto("wait");
  5342. }
  5343. home.delete(player_id, name);
  5344. msg.prefix(player, prefix_commands, concat("Home ", name, " deleted."));
  5345. goto("wait");
  5346. }
  5347. if(arg0 == "list") {
  5348. affecteduuid = player.getUuid(affectedname);
  5349. if(size == 2) {
  5350. if(!perm.has(player, "home.other")) {
  5351. perm.no(player, "home.other");
  5352. goto("wait");
  5353. }
  5354. affectedname = text.toLowerCase(list.getIndex(args, 1));
  5355. affecteduuid = player.getUuid(affectedname);
  5356. if(affecteduuid == null) {
  5357. msg.prefix(player, prefix_commands, "This player has never been online.");
  5358. goto("wait");
  5359. }
  5360. }
  5361. id = player.getId(affecteduuid);
  5362. homes_list = home.getList(id);
  5363. home_amount = list.getSize(homes_list);
  5364. if(home_amount == 0) {
  5365. msg.prefix(player, prefix_commands, "No homes existing.");
  5366. } else {
  5367. msg.prefix(player, prefix_commands, concat("Homes of ", affectedname, ":"));
  5368. for(i = 0; i < home_amount; i++) {
  5369. msg(player, concat("§6 - §r", list.getIndex(homes_list, i)));
  5370. }
  5371. }
  5372. goto("wait");
  5373. }
  5374. location = entity.getLocation(player);
  5375. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5376. if(!isSurvWorldName(world_name)) {
  5377. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  5378. goto("wait");
  5379. }
  5380. if(arg0 == "set") {
  5381. if(size < 2) {
  5382. goto("homesyntax");
  5383. }
  5384. player_id = player.getId(player);
  5385. homes_list = home.getList(player_id);
  5386. home_amount = list.getSize(homes_list);
  5387. if(perm.has(player, "isAdmin")) {
  5388. max_homes = 100;
  5389. } elseif(perm.has(player, "isMod")) {
  5390. max_homes = 40;
  5391. } elseif(perm.has(player, "isTeam")) {
  5392. max_homes = 20;
  5393. } elseif(perm.has(player, "canTP")) {
  5394. max_homes = 10;
  5395. } else {
  5396. max_homes = 5;
  5397. }
  5398. if(home_amount >= max_homes) {
  5399. msg.prefix(player, prefix_commands, concat("You can only set ", text.number(max_homes), " homes."));
  5400. goto("wait");
  5401. }
  5402. name = text.toLowerCase(list.getIndex(args, 1));
  5403. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  5404. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  5405. goto("wait");
  5406. }
  5407. if(!text.onlyletters(name)) {
  5408. msg.prefix(player, prefix_commands, "Only letters allowed.");
  5409. goto("wait");
  5410. }
  5411. if(text.length(name) > 20) {
  5412. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  5413. goto("wait");
  5414. }
  5415. if(home.exists(player_id, name)) {
  5416. msg.prefix(player, prefix_commands, concat("Home ", name, " already exists."));
  5417. goto("wait");
  5418. }
  5419. home.set(player_id, name, location);
  5420. msg.prefix(player, prefix_commands, concat("Home ", name, " set."));
  5421. goto("wait");
  5422. }
  5423. //Teleportation
  5424. if(size == 2) {
  5425. affectedname = text.toLowerCase(list.getIndex(args, 1));
  5426. }
  5427. affecteduuid = player.getUuid(affectedname);
  5428. if(affecteduuid == null) {
  5429. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  5430. goto("wait");
  5431. }
  5432. player_id = player.getID(affecteduuid);
  5433. location = home.getLocation(player_id, arg0);
  5434. if(location == null) {
  5435. msg.prefix(player, prefix_commands, "Home doesn't exist."); //oder die welt ist nicht geladen
  5436. goto("wait");
  5437. }
  5438. player.teleport(player, location, true);
  5439. goto("wait");
  5440. @tpa
  5441. if(size != 1) {
  5442. msg.prefix(player, prefix_commands, "/tpa <player>");
  5443. goto("wait");
  5444. }
  5445. p_name = list.getIndex(args, 0);
  5446. p_uuid = player.getUuid(p_name);
  5447. if(p_uuid == null) {
  5448. msg.prefix(player, prefix_commands, "This player has never been online.");
  5449. goto("wait");
  5450. }
  5451. p_name = player.getName(p_uuid);
  5452. p = read.player(p_name);
  5453. if(p == null) {
  5454. msg.prefix(player, prefix_commands, "This player is not online.");
  5455. goto("wait");
  5456. }
  5457. if(!player.doesAcceptTpaRequests(p)) {
  5458. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  5459. goto("wait");
  5460. }
  5461. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5462. if(isGamesWorldName(world_name)) {
  5463. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5464. goto("wait");
  5465. }
  5466. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5467. if(isGamesWorldName(world_name)) {
  5468. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5469. goto("wait");
  5470. }
  5471. addTpaRequest(player.getUuid(player), p_uuid);
  5472. msg(player, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  5473. msg(p, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccept ", player_name)));
  5474. goto("wait");
  5475. @tpahere
  5476. if(size != 1) {
  5477. msg.prefix(player, prefix_commands, "/tpahere <player>");
  5478. goto("wait");
  5479. }
  5480. p_name = list.getIndex(args, 0);
  5481. p_uuid = player.getUuid(p_name);
  5482. if(p_uuid == null) {
  5483. msg.prefix(player, prefix_commands, "This player has never been online.");
  5484. goto("wait");
  5485. }
  5486. p_name = player.getName(p_uuid);
  5487. p = read.player(p_name);
  5488. if(p == null) {
  5489. msg.prefix(player, prefix_commands, "This player is not online.");
  5490. goto("wait");
  5491. }
  5492. if(!player.doesAcceptTpaRequests(p)) {
  5493. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  5494. goto("wait");
  5495. }
  5496. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5497. if(isGamesWorldName(world_name)) {
  5498. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to this world."));
  5499. goto("wait");
  5500. }
  5501. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5502. if(isGamesWorldName(world_name)) {
  5503. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  5504. goto("wait");
  5505. }
  5506. addTpaRequest(p_uuid, player.getUuid(player));
  5507. msg(player, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  5508. msg(p, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccepthere ", player_name)));
  5509. goto("wait");
  5510. @tpaccept
  5511. if(size != 1) {
  5512. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  5513. goto("wait");
  5514. }
  5515. p_name = list.getIndex(args, 0);
  5516. p_uuid = player.getUuid(p_name);
  5517. if(p_uuid == null) {
  5518. msg.prefix(player, prefix_commands, "This player has never been online.");
  5519. goto("wait");
  5520. }
  5521. p_name = player.getName(p_uuid);
  5522. p = read.player(p_name);
  5523. if(p == null) {
  5524. msg.prefix(player, prefix_commands, "This player is not online.");
  5525. goto("wait");
  5526. }
  5527. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5528. if(isGamesWorldName(world_name)) {
  5529. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to your world."));
  5530. goto("wait");
  5531. }
  5532. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5533. if(isGamesWorldName(world_name)) {
  5534. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  5535. goto("wait");
  5536. }
  5537. player_uuid = player.getUuid(player);
  5538. if(!hasTpaRequest(p_uuid, player_uuid)) {
  5539. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  5540. goto("wait");
  5541. }
  5542. location = entity.getLocation(player);
  5543. player.teleport(p, location, true);
  5544. goto("wait");
  5545. @tpaccepthere
  5546. if(size != 1) {
  5547. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  5548. goto("wait");
  5549. }
  5550. p_name = list.getIndex(args, 0);
  5551. p_uuid = player.getUuid(p_name);
  5552. if(p_uuid == null) {
  5553. msg.prefix(player, prefix_commands, "This player has never been online.");
  5554. goto("wait");
  5555. }
  5556. p_name = player.getName(p_uuid);
  5557. p = read.player(p_name);
  5558. if(p == null) {
  5559. msg.prefix(player, prefix_commands, "This player is not online.");
  5560. goto("wait");
  5561. }
  5562. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5563. if(isGamesWorldName(world_name)) {
  5564. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5565. goto("wait");
  5566. }
  5567. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5568. if(isGamesWorldName(world_name)) {
  5569. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5570. goto("wait");
  5571. }
  5572. player_uuid = player.getUuid(player);
  5573. if(!hasTpaRequest(player_uuid, p_uuid)) {
  5574. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  5575. goto("wait");
  5576. }
  5577. location = entity.getLocation(p);
  5578. player.teleport(player, location, true);
  5579. goto("wait");
  5580. @teleport
  5581. if(size < 1 || size > 2) {
  5582. if(perm.has(player, "teleport.other")) {
  5583. msg.prefix(player, prefix_commands, "/teleport [player] <to-player>");
  5584. } else {
  5585. msg.prefix(player, prefix_commands, "/teleport <player>");
  5586. }
  5587. goto("wait");
  5588. }
  5589. if(size == 1) {
  5590. to_name = list.getIndex(args, 0);
  5591. }
  5592. elseif(size == 2) {
  5593. if(!perm.has(player, "teleport.other")) {
  5594. perm.no(player, "teleport.other");
  5595. goto("wait");
  5596. }
  5597. affectedname = list.getIndex(args, 0);
  5598. affectedplayer = read.player(affectedname);
  5599. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  5600. to_name = list.getIndex(args, 1);
  5601. if(affectedplayer == null) {
  5602. msg.prefix(player, prefix_commands, "This player is not online.");
  5603. goto("wait");
  5604. }
  5605. }
  5606. if(player.hasMinigame(affectedplayer)) {
  5607. if(size == 2) {
  5608. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  5609. } else {
  5610. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  5611. }
  5612. goto("wait");
  5613. }
  5614. to_player = read.player(to_name);
  5615. if(to_player == null) {
  5616. msg.prefix(player, prefix_commands, "This player is not online.");
  5617. goto("wait");
  5618. }
  5619. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  5620. to_name = player.getName(to_player);
  5621. location = entity.getLocation(to_player);
  5622. if(player.teleport(affectedplayer, location, true)) {
  5623. if(player != affectedplayer) {
  5624. affectedname = player.getName(affectedplayer);
  5625. msg.prefix(player, prefix_commands, concat("Teleported ", affectedname, " to ", to_name, "."));
  5626. }
  5627. msg.prefix(affectedplayer, prefix_commands, concat("Teleported you to ", to_name, "."));
  5628. }
  5629. goto("wait");
  5630. @say
  5631. if(size == 0) {
  5632. msg.prefix(sender, prefix_commands, "/say <text>");
  5633. goto("wait");
  5634. }
  5635. message = text.concatList(args, " ", 0, size - 1);
  5636. msg("online", text.hover("[§cServer§r]", "The center of Wusiness"), " ", text.replace(message, "&", "§"));
  5637. msg("SERVER", "[§cServer§r] ", text.replace(message, "&", "§"));
  5638. goto("wait");
  5639. @warp
  5640. if(size == 0) {
  5641. @warpsyntax
  5642. msg.prefix(player, prefix_commands, "/warp ...");
  5643. if(perm.has(player, "warp.create")) {
  5644. msg(player, "§6 - set [group] <warp> §rSets a warp");
  5645. msg(player, "§6 - delete [group] <warp> §rDeletes a warp");
  5646. msg(player, "§6 - [group] <warp> §rTeleports to a warp");
  5647. msg(player, "§6 - list [group] §rLists all warps");
  5648. msg(player, "§6 - groups §rLists all warp groups");
  5649. } else {
  5650. msg(player, "§6 - <warp> §rTeleports to a warp");
  5651. msg(player, "§6 - list §rLists all warps");
  5652. }
  5653. goto("wait");
  5654. }
  5655. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5656. if(arg0 == "delete") {
  5657. if(!perm.has(player, "warp.create")) {
  5658. perm.no(player, "warp.create");
  5659. goto("wait");
  5660. }
  5661. if(size < 2) {
  5662. goto("warpsyntax");
  5663. }
  5664. if(size == 2) {
  5665. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5666. warp_group = "default";
  5667. } else {
  5668. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5669. warp_name = text.toLowerCase(list.getIndex(args, 2));
  5670. }
  5671. if(warp.delete(warp_group, warp_name)) {
  5672. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " deleted."));
  5673. } else {
  5674. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  5675. }
  5676. goto("wait");
  5677. }
  5678. if(arg0 == "list") {
  5679. if(size == 1) {
  5680. warp_group = "default";
  5681. } else {
  5682. if(!perm.has(player, "warp.create")) {
  5683. perm.no(player, "warp.create");
  5684. goto("wait");
  5685. }
  5686. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5687. }
  5688. warps_list = warp.getList(warp_group);
  5689. if(list.getSize(warps_list) == 0) {
  5690. msg.prefix(player, prefix_commands, "No warps existing.");
  5691. } else {
  5692. msg.prefix(player, prefix_commands, concat("§6", warp_group, "§r warps:"));
  5693. for(i = 0; i < list.getSize(warps_list); i++) {
  5694. msg(player, concat("§6 - §r", list.getIndex(warps_list, i)));
  5695. }
  5696. }
  5697. goto("wait");
  5698. }
  5699. if(arg0 == "groups") {
  5700. if(!perm.has(player, "warp.create")) {
  5701. perm.no(player, "warp.create");
  5702. goto("wait");
  5703. }
  5704. groups_list = warp.getGroups();
  5705. msg.prefix(player, prefix_commands, "All warp groups:");
  5706. for(i = 0; i < list.getSize(groups_list); i++) {
  5707. msg(player, concat("§6 - §r", list.getIndex(groups_list, i)));
  5708. }
  5709. goto("wait");
  5710. }
  5711. if(arg0 == "set") {
  5712. if(!perm.has(player, "warp.create")) {
  5713. perm.no(player, "warp.create");
  5714. goto("wait");
  5715. }
  5716. if(size < 2) {
  5717. goto("warpsyntax");
  5718. }
  5719. if(size == 2) {
  5720. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5721. warp_group = "default";
  5722. } else {
  5723. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5724. warp_name = text.toLowerCase(list.getIndex(args, 2));
  5725. }
  5726. if(warp.exists(warp_group, warp_name)) {
  5727. msg.prefix(player, prefix_commands, "Warpname already exists.");
  5728. goto("wait");
  5729. }
  5730. warp.create(warp_group, warp_name, entity.getLocation(player));
  5731. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " set."));
  5732. goto("wait");
  5733. }
  5734. //Teleportation
  5735. if(size == 1) {
  5736. warp_name = arg0;
  5737. warp_group = "default";
  5738. } else {
  5739. if(!perm.has(player, "warp.create")) {
  5740. perm.no(player, "warp.create");
  5741. goto("wait");
  5742. }
  5743. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5744. warp_group = arg0;
  5745. }
  5746. warp_loc = warp.get(warp_group, warp_name);
  5747. if(warp_loc == null) {
  5748. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  5749. goto("wait");
  5750. }
  5751. if(!perm.has(player, "warp.create")) {
  5752. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5753. if(isGamesWorldName(world_name)) {
  5754. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5755. goto("wait");
  5756. }
  5757. world_name = world.getName(loc.getWorld(warp_loc));
  5758. if(isGamesWorldName(world_name)) {
  5759. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5760. goto("wait");
  5761. }
  5762. }
  5763. if(player.teleport(player, warp_loc, true)) {
  5764. msg.prefix(player, prefix_commands, concat("You have been teleported to warp §7", warp_name, "."));
  5765. }
  5766. goto("wait");
  5767. @databank
  5768. if(size == 0) {
  5769. @databankhelp
  5770. msg.prefix(player, prefix_commands, "/databank...");
  5771. msg(player, "§6 - showtables §rShows all tables");
  5772. msg(player, "§6 - showfields §rShows fields from a table");
  5773. msg(player, "§6 - showdataypes §rShows dataypes from a table");
  5774. goto("wait");
  5775. }
  5776. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5777. if(arg0 == "showtables") {
  5778. msg(player, getSpacer());
  5779. stmt = databank.prepare("SHOW TABLES");
  5780. result = databank.execute(stmt);
  5781. while(databank.next(result)) {
  5782. msg(player, databank.getString(result, 1));
  5783. }
  5784. databank.close(result);
  5785. databank.close(stmt);
  5786. goto("wait");
  5787. }
  5788. if(arg0 == "showfields") {
  5789. if(size < 2) {
  5790. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  5791. goto("wait");
  5792. }
  5793. table = list.getIndex(args, 1);
  5794. if(!databank.isExistingTable(table)) {
  5795. msg.prefix(player, prefix_commands, "This in no existing table.");
  5796. goto("wait");
  5797. }
  5798. msg(player, getSpacer());
  5799. fields = databank.getTableFields(table);
  5800. iter = list.iterator(fields);
  5801. while(hasNext(iter)) {
  5802. msg(player, next(iter));
  5803. }
  5804. goto("wait");
  5805. }
  5806. if(arg0 == "showdataypes") {
  5807. if(size < 2) {
  5808. msg.prefix(player, prefix_commands, "/databank showdataypes <table>");
  5809. goto("wait");
  5810. }
  5811. table = list.getIndex(args, 1);
  5812. if(!databank.isExistingTable(table)) {
  5813. msg.prefix(player, prefix_commands, "This in no existing table.");
  5814. goto("wait");
  5815. }
  5816. msg(player, getSpacer());
  5817. msg(player, databank.getTableDatatypes(table));
  5818. goto("wait");
  5819. }
  5820. goto("databankhelp");
  5821. @seen
  5822. if(size != 1) {
  5823. msg.prefix(player, prefix_commands, "/seen <player>");
  5824. goto("wait");
  5825. }
  5826. seen_name = list.getIndex(args, 0);
  5827. seen_uuid = player.getUuid(seen_name);
  5828. if(seen_uuid == null) {
  5829. msg.prefix(player, prefix_commands, "Dieser Spieler war noch nie online.");
  5830. goto("wait");
  5831. }
  5832. if(read.player(seen_name) != null) {
  5833. msg.prefix(player, prefix_commands, "Dieser Spieler ist gerade online.");
  5834. goto("wait");
  5835. }
  5836. seenStatement = databank.prepare("SELECT logouttime FROM logoutdata WHERE player_id = ?;");
  5837. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  5838. result = databank.execute(seenStatement);
  5839. varset = false;
  5840. while(databank.next(result)) {
  5841. time = databank.getLong(result, 1);
  5842. calendar = time.new(time);
  5843. year = text.number(time.getYear(calendar));
  5844. month = text.number(time.getMonth(calendar));
  5845. day = text.number(time.getDay(calendar));
  5846. minute = text.number(time.getMinute(calendar));
  5847. hour = text.number(time.getHour(calendar));
  5848. month = correctTimeFormat(month);
  5849. day = correctTimeFormat(day);
  5850. hour = correctTimeFormat(hour);
  5851. minute = correctTimeFormat(minute);
  5852. dateformat = concat(day, ".", month, ".", year);
  5853. clockformat = concat(hour, ":", minute);
  5854. msg.prefix(player, prefix_commands, concat(seen_name, " war zuletzt am §e", dateformat, "§r um §e", clockformat, " Uhr §ronline."));
  5855. varset = true;
  5856. }
  5857. databank.close(result);
  5858. databank.close(seenStatement);
  5859. if(!varset) {
  5860. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  5861. goto("wait");
  5862. }
  5863. goto("wait");
  5864. @lastseen
  5865. if(size != 1) {
  5866. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  5867. goto("wait");
  5868. }
  5869. amount = list.getIndex(args, 0);
  5870. if(!isDouble(amount)) {
  5871. msg.prefix(sender, prefix_commands, "Zahl erwartet.");
  5872. goto("wait");
  5873. }
  5874. if(amount < 1) {
  5875. msg.prefix(sender, prefix_commands, "Zahl größer 0 erwartet.");
  5876. goto("wait");
  5877. }
  5878. msg.prefix(sender, prefix_commands, "These players were last seen:");
  5879. table = table.new("§f", 12, 12);
  5880. msg(sender, table.getStart(table));
  5881. msg(sender, table.get(table, "Player", "Date"));
  5882. msg(sender, table.getMiddle(table));
  5883. lastseenStatement = databank.prepare("SELECT player_id, logouttime FROM logoutdata ORDER BY logouttime DESC LIMIT ?;");
  5884. databank.setInt(lastseenStatement, 1, amount);
  5885. result = databank.execute(lastseenStatement);
  5886. while(databank.next(result)) {
  5887. id = databank.getInt(result, 1);
  5888. time = databank.getLong(result, 2);
  5889. msg(sender, table.get(table, concat("§a", player.getNameFromId(id)), concat("§e", getTimeString(time))));
  5890. }
  5891. msg(sender, table.getEnd(table));
  5892. databank.close(result);
  5893. databank.close(lastseenStatement);
  5894. goto("wait");
  5895. @feed
  5896. if(size > 1) {
  5897. msg.prefix(player, prefix_commands, "/feed [player]");
  5898. goto("wait");
  5899. }
  5900. if(size == 1) {
  5901. affectedname = list.getIndex(args, 0);
  5902. affectedplayer = read.player(affectedname);
  5903. if(affectedplayer == null) {
  5904. msg.prefix(player, prefix_commands, "This player is not online.");
  5905. goto("wait");
  5906. }
  5907. if(player != affectedplayer) {
  5908. affectedname = player.getName(affectedplayer);
  5909. msg.prefix(player, prefix_commands, concat("Der Hunger von ", affectedname, " wurde gestillt."));
  5910. }
  5911. }
  5912. player.setHunger(affectedplayer, 20);
  5913. player.setSaturation(affectedplayer, 5);
  5914. msg.prefix(affectedplayer, prefix_commands, "Dein Hunger wurde gestillt.");
  5915. goto("wait");
  5916. @tempfly
  5917. if(size < 2) {
  5918. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  5919. goto("wait");
  5920. }
  5921. p_name = list.getIndex(args, 0);
  5922. if(!checkIfEverOnline(p_name)) {
  5923. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5924. goto("wait");
  5925. }
  5926. p = read.player(p_name);
  5927. if(p == null) {
  5928. msg.prefix(sender, prefix_commands, "This player is not online.");
  5929. goto("wait");
  5930. }
  5931. p_name = player.getName(player.getUuid(p_name));
  5932. if(player.hasMinigame(p)) {
  5933. msg.prefix(player, prefix_commands, "This player can't fly now.");
  5934. goto("wait");
  5935. }
  5936. sec = list.getIndex(args, 1);
  5937. if(!isDouble(sec) || sec < 0) {
  5938. msg.prefix(sender, prefix_commands, "Positive number expected.");
  5939. goto("wait");
  5940. }
  5941. msg.prefix(sender, prefix_commands, concat(p_name, " can now fly for ", text.number(sec), " seconds."));
  5942. msg.prefix(p, prefix_commands, concat("You can now fly for ", text.number(sec), " seconds."));
  5943. player.setFly(p, true);
  5944. duration = sec * 20;
  5945. data.setTimer(p, "fly", duration);
  5946. status.addTimed(player, 53, duration, "Fly");
  5947. goto("wait");
  5948. @fly
  5949. if(size > 2) {
  5950. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  5951. goto("wait");
  5952. }
  5953. if(size >= 1) {
  5954. if(!perm.has(player, "fly.other")) {
  5955. perm.no(player, "fly.other");
  5956. goto("wait");
  5957. }
  5958. affectedname = list.getIndex(args, 0);
  5959. affectedplayer = read.player(affectedname);
  5960. if(affectedplayer == null) {
  5961. msg.prefix(player, prefix_commands, "This player is not online.");
  5962. goto("wait");
  5963. }
  5964. }
  5965. if(player.hasMinigame(affectedplayer)) {
  5966. if(size == 2) {
  5967. msg.prefix(player, prefix_commands, "This player can't fly now.");
  5968. } else {
  5969. msg.prefix(player, prefix_commands, "You can't fly now.");
  5970. }
  5971. goto("wait");
  5972. }
  5973. if(size == 2) {
  5974. boolean = list.getIndex(args, 1);
  5975. if(boolean == "on") {
  5976. fly = true;
  5977. } elseif(boolean == "off") {
  5978. fly = false;
  5979. } else {
  5980. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  5981. goto("wait");
  5982. }
  5983. } else {
  5984. if(player.hasFly(affectedplayer)) {
  5985. fly = false;
  5986. } else {
  5987. fly = true;
  5988. }
  5989. }
  5990. player.setFly(affectedplayer, fly);
  5991. if(fly) {
  5992. msg.prefix(affectedplayer, prefix_commands, "You can fly now.");
  5993. if(player != affectedplayer) {
  5994. affectedname = player.getName(affectedplayer);
  5995. msg.prefix(player, prefix_commands, concat(affectedname, " can fly now."));
  5996. }
  5997. } else {
  5998. msg.prefix(affectedplayer, prefix_commands, "You can't fly anymore.");
  5999. if(player != affectedplayer) {
  6000. affectedname = player.getName(affectedplayer);
  6001. msg.prefix(player, prefix_commands, concat(affectedname, " can't fly anymore."));
  6002. }
  6003. }
  6004. goto("wait");
  6005. @tppos
  6006. if(size < 3 || size > 5) {
  6007. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  6008. goto("wait");
  6009. }
  6010. x = list.getIndex(args, 0);
  6011. y = list.getIndex(args, 1);
  6012. z = list.getIndex(args, 2);
  6013. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  6014. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  6015. goto("wait");
  6016. }
  6017. if(size >= 4) {
  6018. worldname = list.getIndex(args, 3);
  6019. world = world.get(worldname);
  6020. if(world == null) {
  6021. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6022. goto("wait");
  6023. }
  6024. } else {
  6025. world = loc.getWorld(entity.getLocation(player));
  6026. }
  6027. if(x < -16000) {
  6028. x = -16000;
  6029. } elseif(x > 16000) {
  6030. x = 16000;
  6031. }
  6032. if(y < 0) {
  6033. y = 0;
  6034. } elseif(y > 255) {
  6035. y = 255;
  6036. }
  6037. if(z < -16000) {
  6038. z = -16000;
  6039. } elseif(z > 16000) {
  6040. z = 16000;
  6041. }
  6042. location = loc.new(world, x, y, z);
  6043. if(size == 5) {
  6044. affectedname = list.getIndex(args, 4);
  6045. affectedplayer = read.player(affectedname);
  6046. if(affectedplayer == null) {
  6047. msg.prefix(player, prefix_commands, "This player is not online.");
  6048. goto("wait");
  6049. }
  6050. }
  6051. if(player.hasMinigame(affectedplayer)) {
  6052. if(size == 5) {
  6053. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  6054. } else {
  6055. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  6056. }
  6057. goto("wait");
  6058. }
  6059. if(player.teleport(affectedplayer, location, true)) {
  6060. if(player != affectedplayer) {
  6061. affectedname = player.getName(affectedplayer);
  6062. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported."));
  6063. }
  6064. }
  6065. goto("wait");
  6066. @back
  6067. if(size > 0) {
  6068. msg.prefix(player, prefix_commands, "/back");
  6069. goto("wait");
  6070. }
  6071. if(player.hasMinigame(player)) {
  6072. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  6073. goto("wait");
  6074. }
  6075. hasPerms = perm.has(player, "isTeam");
  6076. if(!hasPerms) {
  6077. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6078. if(isGamesWorldName(world_name) || isStoryWorldName(world_name)) {
  6079. msg.prefix(player, prefix_commands, "You can't use /back in this world.");
  6080. goto("wait");
  6081. }
  6082. }
  6083. location = player.getBackPos(player);
  6084. if(location == null) {
  6085. msg.prefix(player, prefix_commands, "No back-location available.");
  6086. goto("wait");
  6087. }
  6088. world = loc.getWorld(location);
  6089. if(world == null) {
  6090. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6091. goto("wait");
  6092. }
  6093. if(!hasPerms) {
  6094. world_name = world.getName(world);
  6095. if(isGamesWorldName(world_name)) {
  6096. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6097. goto("wait");
  6098. }
  6099. }
  6100. player.teleport(player, location, true);
  6101. goto("wait");
  6102. @clan
  6103. if(size == 0) {
  6104. @clanhelp
  6105. msg.prefix(player, prefix_clan, "§r/clan...");
  6106. msg(player, "§2 - invite <name> §rInvites a player");
  6107. msg(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  6108. msg(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  6109. msg(player, "§2 - create <name> <tag> §rCreates a clan");
  6110. msg(player, "§2 - kick <name> §rKicks a player");
  6111. msg(player, "§2 - leader <name> §rPromote to clan-leader");
  6112. msg(player, "§2 - mod <name> §rPromote to clan-mod");
  6113. msg(player, "§2 - degrade <name> §rDemote a clan-mod");
  6114. msg(player, "§2 - leave §rLeave a clan");
  6115. msg(player, "§2 - disband §rDisband a clan");
  6116. msg(player, "§2 - rename <name> <tag> §rRenames a clan");
  6117. msg(player, "§2 - setspawn §rSets a clan-spawn");
  6118. msg(player, "§2 - spawn §rTeleports to clan-spawn");
  6119. msg(player, "§2 - msg <message> §rSends a clan-message");
  6120. msg(player, "§2 - mail <message> §rSends a clan-mail");
  6121. msg(player, "§2 - shout <message> §rSends a message to all online players");
  6122. msg(player, "§2 - deposit <money> §rDeposit money to the clan account");
  6123. msg(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  6124. msg(player, "§2 - party §rInvites all online members to a party");
  6125. msg(player, "§2 - list §rLists all clans");
  6126. goto("wait");
  6127. }
  6128. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6129. if(arg0 == "invite") {
  6130. if(size != 2) {
  6131. msg.prefix(player, prefix_commands, "/clan invite <name>");
  6132. goto("wait");
  6133. }
  6134. if(!player.isInClan(player)) {
  6135. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6136. goto("wait");
  6137. }
  6138. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6139. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6140. goto("wait");
  6141. }
  6142. p_name = list.getIndex(args, 1);
  6143. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6144. msg.prefix(player, prefix_clan, "You can't invite yourself.");
  6145. goto("wait");
  6146. }
  6147. if(!checkIfEverOnline(p_name)) {
  6148. msg.prefix(sender, prefix_clan, "This player has never been online.");
  6149. goto("wait");
  6150. }
  6151. if(!isOnline(p_name)) {
  6152. msg.prefix(player, prefix_clan, "This player has to be online.");
  6153. goto("wait");
  6154. }
  6155. p = read.player(p_name);
  6156. if(player.isClanMember(player)) {
  6157. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  6158. goto("wait");
  6159. }
  6160. clan_id = player.getClanId(player);
  6161. p_id = player.getId(p);
  6162. if(player.hasClanInvitation(p_id, clan_id)) {
  6163. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  6164. goto("wait");
  6165. }
  6166. player.addClanInvitation(p_id, clan_id);
  6167. clan_name = clan.getName(clan_id);
  6168. msg.prefix(player, prefix_clan, text.concat("You invited §7", p_name, "§r to your clan."));
  6169. msg.prefix(p, prefix_clan, text.concat("You got an clan invitation by §7", clan_name, "§r."));
  6170. msg(p, text.click("§r[§aAccept§r]", concat("/clan accept ", clan_id)));
  6171. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  6172. goto("wait");
  6173. }
  6174. if(arg0 == "accept") {
  6175. if(size != 2) {
  6176. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  6177. goto("wait");
  6178. }
  6179. if(player.isInClan(player)) {
  6180. msg.prefix(player, prefix_clan, "You are already in a clan.");
  6181. goto("wait");
  6182. }
  6183. arg1 = list.getIndex(args, 1);
  6184. if(isDouble(arg1)) {
  6185. clan_id = arg1;
  6186. clan_name = clan.getName(clan_id);
  6187. if(clan_name == null) {
  6188. msg.prefix(player, prefix_clan, "Unknown clan.");
  6189. goto("wait");
  6190. }
  6191. } else {
  6192. clan_id = clan.getIdFromName(arg1);
  6193. if(clan_id == null) {
  6194. clan_id = clan.getIdFromTag(arg1);
  6195. if(clan_id == null) {
  6196. msg.prefix(player, prefix_clan, "Unknown clan.");
  6197. goto("wait");
  6198. }
  6199. }
  6200. }
  6201. player_id = player.getId(player);
  6202. if(!player.hasClanInvitation(player_id, clan_id)) {
  6203. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  6204. goto("wait");
  6205. }
  6206. clan.addMember(clan_id, player, "member");
  6207. player.setHeadName(player);
  6208. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r joined the clan."));
  6209. msg.prefix(player, prefix_clan, text.concat("You joined §7", clan_name, "§r."));
  6210. clan_size = clan.getMembersAmount(clan_id);
  6211. if(clan_size >= 15) {
  6212. rank.offerClan(clan_id, "rank.lord");
  6213. } elseif(clan_size >= 10) {
  6214. rank.offerClan(clan_id, "rank.chief");
  6215. } elseif(clan_size >= 5) {
  6216. rank.offerClan(clan_id, "rank.commander");
  6217. }
  6218. goto("wait");
  6219. }
  6220. if(arg0 == "create") {
  6221. if(size != 3) {
  6222. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  6223. goto("wait");
  6224. }
  6225. if(player.isInClan(player)) {
  6226. msg.prefix(player, prefix_clan, "You are already in a clan.");
  6227. goto("wait");
  6228. }
  6229. clan_name = list.getIndex(args, 1);
  6230. if(text.length(clan_name) > 20) {
  6231. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  6232. goto("wait");
  6233. }
  6234. if(!text.onlyletters(clan_name)) {
  6235. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6236. goto("wait");
  6237. }
  6238. if(clan.isExistingName(clan_name)) {
  6239. msg.prefix(player, prefix_clan, "This name already exists.");
  6240. goto("wait");
  6241. }
  6242. clan_tag = list.getIndex(args, 2);
  6243. tag_length = text.length(clan_tag);
  6244. if(tag_length < 3 || tag_length > 4) {
  6245. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  6246. goto("wait");
  6247. }
  6248. if(!text.onlyletters(clan_tag)) {
  6249. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6250. goto("wait");
  6251. }
  6252. if(clan.isExistingTag(clan_tag)) {
  6253. msg.prefix(player, prefix_clan, "This tag already exists.");
  6254. goto("wait");
  6255. }
  6256. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  6257. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  6258. goto("wait");
  6259. }
  6260. subMoney(player, 4096);
  6261. clan_id = clan.create(clan_name, clan_tag);
  6262. clan.addMember(clan_id, player, "leader");
  6263. player.setHeadName(player);
  6264. msg.prefix(player, prefix_clan, "Clan successful created.");
  6265. goto("wait");
  6266. }
  6267. if(arg0 == "info") {
  6268. if(size == 1) {
  6269. if(!player.isInClan(player)) {
  6270. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  6271. goto("wait");
  6272. }
  6273. clan_id = player.getClanId(player);
  6274. clan_name = clan.getName(clan_id);
  6275. clan_tag = clan.getTag(clan_id);
  6276. }
  6277. if(size == 2) {
  6278. arg1 = list.getIndex(args, 1);
  6279. if(isDouble(arg1)) {
  6280. clan_id = arg1;
  6281. clan_name = clan.getName(clan_id);
  6282. if(clan_name == null) {
  6283. msg.prefix(player, prefix_clan, "Unknown clan.");
  6284. goto("wait");
  6285. }
  6286. } else {
  6287. clan_id = clan.getIdFromName(arg1);
  6288. if(clan_id == null) {
  6289. clan_id = clan.getIdFromTag(arg1);
  6290. if(clan_id == null) {
  6291. msg.prefix(player, prefix_clan, "Unknown clan.");
  6292. goto("wait");
  6293. }
  6294. }
  6295. clan_name = clan.getName(clan_id);
  6296. }
  6297. clan_tag = clan.getTag(clan_id);
  6298. }
  6299. list = clan.getMembersList(clan_id);
  6300. mod_list = list.new();
  6301. members_list = list.new();
  6302. iter = list.iterator(list);
  6303. while(hasNext(iter)) {
  6304. player_uuid = next(iter);
  6305. player_name = player.getName(player_uuid);
  6306. player_id = player.getId(player_uuid);
  6307. if(player.isClanLeader(player_id)) {
  6308. leader = player_name;
  6309. } else {
  6310. if(player.isClanMod(player_id)) {
  6311. list.add(mod_list, player_name);
  6312. } else {
  6313. list.add(members_list, player_name);
  6314. }
  6315. }
  6316. }
  6317. if(list.getSize(mod_list) == 0) {
  6318. mods = "-";
  6319. } else {
  6320. mods = text.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  6321. }
  6322. if(list.getSize(members_list) == 0) {
  6323. members = "-";
  6324. } else {
  6325. members = text.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  6326. }
  6327. msg(player, text.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", text.number(clan_id), ")"));
  6328. msg(player, "§6Leader");
  6329. msg(player, "§r", leader);
  6330. msg(player, "§6Mods");
  6331. msg(player, "§r", mods);
  6332. msg(player, "§6Members");
  6333. msg(player, "§r", members);
  6334. msg(player, "§6Money");
  6335. msg(player, text.number(clan.getMoney(clan_id)));
  6336. goto("wait");
  6337. }
  6338. if(arg0 == "rename") {
  6339. if(!player.isInClan(player)) {
  6340. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6341. goto("wait");
  6342. }
  6343. if(!player.isClanLeader(player)) {
  6344. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6345. goto("wait");
  6346. }
  6347. if(size != 3) {
  6348. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  6349. goto("wait");
  6350. }
  6351. clan_name = list.getIndex(args, 1);
  6352. if(text.length(clan_name) > 20) {
  6353. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  6354. goto("wait");
  6355. }
  6356. if(!text.onlyletters(clan_name)) {
  6357. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6358. goto("wait");
  6359. }
  6360. if(clan.isExistingName(clan_name)) {
  6361. msg.prefix(player, prefix_clan, "This name already exists.");
  6362. goto("wait");
  6363. }
  6364. clan_tag = list.getIndex(args, 2);
  6365. tag_length = text.length(clan_tag);
  6366. if(tag_length < 3 || tag_length > 4) {
  6367. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  6368. goto("wait");
  6369. }
  6370. if(!text.onlyletters(clan_tag)) {
  6371. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6372. goto("wait");
  6373. }
  6374. if(clan.isExistingTag(clan_tag)) {
  6375. msg.prefix(player, prefix_clan, "This tag already exists.");
  6376. goto("wait");
  6377. }
  6378. clan_id = player.getClanId(player);
  6379. if(clan.getMoney(clan_id) < 64) {
  6380. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  6381. goto("wait");
  6382. }
  6383. clan.subMoney(clan_id, 64);
  6384. clan.setName(clan_id, clan_name);
  6385. clan.setTag(clan_id, clan_tag);
  6386. clan.msg(clan_id, text.concat("Clan renamed to §7", clan_name, "§r."));
  6387. //New tag for online players
  6388. clan.updateHeadNames(clan_id);
  6389. goto("wait");
  6390. }
  6391. if(arg0 == "msg") {
  6392. if(!player.isInClan(player)) {
  6393. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6394. goto("wait");
  6395. }
  6396. if(size < 2) {
  6397. msg.prefix(player, prefix_commands, "/clan msg <message>");
  6398. goto("wait");
  6399. }
  6400. clan_id = player.getClanId(player);
  6401. clan.msg(clan_id, text.concat(player.getName(player), ": ", text.concatList(args, " ", 1, size - 1)));
  6402. goto("wait");
  6403. }
  6404. if(arg0 == "mail") {
  6405. if(!player.isInClan(player)) {
  6406. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6407. goto("wait");
  6408. }
  6409. if(size < 2) {
  6410. msg.prefix(player, prefix_commands, "/clan mail <message>");
  6411. goto("wait");
  6412. }
  6413. if(player.isClanMember(player)) {
  6414. msg.prefix(player, prefix_commands, "You have no permission for this.");
  6415. goto("wait");
  6416. }
  6417. clan_id = player.getClanId(player);
  6418. clan.mail(clan_id, player.getName(player), text.concatList(args, " ", 1, size - 1));
  6419. goto("wait");
  6420. }
  6421. if(arg0 == "shout") {
  6422. if(!player.isInClan(player)) {
  6423. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6424. goto("wait");
  6425. }
  6426. if(size < 2) {
  6427. msg.prefix(player, prefix_commands, "/clan shout <message>");
  6428. goto("wait");
  6429. }
  6430. if(player.isClanMember(player)) {
  6431. msg.prefix(player, prefix_commands, "You have no permission for this.");
  6432. goto("wait");
  6433. }
  6434. clan_id = player.getClanId(player);
  6435. if(clan.getMoney(clan_id) < 10) {
  6436. msg.prefix(player, prefix_clan, "Your clan needs 10 snuvis.");
  6437. goto("wait");
  6438. }
  6439. clan.subMoney(clan_id, 10);
  6440. msg.prefix("online", prefix_clan, text.concat(clan.getTag(clan_id), ": ", text.concatList(args, " ", 1, size - 1)));
  6441. goto("wait");
  6442. }
  6443. if(arg0 == "deposit") {
  6444. if(!player.isInClan(player)) {
  6445. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6446. goto("wait");
  6447. }
  6448. if(size != 2) {
  6449. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  6450. goto("wait");
  6451. }
  6452. money = list.getIndex(args, 1);
  6453. if(!isDouble(money) || money < 0) {
  6454. msg.prefix(player, prefix_clan, "Positive number expected.");
  6455. goto("wait");
  6456. }
  6457. if(!hasEnoughMoney(player, money)) {
  6458. msg.prefix(player, prefix_clan, "You can't transfer more money than you have.");
  6459. goto("wait");
  6460. }
  6461. clan_id = player.getClanId(player);
  6462. clan.addMoney(clan_id, money);
  6463. subMoney(player, money);
  6464. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r transferred §7", text.number(money), "§r snuvis."));
  6465. goto("wait");
  6466. }
  6467. if(arg0 == "party") {
  6468. counter = 0;
  6469. clan_id = player.getClanId(player);
  6470. list = clan.getMembersList(clan_id);
  6471. iter = list.iterator(list);
  6472. while(hasNext(iter)) {
  6473. p = player.get(next(iter));
  6474. if(p != null) {
  6475. temp = party.invitePlayer(player, p);
  6476. if(temp == true) {
  6477. counter++;
  6478. }
  6479. }
  6480. }
  6481. msg.prefix(player, prefix_clan, concat(text.number(counter), " online clan members invited to a party."));
  6482. goto("wait");
  6483. }
  6484. if(arg0 == "withdraw") {
  6485. if(!player.isInClan(player)) {
  6486. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6487. goto("wait");
  6488. }
  6489. if(!player.isClanLeader(player)) {
  6490. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6491. goto("wait");
  6492. }
  6493. if(size != 2) {
  6494. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  6495. goto("wait");
  6496. }
  6497. money = list.getIndex(args, 1);
  6498. if(!isDouble(money) || money < 0) {
  6499. msg.prefix(player, prefix_clan, "Positive number expected.");
  6500. goto("wait");
  6501. }
  6502. clan_id = player.getClanId(player);
  6503. clan_money = clan.getMoney(clan_id);
  6504. if(clan_money < money) {
  6505. msg.prefix(player, prefix_clan, text.concat("There are only §7", text.number(clan_money), "§r snuvis on the clan account."));
  6506. goto("wait");
  6507. }
  6508. clan.subMoney(clan_id, money);
  6509. addMoney(player, money);
  6510. msg.prefix(player, prefix_clan, text.concat("You have withdrawn §7", text.number(money), "§r snuvis."));
  6511. goto("wait");
  6512. }
  6513. if(arg0 == "leader") {
  6514. if(!player.isInClan(player)) {
  6515. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6516. goto("wait");
  6517. }
  6518. if(!player.isClanLeader(player)) {
  6519. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6520. goto("wait");
  6521. }
  6522. if(size != 2) {
  6523. msg.prefix(player, prefix_commands, "/clan leader <name>");
  6524. goto("wait");
  6525. }
  6526. p_name = list.getIndex(args, 1);
  6527. if(!checkIfEverOnline(p_name)) {
  6528. msg.prefix(player, prefix_clan, "This player has never been online.");
  6529. goto("wait");
  6530. }
  6531. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6532. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6533. goto("wait");
  6534. }
  6535. p_uuid = player.getUuid(p_name);
  6536. p_id = player.getId(p_uuid);
  6537. if(!player.isSameClan(player, p_id)) {
  6538. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6539. goto("wait");
  6540. }
  6541. player.setClanRole(p_id, "leader");
  6542. player.setClanRole(player, "mod");
  6543. clan_id = player.getClanId(player);
  6544. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan leader."));
  6545. goto("wait");
  6546. }
  6547. if(arg0 == "mod") {
  6548. if(!player.isInClan(player)) {
  6549. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6550. goto("wait");
  6551. }
  6552. if(!player.isClanLeader(player)) {
  6553. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6554. goto("wait");
  6555. }
  6556. if(size != 2) {
  6557. msg.prefix(player, prefix_commands, "/clan leader <name>");
  6558. goto("wait");
  6559. }
  6560. p_name = list.getIndex(args, 1);
  6561. if(!checkIfEverOnline(p_name)) {
  6562. msg.prefix(player, prefix_clan, "This player has never been online.");
  6563. goto("wait");
  6564. }
  6565. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6566. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6567. goto("wait");
  6568. }
  6569. p_uuid = player.getUuid(p_name);
  6570. p_id = player.getId(p_uuid);
  6571. if(!player.isSameClan(player, p_id)) {
  6572. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6573. goto("wait");
  6574. }
  6575. player.setClanRole(p_id, "mod");
  6576. clan_id = player.getClanId(player);
  6577. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan mod."));
  6578. goto("wait");
  6579. }
  6580. if(arg0 == "degrade") {
  6581. if(!player.isInClan(player)) {
  6582. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6583. goto("wait");
  6584. }
  6585. if(!player.isClanLeader(player)) {
  6586. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6587. goto("wait");
  6588. }
  6589. if(size != 2) {
  6590. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  6591. goto("wait");
  6592. }
  6593. p_name = list.getIndex(args, 1);
  6594. if(!checkIfEverOnline(p_name)) {
  6595. msg.prefix(player, prefix_clan, "This player has never been online.");
  6596. goto("wait");
  6597. }
  6598. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6599. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6600. goto("wait");
  6601. }
  6602. p_uuid = player.getUuid(p_name);
  6603. p_id = player.getId(p_uuid);
  6604. if(!player.isSameClan(player, p_id)) {
  6605. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6606. goto("wait");
  6607. }
  6608. player.setClanRole(p_id, "member");
  6609. clan_id = player.getClanId(player);
  6610. clan.msg(clan_id, text.concat("§7", p_name, "§r was degraded."));
  6611. goto("wait");
  6612. }
  6613. if(arg0 == "kick") {
  6614. if(!player.isInClan(player)) {
  6615. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6616. goto("wait");
  6617. }
  6618. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6619. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6620. goto("wait");
  6621. }
  6622. if(size != 2) {
  6623. msg.prefix(player, prefix_commands, "/clan kick <name>");
  6624. goto("wait");
  6625. }
  6626. p_name = list.getIndex(args, 1);
  6627. if(!checkIfEverOnline(p_name)) {
  6628. msg.prefix(player, prefix_clan, "This player has never been online.");
  6629. goto("wait");
  6630. }
  6631. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6632. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6633. goto("wait");
  6634. }
  6635. p_uuid = player.getUuid(p_name);
  6636. p_id = player.getId(p_uuid);
  6637. if(!player.isSameClan(player, p_id)) {
  6638. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6639. goto("wait");
  6640. }
  6641. if(player.isClanLeader(p_id)) {
  6642. msg.prefix(player, prefix_clan, "You can't kick the leader.");
  6643. goto("wait");
  6644. }
  6645. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  6646. msg.prefix(player, prefix_clan, "You can't kick another mod.");
  6647. goto("wait");
  6648. }
  6649. clan_id = player.getClanId(player);
  6650. clan.msg(clan_id, text.concat("§7", p_name, "§r got kicked out of the clan."));
  6651. clan.removeMember(clan_id, p_id);
  6652. p = read.player(p_name);
  6653. if(p_name != null) {
  6654. player.setHeadName(p);
  6655. }
  6656. goto("wait");
  6657. }
  6658. if(arg0 == "disband") {
  6659. if(!player.isInClan(player)) {
  6660. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6661. goto("wait");
  6662. }
  6663. if(!player.isClanLeader(player)) {
  6664. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6665. goto("wait");
  6666. }
  6667. clan_id = player.getClanId(player);
  6668. clan.msg(clan_id, "Clan disbanded.");
  6669. list = clan.getMembersList(clan_id);
  6670. clan.delete(clan_id);
  6671. iter = list.iterator(list);
  6672. while(hasNext(iter)) {
  6673. p = player.get(next(iter));
  6674. if(p != null) {
  6675. player.setHeadName(p);
  6676. }
  6677. }
  6678. goto("wait");
  6679. }
  6680. if(arg0 == "leave") {
  6681. if(!player.isInClan(player)) {
  6682. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6683. goto("wait");
  6684. }
  6685. if(player.isClanLeader(player)) {
  6686. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  6687. goto("wait");
  6688. }
  6689. clan_id = player.getClanId(player);
  6690. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r left the clan."));
  6691. clan.removeMember(clan_id, player);
  6692. player.setHeadName(player);
  6693. goto("wait");
  6694. }
  6695. if(arg0 == "list") {
  6696. table = table.new("§b", 2, 6, 4, 5);
  6697. msg(player, table.getStart(table));
  6698. msg(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  6699. msg(player, table.getMiddle(table));
  6700. list = clan.getIdList();
  6701. iter = list.iterator(list);
  6702. while(hasNext(iter)) {
  6703. clan_id = next(iter);
  6704. name = clan.getName(clan_id);
  6705. tag = clan.getTag(clan_id);
  6706. amount = clan.getMembersAmount(clan_id);
  6707. msg(player, table.get(table, text.number(clan_id), name, tag, text.number(amount)));
  6708. }
  6709. msg(player, table.getEnd(table));
  6710. goto("wait");
  6711. }
  6712. if(arg0 == "setspawn") {
  6713. if(!player.isInClan(player)) {
  6714. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6715. goto("wait");
  6716. }
  6717. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6718. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6719. goto("wait");
  6720. }
  6721. clan_id = player.getClanId(player);
  6722. clan.setSpawn(clan_id, entity.getLocation(player));
  6723. msg.prefix(player, prefix_clan, "New clan spawn set.");
  6724. goto("wait");
  6725. }
  6726. if(arg0 == "spawn") {
  6727. if(!player.isInClan(player)) {
  6728. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6729. goto("wait");
  6730. }
  6731. clan_id = player.getClanId(player);
  6732. spawn_loc = clan.getSpawn(clan_id);
  6733. if(spawn_loc == null) {
  6734. msg.prefix(player, prefix_clan, "No clan spawn set.");
  6735. goto("wait");
  6736. }
  6737. if(!perm.has(player, "isTeam")) {
  6738. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6739. if(isGamesWorldName(world_name)) {
  6740. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6741. goto("wait");
  6742. }
  6743. }
  6744. player.teleport(player, spawn_loc, true);
  6745. goto("wait");
  6746. }
  6747. goto("clanhelp");
  6748. @remove_clan_invitation
  6749. list.removeIndex(clan_invitations, 0);
  6750. goto("wait");
  6751. @color
  6752. msg(player, getSpacer());
  6753. msg(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  6754. msg(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  6755. msg(player, " &l §l(bold)");
  6756. msg(player, " &m §m(strikethrough)");
  6757. msg(player, " &n §n(underline)");
  6758. msg(player, " &o §o(italic)");
  6759. goto("wait");
  6760. @setspawn
  6761. if(size != 1) {
  6762. @setspawnhelp
  6763. msg.prefix(player, prefix_commands, "§r/setspawn ...");
  6764. msg(player, "§6 - server");
  6765. msg(player, "§6 - games");
  6766. msg(player, "§6 - creative");
  6767. msg(player, "§6 - story");
  6768. goto("wait");
  6769. }
  6770. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6771. new_spawn = text.location(entity.getLocation(player));
  6772. config = getScriptVar("server_config");
  6773. if(arg0 == "games") {
  6774. config.set(config, "gamesspawn", new_spawn);
  6775. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  6776. } elseif(arg0 == "server") {
  6777. config.set(config, "serverspawn", new_spawn);
  6778. msg.prefix(player, prefix_commands, "New main Spawn set.");
  6779. } elseif(arg0 == "creative") {
  6780. config.set(config, "creativespawn", new_spawn);
  6781. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  6782. } elseif(arg0 == "story") {
  6783. config.set(config, "storyspawn", new_spawn);
  6784. msg.prefix(player, prefix_commands, "New spawn for story world set.");
  6785. } else {
  6786. goto("setspawnhelp");
  6787. }
  6788. config.saveAsync(config);
  6789. goto("wait");
  6790. @heal
  6791. if(size > 1) {
  6792. msg.prefix(player, prefix_commands, "/heal [player]");
  6793. goto("wait");
  6794. }
  6795. if(size == 1) {
  6796. affectedname = list.getIndex(args, 0);
  6797. affectedplayer = read.player(affectedname);
  6798. if(affectedplayer == null) {
  6799. msg.prefix(player, prefix_commands, "This player is not online.");
  6800. goto("wait");
  6801. }
  6802. if(player != affectedplayer) {
  6803. affectedname = player.getName(affectedplayer);
  6804. msg.prefix(player, prefix_commands, concat(affectedname, " was healed."));
  6805. }
  6806. }
  6807. entity.heal(affectedplayer, 50);
  6808. player.setHunger(affectedplayer, 20);
  6809. player.setSaturation(affectedplayer, 5);
  6810. entity.clearEffects(affectedplayer);
  6811. entity.setBurning(affectedplayer, 0);
  6812. msg.prefix(affectedplayer, prefix_commands, "You have been healed.");
  6813. goto("wait");
  6814. @inv
  6815. if(size == 0) {
  6816. @invhelp
  6817. msg.prefix(player, prefix_commands, "§r/inv ...");
  6818. if(perm.has(player, "inv.ignore")) {
  6819. msg(player, "§6 - ignore §rToggles inventory change on world change");
  6820. }
  6821. if(perm.has(player, "inv.see")) {
  6822. msg(player, "§6 - see <player> §rOpens a player's inventory");
  6823. }
  6824. if(perm.has(player, "inv.reload")) {
  6825. msg(player, "§6 - reload <player> §rReloads a player's inventory");
  6826. }
  6827. if(perm.has(player, "inv.saveFor")) {
  6828. msg(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  6829. }
  6830. if(perm.has(player, "inv.loadFrom")) {
  6831. msg(player, "§6 - loadFrom <player> <world> §rLoads a player's inventory for you");
  6832. }
  6833. goto("wait");
  6834. }
  6835. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6836. if(arg0 == "ignore") {
  6837. if(!perm.has(player, "inv.ignore")) {
  6838. perm.no(player, "inv.ignore");
  6839. goto("wait");
  6840. }
  6841. ignore = player.hasInvIgnore(player);
  6842. if(ignore == null) {
  6843. ignore = false;
  6844. }
  6845. if(ignore) {
  6846. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  6847. } else {
  6848. msg.prefix(player, prefix_commands, "You'll keep your inventory on joining another world.");
  6849. }
  6850. player.invIgnore(player, !ignore);
  6851. goto("wait");
  6852. }
  6853. if(arg0 == "see") {
  6854. if(!perm.has(player, "inv.see")) {
  6855. perm.no(player, "inv.see");
  6856. goto("wait");
  6857. }
  6858. if(size < 2) {
  6859. msg.prefix(player, prefix_commands, "/inv see <player>");
  6860. goto("wait");
  6861. }
  6862. p_name = list.getIndex(args, 1);
  6863. p_uuid = player.getUuid(p_name);
  6864. if(p_uuid == null) {
  6865. msg.prefix(player, prefix_commands, "This player has never been online.");
  6866. goto("wait");
  6867. }
  6868. p = read.player(p_name);
  6869. if(p == null) {
  6870. msg.prefix(player, prefix_commands, "This player is not online.");
  6871. goto("wait");
  6872. }
  6873. inv.show(p, player);
  6874. goto("wait");
  6875. }
  6876. if(arg0 == "reload") {
  6877. if(!perm.has(player, "inv.reload")) {
  6878. perm.no(player, "inv.reload");
  6879. goto("wait");
  6880. }
  6881. if(size < 2) {
  6882. msg.prefix(player, prefix_commands, "/inv reload <player>");
  6883. goto("wait");
  6884. }
  6885. p_name = list.getIndex(args, 1);
  6886. p_uuid = player.getUuid(p_name);
  6887. if(p_uuid == null) {
  6888. msg.prefix(player, prefix_commands, "This player has never been online.");
  6889. goto("wait");
  6890. }
  6891. p = read.player(p_name);
  6892. if(p == null) {
  6893. msg.prefix(player, prefix_commands, "This player is not online.");
  6894. goto("wait");
  6895. }
  6896. world = loc.getWorld(entity.getLocation(p));
  6897. inv.loadFromPlayer(p, p, world);
  6898. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  6899. goto("wait");
  6900. }
  6901. if(arg0 == "savefor") {
  6902. if(size != 1 && size != 3) {
  6903. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  6904. goto("wait");
  6905. }
  6906. if(size == 1) {
  6907. for_player_or_id = player.getId(player);
  6908. world = loc.getWorld(entity.getLocation(player));
  6909. }
  6910. if(size == 3) {
  6911. if(!perm.has(player, "inv.saveFor")) {
  6912. perm.no(player, "inv.saveFor");
  6913. goto("wait");
  6914. }
  6915. p_name = list.getIndex(args, 1);
  6916. p_uuid = player.getUuid(p_name);
  6917. if(p_uuid == null) {
  6918. msg.prefix(player, prefix_commands, "This player has never been online.");
  6919. goto("wait");
  6920. }
  6921. p = read.player(p_name);
  6922. if(p != null) {
  6923. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  6924. goto("wait");
  6925. }
  6926. for_player_or_id = player.getId(p_uuid);
  6927. world_name = list.getIndex(args, 2);
  6928. world = world.get(world_name);
  6929. if(world == null) {
  6930. msg.prefix(player, prefix_world, "This world is not loaded.");
  6931. goto("wait");
  6932. }
  6933. }
  6934. inv.saveForPlayer(player, for_player_or_id, world);
  6935. msg.prefix(player, prefix_commands, "Inventory saved.");
  6936. goto("wait");
  6937. }
  6938. if(arg0 == "loadfrom") {
  6939. if(size != 1 && size != 3) {
  6940. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  6941. goto("wait");
  6942. }
  6943. if(size == 1) {
  6944. from_player_or_id = player.getId(player);
  6945. world = loc.getWorld(entity.getLocation(player));
  6946. }
  6947. if(size == 3) {
  6948. if(!perm.has(player, "inv.loadFrom")) {
  6949. perm.no(player, "inv.loadFrom");
  6950. goto("wait");
  6951. }
  6952. p_name = list.getIndex(args, 1);
  6953. p_uuid = player.getUuid(p_name);
  6954. if(p_uuid == null) {
  6955. msg.prefix(player, prefix_commands, "This player has never been online.");
  6956. goto("wait");
  6957. }
  6958. p = read.player(p_name);
  6959. if(p != null) {
  6960. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  6961. goto("wait");
  6962. }
  6963. from_player_or_id = player.getId(p_uuid);
  6964. world_name = list.getIndex(args, 2);
  6965. world = world.get(world_name);
  6966. if(world == null) {
  6967. msg.prefix(player, prefix_world, "This world is not loaded.");
  6968. goto("wait");
  6969. }
  6970. }
  6971. inv.loadFromPlayer(player, from_player_or_id, world);
  6972. msg.prefix(player, prefix_commands, "Inventory loaded.");
  6973. goto("wait");
  6974. }
  6975. goto("wait");
  6976. @boost
  6977. entity.throw(player, 0, 5, 0);
  6978. goto("wait");
  6979. @memory
  6980. msg.prefix(player, prefix_commands, concat("Used RAM: ", text.number(usedMemory()), " / ", text.number(math.round(allocatedMemory())), " MB"));
  6981. goto("wait");
  6982. @world
  6983. if(size == 0) {
  6984. @world_syntax
  6985. msg.prefix(player, prefix_world, "/world ...");
  6986. msg(player, "§b - info <world> §rShows info about a world");
  6987. msg(player, "§b - tp <world> [player] §rTeleports a player to a world");
  6988. msg(player, "§b - list §rShows all loaded worlds");
  6989. msg(player, "§b - load <world> §rLoads a world");
  6990. msg(player, "§b - unload <world> §rUnloads a world (removes it from memory)");
  6991. msg(player, "§b - setspawn §rSets the world's spawn");
  6992. msg(player, "§b - diffi <world> <diffi> §rSets the world's difficulty");
  6993. goto("wait");
  6994. }
  6995. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6996. if(arg0 == "info") {
  6997. msg(player, getSpacer());
  6998. world = loc.getWorld(entity.getLocation(player));
  6999. msg(player, "§6World: §r", world.getName(world));
  7000. msg(player, "§6Rain: §r", world.hasStorm(world));
  7001. time = world.getTime(world);
  7002. while(time >= 24000) {
  7003. time -= 24000;
  7004. }
  7005. msg(player, "§6Zeit: §r", text.number(time));
  7006. goto("wait");
  7007. }
  7008. if(arg0 == "tp") {
  7009. if(size < 2 || size > 3) {
  7010. msg.prefix(player, prefix_world, "§r/world tp <world> [player]");
  7011. goto("wait");
  7012. }
  7013. if(size >= 2) {
  7014. world_name = text.toLowerCase(list.getIndex(args, 1));
  7015. world = world.get(world_name);
  7016. if(world == null) {
  7017. msg.prefix(player, prefix_world, "This world is not loaded.");
  7018. goto("wait");
  7019. }
  7020. }
  7021. if(size == 3) {
  7022. affectedname = list.getIndex(args, 2);
  7023. affectedplayer = read.player(affectedname);
  7024. if(affectedplayer == null) {
  7025. msg.prefix(player, prefix_world, "This player is not online.");
  7026. goto("wait");
  7027. }
  7028. }
  7029. if(player.hasMinigame(affectedplayer)) {
  7030. if(size == 3) {
  7031. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  7032. } else {
  7033. msg.prefix(player, prefix_commands, "You can't teleport now.");
  7034. }
  7035. goto("wait");
  7036. }
  7037. if(player != affectedplayer) {
  7038. affectedname = player.getName(affectedplayer);
  7039. msg.prefix(player, prefix_world, concat(affectedname, " was teleported to the spawn of the world ", world_name, "."));
  7040. }
  7041. if(world_name == "games") {
  7042. loc = world.getGamesSpawn();
  7043. } elseif(world_name == "creative") {
  7044. loc = world.getCreativeSpawn();
  7045. } elseif(world_name == "story") {
  7046. loc = world.getStorySpawn();
  7047. } else {
  7048. loc = world.getSpawn(world);
  7049. }
  7050. player.teleport(affectedplayer, loc, true);
  7051. goto("wait");
  7052. }
  7053. if(arg0 == "list") {
  7054. msg.prefix(player, prefix_world, "Loaded worlds:");
  7055. worldlist = world.getAll();
  7056. for(i = 0; i < list.getSize(worldlist); i++) {
  7057. msg(player, " - ", world.getName(list.getIndex(worldlist, i)));
  7058. }
  7059. msg(player, getSpacer());
  7060. goto("wait");
  7061. }
  7062. if(arg0 == "load") {
  7063. if(size != 2) {
  7064. msg.prefix(player, prefix_world, "§r/world load <world>");
  7065. goto("wait");
  7066. }
  7067. worldname = list.getIndex(args, 1);
  7068. world = world.get(worldname);
  7069. if(world != null) {
  7070. msg.prefix(player, prefix_world, "This world is already loaded.");
  7071. goto("wait");
  7072. }
  7073. if(!world.register(worldname)) {
  7074. msg.prefix(player, prefix_world, concat("The world ", worldname, " can't be found."));
  7075. goto("wait");
  7076. }
  7077. msg.prefix(player, prefix_world, "The world was loaded.");
  7078. goto("wait");
  7079. }
  7080. if(arg0 == "unload") {
  7081. if(size != 2) {
  7082. msg.prefix(player, prefix_world, "§r/world unload <world>");
  7083. goto("wait");
  7084. }
  7085. worldname = list.getIndex(args, 1);
  7086. world = world.get(worldname);
  7087. if(world == null) {
  7088. msg.prefix(player, prefix_world, "This world is not loaded.");
  7089. goto("wait");
  7090. }
  7091. if(!world.unregister(worldname)) {
  7092. msg.prefix(player, prefix_world, "This world can't be unlaoded.");
  7093. goto("wait");
  7094. }
  7095. msg.prefix(player, prefix_world, "You unlaoded this world.");
  7096. goto("wait");
  7097. }
  7098. if(arg0 == "setspawn") {
  7099. location = entity.getLocation(player);
  7100. world.setSpawn(location, 0);
  7101. msg.prefix(player, prefix_world, concat("New spawn of the world ", world.getName(loc.getWorld(location)), " set."));
  7102. goto("wait");
  7103. }
  7104. if(arg0 == "diffi") {
  7105. if(size != 3) {
  7106. msg.prefix(player, prefix_world, "§r/world diffi <world> <diffi>");
  7107. goto("wait");
  7108. }
  7109. worldname = list.getIndex(args, 1);
  7110. world = world.get(worldname);
  7111. if(world == null) {
  7112. msg.prefix(player, prefix_world, "This world is not loaded.");
  7113. goto("wait");
  7114. }
  7115. diffi_string = list.getIndex(args, 2);
  7116. if(diffi_string != "PEACEFUL" || diffi_string != "EASY" || diffi_string != "NORMAL" || diffi_string != "HARD") {
  7117. msg.prefix(player, prefix_world, "False input.");
  7118. goto("wait");
  7119. }
  7120. world.setDiffi(world, diffi_string);
  7121. msg.prefix(player, prefix_world, "Difficulty changed.");
  7122. goto("wait");
  7123. }
  7124. goto("world_syntax");
  7125. @giveup
  7126. script_id = quest.getFromPlayer(player);
  7127. if(script_id == null) {
  7128. msg.prefix(player, prefix_quest, "You are not in a quest.");
  7129. goto("wait");
  7130. }
  7131. script = script.getFromId(script_id);
  7132. if(script == null) {
  7133. msg.prefix(player, prefix_quest, "You have no quest.");
  7134. goto("wait");
  7135. }
  7136. setScriptVar("player", player);
  7137. script.callEvent("quest_term", script);
  7138. quest.term(script, player);
  7139. msg.prefix(player, prefix_quest, "Quest termed.");
  7140. goto("wait");
  7141. @leave
  7142. set = player.getMinigameIds(player);
  7143. iter = set.iterator(set);
  7144. if(hasNext(iter)) {
  7145. script_id = next(iter);
  7146. script = script.getFromId(script_id);
  7147. if(script == null) {
  7148. snuvi.debug(concat("Player left game without existing gamescript ", set));
  7149. 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.");
  7150. player.resetMinigames(player);
  7151. entity.teleport(player, gamesspawn);
  7152. goto("wait");
  7153. }
  7154. minigame.hub(script, player);
  7155. goto("wait");
  7156. }
  7157. msg.prefix(player, "§dScript", "You are not in a minigame.");
  7158. goto("wait");
  7159. function minigame.hub(script, player) {
  7160. script.setVar(script, "player", player);
  7161. script.callEvent("player_giveup", script);
  7162. }
  7163. @jail
  7164. if(size != 1) {
  7165. msg.prefix(player, prefix_commands, "/jail <player>");
  7166. } else {
  7167. p_name = list.getIndex(args, 0);
  7168. if(!checkIfEverOnline(p_name)) {
  7169. msg.prefix(player, prefix_jail, "This player has never been online.");
  7170. goto("wait");
  7171. }
  7172. p_uuid = player.getUuid(p_name);
  7173. if(isJailed(p_uuid)) {
  7174. msg.prefix(player, prefix_jail, "This player is already jailed.");
  7175. goto("wait");
  7176. }
  7177. if(player_name == p_name) {
  7178. msg.prefix(player, prefix_jail, "Self-Jailing isn't a good idea.");
  7179. goto("wait");
  7180. }
  7181. if(!isOnline(p_name)) {
  7182. msg.prefix(player, prefix_jail, "This player is not online.");
  7183. goto("wait");
  7184. }
  7185. p = read.player(p_name);
  7186. if(perm.has(p, "jail")) {
  7187. msg.prefix(player, prefix_jail, "You can't jail this player.");
  7188. goto("wait");
  7189. }
  7190. list.add(jailed_list, p_uuid);
  7191. msg.prefix(player, prefix_jail, concat(p_name, " wurde gejailt"));
  7192. showJail(p_name);
  7193. if(!jail_loop_active) {
  7194. sgoto(5, "jailloop");
  7195. }
  7196. }
  7197. goto("wait");
  7198. @unjail
  7199. if(size != 1) {
  7200. msg.prefix(player, prefix_commands, "/unjail <player>");
  7201. } else {
  7202. p_name = list.getIndex(args, 0);
  7203. if(!checkIfEverOnline(p_name)) {
  7204. msg.prefix(player, prefix_jail, "This player has never been online.");
  7205. goto("wait");
  7206. }
  7207. p_uuid = player.getUuid(p_name);
  7208. if(!isJailed(p_uuid)) {
  7209. msg.prefix(player, prefix_jail, "This player is not jailed.");
  7210. goto("wait");
  7211. }
  7212. list.remove(jailed_list, p_uuid);
  7213. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  7214. }
  7215. goto("wait");
  7216. //--------------------------------------------------
  7217. //Inv-Utils
  7218. //--------------------------------------------------
  7219. function inv.show(from_player, to_player) {
  7220. player_inv = player.getInv(from_player);
  7221. //inv = inv.new("333303000 333333333 333333333 333333333 000000000 333333333");
  7222. inv = inv.new("333303000333333333333333333333333333000000000333333333");
  7223. set.add($invseeids, inv.getId(inv));
  7224. inv.setItem(inv, 0, entity.getEquip(from_player, "head"));
  7225. inv.setItem(inv, 1, entity.getEquip(from_player, "chest"));
  7226. inv.setItem(inv, 2, entity.getEquip(from_player, "legs"));
  7227. inv.setItem(inv, 3, entity.getEquip(from_player, "feet"));
  7228. inv.setItem(inv, 4, entity.getEquip(from_player, "offhand"));
  7229. for(slot = 0; slot <= 8; slot++) {
  7230. inv.setItem(inv, slot + 32, inv.getItem(player_inv, slot));
  7231. }
  7232. for(slot = 0; slot <= 26; slot++) {
  7233. inv.setItem(inv, slot + 5, inv.getItem(player_inv, slot + 9));
  7234. }
  7235. inv.open(inv, to_player, concat("Inventory of ", player.getName(from_player)));
  7236. }
  7237. //--------------------------------------------------
  7238. //Databank-Utils
  7239. //--------------------------------------------------
  7240. function databank.isExistingTable(table) {
  7241. temp = false;
  7242. stmt = databank.prepare("SHOW TABLES");
  7243. result = databank.execute(stmt);
  7244. while(databank.next(result)) {
  7245. if(table == databank.getString(result, 1)) {
  7246. temp = true;
  7247. break;
  7248. }
  7249. }
  7250. databank.close(result);
  7251. databank.close(stmt);
  7252. return temp;
  7253. }
  7254. function databank.getTableFields(table) {
  7255. fields = list.new();
  7256. stmt = databank.prepare(concat("SHOW FIELDS FROM ", table));
  7257. result = databank.execute(stmt);
  7258. while(databank.next(result)) {
  7259. list.add(fields, databank.getString(result, 1));
  7260. }
  7261. databank.close(result);
  7262. databank.close(stmt);
  7263. return fields;
  7264. }
  7265. function databank.getTableDatatypes(table) {
  7266. stmt = databank.prepare(concat("SHOW CREATE TABLE ", table));
  7267. result = databank.execute(stmt);
  7268. if(databank.next(result)) {
  7269. temp = databank.getString(result, 2);
  7270. }
  7271. databank.close(result);
  7272. databank.close(stmt);
  7273. return temp;
  7274. }
  7275. //--------------------------------------------------
  7276. //Tipp-Utils
  7277. //--------------------------------------------------
  7278. function tipp.register(tipp_key, tipp_value) {
  7279. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  7280. databank.setString(stmt, 1, tipp_key);
  7281. databank.setString(stmt, 2, tipp_value);
  7282. databank.setString(stmt, 3, tipp_value);
  7283. databank.workerExecute(stmt);
  7284. }
  7285. function tipp.get(tipp_key) {
  7286. tipp_value = null;
  7287. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  7288. databank.setString(stmt, 1, tipp_key);
  7289. result = databank.execute(stmt);
  7290. while(databank.next(result)) {
  7291. tipp_value = databank.getString(result, 1);
  7292. }
  7293. databank.close(result);
  7294. databank.close(stmt);
  7295. return tipp_value;
  7296. }
  7297. //--------------------------------------------------
  7298. //Warp-Utils
  7299. //--------------------------------------------------
  7300. function warp.create(warp_group, warp_name, location) {
  7301. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7302. config.set(config, "world", world.getName(loc.getWorld(location)));
  7303. config.set(config, "x", loc.getX(location));
  7304. config.set(config, "y", loc.getY(location));
  7305. config.set(config, "z", loc.getZ(location));
  7306. config.set(config, "yaw", loc.getYaw(location));
  7307. config.set(config, "pitch", loc.getPitch(location));
  7308. config.saveAsync(config);
  7309. }
  7310. function warp.exists(warp_group, warp_name) {
  7311. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7312. return config.exists(config);
  7313. }
  7314. function warp.getGroups() {
  7315. file = file.new("scripts/configs/warps");
  7316. file_list = file.getList(file);
  7317. groups_list = list.new();
  7318. iter = list.iterator(file_list);
  7319. while(hasNext(iter)) {
  7320. warp = file.getName(next(iter));
  7321. list.add(groups_list, warp);
  7322. }
  7323. return groups_list;
  7324. }
  7325. function warp.get(warp_group, warp_name) {
  7326. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7327. if(config.exists(config)) {
  7328. config.load(config);
  7329. }
  7330. world_name = text.convert(config.getString(config, "world", "null"));
  7331. if(world_name == null) {
  7332. return null;
  7333. }
  7334. world = world.get(world_name);
  7335. x = config.getDouble(config, "x", 0);
  7336. y = config.getDouble(config, "y", 100);
  7337. z = config.getDouble(config, "z", 0);
  7338. yaw = config.getDouble(config, "yaw", 0);
  7339. pitch = config.getDouble(config, "pitch", 0);
  7340. location = loc.new(world, x, y, z, yaw, pitch);
  7341. return location;
  7342. }
  7343. function warp.delete(warp_group, warp_name) {
  7344. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7345. if(!config.exists(config)) {
  7346. return false;
  7347. }
  7348. config.delete(config);
  7349. return true;
  7350. }
  7351. function warp.getList(warp_group) {
  7352. file = file.new(concat("scripts/configs/warps/", warp_group));
  7353. warps_list = list.new();
  7354. if(file.exists(file)) {
  7355. file_list = file.getList(file);
  7356. iter = list.iterator(file_list);
  7357. while(hasNext(iter)) {
  7358. warp = file.getName(next(iter));
  7359. warp = text.replace(warp, ".snuvic", "");
  7360. list.add(warps_list, warp);
  7361. }
  7362. }
  7363. return warps_list;
  7364. }
  7365. //--------------------------------------------------
  7366. //Home-Utils
  7367. //--------------------------------------------------
  7368. function home.set(player_id, home_name, location) {
  7369. stmt = databank.prepare("INSERT INTO homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  7370. databank.setInt(stmt, 1, player_id);
  7371. databank.setString(stmt, 2, home_name);
  7372. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  7373. databank.setInt(stmt, 4, loc.getX(location));
  7374. databank.setInt(stmt, 5, loc.getY(location));
  7375. databank.setInt(stmt, 6, loc.getZ(location));
  7376. databank.setInt(stmt, 7, loc.getYaw(location));
  7377. databank.setInt(stmt, 8, loc.getPitch(location));
  7378. databank.workerExecute(stmt);
  7379. }
  7380. function home.delete(player_id, home_name) {
  7381. stmt = databank.prepare("DELETE FROM homes WHERE player_id = ? AND name = ?;");
  7382. databank.setInt(stmt, 1, player_id);
  7383. databank.setString(stmt, 2, home_name);
  7384. databank.workerExecute(stmt);
  7385. }
  7386. function home.getLocation(player_id, home_name) {
  7387. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM homes WHERE player_id = ? AND name = ?;");
  7388. databank.setInt(stmt, 1, player_id);
  7389. databank.setString(stmt, 2, home_name);
  7390. result = databank.execute(stmt);
  7391. if(databank.next(result)) {
  7392. world = world.get(databank.getString(result, 1));
  7393. if(world == null) {
  7394. return null;
  7395. }
  7396. x = databank.getDouble(result, 2);
  7397. y = databank.getDouble(result, 3);
  7398. z = databank.getDouble(result, 4);
  7399. yaw = databank.getDouble(result, 5);
  7400. pitch = databank.getDouble(result, 6);
  7401. location = loc.new(world, x, y, z, yaw, pitch);
  7402. }
  7403. databank.close(result);
  7404. databank.close(stmt);
  7405. return location;
  7406. }
  7407. function home.exists(player_id, home_name) {
  7408. stmt = databank.prepare("SELECT player_id FROM homes WHERE player_id = ? AND name = ?;");
  7409. databank.setInt(stmt, 1, player_id);
  7410. databank.setString(stmt, 2, home_name);
  7411. result = databank.execute(stmt);
  7412. if(databank.next(result)) {
  7413. temp = true;
  7414. } else {
  7415. temp = false;
  7416. }
  7417. databank.close(result);
  7418. databank.close(stmt);
  7419. return temp;
  7420. }
  7421. function home.getList(player_id) {
  7422. homes_list = list.new();
  7423. stmt = databank.prepare("SELECT name FROM homes WHERE player_id = ?;");
  7424. databank.setInt(stmt, 1, player_id);
  7425. result = databank.execute(stmt);
  7426. while(databank.next(result)) {
  7427. list.add(homes_list, databank.getString(result, 1));
  7428. }
  7429. databank.close(result);
  7430. databank.close(stmt);
  7431. return homes_list;
  7432. }
  7433. function hasTpaRequest(player_uuid, aim_uuid) {
  7434. for(i = 0; i < list.getSize($tpa_request); i++) {
  7435. array = list.getIndex($tpa_request, i);
  7436. if(array[0] == player_uuid && array[1] == aim_uuid) {
  7437. list.removeIndex($tpa_request, i);
  7438. return true;
  7439. }
  7440. }
  7441. return false;
  7442. }
  7443. function addTpaRequest(player_uuid, aim_uuid) {
  7444. array = array.new(2);
  7445. array[0] = player_uuid;
  7446. array[1] = aim_uuid;
  7447. list.add($tpa_request, array);
  7448. }
  7449. function setCommandHelps() {
  7450. command.clearHelp();
  7451. command.clearIgnored();
  7452. command.addIgnored("teleport");
  7453. command.addIgnored("time");
  7454. command.addIgnored("help");
  7455. command.addIgnored("ban");
  7456. command.addIgnored("kick");
  7457. command.addIgnored("kill");
  7458. command.addIgnored("gamemode");
  7459. addCommandHelp("silentjoin");
  7460. addCommandHelp("nowb");
  7461. addCommandHelp("coords");
  7462. addCommandHelp("ping");
  7463. addCommandHelp("rank");
  7464. addCommandHelp("back");
  7465. addCommandHelp("boost");
  7466. addCommandHelp("bug");
  7467. addCommandHelp("report");
  7468. addCommandHelp("skills");
  7469. addCommandHelp("startgame");
  7470. addCommandHelp("top");
  7471. addCommandHelp("ride");
  7472. addCommandHelp("repair");
  7473. addCommandHelp("live");
  7474. addCommandHelp("hack");
  7475. addCommandHelpChildPlayer("mute");
  7476. addCommandHelpChildPlayer("unmute");
  7477. addCommandHelpChildPlayer("tpa");
  7478. addCommandHelpChildPlayer("tpaccept");
  7479. addCommandHelpChildPlayer("tpahere");
  7480. addCommandHelpChildPlayer("tpaccepthere");
  7481. addCommandHelpChildPlayer("head");
  7482. addCommandHelpChildPlayer("seen");
  7483. addCommandHelpChildPlayer("heal");
  7484. addCommandHelpChildPlayer("feed");
  7485. help = addCommandHelp("lightning");
  7486. addCommandAlias(help, "thor", "lightning");
  7487. help = addCommandHelp("color");
  7488. addCommandAlias(help, "colour", "color");
  7489. help = addCommandHelp("iteminfo");
  7490. addCommandAlias(help, "itemdb", "iteminfo");
  7491. help = addCommandHelp("head");
  7492. addCommandAlias(help, "skull", "head");
  7493. help = addCommandHelp("memory");
  7494. addCommandAlias(help, "ram", "memory");
  7495. help = addCommandHelp("afk");
  7496. addCommandAlias(help, "afklo", "afk");
  7497. help = addCommandHelp("leave");
  7498. addCommandAlias(help, "l", "leave");
  7499. addCommandAlias(help, "hub", "leave");
  7500. help = addCommandHelp("giveup");
  7501. addCommandAlias(help, "fuckit", "giveup");
  7502. help = command.newHelp("vanish", "vanish");
  7503. //vanish [on] [player]
  7504. helpArg0 = command.newHelpLiteral("on");
  7505. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7506. command.addHelpChild(help, helpArg0);
  7507. //vanish [off] [player]
  7508. helpArg0 = command.newHelpLiteral("off");
  7509. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7510. command.addHelpChild(help, helpArg0);
  7511. command.addHelp(help);
  7512. addCommandAlias(help, "v", "vanish");
  7513. help = command.newHelp("start", "start");
  7514. command.addHelpChild(help, command.newHelpLiteral("ai"));
  7515. command.addHelpChild(help, command.newHelpLiteral("chat"));
  7516. command.addHelpChild(help, command.newHelpLiteral("commands"));
  7517. command.addHelpChild(help, command.newHelpLiteral("creative"));
  7518. command.addHelpChild(help, command.newHelpLiteral("damage"));
  7519. command.addHelpChild(help, command.newHelpLiteral("doors"));
  7520. command.addHelpChild(help, command.newHelpLiteral("harvest"));
  7521. command.addHelpChild(help, command.newHelpLiteral("herobrine"));
  7522. command.addHelpChild(help, command.newHelpLiteral("games"));
  7523. command.addHelpChild(help, command.newHelpLiteral("mails"));
  7524. command.addHelpChild(help, command.newHelpLiteral("perms"));
  7525. command.addHelpChild(help, command.newHelpLiteral("pumpkin"));
  7526. command.addHelpChild(help, command.newHelpLiteral("scheduler"));
  7527. command.addHelpChild(help, command.newHelpLiteral("shop"));
  7528. command.addHelpChild(help, command.newHelpLiteral("sitting"));
  7529. command.addHelpChild(help, command.newHelpLiteral("stats"));
  7530. command.addHelpChild(help, command.newHelpLiteral("story"));
  7531. command.addHelpChild(help, command.newHelpLiteral("survival"));
  7532. command.addHelpChild(help, command.newHelpLiteral("ticket"));
  7533. command.addHelpChild(help, command.newHelpLiteral("timber"));
  7534. command.addHelpChild(help, command.newHelpLiteral("voxel"));
  7535. command.addHelp(help);
  7536. help = command.newHelp("gamemode", "gamemode");
  7537. helpArg0 = command.newHelpLiteral("adventure");
  7538. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7539. command.addHelpChild(help, helpArg0);
  7540. helpArg0 = command.newHelpLiteral("creative");
  7541. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7542. command.addHelpChild(help, helpArg0);
  7543. helpArg0 = command.newHelpLiteral("spectator");
  7544. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7545. command.addHelpChild(help, helpArg0);
  7546. helpArg0 = command.newHelpLiteral("survival");
  7547. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7548. command.addHelpChild(help, helpArg0);
  7549. helpArg0 = command.newHelpInt("0-3", 0, 3);
  7550. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7551. command.addHelpChild(help, helpArg0);
  7552. command.addHelp(help);
  7553. addCommandAlias(help, "gm", "gamemode");
  7554. help = command.newHelp("databank", "databank");
  7555. //databank showtables
  7556. command.addHelpChild(help, command.newHelpLiteral("showtables"));
  7557. //databank showfields <table>
  7558. helpArg0 = command.newHelpLiteral("showfields");
  7559. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  7560. command.addHelpChild(help, helpArg0);
  7561. //databank showdataypes <table>
  7562. helpArg0 = command.newHelpLiteral("showdataypes");
  7563. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  7564. command.addHelpChild(help, helpArg0);
  7565. command.addHelp(help);
  7566. help = command.newHelp("copyisland", "copyisland");
  7567. //copyisland copy/paste
  7568. command.addHelpChild(help, command.newHelpLiteral("copy"));
  7569. command.addHelpChild(help, command.newHelpLiteral("paste"));
  7570. //copyisland pos1/pos2
  7571. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  7572. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  7573. command.addHelp(help);
  7574. help = command.newHelp("fly", "fly");
  7575. helpArg0 = command.newHelpSpecial("Player", "player", "fly.other");
  7576. command.addHelpChild(helpArg0, command.newHelpLiteral("on"));
  7577. command.addHelpChild(helpArg0, command.newHelpLiteral("off"));
  7578. command.addHelpChild(help, helpArg0);
  7579. command.addHelp(help);
  7580. help = command.newHelp("allsounds", "allsounds");
  7581. command.addHelpChild(help, command.newHelpLiteral("start"));
  7582. command.addHelpChild(help, command.newHelpLiteral("stop"));
  7583. command.addHelp(help);
  7584. help = command.newHelp("spawn", "spawn");
  7585. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7586. command.addHelp(help);
  7587. help = command.newHelp("games", "games");
  7588. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7589. command.addHelp(help);
  7590. help = command.newHelp("story", "story");
  7591. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7592. command.addHelp(help);
  7593. help = command.newHelp("ass", "ass");
  7594. //ass set <name>
  7595. helpArg0 = command.newHelpLiteral("set");
  7596. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7597. command.addHelpChild(help, helpArg0);
  7598. //ass rename <name>
  7599. helpArg0 = command.newHelpLiteral("rename");
  7600. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7601. command.addHelpChild(help, helpArg0);
  7602. //ass remove <radius>
  7603. helpArg0 = command.newHelpLiteral("remove");
  7604. command.addHelpChild(helpArg0, command.newHelpInt("radius", 0, 30));
  7605. command.addHelpChild(help, helpArg0);
  7606. command.addHelp(help);
  7607. help = command.newHelp("tppos", "tppos");
  7608. helpArg0 = command.newHelpInt("x", -16000, 16000);
  7609. helpArg1 = command.newHelpInt("y", 0, 1000);
  7610. helpArg2 = command.newHelpInt("z", -16000, 16000);
  7611. helpArg3 = command.newHelpString("world", false);
  7612. helpArg4 = command.newHelpSpecial("Player", "player");
  7613. command.addHelpChild(helpArg3, helpArg4);
  7614. command.addHelpChild(helpArg2, helpArg3);
  7615. command.addHelpChild(helpArg1, helpArg2);
  7616. command.addHelpChild(helpArg0, helpArg1);
  7617. command.addHelpChild(help, helpArg0);
  7618. command.addHelp(help);
  7619. help = command.newHelp("stats", "stats");
  7620. addStatsGameHelp(help, "BedWars");
  7621. addStatsGameHelp(help, "RageMode");
  7622. addStatsGameHelp(help, "Jump'n'Run");
  7623. addStatsGameHelp(help, "Rebuild");
  7624. addStatsGameHelp(help, "FastBridge");
  7625. addStatsGameHelp(help, "SnowGame");
  7626. addStatsGameHelp(help, "TJR");
  7627. addStatsGameHelp(help, "IJR");
  7628. addStatsGameHelp(help, "Letters");
  7629. addStatsGameHelp(help, "Sammelfieber");
  7630. addStatsGameHelp(help, "Buttons");
  7631. addStatsGameHelp(help, "HideAndSeek");
  7632. addStatsGameHelp(help, "Inverting");
  7633. addStatsGameHelp(help, "Spleef");
  7634. addStatsGameHelp(help, "Knockfight");
  7635. addStatsGameHelp(help, "Leapfrog");
  7636. addStatsGameHelp(help, "Parcour");
  7637. addStatsGameHelp(help, "Halma");
  7638. addStatsGameHelp(help, "ShoppingChaos");
  7639. addStatsGameHelp(help, "MengerRun");
  7640. command.addHelp(help);
  7641. help = command.newHelp("setspawn", "setspawn");
  7642. command.addHelpChild(help, command.newHelpLiteral("server"));
  7643. command.addHelpChild(help, command.newHelpLiteral("games"));
  7644. command.addHelpChild(help, command.newHelpLiteral("creative"));
  7645. command.addHelpChild(help, command.newHelpLiteral("story"));
  7646. command.addHelp(help);
  7647. help = command.newHelp("datatools", "datatools");
  7648. //datatools hide <name>
  7649. helpArg0 = command.newHelpLiteral("hide");
  7650. command.addHelpChild(helpArg0, command.newHelpLiteral("enchantments"));
  7651. command.addHelpChild(helpArg0, command.newHelpLiteral("attributes"));
  7652. command.addHelpChild(helpArg0, command.newHelpLiteral("unbreakable"));
  7653. command.addHelpChild(helpArg0, command.newHelpLiteral("destroys"));
  7654. command.addHelpChild(helpArg0, command.newHelpLiteral("placed_on"));
  7655. command.addHelpChild(helpArg0, command.newHelpLiteral("potion_effects"));
  7656. command.addHelpChild(help, helpArg0);
  7657. //datatools attribute <attribute> <slot> <double> <op>
  7658. helpArg0 = command.newHelpLiteral("attribute");
  7659. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR"));
  7660. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR_TOUGHNESS"));
  7661. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_DAMAGE"));
  7662. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("KNOCKBACK_RESISTANCE"));
  7663. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MAX_HEALTH"));
  7664. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MOVEMENT_SPEED"));
  7665. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_SPEED"));
  7666. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("LUCK"));
  7667. command.addHelpChild(help, helpArg0);
  7668. //datatools hide-entity
  7669. command.addHelpChild(help, command.newHelpLiteral("hide-entity"));
  7670. //datatools show-entity
  7671. command.addHelpChild(help, command.newHelpLiteral("show-entity"));
  7672. //datatools name-entity <name>
  7673. helpArg0 = command.newHelpLiteral("name-entity");
  7674. helpArg1 = command.newHelpString("name", true);
  7675. command.addHelpChild(helpArg0, helpArg1);
  7676. command.addHelpChild(help, helpArg0);
  7677. //datatools name-visibility <name>
  7678. helpArg0 = command.newHelpLiteral("name-visibility");
  7679. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  7680. command.addHelpChild(help, helpArg0);
  7681. //datatools name-item <name>
  7682. helpArg0 = command.newHelpLiteral("name-item");
  7683. helpArg1 = command.newHelpString("name", true);
  7684. command.addHelpChild(helpArg0, helpArg1);
  7685. command.addHelpChild(help, helpArg0);
  7686. //datatools lore-item <line> <lore>
  7687. helpArg0 = command.newHelpLiteral("lore-item");
  7688. helpArg1 = command.newHelpInt("line", 0, 1000);
  7689. helpArg2 = command.newHelpString("lore", true);
  7690. command.addHelpChild(helpArg1, helpArg2);
  7691. command.addHelpChild(helpArg0, helpArg1);
  7692. command.addHelpChild(help, helpArg0);
  7693. command.addHelp(help);
  7694. addCommandAlias(help, "dt", "datatools");
  7695. help = command.newHelp("voxel", "voxel");
  7696. command.addHelpChild(help, command.newHelpInt("radius", 1, 5));
  7697. command.addHelpChild(help, command.newHelpLiteral("block"));
  7698. command.addHelp(help);
  7699. help = command.newHelp("help", "help");
  7700. command.addHelpChild(help, command.newHelpInt("page", 1, 100));
  7701. command.addHelp(help);
  7702. addCommandAlias(help, "mimimi", "help");
  7703. help = command.newHelp("suicide", "suicide");
  7704. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "kill.other"));
  7705. command.addHelp(help);
  7706. help = command.newHelp("tempfly", "tempfly");
  7707. helpArg0 = command.newHelpSpecial("Player", "player");
  7708. command.addHelpChild(helpArg0, command.newHelpInt("seconds", 1, 10000));
  7709. command.addHelpChild(help, helpArg0);
  7710. command.addHelp(help);
  7711. help = command.newHelp("tempban", "tempban");
  7712. helpArg0 = command.newHelpSpecial("Player", "player");
  7713. helpArg1 = command.newHelpInt("days", 1, 100);
  7714. helpArg2 = command.newHelpInt("hours", 1, 100);
  7715. helpArg3 = command.newHelpInt("minutes", 1, 100);
  7716. command.addHelpChild(helpArg3, command.newHelpString("reason", true));
  7717. command.addHelpChild(helpArg2, helpArg3);
  7718. command.addHelpChild(helpArg1, helpArg2);
  7719. command.addHelpChild(helpArg0, helpArg1);
  7720. command.addHelpChild(help, helpArg0);
  7721. command.addHelp(help);
  7722. help = command.newHelp("ban", "ban");
  7723. helpArg0 = command.newHelpSpecial("Player", "player");
  7724. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7725. command.addHelpChild(help, helpArg0);
  7726. command.addHelp(help);
  7727. help = command.newHelp("silentban", "silentban");
  7728. helpArg0 = command.newHelpSpecial("Player", "player");
  7729. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7730. command.addHelpChild(help, helpArg0);
  7731. command.addHelp(help);
  7732. help = command.newHelp("kick", "kick");
  7733. helpArg0 = command.newHelpSpecial("Player", "player");
  7734. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7735. command.addHelpChild(help, helpArg0);
  7736. command.addHelp(help);
  7737. help = command.newHelp("silentkick", "silentkick");
  7738. helpArg0 = command.newHelpSpecial("Player", "player");
  7739. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7740. command.addHelpChild(help, helpArg0);
  7741. command.addHelp(help);
  7742. help = command.newHelp("time", "time");
  7743. //time set <time>
  7744. helpArg0 = command.newHelpLiteral("set");
  7745. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  7746. command.addHelpChild(help, helpArg0);
  7747. //time add <time>
  7748. helpArg0 = command.newHelpLiteral("add");
  7749. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  7750. command.addHelpChild(help, helpArg0);
  7751. //time day / noon / night / midnight
  7752. command.addHelpChild(help, command.newHelpLiteral("day"));
  7753. command.addHelpChild(help, command.newHelpLiteral("noon"));
  7754. command.addHelpChild(help, command.newHelpLiteral("night"));
  7755. command.addHelpChild(help, command.newHelpLiteral("midnight"));
  7756. command.addHelp(help);
  7757. help = command.newHelp("enderchest", "enderchest");
  7758. //enderchest [player] <from-player>
  7759. helpArg0 = command.newHelpSpecial("Player", "player");
  7760. command.addHelpChild(helpArg0, command.newHelpString("from-player", false));
  7761. command.addHelpChild(help, helpArg0);
  7762. //enderchest [player] <from-player>
  7763. command.addHelpChild(help, command.newHelpString("from-player", false));
  7764. command.addHelp(help);
  7765. help = command.newHelp("nickname", "nickname");
  7766. command.addHelpChild(help, command.newHelpString("name", true));
  7767. command.addHelpChild(help, command.newHelpLiteral("remove"));
  7768. command.addHelp(help);
  7769. help = command.newHelp("perm", "perm");
  7770. //perm give <player> <perm>
  7771. helpArg0 = command.newHelpLiteral("give");
  7772. helpArg1 = command.newHelpSpecial("Player", "player");
  7773. command.addHelpChild(helpArg1, command.newHelpLiteral("admin"));
  7774. command.addHelpChild(helpArg1, command.newHelpLiteral("mod"));
  7775. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  7776. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  7777. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  7778. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  7779. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  7780. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  7781. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  7782. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  7783. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  7784. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass"));
  7785. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  7786. command.addHelpChild(helpArg0, helpArg1);
  7787. command.addHelpChild(help, helpArg0);
  7788. //perm remove <player> <perm>
  7789. helpArg0 = command.newHelpLiteral("remove");
  7790. helpArg1 = command.newHelpSpecial("Player", "player");
  7791. command.addHelpChild(helpArg1, command.newHelpLiteral("admin"));
  7792. command.addHelpChild(helpArg1, command.newHelpLiteral("mod"));
  7793. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  7794. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  7795. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  7796. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  7797. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  7798. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  7799. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  7800. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  7801. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass"));
  7802. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  7803. command.addHelpChild(helpArg0, helpArg1);
  7804. command.addHelpChild(help, helpArg0);
  7805. //perm removeall <player>
  7806. helpArg0 = command.newHelpLiteral("removeall");
  7807. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7808. command.addHelpChild(help, helpArg0);
  7809. //perm list <player>
  7810. helpArg0 = command.newHelpLiteral("list");
  7811. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7812. command.addHelpChild(help, helpArg0);
  7813. //perm toggle
  7814. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  7815. command.addHelp(help);
  7816. help = command.newHelp("script", "script");
  7817. //script start <scripts>
  7818. helpArg0 = command.newHelpLiteral("start");
  7819. command.addHelpChild(helpArg0, command.newHelpString("scrips...", true));
  7820. command.addHelpChild(help, helpArg0);
  7821. //script see
  7822. command.addHelpChild(help, command.newHelpLiteral("see"));
  7823. //script term
  7824. helpArg0 = command.newHelpLiteral("term");
  7825. command.addHelpChild(helpArg0, command.newHelpLiteral("all"));
  7826. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 1000000));
  7827. command.addHelpChild(help, helpArg0);
  7828. command.addHelp(help);
  7829. addCommandAlias(help, "s", "script");
  7830. help = command.newHelp("home", "home");
  7831. //home set
  7832. helpArg0 = command.newHelpLiteral("set");
  7833. command.addHelpChild(helpArg0, command.newHelpString("home", false));
  7834. command.addHelpChild(help, helpArg0);
  7835. //home delete
  7836. helpArg0 = command.newHelpLiteral("delete");
  7837. command.addHelpChild(helpArg0, command.newHelpString("home", false));
  7838. command.addHelpChild(help, helpArg0);
  7839. //home list
  7840. helpArg0 = command.newHelpLiteral("list");
  7841. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  7842. command.addHelpChild(help, helpArg0);
  7843. //home <name>
  7844. helpArg0 = command.newHelpString("home", false);
  7845. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  7846. command.addHelpChild(help, helpArg0);
  7847. command.addHelp(help);
  7848. help = command.newHelp("plot", "plot");
  7849. //plot info
  7850. command.addHelpChild(help, command.newHelpLiteral("info"));
  7851. command.addHelpChild(help, command.newHelpLiteral("i"));
  7852. //plot pos1/pos2
  7853. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  7854. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  7855. //plot create/create3D
  7856. command.addHelpChild(help, command.newHelpLiteral("create"));
  7857. command.addHelpChild(help, command.newHelpLiteral("create3D"));
  7858. //plot remove
  7859. helpArg0 = command.newHelpLiteral("remove");
  7860. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 10000));
  7861. command.addHelpChild(help, helpArg0);
  7862. //plot name <name>
  7863. helpArg0 = command.newHelpLiteral("name");
  7864. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7865. helpArg1 = command.newHelpInt("id", 0, 10000);
  7866. command.addHelpChild(helpArg1, command.newHelpString("name", true));
  7867. command.addHelpChild(helpArg0, helpArg1);
  7868. command.addHelpChild(help, helpArg0);
  7869. //plot share <name>
  7870. helpArg0 = command.newHelpLiteral("share");
  7871. helpArg1 = command.newHelpSpecial("Player", "player");
  7872. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7873. command.addHelpChild(helpArg0, helpArg1);
  7874. command.addHelpChild(help, helpArg0);
  7875. //plot kick <name>
  7876. helpArg0 = command.newHelpLiteral("kick");
  7877. helpArg1 = command.newHelpSpecial("Player", "player");
  7878. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7879. command.addHelpChild(helpArg0, helpArg1);
  7880. command.addHelpChild(help, helpArg0);
  7881. //plot raise
  7882. command.addHelpChild(help, command.newHelpLiteral("raise"));
  7883. //plot leader <name>
  7884. helpArg0 = command.newHelpLiteral("leader");
  7885. helpArg1 = command.newHelpSpecial("Player", "player");
  7886. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7887. command.addHelpChild(helpArg0, helpArg1);
  7888. command.addHelpChild(help, helpArg0);
  7889. //plot mod <name>
  7890. helpArg0 = command.newHelpLiteral("mod");
  7891. helpArg1 = command.newHelpSpecial("Player", "player");
  7892. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7893. command.addHelpChild(helpArg0, helpArg1);
  7894. command.addHelpChild(help, helpArg0);
  7895. //plot chest <name>
  7896. helpArg0 = command.newHelpLiteral("chest");
  7897. helpArg1 = command.newHelpSpecial("Player", "player");
  7898. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7899. command.addHelpChild(helpArg0, helpArg1);
  7900. command.addHelpChild(help, helpArg0);
  7901. //plot sell <price>
  7902. helpArg0 = command.newHelpLiteral("sell");
  7903. command.addHelpChild(helpArg0, command.newHelpInt("price", 1, 10000));
  7904. command.addHelpChild(help, helpArg0);
  7905. //plot moreinfo
  7906. command.addHelpChild(help, command.newHelpLiteral("moreinfo", "plot.moreinfo"));
  7907. //plot listall
  7908. command.addHelpChild(help, command.newHelpLiteral("listall"));
  7909. //plot flags <int> <boolean>
  7910. helpArg0 = command.newHelpLiteral("flags");
  7911. helpArg1 = command.newHelpInt("int", 1, 1000);
  7912. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  7913. command.addHelpChild(helpArg0, helpArg1);
  7914. command.addHelpChild(help, helpArg0);
  7915. //plot expand <anzahl>
  7916. helpArg0 = command.newHelpLiteral("expand");
  7917. helpArg1 = command.newHelpInt("anzahl", 1, 1000);
  7918. command.addHelpChild(helpArg1, command.newHelpInt("id", 1, 10000));
  7919. command.addHelpChild(helpArg0, helpArg1);
  7920. command.addHelpChild(help, helpArg0);
  7921. command.addHelp(help);
  7922. addCommandAlias(help, "p", "plot");
  7923. help = command.newHelp("warp", "warp");
  7924. //warp set [group] <name>
  7925. helpArg0 = command.newHelpLiteral("set", "warp.create");
  7926. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  7927. helpArg1 = command.newHelpString("group", false, "warp.create");
  7928. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  7929. command.addHelpChild(helpArg0, helpArg1);
  7930. command.addHelpChild(help, helpArg0);
  7931. //warp delete [group] <name>
  7932. helpArg0 = command.newHelpLiteral("delete", "warp.create");
  7933. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  7934. helpArg1 = command.newHelpString("group", false, "warp.create");
  7935. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  7936. command.addHelpChild(helpArg0, helpArg1);
  7937. command.addHelpChild(help, helpArg0);
  7938. //warp groups
  7939. command.addHelpChild(help, command.newHelpLiteral("groups", "warp.create"));
  7940. //warp list [group]
  7941. helpArg0 = command.newHelpLiteral("list");
  7942. command.addHelpChild(helpArg0, command.newHelpString("group", false, "warp.create"));
  7943. command.addHelpChild(help, helpArg0);
  7944. //warp [group] <name>
  7945. helpArg0 = command.newHelpString("name", false);
  7946. command.addHelpChild(help, helpArg0);
  7947. helpArg0 = command.newHelpString("group", false, "warp.create");
  7948. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  7949. command.addHelpChild(help, helpArg0);
  7950. command.addHelp(help);
  7951. help = command.newHelp("teleport", "teleport");
  7952. helpArg0 = command.newHelpSpecial("Player", "player");
  7953. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "to-player", "teleport.other"));
  7954. command.addHelpChild(help, helpArg0);
  7955. command.addHelp(help);
  7956. addCommandAlias(help, "tp", "teleport");
  7957. help = command.newHelp("lastseen", "lastseen");
  7958. command.addHelpChild(help, command.newHelpInt("amount", 1, 100));
  7959. command.addHelp(help);
  7960. help = command.newHelp("human", "human");
  7961. //human spawn
  7962. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  7963. //human set <name>
  7964. helpArg0 = command.newHelpLiteral("set");
  7965. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  7966. command.addHelpChild(help, helpArg0);
  7967. //human setuuid <uuid>
  7968. helpArg0 = command.newHelpLiteral("setuuid");
  7969. command.addHelpChild(helpArg0, command.newHelpString("uuid", false));
  7970. command.addHelpChild(help, helpArg0);
  7971. //human name
  7972. helpArg0 = command.newHelpLiteral("name");
  7973. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7974. command.addHelpChild(help, helpArg0);
  7975. //human kill
  7976. command.addHelpChild(help, command.newHelpLiteral("kill"));
  7977. //human size <scale>
  7978. helpArg0 = command.newHelpLiteral("size");
  7979. command.addHelpChild(helpArg0, command.newHelpInt("scale", 0, 100));
  7980. command.addHelpChild(help, helpArg0);
  7981. //human steve
  7982. command.addHelpChild(help, command.newHelpLiteral("steve"));
  7983. //human alex
  7984. command.addHelpChild(help, command.newHelpLiteral("alex"));
  7985. //human statue
  7986. helpArg0 = command.newHelpLiteral("statue");
  7987. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  7988. command.addHelpChild(help, helpArg0);
  7989. command.addHelp(help);
  7990. help = command.newHelp("mail", "mail");
  7991. //mail <player> <message>
  7992. helpArg0 = command.newHelpSpecial("Player", "player");
  7993. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  7994. command.addHelpChild(help, helpArg0);
  7995. //mail new
  7996. command.addHelpChild(help, command.newHelpLiteral("new"));
  7997. //mail inbox
  7998. command.addHelpChild(help, command.newHelpLiteral("inbox"));
  7999. //mail outbox
  8000. command.addHelpChild(help, command.newHelpLiteral("outbox"));
  8001. //mail reset
  8002. command.addHelpChild(help, command.newHelpLiteral("reset", "mail.reset"));
  8003. command.addHelp(help);
  8004. help = command.newHelp("playtime", "playtime");
  8005. //playtime [player]
  8006. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8007. //playtime all
  8008. command.addHelpChild(help, command.newHelpLiteral("all"));
  8009. //playtime month [1-12] [year]
  8010. helpArg0 = command.newHelpLiteral("month");
  8011. helpArg1 = command.newHelpInt("int", 1, 12);
  8012. command.addHelpChild(helpArg1, command.newHelpInt("year", 2019, 2024));
  8013. command.addHelpChild(helpArg0, helpArg1);
  8014. command.addHelpChild(help, helpArg0);
  8015. //playtime year [year]
  8016. helpArg0 = command.newHelpLiteral("year");
  8017. command.addHelpChild(helpArg0, command.newHelpInt("year", 2019, 2024));
  8018. command.addHelpChild(help, helpArg0);
  8019. command.addHelp(help);
  8020. help = command.newHelp("user", "user");
  8021. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  8022. command.addHelp(help);
  8023. help = command.newHelp("cli", "cli");
  8024. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8025. command.addHelp(help);
  8026. help = command.newHelp("plant", "plant");
  8027. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8028. command.addHelp(help);
  8029. help = command.newHelp("grow", "grow");
  8030. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8031. command.addHelp(help);
  8032. help = command.newHelp("plough", "plough");
  8033. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8034. command.addHelp(help);
  8035. help = command.newHelp("news", "news");
  8036. command.addHelpChild(help, command.newHelpString("text", true));
  8037. command.addHelp(help);
  8038. help = command.newHelp("inv", "inv");
  8039. //inv ignore
  8040. command.addHelpChild(help, command.newHelpLiteral("ignore"));
  8041. //inv see <player>
  8042. helpArg0 = command.newHelpLiteral("see");
  8043. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8044. command.addHelpChild(help, helpArg0);
  8045. //inv reload <player>
  8046. helpArg0 = command.newHelpLiteral("reload");
  8047. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8048. command.addHelpChild(help, helpArg0);
  8049. //inv loadFrom <player> <world>
  8050. helpArg0 = command.newHelpLiteral("loadFrom");
  8051. helpArg1 = command.newHelpSpecial("Player", "player");
  8052. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  8053. command.addHelpChild(helpArg0, helpArg1);
  8054. command.addHelpChild(help, helpArg0);
  8055. //inv saveFor <player> <world>
  8056. helpArg0 = command.newHelpLiteral("saveFor");
  8057. helpArg1 = command.newHelpSpecial("Player", "player");
  8058. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  8059. command.addHelpChild(helpArg0, helpArg1);
  8060. command.addHelpChild(help, helpArg0);
  8061. command.addHelp(help);
  8062. help = command.newHelp("warn", "warn");
  8063. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8064. command.addHelp(help);
  8065. help = command.newHelp("jail", "jail");
  8066. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8067. command.addHelp(help);
  8068. help = command.newHelp("unjail", "unjail");
  8069. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8070. command.addHelp(help);
  8071. help = command.newHelp("friend", "friend");
  8072. //friend add <player>
  8073. helpArg0 = command.newHelpLiteral("add");
  8074. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8075. command.addHelpChild(help, helpArg0);
  8076. //friend remove <player>
  8077. helpArg0 = command.newHelpLiteral("remove");
  8078. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8079. command.addHelpChild(help, helpArg0);
  8080. //friend list
  8081. command.addHelpChild(help, command.newHelpLiteral("list"));
  8082. command.addHelp(help);
  8083. addCommandAlias(help, "f", "friend");
  8084. help = command.newHelp("sign", "sign");
  8085. helpArg0 = command.newHelpInt("1-4", 1, 4);
  8086. command.addHelpChild(helpArg0, command.newHelpString("text", true));
  8087. command.addHelpChild(help, helpArg0);
  8088. command.addHelp(help);
  8089. help = command.newHelp("speed", "speed");
  8090. helpArg0 = command.newHelpInt("int", 1, 10);
  8091. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "speed.other"));
  8092. command.addHelpChild(help, helpArg0);
  8093. command.addHelp(help);
  8094. help = command.newHelp("errordebug", "errordebug");
  8095. command.addHelpChild(help, command.newHelpLiteral("list"));
  8096. command.addHelpChild(help, command.newHelpLiteral("clear"));
  8097. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  8098. command.addHelp(help);
  8099. help = command.newHelp("error", "error");
  8100. command.addHelpChild(help, command.newHelpLiteral("list"));
  8101. command.addHelpChild(help, command.newHelpLiteral("clear"));
  8102. command.addHelp(help);
  8103. help = command.newHelp("world", "world");
  8104. //world info <world>
  8105. helpArg0 = command.newHelpLiteral("info");
  8106. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8107. command.addHelpChild(help, helpArg0);
  8108. //world tp <world> [player]
  8109. helpArg0 = command.newHelpLiteral("tp");
  8110. helpArg1 = command.newHelpString("world", false);
  8111. command.addHelpChild(helpArg1, command.newHelpSpecial("Player", "player"));
  8112. command.addHelpChild(helpArg0, helpArg1);
  8113. command.addHelpChild(help, helpArg0);
  8114. //world list
  8115. command.addHelpChild(help, command.newHelpLiteral("list"));
  8116. //world load <world>
  8117. helpArg0 = command.newHelpLiteral("load");
  8118. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8119. command.addHelpChild(help, helpArg0);
  8120. //world unload <world>
  8121. helpArg0 = command.newHelpLiteral("unload");
  8122. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8123. command.addHelpChild(help, helpArg0);
  8124. //world diffi <world> <diffi>
  8125. helpArg0 = command.newHelpLiteral("diffi");
  8126. helpArg1 = command.newHelpString("world", false);
  8127. command.addHelpChild(helpArg1, command.newHelpLiteral("PEACEFUL"));
  8128. command.addHelpChild(helpArg1, command.newHelpLiteral("EASY"));
  8129. command.addHelpChild(helpArg1, command.newHelpLiteral("NORMAL"));
  8130. command.addHelpChild(helpArg1, command.newHelpLiteral("HARD"));
  8131. command.addHelpChild(helpArg0, helpArg1);
  8132. command.addHelpChild(help, helpArg0);
  8133. //world setspawn
  8134. helpArg0 = command.newHelpLiteral("setspawn");
  8135. command.addHelpChild(help, helpArg0);
  8136. command.addHelp(help);
  8137. help = command.newHelp("pvp", "pvp");
  8138. helpArg0 = command.newHelpLiteral("on");
  8139. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  8140. command.addHelpChild(help, helpArg0);
  8141. helpArg0 = command.newHelpLiteral("off");
  8142. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  8143. command.addHelpChild(help, helpArg0);
  8144. command.addHelp(help);
  8145. help = command.newHelp("game", "game");
  8146. command.addHelpChild(help, command.newHelpLiteral("open"));
  8147. command.addHelpChild(help, command.newHelpLiteral("close"));
  8148. command.addHelp(help);
  8149. help = command.newHelp("party", "party");
  8150. //party invite <player>
  8151. helpArg0 = command.newHelpLiteral("invite");
  8152. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8153. command.addHelpChild(help, helpArg0);
  8154. //party accept <player>
  8155. helpArg0 = command.newHelpLiteral("accept");
  8156. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8157. command.addHelpChild(help, helpArg0);
  8158. //party deny <player>
  8159. helpArg0 = command.newHelpLiteral("deny");
  8160. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8161. command.addHelpChild(help, helpArg0);
  8162. //party kick <player>
  8163. helpArg0 = command.newHelpLiteral("kick");
  8164. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8165. command.addHelpChild(help, helpArg0);
  8166. //party leave
  8167. command.addHelpChild(help, command.newHelpLiteral("leave"));
  8168. //party promote <player>
  8169. helpArg0 = command.newHelpLiteral("promote");
  8170. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8171. command.addHelpChild(help, helpArg0);
  8172. //party demote <player>
  8173. helpArg0 = command.newHelpLiteral("demote");
  8174. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8175. command.addHelpChild(help, helpArg0);
  8176. //party disband
  8177. command.addHelpChild(help, command.newHelpLiteral("disband"));
  8178. //party list
  8179. command.addHelpChild(help, command.newHelpLiteral("list"));
  8180. command.addHelp(help);
  8181. help = command.newHelp("var", "var");
  8182. helpArg0 = command.newHelpInt("id", 0, 1000000);
  8183. command.addHelpChild(helpArg0, command.newHelpString("varname", false));
  8184. command.addHelpChild(help, helpArg0);
  8185. command.addHelp(help);
  8186. help = command.newHelp("setservermessage", "setservermessage");
  8187. command.addHelpChild(help, command.newHelpString("message", true));
  8188. command.addHelp(help);
  8189. help = command.newHelp("clan", "clan");
  8190. //clan invite <name>
  8191. helpArg0 = command.newHelpLiteral("invite");
  8192. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8193. command.addHelpChild(help, helpArg0);
  8194. //clan accept <id/name/tag>
  8195. helpArg0 = command.newHelpLiteral("invite");
  8196. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  8197. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8198. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  8199. command.addHelpChild(help, helpArg0);
  8200. //clan info [id/name/tag]
  8201. helpArg0 = command.newHelpLiteral("info");
  8202. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  8203. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8204. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  8205. command.addHelpChild(help, helpArg0);
  8206. //clan create <name> <tag>
  8207. helpArg0 = command.newHelpLiteral("create");
  8208. helpArg1 = command.newHelpString("name", false);
  8209. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  8210. command.addHelpChild(helpArg0, helpArg1);
  8211. command.addHelpChild(help, helpArg0);
  8212. //clan kick <name>
  8213. helpArg0 = command.newHelpLiteral("kick");
  8214. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8215. command.addHelpChild(help, helpArg0);
  8216. //clan leader <name>
  8217. helpArg0 = command.newHelpLiteral("leader");
  8218. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8219. command.addHelpChild(help, helpArg0);
  8220. //clan mod <name>
  8221. helpArg0 = command.newHelpLiteral("mod");
  8222. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8223. command.addHelpChild(help, helpArg0);
  8224. //clan degrade <name>
  8225. helpArg0 = command.newHelpLiteral("degrade");
  8226. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8227. command.addHelpChild(help, helpArg0);
  8228. //clan leave
  8229. command.addHelpChild(help, command.newHelpLiteral("leave"));
  8230. //clan rename <name> <tag>
  8231. helpArg0 = command.newHelpLiteral("rename");
  8232. helpArg1 = command.newHelpString("name", false);
  8233. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  8234. command.addHelpChild(helpArg0, helpArg1);
  8235. command.addHelpChild(help, helpArg0);
  8236. //clan disband
  8237. command.addHelpChild(help, command.newHelpLiteral("disband"));
  8238. //clan msg <message>
  8239. helpArg0 = command.newHelpLiteral("msg");
  8240. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8241. command.addHelpChild(help, helpArg0);
  8242. //clan mail <message>
  8243. helpArg0 = command.newHelpLiteral("mail");
  8244. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8245. command.addHelpChild(help, helpArg0);
  8246. //clan shout <message>
  8247. helpArg0 = command.newHelpLiteral("shout");
  8248. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8249. command.addHelpChild(help, helpArg0);
  8250. //clan deposit <money>
  8251. helpArg0 = command.newHelpLiteral("deposit");
  8252. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  8253. command.addHelpChild(help, helpArg0);
  8254. //clan withdraw <money>
  8255. helpArg0 = command.newHelpLiteral("withdraw");
  8256. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  8257. command.addHelpChild(help, helpArg0);
  8258. //clan party
  8259. command.addHelpChild(help, command.newHelpLiteral("party"));
  8260. //clan setspawn
  8261. command.addHelpChild(help, command.newHelpLiteral("setspawn"));
  8262. //clan spawn
  8263. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  8264. //clan list
  8265. command.addHelpChild(help, command.newHelpLiteral("list"));
  8266. command.addHelp(help);
  8267. help = command.newHelp("shop", "shop");
  8268. //shop create
  8269. command.addHelpChild(help, command.newHelpLiteral("create"));
  8270. //shop admin
  8271. command.addHelpChild(help, command.newHelpLiteral("admin"));
  8272. //shop remove
  8273. helpArg0 = command.newHelpLiteral("remove");
  8274. command.addHelpChild(helpArg0, command.newHelpLiteral("buy"));
  8275. command.addHelpChild(helpArg0, command.newHelpLiteral("sell"));
  8276. command.addHelpChild(help, helpArg0);
  8277. //shop buy <amount> <price>
  8278. helpArg0 = command.newHelpLiteral("buy");
  8279. helpArg1 = command.newHelpInt("amount", 0, 1000);
  8280. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  8281. command.addHelpChild(helpArg0, helpArg1);
  8282. command.addHelpChild(help, helpArg0);
  8283. //shop sell <amount> <price>
  8284. helpArg0 = command.newHelpLiteral("sell");
  8285. helpArg1 = command.newHelpInt("amount", 0, 1000);
  8286. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  8287. command.addHelpChild(helpArg0, helpArg1);
  8288. command.addHelpChild(help, helpArg0);
  8289. command.addHelp(help);
  8290. help = command.newHelp("setmessage", "setmessage");
  8291. //setmessage info
  8292. command.addHelpChild(help, command.newHelpLiteral("info"));
  8293. //setmessage join <message>
  8294. helpArg0 = command.newHelpLiteral("join");
  8295. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8296. command.addHelpChild(help, helpArg0);
  8297. //setmessage leave <message>
  8298. helpArg0 = command.newHelpLiteral("leave");
  8299. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8300. command.addHelpChild(help, helpArg0);
  8301. //setmessage delete <player>
  8302. helpArg0 = command.newHelpLiteral("delete");
  8303. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "setmessage.delete"));
  8304. command.addHelpChild(help, helpArg0);
  8305. command.addHelp(help);
  8306. help = command.newHelp("tip", "tip");
  8307. //tipp list
  8308. helpArg0 = command.newHelpLiteral("list");
  8309. command.addHelpChild(help, helpArg0);
  8310. //tipp add <tipp> <text>
  8311. helpArg0 = command.newHelpLiteral("add");
  8312. helpArg1 = command.newHelpString("tip", false);
  8313. command.addHelpChild(helpArg1, command.newHelpString("text", true));
  8314. command.addHelpChild(helpArg0, helpArg1);
  8315. command.addHelpChild(help, helpArg0);
  8316. //tipp remove <tipp>
  8317. helpArg0 = command.newHelpLiteral("remove");
  8318. command.addHelpChild(helpArg0, command.newHelpString("tip", false));
  8319. command.addHelpChild(help, helpArg0);
  8320. //tipp <tipp> [player]
  8321. helpArg0 = command.newHelpString("tip", false);
  8322. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8323. command.addHelpChild(help, helpArg0);
  8324. command.addHelp(help);
  8325. help = command.newHelp("ticket", "ticket");
  8326. //ticket new <message>
  8327. helpArg0 = command.newHelpLiteral("new");
  8328. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8329. command.addHelpChild(help, helpArg0);
  8330. //ticket stop <ticket-id>
  8331. helpArg0 = command.newHelpLiteral("stop");
  8332. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000));
  8333. command.addHelpChild(help, helpArg0);
  8334. //ticket list
  8335. command.addHelpChild(help, command.newHelpLiteral("list", "isSupporter"));
  8336. //ticket get [ticket-id]
  8337. helpArg0 = command.newHelpLiteral("get");
  8338. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8339. command.addHelpChild(help, helpArg0);
  8340. //ticket finish <ticket-id>
  8341. helpArg0 = command.newHelpLiteral("finish");
  8342. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8343. command.addHelpChild(help, helpArg0);
  8344. //ticket release <ticket-id>
  8345. helpArg0 = command.newHelpLiteral("release");
  8346. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8347. command.addHelpChild(help, helpArg0);
  8348. //ticket report <ticket-id>
  8349. helpArg0 = command.newHelpLiteral("report");
  8350. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8351. command.addHelpChild(help, helpArg0);
  8352. command.addHelp(help);
  8353. command.sendHelp();
  8354. }
  8355. function addCommandHelp(command) {
  8356. help = command.newHelp(command, command);
  8357. command.addHelp(help);
  8358. return help;
  8359. }
  8360. function addCommandHelpChildString(command, arg0, bool) {
  8361. help = command.newHelp(command, command);
  8362. command.addHelpChild(help, command.newHelpString(arg0, bool));
  8363. command.addHelp(help);
  8364. }
  8365. function addCommandHelpChildPlayer(command) {
  8366. help = command.newHelp(command, command);
  8367. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8368. command.addHelp(help);
  8369. }
  8370. function addCommandHelpChildBool(command, arg0) {
  8371. help = command.newHelp(command, command);
  8372. command.addHelpChild(help, command.newHelpBool(arg0));
  8373. command.addHelp(help);
  8374. }
  8375. function addCommandAlias(help, alias, command) {
  8376. helpAlias = command.newHelp(alias, command);
  8377. command.addHelpAlias(helpAlias, help);
  8378. command.addHelp(helpAlias);
  8379. }
  8380. function addStatsGameHelp(help, game) {
  8381. helpArg0 = command.newHelpLiteral(game);
  8382. command.addHelpChild(helpArg0, command.newHelpLiteral("top"));
  8383. command.addHelpChild(helpArg0, command.newHelpInt("rank", 1, 1000));
  8384. helpArg1 = command.newHelpSpecial("Player", "player");
  8385. command.addHelpChild(helpArg1, command.newHelpLiteral("remove", "stats.remove"));
  8386. command.addHelpChild(helpArg0, helpArg1);
  8387. command.addHelpChild(help, helpArg0);
  8388. }
  8389. function addDtAttributeAttributHelp(attribut) {
  8390. helpArg1 = command.newHelpLiteral(attribut);
  8391. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("mainhand"));
  8392. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("offhand"));
  8393. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("head"));
  8394. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("chest"));
  8395. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("legs"));
  8396. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("feet"));
  8397. return helpArg1;
  8398. }
  8399. function addDtAttributeSlotHelp(slot) {
  8400. helpArg2 = command.newHelpLiteral(slot);
  8401. helpArg3 = command.newHelpInt("double", 0, 1000);
  8402. command.addHelpChild(helpArg3, command.newHelpLiteral("ADDITION"));
  8403. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_BASE"));
  8404. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_TOTAL"));
  8405. command.addHelpChild(helpArg2, helpArg3);
  8406. return helpArg2;
  8407. }
  8408. function showJail(player_name) {
  8409. if(isOnline(player_name)) {
  8410. inv.open($jailmenu, read.player(player_name), "§8Gefängnis");
  8411. }
  8412. }
  8413. function isJailed(player_uuid) {
  8414. return(list.contains($jailed_list, player_uuid));
  8415. }
  8416. function command.register(command, description) {
  8417. command.add(command);
  8418. list.add($command_list, command);
  8419. map.add($command_map, command, description);
  8420. }
  8421. function command.registerAlias(alias, command) {
  8422. command.add(alias);
  8423. map.add($alias_map, alias, command);
  8424. }
  8425. //Spielzeit aller Online-Spieler
  8426. function playtime.getTotalOnlineMinutes() {
  8427. minutes = 0;
  8428. iter = list.iterator(players.toList());
  8429. while(hasNext(iter)) {
  8430. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  8431. }
  8432. return minutes;
  8433. }
  8434. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  8435. function playtime.getInterval(from, to) {
  8436. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  8437. databank.setLong(stmt, 1, from);
  8438. databank.setLong(stmt, 2, to);
  8439. result = databank.execute(stmt);
  8440. if(databank.next(result)) {
  8441. minutes = databank.getLong(result, 1) / 1000 / 60;
  8442. } else {
  8443. minutes = 0;
  8444. }
  8445. databank.close(result);
  8446. databank.close(stmt);
  8447. return minutes;
  8448. }
  8449. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  8450. function playtime.getTotal() {
  8451. minutes = playtime.getTotalOnlineMinutes();
  8452. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  8453. result = databank.execute(stmt);
  8454. if(databank.next(result)) {
  8455. minutes += databank.getLong(result, 1) / 1000 / 60;
  8456. }
  8457. databank.close(result);
  8458. databank.close(stmt);
  8459. return minutes;
  8460. }
  8461. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  8462. function playtime.getPlayerInterval(player_id, from, to) {
  8463. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  8464. databank.setInt(stmt, 1, player_id);
  8465. databank.setLong(stmt, 2, from);
  8466. databank.setLong(stmt, 3, to);
  8467. result = databank.execute(stmt);
  8468. if(databank.next(result)) {
  8469. minutes = databank.getLong(result, 1) / 1000 / 60;
  8470. } else {
  8471. minutes = 0;
  8472. }
  8473. databank.close(result);
  8474. databank.close(stmt);
  8475. return minutes;
  8476. }
  8477. function playtime.getPlayersPerInterval(from, to) {
  8478. set = set.new();
  8479. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  8480. databank.setLong(stmt, 1, from);
  8481. databank.setLong(stmt, 2, to);
  8482. result = databank.execute(stmt);
  8483. while(databank.next(result)) {
  8484. set.add(set, databank.getInt(result, 1));
  8485. }
  8486. databank.close(result);
  8487. databank.close(stmt);
  8488. return set.getSize(set);
  8489. }
  8490. function time.getYearDays(year) {
  8491. days = 365;
  8492. if(year % 4 == 0) {
  8493. days++;
  8494. }
  8495. return days;
  8496. }
  8497. function time.getMonthDays(month, year) {
  8498. days = map.get($monthdays, month);
  8499. //Schaltjahre
  8500. if(month == 2 && year % 4 == 0) {
  8501. days++;
  8502. }
  8503. return days;
  8504. }
  8505. function time.getDaysBetween(day1, month1, year1, day2, month2, year2) {
  8506. d_days = 0;
  8507. m_days = 0;
  8508. y_days = 0;
  8509. y = 0;
  8510. m = 0;
  8511. d = 0;
  8512. //Volle Jahre
  8513. for(year = year1 + 1; year < year2; year++) {
  8514. y_days += time.getYearDays(year);
  8515. y++;
  8516. }
  8517. if(year1 == year2) {
  8518. //Volle Monate
  8519. for(month = month1 + 1; month < month2; month++) {
  8520. m_days += time.getMonthDays(month, year1);
  8521. }
  8522. //Volle Tage
  8523. if(month1 == month2) {
  8524. d_days = day2 - day1;
  8525. } else {
  8526. d_days += map.get($monthdays, month1) - day1;
  8527. d_days += day2;
  8528. }
  8529. } else {
  8530. //Volle Monate
  8531. for(month = month1 + 1; month < 13; month++) {
  8532. m_days += time.getMonthDays(month, year1);
  8533. m++;
  8534. }
  8535. for(month = 1; month < month2; month++) {
  8536. m_days += time.getMonthDays(month, year2);
  8537. m++;
  8538. }
  8539. //Volle Tage
  8540. d_days += map.get($monthdays, month1) - day1;
  8541. d_days += day2;
  8542. }
  8543. return y_days + m_days + d_days;
  8544. }
  8545. //--------------------------------------------------
  8546. //Player-Utils
  8547. //--------------------------------------------------
  8548. function player.hasClanInvitation(player_or_id, clan_id) {
  8549. if(isPlayer(player_or_id)) {
  8550. player_id = player.getId(player_or_id);
  8551. } else {
  8552. player_id = player_or_id;
  8553. }
  8554. iter = list.iterator($clan_invitations);
  8555. while(hasNext(iter)) {
  8556. invitation = next(iter);
  8557. p_id = invitation[0];
  8558. c_id = invitation[1];
  8559. if(player_id == p_id && clan_id == c_id) {
  8560. return true;
  8561. }
  8562. }
  8563. return false;
  8564. }
  8565. function player.addClanInvitation(player_id, clan_id) {
  8566. invitation = array.new(2);
  8567. invitation[0] = player_id;
  8568. invitation[1] = clan_id;
  8569. list.add($clan_invitations, invitation);
  8570. }
  8571. //--------------------------------------------------
  8572. //Party-Utils
  8573. //--------------------------------------------------
  8574. function party.invitePlayer(inviter, invitee) {
  8575. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  8576. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  8577. //Ansonsten neue Party-ID vergeben.
  8578. inviter_uuid = player.getUuid(inviter);
  8579. if(player.isInParty(inviter)) {
  8580. party_id = player.getPartyId(inviter);
  8581. } else {
  8582. party_id = map.get($party_invite_ids, inviter_uuid);
  8583. if(party_id == null) {
  8584. party_id = ++$party_counter;
  8585. }
  8586. }
  8587. if(invitee == null) {
  8588. return "inviteeNotOnline";
  8589. }
  8590. if(inviter == invitee) {
  8591. return "inviterEqualsInvitee";
  8592. }
  8593. if(player.isInParty(inviter)) {
  8594. if(!player.isPartyLeaderOrMod(inviter)) {
  8595. return "inviterNotPermitted";
  8596. }
  8597. }
  8598. if(player.isInParty(invitee)) {
  8599. return "inviteeAlreadyInParty";
  8600. }
  8601. invitee_uuid = player.getUuid(invitee);
  8602. list = map.get($party_invitations, invitee_uuid);
  8603. if(list == null) {
  8604. list = list.new();
  8605. map.add($party_invitations, invitee_uuid, list);
  8606. }
  8607. if(list.contains(list, inviter_uuid)) {
  8608. return "inviteeAlreadyInvited";
  8609. }
  8610. list.add(list, inviter_uuid);
  8611. list.add($deluuid, inviter_uuid);
  8612. list.add($delkeytime, time.getMillis());
  8613. list = map.get($delkeytimes, invitee_uuid);
  8614. if(list == null) {
  8615. list = list.new();
  8616. map.add($delkeytimes, invitee_uuid, list);
  8617. }
  8618. list.add(list, time.getMillis());
  8619. map.add($party_invite_ids, inviter_uuid, party_id);
  8620. inviter_name = player.getName(inviter);
  8621. msg.prefix(invitee, $prefix_party, concat(inviter_name, " invites you to a party."));
  8622. msg(invitee, " §5=> §rAccept ? ", text.click("[§aYes§r] ", concat("/party accept ", inviter_name)), text.click("[§cNo§r]", concat("/party deny ", inviter_name)));
  8623. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  8624. return true;
  8625. }
  8626. function party.kickPlayer(player, reason) {
  8627. party_id = player.getPartyId(player);
  8628. //Nachrichten
  8629. player_name = player.getName(player);
  8630. if(reason == "kick") {
  8631. message = concat("§r", player_name, " has been kicked out of the party.");
  8632. } else {
  8633. message = concat("§r", player_name, " has left the party.");
  8634. }
  8635. party.sendMessage(party_id, message);
  8636. player_uuid = player.getUuid(player_name);
  8637. //aus Partyliste entfernen
  8638. party_list = party.getList(party_id);
  8639. list.remove(party_list, player_uuid);
  8640. //ID und Rang entfernen
  8641. rank = player.getPartyRank(player);
  8642. player.delPartyRank(player);
  8643. player.delPartyId(player);
  8644. //Einladungen löschen
  8645. map.remove($party_invitations, player_uuid);
  8646. map.remove($delkeytimes, player_uuid);
  8647. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  8648. if(list.getSize(party_list) < 2) {
  8649. party.delete(party_id);
  8650. return;
  8651. }
  8652. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  8653. if(rank == "Leader") {
  8654. new_player = player.get(list.getIndex(party_list, 0));
  8655. player.setPartyRank(new_player, "Leader");
  8656. party.sendMessage(party_id, concat("§r", player.getName(new_player), " is now Leader."));
  8657. }
  8658. }
  8659. function party.sendMessage(party_id, message) {
  8660. iter = list.iterator(party.getList(party_id));
  8661. while(hasNext(iter)) {
  8662. msg.prefix(player.get(next(iter)), $prefix_party, message);
  8663. }
  8664. }
  8665. function party.delete(party_id) {
  8666. party.sendMessage(party_id, "Party disbanded.");
  8667. iter = list.iterator(party.getList(party_id));
  8668. while(hasNext(iter)) {
  8669. player = player.get(next(iter));
  8670. player.delPartyRank(player);
  8671. player.delPartyId(player);
  8672. }
  8673. }
  8674. @deletePartyInvitation
  8675. player_uuid = list.getIndex(deluuid, 0);
  8676. invitations = map.get(party_invitations, player_uuid);
  8677. keytimes = map.get(delkeytimes, player_uuid);
  8678. if(invitations != null) {
  8679. if(list.getSize(invitations) != 0) {
  8680. keytime = list.getIndex(delkeytime, 0);
  8681. keytime2 = list.getIndex(keytimes, 0);
  8682. list.remove(delkeytime, keytime);
  8683. if(keytime == keytime2) {
  8684. index = list.getIndexOf(keytimes, keytime2);
  8685. list.remove(keytimes, keytime2);
  8686. list.removeIndex(invitations, index);
  8687. }
  8688. }
  8689. }
  8690. goto("wait");
  8691. //--------------------------------------------------
  8692. //Plot-Utils
  8693. //--------------------------------------------------
  8694. function plot.registerMoveEvents(world) {
  8695. iter = plot.iterator(world);
  8696. while(hasNext(iter)) {
  8697. plot = next(iter);
  8698. if(plot.isCity(plot) || plot.isPlot(plot)) {
  8699. plot.setMoveEvent(plot, world);
  8700. }
  8701. }
  8702. }
  8703. function plot.delMoveEvent(plot) {
  8704. plot_id = plot.getId(plot);
  8705. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  8706. a = list.getIndex($plot_move_ids_list, i);
  8707. if(a[1] == plot_id) {
  8708. event.removeMoveData(a[0]);
  8709. list.removeIndex($plot_move_ids_list, i);
  8710. break;
  8711. }
  8712. }
  8713. }
  8714. function plot.setMoveEvent(plot, world) {
  8715. x1 = plot.getMinX(plot);
  8716. y1 = plot.getMinY(plot);
  8717. z1 = plot.getMinZ(plot);
  8718. x2 = plot.getMaxX(plot);
  8719. y2 = plot.getMaxY(plot);
  8720. z2 = plot.getMaxZ(plot);
  8721. loc1 = loc.new(world, x1, y1, z1);
  8722. loc2 = loc.new(world, x2, y2, z2);
  8723. move_id = event.addMoveData(loc1, loc2, 100, -1);
  8724. plot_id = plot.getId(plot);
  8725. a = array.new(2);
  8726. a[0] = move_id;
  8727. a[1] = plot_id;
  8728. list.add($plot_move_ids_list, a);
  8729. }
  8730. function plot.getPlotIdFromMoveId(move_id) {
  8731. iter = list.iterator($plot_move_ids_list);
  8732. while(hasNext(iter)) {
  8733. a = next(iter);
  8734. if(a[0] == move_id) {
  8735. return a[1];
  8736. }
  8737. }
  8738. return null;
  8739. }
  8740. function plot.getMoveIdFromPlotId(plot_id) {
  8741. iter = list.iterator($plot_move_ids_list);
  8742. while(hasNext(iter)) {
  8743. a = next(iter);
  8744. if(a[1] == plot_id) {
  8745. return a[0];
  8746. }
  8747. }
  8748. return null;
  8749. }
  8750. @checkForPlot
  8751. player_uuid = list.getIndex(check_for_plot_list, 0);
  8752. list.removeIndex(check_for_plot_list, 0);
  8753. player = player.get(player_uuid);
  8754. if(player == null) {
  8755. map.remove(actual_move_id, player_uuid);
  8756. goto("wait");
  8757. }
  8758. player_loc = entity.getLocation(player);
  8759. plot_list = plot.get(player_loc);
  8760. if(list.getSize(plot_list) == 0) {
  8761. map.remove(actual_move_id, player_uuid);
  8762. } else {
  8763. list.add(check_for_plot_list, player_uuid);
  8764. sgoto(100, "checkForPlot");
  8765. }
  8766. goto("wait");
  8767. function tpBottom(player) {
  8768. player_loc = entity.getLocation(player);
  8769. y = loc.getY(player_loc);
  8770. while(block.isAir(player_loc)) {
  8771. loc.setY(player_loc, y);
  8772. y--;
  8773. }
  8774. loc.addY(player_loc, 1);
  8775. entity.teleport(player, player_loc);
  8776. }