commands.txt 320 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295
  1. error_counter = 0;
  2. @on_error
  3. error_counter++;
  4. if(error_counter > 1) {
  5. snuvi.debug("Error Handler activated");
  6. if(event == "custom_command") {
  7. set.add(failed_cmds, command);
  8. goto("wait");
  9. }
  10. snuvi.debug("Restarting script...");
  11. error_counter++;
  12. if(error_counter >= 100) {
  13. snuvi.debug("Script terminated. Endless loop.");
  14. term();
  15. }
  16. }
  17. waitfor(5); //Verhindert Endlos-Schleife durch "/start commands"
  18. setCommandHelps();
  19. command.clear();
  20. //Games
  21. command.add("hack");
  22. command.add("nextplayer");
  23. command.add("invstats");
  24. command.add("topinvstats");
  25. command.add("removeinvstats");
  26. command.add("sfstats");
  27. command.add("topsfstats");
  28. command.add("removesfstats");
  29. command.add("questanswer");
  30. command.add("infopoint1");
  31. command.add("infopoint2");
  32. command.add("infopoint3");
  33. command.add("infopoint4");
  34. command.add("infopoint5");
  35. command.add("infopoint6");
  36. command.add("infopoint7");
  37. command.add("infopoint8");
  38. command.add("infopoint9");
  39. command.add("infopoint10");
  40. command.add("infopoint11");
  41. command.add("infopoint12");
  42. //Vanilla überschreiben
  43. command.add("help");
  44. command.add("butcher");
  45. command.add("yeet");
  46. command.add("kill");
  47. alias_map = map.new();
  48. command_list = list.new();
  49. command_map = map.new();
  50. command.register("afk", "Toggles afk");
  51. command.register("allsounds", "Plays all sounds");
  52. command.register("answer", "Answers the last private message");
  53. command.register("ass", "Armor Stand Signs");
  54. command.register("back", "Teleports to the last position");
  55. command.register("ban", "Bans a player");
  56. command.register("boost", "Boosts you up to the clouds");
  57. command.register("bug", "Report a bug");
  58. command.register("clan", "Clan-Commands");
  59. command.register("cli", "Clears items in a radius");
  60. command.register("color", "Shows all colors");
  61. command.register("coords", "Shows infos for the targeted block");
  62. command.register("copyisland", "Copyisland-Commands");
  63. command.register("creative", "Teleports to creative-spawn");
  64. command.register("databank", "Databank-Commands");
  65. command.register("datatools", "Datatools-Commands");
  66. command.register("enchant", "Enchants an item in your hand");
  67. command.register("enderchest", "Shows enderchests");
  68. command.register("entities", "Lists all entities in a world");
  69. command.register("error", "Error-Logger");
  70. command.register("errordebug", "Debug-Logger");
  71. command.register("feed", "Fills hunger bar");
  72. command.register("fly", "Toggles fly");
  73. command.register("friend", "Friend-Commands");
  74. command.register("game", "marvs minigame shit");
  75. command.register("gamemode", "Change gamemode");
  76. command.register("gamerule", "Manage gamerules");
  77. command.register("games", "Teleports to games-spawn");
  78. command.register("giveup", "Giveup a quest");
  79. command.register("grow", "Grow seeds");
  80. command.register("hat", "Be fame with a new hat");
  81. command.register("hawkeye", "Rollback griefings");
  82. command.register("head", "Gives you a player's head");
  83. command.register("heal", "Heals, fills hunger bar and remove effects");
  84. command.register("home", "Manage your homes");
  85. command.register("live", "Toggles Live-Mode");
  86. command.register("lag", "Executes a lag test");
  87. command.register("leave", "Leave a minigame");
  88. command.register("human", "Human-Commands");
  89. command.register("inv", "Inv-Commands");
  90. command.register("iteminfo", "Returns information about an item");
  91. command.register("jail", "Sends a player to jail");
  92. command.register("jumpto", "Jumps to a block in sight");
  93. command.register("kick", "Kicks a player");
  94. command.register("lastseen", "Shows the last players online");
  95. command.register("lightning", "Summons a lightning_bolt");
  96. command.register("list", "List all players online");
  97. command.register("mail", "Mail-Commands");
  98. command.register("mailbox", "Mailbox-Commands");
  99. command.register("memory", "Returns RAM-usage");
  100. command.register("msg", "Send a private message");
  101. command.register("mute", "Mutes a player");
  102. command.register("news", "Send Push-News to all players");
  103. command.register("nickname", "Set a nickname");
  104. command.register("nowb", "Sends no 'is back' message if afk");
  105. command.register("party", "Party-Commands");
  106. command.register("perm", "Manage permissions");
  107. command.register("plant", "Plant seeds");
  108. command.register("playtime", "Shows your playtime");
  109. command.register("plot", "Plot-Commands");
  110. command.register("plough", "Plough dirt around you");
  111. command.register("pvp", "Toggles pvp");
  112. command.register("quest", "Quest-Commands");
  113. command.register("rank", "Shows your available ranks");
  114. command.register("repair", "Repairs your item in mainhand");
  115. command.register("report", "Report whatever you want");
  116. command.register("ride", "Rides an entity");
  117. command.register("say", "[Server] chat message");
  118. command.register("script", "Script-Commands");
  119. command.register("seen", "Returns the last date the player was online");
  120. command.register("senditem", "Sends an itemstack to another player");
  121. command.register("setmessage", "Set your join/leave-message");
  122. command.register("setrank", "");
  123. command.register("setservermessage", "Sets the server-message in the serverlist");
  124. command.register("setspawn", "Changes a spawn");
  125. command.register("shop", "Shop-Commands");
  126. command.register("sign", "Edit a sign");
  127. command.register("silentban", "Silently bans a player");
  128. command.register("silentjoin", "Toggled Silentjoins");
  129. command.register("silentkick", "Silently kicks a player");
  130. command.register("skills", "Shows all skills");
  131. command.register("spawn", "Teleports to spawn");
  132. command.register("speed", "Sets your speed");
  133. command.register("start", "Starts a script");
  134. command.register("startgame", "Reduces start-countdown for a minigame");
  135. command.register("stats", "Statistics-Commands");
  136. command.register("stopadventure", "Stops an adventure");
  137. command.register("story", "Teleports to story-spawn");
  138. command.register("suicide", "Kill yourself");
  139. command.register("teleport", "Teleports a player to a player");
  140. command.register("tempban", "Bans a player temporarly");
  141. command.register("tempfly", "Let a player temporarly fly");
  142. command.register("ticket", "Ticket-Commands");
  143. command.register("time", "Time-Commands");
  144. command.register("tip", "Tip-Commands");
  145. command.register("top", "Teleports to to highest point at the current position");
  146. command.register("tpa", "Sends a teleport request to a player");
  147. command.register("tpahere", "Sends a teleport request to a player");
  148. command.register("tpaccept", "Accepts a teleport request");
  149. command.register("tpaccepthere", "Accepts a teleport request");
  150. command.register("tppos", "Teleports to coordinates");
  151. command.register("unban", "Unbans a player");
  152. command.register("unjail", "Releases a player from jail");
  153. command.register("unmute", "Unmutes a player");
  154. command.register("user", "Returns infos about a user");
  155. command.register("vanish", "Vanishes a player");
  156. command.register("var", "Reads variables from a scripts");
  157. command.register("vote", "Show vote links");
  158. command.register("voteshop", "Show vote rewars");
  159. command.register("voxel", "Set radius for voxel");
  160. command.register("warn", "Warns a player");
  161. command.register("warp", "Warp-Commands");
  162. command.register("weather", "Weather-Commands");
  163. command.register("world", "World-Commands");
  164. command.register("yeet", "Throws the Player");
  165. command.registerAlias("afklo", "afk");
  166. command.registerAlias("itemdb", "iteminfo");
  167. command.registerAlias("ha", "hawkeye");
  168. command.registerAlias("skull", "head");
  169. command.registerAlias("skick", "silentkick");
  170. command.registerAlias("sban", "silentban");
  171. command.registerAlias("tell", "msg");
  172. command.registerAlias("r", "answer");
  173. command.registerAlias("pardon", "unban");
  174. command.registerAlias("j", "jumpto");
  175. command.registerAlias("mimimi", "help");
  176. command.registerAlias("ci", "copyisland");
  177. command.registerAlias("mem", "memory");
  178. command.registerAlias("tp", "teleport");
  179. command.registerAlias("homes", "home");
  180. command.registerAlias("colour", "color");
  181. command.registerAlias("gm", "gamemode");
  182. command.registerAlias("p", "plot");
  183. command.registerAlias("coord", "coords");
  184. command.registerAlias("dt", "datatools");
  185. command.registerAlias("f", "friend");
  186. command.registerAlias("l", "leave");
  187. command.registerAlias("v", "vanish");
  188. command.registerAlias("hub", "leave");
  189. command.registerAlias("fuckit", "giveup");
  190. command.registerAlias("ram", "memory");
  191. command.registerAlias("thor", "lightning");
  192. command.registerAlias("kill", "suicide");
  193. composter_par = particle.get("composter");
  194. wall_signs_tag = block.getTag("minecraft:wall_signs");
  195. beds_tag = block.getTag("minecraft:beds");
  196. chest_tag = block.getTag("forge:chests");
  197. sign_tag = block.getTag("minecraft:signs");
  198. dirt_tag = block.getTag("forge:dirt");
  199. gamesspawn = world.getGamesSpawn();
  200. serverspawn = world.getServerSpawn();
  201. prefix_clan = "§2Clan";
  202. prefix_tips = "§eTips";
  203. prefix_lock = "§eLock";
  204. prefix_hawkeye = "§cHawkeye";
  205. prefix_commands = "§6Commands";
  206. prefix_vote = "§dVote";
  207. prefix_friends = "§5Friends";
  208. prefix_world = "§bWorld";
  209. prefix_jail = "§5Jail";
  210. prefix_quest = "§dQuest";
  211. prefix_perms = "§6Perms";
  212. prefix_datatools = "§6DataTools";
  213. prefix_human = "§6Human";
  214. prefix_plot = "§dPlots";
  215. prefix_party = "§5Party";
  216. prefix_skill = "§2Skill";
  217. party_ids = getScriptVar("party_ids");
  218. if(party_ids == null) {
  219. party_ids = map.new();
  220. setScriptVar("party_ids", map.new()); //Player, partyid
  221. }
  222. party_lists = getScriptVar("party_lists");
  223. if(party_lists == null) {
  224. party_lists = map.new();
  225. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  226. }
  227. party_ranks = getScriptVar("party_ranks");
  228. if(party_ranks == null) {
  229. party_ranks = map.new();
  230. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  231. }
  232. party_counter = getScriptVar("party_counter");
  233. if(party_counter == null) {
  234. party_counter = 0;
  235. setScriptVar("party_counter", party_counter); //Player, partyid
  236. }
  237. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  238. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  239. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  240. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  241. party_invite_ids = map.new(); //Player_uuid, partyid
  242. list = getScriptVar("block_commands_list");
  243. if(list == null) {
  244. list = list.new();
  245. setScriptVar("block_commands_list", list);
  246. }
  247. live_set = getScriptVar("live_set");
  248. if(live_set == null) {
  249. live_set = set.new();
  250. setScriptVar("live_set", live_set);
  251. } else {
  252. //Register all Live-Players again
  253. iter = set.iterator(live_set);
  254. while(hasNext(iter)) {
  255. player = player.get(next(iter));
  256. if(player != null) {
  257. player.setLive(player, true);
  258. }
  259. }
  260. }
  261. afk_loop_active = false;
  262. afk_map = getScriptVar("afk_map");
  263. if(afk_map == null) {
  264. afk_map = map.new();
  265. setScriptVar("afk_map", afk_map);
  266. } else {
  267. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  268. iter = map.iterator(afk_map);
  269. while(hasNext(iter)) {
  270. element = next(iter);
  271. player = player.get(map.getKey(element));
  272. if(player != null) {
  273. player.setAfk(player, true);
  274. afk_loop_active = true;
  275. }
  276. }
  277. }
  278. if(afk_loop_active) {
  279. sgoto(30, "afk_loop");
  280. }
  281. setScriptVar("ha_data_lists", map.new());
  282. setScriptVar("ha_undo_lists", map.new());
  283. money.setBoostFactor(1);
  284. sgoto(100, "coordsloop");
  285. sgoto(1200, "afk_checker_loop");
  286. lag_list = list.new();
  287. clan_invitations = list.new();
  288. friend_requests = map.new();
  289. lock_chests = map.new();
  290. chatbuffer = map.new();
  291. tpa_request = list.new();
  292. answer_map = map.new();
  293. warninglist = list.new();
  294. plotpos1 = map.new();
  295. plotpos2 = map.new();
  296. invseeids = set.new();
  297. ride_set = set.new();
  298. fields = set.new();
  299. vanish_set = set.new();
  300. failed_cmds = set.new();
  301. skip_night_set = set.new();
  302. afk_checker_map = map.new();
  303. butcher_set = set.new();
  304. set.add(butcher_set, "zombie");
  305. set.add(butcher_set, "zombie_villager");
  306. set.add(butcher_set, "husk");
  307. set.add(butcher_set, "skeleton");
  308. set.add(butcher_set, "creeper");
  309. set.add(butcher_set, "enderman");
  310. set.add(butcher_set, "pillager");
  311. set.add(butcher_set, "spider");
  312. set.add(butcher_set, "phantom");
  313. set.add(butcher_set, "witch");
  314. set.add(butcher_set, "stray");
  315. set.add(butcher_set, "drowned");
  316. set.add(butcher_set, "wither");
  317. set.add(butcher_set, "silverfish");
  318. set.add(butcher_set, "zombified_piglin");
  319. set.add(butcher_set, "cod");
  320. set.add(butcher_set, "guardian");
  321. attribut_set = set.new();
  322. set.add(attribut_set, "generic.armor");
  323. set.add(attribut_set, "generic.armor_toughness");
  324. set.add(attribut_set, "generic.attack_damage");
  325. set.add(attribut_set, "generic.knockback_resistance");
  326. set.add(attribut_set, "generic.max_health");
  327. set.add(attribut_set, "generic.movement_speed");
  328. set.add(attribut_set, "generic.attack_speed");
  329. set.add(attribut_set, "generic.luck");
  330. not_blocked_cmd = set.new();
  331. set.add(not_blocked_cmd, "leave");
  332. set.add(not_blocked_cmd, "ban");
  333. set.add(not_blocked_cmd, "silentban");
  334. set.add(not_blocked_cmd, "kick");
  335. set.add(not_blocked_cmd, "silentkick");
  336. set.add(not_blocked_cmd, "warn");
  337. set.add(not_blocked_cmd, "tempban");
  338. set.add(not_blocked_cmd, "mute");
  339. set.add(not_blocked_cmd, "unmute");
  340. set.add(not_blocked_cmd, "unban");
  341. set.add(not_blocked_cmd, "tip");
  342. set.add(not_blocked_cmd, "var");
  343. set.add(not_blocked_cmd, "quest");
  344. set.add(not_blocked_cmd, "msg");
  345. set.add(not_blocked_cmd, "help");
  346. rank_array = array.new(25, 2);
  347. //Playtime
  348. rank.add(0, "rank.owner", "4Owner");
  349. rank.add(1, "rank.admin", "cAdmin");
  350. rank.add(2, "rank.moderator", "9Moderator");
  351. rank.add(3, "rank.supporter", "bSupporter");
  352. rank.add(4, "rank.dev", "5Developer");
  353. rank.add(5, "rank.builder", "5Builder");
  354. rank.add(6, "rank.vip", "dVIP");
  355. rank.add(7, "rank.influencer", "dInfluencer");
  356. rank.add(8, "rank.sponsor", "dSponsor");
  357. rank.add(9, "rank.legend", "2Legend");
  358. rank.add(10, "rank.pioneer", "2Pioneer");
  359. rank.add(11, "rank.lord", "2Lord");
  360. rank.add(12, "rank.altruist", "2Altruist");
  361. rank.add(13, "rank.major", "2Major");
  362. rank.add(14, "rank.frequenter", "6Frequenter");
  363. rank.add(15, "rank.explorer", "6Explorer");
  364. rank.add(16, "rank.chief", "6Chief");
  365. rank.add(17, "rank.friend", "6Friend");
  366. rank.add(18, "rank.colonizer", "6Colonizer");
  367. rank.add(19, "rank.newcomer", "eNewcomer");
  368. rank.add(20, "rank.adventurer", "eAdventurer");
  369. rank.add(21, "rank.commander", "eCommander");
  370. rank.add(22, "rank.volunteer", "eVolunteer");
  371. rank.add(23, "rank.settler", "eSettler");
  372. rank.add(24, "rank.user", "3User");
  373. setScriptVar("ranks", rank_array);
  374. month_array = array.new(12, 2);
  375. month.add(0, "Jan", 31);
  376. month.add(1, "Feb", 28);
  377. month.add(2, "Mar", 31);
  378. month.add(3, "Apr", 30);
  379. month.add(4, "May", 31);
  380. month.add(5, "Jun", 30);
  381. month.add(6, "Jul", 31);
  382. month.add(7, "Aug", 31);
  383. month.add(8, "Sep", 30);
  384. month.add(9, "Oct", 31);
  385. month.add(10, "Nov", 30);
  386. month.add(11, "Dec", 31);
  387. jailed_list = list.new();
  388. ironbars = read.item("minecraft:iron_bars", 1, "§r");
  389. jailmenu = inv.new("222222222");
  390. inv.setItem(jailmenu, 0, ironbars);
  391. inv.setItem(jailmenu, 1, ironbars);
  392. inv.setItem(jailmenu, 2, ironbars);
  393. inv.setItem(jailmenu, 3, ironbars);
  394. inv.setItem(jailmenu, 4, ironbars);
  395. inv.setItem(jailmenu, 5, ironbars);
  396. inv.setItem(jailmenu, 6, ironbars);
  397. inv.setItem(jailmenu, 7, ironbars);
  398. inv.setItem(jailmenu, 8, ironbars);
  399. skip_night_inv = inv.new("002020200");
  400. inv.setItem(skip_night_inv, 0, read.item("km:check_green", 1, "§fYes"));
  401. inv.setItem(skip_night_inv, 1, read.item("km:gem_stone", 1, "§fI don't care"));
  402. inv.setItem(skip_night_inv, 2, read.item("km:cross_red", 1, "§fNo"));
  403. skip_night_inv_id = inv.getId(skip_night_inv);
  404. vote_inv = inv.new("222222222");
  405. inv.setItem(vote_inv, 0, read.item("km:coin_gold", 1, "§fMoney Booster", "Doubles incoming money for 10 minutes.", "Cost: 6 VP"));
  406. inv.setItem(vote_inv, 1, read.item("minecraft:jukebox", 1, "§fRick is in the house", "Rickroles every player on the server.", "Cost: 2 VP"));
  407. vote_inv_id = inv.getId(vote_inv);
  408. ha_tool = read.item("km:guild_block", 1, "§cHawkeye Tool", "Hawkeye Tool");
  409. consoleCommands = set.new();
  410. set.add(consoleCommands, "answer");
  411. set.add(consoleCommands, "ban");
  412. set.add(consoleCommands, "kick");
  413. set.add(consoleCommands, "lastseen");
  414. set.add(consoleCommands, "list");
  415. set.add(consoleCommands, "msg");
  416. set.add(consoleCommands, "say");
  417. set.add(consoleCommands, "silentban");
  418. set.add(consoleCommands, "silentkick");
  419. set.add(consoleCommands, "start");
  420. set.add(consoleCommands, "tempban");
  421. set.add(consoleCommands, "tempfly");
  422. set.add(consoleCommands, "unban");
  423. 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);"));
  424. 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);"));
  425. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS tipps (tipp_key VARCHAR(20) PRIMARY KEY, tipp_value VARCHAR(255), tipp_loop BOOLEAN NOT NULL DEFAULT true);"));
  426. 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);"));
  427. 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);"));
  428. last_skip_night = 0;
  429. skip_night_started = false;
  430. jail_loop_active = false;
  431. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  432. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  433. check_for_plot_list = list.new();
  434. plot.registerMoveEvents(world.get("overworld"));
  435. plot.registerMoveEvents(world.get("the_nether"));
  436. plot.registerMoveEvents(world.get("the_end"));
  437. plot.registerMoveEvents(world.get("creative"));
  438. RickRollSounds = list.new();
  439. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  440. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  441. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  442. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  443. list.add(RickRollSounds, math.pow(2, 3 / 12));//15
  444. list.add(RickRollSounds, math.pow(2, 3 / 12));//15
  445. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  446. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  447. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  448. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  449. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  450. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  451. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  452. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  453. list.add(RickRollSounds, math.pow(2, -2 / 12));//10
  454. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  455. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  456. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  457. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  458. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  459. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  460. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  461. list.add(RickRollSounds, math.pow(2, -2 / 12));//10
  462. list.add(RickRollSounds, math.pow(2, -4 / 12));//8
  463. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  464. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  465. list.add(RickRollSounds, math.pow(2, -6 / 12));//6
  466. list.add(RickRollSounds, math.pow(2, 1 / 12));//13
  467. list.add(RickRollSounds, math.pow(2, -1 / 12));//11
  468. //6,8,11,8,15,15,13,6,8,11,8,13,13,11,10,8,6,8,11,8,11,13,10,8,6,6,6,13,11
  469. RickRollSoundDists = list.new();
  470. list.add(RickRollSoundDists, 2);//1
  471. list.add(RickRollSoundDists, 2);//1
  472. list.add(RickRollSoundDists, 2);//1
  473. list.add(RickRollSoundDists, 2);//1
  474. list.add(RickRollSoundDists, 6);//3
  475. list.add(RickRollSoundDists, 6);//3
  476. list.add(RickRollSoundDists, 12);//6
  477. list.add(RickRollSoundDists, 2);//1
  478. list.add(RickRollSoundDists, 2);//1
  479. list.add(RickRollSoundDists, 2);//1
  480. list.add(RickRollSoundDists, 2);//1
  481. list.add(RickRollSoundDists, 6);//3
  482. list.add(RickRollSoundDists, 6);//3
  483. list.add(RickRollSoundDists, 6);//3
  484. list.add(RickRollSoundDists, 2);//1
  485. list.add(RickRollSoundDists, 6);//3
  486. list.add(RickRollSoundDists, 2);//1
  487. list.add(RickRollSoundDists, 2);//1
  488. list.add(RickRollSoundDists, 2);//1
  489. list.add(RickRollSoundDists, 2);//1
  490. list.add(RickRollSoundDists, 8);//4
  491. list.add(RickRollSoundDists, 4);//2
  492. list.add(RickRollSoundDists, 6);//3
  493. list.add(RickRollSoundDists, 2);//1
  494. list.add(RickRollSoundDists, 4);//2
  495. list.add(RickRollSoundDists, 4);//2
  496. list.add(RickRollSoundDists, 6);//3
  497. list.add(RickRollSoundDists, 8);//4
  498. list.add(RickRollSoundDists, 2);//1
  499. //2,2,2,2,2,6,6,12,2,2,2,2,6,6,6,2,6,2,2,2,2,8,4,6,2,4,4,6,8
  500. rick_sounds_amount = list.getSize(RickRollSoundDists);
  501. sound_category_master = sound.getCategory("master");
  502. sound_flute = sound.get("block.note_block.flute");
  503. sound_harp = sound.get("block.note_block.harp");
  504. sound_pling = sound.get("block.note_block.pling");
  505. event_map = map.new(); //für hawkeye
  506. map.add(event_map, 1, "block_break");
  507. map.add(event_map, 2, "block_place");
  508. event.load("entity_click");
  509. event.load("player_move");
  510. event.load("inv_click");
  511. event.load("inv_close");
  512. event.load("function_key");
  513. event.load("missing_perm");
  514. event.load("missing_command");
  515. event.load("custom_command");
  516. event.load("block_click");
  517. event.load("player_logout");
  518. event.load("player_data_tick");
  519. event.load("vote");
  520. msg("dev", "§bCommands §rloaded.");
  521. @wait
  522. wait();
  523. if(event == "custom_command") {
  524. //Permission-Check
  525. command = text.toLowerCase(command);
  526. command = map.getOrDefault(alias_map, command, command);
  527. size = list.getSize(args);
  528. if(player == null) {
  529. sender = "SERVER";
  530. sender_name = "SERVER";
  531. if(set.contains(consoleCommands, command)) {
  532. ignoreGoto(command);
  533. goto("wait");
  534. }
  535. msg("SERVER", "Sorry. Not a console-command yet. Go and tell marvinius.");
  536. goto("wait");
  537. }
  538. if(!perm.has(player, command)) {
  539. perm.no(player, command);
  540. goto("wait");
  541. }
  542. if(set.contains(failed_cmds, command)) {
  543. msg.prefix(player, prefix_commands, "§cCommand temporarly deactivated due to failure.");
  544. goto("wait");
  545. }
  546. sender = player;
  547. sender_name = player.getName(player);
  548. affectedname = player.getName(player);
  549. player_name = player.getName(player);
  550. affectedplayer = player;
  551. if(player.isCommandBlocked(player)) {
  552. if(!set.contains(not_blocked_cmd, command)) {
  553. msg.prefix(player, prefix_commands, "The most important rule in competition: Sabotage!");
  554. goto("wait");
  555. }
  556. }
  557. ignoreGoto(command);
  558. goto("wait");
  559. }
  560. if(event == "vote") {
  561. p_uuid = player.getUuid(name);
  562. if(p_uuid != null) {
  563. p_id = player.getId(p_uuid);
  564. player.addVotePoints(p_id, 1);
  565. msg.prefix("online", prefix_vote, concat("§b", name, "§r hat gerade gevoted!"));
  566. if(from == "minecraft-server.eu") {
  567. msg("online", "[", prefix_vote, "§r] " , text.link("https://minecraft-server.eu/vote/index/2227F", "https://minecraft-server.eu/vote/index/2227F"));
  568. } else {
  569. msg("online", "[", prefix_vote, "§r] " , text.link("https://minecraft-server-list.com/server/478200/vote/", "https://minecraft-server-list.com/server/478200/vote/"));
  570. }
  571. }
  572. goto("wait");
  573. }
  574. if(event == "player_move") {
  575. player_uuid = player.getUuid(player);
  576. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  577. if(last_move_id == id) {
  578. goto("wait");
  579. }
  580. world = loc.getWorld(entity.getLocation(player));
  581. plot_id = plot.getPlotIdFromMoveId(id);
  582. plot = plot.getFromId(plot_id, world);
  583. if(plot == null) {
  584. goto("wait");
  585. }
  586. if(plot.isCity(plot)) {
  587. color_code = "§c";
  588. } else {
  589. color_code = "§e";
  590. }
  591. title.reset(player);
  592. title.setSub(player, concat("You entered ", color_code, plot.getName(plot), "."));
  593. title.send(player, "");
  594. map.add(actual_move_id, player_uuid, id);
  595. list.add(check_for_plot_list, player_uuid);
  596. sgoto(100, "checkForPlot");
  597. goto("wait");
  598. }
  599. if(event == "block_click") {
  600. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  601. if(action == "right" && !world.isSurvName(world_name) && block.hasTag(beds_tag, block)) {
  602. cancel = true;
  603. goto("wait");
  604. }
  605. if(perm.has(player, "plot.bypass")) {
  606. goto("wait");
  607. }
  608. if(block.hasTag(chest_tag, block)) {
  609. sign_loc = loc.mod(block_loc, 0, 1, 0);
  610. if(isAWallSign(sign_loc) && isAdminShop(sign_loc)) {
  611. cancel = true;
  612. goto("wait");
  613. }
  614. if(plot.check(block_loc, player, 16, true)) {
  615. cancel = false;
  616. goto("wait");
  617. }
  618. player_id = player.getId(player);
  619. player_uuid = player.getUuid(player);
  620. list = plot.get(block_loc);
  621. if(list.getSize(list) > 0) {
  622. iter = list.iterator(list);
  623. access = false;
  624. while(hasNext(iter)) {
  625. plot = next(iter);
  626. canOpenChests = plot.canOpenChests(plot, player_id);
  627. if(plot.isSub(plot)) {
  628. if(canOpenChests) {
  629. cancel = false;
  630. goto("wait");
  631. }
  632. cancel = true;
  633. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  634. goto("wait");
  635. }
  636. if(canOpenChests) {
  637. access = true;
  638. cancel = false;
  639. }
  640. }
  641. if(!access) {
  642. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  643. }
  644. }
  645. goto("wait");
  646. }
  647. if(action == "right" && block.hasTag(sign_tag, block)) {
  648. line0 = block.getSign(block_loc, 0);
  649. if(line0 != "§3[§bFree Plot§3]") {
  650. goto("wait");
  651. }
  652. price = text.convert(removeFormat(block.getSign(block_loc, 1)));
  653. if(!isDouble(price) || price < 0) {
  654. msg.prefix(player, prefix_plot, "Positive number expected.");
  655. goto("wait");
  656. }
  657. p_id = text.convert(block.getSign(block_loc, 3));
  658. if(!isDouble(p_id)) {
  659. msg.prefix(player, prefix_plot, "Invalid city owner.");
  660. goto("wait");
  661. }
  662. if(player.getNameFromId(p_id) == null) {
  663. msg.prefix(player, prefix_plot, "Invalid city owner.");
  664. goto("wait");
  665. }
  666. if(!hasEnoughMoney(player, price)) {
  667. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(price), "§r snuvis for this."));
  668. goto("wait");
  669. }
  670. plot_list = plot.get(block_loc);
  671. iter = list.iterator(plot_list);
  672. while(hasNext(iter)) {
  673. plot = next(iter);
  674. if(plot.isFree(plot)) {
  675. break;
  676. }
  677. }
  678. if(!plot.isFree(plot)) {
  679. msg.prefix(player, prefix_plot, "You aren't on a free plot.");
  680. goto("wait");
  681. }
  682. //Plot claimen
  683. subMoney(player, price);
  684. addMoney(p_id, price);
  685. plot.setSub(plot, true);
  686. plot.setLeader(plot, player.getId(player));
  687. player_name = player.getName(player);
  688. plot.addPlayer(plot, player_name);
  689. plot.setName(plot, concat(player_name, "'s plot"));
  690. msg.prefix(player, prefix_plot, concat("Plot claimed. Spent §6", text.number(price), "§r snuvis."));
  691. goto("wait");
  692. }
  693. goto("wait");
  694. }
  695. if(event == "missing_command") {
  696. if(player == null) { //--> Server
  697. player = "SERVER";
  698. if(command_name == null) {
  699. msg.prefix(player, prefix_commands, concat("Missing Command"));
  700. goto("wait");
  701. }
  702. }
  703. msg.prefix(player, prefix_commands, concat("No command ", command_name));
  704. goto("wait");
  705. }
  706. if(event == "player_logout") {
  707. map.remove(afk_checker_map, uuid);
  708. player.setAfk(player, false);
  709. list.remove(jailed_list, player.getUuid(player));
  710. if(player.hasQuest2(player)) {
  711. script_id = quest.getFromPlayer(player);
  712. script = script.getFromId(script_id);
  713. if(script == null) {
  714. snuvi.debug("Player logged out with corrupt quest");
  715. quest.removePlayer(player); //in case of corrupt quest
  716. goto("wait");
  717. }
  718. setScriptVar("player", player);
  719. modTimer.scriptCallEvent("quest_term", script);
  720. quest.term(script, player);
  721. }
  722. if(player.isInParty(player)) {
  723. party.kickPlayer(player, "logout");
  724. }
  725. goto("wait");
  726. }
  727. if(event == "missing_perm") {
  728. if(player == null) { //--> Server
  729. player = "SERVER";
  730. if(command_name == null) {
  731. msg.prefix(player, prefix_commands, concat("Missing Perm"));
  732. goto("wait");
  733. }
  734. }
  735. perm.no(player, command_name);
  736. goto("wait");
  737. }
  738. if(event == "entity_click") {
  739. player_uuid = player.getUuid(player);
  740. if(set.contains(ride_set, player_uuid)) {
  741. set.remove(ride_set, player_uuid);
  742. entity.mount(player, entity);
  743. }
  744. goto("wait");
  745. }
  746. if(event == "inv_click") {
  747. //mailbox
  748. if(text.startsWith(inv_name, "Mailbox", 0)) {
  749. if(player.isOnAdventure(player)) {
  750. msg.prefix(player, prefix_commands, "You can't use the mailbox while on adventure.");
  751. goto("wait");
  752. }
  753. if(click_type == "QUICK_MOVE") {
  754. if(perm.has(player, "mailbox.other")) {
  755. //Clone item
  756. player.safeGiveItem(player, item);
  757. inv.update(player);
  758. goto("wait");
  759. }
  760. }
  761. //Take item
  762. player.safeGiveItem(player, item);
  763. inv.setItem(inv, inv_slot, item.getAir());
  764. inv.update(player);
  765. split_list = text.split(" ", inv_name);
  766. p_name = list.getIndex(split_list, 2);
  767. p_uuid = player.getUuid(p_name);
  768. if(p_uuid == null) {
  769. inv.close(player);
  770. msg.prefix(player, prefix_commands, "Mailbox closed. Unknown player.");
  771. goto("wait");
  772. }
  773. p_id = player.getId(p_uuid);
  774. mailbox.setItem(p_id, inv_slot, item.getAir());
  775. goto("wait");
  776. }
  777. //inv see
  778. if(set.contains(invseeids, inv_id)) {
  779. //On inv_click in an invsee inventory
  780. split_list = text.split(" ", inv_name);
  781. p_name = list.getIndex(split_list, 2);
  782. p = read.player(p_name);
  783. if(p == null) {
  784. inv.close(player);
  785. 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.");
  786. goto("wait");
  787. }
  788. if(click_type == "QUICK_MOVE") {
  789. //Clone item
  790. player.safeGiveItem(player, item);
  791. inv.update(player);
  792. goto("wait");
  793. }
  794. //Transmit item
  795. player.removeItem(p, item);
  796. player.safeGiveItem(player, item);
  797. inv.setItem(inv, inv_slot, read.item("minecraft:air"));
  798. inv.update(player);
  799. goto("wait");
  800. }
  801. if(inv_id == vote_inv_id) {
  802. if(inv_slot == 0) {
  803. if(money.getBoostFactor() > 1) {
  804. msg.prefix(player, prefix_commands, "Boost already active.");
  805. goto("wait");
  806. }
  807. vp = player.getVotePoints(player);
  808. if(vp < 6) {
  809. msg.prefix(player, prefix_commands, "Not enough vote points.");
  810. goto("wait");
  811. }
  812. player.setVotePoints(player, vp - 6);
  813. msg("online", "§6§k#§rMoney Booster activated!!!§6§k#");
  814. money.setBoostFactor(2);
  815. status.addTimed("online", 56, 12000, "Money Booster");
  816. sgoto(12000, "resetMoneyBoost");
  817. goto("wait");
  818. }
  819. if(inv_slot == 1) {
  820. vp = player.getVotePoints(player);
  821. if(vp < 2) {
  822. msg.prefix(player, prefix_commands, "Not enough vote points.");
  823. goto("wait");
  824. }
  825. player.setVotePoints(player, vp - 2);
  826. rickIndex = 0;
  827. goto("RickRole_play");
  828. }
  829. goto("wait");
  830. }
  831. if(inv_id == skip_night_inv_id) {
  832. world = world.getOverWorld();
  833. world_time = world.getTime(world);
  834. while(world_time >= 24000) {
  835. world_time -= 24000;
  836. }
  837. if(world_time <= 12500) {
  838. goto("wait");
  839. }
  840. player_uuid = player.getUuid(player);
  841. if(set.contains(skip_night_set, player_uuid)) {
  842. msg.prefix(player, prefix_commands, "Already voted.");
  843. goto("wait");
  844. }
  845. if(!skip_night_started) {
  846. world.addTimedStatus(world, 49, 300, "Skip night?");
  847. msg.survival("[§6Commands§r] Skip night? Vote within 15 seconds.");
  848. skip_night_counter = 15;
  849. skip_night_yes = 0;
  850. skip_night_no = 0;
  851. skip_night_no_care = 0;
  852. skip_night_started = true;
  853. sgoto(20, "skip_night_loop");
  854. }
  855. if(inv_slot == 0) {
  856. skip_night_yes++;
  857. inv.close(player);
  858. set.add(skip_night_set, player_uuid);
  859. goto("wait");
  860. }
  861. if(inv_slot == 1) {
  862. skip_night_no_care++;
  863. inv.close(player);
  864. set.add(skip_night_set, player_uuid);
  865. goto("wait");
  866. }
  867. if(inv_slot == 2) {
  868. skip_night_no++;
  869. inv.close(player);
  870. set.add(skip_night_set, player_uuid);
  871. goto("wait");
  872. }
  873. goto("wait");
  874. }
  875. if(inv_name == "Skills") {
  876. if(item.getType(item) == "minecraft:air") {
  877. goto("wait");
  878. }
  879. skill_name = removeFormat(item.getName(item));
  880. tech_name = skill.getTechName(skill_name);
  881. //Toggle skills
  882. if(skill.isToggleable(skill_name)) {
  883. if(skill.isActivated(player, tech_name)) {
  884. skill.setActivated(player, tech_name, false);
  885. } else {
  886. skill.setActivated(player, tech_name, true);
  887. }
  888. inv.setItem(inv, inv_slot, skill.getShopItem(player, tech_name));
  889. inv.update(player);
  890. goto("wait");
  891. }
  892. //Activate skill
  893. if(skill.isActive(skill_name)) {
  894. player_loc = entity.getLocation(player);
  895. world_name = world.getName(loc.getWorld(player_loc));
  896. if(!world.isSurvName(world_name)) {
  897. msg.prefix(player, prefix_skill, "You can't use this in this world.");
  898. goto("wait");
  899. }
  900. if(tech_name == "skill.fire_arrow") {
  901. duration = data.getTimer(player, tech_name);
  902. if(duration > 0) {
  903. msg.prefix(player, prefix_skill, "Skill already active.");
  904. goto("wait");
  905. }
  906. amount = skill.getAmount(player, tech_name);
  907. if(amount > 0) {
  908. status.addTimed(player, 54, 1200, skill_name);
  909. data.setTimer(player, tech_name, 1200);
  910. new_amount = amount - 1;
  911. skill.setAmount(player, tech_name, new_amount);
  912. msg.prefix(player, prefix_skill, concat("Used ", skill_name, ". New amount: ", text.number(new_amount)));
  913. }
  914. goto("wait");
  915. }
  916. if(tech_name == "skill.timber") {
  917. duration = data.getTimer(player, "timber");
  918. if(duration > 0) {
  919. msg.prefix(player, prefix_skill, "Skill already active.");
  920. goto("wait");
  921. }
  922. amount = skill.getAmount(player, "skill.timber");
  923. if(amount > 0) {
  924. status.addTimed(player, 53, 1200, "Timber");
  925. data.setTimer(player, "timber", 1200);
  926. new_amount = amount - 1;
  927. skill.setAmount(player, "skill.timber", new_amount);
  928. msg.prefix(player, prefix_skill, concat("Used Timber. New amount: ", text.number(new_amount)));
  929. }
  930. goto("wait");
  931. }
  932. if(tech_name == "skill.fly10min") {
  933. duration = data.getTimer(player, "fly");
  934. if(duration > 0) {
  935. msg.prefix(player, prefix_skill, "Skill already active.");
  936. goto("wait");
  937. }
  938. amount = skill.getAmount(player, "skill.fly10min");
  939. if(amount > 0) {
  940. status.addTimed(player, 50, 12000, "Fly");
  941. data.setTimer(player, "fly", 12000);
  942. player.setFly(player, true);
  943. new_amount = amount - 1;
  944. skill.setAmount(player, "skill.fly10min", new_amount);
  945. msg.prefix(player, prefix_skill, concat("Used Fly 10min. New amount: ", text.number(new_amount)));
  946. }
  947. goto("wait");
  948. }
  949. if(tech_name == "skill.grow") {
  950. amount = skill.getAmount(player, "skill.grow");
  951. if(amount > 0) {
  952. grow(player_loc, 5);
  953. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  954. new_amount = amount - 1;
  955. skill.setAmount(player, "skill.grow", new_amount);
  956. msg.prefix(player, prefix_skill, concat("Used Grow. New amount: ", text.number(new_amount)));
  957. }
  958. goto("wait");
  959. }
  960. if(tech_name == "skill.haste") {
  961. amount = skill.getAmount(player, "skill.haste");
  962. if(amount > 0) {
  963. entity.addEffect(player, "haste", 2400, 0);
  964. new_amount = amount - 1;
  965. skill.setAmount(player, "skill.haste", new_amount);
  966. msg.prefix(player, prefix_skill, concat("Used Haste. New amount: ", text.number(new_amount)));
  967. }
  968. goto("wait");
  969. }
  970. if(tech_name == "skill.speed") {
  971. amount = skill.getAmount(player, "skill.speed");
  972. if(amount > 0) {
  973. entity.addEffect(player, "speed", 2400, 0);
  974. new_amount = amount - 1;
  975. skill.setAmount(player, "skill.speed", new_amount);
  976. msg.prefix(player, prefix_skill, concat("Used Speed. New amount: ", text.number(new_amount)));
  977. }
  978. goto("wait");
  979. }
  980. if(tech_name == "skill.jump_boost") {
  981. amount = skill.getAmount(player, "skill.jump_boost");
  982. if(amount > 0) {
  983. entity.addEffect(player, "jump_boost", 2400, 1);
  984. new_amount = amount - 1;
  985. skill.setAmount(player, "skill.jump_boost", new_amount);
  986. msg.prefix(player, prefix_skill, concat("Used Jump Boost. New amount: ", text.number(new_amount)));
  987. }
  988. goto("wait");
  989. }
  990. if(tech_name == "skill.dolphin") {
  991. amount = skill.getAmount(player, "skill.dolphin");
  992. if(amount > 0) {
  993. entity.addEffect(player, "dolphins_grace", 1200, 0);
  994. new_amount = amount - 1;
  995. skill.setAmount(player, "skill.dolphin", new_amount);
  996. msg.prefix(player, prefix_skill, concat("Used Dolphin. New amount: ", text.number(new_amount)));
  997. }
  998. goto("wait");
  999. }
  1000. if(tech_name == "skill.block_up") {
  1001. duration = data.getTimer(player, "block_up");
  1002. if(duration > 0) {
  1003. msg.prefix(player, prefix_skill, "Skill already active.");
  1004. goto("wait");
  1005. }
  1006. amount = skill.getAmount(player, "skill.block_up");
  1007. if(amount > 0) {
  1008. status.addTimed(player, 51, 1200, "Block Up");
  1009. data.setTimer(player, "block_up", 1200);
  1010. new_amount = amount - 1;
  1011. skill.setAmount(player, "skill.block_up", new_amount);
  1012. msg.prefix(player, prefix_skill, concat("Used Block Up. New amount: ", text.number(new_amount)));
  1013. }
  1014. goto("wait");
  1015. }
  1016. if(tech_name == "skill.block_down") {
  1017. duration = data.getTimer(player, "block_down");
  1018. if(duration > 0) {
  1019. msg.prefix(player, prefix_skill, "Skill already active.");
  1020. goto("wait");
  1021. }
  1022. amount = skill.getAmount(player, "skill.block_down");
  1023. if(amount > 0) {
  1024. status.addTimed(player, 52, 1200, "Block Down");
  1025. data.setTimer(player, "block_down", 1200);
  1026. new_amount = amount - 1;
  1027. skill.setAmount(player, "skill.block_down", new_amount);
  1028. msg.prefix(player, prefix_skill, concat("Used Block Down. New amount: ", text.number(new_amount)));
  1029. }
  1030. goto("wait");
  1031. }
  1032. }
  1033. goto("wait");
  1034. }
  1035. if(inv_name == "§8Settings") {
  1036. if(inv_slot == 0) {
  1037. new_value = !player.getAutoCloseDoor(player);
  1038. player.setAutoCloseDoor(player, new_value);
  1039. inv.setItem(inv, inv_slot, read.item("minecraft:oak_door", 1, "§fAutomatic Doors", new_value));
  1040. }
  1041. elseif(inv_slot == 1) {
  1042. new_value = !player.doesAcceptTpaRequests(player);
  1043. player.acceptTpaRequests(player, new_value);
  1044. inv.setItem(inv, inv_slot, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", new_value));
  1045. }
  1046. elseif(inv_slot == 2) {
  1047. new_value = !player.getShowcoords(player);
  1048. player.setShowcoords(player, new_value);
  1049. inv.setItem(inv, inv_slot, read.item("minecraft:compass", 1, "§fShow Coords", new_value));
  1050. if(!new_value) {
  1051. display.remove(player, 30);
  1052. }
  1053. }
  1054. elseif(inv_slot == 3) {
  1055. new_value = !player.hasSittingActivated(player);
  1056. player.activateSitting(player, new_value);
  1057. inv.setItem(inv, inv_slot, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", new_value));
  1058. }
  1059. elseif(inv_slot == 4) {
  1060. new_value = !hasPvpOn(player);
  1061. setPvp(player, new_value);
  1062. inv.setItem(inv, inv_slot, read.item("minecraft:iron_sword", 1, "§fPvP", new_value));
  1063. }
  1064. elseif(inv_slot == 5) {
  1065. new_value = !player.getNoPetDamage(player);
  1066. player.setNoPetDamage(player, new_value);
  1067. inv.setItem(inv, inv_slot, read.item("minecraft:bone", 1, "§fNo Pet Damage", new_value));
  1068. }
  1069. elseif(inv_slot == 6) {
  1070. new_value = !player.getTipLoop(player);
  1071. player.setTipLoop(player, new_value);
  1072. inv.setItem(inv, inv_slot, read.item("minecraft:oak_sign", 1, "§fShow tip loop", new_value));
  1073. }
  1074. inv.update(player);
  1075. }
  1076. goto("wait");
  1077. }
  1078. if(event == "inv_close") {
  1079. if(set.contains(invseeids, inv_id)) {
  1080. set.remove(invseeids, inv_id);
  1081. }
  1082. goto("wait");
  1083. }
  1084. if(event == "function_key") {
  1085. if(player.hasMinigame(player)) {
  1086. goto("wait");
  1087. }
  1088. if(key == 1) {
  1089. inv = inv.new("333333333");
  1090. inv.setItem(inv, 0, read.item("minecraft:oak_door", 1, "§fAutomatic Doors", player.getAutoCloseDoor(player)));
  1091. inv.setItem(inv, 1, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", player.doesAcceptTpaRequests(player)));
  1092. inv.setItem(inv, 2, read.item("minecraft:compass", 1, "§fShow Coords", player.getShowcoords(player)));
  1093. inv.setItem(inv, 3, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", player.hasSittingActivated(player)));
  1094. inv.setItem(inv, 4, read.item("minecraft:iron_sword", 1, "§fPvP", hasPvpOn(player)));
  1095. inv.setItem(inv, 5, read.item("minecraft:bone", 1, "§fNo Pet Damage", player.getNoPetDamage(player)));
  1096. inv.setItem(inv, 6, read.item("minecraft:oak_sign", 1, "§fShow tip loop", player.getTipLoop(player)));
  1097. inv.open(inv, player, "§8Settings");
  1098. goto("wait");
  1099. }
  1100. if(key == 2) {
  1101. player_loc = entity.getLocation(player);
  1102. world_name = world.getName(loc.getWorld(player_loc));
  1103. if(world.isSurvName(world_name) || world_name == "story") {
  1104. skill.showAll(player, player);
  1105. }
  1106. goto("wait");
  1107. }
  1108. if(key == 3) {
  1109. player_loc = entity.getLocation(player);
  1110. world_name = world.getName(loc.getWorld(player_loc));
  1111. if(!world.isSurvName(world_name)) {
  1112. goto("wait");
  1113. }
  1114. world_time = world.getTime(world.getOverWorld());
  1115. while(world_time >= 24000) {
  1116. world_time -= 24000;
  1117. }
  1118. if(world_time <= 12500) {
  1119. msg.prefix(player, prefix_commands, "Only during night possible.");
  1120. goto("wait");
  1121. }
  1122. player_uuid = player.getUuid(player);
  1123. if(set.contains(skip_night_set, player_uuid)) {
  1124. msg.prefix(player, prefix_commands, "Already voted.");
  1125. goto("wait");
  1126. }
  1127. if(time.getMillis() - last_skip_night < 420000) {
  1128. msg.prefix(player, prefix_commands, "Only once per night possible.");
  1129. goto("wait");
  1130. }
  1131. inv.open(skip_night_inv, player, "Skip Night?");
  1132. goto("wait");
  1133. }
  1134. goto("wait");
  1135. }
  1136. if(event == "player_data_tick") {
  1137. if(var == "fly") {
  1138. tpBottom(player);
  1139. player.setFly(player, false);
  1140. }
  1141. }
  1142. goto("wait");
  1143. @mailbox
  1144. location = entity.getLocation(player);
  1145. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1146. if(!world.isSurvName(world_name)) {
  1147. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  1148. goto("wait");
  1149. }
  1150. if(size == 0) {
  1151. msg.prefix(player, prefix_commands, "/mailbox...");
  1152. if(perm.has(player, "mailbox.other")) {
  1153. msg(player, "§6 - show [player] §rOpen a players mailbox.");
  1154. } else {
  1155. msg(player, "§6 - show §rOpen your mailbox.");
  1156. }
  1157. msg(player, "§6 - send <player> §rSend the item in your mainhand to a mailbox.");
  1158. goto("wait");
  1159. }
  1160. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1161. if(arg0 == "send") {
  1162. if(size != 2) {
  1163. msg.prefix(player, prefix_commands, "/mailbox send <player>");
  1164. goto("wait");
  1165. }
  1166. item = living.getHand(player);
  1167. if(item.getType(item) == "minecraft:air") {
  1168. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1169. goto("wait");
  1170. }
  1171. to_name = list.getIndex(args, 1);
  1172. if(!checkIfEverOnline(to_name)) {
  1173. msg.prefix(player, prefix_commands, "This player has never been online.");
  1174. goto("wait");
  1175. }
  1176. to_player_id = player.getId(player.getUuid(to_name));
  1177. index = mailbox.getFreeIndex(to_player_id);
  1178. if(index == -1) {
  1179. msg.prefix(player, prefix_commands, "No free space in mailbox.");
  1180. goto("wait");
  1181. }
  1182. living.setEquip(player, "hand", item.getAir());
  1183. mailbox.setItem(to_player_id, index, item);
  1184. msg.send(player, to_name, prefix_commands, concat(player.getName(player), " sent you items to your mailbox."), true);
  1185. goto("wait");
  1186. }
  1187. if(arg0 == "show") {
  1188. if(size == 1) {
  1189. from_player_id = player.getId(player);
  1190. } elseif(size == 2) {
  1191. if(!perm.has(player, "mailbox.other")) {
  1192. perm.no(player, "mailbox.other");
  1193. goto("wait");
  1194. }
  1195. from_name = list.getIndex(args, 1);
  1196. if(!checkIfEverOnline(from_name)) {
  1197. msg.prefix(player, prefix_commands, "This player has never been online.");
  1198. goto("wait");
  1199. }
  1200. from_player_id = player.getId(player.getUuid(from_name));
  1201. } else {
  1202. if(perm.has(player, "mailbox.other")) {
  1203. msg.prefix(player, prefix_commands, "/mailbox show [player]");
  1204. } else {
  1205. msg.prefix(player, prefix_commands, "/mailbox show");
  1206. }
  1207. goto("wait");
  1208. }
  1209. mailbox.show(player, from_player_id);
  1210. goto("wait");
  1211. }
  1212. goto("wait");
  1213. @entities
  1214. if(size != 1) {
  1215. msg.prefix(player, prefix_quest, "/entities <world>");
  1216. goto("wait");
  1217. }
  1218. world_name = text.toLowerCase(list.getIndex(args, 0));
  1219. world = world.get(world_name);
  1220. if(world == null) {
  1221. msg.prefix(player, prefix_world, "This world is not loaded.");
  1222. goto("wait");
  1223. }
  1224. list = world.getEntities(world);
  1225. size = list.getSize(list);
  1226. map = map.new();
  1227. living = 0;
  1228. for(i = 0; i < size; i++) {
  1229. element = list.getIndex(list, i);
  1230. if(isLiving(element)) {
  1231. living++;
  1232. //living.removeAi(element);
  1233. entity_type = entity.getType(element);
  1234. n = map.get(map, entity_type);
  1235. if(n == null) {
  1236. map.add(map, entity_type, 1);
  1237. } else {
  1238. map.add(map, entity_type, n + 1);
  1239. }
  1240. }
  1241. }
  1242. msg(player, "§0-------------------------------------------------");
  1243. msg(player, "Living: ", living);
  1244. iter = map.iterator(map);
  1245. table = table.new("§b", 14, 14);
  1246. msg(player, table.getStart(table));
  1247. while(hasNext(iter)) {
  1248. element1 = next(iter);
  1249. if(hasNext(iter)) {
  1250. element2 = next(iter);
  1251. } else {
  1252. element2 = "";
  1253. }
  1254. msg(player, table.get(table, element1, element2));
  1255. }
  1256. msg(player, table.getEnd(table));
  1257. goto("wait");
  1258. @RickRole_play
  1259. if(rickIndex < rick_sounds_amount) {
  1260. pitch = list.getIndex(RickRollSounds, rickIndex);
  1261. RickSound(pitch);
  1262. ticks = 2 + list.getIndex(RickRollSoundDists, rickIndex);
  1263. sgoto(ticks, "RickRole_play");
  1264. }
  1265. rickIndex++;
  1266. goto("wait");
  1267. function RickSound(pitch) {
  1268. iter = list.iterator(players.toList());
  1269. while(hasNext(iter)) {
  1270. online_player = next(iter);
  1271. if(online_player == null) {
  1272. continue;
  1273. }
  1274. sound.spawnForPlayer(online_player, $sound_flute, $sound_category_master, 1, pitch);
  1275. sound.spawnForPlayer(online_player, $sound_harp, $sound_category_master, 1, pitch);
  1276. sound.spawnForPlayer(online_player, $sound_pling, $sound_category_master, 1, pitch);
  1277. }
  1278. }
  1279. @hack
  1280. msg.prefix(player, prefix_commands, "Your pc got hacked now.");
  1281. goto("wait");
  1282. @resetMoneyBoost
  1283. money.setBoostFactor(1);
  1284. goto("wait");
  1285. @skip_night_loop
  1286. skip_night_counter--;
  1287. if(skip_night_counter == 0) {
  1288. msg.survival("[§6Commands§r] Skip night results:");
  1289. msg.survival(concat("§e - §rYes: §e", text.number(skip_night_yes)));
  1290. msg.survival(concat("§e - §rNo: §e", text.number(skip_night_no)));
  1291. msg.survival(concat("§e - §rI don't care: §e", text.number(skip_night_no_care)));
  1292. if(skip_night_yes > skip_night_no) {
  1293. world = world.getOverWorld();
  1294. world.setTime(world, 0);
  1295. }
  1296. set.clear(skip_night_set);
  1297. last_skip_night = time.getMillis();
  1298. sgoto(8400, "reset_skip_night");
  1299. goto("wait");
  1300. }
  1301. sgoto(20, "skip_night_loop");
  1302. goto("wait");
  1303. @reset_skip_night
  1304. skip_night_started = false;
  1305. goto("wait");
  1306. @skills
  1307. //skills [player]
  1308. if(size == 0) {
  1309. skill.showAll(player, player);
  1310. goto("wait");
  1311. }
  1312. if(!perm.has(player, "skills.other")) {
  1313. perm.no(player, "skills.other");
  1314. goto("wait");
  1315. }
  1316. p_name = list.getIndex(args, 0);
  1317. p_uuid = player.getUuid(p_name);
  1318. if(p_uuid == null) {
  1319. msg.prefix(player, prefix_tips, "This player has never been online.");
  1320. goto("wait");
  1321. }
  1322. from_p_id = player.getId(p_uuid);
  1323. skill.showAll(from_p_id, player);
  1324. goto("wait");
  1325. @infopoint1
  1326. msg(player, getSpacer());
  1327. msg.prefix(player, "§eSurvival", "§aEnjoy our modded survival feeling. New ores, items and displays, and we are still beginner friendly.");
  1328. goto("wait");
  1329. @infopoint2
  1330. msg(player, getSpacer());
  1331. 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.");
  1332. goto("wait");
  1333. @infopoint3
  1334. msg(player, getSpacer());
  1335. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  1336. goto("wait");
  1337. @infopoint4
  1338. msg(player, getSpacer());
  1339. 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.");
  1340. goto("wait");
  1341. @infopoint5
  1342. msg(player, getSpacer());
  1343. 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.");
  1344. goto("wait");
  1345. @infopoint6
  1346. msg(player, getSpacer());
  1347. 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.");
  1348. goto("wait");
  1349. @infopoint7
  1350. msg(player, getSpacer());
  1351. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  1352. goto("wait");
  1353. @infopoint8
  1354. msg(player, getSpacer());
  1355. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  1356. goto("wait");
  1357. @infopoint9
  1358. msg(player, getSpacer());
  1359. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  1360. goto("wait");
  1361. @infopoint10
  1362. msg(player, getSpacer());
  1363. msg.prefix(player, "§eRules", "§aThere is at least one rule: Be respectful. Look at our fake rules.");
  1364. goto("wait");
  1365. @infopoint11
  1366. msg(player, getSpacer());
  1367. msg.prefix(player, "§eNote", "§aEverything is self-coded. Worldedit is the only external mod we use.");
  1368. goto("wait");
  1369. @infopoint12
  1370. msg(player, getSpacer());
  1371. msg.prefix(player, "§eNote", "§aBe Creative in our creative world.");
  1372. goto("wait");
  1373. @party
  1374. if(size == 0) {
  1375. @partyhelp
  1376. msg.prefix(player, prefix_party, "/party ...");
  1377. msg(player, "§5 - invite <player> §rInvite a player");
  1378. msg(player, "§5 - accept <player> §rAccept an invitation");
  1379. msg(player, "§5 - deny <player> §rDeny an invitation");
  1380. msg(player, "§5 - kick <player> §rKick a player");
  1381. msg(player, "§5 - leave §rLeave the party");
  1382. msg(player, "§5 - promote <player> §rPromote a player");
  1383. msg(player, "§5 - demote <player> §rDemote a player");
  1384. msg(player, "§5 - disband §rDisband a party");
  1385. msg(player, "§5 - list §rParty information");
  1386. msg(player, "§5 - <message> §rSends a party message");
  1387. goto("wait");
  1388. }
  1389. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1390. if(arg0 == "list") {
  1391. if(size != 1) {
  1392. msg.prefix(player, prefix_party, "§5/party list");
  1393. } else {
  1394. if(!player.isInParty(player)) {
  1395. msg.prefix(player, prefix_party, "You are not in a party.");
  1396. goto("wait");
  1397. }
  1398. list = party.getList(player.getPartyId(player));
  1399. width = 1;
  1400. if(list.getSize(list) > 9) {
  1401. width = 2;
  1402. }
  1403. table = table.new("§5", width, 13, 7);
  1404. msg(player, table.getStart(table));
  1405. msg(player, table.get(table, "§d#", "§d§lName", "§d§lRole"));
  1406. msg(player, table.getMiddle(table));
  1407. iter = list.iterator(list);
  1408. c = 0;
  1409. while(hasNext(iter)) {
  1410. c++;
  1411. p = player.get(next(iter));
  1412. msg(player, table.get(table, text.number(c), player.getName(p), player.getPartyRank(p)));
  1413. }
  1414. msg(player, table.getEnd(table));
  1415. }
  1416. goto("wait");
  1417. }
  1418. if(arg0 == "leave") {
  1419. if(size != 1) {
  1420. msg.prefix(player, prefix_party, "§5/party leave");
  1421. } else {
  1422. if(!player.isInParty(player)) {
  1423. msg.prefix(player, prefix_party, "You are not in a party.");
  1424. goto("wait");
  1425. }
  1426. party.kickPlayer(player, "leave");
  1427. }
  1428. goto("wait");
  1429. }
  1430. if(arg0 == "disband") {
  1431. if(size != 1) {
  1432. msg.prefix(player, prefix_party, "§5/party disband");
  1433. } else {
  1434. if(!player.isInParty(player)) {
  1435. msg.prefix(player, prefix_party, "You are not in a party.");
  1436. goto("wait");
  1437. }
  1438. if(!player.isPartyLeader(player)) {
  1439. msg.prefix(player, prefix_party, "You are not the party leader.");
  1440. goto("wait");
  1441. }
  1442. party.delete(player.getPartyId(player));
  1443. }
  1444. goto("wait");
  1445. }
  1446. if(arg0 == "kick") {
  1447. if(size != 2) {
  1448. msg.prefix(player, prefix_party, "§5/party kick <player>");
  1449. } else {
  1450. if(!player.isInParty(player)) {
  1451. msg.prefix(player, prefix_party, "You are not in a party.");
  1452. goto("wait");
  1453. }
  1454. if(!player.isPartyLeaderOrMod(player)) {
  1455. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1456. goto("wait");
  1457. }
  1458. pname = list.getIndex(args, 1);
  1459. if(!checkIfEverOnline(pname)) {
  1460. msg.prefix(player, prefix_party, "This player has never been online.");
  1461. goto("wait");
  1462. }
  1463. p = read.player(pname);
  1464. if(p == null) {
  1465. msg.prefix(player, prefix_party, "This player is not online.");
  1466. goto("wait");
  1467. }
  1468. if(player == p) {
  1469. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1470. goto("wait");
  1471. }
  1472. if(!party.same(p, player)) {
  1473. msg.prefix(player, prefix_party, "This player is not in your party.");
  1474. goto("wait");
  1475. }
  1476. ownrank = player.getPartyRank(player);
  1477. if(ownrank == "Moderator") {
  1478. if(player.isPartyLeaderOrMod(p)) {
  1479. msg.prefix(player, prefix_party, "You can't kick this player.");
  1480. goto("wait");
  1481. }
  1482. }
  1483. party.kickPlayer(p, "kick");
  1484. }
  1485. goto("wait");
  1486. }
  1487. if(arg0 == "promote" || arg0 == "demote") {
  1488. if(size != 2) {
  1489. msg.prefix(player, prefix_party, concat("§5/party ", arg0, " <player>"));
  1490. } else {
  1491. pname = list.getIndex(args, 1);
  1492. if(!player.isInParty(player)) {
  1493. msg.prefix(player, prefix_party, "You are not in a party.");
  1494. goto("wait");
  1495. }
  1496. if(!player.isPartyLeader(player)) {
  1497. msg.prefix(player, prefix_party, "You are not the party leader.");
  1498. goto("wait");
  1499. }
  1500. if(!checkIfEverOnline(pname)) {
  1501. msg.prefix(player, prefix_party, "This player has never been online.");
  1502. goto("wait");
  1503. }
  1504. p = read.player(pname);
  1505. if(p == null) {
  1506. msg.prefix(player, prefix_party, "This player is not online.");
  1507. goto("wait");
  1508. }
  1509. if(player == p) {
  1510. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1511. goto("wait");
  1512. }
  1513. if(!party.same(p, player)) {
  1514. msg.prefix(player, prefix_party, "This player is not in your party.");
  1515. goto("wait");
  1516. }
  1517. partyid = player.getPartyId(player);
  1518. rank = player.getPartyRank(p);
  1519. if(arg0 == "promote") {
  1520. if(rank == "Player") {
  1521. player.setPartyRank(p, "Moderator");
  1522. party.sendMessage(partyid, concat("§r", pname, " is now Moderator."));
  1523. } elseif(rank == "Moderator") {
  1524. player.setPartyRank(p, "Leader");
  1525. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1526. party.sendMessage(partyid, concat("§r", pname, " is now Leader."));
  1527. }
  1528. } elseif(arg0 == "demote") {
  1529. if(rank == "Moderator") {
  1530. player.setPartyRank(p, "Player");
  1531. party.sendMessage(partyid, concat("§r", pname, " is no longer Moderator."));
  1532. } else {
  1533. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1534. }
  1535. }
  1536. }
  1537. goto("wait");
  1538. }
  1539. if(arg0 == "invite") {
  1540. if(size != 2) {
  1541. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1542. } else {
  1543. p_name = list.getIndex(args, 1);
  1544. if(!checkIfEverOnline(p_name)) {
  1545. msg.prefix(player, prefix_party, "This player has never been online.");
  1546. goto("wait");
  1547. }
  1548. p = read.player(p_name);
  1549. temp = party.invitePlayer(player, p);
  1550. if(temp == "inviteeNotOnline") {
  1551. msg.prefix(player, prefix_party, "This player is not online.");
  1552. } elseif(temp == "inviterEqualsInvitee") {
  1553. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1554. } elseif(temp == "inviterNotPermitted") {
  1555. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1556. } elseif(temp == "inviteeAlreadyInParty") {
  1557. msg.prefix(player, prefix_party, "This player is already in your party.");
  1558. } elseif(temp == "inviteeAlreadyInvited") {
  1559. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1560. } else {
  1561. msg.prefix(player, prefix_party, "Invitation sent.");
  1562. }
  1563. }
  1564. goto("wait");
  1565. }
  1566. if(arg0 == "accept") {
  1567. if(size != 2) {
  1568. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1569. } else {
  1570. if(player.isInParty(player)) {
  1571. msg.prefix(player, prefix_party, "You are already in a party.");
  1572. goto("wait");
  1573. }
  1574. pname = list.getIndex(args, 1);
  1575. if(!checkIfEverOnline(pname)) {
  1576. msg.prefix(player, prefix_party, "This player has never been online.");
  1577. goto("wait");
  1578. }
  1579. p = read.player(pname);
  1580. if(p == null) {
  1581. msg.prefix(player, prefix_party, "This player is no longer online.");
  1582. goto("wait");
  1583. }
  1584. player_uuid = player.getUuid(player);
  1585. p_uuid = player.getUuid(p);
  1586. list = map.get(party_invitations, player_uuid);
  1587. if(list == null || !list.contains(list, p_uuid)) {
  1588. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1589. goto("wait");
  1590. }
  1591. if(player.isInParty(p)) { //wenn einlader bereits in party
  1592. partyid = player.getPartyId(p);
  1593. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1594. party.addPlayer(partyid, player);
  1595. player.setPartyRank(player, "Player");
  1596. } else {
  1597. msg.prefix(player, prefix_party, "This player is already in another party.");
  1598. goto("wait");
  1599. }
  1600. } else {
  1601. partyid = map.get(party_invite_ids, p_uuid);
  1602. party.setList(partyid, list.new());
  1603. party.addPlayer(partyid, p);
  1604. party.addPlayer(partyid, player);
  1605. player.setPartyRank(p, "Leader");
  1606. player.setPartyRank(player, "Player");
  1607. msg.prefix(p, prefix_party, "The party was created.");
  1608. }
  1609. list.clear(list); //Einladungs-Liste von oben
  1610. party.sendMessage(partyid, concat("§r", player_name, " joined the party."));
  1611. }
  1612. goto("wait");
  1613. }
  1614. if(arg0 == "deny") {
  1615. if(size != 2) {
  1616. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1617. } else {
  1618. player_uuid = player.getUuid(player);
  1619. list = map.get(party_invitations, player_uuid);
  1620. if(list != null) {
  1621. pname = list.getIndex(args, 1);
  1622. p = read.player(pname);
  1623. if(p == null) {
  1624. msg.prefix(player, prefix_party, "This player is no longer online.");
  1625. goto("wait");
  1626. }
  1627. p_uuid = player.getUuid(p);
  1628. if(list == null || !list.contains(list, p_uuid)) {
  1629. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1630. goto("wait");
  1631. }
  1632. index = list.getIndexOf(list, p_uuid);
  1633. list.remove(list, p_uuid);
  1634. keytimes = map.get(delkeytimes, player_uuid);
  1635. list.removeIndex(keytimes, index);
  1636. p = read.player(pname);
  1637. if(p != null) {
  1638. msg.prefix(p, prefix_party, concat("§r", player_name, " has denied your invitation."));
  1639. }
  1640. msg.prefix(player, prefix_party, concat("Invitation from ", pname, " denied."));
  1641. }
  1642. }
  1643. goto("wait");
  1644. }
  1645. if(player.isInParty(player)) {
  1646. message = concat(player.getName(player), " §1| §r", text.concatList(args, " ", 0, list.getSize(args) - 1));
  1647. party.sendMessage(player.getPartyId(player), message);
  1648. goto("wait");
  1649. }
  1650. goto("partyhelp");
  1651. @setmessage
  1652. if(size == 0) {
  1653. @setmessagehelp
  1654. msg.prefix(player, prefix_commands, "/setmessage ...");
  1655. msg(player, "§e- join <message> §rSets your joinmessage");
  1656. msg(player, "§e- leave <message> §rSets your leavemessage");
  1657. msg(player, "§e- info §rShows you set messages");
  1658. if(perm.has(player, "setmessage.delete")) {
  1659. msg(player, "§e- delete <player> §rDeletes a players messages");
  1660. }
  1661. goto("wait");
  1662. }
  1663. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1664. if(arg0 == "info") {
  1665. fullname = player.getFullName(player);
  1666. message = text.convert(player.getJoinMessage(player));
  1667. if(message == null) {
  1668. msg.prefix(player, prefix_commands, "No join message set.");
  1669. } else {
  1670. msg.prefix(player, prefix_commands, concat("§a§l> §r", fullname, " §9", message));
  1671. }
  1672. message = text.convert(player.getLeaveMessage(player));
  1673. if(message == null) {
  1674. msg.prefix(player, prefix_commands, "No leave message set.");
  1675. } else {
  1676. msg.prefix(player, prefix_commands, concat("§c§l> §r", fullname, " §9", message));
  1677. }
  1678. goto("wait");
  1679. }
  1680. if(arg0 == "join") {
  1681. if(size < 2) {
  1682. goto("setmessagehelp");
  1683. }
  1684. message = text.concatList(args, " ", 1, size - 1);
  1685. player.setJoinMessage(player, message);
  1686. msg.prefix(player, prefix_commands, "Join-Message set.");
  1687. goto("wait");
  1688. }
  1689. if(arg0 == "leave") {
  1690. if(size < 2) {
  1691. goto("setmessagehelp");
  1692. }
  1693. message = text.concatList(args, " ", 1, size - 1);
  1694. player.setLeaveMessage(player, message);
  1695. msg.prefix(player, prefix_commands, "Leave-Message set.");
  1696. goto("wait");
  1697. }
  1698. if(arg0 == "delete") {
  1699. if(size == 1) {
  1700. p_uuid = player.getUuid(player);
  1701. } elseif(size == 2) {
  1702. if(!perm.has(player, "setmessage.delete")) {
  1703. perm.no(player, "setmessage.delete");
  1704. goto("wait");
  1705. }
  1706. p_name = list.getIndex(args, 1);
  1707. if(!checkIfEverOnline(p_name)) {
  1708. msg.prefix(player, prefix_commands, "This player has never been online.");
  1709. goto("wait");
  1710. }
  1711. p_uuid = player.getUuid(p_name);
  1712. } else {
  1713. goto("setmessagehelp");
  1714. }
  1715. p_id = player.getId(p_uuid);
  1716. player.setJoinMessage(p_id, "null");
  1717. player.setLeaveMessage(p_id, "null");
  1718. msg.prefix(player, prefix_commands, "Messages deleted.");
  1719. goto("wait");
  1720. }
  1721. goto("wait");
  1722. @lag
  1723. msg.prefix(player, prefix_commands, "Lag test is performed. Please wait...");
  1724. a = array.new(2);
  1725. a[0] = player.getUuid(player);
  1726. a[1] = time.getMillis();
  1727. list.add(lag_list, a);
  1728. sgoto(100, "do_lag_test");
  1729. goto("wait");
  1730. @do_lag_test
  1731. t = time.getMillis();
  1732. a = list.getIndex(lag_list, 0);
  1733. list.removeIndex(lag_list, 0);
  1734. p_uuid = a[0];
  1735. t_old = a[1];
  1736. t = math.roundComma((t - t_old) / 50 / 5, 2);
  1737. p = player.get(p_uuid);
  1738. if(p != null) {
  1739. msg.prefix(p, prefix_commands, "Expected: 20 ticks/sec");
  1740. msg.prefix(p, prefix_commands, concat("Measured: ", text.number(t), " ticks/sec"));
  1741. }
  1742. goto("wait");
  1743. @live
  1744. boolean = !player.isLive(player);
  1745. player.setLive(player, boolean);
  1746. player.setHeadName(player);
  1747. player.setTabName(player);
  1748. msg.prefix(player, prefix_commands, "Live toggled.");
  1749. goto("wait");
  1750. @lightning
  1751. location = player.getTarget(player, 50, true, true);
  1752. if(block.getType(location) == "minecraft:air") {
  1753. msg.prefix(player, prefix_commands, "No block in sight.");
  1754. goto("wait");
  1755. }
  1756. entity.spawn("minecraft:lightning_bolt", location);
  1757. goto("wait");
  1758. @ride
  1759. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  1760. if(world.isGamesName(world_name)) {
  1761. if(player.hasMinigame(affectedplayer) || (perm.has(affectedplayer, "ride") && !perm.has(affectedplayer, "isTeam"))) {
  1762. if(size == 2) {
  1763. msg.prefix(player, prefix_commands, "This player can't use this now.");
  1764. } else {
  1765. msg.prefix(player, prefix_commands, "You can't use this now.");
  1766. }
  1767. goto("wait");
  1768. }
  1769. }
  1770. player_uuid = player.getUuid(player);
  1771. if(set.contains(ride_set, player_uuid)) {
  1772. msg.prefix(player, prefix_commands, "Entity-Ride-Click removed.");
  1773. set.remove(ride_set, player_uuid);
  1774. } else {
  1775. msg.prefix(player, prefix_commands, "Click an entity to ride it.");
  1776. set.add(ride_set, player_uuid);
  1777. }
  1778. goto("wait");
  1779. @vanish
  1780. //vanish [on/off] [player]
  1781. if(size == 0) {
  1782. if(set.contains(vanish_set, player.getUuid(affectedplayer))) {
  1783. bool = "off";
  1784. } else {
  1785. bool = "on";
  1786. }
  1787. }
  1788. if(size >= 1) {
  1789. bool = list.getIndex(args, 0);
  1790. }
  1791. if(size == 2) {
  1792. affectedname = list.getIndex(args, 1);
  1793. affectedplayer = read.player(affectedname);
  1794. affectedname = player.getName(affectedplayer);
  1795. if(affectedplayer == null) {
  1796. msg.prefix(player, prefix_commands, "This player is not online.");
  1797. goto("wait");
  1798. }
  1799. }
  1800. if(bool == "on") {
  1801. if(affectedname != player_name) {
  1802. msg.prefix(player, prefix_commands, concat(affectedname, " has been vanished."));
  1803. msg.prefix(affectedplayer, prefix_commands, concat("You have been vanished by ", player_name, "."));
  1804. } else {
  1805. msg.prefix(affectedplayer, prefix_commands, "You are vanished.");
  1806. }
  1807. set.add(vanish_set, player.getUuid(affectedplayer));
  1808. player.hide(affectedplayer);
  1809. } elseif(bool == "off") {
  1810. if(affectedname != player_name) {
  1811. msg.prefix(player, prefix_commands, concat(affectedname, " is no longer vanished."));
  1812. msg.prefix(affectedplayer, prefix_commands, concat("You are no longer vanished caused by ", player_name, "."));
  1813. } else {
  1814. msg.prefix(affectedplayer, prefix_commands, "You are no longer vanished.");
  1815. }
  1816. set.remove(vanish_set, player.getUuid(affectedplayer));
  1817. player.show(affectedplayer);
  1818. } else {
  1819. msg.prefix(player, prefix_commands, "/vanish [on/off] [player]");
  1820. }
  1821. goto("wait");
  1822. @user
  1823. if(size == 0) {
  1824. p_name = player.getName(player);
  1825. p_uuid = player.getUuid(p_name);
  1826. } else {
  1827. if(!perm.has(player, "user.other")) {
  1828. perm.no(player, "user.other");
  1829. goto("wait");
  1830. }
  1831. p_name = list.getIndex(args, 0);
  1832. if(!checkIfEverOnline(p_name)) {
  1833. msg.prefix(player, prefix_commands, "This player has never been online.");
  1834. goto("wait");
  1835. }
  1836. p_uuid = player.getUuid(p_name);
  1837. p_name = player.getName(p_uuid);
  1838. }
  1839. p = read.player(p_name);
  1840. p_id = player.getId(p_uuid);
  1841. if(p == null) {
  1842. p_or_id = p_id;
  1843. } else {
  1844. p_or_id = p;
  1845. }
  1846. table = table.new("§8", 7, 24);
  1847. msg(player, table.getStart(table));
  1848. msg(player, table.get(table, "Player", p_name));
  1849. msg(player, table.getMiddle(table));
  1850. msg(player, table.get(table, "Playtime", text.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  1851. msg(player, table.get(table, "Joins", text.number(player.getJoins(p_or_id))));
  1852. msg(player, table.get(table, "First Join", getDateString(player.getFirstJoin(p_or_id))));
  1853. msg(player, table.get(table, "Last Join", getDateString(player.getLastJoin(p_or_id))));
  1854. msg(player, table.get(table, "UUID", p_uuid));
  1855. msg(player, table.get(table, "ID", text.number(p_id)));
  1856. msg(player, table.get(table, "Rank", getRank(p_or_id)));
  1857. msg(player, table.get(table, "PvP", hasPvpOn(p_or_id)));
  1858. msg(player, table.get(table, "Quests", text.number(quest.getCounter(p_or_id))));
  1859. msg(player, table.get(table, "Money", text.number(getMoney(p_or_id))));
  1860. msg(player, table.get(table, "Adventures", text.number(player.getAdventureAmounts(p_or_id))));
  1861. msg(player, table.getEnd(table));
  1862. goto("wait");
  1863. @quest
  1864. if(size == 0) {
  1865. @quest_syntax
  1866. msg.prefix(player, prefix_quest, "/quest ...");
  1867. msg(player, "§5 - see §rSee all active quests");
  1868. msg(player, "§5 - term <player> §rTerminates a player's quest");
  1869. goto("wait");
  1870. }
  1871. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1872. if(arg0 == "see") {
  1873. if(size != 1) {
  1874. msg.prefix(player, prefix_quest, "/quest see");
  1875. goto("wait");
  1876. }
  1877. quest_map = quest.getIds();
  1878. iter = map.iterator(quest_map);
  1879. while(hasNext(iter)) {
  1880. element = next(iter);
  1881. key = map.getKey(element);
  1882. value = map.getValue(element);
  1883. script = script.getFromId(value);
  1884. if(script == null) {
  1885. continue;
  1886. }
  1887. msg(player, player.getName(key), " ", value);
  1888. }
  1889. goto("wait");
  1890. }
  1891. if(arg0 == "term") {
  1892. if(size != 2) {
  1893. msg.prefix(player, prefix_quest, "/quest term <player>");
  1894. goto("wait");
  1895. }
  1896. p_name = list.getIndex(args, 1);
  1897. if(!checkIfEverOnline(p_name)) {
  1898. msg.prefix(player, prefix_quest, "This player has never been online.");
  1899. goto("wait");
  1900. }
  1901. p = read.player(p_name);
  1902. if(p == null) {
  1903. msg.prefix(player, prefix_quest, "This player is not online.");
  1904. goto("wait");
  1905. }
  1906. script_id = quest.getFromPlayer(p);
  1907. if(script_id == null) {
  1908. msg.prefix(player, prefix_quest, "This player has no quest.");
  1909. goto("wait");
  1910. }
  1911. script = script.getFromId(script_id);
  1912. if(script == null) {
  1913. quest.removePlayer(p);
  1914. msg.prefix(player, prefix_quest, "Corrupt quest terminated.");
  1915. goto("wait");
  1916. }
  1917. setScriptVar("player", p);
  1918. modTimer.scriptCallEvent("quest_term", script);
  1919. quest.term(script, player);
  1920. msg.prefix(player, prefix_quest, "Player's quest terminated.");
  1921. goto("wait");
  1922. }
  1923. goto("quest_syntax");
  1924. @friend
  1925. if(size == 0) {
  1926. @friend_syntax
  1927. msg.prefix(player, prefix_friends, "/friend ...");
  1928. msg(player, "§5 - add <player> §rAdds a friend");
  1929. msg(player, "§5 - remove <player> §rRemoves a friend");
  1930. msg(player, "§5 - list §rLists all your friends");
  1931. goto("wait");
  1932. }
  1933. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1934. if(arg0 == "add") {
  1935. if(size != 2) {
  1936. msg.prefix(player, prefix_friends, "/friend add <player>");
  1937. goto("wait");
  1938. }
  1939. friend_name = list.getIndex(args, 1);
  1940. if(player_name == friend_name) {
  1941. msg.prefix(player, prefix_friends, "You can't invite yourself.");
  1942. goto("wait");
  1943. }
  1944. player_id = player.getId(player);
  1945. if(!checkIfEverOnline(friend_name)) {
  1946. msg.prefix(player, prefix_friends, "This player has never been online.");
  1947. goto("wait");
  1948. }
  1949. friend_id = player.getId(player.getUuid(friend_name));
  1950. if(friend.check(player_id, friend_id)) {
  1951. msg.prefix(player, prefix_friends, "This player is already your friend.");
  1952. goto("wait");
  1953. }
  1954. if(map.contains(friend_requests, friend_id)) {
  1955. if(map.get(friend_requests, friend_id) == player_id) {
  1956. friend.add(player_id, friend_id);
  1957. map.remove(friend_requests, friend_id);
  1958. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is your friend now."));
  1959. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is your friend now."), true);
  1960. goto("wait");
  1961. }
  1962. }
  1963. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  1964. friend = read.player(friend_name);
  1965. msg.prefix(player, prefix_friends, concat("You sent an invitation to §7", friend_name, "§r."));
  1966. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r wants to be your friend."), true);
  1967. if(friend != null) {
  1968. msg(friend, text.click("§r[§aAccept§r]", concat("/friend add ", player_name)));
  1969. }
  1970. goto("wait");
  1971. }
  1972. if(arg0 == "remove") {
  1973. if(size != 2) {
  1974. msg.prefix(player, prefix_friends, "/friend remove <player>");
  1975. goto("wait");
  1976. }
  1977. friend_name = list.getIndex(args, 1);
  1978. player_id = player.getId(player);
  1979. if(!checkIfEverOnline(friend_name)) {
  1980. msg.prefix(player, prefix_friends, "This player has never been online.");
  1981. goto("wait");
  1982. }
  1983. friend_id = player.getId(player.getUuid(friend_name));
  1984. if(!friend.check(player_id, friend_id)) {
  1985. msg.prefix(player, prefix_friends, "This player isn't your friend.");
  1986. goto("wait");
  1987. }
  1988. friend.delete(player_id, friend_id);
  1989. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is no longer your friend."));
  1990. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is no longer your friend."), true);
  1991. goto("wait");
  1992. }
  1993. if(arg0 == "list") {
  1994. if(size != 1) {
  1995. msg.prefix(player, prefix_friends, "/friend list");
  1996. goto("wait");
  1997. }
  1998. player_id = player.getId(player);
  1999. friendlist = friend.getList(player_id);
  2000. listsize = list.getSize(friendlist);
  2001. if(listsize == 0) {
  2002. msg.prefix(player, prefix_friends, "You have no friends yet.");
  2003. goto("wait");
  2004. }
  2005. msg(player, "§5Friends:");
  2006. for(i = 0; i <= listsize - 1; i++) {
  2007. msg(player, "§r- ", list.getIndex(friendlist, i));
  2008. }
  2009. goto("wait");
  2010. }
  2011. goto("friend_syntax");
  2012. @var
  2013. if(size != 2) {
  2014. msg.prefix(player, prefix_commands, "/var <id> <varname>");
  2015. goto("wait");
  2016. }
  2017. script_id = list.getIndex(args, 0);
  2018. script = script.getFromId(script_id);
  2019. if(script == null) {
  2020. msg.prefix(player, "§dScript", "Invalid id");
  2021. goto("wait");
  2022. }
  2023. var_name = list.getIndex(args, 1);
  2024. var = script.getVar(script, var_name);
  2025. msg.prefix(player, "§dScript", concat(var_name, " = ", var));
  2026. goto("wait");
  2027. @vote
  2028. link1 = "https://minecraft-server.eu/vote/index/2227F";
  2029. link2 = "https://minecraft-server-list.com/server/478200/vote/";
  2030. msg(player, "[", prefix_vote, "§r] ", text.link(link1, link1));
  2031. msg(player, "[", prefix_vote, "§r] ", text.link(link2, link2));
  2032. goto("wait");
  2033. @voteshop
  2034. inv.open(vote_inv, player, concat("Your vote points: §6", text.number(player.getVotePoints(player))));
  2035. goto("wait");
  2036. @voxel
  2037. if(size < 1) {
  2038. @voxelhelp
  2039. msg.prefix(player, prefix_commands, "/voxel <radius:1-5>");
  2040. msg.prefix(player, prefix_commands, "/voxel block");
  2041. goto("wait");
  2042. }
  2043. arg0 = list.getIndex(args, 0);
  2044. if(isDouble(arg0)) {
  2045. radius = arg0;
  2046. if(radius < 1) {
  2047. radius = 1;
  2048. }
  2049. if(radius > 5) {
  2050. radius = 5;
  2051. }
  2052. script = script.get("Voxel");
  2053. map = script.getVar(script, "radius_per_player");
  2054. map.add(map, player.getUuid(player), radius);
  2055. script.setVar(script, "radius_per_player", map);
  2056. msg.prefix(player, prefix_commands, concat("Set radius to ", text.number(radius), "."));
  2057. goto("wait");
  2058. }
  2059. if(arg0 == "block") {
  2060. item = living.getEquip(player, "hand");
  2061. item_type = item.getType(item);
  2062. if(item_type == "minecraft:air") {
  2063. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  2064. goto("wait");
  2065. }
  2066. state = block.newState(item_type);
  2067. script = script.get("Voxel");
  2068. map = script.getVar(script, "state_per_player");
  2069. map.add(map, player.getUuid(player), state);
  2070. script.setVar(script, "state_per_player", map);
  2071. msg.prefix(player, prefix_commands, concat("Set block to ", item_type, "."));
  2072. goto("wait");
  2073. }
  2074. goto("voxelhelp");
  2075. @setservermessage
  2076. if(size < 1) {
  2077. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  2078. goto("wait");
  2079. }
  2080. message = text.concatList(args, " ", 0, size - 1);
  2081. message = text.replace(message, "&", "§");
  2082. setMOTD(message);
  2083. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  2084. goto("wait");
  2085. @error
  2086. if(size < 1) {
  2087. msg.prefix(player, "§cError", "/error ...");
  2088. msg(player, "§c - list §rLists all errors");
  2089. msg(player, "§c - clear §rDeletes all errors");
  2090. goto("wait");
  2091. }
  2092. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2093. if(arg0 == "list") {
  2094. error_size = error.getSize();
  2095. if(error_size == 0) {
  2096. msg.prefix(player, "§cError", "No errors existing.");
  2097. goto("wait");
  2098. }
  2099. for(i = 0; i < error_size; i++) {
  2100. msg(player, error.getIndex(i));
  2101. }
  2102. goto("wait");
  2103. }
  2104. if(arg0 == "clear") {
  2105. error.clear();
  2106. msg.prefix(player, "§cError", "All errors deleted.");
  2107. goto("wait");
  2108. }
  2109. goto("wait");
  2110. @errordebug
  2111. if(size < 1) {
  2112. msg.prefix(player, "§cErrorDebugs", "/errordebug ...");
  2113. msg(player, "§c - list §rLists all errordebugs");
  2114. msg(player, "§c - clear §rDeletes all errordebugs");
  2115. msg(player, "§c - toggle §rToggles errordebugs");
  2116. goto("wait");
  2117. }
  2118. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2119. if(arg0 == "list") {
  2120. error_size = debug.getSize();
  2121. if(error_size == 0) {
  2122. msg.prefix(player, "§cErrorDebugs", "No errordebugs existing.");
  2123. goto("wait");
  2124. }
  2125. for(i = 0; i < error_size; i++) {
  2126. msg(player, debug.getIndex(i));
  2127. }
  2128. goto("wait");
  2129. }
  2130. if(arg0 == "clear") {
  2131. debug.clear();
  2132. msg.prefix(player, "§cErrorDebugs", "All errordebugs deleted.");
  2133. goto("wait");
  2134. }
  2135. if(arg0 == "toggle") {
  2136. new_value = !perm.has(player, "script.debug");
  2137. player.showDebug(player, new_value);
  2138. if(new_value) {
  2139. msg.prefix(player, prefix_commands, "Debug messages are now shown.");
  2140. } else {
  2141. msg.prefix(player, prefix_commands, "Debug messages are now hidden.");
  2142. }
  2143. goto("wait");
  2144. }
  2145. goto("wait");
  2146. @hat
  2147. item = living.getEquip(player, "hand");
  2148. if(item.getType(item) == "minecraft:air") {
  2149. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  2150. goto("wait");
  2151. }
  2152. living.setEquip(player, "head", item);
  2153. living.setEquip(player, "hand", read.item("minecraft:air"));
  2154. goto("wait");
  2155. @hawkeye
  2156. if(size == 0) {
  2157. @partyhelp
  2158. msg.prefix(player, prefix_party, "/hawkeye ...");
  2159. msg(player, "§5 - search <parameters> §rSearch for griefs");
  2160. msg(player, "§5 - rollback §rRollback last search");
  2161. msg(player, "§5 - undo §rUndos your last rollback");
  2162. msg(player, "§5 - tool §rGives you the Hawkeye Tool");
  2163. if(perm.has(player, "hawkeye.entries")) {
  2164. msg(player, "§5 - entries §rShows the amount of all entries");
  2165. }
  2166. msg(player, "");
  2167. msg(player, "§5 - Parameters:");
  2168. msg(player, "§5 - e:<event>");
  2169. msg(player, "§5 - p:<player>");
  2170. msg(player, "§5 - r:<radius>");
  2171. msg(player, "§5 - t:<timespan> e.g. \"5d,4h,20m\"");
  2172. goto("wait");
  2173. }
  2174. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2175. if(arg0 == "tool") {
  2176. player.giveItem(player, ha_tool);
  2177. goto("wait");
  2178. }
  2179. if(arg0 == "print") {
  2180. side = list.getIndex(args, 1);
  2181. if(!isDouble(side)) {
  2182. msg.prefix(player, prefix_commands, "Number expected.");
  2183. goto("wait");
  2184. }
  2185. if(side < 1) {
  2186. msg.prefix(player, prefix_commands, "Positive number expected.");
  2187. goto("wait");
  2188. }
  2189. list = hawkeye.getDataList(player);
  2190. if(list == null) {
  2191. goto("wait");
  2192. }
  2193. if(side > list.getSize(list)) {
  2194. msg.prefix(player, prefix_commands, "Invalid number.");
  2195. goto("wait");
  2196. }
  2197. hawkeye.print(player, list, side);
  2198. goto("wait");
  2199. }
  2200. if(arg0 == "search") {
  2201. if(size < 2) {
  2202. msg.prefix(player, prefix_commands, "/hawkeye search <parameters>");
  2203. goto("wait");
  2204. }
  2205. a = hawkeye.processInput(args, player);
  2206. if(text.class(a) == "String") {
  2207. msg.prefix(player, prefix_hawkeye, a);
  2208. goto("wait");
  2209. }
  2210. timeFrom = a[0];
  2211. timeTo = a[1];
  2212. player_loc = a[2];
  2213. radius = a[3];
  2214. events = a[4];
  2215. players = a[5];
  2216. l = hawkeye.getData(timeFrom, timeTo, player_loc, radius, events, players, "DESC");
  2217. if(text.class(l) == "String") {
  2218. msg.prefix(player, prefix_hawkeye, l);
  2219. hawkeye.setDataList(player, list.new());
  2220. goto("wait");
  2221. }
  2222. if(list.getSize(l) == 0) {
  2223. msg.prefix(player, prefix_hawkeye, "No results found.");
  2224. hawkeye.setDataList(player, list.new());
  2225. goto("wait");
  2226. }
  2227. hawkeye.setDataList(player, l);
  2228. hawkeye.print(player, l, 1);
  2229. goto("wait");
  2230. }
  2231. if(arg0 == "entries") {
  2232. if(!perm.has(player, "hawkeye.entries")) {
  2233. perm.no(player, "hawkeye.entries");
  2234. goto("wait");
  2235. }
  2236. msg.prefix(player, prefix_commands, concat("Anzahl an Hawkeye-Einträgen: " , text.number(hawkeye.getAmountOfAll())));
  2237. goto("wait");
  2238. }
  2239. if(arg0 == "rollback") {
  2240. l = hawkeye.getDataList(player);
  2241. if(l == null) {
  2242. msg.prefix(player, prefix_hawkeye, "No results to rollback.");
  2243. goto("wait");
  2244. }
  2245. if(list.getSize(l) == 0) {
  2246. msg.prefix(player, prefix_hawkeye, "No results to rollback.");
  2247. goto("wait");
  2248. }
  2249. if(list.getSize(l) >= 1000) {
  2250. msg.prefix(player, prefix_hawkeye, "Limit (1000) reached. Edit search parameters.");
  2251. goto("wait");
  2252. }
  2253. counter = hawkeye.rollback(l);
  2254. hawkeye.setUndoList(player, l);
  2255. msg.prefix(player, prefix_hawkeye, concat(text.number(counter), " blocks rollbacked."));
  2256. goto("wait");
  2257. }
  2258. if(arg0 == "undo") {
  2259. l = hawkeye.getUndoList(player);
  2260. if(l == null) {
  2261. msg.prefix(player, prefix_hawkeye, "No rollback to undo.");
  2262. goto("wait");
  2263. }
  2264. if(list.getSize(l) == 0) {
  2265. msg.prefix(player, prefix_hawkeye, "No rollback to undo.");
  2266. goto("wait");
  2267. }
  2268. hawkeye.undo(l);
  2269. hawkeye.setUndoList(player, list.new());
  2270. msg.prefix(player, prefix_hawkeye, "Undo done.");
  2271. goto("wait");
  2272. }
  2273. goto("wait");
  2274. @news
  2275. if(size < 1) {
  2276. msg.prefix(player, prefix_commands, "/news <text>");
  2277. goto("wait");
  2278. }
  2279. message = text.concatList(args, " ", 0, size - 1);
  2280. online_list = players.toList();
  2281. for(i = 0; i < list.getSize(online_list); i++) {
  2282. p = list.getIndex(online_list, i);
  2283. title.reset(p);
  2284. title.setSub(p, concat("by ", player_name));
  2285. title.send(p, "§cNews");
  2286. msg.prefix(p, "§4News", concat("§c", message));
  2287. }
  2288. goto("wait");
  2289. @spawn
  2290. if(size == 1) {
  2291. if(!perm.has(player, "teleport.other")) {
  2292. perm.no(player, "teleport.other");
  2293. goto("wait");
  2294. }
  2295. affectedname = list.getIndex(args, 0);
  2296. affectedplayer = read.player(affectedname);
  2297. if(affectedplayer == null) {
  2298. msg.prefix(player, prefix_commands, "This player is not online.");
  2299. goto("wait");
  2300. }
  2301. }
  2302. if(player.hasMinigame(affectedplayer)) {
  2303. if(size == 1) {
  2304. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  2305. goto("wait");
  2306. }
  2307. msg.prefix(player, prefix_commands, "You can't teleport now.");
  2308. goto("wait");
  2309. }
  2310. if(player.teleport(affectedplayer, serverspawn, true)) {
  2311. if(player == affectedplayer) {
  2312. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the spawn.");
  2313. } else {
  2314. affectedname = player.getName(affectedplayer);
  2315. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the spawn."));
  2316. }
  2317. }
  2318. goto("wait");
  2319. @rank
  2320. msg(player, getSpacer());
  2321. rank = getRank(player);
  2322. msg(player, concat("§6Current rank: §r[", rank, "§r]"));
  2323. msg(player, "Choose a rank:");
  2324. rank.showAll(player);
  2325. goto("wait");
  2326. @setrank
  2327. if(size < 2) {
  2328. msg.prefix(player, prefix_commands, "/setrank <player> <rank>");
  2329. goto("wait");
  2330. }
  2331. p_name = list.getIndex(args, 0);
  2332. if(!checkIfEverOnline(p_name)) {
  2333. msg.prefix(player, prefix_commands, "This player has never been online.");
  2334. goto("wait");
  2335. }
  2336. p = read.player(p_name);
  2337. if(p == null) {
  2338. msg.prefix(player, prefix_commands, "This player is not online.");
  2339. goto("wait");
  2340. }
  2341. p_name = player.getName(p);
  2342. rank = text.concatList(args, " ", 1, size - 1);
  2343. if(!perm.has(player, "setrank.other")) {
  2344. if(player.getName(player) != p_name) {
  2345. perm.no(player, "setrank.other");
  2346. goto("wait");
  2347. }
  2348. colored = text.startsWith(rank, "&", 0);
  2349. if(colored) {
  2350. rank = text.subString(rank, 1, text.length(rank));
  2351. }
  2352. a = rank.getRankArray();
  2353. a_size = array.getSize(a);
  2354. for(i = 0; i < a_size; i++) {
  2355. tech_name = a[i, 0];
  2356. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  2357. perm.no(p, tech_name);
  2358. goto("wait");
  2359. }
  2360. }
  2361. if(colored) {
  2362. rank = concat("&", rank);
  2363. }
  2364. }
  2365. if(text.length(rank) >= 30) {
  2366. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  2367. goto("wait");
  2368. }
  2369. rank = text.replace(rank, "&", "§");
  2370. setRank(p, rank);
  2371. player.setTabName(p);
  2372. msg.prefix(player, prefix_commands, concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  2373. goto("wait");
  2374. @nowb
  2375. if(player.isAfk(player)) {
  2376. player.setAfk(player, false);
  2377. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  2378. player.setTabName(player);
  2379. } else {
  2380. msg.prefix(player, prefix_commands, "You are not afk.");
  2381. }
  2382. goto("wait");
  2383. @afk
  2384. if(player.hasMinigame(player)) {
  2385. msg.prefix(player, prefix_commands, "No afk while in a minigame :P");
  2386. goto("wait");
  2387. }
  2388. nickname = player.getNickname(player);
  2389. if(player.isAfk(player)) {
  2390. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  2391. player.setAfk(player, false);
  2392. } else {
  2393. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  2394. player.setAfk(player, true);
  2395. if(!afk_loop_active) {
  2396. afk_loop_active = true;
  2397. sgoto(30, "afk_loop");
  2398. }
  2399. }
  2400. player.setTabName(player);
  2401. goto("wait");
  2402. @silentjoin
  2403. silentjoin = player.getSilentJoin(player);
  2404. if(silentjoin) {
  2405. player.setSilentJoin(player, false);
  2406. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  2407. } else {
  2408. player.setSilentJoin(player, true);
  2409. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  2410. }
  2411. goto("wait");
  2412. @jumpto
  2413. loc = player.getTarget(player, 100);
  2414. if(block.isAir(loc)) {
  2415. msg.prefix(player, prefix_commands, "No block in sight.");
  2416. goto("wait");
  2417. }
  2418. y = loc.getY(loc);
  2419. while(y < 254 && !block.isAir(loc)) {
  2420. loc.setY(loc, y);
  2421. y++;
  2422. }
  2423. player.teleport(player, loc.mod(loc, 0, 1, 0), true);
  2424. goto("wait");
  2425. @jailloop
  2426. size = list.getSize(jailed_list);
  2427. for(i = 0; i < size; i++) {
  2428. p_name = player.getName(list.getIndex(jailed_list, i));
  2429. showJail(p_name);
  2430. }
  2431. if(size > 0) {
  2432. jail_loop_active = true;
  2433. sgoto(5, "jailloop");
  2434. } else {
  2435. jail_loop_active = false;
  2436. }
  2437. goto("wait");
  2438. @coordsloop
  2439. list = players.toList();
  2440. size = list.getSize(list);
  2441. for(i = 0; i < size; i++) {
  2442. p = list.getIndex(list, i);
  2443. if(player.getShowcoords(p)) {
  2444. p_loc = entity.getLocation(p);
  2445. 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"))));
  2446. }
  2447. }
  2448. sgoto(10, "coordsloop");
  2449. goto("wait");
  2450. @afk_loop
  2451. if(!afk_loop_active) {
  2452. goto("wait");
  2453. }
  2454. afk_map = getScriptVar("afk_map");
  2455. iter = map.iterator(afk_map);
  2456. while(hasNext(iter)) {
  2457. element = next(iter);
  2458. yaw = map.getValue(element);
  2459. player = player.get(map.getKey(element));
  2460. if(player != null) {
  2461. if(yaw != loc.getYaw(entity.getLocation(player))) {
  2462. nickname = player.getNickname(player);
  2463. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  2464. remove(iter);
  2465. player.setAfk(player, false);
  2466. player.setTabName(player);
  2467. }
  2468. }
  2469. }
  2470. size = map.getSize(afk_map);
  2471. if(size > 0) {
  2472. afk_loop_active = true;
  2473. sgoto(30, "afk_loop");
  2474. } else {
  2475. afk_loop_active = false;
  2476. }
  2477. goto("wait");
  2478. @afk_checker_loop
  2479. online_list = players.toList();
  2480. iter = list.iterator(online_list);
  2481. while(hasNext(iter)) {
  2482. uuid = next(iter);
  2483. p = player.get(uuid);
  2484. if(player.hasMinigame(p)) {
  2485. continue;
  2486. }
  2487. yaw = loc.getYaw(entity.getLocation(p));
  2488. a = map.get(afk_checker_map, uuid);
  2489. if(a == null) {
  2490. a = array.new(2);
  2491. a[0] = yaw;
  2492. a[1] = 0;
  2493. map.add(afk_checker_map, uuid, a);
  2494. continue;
  2495. }
  2496. last_yaw = a[0];
  2497. counter = a[1];
  2498. if(last_yaw == yaw) {
  2499. counter++;
  2500. } else {
  2501. counter = 0;
  2502. }
  2503. a[0] = yaw;
  2504. a[1] = counter;
  2505. map.add(afk_checker_map, uuid, a);
  2506. if(counter == 5) {
  2507. nickname = player.getNickname(p);
  2508. if(player.isAfk(p)) {
  2509. continue;
  2510. }
  2511. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  2512. player.setAfk(p, true);
  2513. player.setTabName(p);
  2514. if(!afk_loop_active) {
  2515. afk_loop_active = true;
  2516. sgoto(30, "afk_loop");
  2517. }
  2518. }
  2519. }
  2520. sgoto(1200, "afk_checker_loop");
  2521. goto("wait");
  2522. @pvp
  2523. if(size == 0) {
  2524. if(hasPvpOn(player)) {
  2525. mode = "off";
  2526. } else {
  2527. mode = "on";
  2528. }
  2529. } elseif(size == 1) {
  2530. mode = list.getIndex(args, 0);
  2531. if(!(mode == "on" || mode == "off")) {
  2532. goto("pvphelp");
  2533. }
  2534. } elseif(size == 2) {
  2535. if(!perm.has(player, "pvp.other")) {
  2536. perm.no(player, "pvp.other");
  2537. goto("wait");
  2538. }
  2539. mode = list.getIndex(args, 0);
  2540. if(!(mode == "on" || mode == "off")) {
  2541. goto("pvphelp");
  2542. }
  2543. affectedname = list.getIndex(args, 1);
  2544. if(!checkIfEverOnline(affectedname)) {
  2545. msg.prefix(player, prefix_commands, "This player has never been online.");
  2546. goto("wait");
  2547. }
  2548. affectedplayer = read.player(affectedname);
  2549. if(affectedplayer == null) {
  2550. msg.prefix(player, prefix_commands, "This player is not online.");
  2551. goto("wait");
  2552. }
  2553. } else {
  2554. @pvphelp
  2555. if(perm.has(player, "pvp.other")) {
  2556. msg.prefix(player, prefix_commands, "/pvp [on/off] [player]");
  2557. } else {
  2558. msg.prefix(player, prefix_commands, "/pvp [on/off]");
  2559. }
  2560. goto("wait");
  2561. }
  2562. if(mode == "on") {
  2563. setPvp(affectedplayer, true);
  2564. msg.prefix(affectedplayer, prefix_commands, "You have enabled PvP!");
  2565. if(affectedplayer != player) {
  2566. affectedname = player.getName(affectedplayer);
  2567. msg.prefix(player, prefix_commands, concat(affectedname, " has now enabled PvP!"));
  2568. }
  2569. } else {
  2570. setPvp(affectedplayer, false);
  2571. msg.prefix(affectedplayer, prefix_commands, "You have PvP disabled!");
  2572. if(affectedplayer != player) {
  2573. affectedname = player.getName(affectedplayer);
  2574. msg.prefix(player, prefix_commands, concat(affectedname, " has now disabled PvP!"));
  2575. }
  2576. }
  2577. goto("wait");
  2578. @suicide
  2579. if(size < 0 || size > 1) {
  2580. msg.prefix(player, prefix_commands, "/suicide [player]");
  2581. goto("wait");
  2582. }
  2583. if(size == 1) {
  2584. if(!perm.has(player, "kill.other")) {
  2585. perm.no(player, "kill.other");
  2586. goto("wait");
  2587. }
  2588. affectedname = list.getIndex(args, 0);
  2589. affectedplayer = read.player(affectedname);
  2590. if(affectedplayer == null) {
  2591. msg.prefix(player, prefix_commands, "This player is not online.");
  2592. goto("wait");
  2593. }
  2594. }
  2595. if(affectedplayer != player) {
  2596. affectedname = player.getName(affectedplayer);
  2597. msg.prefix(player, prefix_commands, concat(affectedname, " has been killed."));
  2598. msg.prefix(affectedplayer, prefix_commands, concat("You have been killed by ", player_name, "."));
  2599. } else {
  2600. msg.prefix(affectedplayer, prefix_commands, "You killed yourself.");
  2601. }
  2602. living.damage(affectedplayer, 1000);
  2603. goto("wait");
  2604. @nickname
  2605. if(size < 1) {
  2606. msg.prefix(player, "§eNickname", "/nickname ...");
  2607. msg(player, "§e - <name> ", "Sets a nickname");
  2608. msg(player, "§e - remove ", "Removes a nickname");
  2609. goto("wait");
  2610. }
  2611. nickname = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  2612. if(nickname == "remove") {
  2613. player.removeNickName(player);
  2614. msg.prefix(player, prefix_commands, concat("Your nickname was removed."));
  2615. } else {
  2616. player.setNickName(player, nickname);
  2617. msg.prefix(player, prefix_commands, concat("Your nickname was changed to ", nickname, "§r."));
  2618. }
  2619. player.setTabName(player);
  2620. player.setHeadName(player);
  2621. goto("wait");
  2622. @iteminfo
  2623. item = living.getEquip(player, "hand");
  2624. text = text.item(item);
  2625. text = text.replace(text, "\"", "\\\"");
  2626. msg(player, text.clipBoard(text, text));
  2627. goto("wait");
  2628. @perm
  2629. if(size == 0) {
  2630. @perm_syntax
  2631. msg.prefix(player, prefix_perms, "§r/perm ...");
  2632. if(perm.has(player, "perm.give")) {
  2633. msg(player, "§6 - give <player> <perm>");
  2634. }
  2635. if(perm.has(player, "perm.remove")) {
  2636. msg(player, "§6 - remove <player> <perm>");
  2637. }
  2638. if(perm.has(player, "perm.removeall")) {
  2639. msg(player, "§6 - removeall <player>");
  2640. }
  2641. if(perm.has(player, "perm.list")) {
  2642. msg(player, "§6 - list <player>");
  2643. }
  2644. if(perm.has(player, "perm.toggle")) {
  2645. msg(player, "§6 - toggle");
  2646. }
  2647. goto("wait");
  2648. }
  2649. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2650. if(arg0 == "give") {
  2651. if(!perm.has(player, "perm.give")) {
  2652. perm.no(player, "perm.give");
  2653. goto("wait");
  2654. }
  2655. if(size != 3) {
  2656. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  2657. } else {
  2658. p_name = list.getIndex(args, 1);
  2659. perm = list.getIndex(args, 2);
  2660. if(!checkIfEverOnline(p_name)) {
  2661. msg.prefix(player, prefix_perms, "This player has never been online.");
  2662. goto("wait");
  2663. }
  2664. if(!perm.isGroupName(perm)) {
  2665. msg.prefix(player, prefix_perms, "This is not a permission group.");
  2666. goto("wait");
  2667. }
  2668. if(!perm.has(player, "isAdmin")) {
  2669. if(perm == "admin" || perm == "mod" || perm == "bypass") {
  2670. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  2671. goto("wait");
  2672. }
  2673. }
  2674. p_uuid = player.getUuid(p_name);
  2675. p_id = player.getId(p_uuid);
  2676. p_name = player.getName(p_uuid);
  2677. perm_id = perm.getIdFromGroupname(perm);
  2678. if(player.hasPermGroup(p_id, perm_id)) {
  2679. msg.prefix(player, prefix_perms, "Perm already added.");
  2680. goto("wait");
  2681. }
  2682. if(isOnline(p_name)) {
  2683. p = read.player(p_name);
  2684. rank = perm.getRankFromGroupname(perm);
  2685. if(rank != null) {
  2686. offerRank(p, rank.getTechName(rank));
  2687. }
  2688. }
  2689. givePerm(p_id, perm_id);
  2690. msg.prefix(player, prefix_perms, concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  2691. }
  2692. goto("wait");
  2693. }
  2694. if(arg0 == "remove") {
  2695. if(!perm.has(player, "perm.remove")) {
  2696. perm.no(player, "perm.remove");
  2697. goto("wait");
  2698. }
  2699. if(size != 3) {
  2700. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  2701. } else {
  2702. p_name = list.getIndex(args, 1);
  2703. perm = list.getIndex(args, 2);
  2704. if(!checkIfEverOnline(p_name)) {
  2705. msg.prefix(player, prefix_perms, "This player has never been online.");
  2706. goto("wait");
  2707. }
  2708. if(!perm.isGroupName(perm)) {
  2709. msg.prefix(player, prefix_perms, "This is not a permission group.");
  2710. goto("wait");
  2711. }
  2712. if(!perm.has(player, "isAdmin")) {
  2713. if(perm == "admin" || perm == "mod" || perm == "bypass") {
  2714. msg.prefix(player, prefix_perms, "Only admins can give this permission group.");
  2715. goto("wait");
  2716. }
  2717. }
  2718. p_uuid = player.getUuid(p_name);
  2719. p_id = player.getId(p_uuid);
  2720. p_name = player.getName(p_uuid);
  2721. //Wenn marvinius eine Permission entfernt wird, wird dies blockiert, ausgenommen er tut dies selbst
  2722. player_id = player.getId(player);
  2723. if(player_id != 2) {
  2724. if(p_id == 2) {
  2725. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  2726. goto("wait");
  2727. }
  2728. }
  2729. perm_id = perm.getIdFromGroupname(perm);
  2730. if(!player.hasPermGroup(p_id, perm_id)) {
  2731. msg.prefix(player, prefix_perms, "This player doesn't have that perm.");
  2732. goto("wait");
  2733. }
  2734. removePerm(p_id, perm_id);
  2735. msg.prefix(player, prefix_perms, concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  2736. }
  2737. goto("wait");
  2738. }
  2739. if(arg0 == "removeall") {
  2740. if(!perm.has(player, "perm.removeall")) {
  2741. perm.no(player, "perm.removeall");
  2742. goto("wait");
  2743. }
  2744. if(size != 2) {
  2745. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  2746. } else {
  2747. p_name = list.getIndex(args, 1);
  2748. if(!checkIfEverOnline(p_name)) {
  2749. msg.prefix(player, prefix_perms, "This player has never been online.");
  2750. goto("wait");
  2751. }
  2752. //Wenn marvinius Permissions entfernt werden, wird dies blockiert, ausgenommen er tut dies selbst
  2753. p_id = player.getId(player.getUuid(p_name));
  2754. player_id = player.getId(player);
  2755. if(player_id != 2) {
  2756. if(p_id == 2) {
  2757. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  2758. goto("wait");
  2759. }
  2760. }
  2761. removeAllPerms(p_id);
  2762. msg.prefix(player, prefix_perms, concat("All perms of §7", p_name, " §rwere removed."));
  2763. }
  2764. goto("wait");
  2765. }
  2766. if(arg0 == "list") {
  2767. if(!perm.has(player, "perm.list")) {
  2768. perm.no(player, "perm.list");
  2769. goto("wait");
  2770. }
  2771. if(size != 2) {
  2772. msg.prefix(player, prefix_perms, "/perm list <player>");
  2773. } else {
  2774. p_name = list.getIndex(args, 1);
  2775. if(!checkIfEverOnline(p_name)) {
  2776. msg.prefix(player, prefix_perms, "This player has never been online.");
  2777. goto("wait");
  2778. }
  2779. p_id = player.getId(player.getUuid(p_name));
  2780. permslist = getPermsFromPlayer(p_id);
  2781. listsize = list.getSize(permslist);
  2782. if(listsize == 0) {
  2783. msg.prefix(player, prefix_perms, "No permissions found.");
  2784. } else {
  2785. msg.prefix(player, prefix_perms, p_name);
  2786. for(i = 0; i < listsize; i++) {
  2787. msg(player, " - ", perm.getNameFromId(list.getIndex(permslist, i)));
  2788. }
  2789. }
  2790. }
  2791. goto("wait");
  2792. }
  2793. if(arg0 == "toggle") {
  2794. if(!perm.has(player, "perm.toggle")) {
  2795. perm.no(player, "perm.toggle");
  2796. goto("wait");
  2797. }
  2798. player_id = player.getId(player);
  2799. if(perm.has(player, "pseudoPerm")) {
  2800. reloadAllPerms(player_id);
  2801. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  2802. } else {
  2803. removeAllPermsTemporarly(player_id);
  2804. msg.prefix(player, prefix_commands, "Have fun as a user.");
  2805. }
  2806. goto("wait");
  2807. }
  2808. goto("perm_syntax");
  2809. @allsounds
  2810. if(size == 0) {
  2811. msg.prefix(player, prefix_commands, "§r/allsounds...");
  2812. msg(player, "§e - start");
  2813. msg(player, "§e - stop");
  2814. goto("wait");
  2815. }
  2816. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2817. if(arg0 == "start") {
  2818. if(!map.exists(sounds_map)) {
  2819. sounds_map = map.new();
  2820. }
  2821. player_uuid = player.getUuid(player);
  2822. script_id = map.get(sounds_map, player_uuid);
  2823. if(script_id != null) {
  2824. script = script.getFromId(script_id);
  2825. if(script != null) {
  2826. msg.prefix(player, prefix_commands, "Sounds already started.");
  2827. goto("wait");
  2828. }
  2829. }
  2830. script = script.start("system/playsounds");
  2831. script.setVar(script, "player", player);
  2832. map.add(sounds_map, player.getUuid(player), script.getId(script));
  2833. msg.prefix(player, prefix_commands, "Sounds started.");
  2834. goto("wait");
  2835. }
  2836. if(arg0 == "stop") {
  2837. if(!map.exists(sounds_map)) {
  2838. sounds_map = map.new();
  2839. }
  2840. script_id = map.get(sounds_map, player.getUuid(player));
  2841. if(script_id == null) {
  2842. msg.prefix(player, prefix_commands, "No sounds playing.");
  2843. goto("wait");
  2844. }
  2845. script = script.getFromId(script_id);
  2846. if(script == null) {
  2847. msg.prefix(player, prefix_commands, "No sounds playing.");
  2848. goto("wait");
  2849. }
  2850. script.term(script);
  2851. msg.prefix(player, prefix_commands, "Sounds stopped.");
  2852. goto("wait");
  2853. }
  2854. goto("wait");
  2855. @weather
  2856. if(size == 0) {
  2857. @weather_syntax
  2858. msg.prefix(player, "§eWeather", "§r/weather ...");
  2859. msg(player, "§e - clear [duration]");
  2860. msg(player, "§e - rain [duration]");
  2861. msg(player, "§e - thunder [duration]");
  2862. goto("wait");
  2863. }
  2864. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2865. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  2866. if(size == 2) {
  2867. duration = list.getIndex(args, 1);
  2868. if(!isDouble(duration)) {
  2869. msg.prefix(player, prefix_commands, "Number expected.");
  2870. goto("wait");
  2871. }
  2872. if(duration < 0) {
  2873. msg.prefix(player, prefix_commands, "Positive number expected.");
  2874. goto("wait");
  2875. }
  2876. } else {
  2877. duration = 12000;
  2878. }
  2879. world = loc.getWorld(entity.getLocation(player));
  2880. if(arg0 == "clear") {
  2881. if(size > 2) {
  2882. msg.prefix(player, prefix_commands, "/weather clear [duration]");
  2883. goto("wait");
  2884. }
  2885. world.clearWeather(world, duration);
  2886. msg.prefix(player, prefix_commands, "Weather cleared.");
  2887. goto("wait");
  2888. }
  2889. if(arg0 == "rain") {
  2890. if(size > 2) {
  2891. msg.prefix(player, prefix_commands, "§r/weather rain [duration]");
  2892. goto("wait");
  2893. }
  2894. world.setRain(world, duration);
  2895. msg.prefix(player, prefix_commands, "Weather set to rain.");
  2896. goto("wait");
  2897. }
  2898. if(arg0 == "thunder") {
  2899. if(size > 2) {
  2900. msg.prefix(player, prefix_commands, "/weather thunder [duration]");
  2901. goto("wait");
  2902. }
  2903. world.setThunder(world, duration);
  2904. msg.prefix(player, prefix_commands, "Weather set to thunder.");
  2905. goto("wait");
  2906. }
  2907. goto("wait");
  2908. }
  2909. goto("weather_syntax");
  2910. @time
  2911. if(size == 0) {
  2912. @time_syntax
  2913. msg.prefix(player, "§eTime", "/time ...");
  2914. msg(player, "§e - set <time>");
  2915. msg(player, "§e - add <time>");
  2916. msg(player, "§e - <day / noon / night / midnight>");
  2917. goto("wait");
  2918. }
  2919. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2920. if(arg0 == "set") {
  2921. if(size != 2) {
  2922. msg.prefix(player, prefix_commands, "/time set <time>");
  2923. goto("wait");
  2924. }
  2925. setTime = list.getIndex(args, 1);
  2926. if(!isDouble(setTime)) {
  2927. msg.prefix(player, prefix_commands, "Number expected.");
  2928. goto("wait");
  2929. }
  2930. if(setTime < 0) {
  2931. msg.prefix(player, prefix_commands, "Positive number expected.");
  2932. goto("wait");
  2933. }
  2934. world = loc.getWorld(entity.getLocation(player));
  2935. while(setTime >= 24000) {
  2936. setTime -= 24000;
  2937. }
  2938. world.setTime(world, setTime);
  2939. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(setTime), "."));
  2940. goto("wait");
  2941. }
  2942. if(arg0 == "add") {
  2943. if(size != 2) {
  2944. msg.prefix(player, prefix_commands, "/time add <time>");
  2945. goto("wait");
  2946. }
  2947. addTime = list.getIndex(args, 1);
  2948. if(!isDouble(addTime)) {
  2949. msg.prefix(player, prefix_commands, "Number expected.");
  2950. goto("wait");
  2951. }
  2952. if(addTime < 0) {
  2953. msg.prefix(player, prefix_commands, "Positive number expected.");
  2954. goto("wait");
  2955. }
  2956. world = loc.getWorld(entity.getLocation(player));
  2957. newtime = world.getTime(world) + addTime;
  2958. while(newtime >= 24000) {
  2959. newtime -= 24000;
  2960. }
  2961. world.setTime(world, newtime);
  2962. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2963. goto("wait");
  2964. }
  2965. newtime = null;
  2966. if(arg0 == "day") {
  2967. newtime = 1000;
  2968. } elseif(arg0 == "noon") {
  2969. newtime = 6000;
  2970. } elseif(arg0 == "night") {
  2971. newtime = 13000;
  2972. } elseif(arg0 == "midnight") {
  2973. newtime = 18000;
  2974. }
  2975. if(newtime != null) {
  2976. world = loc.getWorld(entity.getLocation(player));
  2977. world.setTime(world, newtime);
  2978. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2979. goto("wait");
  2980. }
  2981. goto("time_syntax");
  2982. @gamerule
  2983. world = loc.getWorld(entity.getLocation(player));
  2984. if(size == 0) {
  2985. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  2986. goto("wait");
  2987. }
  2988. gamerule_string = list.getIndex(args, 0);
  2989. gamerule_key = gamerule.getKey(gamerule_string);
  2990. if(gamerule_key == null) {
  2991. msg.prefix(player, prefix_commands, "Gamerule doesn't exist.");
  2992. goto("wait");
  2993. }
  2994. gamerule_value = gamerule.getValue(world, gamerule_key);
  2995. if(size == 1) {
  2996. if(gamerule.isBool(gamerule_value)) {
  2997. value = gamerule.getBool(gamerule_value);
  2998. } elseif(gamerule.isInt(gamerule_value)) {
  2999. value = text.number(gamerule.getInt(gamerule_value));
  3000. } else {
  3001. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  3002. goto("wait");
  3003. }
  3004. msg.prefix(player, prefix_commands, concat(gamerule_string, " ", value));
  3005. goto("wait");
  3006. }
  3007. if(size == 2) {
  3008. if(!perm.has(player, "gamerule.write")) {
  3009. perm.no(player, "gamerule.write");
  3010. goto("wait");
  3011. }
  3012. value = list.getIndex(args, 1);
  3013. if(gamerule.isBool(gamerule_value)) {
  3014. if(!isBool(value)) {
  3015. msg.prefix(player, prefix_commands, "Boolean expected.");
  3016. goto("wait");
  3017. }
  3018. gamerule.setBool(gamerule_value, value);
  3019. } elseif(gamerule.isInt(gamerule_value)) {
  3020. if(!isDouble(value)) {
  3021. msg.prefix(player, prefix_commands, "Number expected.");
  3022. goto("wait");
  3023. }
  3024. gamerule.setInt(gamerule_value, value);
  3025. value = text.number(value);
  3026. } else {
  3027. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  3028. goto("wait");
  3029. }
  3030. if(world.getName(world) == "overworld") {
  3031. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, "."));
  3032. } else {
  3033. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, " (not persistent)."));
  3034. }
  3035. goto("wait");
  3036. }
  3037. goto("wait");
  3038. @tip
  3039. if(size == 0) {
  3040. msg.prefix(player, prefix_tips, "§r/tip ...");
  3041. msg(player, "§e - list §rList all tips");
  3042. msg(player, "§e - add <tip> <text> §rAdds a tip");
  3043. msg(player, "§e - remove <tip> §rRemoves a tip");
  3044. msg(player, "§e - loop <tip> <boolean> §rTrue shows on tip loop");
  3045. msg(player, "§e - <tip> [player] §rSends a tip to all/a player");
  3046. goto("wait");
  3047. }
  3048. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3049. if(arg0 == "list") {
  3050. msg(player, "§r--==§eTipps§r==--");
  3051. list = tip.getAll();
  3052. if(list.getSize(list) == 0) {
  3053. msg.prefix(player, prefix_tips, "No tips available.");
  3054. goto("wait");
  3055. }
  3056. iter = iterator(list);
  3057. while(hasNext(iter)) {
  3058. a = next(iter);
  3059. tipp_key = a[0];
  3060. tipp_value = a[1];
  3061. tipp_loop = a[2];
  3062. if(tipp_loop) {
  3063. tipp_loop = concat("§a", tipp_loop);
  3064. } else {
  3065. tipp_loop = concat("§c", tipp_loop);
  3066. }
  3067. msg(player, concat(" ", tipp_loop, " §e", tipp_key, "§r : ", tipp_value));
  3068. }
  3069. goto("wait");
  3070. }
  3071. if(arg0 == "add") {
  3072. if(size < 3) {
  3073. msg.prefix(player, prefix_commands, "/tip add <name> <text>");
  3074. goto("wait");
  3075. }
  3076. tipp_key = list.getIndex(args, 1);
  3077. tipp_value = concatList(args, " ", 2, size - 1);
  3078. tipp_value = text.replace(tipp_value, "&", "§");
  3079. tipp.register(tipp_key, tipp_value);
  3080. msg.prefix(player, prefix_tips, "Tip added.");
  3081. goto("wait");
  3082. }
  3083. if(arg0 == "loop") {
  3084. if(size != 3) {
  3085. msg.prefix(player, prefix_commands, "/tip loop <tip> <boolean>");
  3086. goto("wait");
  3087. }
  3088. tipp_key = list.getIndex(args, 1);
  3089. tipp_value = tipp.get(tipp_key);
  3090. if(tipp_value == null) {
  3091. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3092. goto("wait");
  3093. }
  3094. boolean = list.getIndex(args, 2);
  3095. if(text.class(boolean) != "Boolean") {
  3096. msg.prefix(player, prefix_tips, "True or false expected.");
  3097. goto("wait");
  3098. }
  3099. if(boolean) {
  3100. tip.setLoop(tipp_key, boolean);
  3101. } else {
  3102. tip.setLoop(tipp_key, boolean);
  3103. }
  3104. msg.prefix(player, prefix_tips, "Tip settings changed.");
  3105. goto("wait");
  3106. }
  3107. if(arg0 == "remove") {
  3108. if(size != 2) {
  3109. msg.prefix(player, prefix_commands, "/tip remove <name>");
  3110. goto("wait");
  3111. }
  3112. tipp_key = list.getIndex(args, 1);
  3113. tip.remove(tipp_key);
  3114. msg.prefix(player, prefix_tips, "Tip removed.");
  3115. goto("wait");
  3116. }
  3117. tipp_key = arg0;
  3118. tipp_value = tipp.get(tipp_key);
  3119. if(tipp_value == null) {
  3120. msg.prefix(player, prefix_tips, "This tip does not exist.");
  3121. goto("wait");
  3122. }
  3123. if(size == 1) {
  3124. p = "online";
  3125. } else {
  3126. p_name = list.getIndex(args, 1);
  3127. if(!isOnline(p_name)) {
  3128. msg.prefix(player, prefix_tips, "This player is not online.");
  3129. goto("wait");
  3130. }
  3131. p = read.player(p_name);
  3132. msg.prefix(player, prefix_tips, concat("Tip sent to §7", p_name, "§r."));
  3133. }
  3134. if(text.contains(tipp_value, "https://")) {
  3135. a = text.getLinkMessage(tipp_value);
  3136. msg_before = a[0];
  3137. msg_link = a[1];
  3138. msg_after = a[2];
  3139. msg(p, concat("§r[§e", player.getName(player), "§r] "), msg_before, msg_link, msg_after);
  3140. goto("wait");
  3141. }
  3142. msg(p, concat("§r[§e", player.getName(player), "§r] ", tipp_value));
  3143. goto("wait");
  3144. @help
  3145. if(size > 1) {
  3146. msg.prefix(player, prefix_commands, "/help [side]");
  3147. goto("wait");
  3148. }
  3149. //Auf Permission überprüfen
  3150. temp_list = list.new();
  3151. for(i = 0; i < list.getSize(command_list); i++) {
  3152. command = list.getIndex(command_list, i);
  3153. if(perm.has(player, command)) {
  3154. list.add(temp_list, command);
  3155. }
  3156. }
  3157. list.sort(temp_list);
  3158. temp_size = list.getSize(temp_list);
  3159. max_side = temp_size / 10;
  3160. if(size == 0) {
  3161. side = 1;
  3162. print_side = side - 1;
  3163. } else {
  3164. side = list.getIndex(args, 0);
  3165. if(!isDouble(side)) {
  3166. msg.prefix(player, prefix_commands, "/help [side]");
  3167. goto("wait");
  3168. }
  3169. print_side = side - 1;
  3170. if(print_side < 0 || print_side > max_side) {
  3171. msg.prefix(player, prefix_commands, concat("Möglich: 1 - ", text.number(math.roundDown(max_side + 1))));
  3172. goto("wait");
  3173. }
  3174. }
  3175. msg(player, concat("§a --- Help ", text.number(side), " ---"));
  3176. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  3177. if(i < temp_size) {
  3178. command = list.getIndex(temp_list, i);
  3179. command = text.hover(command, map.getOrDefault(command_map, command, ""));
  3180. msg(player, " /", command);
  3181. }
  3182. }
  3183. if(side == 1) {
  3184. backward = "§c<<Backward<<";
  3185. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  3186. } elseif(side > max_side) {
  3187. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  3188. forward = "§c>>Forward>>";
  3189. } else {
  3190. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  3191. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  3192. }
  3193. msg(player, backward, " ", forward);
  3194. goto("wait");
  3195. @cli
  3196. if(size != 1) {
  3197. msg.prefix(player, prefix_commands, "/cli <radius>");
  3198. goto("wait");
  3199. }
  3200. radius = list.getIndex(args, 0);
  3201. if(!isDouble(radius) || radius < 0) {
  3202. msg.prefix(player, prefix_commands, "Positive number expected.");
  3203. goto("wait");
  3204. }
  3205. entity.removeAll("net.minecraft.entity.item.ItemEntity", entity.getLocation(player), radius);
  3206. msg.prefix(player, prefix_commands, "Items removed.");
  3207. goto("wait");
  3208. @plough
  3209. if(size != 1) {
  3210. msg.prefix(player, prefix_commands, "/plough <radius>");
  3211. goto("wait");
  3212. }
  3213. radius = list.getIndex(args, 0);
  3214. if(!isDouble(radius)) {
  3215. msg.prefix(player, prefix_commands, "Number expected.");
  3216. goto("wait");
  3217. }
  3218. if(radius < 0) {
  3219. msg.prefix(player, prefix_commands, "Positive number expected.");
  3220. goto("wait");
  3221. }
  3222. center_loc = getBlockLocation(entity.getLocation(player));
  3223. for(x = radius * -1; x <= radius; x++) {
  3224. for(z = radius * -1; z <= radius; z++) {
  3225. for(y = radius * -1; y <= radius; y++) {
  3226. length = math.hypot(x, math.hypot(y, z));
  3227. if(length <= radius) {
  3228. mod_loc = loc.mod(center_loc, x, y, z);
  3229. block = block.get(mod_loc);
  3230. if(block.hasTag(dirt_tag, block) && block.getType(loc.mod(mod_loc, 0, 1, 0)) == "minecraft:air") {
  3231. block.set(mod_loc, "minecraft:farmland[moisture=7]");
  3232. }
  3233. }
  3234. }
  3235. }
  3236. }
  3237. msg.prefix(player, prefix_commands, "Field ploughed.");
  3238. goto("wait");
  3239. @plant
  3240. if(size != 1) {
  3241. msg.prefix(player, prefix_commands, "/plant <radius>");
  3242. goto("wait");
  3243. }
  3244. radius = list.getIndex(args, 0);
  3245. if(!isDouble(radius)) {
  3246. msg.prefix(player, prefix_commands, "Number expected.");
  3247. goto("wait");
  3248. }
  3249. if(radius < 0) {
  3250. msg.prefix(player, prefix_commands, "Positive number expected.");
  3251. goto("wait");
  3252. }
  3253. center_loc = getBlockLocation(entity.getLocation(player));
  3254. for(x = radius * -1; x <= radius; x++) {
  3255. for(z = radius * -1; z <= radius; z++) {
  3256. for(y = radius * -1; y <= radius; y++) {
  3257. length = math.hypot(x, math.hypot(y, z));
  3258. if(length <= radius) {
  3259. mod_loc = loc.mod(center_loc, x, y, z);
  3260. upper_loc = loc.mod(mod_loc, 0, 1, 0);
  3261. if(block.getType(mod_loc) == "minecraft:farmland" && block.getType(upper_loc) == "minecraft:air") {
  3262. block.set(upper_loc, "minecraft:wheat[age=7]");
  3263. }
  3264. }
  3265. }
  3266. }
  3267. }
  3268. msg.prefix(player, prefix_commands, "Field planted.");
  3269. goto("wait");
  3270. @grow
  3271. if(size != 1) {
  3272. msg.prefix(player, prefix_commands, "/grow <radius>");
  3273. goto("wait");
  3274. }
  3275. radius = list.getIndex(args, 0);
  3276. if(!isDouble(radius)) {
  3277. msg.prefix(player, prefix_commands, "Number expected.");
  3278. goto("wait");
  3279. }
  3280. if(radius < 0) {
  3281. msg.prefix(player, prefix_commands, "Positive number expected.");
  3282. goto("wait");
  3283. }
  3284. center_loc = getBlockLocation(entity.getLocation(player));
  3285. grow(center_loc, radius);
  3286. msg.prefix(player, prefix_commands, "Field grown.");
  3287. goto("wait");
  3288. @start
  3289. if(size != 1) {
  3290. @starthelp
  3291. msg.prefix(sender, prefix_commands, "/start ...");
  3292. msg(sender, " - ai");
  3293. msg(sender, " - chat");
  3294. msg(sender, " - commands");
  3295. msg(sender, " - creative");
  3296. msg(sender, " - damage");
  3297. msg(sender, " - doors");
  3298. msg(sender, " - fixitems");
  3299. msg(sender, " - friends");
  3300. msg(sender, " - games");
  3301. msg(sender, " - gemstones");
  3302. msg(sender, " - harvest");
  3303. msg(sender, " - hawkeye");
  3304. msg(sender, " - herobrine");
  3305. msg(sender, " - lectern");
  3306. msg(sender, " - loom");
  3307. msg(sender, " - mails");
  3308. msg(sender, " - mobarena");
  3309. msg(sender, " - perms");
  3310. msg(sender, " - playerdata");
  3311. msg(sender, " - pumpkin");
  3312. msg(sender, " - recipes");
  3313. msg(sender, " - scheduler");
  3314. msg(sender, " - shop");
  3315. msg(sender, " - sitting");
  3316. msg(sender, " - stats");
  3317. msg(sender, " - story");
  3318. msg(sender, " - survival");
  3319. msg(sender, " - ticket");
  3320. msg(sender, " - timber");
  3321. msg(sender, " - trader");
  3322. msg(sender, " - voxel");
  3323. goto("wait");
  3324. }
  3325. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3326. modTimer(-500);
  3327. if(arg0 == "ai") {
  3328. script = script.get("Ai");
  3329. if(script != null) {
  3330. script.term(script);
  3331. }
  3332. script.startNamed("Ai", "system/ai", "utils/u_general");
  3333. }
  3334. elseif(arg0 == "commands") {
  3335. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
  3336. if(script == null) {
  3337. snuvi.debug("Old commands script still active due to error in new script");
  3338. goto("wait");
  3339. }
  3340. script.term(script.get());
  3341. }
  3342. elseif(arg0 == "chat") {
  3343. script = script.get("Chat");
  3344. if(script != null) {
  3345. script.term(script);
  3346. }
  3347. script.startNamed("Chat", "utils/u_error", "system/chat", "utils/u_general");
  3348. }
  3349. elseif(arg0 == "creative") {
  3350. script = script.get("Creative");
  3351. if(script != null) {
  3352. script.term(script);
  3353. }
  3354. script.startNamed("Creative", "utils/u_error", "system/creative", "utils/u_general");
  3355. }
  3356. elseif(arg0 == "damage") {
  3357. script = script.get("Damage");
  3358. if(script != null) {
  3359. script.term(script);
  3360. }
  3361. script.startNamed("Damage", "utils/u_error", "system/damage", "utils/u_general");
  3362. }
  3363. elseif(arg0 == "doors") {
  3364. script = script.get("Doors");
  3365. if(script != null) {
  3366. script.term(script);
  3367. }
  3368. script.startNamed("Doors", "utils/u_error", "system/doors", "utils/u_general");
  3369. }
  3370. elseif(arg0 == "fixitems") {
  3371. script = script.get("Fixitems");
  3372. if(script != null) {
  3373. script.term(script);
  3374. }
  3375. script.startNamed("Fixitems", "utils/u_error", "system/fixitems", "utils/u_general");
  3376. }
  3377. elseif(arg0 == "games") {
  3378. script = script.get("Gamecenter");
  3379. if(script != null) {
  3380. script.term(script);
  3381. }
  3382. script.startNamed("Gamecenter", "utils/u_error", "system/gamecenter", "utils/u_general", "utils/u_games");
  3383. }
  3384. elseif(arg0 == "gemstones") {
  3385. script = script.get("Gemstones");
  3386. if(script != null) {
  3387. script.term(script);
  3388. }
  3389. script.startNamed("Gemstones", "utils/u_error", "survival/gemstones", "utils/u_general");
  3390. }
  3391. elseif(arg0 == "harvest") {
  3392. script = script.get("Harvest");
  3393. if(script != null) {
  3394. script.term(script);
  3395. }
  3396. script.startNamed("Harvest", "utils/u_error", "survival/harvest", "utils/u_general");
  3397. }
  3398. elseif(arg0 == "hawkeye") {
  3399. script = script.get("Hawkeye");
  3400. if(script != null) {
  3401. script.term(script);
  3402. }
  3403. script.startNamed("Hawkeye", "utils/u_error", "system/hawkeye", "utils/u_general");
  3404. }
  3405. elseif(arg0 == "herobrine") {
  3406. script = script.get("Herobrine");
  3407. if(script != null) {
  3408. script.term(script);
  3409. }
  3410. script.startNamed("Herobrine", "utils/u_error", "survival/herobrine", "utils/u_general");
  3411. }
  3412. elseif(arg0 == "lectern") {
  3413. script = script.get("Lectern");
  3414. if(script != null) {
  3415. script.term(script);
  3416. }
  3417. script.startNamed("Lectern", "utils/u_error", "survival/lectern", "utils/u_general");
  3418. }
  3419. elseif(arg0 == "loom") {
  3420. script = script.get("Loom");
  3421. if(script != null) {
  3422. script.term(script);
  3423. }
  3424. script.startNamed("Loom", "utils/u_error", "survival/loom", "utils/u_general");
  3425. }
  3426. elseif(arg0 == "perms") {
  3427. script.start("system/perms", "utils/u_general");
  3428. }
  3429. elseif(arg0 == "playerdata") {
  3430. script = script.get("Playerdata");
  3431. if(script != null) {
  3432. script.term(script);
  3433. }
  3434. script.startNamed("Playerdata", "utils/u_error", "system/player_data", "utils/u_general");
  3435. }
  3436. elseif(arg0 == "pumpkin") {
  3437. script = script.get("Pumpkin");
  3438. if(script != null) {
  3439. script.term(script);
  3440. }
  3441. script.startNamed("Pumpkin", "utils/u_error", "survival/pumpkin", "utils/u_general");
  3442. }
  3443. elseif(arg0 == "recipes") {
  3444. script = script.get("Recipes");
  3445. if(script != null) {
  3446. script.term(script);
  3447. }
  3448. script.startNamed("Recipes", "survival/recipes");
  3449. }
  3450. elseif(arg0 == "stats") {
  3451. script = script.get("Ranklist");
  3452. if(script != null) {
  3453. script.term(script);
  3454. }
  3455. script.startNamed("Ranklist", "utils/u_error", "system/ranklist", "utils/u_general", "utils/u_games");
  3456. }
  3457. elseif(arg0 == "scheduler") {
  3458. script = script.get("Scheduler");
  3459. if(script != null) {
  3460. script.term(script);
  3461. }
  3462. script.startNamed("Scheduler", "utils/u_error", "system/scheduler", "utils/u_general");
  3463. }
  3464. elseif(arg0 == "shop") {
  3465. script = script.get("Shops");
  3466. if(script != null) {
  3467. script.term(script);
  3468. }
  3469. script.startNamed("Shops", "utils/u_error", "system/chestshops", "utils/u_general");
  3470. }
  3471. elseif(arg0 == "mails") {
  3472. script = script.get("Mails");
  3473. if(script != null) {
  3474. script.term(script);
  3475. }
  3476. script.startNamed("Mails", "utils/u_error", "system/mailsystem", "utils/u_general");
  3477. }
  3478. elseif(arg0 == "mobarena") {
  3479. script = script.get("Mobarena");
  3480. if(script != null) {
  3481. script.term(script);
  3482. }
  3483. script.startNamed("Mobarena", "utils/u_error", "survival/mobarena", "utils/u_general");
  3484. }
  3485. elseif(arg0 == "ticket") {
  3486. script = script.get("Ticket");
  3487. if(script != null) {
  3488. script.term(script);
  3489. }
  3490. script.startNamed("Ticket", "utils/u_error", "system/tickets", "utils/u_general");
  3491. }
  3492. elseif(arg0 == "timber") {
  3493. script = script.get("Timber");
  3494. if(script != null) {
  3495. script.term(script);
  3496. }
  3497. script.startNamed("Timber", "utils/u_error", "survival/timber", "utils/u_general");
  3498. }
  3499. elseif(arg0 == "trader") {
  3500. script = script.get("Trader");
  3501. if(script != null) {
  3502. script.term(script);
  3503. }
  3504. script.startNamed("Trader", "utils/u_error", "survival/trader", "utils/u_general");
  3505. }
  3506. elseif(arg0 == "story") {
  3507. script = script.get("Story");
  3508. if(script != null) {
  3509. script.term(script);
  3510. }
  3511. script.startNamed("Story", "utils/u_error", "story/story", "utils/u_general");
  3512. script = script.get("QuestsAdmont");
  3513. if(script != null) {
  3514. script.term(script);
  3515. }
  3516. script.startNamed("QuestsAdmont", "utils/u_error", "story/admont/core", "utils/u_general", "utils/u_quest");
  3517. script = script.get("QuestsSchiffbruch");
  3518. if(script != null) {
  3519. script.term(script);
  3520. }
  3521. script.startNamed("QuestsSchiffbruch", "utils/u_error", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
  3522. }
  3523. elseif(arg0 == "sitting") {
  3524. script = script.get("Sitting");
  3525. if(script != null) {
  3526. script.term(script);
  3527. }
  3528. script.startNamed("Sitting", "utils/u_error", "system/sitting", "utils/u_general");
  3529. }
  3530. elseif(arg0 == "survival") {
  3531. script = script.get("Survival");
  3532. if(script != null) {
  3533. script.term(script);
  3534. }
  3535. script.startNamed("Survival", "utils/u_error", "survival/survival", "utils/u_general");
  3536. }
  3537. elseif(arg0 == "voxel") {
  3538. script = script.get("Voxel");
  3539. if(script != null) {
  3540. script.term(script);
  3541. }
  3542. script.startNamed("Voxel", "system/voxel");
  3543. }
  3544. else {
  3545. goto("starthelp");
  3546. }
  3547. goto("wait");
  3548. @senditem
  3549. if(size != 1) {
  3550. msg.prefix(player, prefix_commands, "/senditem <player>");
  3551. goto("wait");
  3552. }
  3553. item = living.getEquip(player, "hand");
  3554. if(item.getType(item) == "minecraft:air") {
  3555. msg.prefix(player, prefix_commands, "You need to hold an item in your hand.");
  3556. goto("wait");
  3557. }
  3558. p_name = list.getIndex(args, 0);
  3559. p_uuid = player.getUuid(p_name);
  3560. if(p_uuid == null) {
  3561. msg.prefix(player, prefix_commands, "This player has never been online.");
  3562. goto("wait");
  3563. }
  3564. p = read.player(p_name);
  3565. if(p == null) {
  3566. msg.prefix(player, prefix_commands, "This player is not online.");
  3567. goto("wait");
  3568. }
  3569. player.safeGiveItem(p, item);
  3570. player.removeItem(player, item);
  3571. goto("wait");
  3572. @top
  3573. player_loc = entity.getLocation(player);
  3574. y = 255;
  3575. loc.setY(player_loc, y);
  3576. while(y > 0 && block.isAir(player_loc)) {
  3577. loc.setY(player_loc, y);
  3578. y--;
  3579. }
  3580. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  3581. goto("wait");
  3582. @creative
  3583. crea_spawn = world.getCreativeSpawn();
  3584. world = loc.getWorld(crea_spawn);
  3585. if(world == null) {
  3586. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3587. goto("wait");
  3588. }
  3589. if(size > 1) {
  3590. msg.prefix(player, prefix_commands, "/story [player]");
  3591. goto("wait");
  3592. }
  3593. if(size == 1) {
  3594. affectedname = list.getIndex(args, 0);
  3595. affectedplayer = read.player(affectedname);
  3596. if(affectedplayer == null) {
  3597. msg.prefix(player, prefix_commands, "This player is not online.");
  3598. goto("wait");
  3599. }
  3600. if(!perm.has(player, "teleport.other")) {
  3601. perm.no(player, "teleport.other");
  3602. goto("wait");
  3603. }
  3604. }
  3605. if(player.hasMinigame(affectedplayer)) {
  3606. if(size == 1) {
  3607. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3608. goto("wait");
  3609. }
  3610. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3611. goto("wait");
  3612. }
  3613. if(size == 1) {
  3614. if(player != affectedplayer) {
  3615. affectedname = player.getName(affectedplayer);
  3616. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the creative world."));
  3617. }
  3618. }
  3619. if(player.teleport(affectedplayer, crea_spawn, true)) {
  3620. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the creative world.");
  3621. }
  3622. goto("wait");
  3623. @story
  3624. story_spawn = world.getStorySpawn();
  3625. world = loc.getWorld(story_spawn);
  3626. if(world == null) {
  3627. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3628. goto("wait");
  3629. }
  3630. if(size > 1) {
  3631. msg.prefix(player, prefix_commands, "/story [player]");
  3632. goto("wait");
  3633. }
  3634. if(size == 1) {
  3635. affectedname = list.getIndex(args, 0);
  3636. affectedplayer = read.player(affectedname);
  3637. if(affectedplayer == null) {
  3638. msg.prefix(player, prefix_commands, "This player is not online.");
  3639. goto("wait");
  3640. }
  3641. if(!perm.has(player, "teleport.other")) {
  3642. perm.no(player, "teleport.other");
  3643. goto("wait");
  3644. }
  3645. }
  3646. if(player.hasMinigame(affectedplayer)) {
  3647. if(size == 1) {
  3648. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3649. goto("wait");
  3650. }
  3651. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3652. goto("wait");
  3653. }
  3654. if(size == 1) {
  3655. if(player != affectedplayer) {
  3656. affectedname = player.getName(affectedplayer);
  3657. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the story world."));
  3658. }
  3659. }
  3660. if(player.teleport(affectedplayer, story_spawn, true)) {
  3661. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the story world.");
  3662. }
  3663. goto("wait");
  3664. @games
  3665. world = loc.getWorld(gamesspawn);
  3666. if(world == null) {
  3667. msg.prefix(player, prefix_commands, "This world is not loaded.");
  3668. goto("wait");
  3669. }
  3670. if(size > 1) {
  3671. msg.prefix(player, prefix_commands, "/games [player]");
  3672. goto("wait");
  3673. }
  3674. if(size == 1) {
  3675. affectedname = list.getIndex(args, 0);
  3676. affectedplayer = read.player(affectedname);
  3677. if(affectedplayer == null) {
  3678. msg.prefix(player, prefix_commands, "This player is not online.");
  3679. goto("wait");
  3680. }
  3681. if(!perm.has(player, "teleport.other")) {
  3682. perm.no(player, "teleport.other");
  3683. goto("wait");
  3684. }
  3685. }
  3686. if(player.hasMinigame(affectedplayer)) {
  3687. if(size == 1) {
  3688. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  3689. goto("wait");
  3690. }
  3691. msg.prefix(player, prefix_commands, "You can't teleport now.");
  3692. goto("wait");
  3693. }
  3694. if(size == 1) {
  3695. if(player != affectedplayer) {
  3696. affectedname = player.getName(affectedplayer);
  3697. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the games world."));
  3698. }
  3699. }
  3700. if(player.teleport(affectedplayer, gamesspawn, true)) {
  3701. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the games world.");
  3702. }
  3703. goto("wait");
  3704. @bug
  3705. msg.prefix(player, prefix_commands, "Found a bug? Report it to marvinius with §b/mail marvinius <message>");
  3706. goto("wait");
  3707. @repair
  3708. item = living.getEquip(player, "hand");
  3709. if(item.getType(item) == "minecraft:air") {
  3710. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3711. goto("wait");
  3712. }
  3713. item.setDamage(item, 0);
  3714. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  3715. goto("wait");
  3716. @report
  3717. msg.prefix(player, prefix_commands, "Want to report a player?");
  3718. msg(player, " - §b/ticket <message>");
  3719. msg(player, " - §b/mail marvinius <message>");
  3720. goto("wait");
  3721. @playtime
  3722. if(size == 0) {
  3723. p_id = player.getId(player);
  3724. arg0 = player.getName(player);
  3725. } else {
  3726. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3727. if(arg0 == "year") {
  3728. if(!perm.has(player, "playtime.year")) {
  3729. perm.no(player, "playtime.year");
  3730. goto("wait");
  3731. }
  3732. calendar = time.new(time.getMillis());
  3733. now_month = time.getMonth(calendar);
  3734. now_year = time.getYear(calendar);
  3735. if(size == 1) {
  3736. year = now_year;
  3737. } else {
  3738. year = list.getIndex(args, 1);
  3739. if(!isDouble(year)) {
  3740. msg.prefix(player, prefix_commands, "Number expected.");
  3741. goto("wait");
  3742. }
  3743. if(year > now_year) {
  3744. year = now_year;
  3745. }
  3746. }
  3747. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3748. since_minutes = playtime.getTotalOnlineMinutes();
  3749. //Tabelle erstellen
  3750. table = table.new("§8", 4, 5, 5);
  3751. msg(player, table.getStart(table));
  3752. msg(player, table.get(table, text.number(year), "Playtime", "Change"));
  3753. msg(player, table.getMiddle(table));
  3754. //Erstes Mitternacht des gewählten Jahres festlegen
  3755. now_day = time.getDay(calendar);
  3756. time.nextDay(calendar);
  3757. midnight = time.from(calendar) - (time.getDaysBetween(1, 1, year, now_day, now_month, now_year) + 1) * 86400000;
  3758. //Monats-Spielzeit berechnen
  3759. temp_list = list.new();
  3760. list.add(temp_list, playtime.getInterval(midnight - time.getMonthDays(12, year - 1) * 86400000, midnight)); //Dezember des Vorjahres hinzufügen
  3761. for(i = 1; i <= 12; i++) {
  3762. midnight_2 = midnight + time.getMonthDays(i, now_year) * 86400000; //Alle Tage eines Monats * 24 Stunden
  3763. minutes = playtime.getInterval(midnight, midnight_2);
  3764. list.add(temp_list, minutes);
  3765. midnight = midnight_2;
  3766. if(i == now_month && year == now_year) {
  3767. minutes += since_minutes;
  3768. }
  3769. }
  3770. for(i = 1; i <= 12; i++) {
  3771. minutes = list.getIndex(temp_list, i);
  3772. hours = math.roundDown(minutes / 60);
  3773. mod_minutes = minutes % 60;
  3774. if(mod_minutes < 10) {
  3775. time_string = concat("§6", text.number(hours), ":0", text.number(mod_minutes), " h");
  3776. } else {
  3777. time_string = concat("§6", text.number(hours), ":", text.number(mod_minutes), " h");
  3778. }
  3779. pre_minutes = list.getIndex(temp_list, i - 1);
  3780. if(minutes >= pre_minutes) {
  3781. color = "§a+";
  3782. a = minutes;
  3783. b = pre_minutes;
  3784. } else {
  3785. color = "§c-";
  3786. a = pre_minutes;
  3787. b = minutes;
  3788. }
  3789. if(b == 0) {
  3790. change = "";
  3791. } else {
  3792. change = math.round(a / b * 100 - 100);
  3793. change = concat(color, text.number(change), " %");
  3794. }
  3795. msg(player, table.get(table, concat("§6", month.getShortName(i)), time_string, change));
  3796. if(i == now_month && year == now_year) {
  3797. break;
  3798. }
  3799. }
  3800. //Tabelle beenden
  3801. msg(player, table.getEnd(table));
  3802. goto("wait");
  3803. }
  3804. if(arg0 == "month") {
  3805. if(!perm.has(player, "playtime.month")) {
  3806. perm.no(player, "playtime.month");
  3807. goto("wait");
  3808. }
  3809. calendar = time.new(time.getMillis());
  3810. now_month = time.getMonth(calendar);
  3811. now_year = time.getYear(calendar);
  3812. year = now_year;
  3813. if(size == 1) {
  3814. month = now_month;
  3815. } else {
  3816. month = list.getIndex(args, 1);
  3817. if(!isDouble(month)) {
  3818. msg.prefix(player, prefix_commands, "Number expected.");
  3819. goto("wait");
  3820. }
  3821. if(month < 1) {
  3822. month = 1;
  3823. } elseif(month > 12) {
  3824. month = 12;
  3825. }
  3826. if(size == 3) {
  3827. year = list.getIndex(args, 2);
  3828. if(!isDouble(year)) {
  3829. msg.prefix(player, prefix_commands, "Number expected.");
  3830. goto("wait");
  3831. }
  3832. }
  3833. if(year > now_year ||(year >= now_year && month > now_month)) {
  3834. month = now_month;
  3835. year = now_year;
  3836. }
  3837. }
  3838. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3839. since_minutes = playtime.getTotalOnlineMinutes();
  3840. //Tabelle erstellen
  3841. table = table.new("§8", 4, 5, 5);
  3842. msg(player, table.getStart(table));
  3843. msg(player, table.get(table, month.getShortName(month), "Playtime", "Players"));
  3844. msg(player, table.getMiddle(table));
  3845. //Erstes Mitternacht des gewählten Monats festlegen
  3846. now_day = time.getDay(calendar);
  3847. time.nextDay(calendar);
  3848. midnight = time.from(calendar) - (time.getDaysBetween(1, month, year, now_day, now_month, now_year) + 1) * 86400000;
  3849. //Tages-Spielzeit berechnen
  3850. for(i = 1; i <= time.getMonthDays(month, year); i++) {
  3851. players = playtime.getPlayersPerInterval(midnight, midnight + 86400000);
  3852. minutes = playtime.getInterval(midnight, midnight + 86400000);
  3853. midnight += 86400000; //24 Stunden
  3854. if(i == now_day && month == now_month && year == now_year) {
  3855. minutes += since_minutes;
  3856. }
  3857. hours = math.roundDown(minutes / 60);
  3858. minutes = minutes % 60;
  3859. if(minutes < 10) {
  3860. time_string = concat("§6", text.number(hours), ":0", text.number(minutes), " h");
  3861. } else {
  3862. time_string = concat("§6", text.number(hours), ":", text.number(minutes), " h");
  3863. }
  3864. msg(player, table.get(table, concat("§6", text.number(i)), time_string, text.number(players)));
  3865. if(i == now_day && month == now_month && year == now_year) {
  3866. break;
  3867. }
  3868. }
  3869. //Tabelle beenden
  3870. msg(player, table.getEnd(table));
  3871. goto("wait");
  3872. }
  3873. if(arg0 == "all") {
  3874. msg(player, getSpacer());
  3875. msg.prefix(player, prefix_commands, "Server-Playtime");
  3876. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3877. since_minutes = playtime.getTotalOnlineMinutes();
  3878. now_time = time.getMillis();
  3879. //Spielzeit heute
  3880. calendar = time.new(now_time);
  3881. time.nextDay(calendar);
  3882. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3883. minutes = playtime.getInterval(midnight, now_time) + since_minutes;
  3884. hours = text.number(math.roundDown(minutes / 60));
  3885. minutes = text.number(minutes % 60);
  3886. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3887. //Spielzeit 30 Tage für alle Spieler
  3888. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3889. minutes = playtime.getInterval(oneMonthAgo, now_time) + since_minutes;
  3890. hours = text.number(math.roundDown(minutes / 60));
  3891. minutes = text.number(minutes % 60);
  3892. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3893. //Spielzeit gesamt
  3894. minutes = playtime.getTotal();
  3895. hours = text.number(math.roundDown(minutes / 60));
  3896. minutes = text.number(minutes % 60);
  3897. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3898. goto("wait");
  3899. }
  3900. if(!perm.has(player, "playtime.other")) {
  3901. perm.no(player, "playtime.other");
  3902. goto("wait");
  3903. }
  3904. }
  3905. if(!checkIfEverOnline(arg0)) {
  3906. msg.prefix(player, prefix_commands, "This player has never been online.");
  3907. goto("wait");
  3908. }
  3909. now_time = time.getMillis();
  3910. p_uuid = player.getUuid(arg0);
  3911. arg0 = player.getName(p_uuid);
  3912. p_id = player.getId(p_uuid);
  3913. msg(player, getSpacer());
  3914. msg.prefix(player, prefix_commands, concat("Playtime of ", player.getName(p_uuid)));
  3915. //Online seit
  3916. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  3917. if(isOnline(arg0)) {
  3918. since_hours = math.roundDown(since_minutes / 60);
  3919. mod_minutes = since_minutes % 60;
  3920. msg(player, concat("§aOnline since: §r", text.number(since_hours), " hours ", text.number(mod_minutes), " minutes"));
  3921. } else {
  3922. msg(player, "§6Status: ", "§cOffline");
  3923. }
  3924. //Spielzeit heute
  3925. calendar = time.new(now_time);
  3926. time.nextDay(calendar);
  3927. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3928. minutes = playtime.getPlayerInterval(p_id, midnight, now_time) + since_minutes;
  3929. hours = text.number(math.roundDown(minutes / 60));
  3930. minutes = text.number(minutes % 60);
  3931. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3932. //Spielzeit 30 Tage
  3933. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3934. minutes = playtime.getPlayerInterval(p_id, oneMonthAgo, now_time) + since_minutes;
  3935. hours = text.number(math.roundDown(minutes / 60));
  3936. minutes = text.number(minutes % 60);
  3937. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3938. //Spielzeit gesamt
  3939. minutes = playtime.getPlayerTotal(p_id);
  3940. hours = text.number(math.roundDown(minutes / 60));
  3941. minutes = text.number(minutes % 60);
  3942. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3943. goto("wait");
  3944. @datatools
  3945. if(size == 0) {
  3946. @datatoolshelp
  3947. msg.prefix(player, prefix_datatools, "/datatools ...");
  3948. msg(player, "§6 - hide <name> §rHides wusi on an itemstack");
  3949. msg(player, "§6 - attribute <attribut> <slot> <double> <op> §rAdd an attribute to an item");
  3950. msg(player, "§6 - hide-entity §rHide an entity");
  3951. msg(player, "§6 - show-entity §rShow an entity");
  3952. msg(player, "§6 - name-entity <name> §rRename an entity");
  3953. msg(player, "§6 - name-visibility <boolean> §rShow name (not) permanent");
  3954. msg(player, "§6 - name-item <name> §rRename an item");
  3955. msg(player, "§6 - lore-item <line> <lore> §rSet an item lore");
  3956. msg(player, "§6 - print-entity §rPrint entities nbt-tag");
  3957. goto("wait");
  3958. }
  3959. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3960. if(arg0 == "hide") {
  3961. if(size < 2) {
  3962. msg.prefix(player, prefix_datatools, "/datatools hide <name>");
  3963. goto("wait");
  3964. }
  3965. item = living.getEquip(player, "hand");
  3966. if(item.getType(item) == "minecraft:air") {
  3967. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  3968. goto("wait");
  3969. }
  3970. name = text.concatList(args, " ", 1, size - 1);
  3971. if(item.hide(item, name)) {
  3972. msg.prefix(player, prefix_datatools, "You hided something.");
  3973. } else {
  3974. msg.prefix(player, prefix_datatools, "You can't hide that.");
  3975. }
  3976. goto("wait");
  3977. }
  3978. if(arg0 == "attribute") {
  3979. if(size < 5) {
  3980. msg.prefix(player, prefix_datatools, "/datatools attribute <attribut> <slot> <double> <op>");
  3981. goto("wait");
  3982. }
  3983. item = living.getEquip(player, "hand");
  3984. if(item.getType(item) == "minecraft:air") {
  3985. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3986. goto("wait");
  3987. }
  3988. double = list.getIndex(args, 3);
  3989. if(!isDouble(double) || double < 0) {
  3990. msg.prefix(player, prefix_datatools, "Natural number expected.");
  3991. goto("wait");
  3992. }
  3993. attribut = concat("generic.", text.toLowerCase(list.getIndex(args, 1)));
  3994. if(!set.contains(attribut_set, attribut)) {
  3995. msg.prefix(player, prefix_datatools, "Unknown attribute.");
  3996. goto("wait");
  3997. }
  3998. slot = read.slot(list.getIndex(args, 2));
  3999. if(slot == null) {
  4000. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  4001. goto("wait");
  4002. }
  4003. operation = list.getIndex(args, 4);
  4004. if(operation == "ADDITION") {
  4005. operation = 0;
  4006. } elseif(operation == "MULTIPLY_BASE") {
  4007. operation = 1;
  4008. } elseif(operation == "MULTIPLY_TOTAL") {
  4009. operation = 2;
  4010. } else {
  4011. msg.prefix(player, prefix_datatools, "Incorrect operation.");
  4012. goto("wait");
  4013. }
  4014. item.addAttribute(item, attribut, slot, double, operation);
  4015. msg.prefix(player, prefix_datatools, "Attribute added.");
  4016. goto("wait");
  4017. }
  4018. if(arg0 == "name-item") {
  4019. if(size < 2) {
  4020. msg.prefix(player, prefix_datatools, "/datatools name-item <name>");
  4021. goto("wait");
  4022. }
  4023. item = living.getEquip(player, "hand");
  4024. if(item.getType(item) == "minecraft:air") {
  4025. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4026. goto("wait");
  4027. }
  4028. name = text.concatList(args, " ", 1, size - 1);
  4029. name = text.replace(name, "&", "§");
  4030. name = text.replace(name, "\\n", "\n");
  4031. item.setName(item, name);
  4032. msg.prefix(player, prefix_datatools, concat("Item renamed to ", name, "§r."));
  4033. goto("wait");
  4034. }
  4035. if(arg0 == "print-entity") {
  4036. templist = living.near(player, 3);
  4037. if(list.getSize(templist) == 0) {
  4038. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4039. goto("wait");
  4040. }
  4041. entity = list.getIndex(templist, 0);
  4042. txt_ent = text.entity(entity);
  4043. msg(player, text.clipBoard(txt_ent, txt_ent));
  4044. goto("wait");
  4045. }
  4046. if(arg0 == "lore-item") {
  4047. if(size < 3) {
  4048. msg.prefix(player, prefix_datatools, "/datatools lore-item <line> <lore>");
  4049. goto("wait");
  4050. }
  4051. item = living.getEquip(player, "hand");
  4052. if(item.getType(item) == "minecraft:air") {
  4053. msg.prefix(player, prefix_datatools, "You need to hold an item in your hand.");
  4054. goto("wait");
  4055. }
  4056. line = list.getIndex(args, 1);
  4057. if(!isDouble(line)) {
  4058. msg.prefix(player, prefix_datatools, "Number expected.");
  4059. goto("wait");
  4060. }
  4061. if(line < 0) {
  4062. msg.prefix(player, prefix_datatools, "Positive number expected.");
  4063. goto("wait");
  4064. }
  4065. lore = text.concatList(args, " ", 2, size - 1);
  4066. lore = text.replace(lore, "&", "§");
  4067. item.addLore(item, line, lore);
  4068. msg.prefix(player, prefix_datatools, "New lore added.");
  4069. goto("wait");
  4070. }
  4071. if(arg0 == "maxhealth") {
  4072. if(size < 2) {
  4073. msg.prefix(player, prefix_datatools, "/datatools maxhealth <value>");
  4074. goto("wait");
  4075. }
  4076. value = list.getIndex(args, 1);
  4077. if(!isDouble(value)) {
  4078. msg.prefix(player, prefix_datatools, "Number expected.");
  4079. goto("wait");
  4080. }
  4081. templist = living.near(player, 3);
  4082. if(list.getSize(templist) == 0) {
  4083. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4084. goto("wait");
  4085. }
  4086. entity = list.getIndex(templist, 0);
  4087. if(isPlayer(entity)) {
  4088. msg.prefix(player, prefix_datatools, "To players not usable.");
  4089. goto("wait");
  4090. }
  4091. living.setMaxHealth(entity, value);
  4092. msg.prefix(player, prefix_datatools, concat("Entity ", entity.getType(entity), " has now Maxhealth: ", living.getMaxHealth(entity), "§r."));
  4093. goto("wait");
  4094. }
  4095. if(arg0 == "name-entity") {
  4096. if(size < 2) {
  4097. msg.prefix(player, prefix_datatools, "§r/datatools name-entity <name>");
  4098. goto("wait");
  4099. }
  4100. templist = living.near(player, 3);
  4101. if(list.getSize(templist) == 0) {
  4102. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4103. goto("wait");
  4104. }
  4105. entity = list.getIndex(templist, 0);
  4106. name = text.concatList(args, " ", 1, size - 1);
  4107. name = text.replace(name, "&", "§");
  4108. name = text.replace(name, "\\n", "\n");
  4109. entity.setName(entity, name, true);
  4110. msg.prefix(player, prefix_datatools, concat("Entity renamed to ", name, "§r."));
  4111. goto("wait");
  4112. }
  4113. if(arg0 == "name-visibility") {
  4114. if(size != 2) {
  4115. msg.prefix(player, prefix_datatools, "§r/datatools name-visibility <boolean>");
  4116. goto("wait");
  4117. }
  4118. templist = living.near(player, 3);
  4119. if(list.getSize(templist) == 0) {
  4120. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4121. goto("wait");
  4122. }
  4123. entity = list.getIndex(templist, 0);
  4124. boolean = list.getIndex(args, 1);
  4125. name = entity.getName(entity);
  4126. entity.setName(entity, name, boolean);
  4127. msg.prefix(player, prefix_datatools, "Name-Visibility changed.");
  4128. goto("wait");
  4129. }
  4130. if(arg0 == "hide-entity") {
  4131. if(size != 1) {
  4132. msg.prefix(player, prefix_datatools, "§r/datatools hide-entity");
  4133. goto("wait");
  4134. }
  4135. templist = living.near(player, 3);
  4136. if(list.getSize(templist) == 0) {
  4137. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4138. goto("wait");
  4139. }
  4140. entity = list.getIndex(templist, 0);
  4141. entity.setInvisible(entity, true);
  4142. msg.prefix(player, prefix_datatools, "Entity is now hidden.");
  4143. goto("wait");
  4144. }
  4145. if(arg0 == "show-entity") {
  4146. if(size != 1) {
  4147. msg.prefix(player, prefix_datatools, "§r/datatools show-entity");
  4148. goto("wait");
  4149. }
  4150. templist = living.near(player, 3);
  4151. if(list.getSize(templist) == 0) {
  4152. msg.prefix(player, prefix_datatools, "Too far away from an entity.");
  4153. goto("wait");
  4154. }
  4155. entity = list.getIndex(templist, 0);
  4156. entity.setInvisible(entity, false);
  4157. msg.prefix(player, prefix_datatools, "Entity is now visible.");
  4158. goto("wait");
  4159. }
  4160. goto("datatoolshelp");
  4161. @human
  4162. if(size == 0) {
  4163. @humanhelp
  4164. msg.prefix(player, prefix_human, "/human ...");
  4165. msg(player, concat("§6 - spawn §rSpawnt einen Human"));
  4166. msg(player, concat("§6 - set <name> §rSetzt den Skin"));
  4167. msg(player, concat("§6 - setuuid <uuid> §rSetzt den Skin"));
  4168. msg(player, concat("§6 - name §rSetzt den Namen"));
  4169. msg(player, concat("§6 - kill §rTötet einen Human"));
  4170. msg(player, concat("§6 - size <scale> §rSetzt die Größenskalierung"));
  4171. msg(player, concat("§6 - steve §rSchaltet auf Steve Skin"));
  4172. msg(player, concat("§6 - alex §rSchaltet auf Alex Skin"));
  4173. msg(player, concat("§6 - statue <bool> §rToggles between statue"));
  4174. goto("wait");
  4175. }
  4176. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4177. if(arg0 == "spawn") {
  4178. human.spawn(entity.getLocation(player));
  4179. msg.prefix(player, prefix_human, "Human gespawnt.");
  4180. goto("wait");
  4181. }
  4182. player_loc = entity.getLocation(player);
  4183. human = entity.get(player_loc, 3, "me.km.entities.EntityHuman");
  4184. if(human == null) {
  4185. msg.prefix(player, prefix_human, "Zu weit weg vom Human.");
  4186. goto("wait");
  4187. }
  4188. if(arg0 == "set") {
  4189. if(size == 2) {
  4190. name = list.getIndex(args, 1);
  4191. human.setSkin(human, name);
  4192. msg.prefix(player, prefix_human, "Skin gesetzt.");
  4193. goto("wait");
  4194. }
  4195. }
  4196. elseif(arg0 == "setuuid") {
  4197. if(size == 2) {
  4198. uuid = list.getIndex(args, 1);
  4199. human.setSkin(human, uuid);
  4200. msg.prefix(player, prefix_human, "Skin gesetzt.");
  4201. goto("wait");
  4202. }
  4203. }
  4204. elseif(arg0 == "name") {
  4205. if(size > 1) {
  4206. name = text.concatList(args, " ", 1, size - 1);
  4207. name = text.replace(name, "&", "§");
  4208. name = text.replace(name, "\\n", "\n");
  4209. entity.setName(human, name, true);
  4210. msg.prefix(player, prefix_human, concat("Das Entity trägt nun den Namen ", name, "§r."));
  4211. goto("wait");
  4212. }
  4213. }
  4214. elseif(arg0 == "kill") {
  4215. entity.remove(human);
  4216. msg.prefix(player, prefix_human, "Human getötet.");
  4217. goto("wait");
  4218. }
  4219. elseif(arg0 == "size") {
  4220. if(size == 2) {
  4221. scale = list.getIndex(args, 1);
  4222. if(!isDouble(scale)) {
  4223. msg.prefix(player, prefix_human, "Number expected.");
  4224. goto("wait");
  4225. }
  4226. if(scale > 10) {
  4227. msg.prefix(player, prefix_human, "Maximal 10.");
  4228. scale = 10;
  4229. }
  4230. human.setScale(human, scale);
  4231. msg.prefix(player, prefix_human, "Größe verändert.");
  4232. goto("wait");
  4233. }
  4234. }
  4235. elseif(arg0 == "steve") {
  4236. human.setSlim(human, false);
  4237. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  4238. goto("wait");
  4239. }
  4240. elseif(arg0 == "alex") {
  4241. human.setSlim(human, true);
  4242. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  4243. goto("wait");
  4244. }
  4245. elseif(arg0 == "statue") {
  4246. if(size == 1) {
  4247. bool = true;
  4248. } elseif(size == 2) {
  4249. bool = list.getIndex(args, 1);
  4250. if(bool != true && bool != false) {
  4251. bool = true;
  4252. }
  4253. }
  4254. human.setStatue(human, bool);
  4255. msg.prefix(player, prefix_human, "Human changed.");
  4256. goto("wait");
  4257. }
  4258. goto("humanhelp");
  4259. @answer
  4260. if(player.isMuted(player)) {
  4261. msg.prefix(player, "§6Commands", "You are muted.");
  4262. goto("wait");
  4263. }
  4264. if(size < 1) {
  4265. msg.prefix(sender, prefix_commands, "/answer <message>");
  4266. goto("wait");
  4267. }
  4268. player_uuid = player.getUuid(sender);
  4269. p_uuid = map.get(answer_map, player_uuid);
  4270. if(p_uuid == null) {
  4271. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  4272. goto("wait");
  4273. }
  4274. message = text.replace(text.concatList(text_args, " ", 0, size - 1), "&", "§");
  4275. if(text.startsWith(message, "https://", 0)) {
  4276. message = text.link(message, message);
  4277. } else {
  4278. message = text.concat("§e", message);
  4279. }
  4280. if(player.getId(p_uuid) == 18) {
  4281. msg(sender, "§6[ -> §cSERVER§6] ", message);
  4282. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  4283. } else {
  4284. p = player.get(p_uuid);
  4285. if(p == null) {
  4286. msg.prefix(sender, prefix_commands, "This player is not online.");
  4287. goto("wait");
  4288. }
  4289. msg(sender, concat("§6[§cme §6-> §c", player.getName(p)), "§6] ", message);
  4290. msg(p, concat("§6[§c", sender_name), " §6-> §cme§6] ", message);
  4291. }
  4292. map.add(answer_map, p_uuid, player_uuid);
  4293. map.add(answer_map, player_uuid, p_uuid);
  4294. goto("wait");
  4295. @msg
  4296. if(player.isMuted(player)) {
  4297. msg.prefix(player, "§6Commands", "You are muted.");
  4298. goto("wait");
  4299. }
  4300. if(size < 2) {
  4301. msg.prefix(sender, prefix_commands, "/msg <player> <message>");
  4302. goto("wait");
  4303. }
  4304. p_name = list.getIndex(args, 0);
  4305. p_uuid = player.getUuid(p_name);
  4306. if(p_uuid == null) {
  4307. msg.prefix(sender, prefix_commands, "Unknown player.");
  4308. goto("wait");
  4309. }
  4310. message = text.replace(text.concatList(text_args, " ", 1, size - 1), "&", "§");
  4311. if(text.startsWith(message, "https://", 0)) {
  4312. message = text.link(message, message);
  4313. } else {
  4314. message = text.concat("§e", message);
  4315. }
  4316. if(text.toUpperCase(p_name) == "SERVER") {
  4317. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  4318. msg(sender, "§6[ -> §cSERVER§6] ", message);
  4319. } else {
  4320. p = read.player(p_name);
  4321. if(p == null) {
  4322. msg.prefix(sender, prefix_commands, "This player is not online.");
  4323. goto("wait");
  4324. }
  4325. msg(p, concat("§6[§c", sender_name), " §6-> §cme§6] ", message);
  4326. msg(sender, concat("§6[§cme §6-> §c", player.getName(p)), "§6] ", message);
  4327. }
  4328. player_uuid = player.getUuid(sender);
  4329. map.add(answer_map, p_uuid, player_uuid);
  4330. map.add(answer_map, player_uuid, p_uuid);
  4331. goto("wait");
  4332. @list
  4333. list = players.toList();
  4334. size = list.getSize(list);
  4335. msg(sender, getSpacer());
  4336. if(size == 1) {
  4337. msg(sender, concat("§6There is ", text.number(size), " players online."));
  4338. } else {
  4339. msg(sender, concat("§6There are ", text.number(size), " players online."));
  4340. }
  4341. for(i = 0; i < size; i++) {
  4342. p = list.getIndex(list, i);
  4343. full_name = player.getFullName(p);
  4344. if(player.isAfk(p)) {
  4345. full_name = concat(full_name, " §5§o[Afk]");
  4346. }
  4347. msg(sender, full_name);
  4348. }
  4349. goto("wait");
  4350. @ass
  4351. if(size < 2) {
  4352. msg.prefix(player, prefix_commands, "§r/ass ...");
  4353. msg(player, " - set <name>");
  4354. msg(player, " - rename <name>");
  4355. msg(player, " - remove <radius>");
  4356. goto("wait");
  4357. }
  4358. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4359. if(arg0 == "set") {
  4360. name = text.concatList(args, " ", 1, size - 1);
  4361. name = text.replace(name, "&", "§");
  4362. name = text.replace(name, "\\n", "\n");
  4363. ent = entity.spawn("km:nobody", entity.getLocation(player), "{NoGravity:true}");
  4364. entity.setName(ent, name);
  4365. goto("wait");
  4366. }
  4367. if(arg0 == "rename") {
  4368. name = text.concatList(args, " ", 1, size - 1);
  4369. name = text.replace(name, "&", "§");
  4370. name = text.replace(name, "\\n", "\n");
  4371. ent_list = living.near(player, 5);
  4372. for(i = 0; i < list.getSize(ent_list); i++) {
  4373. ent = list.getIndex(ent_list, i);
  4374. if(entity.getType(ent) == "nobody") {
  4375. entity.setName(ent, name);
  4376. goto("wait");
  4377. }
  4378. }
  4379. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  4380. goto("wait");
  4381. }
  4382. if(arg0 == "remove") {
  4383. radius = list.getIndex(args, 1);
  4384. if(!isDouble(radius)) {
  4385. msg.prefix(player, prefix_commands, "Number expected.");
  4386. goto("wait");
  4387. }
  4388. if(radius < 0 || radius > 5) {
  4389. msg.prefix(player, prefix_commands, "§rRadius: 0-5");
  4390. goto("wait");
  4391. }
  4392. ent_list = living.near(player, radius);
  4393. for(i = 0; i < list.getSize(ent_list); i++) {
  4394. ent = list.getIndex(ent_list, i);
  4395. if(entity.getType(ent) == "nobody") {
  4396. entity.remove(ent);
  4397. msg.prefix(player, prefix_commands, "§rLufttext entfernt");
  4398. goto("wait");
  4399. }
  4400. }
  4401. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  4402. }
  4403. goto("wait");
  4404. @coords
  4405. target_loc = player.getTarget(player, 5, false, false);
  4406. targettype = block.getType(target_loc);
  4407. if(targettype == "minecraft:air") {
  4408. msg.prefix(player, prefix_commands, "You have to look at a block.");
  4409. goto("wait");
  4410. }
  4411. msg(player, getSpacer());
  4412. x = text.Number(loc.getX(target_loc));
  4413. y = text.Number(loc.getY(target_loc));
  4414. z = text.Number(loc.getZ(target_loc));
  4415. msg(player, "§6World: §r", world.getName(loc.getWorld(target_loc)));
  4416. msg(player, "§6Coords: §r", x, " / ", y, " / ", z);
  4417. msg(player, "§6Block: §r", targettype);
  4418. goto("wait");
  4419. @sign
  4420. if(size == 0) {
  4421. msg.prefix(player, prefix_commands, "/sign <1-4> [text]");
  4422. goto("wait");
  4423. }
  4424. target_loc = player.getTarget(player, 5, false, false);
  4425. block = block.get(target_loc);
  4426. if(!block.hasTag(sign_tag, block)) {
  4427. msg.prefix(player, prefix_commands, "Look at a sign.");
  4428. goto("wait");
  4429. }
  4430. line = list.getIndex(args, 0);
  4431. if(!isDouble(line)) {
  4432. msg.prefix(player, prefix_commands, "Number expected.");
  4433. goto("wait");
  4434. }
  4435. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  4436. msg.prefix(player, prefix_commands, "Number between 1 and 5 expected.");
  4437. goto("wait");
  4438. }
  4439. string = "";
  4440. if(size > 1) {
  4441. for(i = 1; i < size; i++) {
  4442. arg = list.getIndex(text_args, i);
  4443. if(i == 1) {
  4444. string = arg;
  4445. } else {
  4446. string = concat(string, " ", arg);
  4447. }
  4448. }
  4449. }
  4450. string = text.replace(string, "&", "§");
  4451. block.setSign(target_loc, line - 1, string);
  4452. goto("wait");
  4453. @head
  4454. if(size != 1) {
  4455. msg.prefix(player, prefix_commands, "/head <player>");
  4456. goto("wait");
  4457. }
  4458. name = list.getIndex(args, 0);
  4459. uuid = player.getUuid(name);
  4460. if(uuid == null) {
  4461. player.giveItem(player, read.item(concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}")));
  4462. } else {
  4463. player.giveItem(player, player.getHead(uuid, name));
  4464. }
  4465. goto("wait");
  4466. @mute
  4467. if(size < 1) {
  4468. msg.prefix(sender, prefix_commands, "/mute <player>");
  4469. goto("wait");
  4470. }
  4471. p_name = list.getIndex(args, 0);
  4472. if(!isOnline(p_name)) {
  4473. msg.prefix(sender, prefix_commands, "This player is not online.");
  4474. goto("wait");
  4475. }
  4476. p = read.player(p_name);
  4477. p_name = player.getName(p);
  4478. if(p_name == "marvinius") {
  4479. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4480. goto("wait");
  4481. }
  4482. msg("online", concat("§c", p_name, " was muted by ", sender_name, "."));
  4483. player.mute(p, true);
  4484. goto("wait");
  4485. @unmute
  4486. if(size < 1) {
  4487. msg.prefix(sender, prefix_commands, "/unmute <player>");
  4488. goto("wait");
  4489. }
  4490. p_name = list.getIndex(args, 0);
  4491. if(!isOnline(p_name)) {
  4492. msg.prefix(sender, prefix_commands, "This player is not online.");
  4493. goto("wait");
  4494. }
  4495. p = read.player(p_name);
  4496. p_name = player.getName(p);
  4497. if(p_name == "marvinius") {
  4498. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4499. goto("wait");
  4500. }
  4501. msg("online", concat("§c", p_name, " was unmuted by ", sender_name, "."));
  4502. player.mute(p, false);
  4503. goto("wait");
  4504. @kick
  4505. if(size < 1) {
  4506. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  4507. goto("wait");
  4508. }
  4509. p_name = list.getIndex(args, 0);
  4510. if(!isOnline(p_name)) {
  4511. msg.prefix(sender, prefix_commands, "This player is not online.");
  4512. goto("wait");
  4513. }
  4514. p = read.player(p_name);
  4515. p_name = player.getName(p);
  4516. if(p_name == "marvinius") {
  4517. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4518. goto("wait");
  4519. }
  4520. if(size > 1) {
  4521. reason = text.concatList(args, " ", 1, size - 1);
  4522. msg("online", concat("§c", p_name, " was kicked by ", sender_name, ": ", reason));
  4523. } else {
  4524. reason = "You got kicked";
  4525. msg("online", concat("§c", p_name, " was kicked by ", sender_name, "."));
  4526. }
  4527. ban.kick(p, reason);
  4528. goto("wait");
  4529. @silentkick
  4530. if(size < 1) {
  4531. msg.prefix(sender, prefix_commands, "/silentkick <player> [reason]");
  4532. goto("wait");
  4533. }
  4534. p_name = list.getIndex(args, 0);
  4535. if(!isOnline(p_name)) {
  4536. msg.prefix(sender, prefix_commands, "This player is not online.");
  4537. goto("wait");
  4538. }
  4539. p = read.player(p_name);
  4540. p_name = player.getName(p);
  4541. if(p_name == "marvinius") {
  4542. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4543. goto("wait");
  4544. }
  4545. if(size > 1) {
  4546. reason = text.concatList(args, " ", 1, size - 1);
  4547. msg(sender, concat("§cYou silently kicked ", p_name, ": ", reason));
  4548. } else {
  4549. reason = "You got kicked.";
  4550. msg(sender, concat("§cYou silently kicked ", p_name, "."));
  4551. }
  4552. ban.kick(p, reason);
  4553. goto("wait");
  4554. @warn
  4555. if(size != 1) {
  4556. msg.prefix(player, prefix_commands, "/warn <player>");
  4557. goto("wait");
  4558. }
  4559. p_name = list.getIndex(args, 0);
  4560. if(!isOnline(p_name)) {
  4561. msg.prefix(player, prefix_commands, "This player is not online.");
  4562. goto("wait");
  4563. }
  4564. p = read.player(p_name);
  4565. p_name = player.getName(p);
  4566. if(p_name == "marvinius") {
  4567. msg(player, "§cSorry §b¯\\_(._.)_/¯");
  4568. goto("wait");
  4569. }
  4570. head.add(p, 0, sender_name, 0.4, 0.05, 0.2, 0.35);
  4571. title.setSub(p, "is watching you");
  4572. title.send(p, concat("§c", sender_name));
  4573. list.add(warninglist, p_name);
  4574. sgoto(100, "removeWarning");
  4575. msg.prefix(player, prefix_commands, "The player got warned.");
  4576. goto("wait");
  4577. @removeWarning
  4578. p_name = list.getIndex(warninglist, 0);
  4579. if(isOnline(p_name)) {
  4580. p = read.player(p_name);
  4581. head.remove(p, 0);
  4582. list.removeIndex(warninglist, 0);
  4583. }
  4584. goto("wait");
  4585. @ban
  4586. if(size < 1) {
  4587. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  4588. goto("wait");
  4589. }
  4590. p_name = list.getIndex(args, 0);
  4591. if(!checkIfEverOnline(p_name)) {
  4592. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4593. goto("wait");
  4594. }
  4595. p_name = player.getName(player.getUuid(p_name));
  4596. if(p_name == "marvinius") {
  4597. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4598. goto("wait");
  4599. }
  4600. if(size > 1) {
  4601. reason = text.concatList(args, " ", 1, size - 1);
  4602. msg("online", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  4603. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  4604. } else {
  4605. reason = "You got banned.";
  4606. msg("online", concat("§c", p_name, " got banned by ", sender_name, "."));
  4607. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, "."));
  4608. }
  4609. ban.add(player.getUuid(p_name), reason, sender_name);
  4610. if(isOnline(p_name)) {
  4611. p = read.player(p_name);
  4612. ban.kick(p, reason);
  4613. }
  4614. goto("wait");
  4615. @silentban
  4616. if(size < 1) {
  4617. msg.prefix(sender, prefix_commands, "/silentban <player> [reason]");
  4618. goto("wait");
  4619. }
  4620. p_name = list.getIndex(args, 0);
  4621. if(!checkIfEverOnline(p_name)) {
  4622. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4623. goto("wait");
  4624. }
  4625. p_name = player.getName(player.getUuid(p_name));
  4626. if(p_name == "marvinius") {
  4627. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4628. goto("wait");
  4629. }
  4630. if(size > 1) {
  4631. reason = text.concatList(args, " ", 1, size - 1);
  4632. msg(sender, concat("§cYou silently banned ", p_name, ": ", reason));
  4633. } else {
  4634. reason = "You got banned.";
  4635. msg(sender, concat("§cYou silently banned ", p_name, "."));
  4636. }
  4637. ban.add(player.getUuid(p_name), reason, sender_name);
  4638. if(isOnline(p_name)) {
  4639. p = read.player(p_name);
  4640. ban.kick(p, reason);
  4641. }
  4642. goto("wait");
  4643. @unban
  4644. if(size != 1) {
  4645. msg.prefix(sender, prefix_commands, "/unban <player>");
  4646. goto("wait");
  4647. }
  4648. p_name = list.getIndex(args, 0);
  4649. if(!checkIfEverOnline(p_name)) {
  4650. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4651. goto("wait");
  4652. }
  4653. p_name = player.getName(player.getUuid(p_name));
  4654. ban.remove(player.getUuid(p_name));
  4655. msg(sender, concat("§cYou unbanned ", p_name, "."));
  4656. goto("wait");
  4657. @tempban
  4658. if(size < 4) {
  4659. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  4660. goto("wait");
  4661. }
  4662. p_name = list.getIndex(args, 0);
  4663. if(!checkIfEverOnline(p_name)) {
  4664. msg.prefix(sender, prefix_commands, "This player has never been online.");
  4665. goto("wait");
  4666. }
  4667. p_name = player.getName(player.getUuid(p_name));
  4668. if(p_name == "marvinius") {
  4669. msg(sender, "§cSorry §b¯\\_(._.)_/¯");
  4670. goto("wait");
  4671. }
  4672. days = list.getIndex(args, 1);
  4673. hours = list.getIndex(args, 2);
  4674. minutes = list.getIndex(args, 3);
  4675. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  4676. msg.prefix(sender, prefix_commands, "Number expected.");
  4677. goto("wait");
  4678. }
  4679. if(days < 0 || hours < 0 || minutes < 0) {
  4680. msg.prefix(sender, prefix_commands, "Positive number expected.");
  4681. goto("wait");
  4682. }
  4683. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  4684. timestring = getTimeString(endtime);
  4685. if(size > 4) {
  4686. reason = text.concatList(args, " ", 4, size - 1);
  4687. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  4688. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  4689. } else {
  4690. reason = "You got banned.";
  4691. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  4692. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  4693. }
  4694. calendar = time.new(endtime);
  4695. ban.add(player.getUuid(p_name), reason, sender_name, calendar);
  4696. if(isOnline(p_name)) {
  4697. p = read.player(p_name);
  4698. ban.kick(p, reason);
  4699. }
  4700. goto("wait");
  4701. @ping
  4702. msg(player, "pong");
  4703. goto("wait");
  4704. @plot
  4705. if(size == 0) {
  4706. @plothelp
  4707. msg.prefix(player, prefix_plot, "/plot ...");
  4708. msg(player, "§d - info §rReturns info about current location");
  4709. if(!perm.has(player, "plot.moreinfo")) {
  4710. msg(player, "§d - list §rLists your plots");
  4711. }
  4712. msg(player, "");
  4713. msg(player, "§d - pos1/pos2 §rSet corner points");
  4714. msg(player, "§d - create §rCreates a (sub-)plot (Y: 0 - 255)");
  4715. msg(player, "§d - create3D §rCreates a 3D (sub-)plot");
  4716. msg(player, "");
  4717. msg(player, "§d - remove [id] §rRemoves a plot");
  4718. msg(player, "§d - expand <anzahl> [direction] [id] §rExpands a plot");
  4719. msg(player, "§d - name [id] <name> §rRenames a plot");
  4720. msg(player, "");
  4721. msg(player, "§d - share <player> [id] §rAdd a player to a plot");
  4722. msg(player, "§d - kick <player> [id] §rRemove a player from a plot");
  4723. msg(player, "§d - leader <player> [id] §rPromote to plot-leader");
  4724. msg(player, "§d - mod <player> [id] §rPromote to plot-mod");
  4725. msg(player, "§d - chest <player> [id] §rAllows a player to open chests");
  4726. msg(player, "");
  4727. msg(player, "§d - raise §rRaises a plot to a city. Costs §610 gold snuvis§r.");
  4728. msg(player, "§d - sell <price> §rSells a sub-plot");
  4729. msg(player, "");
  4730. if(perm.has(player, "plot.moreinfo")) {
  4731. msg(player, "§d - list [player] §rLists all plots from a player");
  4732. msg(player, "§d - moreinfo [id] §rReturns more detailed infos");
  4733. msg(player, "§d - listall §rLists all plots");
  4734. msg(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  4735. }
  4736. goto("wait");
  4737. }
  4738. arg0 = text.toLowerCase(list.getIndex(args, 0));
  4739. if(arg0 == "sell") {
  4740. if(size != 2) {
  4741. msg.prefix(player, prefix_commands, "/plot sell <price>");
  4742. goto("wait");
  4743. }
  4744. sign_loc = player.getTarget(player, 5, false, false);
  4745. block = block.get(sign_loc);
  4746. if(!block.hasTag(sign_tag, block)) {
  4747. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  4748. goto("wait");
  4749. }
  4750. if(block.getSign(sign_loc, 0) != "" || block.getSign(sign_loc, 1) != "" || block.getSign(sign_loc, 2) != "" || block.getSign(sign_loc, 3) != "") {
  4751. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  4752. goto("wait");
  4753. }
  4754. plot_list = plot.get(sign_loc);
  4755. amount = list.getSize(plot_list);
  4756. if(amount == 0 || amount == 1) {
  4757. msg.prefix(player, prefix_plot, "You aren't on a sub plot.");
  4758. goto("wait");
  4759. }
  4760. if(amount > 2) {
  4761. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4762. goto("wait");
  4763. }
  4764. plot_1 = list.getIndex(plot_list, 0);
  4765. plot_2 = list.getIndex(plot_list, 1);
  4766. if(plot.isCity(plot_1)) {
  4767. city_plot = plot_1;
  4768. sell_plot = plot_2;
  4769. } elseif(plot.isCity(plot_2)) {
  4770. sell_plot = plot_1;
  4771. city_plot = plot_2;
  4772. } else {
  4773. msg.prefix(player, prefix_plot, "No city found.");
  4774. goto("wait");
  4775. }
  4776. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  4777. msg.prefix(player, prefix_plot, "You aren't a city plot leader or mod.");
  4778. goto("wait");
  4779. }
  4780. snuvis = list.getIndex(args, 1);
  4781. if(!isDouble(snuvis) || snuvis < 0) {
  4782. msg.prefix(player, prefix_plot, "Positive number expected.");
  4783. goto("wait");
  4784. }
  4785. //Sell Plot
  4786. x1 = plot.getMinX(sell_plot);
  4787. y1 = plot.getMinY(sell_plot);
  4788. z1 = plot.getMinZ(sell_plot);
  4789. x2 = plot.getMaxX(sell_plot);
  4790. y2 = plot.getMaxY(sell_plot);
  4791. z2 = plot.getMaxZ(sell_plot);
  4792. length = math.abs(x1 - x2) + 1;
  4793. width = math.abs(z1 - z2) + 1;
  4794. high = math.abs(y1 - y2) + 1;
  4795. //Change plot settings
  4796. plot.setFree(sell_plot, true);
  4797. plot.setName(sell_plot, "Free Plot");
  4798. plot.removePlayer(sell_plot, player.getName(player));
  4799. //Label Sign
  4800. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  4801. block.setSign(sign_loc, 1, concat("§2", text.number(snuvis)));
  4802. if(high == 256) {
  4803. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width)));
  4804. } else {
  4805. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width), " (Y:", text.number(high), ")"));
  4806. }
  4807. block.setSign(sign_loc, 3, text.number(player.getId(player)));
  4808. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  4809. goto("wait");
  4810. }
  4811. if(arg0 == "raise") {
  4812. location = entity.getLocation(player);
  4813. plot_list = plot.get(location);
  4814. amount = list.getSize(plot_list);
  4815. if(amount == 0) {
  4816. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4817. goto("wait");
  4818. }
  4819. plot = list.getIndex(plot_list, 0);
  4820. if(plot.isCity(plot)) {
  4821. msg.prefix(player, prefix_plot, "This plot is already a city.");
  4822. goto("wait");
  4823. }
  4824. if(!plot.isLeader(plot, player)) {
  4825. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  4826. goto("wait");
  4827. }
  4828. if(amount > 1) {
  4829. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  4830. goto("wait");
  4831. }
  4832. x1 = plot.getMinX(plot);
  4833. z1 = plot.getMinZ(plot);
  4834. x2 = plot.getMaxX(plot);
  4835. z2 = plot.getMaxZ(plot);
  4836. length = math.abs(x1 - x2) + 1;
  4837. width = math.abs(z1 - z2) + 1;
  4838. plot_size = length * width;
  4839. if(plot_size < 2500) {
  4840. msg.prefix(player, prefix_plot, "Your plot must be over 2500m2.");
  4841. goto("wait");
  4842. }
  4843. snuvis = 40960;
  4844. if(!hasEnoughMoney(player, snuvis)) {
  4845. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4846. goto("wait");
  4847. }
  4848. offerRank(player, "rank.major");
  4849. player.setPlotRaised(player, true);
  4850. subMoney(player, snuvis);
  4851. plot.setCity(plot, true);
  4852. msg.prefix(player, prefix_plot, concat("City created. Spent §6", text.number(snuvis), "§r snuvis."));
  4853. goto("wait");
  4854. }
  4855. if(arg0 == "leader") {
  4856. if(size < 2) {
  4857. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4858. goto("wait");
  4859. }
  4860. p_name = list.getIndex(args, 1);
  4861. p_uuid = player.getUuid(p_name);
  4862. if(p_uuid == null) {
  4863. msg.prefix(player, prefix_plot, "This player has never been online.");
  4864. goto("wait");
  4865. }
  4866. p_name = player.getName(p_uuid);
  4867. location = entity.getLocation(player);
  4868. world = loc.getWorld(location);
  4869. if(size == 2) {
  4870. plot_list = plot.get(location);
  4871. amount = list.getSize(plot_list);
  4872. if(amount == 0) {
  4873. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4874. goto("wait");
  4875. }
  4876. plot = list.getIndex(plot_list, 0);
  4877. if(amount > 1) {
  4878. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4879. for(i = 0; i < amount; i++) {
  4880. plot = list.getIndex(plot_list, i);
  4881. plot_id = plot.getId(plot);
  4882. 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)));
  4883. }
  4884. goto("wait");
  4885. }
  4886. } else {
  4887. if(size != 3) {
  4888. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4889. goto("wait");
  4890. }
  4891. plot_id = list.getIndex(args, 2);
  4892. plot = plot.getFromId(plot_id, world);
  4893. if(plot == null) {
  4894. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4895. goto("wait");
  4896. }
  4897. }
  4898. player_id = player.getId(player);
  4899. if(!perm.has(player, "plot.other")) {
  4900. if(!world.canUsePlots(world)) {
  4901. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4902. goto("wait");
  4903. }
  4904. if(!plot.isLeader(plot, player_id)) {
  4905. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4906. goto("wait");
  4907. }
  4908. if(player_name == p_name) {
  4909. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  4910. goto("wait");
  4911. }
  4912. }
  4913. p_id = player.getId(p_uuid);
  4914. if(plot.isLeader(plot, p_id)) {
  4915. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  4916. goto("wait");
  4917. }
  4918. old_leader = plot.getLeaderId(plot);
  4919. if(old_leader != null) {
  4920. plot.setMod(plot, old_leader);
  4921. }
  4922. plot.setLeader(plot, p_id);
  4923. plot.addPlayer(plot, p_name);
  4924. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot leader."));
  4925. goto("wait");
  4926. }
  4927. if(arg0 == "mod") {
  4928. if(size < 2) {
  4929. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4930. goto("wait");
  4931. }
  4932. p_name = list.getIndex(args, 1);
  4933. p_uuid = player.getUuid(p_name);
  4934. if(p_uuid == null) {
  4935. msg.prefix(player, prefix_plot, "This player has never been online.");
  4936. goto("wait");
  4937. }
  4938. p_name = player.getName(p_uuid);
  4939. location = entity.getLocation(player);
  4940. world = loc.getWorld(location);
  4941. if(size == 2) {
  4942. plot_list = plot.get(location);
  4943. amount = list.getSize(plot_list);
  4944. if(amount == 0) {
  4945. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4946. goto("wait");
  4947. }
  4948. plot = list.getIndex(plot_list, 0);
  4949. if(amount > 1) {
  4950. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4951. for(i = 0; i < amount; i++) {
  4952. plot = list.getIndex(plot_list, i);
  4953. plot_id = plot.getId(plot);
  4954. msg(player, text.click(" [§cSelect§r] ", concat("/plot mod ", p_name, " ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  4955. }
  4956. goto("wait");
  4957. }
  4958. } else {
  4959. if(size != 3) {
  4960. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4961. goto("wait");
  4962. }
  4963. plot_id = list.getIndex(args, 2);
  4964. plot = plot.getFromId(plot_id, world);
  4965. if(plot == null) {
  4966. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4967. goto("wait");
  4968. }
  4969. }
  4970. player_id = player.getId(player);
  4971. if(!perm.has(player, "plot.other")) {
  4972. if(!world.canUsePlots(world)) {
  4973. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4974. goto("wait");
  4975. }
  4976. if(!plot.isLeader(plot, player_id)) {
  4977. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4978. goto("wait");
  4979. }
  4980. }
  4981. p_id = player.getId(p_uuid);
  4982. if(plot.isLeader(plot, p_id)) {
  4983. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  4984. goto("wait");
  4985. }
  4986. if(plot.isMod(plot, p_id)) {
  4987. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  4988. goto("wait");
  4989. }
  4990. plot.setMod(plot, p_id);
  4991. plot.addPlayer(plot, p_name);
  4992. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot mod."));
  4993. goto("wait");
  4994. }
  4995. if(arg0 == "chest") {
  4996. if(size < 2) {
  4997. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4998. goto("wait");
  4999. }
  5000. p_name = list.getIndex(args, 1);
  5001. p_uuid = player.getUuid(p_name);
  5002. if(p_uuid == null) {
  5003. msg.prefix(player, prefix_plot, "This player has never been online.");
  5004. goto("wait");
  5005. }
  5006. p_name = player.getName(p_uuid);
  5007. location = entity.getLocation(player);
  5008. world = loc.getWorld(location);
  5009. if(size == 2) {
  5010. plot_list = plot.get(location);
  5011. amount = list.getSize(plot_list);
  5012. if(amount == 0) {
  5013. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5014. goto("wait");
  5015. }
  5016. plot = list.getIndex(plot_list, 0);
  5017. if(amount > 1) {
  5018. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5019. for(i = 0; i < amount; i++) {
  5020. plot = list.getIndex(plot_list, i);
  5021. plot_id = plot.getId(plot);
  5022. 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)));
  5023. }
  5024. goto("wait");
  5025. }
  5026. } else {
  5027. if(size != 3) {
  5028. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  5029. goto("wait");
  5030. }
  5031. plot_id = list.getIndex(args, 2);
  5032. plot = plot.getFromId(plot_id, world);
  5033. if(plot == null) {
  5034. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5035. goto("wait");
  5036. }
  5037. }
  5038. player_id = player.getId(player);
  5039. if(!perm.has(player, "plot.other")) {
  5040. if(!world.canUsePlots(world)) {
  5041. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5042. goto("wait");
  5043. }
  5044. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5045. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5046. goto("wait");
  5047. }
  5048. }
  5049. p_id = player.getId(p_uuid);
  5050. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  5051. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  5052. goto("wait");
  5053. }
  5054. if(plot.canOpenChests(plot, p_id)) {
  5055. msg.prefix(player, prefix_plot, "This player already can open chests.");
  5056. goto("wait");
  5057. }
  5058. plot.setChest(plot, p_id);
  5059. msg.prefix(player, prefix_plot, concat(p_name, " can now open chests."));
  5060. goto("wait");
  5061. }
  5062. if(arg0 == "remove") {
  5063. location = entity.getLocation(player);
  5064. world = loc.getWorld(location);
  5065. if(size == 1) {
  5066. plot_list = plot.get(location);
  5067. amount = list.getSize(plot_list);
  5068. if(amount == 0) {
  5069. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5070. goto("wait");
  5071. }
  5072. plot = list.getIndex(plot_list, 0);
  5073. if(amount > 1) {
  5074. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5075. for(i = 0; i < amount; i++) {
  5076. plot = list.getIndex(plot_list, i);
  5077. plot_id = plot.getId(plot);
  5078. 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)));
  5079. }
  5080. goto("wait");
  5081. }
  5082. } else {
  5083. if(size != 2) {
  5084. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  5085. goto("wait");
  5086. }
  5087. plot_id = list.getIndex(args, 1);
  5088. plot = plot.getFromId(plot_id, world);
  5089. if(plot == null) {
  5090. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5091. goto("wait");
  5092. }
  5093. }
  5094. if(!perm.has(player, "plot.other")) {
  5095. if(!world.canUsePlots(world)) {
  5096. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5097. goto("wait");
  5098. }
  5099. player_id = player.getId(player);
  5100. if(!plot.isLeader(plot, player_id)) {
  5101. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  5102. goto("wait");
  5103. }
  5104. }
  5105. if(plot.isCity(plot)) {
  5106. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  5107. iter = list.iterator(plot_list);
  5108. while(hasNext(iter)) {
  5109. sub_plot = next(iter);
  5110. plot.removeAllPlayers(sub_plot);
  5111. plot.remove(sub_plot, world);
  5112. }
  5113. }
  5114. plot.removeAllPlayers(plot);
  5115. plot.delMoveEvent(plot);
  5116. plot.remove(plot, world);
  5117. msg.prefix(player, prefix_plot, concat("Plot removed. #", text.number(plot.getId(plot)), " §6", plot.getName(plot)));
  5118. goto("wait");
  5119. }
  5120. if(arg0 == "expand") {
  5121. if(size < 2) {
  5122. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  5123. goto("wait");
  5124. }
  5125. location = entity.getLocation(player);
  5126. world = loc.getWorld(location);
  5127. anzahl = list.getIndex(args, 1);
  5128. if(!isDouble(anzahl) || anzahl < 0) {
  5129. msg.prefix(player, prefix_plot, "Positive number expected.");
  5130. goto("wait");
  5131. }
  5132. if(size == 2) {
  5133. yaw = loc.getYaw(location);
  5134. direction = getDirection(yaw);
  5135. if(direction == null) {
  5136. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  5137. goto("wait");
  5138. }
  5139. plot_list = plot.get(location);
  5140. amount = list.getSize(plot_list);
  5141. if(amount == 0) {
  5142. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5143. goto("wait");
  5144. }
  5145. plot = list.getIndex(plot_list, 0);
  5146. if(amount > 1) {
  5147. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5148. for(i = 0; i < amount; i++) {
  5149. plot = list.getIndex(plot_list, i);
  5150. plot_id = plot.getId(plot);
  5151. 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)));
  5152. }
  5153. goto("wait");
  5154. }
  5155. } else {
  5156. if(size != 4) {
  5157. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [<direction> <plot_id>]");
  5158. goto("wait");
  5159. }
  5160. direction = text.toLowerCase(list.getIndex(args, 2));
  5161. plot_id = list.getIndex(args, 3);
  5162. plot = plot.getFromId(plot_id, world);
  5163. if(plot == null) {
  5164. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5165. goto("wait");
  5166. }
  5167. }
  5168. if(plot.isSub(plot)) {
  5169. msg.prefix(player, prefix_plot, "Sub plots can't be expanded.");
  5170. goto("wait");
  5171. }
  5172. x1 = plot.getMinX(plot);
  5173. y1 = plot.getMinY(plot);
  5174. z1 = plot.getMinZ(plot);
  5175. x2 = plot.getMaxX(plot);
  5176. y2 = plot.getMaxY(plot);
  5177. z2 = plot.getMaxZ(plot);
  5178. if(direction == "east") {
  5179. old_x2 = x2;
  5180. x2 += anzahl;
  5181. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  5182. } elseif(direction == "south") {
  5183. old_z2 = z2;
  5184. z2 += anzahl;
  5185. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  5186. } elseif(direction == "west") {
  5187. old_x1 = x1;
  5188. x1 -= anzahl;
  5189. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  5190. } elseif(direction == "north") {
  5191. old_z1 = z1;
  5192. z1 -= anzahl;
  5193. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  5194. } else {
  5195. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  5196. goto("wait");
  5197. }
  5198. if(!perm.has(player, "plot.other")) {
  5199. if(list.getSize(list) > 0) {
  5200. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  5201. goto("wait");
  5202. }
  5203. if(!world.canUsePlots(world)) {
  5204. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5205. goto("wait");
  5206. }
  5207. player_id = player.getId(player);
  5208. if(!plot.isLeader(plot, player_id)) {
  5209. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  5210. goto("wait");
  5211. }
  5212. //Calc costs
  5213. length = math.abs(x1 - x2) + 1;
  5214. width = math.abs(z1 - z2) + 1;
  5215. snuvis = plot.calcCost(world, length, width);
  5216. if(!hasEnoughMoney(player, snuvis)) {
  5217. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  5218. goto("wait");
  5219. }
  5220. subMoney(player, snuvis);
  5221. expand_message = concat("The plot has been expanded. Spent §6", text.number(snuvis), "§r snuvis.");
  5222. if(!player.hasBigPlotCreated(player)) {
  5223. plot_size = length * width;
  5224. if(plot_size >= 900) {
  5225. offerRank(player, "rank.colonizer");
  5226. player.setBigPlotCreated(player, true);
  5227. }
  5228. }
  5229. } else {
  5230. expand_message = concat("The plot has been expanded.");
  5231. }
  5232. //Expand plot
  5233. gs_edge1 = loc.new(world, x1, y1, z1);
  5234. gs_edge2 = loc.new(world, x2, y2, z2);
  5235. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  5236. plot.delMoveEvent(plot);
  5237. plot.setMoveEvent(new_plot, world);
  5238. msg.prefix(player, prefix_plot, expand_message);
  5239. goto("wait");
  5240. }
  5241. if(arg0 == "share") {
  5242. if(size < 2) {
  5243. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  5244. goto("wait");
  5245. }
  5246. p_name = list.getIndex(args, 1);
  5247. p_uuid = player.getUuid(p_name);
  5248. if(p_uuid == null) {
  5249. msg.prefix(player, prefix_plot, "This player has never been online.");
  5250. goto("wait");
  5251. }
  5252. p_name = player.getName(p_uuid);
  5253. location = entity.getLocation(player);
  5254. world = loc.getWorld(location);
  5255. if(size == 2) {
  5256. plot_list = plot.get(location);
  5257. amount = list.getSize(plot_list);
  5258. if(amount == 0) {
  5259. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5260. goto("wait");
  5261. }
  5262. plot = list.getIndex(plot_list, 0);
  5263. if(amount > 1) {
  5264. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5265. for(i = 0; i < amount; i++) {
  5266. plot = list.getIndex(plot_list, i);
  5267. plot_id = plot.getId(plot);
  5268. 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)));
  5269. }
  5270. goto("wait");
  5271. }
  5272. } else {
  5273. if(size != 3) {
  5274. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  5275. goto("wait");
  5276. }
  5277. plot_id = list.getIndex(args, 2);
  5278. plot = plot.getFromId(plot_id, world);
  5279. if(plot == null) {
  5280. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5281. goto("wait");
  5282. }
  5283. }
  5284. if(!perm.has(player, "plot.other")) {
  5285. if(!world.canUsePlots(world)) {
  5286. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5287. goto("wait");
  5288. }
  5289. player_id = player.getId(player);
  5290. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5291. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5292. goto("wait");
  5293. }
  5294. }
  5295. plot.addPlayer(plot, p_name);
  5296. msg.prefix(player, prefix_plot, concat(p_name, " added to the plot."));
  5297. goto("wait");
  5298. }
  5299. if(arg0 == "kick") {
  5300. if(size < 2) {
  5301. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  5302. goto("wait");
  5303. }
  5304. p_name = list.getIndex(args, 1);
  5305. p_uuid = player.getUuid(p_name);
  5306. if(p_uuid == null) {
  5307. msg.prefix(player, prefix_plot, "This player has never been online.");
  5308. goto("wait");
  5309. }
  5310. p_name = player.getName(p_uuid);
  5311. location = entity.getLocation(player);
  5312. world = loc.getWorld(location);
  5313. if(size == 2) {
  5314. plot_list = plot.get(location);
  5315. amount = list.getSize(plot_list);
  5316. if(amount == 0) {
  5317. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5318. goto("wait");
  5319. }
  5320. plot = list.getIndex(plot_list, 0);
  5321. if(amount > 1) {
  5322. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5323. for(i = 0; i < amount; i++) {
  5324. plot = list.getIndex(plot_list, i);
  5325. plot_id = plot.getId(plot);
  5326. 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)));
  5327. }
  5328. goto("wait");
  5329. }
  5330. } else {
  5331. if(size != 3) {
  5332. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  5333. goto("wait");
  5334. }
  5335. plot_id = list.getIndex(args, 2);
  5336. plot = plot.getFromId(plot_id, world);
  5337. if(plot == null) {
  5338. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5339. goto("wait");
  5340. }
  5341. }
  5342. if(!perm.has(player, "plot.other")) {
  5343. if(!world.canUsePlots(world)) {
  5344. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5345. goto("wait");
  5346. }
  5347. player_id = player.getId(player);
  5348. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5349. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5350. goto("wait");
  5351. }
  5352. if(player_name == p_name) {
  5353. msg.prefix(player, prefix_plot, "You can't kick yourself.");
  5354. goto("wait");
  5355. }
  5356. p_id = player.getId(p_uuid);
  5357. if(plot.isLeader(plot, p_id)) {
  5358. msg.prefix(player, prefix_plot, "You can't kick the plot-leader.");
  5359. goto("wait");
  5360. }
  5361. }
  5362. plot.removePlayer(plot, p_name);
  5363. msg.prefix(player, prefix_plot, concat(p_name, " removed from this plot."));
  5364. goto("wait");
  5365. }
  5366. if(arg0 == "name") {
  5367. if(size < 2) {
  5368. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  5369. goto("wait");
  5370. }
  5371. location = entity.getLocation(player);
  5372. world = loc.getWorld(location);
  5373. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  5374. if(size == 2) {
  5375. plot_list = plot.get(location);
  5376. amount = list.getSize(plot_list);
  5377. if(amount == 0) {
  5378. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5379. goto("wait");
  5380. }
  5381. plot = list.getIndex(plot_list, 0);
  5382. name = list.getIndex(args, 1);
  5383. if(amount > 1) {
  5384. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5385. for(i = 0; i < amount; i++) {
  5386. plot = list.getIndex(plot_list, i);
  5387. plot_id = plot.getId(plot);
  5388. 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)));
  5389. }
  5390. goto("wait");
  5391. }
  5392. }
  5393. if(size > 2) {
  5394. plot_id = list.getIndex(args, 1);
  5395. if(isDouble(plot_id)) {
  5396. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  5397. plot = plot.getFromId(plot_id, world);
  5398. if(plot == null) {
  5399. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5400. goto("wait");
  5401. }
  5402. name = text.concatList(args, " ", 2, size - 1);
  5403. } else {
  5404. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  5405. name = text.concatList(args, " ", 1, size - 1);
  5406. plot_list = plot.get(location);
  5407. amount = list.getSize(plot_list);
  5408. if(amount == 0) {
  5409. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5410. goto("wait");
  5411. }
  5412. plot = list.getIndex(plot_list, 0);
  5413. if(amount > 1) {
  5414. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5415. for(i = 0; i < amount; i++) {
  5416. plot = list.getIndex(plot_list, i);
  5417. plot_id = plot.getId(plot);
  5418. 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)));
  5419. }
  5420. goto("wait");
  5421. }
  5422. }
  5423. }
  5424. if(!perm.has(player, "plot.other")) {
  5425. if(!world.canUsePlots(world)) {
  5426. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  5427. goto("wait");
  5428. }
  5429. player_id = player.getId(player);
  5430. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  5431. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5432. goto("wait");
  5433. }
  5434. }
  5435. plot.setName(plot, name);
  5436. msg.prefix(player, prefix_plot, concat("Plot renamed to ", name, "."));
  5437. goto("wait");
  5438. }
  5439. if(arg0 == "create" || arg0 == "create3d") {
  5440. player_id = player.getId(player);
  5441. loc1 = map.get(plotpos1, player_id);
  5442. loc2 = map.get(plotpos2, player_id);
  5443. if(loc1 == null || loc2 == null) {
  5444. msg.prefix(player, prefix_plot, "No corner points set.");
  5445. goto("wait");
  5446. }
  5447. world1 = loc.getWorld(loc1);
  5448. if(world1 != loc.getWorld(loc2)) {
  5449. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  5450. goto("wait");
  5451. }
  5452. x1 = loc.getX(loc1);
  5453. y1 = loc.getY(loc1);
  5454. z1 = loc.getZ(loc1);
  5455. x2 = loc.getX(loc2);
  5456. y2 = loc.getY(loc2);
  5457. z2 = loc.getZ(loc2);
  5458. if(arg0 == "create") {
  5459. loc.setY(loc1, 0);
  5460. loc.setY(loc2, 255);
  5461. }
  5462. create_message = "Plot created.";
  5463. sub_plot = false;
  5464. if(!perm.has(player, "plot.other")) {
  5465. world_name = world.getName(world1);
  5466. if(!world.canUsePlots(world1)) {
  5467. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  5468. goto("wait");
  5469. }
  5470. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  5471. if(list.getSize(list) > 0) {
  5472. city_plot = list.getIndex(list, 0);
  5473. if(plot.isCity(city_plot)) {
  5474. if(!plot.isLeader(city_plot, player_id) && !plot.isMod(city_plot, player_id)) {
  5475. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  5476. goto("wait");
  5477. }
  5478. city_id = plot.getId(city_plot);
  5479. if(!loc.hasPlotId(loc1, city_id)) {
  5480. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  5481. goto("wait");
  5482. }
  5483. if(!loc.hasPlotId(loc2, city_id)) {
  5484. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  5485. goto("wait");
  5486. }
  5487. sub_plot = true;
  5488. } else {
  5489. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  5490. goto("wait");
  5491. }
  5492. }
  5493. if(!sub_plot) {
  5494. //Calc costs
  5495. length = math.abs(x1 - x2) + 1;
  5496. width = math.abs(z1 - z2) + 1;
  5497. if(length < 3 || width < 3) {
  5498. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  5499. goto("wait");
  5500. }
  5501. snuvis = plot.calcCost(world1, length, width);
  5502. free_plot_used = player.usedHisFreePlot(player_id);
  5503. if(!free_plot_used && world_name != "creative") {
  5504. snuvis -= plot.calcCost(world1, 16, 16);
  5505. if(snuvis < 0) {
  5506. snuvis = 0;
  5507. }
  5508. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  5509. }
  5510. if(!hasEnoughMoney(player, snuvis)) {
  5511. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  5512. goto("wait");
  5513. }
  5514. create_message = concat("Plot created. Spent §6", text.number(snuvis), "§r snuvis.");
  5515. subMoney(player, snuvis);
  5516. if(!free_plot_used && world_name != "creative") {
  5517. player.setUsedFreePlot(player_id, true);
  5518. offerRank(player, "rank.settler");
  5519. }
  5520. if(!player.hasBigPlotCreated(player)) {
  5521. plot_size = length * width;
  5522. if(plot_size >= 900) {
  5523. offerRank(player, "rank.colonizer");
  5524. player.setBigPlotCreated(player, true);
  5525. }
  5526. }
  5527. }
  5528. }
  5529. //Create plot
  5530. map.remove(plotpos1, player_id);
  5531. map.remove(plotpos2, player_id);
  5532. plot = plot.add(loc1, loc2);
  5533. if(sub_plot) {
  5534. plot.setSub(plot, true);
  5535. }
  5536. plot.setMoveEvent(plot, world1);
  5537. plot.setName(plot, concat(player_name, "'s plot"));
  5538. plot.addPlayer(plot, player_name);
  5539. plot.setLeader(plot, player_id);
  5540. msg.prefix(player, prefix_plot, create_message);
  5541. goto("wait");
  5542. }
  5543. if(arg0 == "pos1" || arg0 == "pos2") {
  5544. loc = entity.getLocation(player);
  5545. loc = getBlockLocation(loc);
  5546. player_id = player.getId(player);
  5547. if(arg0 == "pos1") {
  5548. map.add(plotpos1, player_id, loc);
  5549. pos_string = "Pos1";
  5550. } elseif(arg0 == "pos2") {
  5551. map.add(plotpos2, player_id, loc);
  5552. pos_string = "Pos2";
  5553. }
  5554. x = text.number(loc.getX(loc));
  5555. y = text.number(loc.getY(loc));
  5556. z = text.number(loc.getZ(loc));
  5557. msg.prefix(player, prefix_plot, concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  5558. loc1 = map.get(plotpos1, player_id);
  5559. loc2 = map.get(plotpos2, player_id);
  5560. if(loc1 != null && loc2 != null) {
  5561. world1 = loc.getWorld(loc1);
  5562. snuvis = plot.calcCost(world1, loc1, loc2);
  5563. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  5564. snuvis -= plot.calcCost(world1, 16, 16);
  5565. if(snuvis < 0) {
  5566. snuvis = 0;
  5567. }
  5568. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  5569. }
  5570. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  5571. snuvis = 0;
  5572. }
  5573. msg.prefix(player, prefix_plot, concat("This plot will cost §6", text.number(snuvis), "§r snuvis."));
  5574. }
  5575. goto("wait");
  5576. }
  5577. if(arg0 == "flags") {
  5578. if(!perm.has(player, "plot.moreinfo")) {
  5579. perm.no(player, "plot.moreinfo");
  5580. goto("wait");
  5581. }
  5582. if(size < 3 || size > 4) {
  5583. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  5584. goto("wait");
  5585. }
  5586. flags = list.getIndex(args, 1);
  5587. if(!isDouble(flags) || flags < 0) {
  5588. msg.prefix(player, prefix_commands, "Positive number expected.");
  5589. goto("wait");
  5590. }
  5591. boolean = list.getIndex(args, 2);
  5592. if(!(boolean == true || boolean == false)) {
  5593. msg.prefix(player, prefix_commands, "Boolean expected.");
  5594. goto("wait");
  5595. }
  5596. location = entity.getLocation(player);
  5597. world = loc.getWorld(location);
  5598. if(size == 3) {
  5599. plot_list = plot.get(location);
  5600. amount = list.getSize(plot_list);
  5601. if(amount == 0) {
  5602. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5603. goto("wait");
  5604. }
  5605. plot = list.getIndex(plot_list, 0);
  5606. if(amount > 1) {
  5607. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5608. for(i = 0; i < amount; i++) {
  5609. plot = list.getIndex(plot_list, i);
  5610. plot_id = plot.getId(plot);
  5611. x = loc.getX(location);
  5612. y = loc.getY(location);
  5613. z = loc.getZ(location);
  5614. 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)));
  5615. }
  5616. goto("wait");
  5617. }
  5618. } else {
  5619. plot_id = list.getIndex(args, 3);
  5620. plot = plot.getFromId(plot_id, world);
  5621. if(plot == null) {
  5622. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5623. goto("wait");
  5624. }
  5625. }
  5626. flags_list = list.new();
  5627. temp_flags = 0;
  5628. if(flags >= 512) {
  5629. list.add(flags_list, "SUB_PLOT_FLAG");
  5630. temp_flags += 512;
  5631. }
  5632. if(flags >= 256) {
  5633. list.add(flags_list, "FREE_FLAG");
  5634. temp_flags += 256;
  5635. }
  5636. if(flags >= 128) {
  5637. list.add(flags_list, "CITY_FLAG");
  5638. temp_flags += 128;
  5639. }
  5640. if(flags >= 64) {
  5641. list.add(flags_list, "EXPLOSION_FLAG");
  5642. temp_flags += 64;
  5643. }
  5644. if(flags >= 32) {
  5645. list.add(flags_list, "ENTITY_INTERACT_FLAG");
  5646. temp_flags += 32;
  5647. }
  5648. if(flags >= 16) {
  5649. list.add(flags_list, "BLOCK_INTERACT_FLAG");
  5650. temp_flags += 16;
  5651. }
  5652. if(flags >= 8) {
  5653. list.add(flags_list, "HIT_AMBIENT_FLAG");
  5654. temp_flags += 8;
  5655. }
  5656. if(flags >= 4) {
  5657. list.add(flags_list, "BUCKET_FLAG");
  5658. temp_flags += 4;
  5659. }
  5660. if(flags >= 2) {
  5661. list.add(flags_list, "BREAK_FLAG");
  5662. temp_flags += 2;
  5663. }
  5664. if(flags >= 1) {
  5665. list.add(flags_list, "PLACE_FLAG");
  5666. temp_flags += 1;
  5667. }
  5668. plot.setFlags(plot, flags, boolean);
  5669. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  5670. goto("wait");
  5671. }
  5672. if(arg0 == "list") {
  5673. if(size == 1) {
  5674. p_name = player.getName(player);
  5675. } else {
  5676. if(!perm.has(player, "plot.moreinfo")) {
  5677. perm.no(player, "plot.moreinfo");
  5678. goto("wait");
  5679. }
  5680. p_name = list.getIndex(args, 1);
  5681. }
  5682. p_uuid = player.getUuid(p_name);
  5683. if(p_uuid == null) {
  5684. msg.prefix(player, prefix_plot, "This player has never been online.");
  5685. goto("wait");
  5686. }
  5687. p_name = player.getName(p_uuid);
  5688. msg.prefix(player, prefix_commands, concat(p_name, "'s plots:"));
  5689. world = loc.getWorld(entity.getLocation(player));
  5690. iter = plot.iterator(world, p_uuid);
  5691. while(hasNext(iter)) {
  5692. plot = next(iter);
  5693. msg(player, concat(" - #", text.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5694. }
  5695. goto("wait");
  5696. }
  5697. if(arg0 == "listall") {
  5698. if(!perm.has(player, "plot.moreinfo")) {
  5699. perm.no(player, "plot.moreinfo");
  5700. goto("wait");
  5701. }
  5702. if(size != 1) {
  5703. msg.prefix(player, prefix_commands, "/plot listall");
  5704. goto("wait");
  5705. }
  5706. world = loc.getWorld(entity.getLocation(player));
  5707. msg.prefix(player, prefix_commands, concat("All plots in this world: ", world.getName(world)));
  5708. iterator = plot.iterator(world);
  5709. while(hasNext(iterator)) {
  5710. plot = next(iterator);
  5711. plot_id = plot.getId(plot);
  5712. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  5713. }
  5714. goto("wait");
  5715. }
  5716. if(arg0 == "moreinfo" || arg0 == "mi") {
  5717. if(!perm.has(player, "plot.moreinfo")) {
  5718. perm.no(player, "plot.moreinfo");
  5719. goto("wait");
  5720. }
  5721. location = entity.getLocation(player);
  5722. world = loc.getWorld(location);
  5723. if(size == 1) {
  5724. plot_list = plot.get(location);
  5725. amount = list.getSize(plot_list);
  5726. if(amount == 0) {
  5727. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  5728. goto("wait");
  5729. }
  5730. plot = list.getIndex(plot_list, 0);
  5731. if(amount > 1) {
  5732. msg.prefix(player, prefix_plot, "Multiple plots present:");
  5733. for(i = 0; i < amount; i++) {
  5734. plot = list.getIndex(plot_list, i);
  5735. plot_id = plot.getId(plot);
  5736. msg(player, text.click(" [§cSelect§r] ", concat("/plot moreinfo ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5737. }
  5738. goto("wait");
  5739. }
  5740. } else {
  5741. if(size != 2) {
  5742. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  5743. goto("wait");
  5744. }
  5745. plot_id = list.getIndex(args, 1);
  5746. plot = plot.getFromId(plot_id, world);
  5747. if(plot == null) {
  5748. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  5749. goto("wait");
  5750. }
  5751. }
  5752. owners = "";
  5753. owners_list = plot.getOwners(plot);
  5754. copy_list = list.copy(owners_list);
  5755. plot_id = plot.getId(plot);
  5756. msg.prefix(player, prefix_plot, concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5757. msg(player, " §dWorld: §r", world.getName(world));
  5758. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5759. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5760. leader_name = plot.getLeaderName(plot);
  5761. if(leader_name == "") {
  5762. leader_name = "-";
  5763. }
  5764. msg(player, " §dLeader: §r", leader_name);
  5765. list.remove(copy_list, player.getUuid(leader_name));
  5766. mods_list = plot.getMods(plot);
  5767. mods_amount = list.getSize(mods_list);
  5768. if(mods_amount == 0) {
  5769. mods_string = "-";
  5770. } else {
  5771. iter = list.iterator(mods_list);
  5772. mods_string = "";
  5773. while(hasNext(iter)) {
  5774. p_name = player.getNameFromId(next(iter));
  5775. p_uuid = player.getUuid(p_name);
  5776. list.remove(copy_list, p_uuid);
  5777. if(mods_string == "") {
  5778. mods_string = p_name;
  5779. } else {
  5780. mods_string = concat(mods_string, " / ", p_name);
  5781. }
  5782. }
  5783. }
  5784. msg(player, " §dMods: §r", mods_string);
  5785. members_amount = list.getSize(copy_list);
  5786. if(members_amount == 0) {
  5787. members_string = "-";
  5788. } else {
  5789. iter = list.iterator(copy_list);
  5790. members_string = "";
  5791. while(hasNext(iter)) {
  5792. p_name = player.getName(next(iter));
  5793. if(members_string == "") {
  5794. members_string = p_name;
  5795. } else {
  5796. members_string = concat(members_string, " / ", p_name);
  5797. }
  5798. }
  5799. }
  5800. msg(player, " §dMembers: §r", members_string);
  5801. chests_list = plot.getChestRanks(plot);
  5802. chests_amount = list.getSize(chests_list);
  5803. if(chests_amount == 0) {
  5804. chests_string = "-";
  5805. } else {
  5806. iter = list.iterator(chests_list);
  5807. chests_string = "";
  5808. while(hasNext(iter)) {
  5809. p_name = player.getNameFromId(next(iter));
  5810. if(chests_string == "") {
  5811. chests_string = p_name;
  5812. } else {
  5813. chests_string = concat(chests_string, " / ", p_name);
  5814. }
  5815. }
  5816. }
  5817. msg(player, " §dOnly chest: §r", chests_string);
  5818. flags = plot.getFlags(plot);
  5819. flags_true = list.new();
  5820. flags_false = list.new();
  5821. array = array.new(2);
  5822. array[0] = 512;
  5823. array[1] = "SUB_PLOT_FLAG";
  5824. if(flags >= 512) {
  5825. list.add(flags_true, array);
  5826. flags -= 512;
  5827. } else {
  5828. list.add(flags_false, array);
  5829. }
  5830. array = array.new(2);
  5831. array[0] = 256;
  5832. array[1] = "FREE_FLAG";
  5833. if(flags >= 256) {
  5834. list.add(flags_true, array);
  5835. flags -= 256;
  5836. } else {
  5837. list.add(flags_false, array);
  5838. }
  5839. array = array.new(2);
  5840. array[0] = 128;
  5841. array[1] = "CITY_FLAG";
  5842. if(flags >= 128) {
  5843. list.add(flags_true, array);
  5844. flags -= 128;
  5845. } else {
  5846. list.add(flags_false, array);
  5847. }
  5848. array = array.new(2);
  5849. array[0] = 64;
  5850. array[1] = "EXPLOSION_FLAG";
  5851. if(flags >= 64) {
  5852. list.add(flags_true, array);
  5853. flags -= 64;
  5854. } else {
  5855. list.add(flags_false, array);
  5856. }
  5857. array = array.new(2);
  5858. array[0] = 32;
  5859. array[1] = "ENTITY_INTERACT_FLAG";
  5860. if(flags >= 32) {
  5861. list.add(flags_true, array);
  5862. flags -= 32;
  5863. } else {
  5864. list.add(flags_false, array);
  5865. }
  5866. array = array.new(2);
  5867. array[0] = 16;
  5868. array[1] = "BLOCK_INTERACT_FLAG";
  5869. if(flags >= 16) {
  5870. list.add(flags_true, array);
  5871. flags -= 16;
  5872. } else {
  5873. list.add(flags_false, array);
  5874. }
  5875. array = array.new(2);
  5876. array[0] = 8;
  5877. array[1] = "HIT_AMBIENT_FLAG";
  5878. if(flags >= 8) {
  5879. list.add(flags_true, array);
  5880. flags -= 8;
  5881. } else {
  5882. list.add(flags_false, array);
  5883. }
  5884. array = array.new(2);
  5885. array[0] = 4;
  5886. array[1] = "BUCKET_FLAG";
  5887. if(flags >= 4) {
  5888. list.add(flags_true, array);
  5889. flags -= 4;
  5890. } else {
  5891. list.add(flags_false, array);
  5892. }
  5893. array = array.new(2);
  5894. array[0] = 2;
  5895. array[1] = "BREAK_FLAG";
  5896. if(flags >= 2) {
  5897. list.add(flags_true, array);
  5898. flags -= 2;
  5899. } else {
  5900. list.add(flags_false, array);
  5901. }
  5902. array = array.new(2);
  5903. array[0] = 1;
  5904. array[1] = "PLACE_FLAG";
  5905. if(flags >= 1) {
  5906. list.add(flags_true, array);
  5907. } else {
  5908. list.add(flags_false, array);
  5909. }
  5910. x = loc.getX(location);
  5911. y = loc.getY(location);
  5912. z = loc.getZ(location);
  5913. msg(player, " §dFlags true:");
  5914. iter = list.iterator(flags_true);
  5915. while(hasNext(iter)) {
  5916. array = next(iter);
  5917. flag_number = array[0];
  5918. flag_name = array[1];
  5919. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " false ", plot_id)));
  5920. }
  5921. msg(player, " §dFlags false:");
  5922. iter = list.iterator(flags_false);
  5923. while(hasNext(iter)) {
  5924. array = next(iter);
  5925. flag_number = array[0];
  5926. flag_name = array[1];
  5927. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " true ", plot_id)));
  5928. }
  5929. goto("wait");
  5930. }
  5931. if(arg0 == "info" || arg0 == "i") {
  5932. location = entity.getLocation(player);
  5933. list = plot.get(location);
  5934. world = loc.getWorld(location);
  5935. size = list.getSize(list);
  5936. if(size == 0) {
  5937. msg.prefix(player, prefix_plot, "No plots found.");
  5938. goto("wait");
  5939. }
  5940. if(size == 1) {
  5941. msg.prefix(player, prefix_plot, concat(text.number(size), " plot found:"));
  5942. } else {
  5943. msg.prefix(player, prefix_plot, concat(text.number(size), " plots found:"));
  5944. }
  5945. for(i = 0; i < size; i++) {
  5946. plot = list.getIndex(list, i);
  5947. plot_id = plot.getId(plot);
  5948. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5949. owners_list = plot.getOwners(plot);
  5950. copy_list = list.copy(owners_list);
  5951. plot_id = plot.getId(plot);
  5952. msg(player, " §dWorld: §r", world.getName(world));
  5953. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5954. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5955. leader_name = plot.getLeaderName(plot);
  5956. if(leader_name == "") {
  5957. leader_name = "-";
  5958. }
  5959. msg(player, " §dLeader: §r", leader_name);
  5960. list.remove(copy_list, player.getUuid(leader_name));
  5961. mods_list = plot.getMods(plot);
  5962. mods_amount = list.getSize(mods_list);
  5963. if(mods_amount == 0) {
  5964. mods_string = "-";
  5965. } else {
  5966. iter = list.iterator(mods_list);
  5967. mods_string = "";
  5968. while(hasNext(iter)) {
  5969. p_name = player.getNameFromId(next(iter));
  5970. p_uuid = player.getUuid(p_name);
  5971. list.remove(copy_list, p_uuid);
  5972. if(mods_string == "") {
  5973. mods_string = p_name;
  5974. } else {
  5975. mods_string = concat(mods_string, " / ", p_name);
  5976. }
  5977. }
  5978. }
  5979. msg(player, " §dMods: §r", mods_string);
  5980. members_amount = list.getSize(copy_list);
  5981. if(members_amount == 0) {
  5982. members_string = "-";
  5983. } else {
  5984. iter = list.iterator(copy_list);
  5985. members_string = "";
  5986. while(hasNext(iter)) {
  5987. p_name = player.getName(next(iter));
  5988. if(members_string == "") {
  5989. members_string = p_name;
  5990. } else {
  5991. members_string = concat(members_string, " / ", p_name);
  5992. }
  5993. }
  5994. }
  5995. msg(player, " §dMembers: §r", members_string);
  5996. chests_list = plot.getChestRanks(plot);
  5997. chests_amount = list.getSize(chests_list);
  5998. if(chests_amount == 0) {
  5999. chests_string = "-";
  6000. } else {
  6001. iter = list.iterator(chests_list);
  6002. chests_string = "";
  6003. while(hasNext(iter)) {
  6004. p_name = player.getNameFromId(next(iter));
  6005. if(chests_string == "") {
  6006. chests_string = p_name;
  6007. } else {
  6008. chests_string = concat(chests_string, " / ", p_name);
  6009. }
  6010. }
  6011. }
  6012. msg(player, " §dOnly chest: §r", chests_string);
  6013. }
  6014. goto("wait");
  6015. }
  6016. goto("plothelp");
  6017. @stopadventure
  6018. removeAdventureDisplay(player);
  6019. player.setAdventure(player, false);
  6020. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  6021. goto("wait");
  6022. @speed
  6023. if(size < 1 || size > 2) {
  6024. if(perm.has(player, "speed.other")) {
  6025. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  6026. } else {
  6027. msg.prefix(player, prefix_commands, "/speed <1-10>");
  6028. }
  6029. goto("wait");
  6030. }
  6031. speed = list.getIndex(args, 0);
  6032. if(!isDouble(speed)) {
  6033. msg.prefix(player, prefix_commands, "Number expected.");
  6034. goto("wait");
  6035. }
  6036. if(speed < 1) {
  6037. speed = 1;
  6038. }
  6039. if(speed > 10) {
  6040. speed = 10;
  6041. }
  6042. if(size == 2) {
  6043. if(!perm.has(player, "speed.other")) {
  6044. perm.no(player, "speed.other");
  6045. goto("wait");
  6046. }
  6047. affectedname = list.getIndex(args, 1);
  6048. affectedplayer = read.player(affectedname);
  6049. if(affectedplayer == null) {
  6050. msg.prefix(player, prefix_commands, "This player is not online.");
  6051. goto("wait");
  6052. }
  6053. }
  6054. player.setSpeed(affectedplayer, speed);
  6055. msg.prefix(affectedplayer, prefix_commands, concat("Set your speed to ", text.number(speed), "."));
  6056. if(affectedplayer != player) {
  6057. affectedname = player.getName(affectedplayer);
  6058. msg.prefix(player, prefix_commands, concat(affectedname, " set your speed to ", text.number(speed), "."));
  6059. }
  6060. goto("wait");
  6061. @butcher
  6062. loc = entity.getLocation(player);
  6063. world = loc.getWorld(loc);
  6064. list = world.getEntities(world);
  6065. size = list.getSize(list);
  6066. killed = 0;
  6067. for(i = 0; i < size; i++) {
  6068. element = list.getIndex(list, i);
  6069. if(isLiving(element)) {
  6070. entity_type = entity.getType(element);
  6071. if(set.contains(butcher_set, entity_type)) {
  6072. entity.remove(element);
  6073. killed++;
  6074. }
  6075. }
  6076. }
  6077. msg.prefix(player, prefix_commands, concat(text.number(killed), " mobs killed."));
  6078. goto("wait");
  6079. @enchant
  6080. if(size != 2) {
  6081. msg.prefix(player, prefix_commands, "/enchant <enchantment> <level>");
  6082. goto("wait");
  6083. }
  6084. ench_string = list.getIndex(args, 0);
  6085. ench = enchantment.get(ench_string);
  6086. if(ench == null) {
  6087. msg.prefix(player, prefix_commands, "Unknown enchantment");
  6088. goto("wait");
  6089. }
  6090. lvl = list.getIndex(args, 1);
  6091. if(!isDouble(lvl) || lvl < 1 || lvl > 100) {
  6092. msg.prefix(sender, prefix_commands, "Number greater than 0 and less than 101 expected.");
  6093. goto("wait");
  6094. }
  6095. item = living.getHand(player);
  6096. if(item.getType(item) == "minecraft:air") {
  6097. msg.prefix(sender, prefix_commands, "You need to hold an item in your hand.");
  6098. goto("wait");
  6099. }
  6100. enchantment.add(ench, item, lvl);
  6101. goto("wait");
  6102. @enderchest
  6103. if(size < 1 || size > 2) {
  6104. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  6105. goto("wait");
  6106. }
  6107. if(size == 1) {
  6108. from_name = list.getIndex(args, 0);
  6109. }
  6110. elseif(size == 2) {
  6111. affectedname = list.getIndex(args, 0);
  6112. from_name = list.getIndex(args, 1);
  6113. affectedplayer = read.player(affectedname);
  6114. if(affectedplayer == null) {
  6115. msg.prefix(player, prefix_commands, "This player is not online.");
  6116. goto("wait");
  6117. }
  6118. }
  6119. from_player = read.player(from_name);
  6120. if(from_player == null) {
  6121. msg.prefix(player, prefix_commands, "This player is not online.");
  6122. goto("wait");
  6123. }
  6124. player.openEnderchest(affectedplayer, from_player, concat("Enderchest von ", from_name));
  6125. goto("wait");
  6126. @gamemode
  6127. if(size < 1 || size > 2) {
  6128. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  6129. goto("wait");
  6130. }
  6131. if(size == 2) {
  6132. if(!perm.has(player, "gamemode.other")) {
  6133. perm.no(player, "gamemode.other");
  6134. goto("wait");
  6135. }
  6136. affectedname = list.getIndex(args, 1);
  6137. affectedplayer = read.player(affectedname);
  6138. if(affectedplayer == null) {
  6139. msg.prefix(player, prefix_commands, "This player is not online.");
  6140. goto("wait");
  6141. }
  6142. }
  6143. mode = list.getIndex(args, 0);
  6144. if(isDouble(mode)) {
  6145. mode = text.number(mode);
  6146. } else {
  6147. mode = text.toLowerCase(mode);
  6148. }
  6149. if(mode == "s" || mode == "0" || mode == "survival") {
  6150. mode = "survival";
  6151. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  6152. mode = "creative";
  6153. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  6154. mode = "adventure";
  6155. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  6156. mode = "spectator";
  6157. } else {
  6158. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  6159. goto("wait");
  6160. }
  6161. player.setGamemode(affectedplayer, mode);
  6162. if(affectedplayer != player) {
  6163. affectedname = player.getName(affectedplayer);
  6164. msg.prefix(player, prefix_commands, concat("Gamemode of ", affectedname, " set to ", mode, "."));
  6165. }
  6166. msg.prefix(affectedplayer, prefix_commands, concat("Set your gamemode to ", mode, "."));
  6167. goto("wait");
  6168. @home
  6169. if(size == 0) {
  6170. @homesyntax
  6171. msg.prefix(player, prefix_commands, "/home ...");
  6172. msg(player, "§6 - set <name> §rSets a home");
  6173. msg(player, "§6 - delete <name> §rDeletes a home");
  6174. if(perm.has(player, "home.other")) {
  6175. msg(player, "§6 - list [player] §rLists all homes");
  6176. msg(player, "§6 - <name> [player] §rTeleports to a home");
  6177. } else {
  6178. msg(player, "§6 - list §rLists your homes");
  6179. msg(player, "§6 - <name> §rTeleports to your home");
  6180. }
  6181. goto("wait");
  6182. }
  6183. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6184. if(arg0 == "del" || arg0 == "delete") {
  6185. if(size < 2) {
  6186. goto("homesyntax");
  6187. }
  6188. player_id = player.getId(player);
  6189. name = text.toLowerCase(list.getIndex(args, 1));
  6190. if(!home.exists(player_id, name)) {
  6191. msg.prefix(player, prefix_commands, concat("Home ", name, "doesn't exist."));
  6192. goto("wait");
  6193. }
  6194. home.delete(player_id, name);
  6195. msg.prefix(player, prefix_commands, concat("Home ", name, " deleted."));
  6196. goto("wait");
  6197. }
  6198. if(arg0 == "list") {
  6199. affecteduuid = player.getUuid(affectedname);
  6200. if(size == 2) {
  6201. if(!perm.has(player, "home.other")) {
  6202. perm.no(player, "home.other");
  6203. goto("wait");
  6204. }
  6205. affectedname = text.toLowerCase(list.getIndex(args, 1));
  6206. affecteduuid = player.getUuid(affectedname);
  6207. if(affecteduuid == null) {
  6208. msg.prefix(player, prefix_commands, "This player has never been online.");
  6209. goto("wait");
  6210. }
  6211. }
  6212. id = player.getId(affecteduuid);
  6213. homes_list = home.getList(id);
  6214. home_amount = list.getSize(homes_list);
  6215. if(home_amount == 0) {
  6216. msg.prefix(player, prefix_commands, "No homes existing.");
  6217. } else {
  6218. msg.prefix(player, prefix_commands, concat("Homes of ", affectedname, ":"));
  6219. for(i = 0; i < home_amount; i++) {
  6220. msg(player, concat("§6 - §r", list.getIndex(homes_list, i)));
  6221. }
  6222. }
  6223. goto("wait");
  6224. }
  6225. location = entity.getLocation(player);
  6226. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6227. if(!world.isSurvName(world_name)) {
  6228. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  6229. goto("wait");
  6230. }
  6231. if(arg0 == "set") {
  6232. if(size < 2) {
  6233. goto("homesyntax");
  6234. }
  6235. player_id = player.getId(player);
  6236. homes_list = home.getList(player_id);
  6237. home_amount = list.getSize(homes_list);
  6238. if(perm.has(player, "isAdmin")) {
  6239. max_homes = 100;
  6240. } elseif(perm.has(player, "isMod")) {
  6241. max_homes = 40;
  6242. } elseif(perm.has(player, "isTeam")) {
  6243. max_homes = 20;
  6244. } elseif(perm.has(player, "canTP")) {
  6245. max_homes = 10;
  6246. } else {
  6247. max_homes = 5;
  6248. }
  6249. if(home_amount >= max_homes) {
  6250. msg.prefix(player, prefix_commands, concat("You can only set ", text.number(max_homes), " homes."));
  6251. goto("wait");
  6252. }
  6253. name = text.toLowerCase(list.getIndex(args, 1));
  6254. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  6255. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  6256. goto("wait");
  6257. }
  6258. if(!text.onlyletters(name)) {
  6259. msg.prefix(player, prefix_commands, "Only letters allowed.");
  6260. goto("wait");
  6261. }
  6262. if(text.length(name) > 20) {
  6263. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  6264. goto("wait");
  6265. }
  6266. if(home.exists(player_id, name)) {
  6267. msg.prefix(player, prefix_commands, concat("Home ", name, " already exists."));
  6268. goto("wait");
  6269. }
  6270. home.set(player_id, name, location);
  6271. msg.prefix(player, prefix_commands, concat("Home ", name, " set."));
  6272. goto("wait");
  6273. }
  6274. //Teleportation
  6275. if(size == 2) {
  6276. affectedname = text.toLowerCase(list.getIndex(args, 1));
  6277. }
  6278. affecteduuid = player.getUuid(affectedname);
  6279. if(affecteduuid == null) {
  6280. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  6281. goto("wait");
  6282. }
  6283. player_id = player.getID(affecteduuid);
  6284. location = home.getLocation(player_id, arg0);
  6285. if(location == null) {
  6286. msg.prefix(player, prefix_commands, "Home doesn't exist."); //oder die welt ist nicht geladen
  6287. goto("wait");
  6288. }
  6289. player.teleport(player, location, true);
  6290. goto("wait");
  6291. @tpa
  6292. if(size != 1) {
  6293. msg.prefix(player, prefix_commands, "/tpa <player>");
  6294. goto("wait");
  6295. }
  6296. p_name = list.getIndex(args, 0);
  6297. p_uuid = player.getUuid(p_name);
  6298. if(p_uuid == null) {
  6299. msg.prefix(player, prefix_commands, "This player has never been online.");
  6300. goto("wait");
  6301. }
  6302. p_name = player.getName(p_uuid);
  6303. p = read.player(p_name);
  6304. if(p == null) {
  6305. msg.prefix(player, prefix_commands, "This player is not online.");
  6306. goto("wait");
  6307. }
  6308. if(!player.doesAcceptTpaRequests(p)) {
  6309. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  6310. goto("wait");
  6311. }
  6312. if(!player.canTeleport(p)) {
  6313. msg.prefix(player, prefix_commands, "This player can't teleport now.");
  6314. goto("wait");
  6315. }
  6316. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6317. if(world.isGamesName(world_name)) {
  6318. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6319. goto("wait");
  6320. }
  6321. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6322. if(world.isGamesName(world_name)) {
  6323. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6324. goto("wait");
  6325. }
  6326. addTpaRequest(player.getUuid(player), p_uuid);
  6327. msg(player, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  6328. msg(p, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccept ", player_name)));
  6329. goto("wait");
  6330. @tpahere
  6331. if(size != 1) {
  6332. msg.prefix(player, prefix_commands, "/tpahere <player>");
  6333. goto("wait");
  6334. }
  6335. p_name = list.getIndex(args, 0);
  6336. p_uuid = player.getUuid(p_name);
  6337. if(p_uuid == null) {
  6338. msg.prefix(player, prefix_commands, "This player has never been online.");
  6339. goto("wait");
  6340. }
  6341. p_name = player.getName(p_uuid);
  6342. p = read.player(p_name);
  6343. if(p == null) {
  6344. msg.prefix(player, prefix_commands, "This player is not online.");
  6345. goto("wait");
  6346. }
  6347. if(!player.canTeleport(p)) {
  6348. msg.prefix(player, prefix_commands, "This player can't teleport now.");
  6349. goto("wait");
  6350. }
  6351. if(!player.doesAcceptTpaRequests(p)) {
  6352. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  6353. goto("wait");
  6354. }
  6355. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6356. if(world.isGamesName(world_name)) {
  6357. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to this world."));
  6358. goto("wait");
  6359. }
  6360. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6361. if(world.isGamesName(world_name)) {
  6362. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  6363. goto("wait");
  6364. }
  6365. addTpaRequest(p_uuid, player.getUuid(player));
  6366. msg(player, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  6367. msg(p, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccepthere ", player_name)));
  6368. goto("wait");
  6369. @tpaccept
  6370. if(size != 1) {
  6371. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  6372. goto("wait");
  6373. }
  6374. p_name = list.getIndex(args, 0);
  6375. p_uuid = player.getUuid(p_name);
  6376. if(p_uuid == null) {
  6377. msg.prefix(player, prefix_commands, "This player has never been online.");
  6378. goto("wait");
  6379. }
  6380. p_name = player.getName(p_uuid);
  6381. p = read.player(p_name);
  6382. if(p == null) {
  6383. msg.prefix(player, prefix_commands, "This player is not online.");
  6384. goto("wait");
  6385. }
  6386. if(!player.canTeleport(player)) {
  6387. msg.prefix(player, prefix_commands, "This player can't teleport to you now.");
  6388. goto("wait");
  6389. }
  6390. if(!player.canTeleport(p)) {
  6391. msg.prefix(player, prefix_commands, "This player can't teleport to you now.");
  6392. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  6393. }
  6394. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6395. if(world.isGamesName(world_name)) {
  6396. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to your world."));
  6397. goto("wait");
  6398. }
  6399. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6400. if(world.isGamesName(world_name)) {
  6401. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  6402. goto("wait");
  6403. }
  6404. player_uuid = player.getUuid(player);
  6405. if(!hasTpaRequest(p_uuid, player_uuid)) {
  6406. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  6407. goto("wait");
  6408. }
  6409. location = entity.getLocation(player);
  6410. player.teleport(p, location, true);
  6411. goto("wait");
  6412. @tpaccepthere
  6413. if(size != 1) {
  6414. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  6415. goto("wait");
  6416. }
  6417. p_name = list.getIndex(args, 0);
  6418. p_uuid = player.getUuid(p_name);
  6419. if(p_uuid == null) {
  6420. msg.prefix(player, prefix_commands, "This player has never been online.");
  6421. goto("wait");
  6422. }
  6423. p_name = player.getName(p_uuid);
  6424. p = read.player(p_name);
  6425. if(p == null) {
  6426. msg.prefix(player, prefix_commands, "This player is not online.");
  6427. goto("wait");
  6428. }
  6429. if(!player.canTeleport(player)) {
  6430. msg.prefix(p, prefix_commands, "This player can't teleport to you now.");
  6431. //Kein return. Spieler A bekommt cancel adventure und Spieler B wird informiert.
  6432. }
  6433. if(!player.canTeleport(p)) {
  6434. msg.prefix(player, prefix_commands, "You must not teleport to this player now.");
  6435. goto("wait");
  6436. }
  6437. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6438. if(world.isGamesName(world_name)) {
  6439. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6440. goto("wait");
  6441. }
  6442. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  6443. if(world.isGamesName(world_name)) {
  6444. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6445. goto("wait");
  6446. }
  6447. player_uuid = player.getUuid(player);
  6448. if(!hasTpaRequest(player_uuid, p_uuid)) {
  6449. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  6450. goto("wait");
  6451. }
  6452. location = entity.getLocation(p);
  6453. player.teleport(player, location, true);
  6454. goto("wait");
  6455. @teleport
  6456. if(size < 1 || size > 2) {
  6457. if(perm.has(player, "teleport.other")) {
  6458. msg.prefix(player, prefix_commands, "/teleport [player] <to-player>");
  6459. } else {
  6460. msg.prefix(player, prefix_commands, "/teleport <player>");
  6461. }
  6462. goto("wait");
  6463. }
  6464. if(size == 1) {
  6465. to_name = list.getIndex(args, 0);
  6466. }
  6467. elseif(size == 2) {
  6468. if(!perm.has(player, "teleport.other")) {
  6469. perm.no(player, "teleport.other");
  6470. goto("wait");
  6471. }
  6472. affectedname = list.getIndex(args, 0);
  6473. affectedplayer = read.player(affectedname);
  6474. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  6475. to_name = list.getIndex(args, 1);
  6476. if(affectedplayer == null) {
  6477. msg.prefix(player, prefix_commands, "This player is not online.");
  6478. goto("wait");
  6479. }
  6480. }
  6481. if(player.hasMinigame(affectedplayer)) {
  6482. if(size == 2) {
  6483. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  6484. goto("wait");
  6485. }
  6486. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6487. goto("wait");
  6488. }
  6489. to_player = read.player(to_name);
  6490. if(to_player == null) {
  6491. msg.prefix(player, prefix_commands, "This player is not online.");
  6492. goto("wait");
  6493. }
  6494. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  6495. to_name = player.getName(to_player);
  6496. location = entity.getLocation(to_player);
  6497. if(player.teleport(affectedplayer, location, true)) {
  6498. if(player != affectedplayer) {
  6499. affectedname = player.getName(affectedplayer);
  6500. msg.prefix(player, prefix_commands, concat("Teleported ", affectedname, " to ", to_name, "."));
  6501. }
  6502. msg.prefix(affectedplayer, prefix_commands, concat("Teleported you to ", to_name, "."));
  6503. }
  6504. goto("wait");
  6505. @say
  6506. if(size == 0) {
  6507. msg.prefix(sender, prefix_commands, "/say <text>");
  6508. goto("wait");
  6509. }
  6510. message = text.concatList(args, " ", 0, size - 1);
  6511. msg.server(message);
  6512. goto("wait");
  6513. @warp
  6514. if(size == 0) {
  6515. @warpsyntax
  6516. msg.prefix(player, prefix_commands, "/warp ...");
  6517. if(perm.has(player, "warp.create")) {
  6518. msg(player, "§6 - set [group] <warp> §rSets a warp");
  6519. msg(player, "§6 - delete [group] <warp> §rDeletes a warp");
  6520. msg(player, "§6 - [group] <warp> §rTeleports to a warp");
  6521. msg(player, "§6 - list [group] §rLists all warps");
  6522. msg(player, "§6 - groups §rLists all warp groups");
  6523. } else {
  6524. msg(player, "§6 - <warp> §rTeleports to a warp");
  6525. msg(player, "§6 - list §rLists all warps");
  6526. }
  6527. goto("wait");
  6528. }
  6529. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6530. if(arg0 == "delete") {
  6531. if(!perm.has(player, "warp.create")) {
  6532. perm.no(player, "warp.create");
  6533. goto("wait");
  6534. }
  6535. if(size < 2) {
  6536. goto("warpsyntax");
  6537. }
  6538. if(size == 2) {
  6539. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6540. warp_group = "default";
  6541. } else {
  6542. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6543. warp_name = text.toLowerCase(list.getIndex(args, 2));
  6544. }
  6545. if(warp.delete(warp_group, warp_name)) {
  6546. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " deleted."));
  6547. } else {
  6548. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  6549. }
  6550. goto("wait");
  6551. }
  6552. if(arg0 == "list") {
  6553. if(size == 1) {
  6554. warp_group = "default";
  6555. } else {
  6556. if(!perm.has(player, "warp.create")) {
  6557. perm.no(player, "warp.create");
  6558. goto("wait");
  6559. }
  6560. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6561. }
  6562. warps_list = warp.getList(warp_group);
  6563. if(list.getSize(warps_list) == 0) {
  6564. msg.prefix(player, prefix_commands, "No warps existing.");
  6565. } else {
  6566. msg.prefix(player, prefix_commands, concat("§6", warp_group, "§r warps:"));
  6567. for(i = 0; i < list.getSize(warps_list); i++) {
  6568. msg(player, concat("§6 - §r", list.getIndex(warps_list, i)));
  6569. }
  6570. }
  6571. goto("wait");
  6572. }
  6573. if(arg0 == "groups") {
  6574. if(!perm.has(player, "warp.create")) {
  6575. perm.no(player, "warp.create");
  6576. goto("wait");
  6577. }
  6578. groups_list = warp.getGroups();
  6579. msg.prefix(player, prefix_commands, "All warp groups:");
  6580. for(i = 0; i < list.getSize(groups_list); i++) {
  6581. msg(player, concat("§6 - §r", list.getIndex(groups_list, i)));
  6582. }
  6583. goto("wait");
  6584. }
  6585. if(arg0 == "set") {
  6586. if(!perm.has(player, "warp.create")) {
  6587. perm.no(player, "warp.create");
  6588. goto("wait");
  6589. }
  6590. if(size < 2) {
  6591. goto("warpsyntax");
  6592. }
  6593. if(size == 2) {
  6594. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6595. warp_group = "default";
  6596. } else {
  6597. warp_group = text.toLowerCase(list.getIndex(args, 1));
  6598. warp_name = text.toLowerCase(list.getIndex(args, 2));
  6599. }
  6600. if(warp.exists(warp_group, warp_name)) {
  6601. msg.prefix(player, prefix_commands, "Warpname already exists.");
  6602. goto("wait");
  6603. }
  6604. warp.create(warp_group, warp_name, entity.getLocation(player));
  6605. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " set."));
  6606. goto("wait");
  6607. }
  6608. //Teleportation
  6609. if(size == 1) {
  6610. warp_name = arg0;
  6611. warp_group = "default";
  6612. } else {
  6613. if(!perm.has(player, "warp.create")) {
  6614. perm.no(player, "warp.create");
  6615. goto("wait");
  6616. }
  6617. warp_name = text.toLowerCase(list.getIndex(args, 1));
  6618. warp_group = arg0;
  6619. }
  6620. warp_loc = warp.get(warp_group, warp_name);
  6621. if(warp_loc == null) {
  6622. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  6623. goto("wait");
  6624. }
  6625. if(!perm.has(player, "warp.create")) {
  6626. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6627. if(world.isGamesName(world_name)) {
  6628. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6629. goto("wait");
  6630. }
  6631. world_name = world.getName(loc.getWorld(warp_loc));
  6632. if(world.isGamesName(world_name)) {
  6633. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6634. goto("wait");
  6635. }
  6636. }
  6637. if(player.teleport(player, warp_loc, true)) {
  6638. msg.prefix(player, prefix_commands, concat("You have been teleported to warp §7", warp_name, "."));
  6639. }
  6640. goto("wait");
  6641. @databank
  6642. if(size == 0) {
  6643. @databankhelp
  6644. msg.prefix(player, prefix_commands, "/databank...");
  6645. msg(player, "§6 - showtables §rShows all tables");
  6646. msg(player, "§6 - showfields §rShows fields from a table");
  6647. msg(player, "§6 - showdataypes §rShows dataypes from a table");
  6648. goto("wait");
  6649. }
  6650. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6651. if(arg0 == "showtables") {
  6652. msg(player, getSpacer());
  6653. stmt = databank.prepare("SHOW TABLES");
  6654. result = databank.execute(stmt);
  6655. while(databank.next(result)) {
  6656. msg(player, databank.getString(result, 1));
  6657. }
  6658. databank.close(result);
  6659. databank.close(stmt);
  6660. goto("wait");
  6661. }
  6662. if(arg0 == "showfields") {
  6663. if(size < 2) {
  6664. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  6665. goto("wait");
  6666. }
  6667. table = list.getIndex(args, 1);
  6668. if(!databank.isExistingTable(table)) {
  6669. msg.prefix(player, prefix_commands, "This in no existing table.");
  6670. goto("wait");
  6671. }
  6672. msg(player, getSpacer());
  6673. fields = databank.getTableFields(table);
  6674. iter = list.iterator(fields);
  6675. while(hasNext(iter)) {
  6676. msg(player, next(iter));
  6677. }
  6678. goto("wait");
  6679. }
  6680. if(arg0 == "showdataypes") {
  6681. if(size < 2) {
  6682. msg.prefix(player, prefix_commands, "/databank showdataypes <table>");
  6683. goto("wait");
  6684. }
  6685. table = list.getIndex(args, 1);
  6686. if(!databank.isExistingTable(table)) {
  6687. msg.prefix(player, prefix_commands, "This in no existing table.");
  6688. goto("wait");
  6689. }
  6690. msg(player, getSpacer());
  6691. msg(player, databank.getTableDatatypes(table));
  6692. goto("wait");
  6693. }
  6694. goto("databankhelp");
  6695. @seen
  6696. if(size != 1) {
  6697. msg.prefix(player, prefix_commands, "/seen <player>");
  6698. goto("wait");
  6699. }
  6700. seen_name = list.getIndex(args, 0);
  6701. seen_uuid = player.getUuid(seen_name);
  6702. if(seen_uuid == null) {
  6703. msg.prefix(player, prefix_commands, "Dieser Spieler war noch nie online.");
  6704. goto("wait");
  6705. }
  6706. if(read.player(seen_name) != null) {
  6707. msg.prefix(player, prefix_commands, "Dieser Spieler ist gerade online.");
  6708. goto("wait");
  6709. }
  6710. seenStatement = databank.prepare("SELECT logouttime FROM logoutdata WHERE player_id = ?;");
  6711. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  6712. result = databank.execute(seenStatement);
  6713. varset = false;
  6714. while(databank.next(result)) {
  6715. time = databank.getLong(result, 1);
  6716. calendar = time.new(time);
  6717. year = text.number(time.getYear(calendar));
  6718. month = text.number(time.getMonth(calendar));
  6719. day = text.number(time.getDay(calendar));
  6720. minute = text.number(time.getMinute(calendar));
  6721. hour = text.number(time.getHour(calendar));
  6722. month = correctTimeFormat(month);
  6723. day = correctTimeFormat(day);
  6724. hour = correctTimeFormat(hour);
  6725. minute = correctTimeFormat(minute);
  6726. dateformat = concat(day, ".", month, ".", year);
  6727. clockformat = concat(hour, ":", minute);
  6728. msg.prefix(player, prefix_commands, concat(seen_name, " war zuletzt am §e", dateformat, "§r um §e", clockformat, " Uhr §ronline."));
  6729. varset = true;
  6730. }
  6731. databank.close(result);
  6732. databank.close(seenStatement);
  6733. if(!varset) {
  6734. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  6735. goto("wait");
  6736. }
  6737. goto("wait");
  6738. @lastseen
  6739. if(size != 1) {
  6740. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  6741. goto("wait");
  6742. }
  6743. amount = list.getIndex(args, 0);
  6744. if(!isDouble(amount)) {
  6745. msg.prefix(sender, prefix_commands, "Number expected.");
  6746. goto("wait");
  6747. }
  6748. if(amount < 1) {
  6749. msg.prefix(sender, prefix_commands, "Positive number expected.");
  6750. goto("wait");
  6751. }
  6752. msg.prefix(sender, prefix_commands, "These players were last seen:");
  6753. table = table.new("§f", 12, 12);
  6754. msg(sender, table.getStart(table));
  6755. msg(sender, table.get(table, "Player", "Date"));
  6756. msg(sender, table.getMiddle(table));
  6757. lastseenStatement = databank.prepare("SELECT player_id, logouttime FROM logoutdata ORDER BY logouttime DESC LIMIT ?;");
  6758. databank.setInt(lastseenStatement, 1, amount);
  6759. result = databank.execute(lastseenStatement);
  6760. while(databank.next(result)) {
  6761. id = databank.getInt(result, 1);
  6762. time = databank.getLong(result, 2);
  6763. msg(sender, table.get(table, concat("§a", player.getNameFromId(id)), concat("§e", getTimeString(time))));
  6764. }
  6765. msg(sender, table.getEnd(table));
  6766. databank.close(result);
  6767. databank.close(lastseenStatement);
  6768. goto("wait");
  6769. @feed
  6770. if(size > 1) {
  6771. msg.prefix(player, prefix_commands, "/feed [player]");
  6772. goto("wait");
  6773. }
  6774. if(size == 1) {
  6775. affectedname = list.getIndex(args, 0);
  6776. affectedplayer = read.player(affectedname);
  6777. if(affectedplayer == null) {
  6778. msg.prefix(player, prefix_commands, "This player is not online.");
  6779. goto("wait");
  6780. }
  6781. if(player != affectedplayer) {
  6782. affectedname = player.getName(affectedplayer);
  6783. msg.prefix(player, prefix_commands, concat("Der Hunger von ", affectedname, " wurde gestillt."));
  6784. }
  6785. }
  6786. player.setHunger(affectedplayer, 20);
  6787. player.setSaturation(affectedplayer, 5);
  6788. msg.prefix(affectedplayer, prefix_commands, "Dein Hunger wurde gestillt.");
  6789. goto("wait");
  6790. @tempfly
  6791. if(size < 2) {
  6792. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  6793. goto("wait");
  6794. }
  6795. p_name = list.getIndex(args, 0);
  6796. if(!checkIfEverOnline(p_name)) {
  6797. msg.prefix(sender, prefix_commands, "This player has never been online.");
  6798. goto("wait");
  6799. }
  6800. p = read.player(p_name);
  6801. if(p == null) {
  6802. msg.prefix(sender, prefix_commands, "This player is not online.");
  6803. goto("wait");
  6804. }
  6805. p_name = player.getName(player.getUuid(p_name));
  6806. if(player.hasMinigame(p)) {
  6807. msg.prefix(player, prefix_commands, "This player can't fly now.");
  6808. goto("wait");
  6809. }
  6810. sec = list.getIndex(args, 1);
  6811. if(!isDouble(sec) || sec < 0) {
  6812. msg.prefix(sender, prefix_commands, "Positive number expected.");
  6813. goto("wait");
  6814. }
  6815. msg.prefix(sender, prefix_commands, concat(p_name, " can now fly for ", text.number(sec), " seconds."));
  6816. msg.prefix(p, prefix_commands, concat("You can now fly for ", text.number(sec), " seconds."));
  6817. player.setFly(p, true);
  6818. duration = sec * 20;
  6819. data.setTimer(p, "fly", duration);
  6820. status.addTimed(player, 55, duration, "Fly");
  6821. goto("wait");
  6822. @fly
  6823. if(size > 2) {
  6824. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  6825. goto("wait");
  6826. }
  6827. if(size >= 1) {
  6828. if(!perm.has(player, "fly.other")) {
  6829. perm.no(player, "fly.other");
  6830. goto("wait");
  6831. }
  6832. affectedname = list.getIndex(args, 0);
  6833. affectedplayer = read.player(affectedname);
  6834. if(affectedplayer == null) {
  6835. msg.prefix(player, prefix_commands, "This player is not online.");
  6836. goto("wait");
  6837. }
  6838. }
  6839. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6840. if(world.isGamesName(world_name)) {
  6841. if(player.hasMinigame(affectedplayer) || (perm.has(affectedplayer, "fly") && !perm.has(affectedplayer, "isTeam"))) {
  6842. if(size == 2) {
  6843. msg.prefix(player, prefix_commands, "This player can't fly now.");
  6844. } else {
  6845. msg.prefix(player, prefix_commands, "You can't fly now.");
  6846. }
  6847. goto("wait");
  6848. }
  6849. }
  6850. if(size == 2) {
  6851. boolean = list.getIndex(args, 1);
  6852. if(boolean == "on") {
  6853. fly = true;
  6854. } elseif(boolean == "off") {
  6855. fly = false;
  6856. } else {
  6857. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  6858. goto("wait");
  6859. }
  6860. } else {
  6861. if(player.hasFly(affectedplayer)) {
  6862. fly = false;
  6863. } else {
  6864. fly = true;
  6865. }
  6866. }
  6867. player.setFly(affectedplayer, fly);
  6868. if(fly) {
  6869. msg.prefix(affectedplayer, prefix_commands, "You can fly now.");
  6870. if(player != affectedplayer) {
  6871. affectedname = player.getName(affectedplayer);
  6872. msg.prefix(player, prefix_commands, concat(affectedname, " can fly now."));
  6873. }
  6874. } else {
  6875. msg.prefix(affectedplayer, prefix_commands, "You can't fly anymore.");
  6876. if(player != affectedplayer) {
  6877. affectedname = player.getName(affectedplayer);
  6878. msg.prefix(player, prefix_commands, concat(affectedname, " can't fly anymore."));
  6879. }
  6880. }
  6881. goto("wait");
  6882. @tppos
  6883. if(size < 3 || size > 5) {
  6884. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  6885. goto("wait");
  6886. }
  6887. x = list.getIndex(args, 0);
  6888. y = list.getIndex(args, 1);
  6889. z = list.getIndex(args, 2);
  6890. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  6891. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  6892. goto("wait");
  6893. }
  6894. if(size >= 4) {
  6895. worldname = list.getIndex(args, 3);
  6896. world = world.get(worldname);
  6897. if(world == null) {
  6898. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6899. goto("wait");
  6900. }
  6901. } else {
  6902. world = loc.getWorld(entity.getLocation(player));
  6903. }
  6904. if(x < -32000) {
  6905. x = -32000;
  6906. } elseif(x > 32000) {
  6907. x = 32000;
  6908. }
  6909. if(y < 0) {
  6910. y = 0;
  6911. } elseif(y > 255) {
  6912. y = 255;
  6913. }
  6914. if(z < -32000) {
  6915. z = -32000;
  6916. } elseif(z > 32000) {
  6917. z = 32000;
  6918. }
  6919. location = loc.new(world, x, y, z);
  6920. if(size == 5) {
  6921. affectedname = list.getIndex(args, 4);
  6922. affectedplayer = read.player(affectedname);
  6923. if(affectedplayer == null) {
  6924. msg.prefix(player, prefix_commands, "This player is not online.");
  6925. goto("wait");
  6926. }
  6927. }
  6928. if(player.hasMinigame(affectedplayer)) {
  6929. if(size == 5) {
  6930. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  6931. goto("wait");
  6932. }
  6933. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6934. goto("wait");
  6935. }
  6936. if(player.teleport(affectedplayer, location, true)) {
  6937. if(player != affectedplayer) {
  6938. affectedname = player.getName(affectedplayer);
  6939. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported."));
  6940. }
  6941. }
  6942. goto("wait");
  6943. @back
  6944. if(size > 0) {
  6945. msg.prefix(player, prefix_commands, "/back");
  6946. goto("wait");
  6947. }
  6948. if(!player.canTeleport(player)) {
  6949. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6950. goto("wait");
  6951. }
  6952. hasPerms = perm.has(player, "isTeam");
  6953. if(!hasPerms) {
  6954. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6955. if(world.isGamesName(world_name) || world.isStoryName(world_name)) {
  6956. msg.prefix(player, prefix_commands, "You can't use /back in this world.");
  6957. goto("wait");
  6958. }
  6959. }
  6960. location = player.getBackPos(player);
  6961. if(location == null) {
  6962. msg.prefix(player, prefix_commands, "No back-location available.");
  6963. goto("wait");
  6964. }
  6965. world = loc.getWorld(location);
  6966. if(world == null) {
  6967. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6968. goto("wait");
  6969. }
  6970. if(!hasPerms) {
  6971. world_name = world.getName(world);
  6972. if(world.isGamesName(world_name)) {
  6973. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6974. goto("wait");
  6975. }
  6976. }
  6977. player.teleport(player, location, true);
  6978. goto("wait");
  6979. @clan
  6980. if(size == 0) {
  6981. @clanhelp
  6982. msg.prefix(player, prefix_clan, "§r/clan...");
  6983. msg(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  6984. msg(player, "§2 - list §rLists all clans");
  6985. msg(player, "");
  6986. msg(player, "§2 - create <name> <tag> §rCreates a clan. Costs §64096 §rsnuvis.");
  6987. msg(player, "§2 - invite <name> §rInvites a player");
  6988. msg(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  6989. msg(player, "");
  6990. msg(player, "§2 - kick <name> §rKicks a player");
  6991. msg(player, "§2 - leader <name> §rPromote to clan-leader");
  6992. msg(player, "§2 - mod <name> §rPromote to clan-mod");
  6993. msg(player, "§2 - degrade <name> §rDemote a clan-mod");
  6994. msg(player, "§2 - leave §rLeave a clan");
  6995. msg(player, "");
  6996. msg(player, "§2 - rename <name> <tag> §rRenames a clan. Costs §664 §rsnuvis.");
  6997. msg(player, "§2 - setspawn §rSets a clan-spawn");
  6998. msg(player, "§2 - spawn §rTeleports to clan-spawn");
  6999. msg(player, "§2 - disband §rDisband a clan");
  7000. msg(player, "");
  7001. msg(player, "§2 - deposit <money> §rDeposit money to the clan account");
  7002. msg(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  7003. msg(player, "§2 - msg <message> §rSends a clan-message");
  7004. msg(player, "§2 - mail <message> §rSends a clan-mail");
  7005. msg(player, "§2 - shout <message> §rSends a message to all online players. Costs §664 §rsnuvis.");
  7006. msg(player, "§2 - party §rInvites all online members to a party");
  7007. goto("wait");
  7008. }
  7009. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7010. if(arg0 == "invite") {
  7011. if(size != 2) {
  7012. msg.prefix(player, prefix_commands, "/clan invite <name>");
  7013. goto("wait");
  7014. }
  7015. if(!player.isInClan(player)) {
  7016. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7017. goto("wait");
  7018. }
  7019. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7020. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7021. goto("wait");
  7022. }
  7023. p_name = list.getIndex(args, 1);
  7024. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7025. msg.prefix(player, prefix_clan, "You can't invite yourself.");
  7026. goto("wait");
  7027. }
  7028. if(!checkIfEverOnline(p_name)) {
  7029. msg.prefix(sender, prefix_clan, "This player has never been online.");
  7030. goto("wait");
  7031. }
  7032. if(!isOnline(p_name)) {
  7033. msg.prefix(player, prefix_clan, "This player has to be online.");
  7034. goto("wait");
  7035. }
  7036. p = read.player(p_name);
  7037. if(player.isClanMember(player)) {
  7038. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  7039. goto("wait");
  7040. }
  7041. clan_id = player.getClanId(player);
  7042. p_id = player.getId(p);
  7043. if(player.hasClanInvitation(p_id, clan_id)) {
  7044. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  7045. goto("wait");
  7046. }
  7047. player.addClanInvitation(p_id, clan_id);
  7048. clan_name = clan.getName(clan_id);
  7049. msg.prefix(player, prefix_clan, text.concat("You invited §7", p_name, "§r to your clan."));
  7050. msg.prefix(p, prefix_clan, text.concat("You got an clan invitation by §7", clan_name, "§r."));
  7051. msg(p, text.click("§r[§aAccept§r]", concat("/clan accept ", clan_id)));
  7052. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  7053. goto("wait");
  7054. }
  7055. if(arg0 == "accept") {
  7056. if(size != 2) {
  7057. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  7058. goto("wait");
  7059. }
  7060. if(player.isInClan(player)) {
  7061. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7062. goto("wait");
  7063. }
  7064. arg1 = list.getIndex(args, 1);
  7065. if(isDouble(arg1)) {
  7066. clan_id = arg1;
  7067. clan_name = clan.getName(clan_id);
  7068. if(clan_name == null) {
  7069. msg.prefix(player, prefix_clan, "Unknown clan.");
  7070. goto("wait");
  7071. }
  7072. } else {
  7073. clan_id = clan.getIdFromName(arg1);
  7074. if(clan_id == null) {
  7075. clan_id = clan.getIdFromTag(arg1);
  7076. if(clan_id == null) {
  7077. msg.prefix(player, prefix_clan, "Unknown clan.");
  7078. goto("wait");
  7079. }
  7080. }
  7081. }
  7082. player_id = player.getId(player);
  7083. if(!player.hasClanInvitation(player_id, clan_id)) {
  7084. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  7085. goto("wait");
  7086. }
  7087. clan.addMember(clan_id, player, "member");
  7088. player.setHeadName(player);
  7089. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r joined the clan."));
  7090. msg.prefix(player, prefix_clan, text.concat("You joined §7", clan_name, "§r."));
  7091. clan_size = clan.getMembersAmount(clan_id);
  7092. if(clan_size >= 15) {
  7093. rank.offerClan(clan_id, "rank.lord");
  7094. } elseif(clan_size >= 10) {
  7095. rank.offerClan(clan_id, "rank.chief");
  7096. } elseif(clan_size >= 5) {
  7097. rank.offerClan(clan_id, "rank.commander");
  7098. }
  7099. goto("wait");
  7100. }
  7101. if(arg0 == "create") {
  7102. if(size != 3) {
  7103. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  7104. goto("wait");
  7105. }
  7106. if(player.isInClan(player)) {
  7107. msg.prefix(player, prefix_clan, "You are already in a clan.");
  7108. goto("wait");
  7109. }
  7110. clan_name = list.getIndex(args, 1);
  7111. if(text.length(clan_name) > 20) {
  7112. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7113. goto("wait");
  7114. }
  7115. if(!text.onlyletters(clan_name)) {
  7116. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7117. goto("wait");
  7118. }
  7119. if(clan.isExistingName(clan_name)) {
  7120. msg.prefix(player, prefix_clan, "This name already exists.");
  7121. goto("wait");
  7122. }
  7123. clan_tag = list.getIndex(args, 2);
  7124. tag_length = text.length(clan_tag);
  7125. if(tag_length < 3 || tag_length > 4) {
  7126. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7127. goto("wait");
  7128. }
  7129. if(!text.onlyletters(clan_tag)) {
  7130. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7131. goto("wait");
  7132. }
  7133. if(clan.isExistingTag(clan_tag)) {
  7134. msg.prefix(player, prefix_clan, "This tag already exists.");
  7135. goto("wait");
  7136. }
  7137. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  7138. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  7139. goto("wait");
  7140. }
  7141. subMoney(player, 4096);
  7142. clan_id = clan.create(clan_name, clan_tag);
  7143. clan.addMember(clan_id, player, "leader");
  7144. player.setHeadName(player);
  7145. msg.prefix(player, prefix_clan, "Clan successful created.");
  7146. goto("wait");
  7147. }
  7148. if(arg0 == "info") {
  7149. if(size == 1) {
  7150. if(!player.isInClan(player)) {
  7151. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  7152. goto("wait");
  7153. }
  7154. clan_id = player.getClanId(player);
  7155. clan_name = clan.getName(clan_id);
  7156. clan_tag = clan.getTag(clan_id);
  7157. }
  7158. if(size == 2) {
  7159. arg1 = list.getIndex(args, 1);
  7160. if(isDouble(arg1)) {
  7161. clan_id = arg1;
  7162. clan_name = clan.getName(clan_id);
  7163. if(clan_name == null) {
  7164. msg.prefix(player, prefix_clan, "Unknown clan.");
  7165. goto("wait");
  7166. }
  7167. } else {
  7168. clan_id = clan.getIdFromName(arg1);
  7169. if(clan_id == null) {
  7170. clan_id = clan.getIdFromTag(arg1);
  7171. if(clan_id == null) {
  7172. msg.prefix(player, prefix_clan, "Unknown clan.");
  7173. goto("wait");
  7174. }
  7175. }
  7176. clan_name = clan.getName(clan_id);
  7177. }
  7178. clan_tag = clan.getTag(clan_id);
  7179. }
  7180. list = clan.getMembersList(clan_id);
  7181. mod_list = list.new();
  7182. members_list = list.new();
  7183. iter = list.iterator(list);
  7184. while(hasNext(iter)) {
  7185. player_uuid = next(iter);
  7186. player_name = player.getName(player_uuid);
  7187. player_id = player.getId(player_uuid);
  7188. if(player.isClanLeader(player_id)) {
  7189. leader = player_name;
  7190. } else {
  7191. if(player.isClanMod(player_id)) {
  7192. list.add(mod_list, player_name);
  7193. } else {
  7194. list.add(members_list, player_name);
  7195. }
  7196. }
  7197. }
  7198. if(list.getSize(mod_list) == 0) {
  7199. mods = "-";
  7200. } else {
  7201. mods = text.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  7202. }
  7203. if(list.getSize(members_list) == 0) {
  7204. members = "-";
  7205. } else {
  7206. members = text.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  7207. }
  7208. msg(player, text.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", text.number(clan_id), ")"));
  7209. msg(player, "§6Leader");
  7210. msg(player, "§r", leader);
  7211. msg(player, "§6Mods");
  7212. msg(player, "§r", mods);
  7213. msg(player, "§6Members");
  7214. msg(player, "§r", members);
  7215. msg(player, "§6Money");
  7216. msg(player, text.number(clan.getMoney(clan_id)));
  7217. goto("wait");
  7218. }
  7219. if(arg0 == "rename") {
  7220. if(!player.isInClan(player)) {
  7221. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7222. goto("wait");
  7223. }
  7224. if(!player.isClanLeader(player)) {
  7225. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7226. goto("wait");
  7227. }
  7228. if(size != 3) {
  7229. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  7230. goto("wait");
  7231. }
  7232. clan_name = list.getIndex(args, 1);
  7233. if(text.length(clan_name) > 20) {
  7234. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  7235. goto("wait");
  7236. }
  7237. if(!text.onlyletters(clan_name)) {
  7238. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7239. goto("wait");
  7240. }
  7241. if(clan.isExistingName(clan_name)) {
  7242. msg.prefix(player, prefix_clan, "This name already exists.");
  7243. goto("wait");
  7244. }
  7245. clan_tag = list.getIndex(args, 2);
  7246. tag_length = text.length(clan_tag);
  7247. if(tag_length < 3 || tag_length > 4) {
  7248. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  7249. goto("wait");
  7250. }
  7251. if(!text.onlyletters(clan_tag)) {
  7252. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  7253. goto("wait");
  7254. }
  7255. if(clan.isExistingTag(clan_tag)) {
  7256. msg.prefix(player, prefix_clan, "This tag already exists.");
  7257. goto("wait");
  7258. }
  7259. clan_id = player.getClanId(player);
  7260. if(clan.getMoney(clan_id) < 64) {
  7261. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7262. goto("wait");
  7263. }
  7264. clan.subMoney(clan_id, 64);
  7265. clan.setName(clan_id, clan_name);
  7266. clan.setTag(clan_id, clan_tag);
  7267. clan.msg(clan_id, text.concat("Clan renamed to §7", clan_name, "§r."));
  7268. //New tag for online players
  7269. clan.updateHeadNames(clan_id);
  7270. goto("wait");
  7271. }
  7272. if(arg0 == "msg") {
  7273. if(!player.isInClan(player)) {
  7274. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7275. goto("wait");
  7276. }
  7277. if(size < 2) {
  7278. msg.prefix(player, prefix_commands, "/clan msg <message>");
  7279. goto("wait");
  7280. }
  7281. clan_id = player.getClanId(player);
  7282. clan.msg(clan_id, text.concat(player.getName(player), ": ", text.concatList(args, " ", 1, size - 1)));
  7283. goto("wait");
  7284. }
  7285. if(arg0 == "mail") {
  7286. if(!player.isInClan(player)) {
  7287. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7288. goto("wait");
  7289. }
  7290. if(size < 2) {
  7291. msg.prefix(player, prefix_commands, "/clan mail <message>");
  7292. goto("wait");
  7293. }
  7294. if(player.isClanMember(player)) {
  7295. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7296. goto("wait");
  7297. }
  7298. clan_id = player.getClanId(player);
  7299. clan.mail(clan_id, player.getName(player), text.concatList(args, " ", 1, size - 1));
  7300. goto("wait");
  7301. }
  7302. if(arg0 == "shout") {
  7303. if(!player.isInClan(player)) {
  7304. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7305. goto("wait");
  7306. }
  7307. if(size < 2) {
  7308. msg.prefix(player, prefix_commands, "/clan shout <message>");
  7309. goto("wait");
  7310. }
  7311. if(player.isClanMember(player)) {
  7312. msg.prefix(player, prefix_commands, "You have no permission for this.");
  7313. goto("wait");
  7314. }
  7315. clan_id = player.getClanId(player);
  7316. if(clan.getMoney(clan_id) < 64) {
  7317. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  7318. goto("wait");
  7319. }
  7320. clan.subMoney(clan_id, 64);
  7321. msg.prefix("online", prefix_clan, text.concat(clan.getTag(clan_id), ": ", text.concatList(args, " ", 1, size - 1)));
  7322. goto("wait");
  7323. }
  7324. if(arg0 == "deposit") {
  7325. if(!player.isInClan(player)) {
  7326. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7327. goto("wait");
  7328. }
  7329. if(size != 2) {
  7330. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  7331. goto("wait");
  7332. }
  7333. money = list.getIndex(args, 1);
  7334. if(!isDouble(money) || money < 0) {
  7335. msg.prefix(player, prefix_clan, "Positive number expected.");
  7336. goto("wait");
  7337. }
  7338. if(!hasEnoughMoney(player, money)) {
  7339. msg.prefix(player, prefix_clan, "You can't transfer more money than you have.");
  7340. goto("wait");
  7341. }
  7342. clan_id = player.getClanId(player);
  7343. clan.addMoney(clan_id, money);
  7344. subMoney(player, money);
  7345. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r transferred §7", text.number(money), "§r snuvis."));
  7346. goto("wait");
  7347. }
  7348. if(arg0 == "party") {
  7349. counter = 0;
  7350. clan_id = player.getClanId(player);
  7351. list = clan.getMembersList(clan_id);
  7352. iter = list.iterator(list);
  7353. while(hasNext(iter)) {
  7354. p = player.get(next(iter));
  7355. if(p != null) {
  7356. temp = party.invitePlayer(player, p);
  7357. if(temp == true) {
  7358. counter++;
  7359. }
  7360. }
  7361. }
  7362. msg.prefix(player, prefix_clan, concat(text.number(counter), " online clan members invited to a party."));
  7363. goto("wait");
  7364. }
  7365. if(arg0 == "withdraw") {
  7366. if(!player.isInClan(player)) {
  7367. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7368. goto("wait");
  7369. }
  7370. if(!player.isClanLeader(player)) {
  7371. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7372. goto("wait");
  7373. }
  7374. if(size != 2) {
  7375. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  7376. goto("wait");
  7377. }
  7378. money = list.getIndex(args, 1);
  7379. if(!isDouble(money) || money < 0) {
  7380. msg.prefix(player, prefix_clan, "Positive number expected.");
  7381. goto("wait");
  7382. }
  7383. clan_id = player.getClanId(player);
  7384. clan_money = clan.getMoney(clan_id);
  7385. if(clan_money < money) {
  7386. msg.prefix(player, prefix_clan, text.concat("There are only §7", text.number(clan_money), "§r snuvis on the clan account."));
  7387. goto("wait");
  7388. }
  7389. clan.subMoney(clan_id, money);
  7390. addMoney(player, money);
  7391. msg.prefix(player, prefix_clan, text.concat("You have withdrawn §7", text.number(money), "§r snuvis."));
  7392. goto("wait");
  7393. }
  7394. if(arg0 == "leader") {
  7395. if(!player.isInClan(player)) {
  7396. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7397. goto("wait");
  7398. }
  7399. if(!player.isClanLeader(player)) {
  7400. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7401. goto("wait");
  7402. }
  7403. if(size != 2) {
  7404. msg.prefix(player, prefix_commands, "/clan leader <name>");
  7405. goto("wait");
  7406. }
  7407. p_name = list.getIndex(args, 1);
  7408. if(!checkIfEverOnline(p_name)) {
  7409. msg.prefix(player, prefix_clan, "This player has never been online.");
  7410. goto("wait");
  7411. }
  7412. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7413. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7414. goto("wait");
  7415. }
  7416. p_uuid = player.getUuid(p_name);
  7417. p_id = player.getId(p_uuid);
  7418. if(!player.isSameClan(player, p_id)) {
  7419. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7420. goto("wait");
  7421. }
  7422. player.setClanRole(p_id, "leader");
  7423. player.setClanRole(player, "mod");
  7424. clan_id = player.getClanId(player);
  7425. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan leader."));
  7426. goto("wait");
  7427. }
  7428. if(arg0 == "mod") {
  7429. if(!player.isInClan(player)) {
  7430. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7431. goto("wait");
  7432. }
  7433. if(!player.isClanLeader(player)) {
  7434. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7435. goto("wait");
  7436. }
  7437. if(size != 2) {
  7438. msg.prefix(player, prefix_commands, "/clan leader <name>");
  7439. goto("wait");
  7440. }
  7441. p_name = list.getIndex(args, 1);
  7442. if(!checkIfEverOnline(p_name)) {
  7443. msg.prefix(player, prefix_clan, "This player has never been online.");
  7444. goto("wait");
  7445. }
  7446. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7447. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7448. goto("wait");
  7449. }
  7450. p_uuid = player.getUuid(p_name);
  7451. p_id = player.getId(p_uuid);
  7452. if(!player.isSameClan(player, p_id)) {
  7453. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7454. goto("wait");
  7455. }
  7456. player.setClanRole(p_id, "mod");
  7457. clan_id = player.getClanId(player);
  7458. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan mod."));
  7459. goto("wait");
  7460. }
  7461. if(arg0 == "degrade") {
  7462. if(!player.isInClan(player)) {
  7463. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7464. goto("wait");
  7465. }
  7466. if(!player.isClanLeader(player)) {
  7467. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7468. goto("wait");
  7469. }
  7470. if(size != 2) {
  7471. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  7472. goto("wait");
  7473. }
  7474. p_name = list.getIndex(args, 1);
  7475. if(!checkIfEverOnline(p_name)) {
  7476. msg.prefix(player, prefix_clan, "This player has never been online.");
  7477. goto("wait");
  7478. }
  7479. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7480. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7481. goto("wait");
  7482. }
  7483. p_uuid = player.getUuid(p_name);
  7484. p_id = player.getId(p_uuid);
  7485. if(!player.isSameClan(player, p_id)) {
  7486. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7487. goto("wait");
  7488. }
  7489. player.setClanRole(p_id, "member");
  7490. clan_id = player.getClanId(player);
  7491. clan.msg(clan_id, text.concat("§7", p_name, "§r was degraded."));
  7492. goto("wait");
  7493. }
  7494. if(arg0 == "kick") {
  7495. if(!player.isInClan(player)) {
  7496. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7497. goto("wait");
  7498. }
  7499. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7500. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7501. goto("wait");
  7502. }
  7503. if(size != 2) {
  7504. msg.prefix(player, prefix_commands, "/clan kick <name>");
  7505. goto("wait");
  7506. }
  7507. p_name = list.getIndex(args, 1);
  7508. if(!checkIfEverOnline(p_name)) {
  7509. msg.prefix(player, prefix_clan, "This player has never been online.");
  7510. goto("wait");
  7511. }
  7512. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  7513. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  7514. goto("wait");
  7515. }
  7516. p_uuid = player.getUuid(p_name);
  7517. p_id = player.getId(p_uuid);
  7518. if(!player.isSameClan(player, p_id)) {
  7519. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  7520. goto("wait");
  7521. }
  7522. if(player.isClanLeader(p_id)) {
  7523. msg.prefix(player, prefix_clan, "You can't kick the leader.");
  7524. goto("wait");
  7525. }
  7526. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  7527. msg.prefix(player, prefix_clan, "You can't kick another mod.");
  7528. goto("wait");
  7529. }
  7530. clan_id = player.getClanId(player);
  7531. clan.msg(clan_id, text.concat("§7", p_name, "§r got kicked out of the clan."));
  7532. clan.removeMember(clan_id, p_id);
  7533. p = read.player(p_name);
  7534. if(p_name != null) {
  7535. player.setHeadName(p);
  7536. }
  7537. goto("wait");
  7538. }
  7539. if(arg0 == "disband") {
  7540. if(!player.isInClan(player)) {
  7541. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7542. goto("wait");
  7543. }
  7544. if(!player.isClanLeader(player)) {
  7545. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  7546. goto("wait");
  7547. }
  7548. clan_id = player.getClanId(player);
  7549. clan.msg(clan_id, "Clan disbanded.");
  7550. list = clan.getMembersList(clan_id);
  7551. clan.delete(clan_id);
  7552. iter = list.iterator(list);
  7553. while(hasNext(iter)) {
  7554. p = player.get(next(iter));
  7555. if(p != null) {
  7556. player.setHeadName(p);
  7557. }
  7558. }
  7559. goto("wait");
  7560. }
  7561. if(arg0 == "leave") {
  7562. if(!player.isInClan(player)) {
  7563. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7564. goto("wait");
  7565. }
  7566. if(player.isClanLeader(player)) {
  7567. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  7568. goto("wait");
  7569. }
  7570. clan_id = player.getClanId(player);
  7571. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r left the clan."));
  7572. clan.removeMember(clan_id, player);
  7573. player.setHeadName(player);
  7574. goto("wait");
  7575. }
  7576. if(arg0 == "list") {
  7577. table = table.new("§b", 2, 6, 4, 5);
  7578. msg(player, table.getStart(table));
  7579. msg(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  7580. msg(player, table.getMiddle(table));
  7581. list = clan.getIdList();
  7582. iter = list.iterator(list);
  7583. while(hasNext(iter)) {
  7584. clan_id = next(iter);
  7585. name = clan.getName(clan_id);
  7586. tag = clan.getTag(clan_id);
  7587. amount = clan.getMembersAmount(clan_id);
  7588. msg(player, table.get(table, text.number(clan_id), name, tag, text.number(amount)));
  7589. }
  7590. msg(player, table.getEnd(table));
  7591. goto("wait");
  7592. }
  7593. if(arg0 == "setspawn") {
  7594. if(!player.isInClan(player)) {
  7595. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7596. goto("wait");
  7597. }
  7598. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  7599. msg.prefix(player, prefix_clan, "You have no permission for this.");
  7600. goto("wait");
  7601. }
  7602. clan_id = player.getClanId(player);
  7603. clan.setSpawn(clan_id, entity.getLocation(player));
  7604. msg.prefix(player, prefix_clan, "New clan spawn set.");
  7605. goto("wait");
  7606. }
  7607. if(arg0 == "spawn") {
  7608. if(!player.isInClan(player)) {
  7609. msg.prefix(player, prefix_clan, "You are not in a clan.");
  7610. goto("wait");
  7611. }
  7612. clan_id = player.getClanId(player);
  7613. spawn_loc = clan.getSpawn(clan_id);
  7614. if(spawn_loc == null) {
  7615. msg.prefix(player, prefix_clan, "No clan spawn set.");
  7616. goto("wait");
  7617. }
  7618. if(!perm.has(player, "isTeam")) {
  7619. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  7620. if(world.isGamesName(world_name)) {
  7621. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  7622. goto("wait");
  7623. }
  7624. }
  7625. player.teleport(player, spawn_loc, true);
  7626. goto("wait");
  7627. }
  7628. goto("clanhelp");
  7629. @remove_clan_invitation
  7630. list.removeIndex(clan_invitations, 0);
  7631. goto("wait");
  7632. @color
  7633. msg(player, getSpacer());
  7634. msg(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  7635. msg(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  7636. msg(player, " &l §l(bold)");
  7637. msg(player, " &m §m(strikethrough)");
  7638. msg(player, " &n §n(underline)");
  7639. msg(player, " &o §o(italic)");
  7640. goto("wait");
  7641. @setspawn
  7642. if(size != 1) {
  7643. @setspawnhelp
  7644. msg.prefix(player, prefix_commands, "/setspawn ...");
  7645. msg(player, "§6 - server");
  7646. msg(player, "§6 - games");
  7647. msg(player, "§6 - creative");
  7648. msg(player, "§6 - story");
  7649. goto("wait");
  7650. }
  7651. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7652. new_spawn = text.location(entity.getLocation(player));
  7653. config = getScriptVar("server_config");
  7654. if(arg0 == "games") {
  7655. config.set(config, "gamesspawn", new_spawn);
  7656. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  7657. } elseif(arg0 == "server") {
  7658. config.set(config, "serverspawn", new_spawn);
  7659. msg.prefix(player, prefix_commands, "New main Spawn set.");
  7660. } elseif(arg0 == "creative") {
  7661. config.set(config, "creativespawn", new_spawn);
  7662. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  7663. } elseif(arg0 == "story") {
  7664. config.set(config, "storyspawn", new_spawn);
  7665. msg.prefix(player, prefix_commands, "New spawn for story world set.");
  7666. } else {
  7667. goto("setspawnhelp");
  7668. }
  7669. config.saveAsync(config);
  7670. goto("wait");
  7671. @heal
  7672. if(size > 1) {
  7673. msg.prefix(player, prefix_commands, "/heal [player]");
  7674. goto("wait");
  7675. }
  7676. if(size == 1) {
  7677. affectedname = list.getIndex(args, 0);
  7678. affectedplayer = read.player(affectedname);
  7679. if(affectedplayer == null) {
  7680. msg.prefix(player, prefix_commands, "This player is not online.");
  7681. goto("wait");
  7682. }
  7683. if(player != affectedplayer) {
  7684. affectedname = player.getName(affectedplayer);
  7685. msg.prefix(player, prefix_commands, concat(affectedname, " was healed."));
  7686. }
  7687. }
  7688. living.heal(affectedplayer, 50);
  7689. player.setHunger(affectedplayer, 20);
  7690. player.setSaturation(affectedplayer, 5);
  7691. entity.clearEffects(affectedplayer);
  7692. entity.setBurning(affectedplayer, 0);
  7693. msg.prefix(affectedplayer, prefix_commands, "You have been healed.");
  7694. goto("wait");
  7695. @inv
  7696. if(size == 0) {
  7697. @invhelp
  7698. msg.prefix(player, prefix_commands, "/inv ...");
  7699. if(perm.has(player, "inv.ignore")) {
  7700. msg(player, "§6 - ignore §rToggles inventory change on world change");
  7701. }
  7702. if(perm.has(player, "inv.see")) {
  7703. msg(player, "§6 - see <player> §rOpens a player's inventory");
  7704. }
  7705. if(perm.has(player, "inv.reload")) {
  7706. msg(player, "§6 - reload <player> §rReloads a player's inventory");
  7707. }
  7708. if(perm.has(player, "inv.saveFor")) {
  7709. msg(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  7710. }
  7711. if(perm.has(player, "inv.loadFrom")) {
  7712. msg(player, "§6 - loadFrom <player> <world> §rLoads a player's inventory for you");
  7713. }
  7714. goto("wait");
  7715. }
  7716. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7717. if(arg0 == "ignore") {
  7718. if(!perm.has(player, "inv.ignore")) {
  7719. perm.no(player, "inv.ignore");
  7720. goto("wait");
  7721. }
  7722. ignore = player.hasInvIgnore(player);
  7723. if(ignore == null) {
  7724. ignore = false;
  7725. }
  7726. if(ignore) {
  7727. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  7728. } else {
  7729. msg.prefix(player, prefix_commands, "You'll keep your inventory on joining another world.");
  7730. }
  7731. player.invIgnore(player, !ignore);
  7732. goto("wait");
  7733. }
  7734. if(arg0 == "see") {
  7735. if(!perm.has(player, "inv.see")) {
  7736. perm.no(player, "inv.see");
  7737. goto("wait");
  7738. }
  7739. if(size < 2) {
  7740. msg.prefix(player, prefix_commands, "/inv see <player>");
  7741. goto("wait");
  7742. }
  7743. p_name = list.getIndex(args, 1);
  7744. p_uuid = player.getUuid(p_name);
  7745. if(p_uuid == null) {
  7746. msg.prefix(player, prefix_commands, "This player has never been online.");
  7747. goto("wait");
  7748. }
  7749. p = read.player(p_name);
  7750. if(p == null) {
  7751. msg.prefix(player, prefix_commands, "This player is not online.");
  7752. goto("wait");
  7753. }
  7754. inv.show(p, player);
  7755. goto("wait");
  7756. }
  7757. if(arg0 == "reload") {
  7758. if(!perm.has(player, "inv.reload")) {
  7759. perm.no(player, "inv.reload");
  7760. goto("wait");
  7761. }
  7762. if(size < 2) {
  7763. msg.prefix(player, prefix_commands, "/inv reload <player>");
  7764. goto("wait");
  7765. }
  7766. p_name = list.getIndex(args, 1);
  7767. p_uuid = player.getUuid(p_name);
  7768. if(p_uuid == null) {
  7769. msg.prefix(player, prefix_commands, "This player has never been online.");
  7770. goto("wait");
  7771. }
  7772. p = read.player(p_name);
  7773. if(p == null) {
  7774. msg.prefix(player, prefix_commands, "This player is not online.");
  7775. goto("wait");
  7776. }
  7777. world = loc.getWorld(entity.getLocation(p));
  7778. inv.loadFromPlayer(p, p, world);
  7779. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  7780. goto("wait");
  7781. }
  7782. if(arg0 == "savefor") {
  7783. if(size != 1 && size != 3) {
  7784. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  7785. goto("wait");
  7786. }
  7787. if(size == 1) {
  7788. for_player_or_id = player.getId(player);
  7789. world = loc.getWorld(entity.getLocation(player));
  7790. }
  7791. if(size == 3) {
  7792. if(!perm.has(player, "inv.saveFor")) {
  7793. perm.no(player, "inv.saveFor");
  7794. goto("wait");
  7795. }
  7796. p_name = list.getIndex(args, 1);
  7797. p_uuid = player.getUuid(p_name);
  7798. if(p_uuid == null) {
  7799. msg.prefix(player, prefix_commands, "This player has never been online.");
  7800. goto("wait");
  7801. }
  7802. p = read.player(p_name);
  7803. if(p != null) {
  7804. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  7805. goto("wait");
  7806. }
  7807. for_player_or_id = player.getId(p_uuid);
  7808. world_name = list.getIndex(args, 2);
  7809. world = world.get(world_name);
  7810. if(world == null) {
  7811. msg.prefix(player, prefix_world, "This world is not loaded.");
  7812. goto("wait");
  7813. }
  7814. }
  7815. inv.saveForPlayer(player, for_player_or_id, world);
  7816. msg.prefix(player, prefix_commands, "Inventory saved.");
  7817. goto("wait");
  7818. }
  7819. if(arg0 == "loadfrom") {
  7820. if(size != 1 && size != 3) {
  7821. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  7822. goto("wait");
  7823. }
  7824. if(size == 1) {
  7825. from_player_or_id = player.getId(player);
  7826. world = loc.getWorld(entity.getLocation(player));
  7827. }
  7828. if(size == 3) {
  7829. if(!perm.has(player, "inv.loadFrom")) {
  7830. perm.no(player, "inv.loadFrom");
  7831. goto("wait");
  7832. }
  7833. p_name = list.getIndex(args, 1);
  7834. p_uuid = player.getUuid(p_name);
  7835. if(p_uuid == null) {
  7836. msg.prefix(player, prefix_commands, "This player has never been online.");
  7837. goto("wait");
  7838. }
  7839. p = read.player(p_name);
  7840. if(p != null) {
  7841. msg.prefix(player, prefix_commands, "§cThis player is online. Loaded inventory can differ from /inv see!");
  7842. }
  7843. from_player_or_id = player.getId(p_uuid);
  7844. world_name = list.getIndex(args, 2);
  7845. world = world.get(world_name);
  7846. if(world == null) {
  7847. msg.prefix(player, prefix_world, "This world is not loaded.");
  7848. goto("wait");
  7849. }
  7850. }
  7851. inv.loadFromPlayer(player, from_player_or_id, world);
  7852. msg.prefix(player, prefix_commands, "Inventory loaded.");
  7853. goto("wait");
  7854. }
  7855. goto("wait");
  7856. @boost
  7857. entity.throw(player, 0, 5, 0);
  7858. goto("wait");
  7859. @memory
  7860. msg.prefix(player, prefix_commands, concat("Used RAM: ", text.number(usedMemory()), " / ", text.number(math.round(allocatedMemory())), " MB"));
  7861. goto("wait");
  7862. @world
  7863. if(size == 0) {
  7864. @world_syntax
  7865. msg.prefix(player, prefix_world, "/world ...");
  7866. msg(player, "§b - info §rShows info about a world");
  7867. msg(player, "§b - tp <world> [player] §rTeleports a player to a world");
  7868. msg(player, "§b - list §rShows all loaded worlds");
  7869. msg(player, "§b - setspawn §rSets the world's spawn");
  7870. msg(player, "§b - diffi <world> <diffi> §rSets the world's difficulty");
  7871. goto("wait");
  7872. }
  7873. arg0 = text.toLowerCase(list.getIndex(args, 0));
  7874. if(arg0 == "info") {
  7875. msg(player, getSpacer());
  7876. world = loc.getWorld(entity.getLocation(player));
  7877. msg(player, "§6World: §r", world.getName(world));
  7878. msg(player, "§6Rain: §r", world.hasStorm(world));
  7879. time = world.getTime(world);
  7880. while(time >= 24000) {
  7881. time -= 24000;
  7882. }
  7883. msg(player, "§6Time: §r", text.number(time));
  7884. goto("wait");
  7885. }
  7886. if(arg0 == "tp") {
  7887. if(size < 2 || size > 3) {
  7888. msg.prefix(player, prefix_world, "/world tp <world> [player]");
  7889. goto("wait");
  7890. }
  7891. if(size >= 2) {
  7892. world_name = text.toLowerCase(list.getIndex(args, 1));
  7893. world = world.get(world_name);
  7894. if(world == null) {
  7895. msg.prefix(player, prefix_world, "This world is not loaded.");
  7896. goto("wait");
  7897. }
  7898. }
  7899. if(size == 3) {
  7900. affectedname = list.getIndex(args, 2);
  7901. affectedplayer = read.player(affectedname);
  7902. if(affectedplayer == null) {
  7903. msg.prefix(player, prefix_world, "This player is not online.");
  7904. goto("wait");
  7905. }
  7906. }
  7907. if(!player.canTeleport(affectedplayer)) {
  7908. if(size == 3) {
  7909. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  7910. goto("wait");
  7911. }
  7912. msg.prefix(player, prefix_commands, "You can't teleport now.");
  7913. goto("wait");
  7914. }
  7915. if(player != affectedplayer) {
  7916. affectedname = player.getName(affectedplayer);
  7917. msg.prefix(player, prefix_world, concat(affectedname, " was teleported to the spawn of the world ", world_name, "."));
  7918. }
  7919. if(world_name == "games") {
  7920. loc = world.getGamesSpawn();
  7921. } elseif(world_name == "creative") {
  7922. loc = world.getCreativeSpawn();
  7923. } elseif(world_name == "story") {
  7924. loc = world.getStorySpawn();
  7925. } else {
  7926. loc = world.getSpawn(world);
  7927. }
  7928. player.teleport(affectedplayer, loc, true);
  7929. goto("wait");
  7930. }
  7931. if(arg0 == "list") {
  7932. msg.prefix(player, prefix_world, "Loaded worlds:");
  7933. worldlist = world.getAll();
  7934. for(i = 0; i < list.getSize(worldlist); i++) {
  7935. msg(player, " - ", world.getName(list.getIndex(worldlist, i)));
  7936. }
  7937. msg(player, getSpacer());
  7938. goto("wait");
  7939. }
  7940. if(arg0 == "setspawn") {
  7941. location = entity.getLocation(player);
  7942. world.setSpawn(location, 0);
  7943. msg.prefix(player, prefix_world, concat("New spawn of the world ", world.getName(loc.getWorld(location)), " set."));
  7944. goto("wait");
  7945. }
  7946. if(arg0 == "diffi") {
  7947. if(size != 3) {
  7948. msg.prefix(player, prefix_world, "/world diffi <world> <diffi>");
  7949. goto("wait");
  7950. }
  7951. worldname = list.getIndex(args, 1);
  7952. world = world.get(worldname);
  7953. if(world == null) {
  7954. msg.prefix(player, prefix_world, "This world is not loaded.");
  7955. goto("wait");
  7956. }
  7957. diffi_string = list.getIndex(args, 2);
  7958. if(diffi_string != "PEACEFUL" || diffi_string != "EASY" || diffi_string != "NORMAL" || diffi_string != "HARD") {
  7959. msg.prefix(player, prefix_world, "False input.");
  7960. goto("wait");
  7961. }
  7962. world.setDiffi(world, diffi_string);
  7963. msg.prefix(player, prefix_world, "Difficulty changed.");
  7964. goto("wait");
  7965. }
  7966. goto("world_syntax");
  7967. @yeet
  7968. if(size == 0){
  7969. msg.prefix(player, prefix_commands, "/yeet <strength>");
  7970. goto("wait");
  7971. }
  7972. yeet_strength = list.getIndex(args, 0);
  7973. yeet(player,math.abs(yeet_strength));
  7974. msg(player, "§4YEET");
  7975. goto("wait");
  7976. @giveup
  7977. script_id = quest.getFromPlayer(player);
  7978. if(script_id == null) {
  7979. msg.prefix(player, prefix_quest, "You are not in a quest.");
  7980. goto("wait");
  7981. }
  7982. script = script.getFromId(script_id);
  7983. if(script == null) {
  7984. snuvi.debug("Player used giveup on corrupt quest");
  7985. quest.removePlayer(player); //in case of corrupt quest
  7986. msg.prefix(player, prefix_quest, "You have no quest.");
  7987. goto("wait");
  7988. }
  7989. setScriptVar("player", player);
  7990. modTimer.scriptCallEvent("quest_term", script);
  7991. quest.term(script, player);
  7992. msg.prefix(player, prefix_quest, "Quest termed.");
  7993. goto("wait");
  7994. @leave
  7995. set = player.getMinigameIds(player);
  7996. iter = set.iterator(set);
  7997. if(hasNext(iter)) {
  7998. script_id = next(iter);
  7999. script = script.getFromId(script_id);
  8000. if(script == null) {
  8001. snuvi.debug(concat("Player left game without existing gamescript ", set));
  8002. 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.");
  8003. player.resetMinigames(player);
  8004. entity.teleport(player, gamesspawn);
  8005. goto("wait");
  8006. }
  8007. minigame.hub(script, player);
  8008. goto("wait");
  8009. }
  8010. msg.prefix(player, "§dScript", "You are not in a minigame.");
  8011. goto("wait");
  8012. function minigame.hub(script, player) {
  8013. script.setVar(script, "player", player);
  8014. modTimer.scriptCallEvent("player_giveup", script);
  8015. }
  8016. @jail
  8017. if(size != 1) {
  8018. msg.prefix(player, prefix_commands, "/jail <player>");
  8019. } else {
  8020. p_name = list.getIndex(args, 0);
  8021. if(!checkIfEverOnline(p_name)) {
  8022. msg.prefix(player, prefix_jail, "This player has never been online.");
  8023. goto("wait");
  8024. }
  8025. p_uuid = player.getUuid(p_name);
  8026. if(isJailed(p_uuid)) {
  8027. msg.prefix(player, prefix_jail, "This player is already jailed.");
  8028. goto("wait");
  8029. }
  8030. if(player_name == p_name) {
  8031. msg.prefix(player, prefix_jail, "Self-Jailing isn't a good idea.");
  8032. goto("wait");
  8033. }
  8034. if(!isOnline(p_name)) {
  8035. msg.prefix(player, prefix_jail, "This player is not online.");
  8036. goto("wait");
  8037. }
  8038. p = read.player(p_name);
  8039. if(perm.has(p, "jail")) {
  8040. msg.prefix(player, prefix_jail, "You can't jail this player.");
  8041. goto("wait");
  8042. }
  8043. list.add(jailed_list, p_uuid);
  8044. msg.prefix(player, prefix_jail, concat(p_name, " wurde gejailt"));
  8045. showJail(p_name);
  8046. if(!jail_loop_active) {
  8047. sgoto(5, "jailloop");
  8048. }
  8049. }
  8050. goto("wait");
  8051. @unjail
  8052. if(size != 1) {
  8053. msg.prefix(player, prefix_commands, "/unjail <player>");
  8054. } else {
  8055. p_name = list.getIndex(args, 0);
  8056. if(!checkIfEverOnline(p_name)) {
  8057. msg.prefix(player, prefix_jail, "This player has never been online.");
  8058. goto("wait");
  8059. }
  8060. p_uuid = player.getUuid(p_name);
  8061. if(!isJailed(p_uuid)) {
  8062. msg.prefix(player, prefix_jail, "This player is not jailed.");
  8063. goto("wait");
  8064. }
  8065. list.remove(jailed_list, p_uuid);
  8066. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  8067. }
  8068. goto("wait");
  8069. function inv.show(from_player, to_player) {
  8070. player_inv = player.getInv(from_player);
  8071. //inv = inv.new("333303000 333333333 333333333 333333333 000000000 333333333");
  8072. inv = inv.new("333303000333333333333333333333333333000000000333333333");
  8073. set.add($invseeids, inv.getId(inv));
  8074. inv.setItem(inv, 0, living.getEquip(from_player, "head"));
  8075. inv.setItem(inv, 1, living.getEquip(from_player, "chest"));
  8076. inv.setItem(inv, 2, living.getEquip(from_player, "legs"));
  8077. inv.setItem(inv, 3, living.getEquip(from_player, "feet"));
  8078. inv.setItem(inv, 4, living.getEquip(from_player, "offhand"));
  8079. for(slot = 0; slot <= 8; slot++) {
  8080. inv.setItem(inv, slot + 32, inv.getItem(player_inv, slot));
  8081. }
  8082. for(slot = 0; slot <= 26; slot++) {
  8083. inv.setItem(inv, slot + 5, inv.getItem(player_inv, slot + 9));
  8084. }
  8085. inv.open(inv, to_player, concat("Inventory of ", player.getName(from_player)));
  8086. }
  8087. function isAWallSign(location) {
  8088. return block.hasTag($wall_signs_tag, block.get(location));
  8089. }
  8090. function rank.add(index, tech_rank, chat_rank) {
  8091. $rank_array[index, 0] = tech_rank;
  8092. $rank_array[index, 1] = chat_rank;
  8093. }
  8094. //--------------------------------------------------
  8095. //Tip-Utils
  8096. //--------------------------------------------------
  8097. function tip.setLoop(tipp_key, boolean) {
  8098. stmt = databank.prepare("UPDATE tipps SET tipp_loop = ? WHERE tipp_key = ?;");
  8099. databank.setBool(stmt, 1, boolean);
  8100. databank.setString(stmt, 2, tipp_key);
  8101. databank.workerExecute(stmt);
  8102. }
  8103. function tip.remove(tipp_key) {
  8104. stmt = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  8105. databank.setString(stmt, 1, tipp_key);
  8106. databank.workerExecute(stmt);
  8107. }
  8108. function tip.getAll() {
  8109. list = list.new();
  8110. smt = databank.prepare("SELECT * FROM tipps;");
  8111. result = databank.execute(smt);
  8112. while(databank.next(result)) {
  8113. a = array.new(3);
  8114. a[0] = databank.getString(result, 1);
  8115. a[1] = databank.getString(result, 2);
  8116. a[2] = databank.getBool(result, 3);
  8117. list.add(list, a);
  8118. }
  8119. databank.close(smt);
  8120. databank.close(result);
  8121. return list;
  8122. }
  8123. //--------------------------------------------------
  8124. //Databank-Utils
  8125. //--------------------------------------------------
  8126. function databank.isExistingTable(table) {
  8127. temp = false;
  8128. stmt = databank.prepare("SHOW TABLES");
  8129. result = databank.execute(stmt);
  8130. while(databank.next(result)) {
  8131. if(table == databank.getString(result, 1)) {
  8132. temp = true;
  8133. break;
  8134. }
  8135. }
  8136. databank.close(result);
  8137. databank.close(stmt);
  8138. return temp;
  8139. }
  8140. function databank.getTableFields(table) {
  8141. fields = list.new();
  8142. stmt = databank.prepare(concat("SHOW FIELDS FROM ", table));
  8143. result = databank.execute(stmt);
  8144. while(databank.next(result)) {
  8145. list.add(fields, databank.getString(result, 1));
  8146. }
  8147. databank.close(result);
  8148. databank.close(stmt);
  8149. return fields;
  8150. }
  8151. function databank.getTableDatatypes(table) {
  8152. stmt = databank.prepare(concat("SHOW CREATE TABLE ", table));
  8153. result = databank.execute(stmt);
  8154. if(databank.next(result)) {
  8155. temp = databank.getString(result, 2);
  8156. }
  8157. databank.close(result);
  8158. databank.close(stmt);
  8159. return temp;
  8160. }
  8161. //--------------------------------------------------
  8162. //Tipp-Utils
  8163. //--------------------------------------------------
  8164. function tipp.register(tipp_key, tipp_value) {
  8165. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  8166. databank.setString(stmt, 1, tipp_key);
  8167. databank.setString(stmt, 2, tipp_value);
  8168. databank.setString(stmt, 3, tipp_value);
  8169. databank.workerExecute(stmt);
  8170. }
  8171. function tipp.get(tipp_key) {
  8172. tipp_value = null;
  8173. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  8174. databank.setString(stmt, 1, tipp_key);
  8175. result = databank.execute(stmt);
  8176. while(databank.next(result)) {
  8177. tipp_value = databank.getString(result, 1);
  8178. }
  8179. databank.close(result);
  8180. databank.close(stmt);
  8181. return tipp_value;
  8182. }
  8183. //--------------------------------------------------
  8184. //Warp-Utils
  8185. //--------------------------------------------------
  8186. function warp.create(warp_group, warp_name, location) {
  8187. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8188. config.set(config, "world", world.getName(loc.getWorld(location)));
  8189. config.set(config, "x", loc.getX(location));
  8190. config.set(config, "y", loc.getY(location));
  8191. config.set(config, "z", loc.getZ(location));
  8192. config.set(config, "yaw", loc.getYaw(location));
  8193. config.set(config, "pitch", loc.getPitch(location));
  8194. config.saveAsync(config);
  8195. }
  8196. function warp.exists(warp_group, warp_name) {
  8197. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8198. return config.exists(config);
  8199. }
  8200. function warp.getGroups() {
  8201. file = file.new("scripts/configs/warps");
  8202. file_list = file.getList(file);
  8203. groups_list = list.new();
  8204. iter = list.iterator(file_list);
  8205. while(hasNext(iter)) {
  8206. warp = file.getName(next(iter));
  8207. list.add(groups_list, warp);
  8208. }
  8209. return groups_list;
  8210. }
  8211. function warp.get(warp_group, warp_name) {
  8212. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8213. if(config.exists(config)) {
  8214. config.load(config);
  8215. }
  8216. world_name = text.convert(config.getString(config, "world", "null"));
  8217. if(world_name == null) {
  8218. return null;
  8219. }
  8220. world = world.get(world_name);
  8221. x = config.getDouble(config, "x", 0);
  8222. y = config.getDouble(config, "y", 100);
  8223. z = config.getDouble(config, "z", 0);
  8224. yaw = config.getDouble(config, "yaw", 0);
  8225. pitch = config.getDouble(config, "pitch", 0);
  8226. location = loc.new(world, x, y, z, yaw, pitch);
  8227. return location;
  8228. }
  8229. function warp.delete(warp_group, warp_name) {
  8230. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  8231. if(!config.exists(config)) {
  8232. return false;
  8233. }
  8234. config.delete(config);
  8235. return true;
  8236. }
  8237. function warp.getList(warp_group) {
  8238. file = file.new(concat("scripts/configs/warps/", warp_group));
  8239. warps_list = list.new();
  8240. if(file.exists(file)) {
  8241. file_list = file.getList(file);
  8242. iter = list.iterator(file_list);
  8243. while(hasNext(iter)) {
  8244. warp = file.getName(next(iter));
  8245. warp = text.replace(warp, ".snuvic", "");
  8246. list.add(warps_list, warp);
  8247. }
  8248. }
  8249. return warps_list;
  8250. }
  8251. //--------------------------------------------------
  8252. //Home-Utils
  8253. //--------------------------------------------------
  8254. function home.set(player_id, home_name, location) {
  8255. stmt = databank.prepare("INSERT INTO homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  8256. databank.setInt(stmt, 1, player_id);
  8257. databank.setString(stmt, 2, home_name);
  8258. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  8259. databank.setInt(stmt, 4, loc.getX(location));
  8260. databank.setInt(stmt, 5, loc.getY(location));
  8261. databank.setInt(stmt, 6, loc.getZ(location));
  8262. databank.setInt(stmt, 7, loc.getYaw(location));
  8263. databank.setInt(stmt, 8, loc.getPitch(location));
  8264. databank.workerExecute(stmt);
  8265. }
  8266. function home.delete(player_id, home_name) {
  8267. stmt = databank.prepare("DELETE FROM homes WHERE player_id = ? AND name = ?;");
  8268. databank.setInt(stmt, 1, player_id);
  8269. databank.setString(stmt, 2, home_name);
  8270. databank.workerExecute(stmt);
  8271. }
  8272. function home.getLocation(player_id, home_name) {
  8273. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM homes WHERE player_id = ? AND name = ?;");
  8274. databank.setInt(stmt, 1, player_id);
  8275. databank.setString(stmt, 2, home_name);
  8276. result = databank.execute(stmt);
  8277. if(databank.next(result)) {
  8278. world = world.get(databank.getString(result, 1));
  8279. if(world == null) {
  8280. return null;
  8281. }
  8282. x = databank.getDouble(result, 2);
  8283. y = databank.getDouble(result, 3);
  8284. z = databank.getDouble(result, 4);
  8285. yaw = databank.getDouble(result, 5);
  8286. pitch = databank.getDouble(result, 6);
  8287. location = loc.new(world, x, y, z, yaw, pitch);
  8288. }
  8289. databank.close(result);
  8290. databank.close(stmt);
  8291. return location;
  8292. }
  8293. function home.exists(player_id, home_name) {
  8294. stmt = databank.prepare("SELECT player_id FROM homes WHERE player_id = ? AND name = ?;");
  8295. databank.setInt(stmt, 1, player_id);
  8296. databank.setString(stmt, 2, home_name);
  8297. result = databank.execute(stmt);
  8298. if(databank.next(result)) {
  8299. temp = true;
  8300. } else {
  8301. temp = false;
  8302. }
  8303. databank.close(result);
  8304. databank.close(stmt);
  8305. return temp;
  8306. }
  8307. function home.getList(player_id) {
  8308. homes_list = list.new();
  8309. stmt = databank.prepare("SELECT name FROM homes WHERE player_id = ?;");
  8310. databank.setInt(stmt, 1, player_id);
  8311. result = databank.execute(stmt);
  8312. while(databank.next(result)) {
  8313. list.add(homes_list, databank.getString(result, 1));
  8314. }
  8315. databank.close(result);
  8316. databank.close(stmt);
  8317. return homes_list;
  8318. }
  8319. function hasTpaRequest(player_uuid, aim_uuid) {
  8320. for(i = 0; i < list.getSize($tpa_request); i++) {
  8321. array = list.getIndex($tpa_request, i);
  8322. if(array[0] == player_uuid && array[1] == aim_uuid) {
  8323. list.removeIndex($tpa_request, i);
  8324. return true;
  8325. }
  8326. }
  8327. return false;
  8328. }
  8329. function addTpaRequest(player_uuid, aim_uuid) {
  8330. array = array.new(2);
  8331. array[0] = player_uuid;
  8332. array[1] = aim_uuid;
  8333. list.add($tpa_request, array);
  8334. }
  8335. function setCommandHelps() {
  8336. command.clearHelp();
  8337. command.clearIgnored();
  8338. //Vanilla ignorieren, danach neu setzen
  8339. command.addIgnored("teleport");
  8340. command.addIgnored("time");
  8341. command.addIgnored("help");
  8342. command.addIgnored("ban");
  8343. command.addIgnored("kick");
  8344. command.addIgnored("kill");
  8345. command.addIgnored("gamemode");
  8346. command.addIgnored("enchant");
  8347. command.addIgnored("jumpto");
  8348. commandhelp.add("silentjoin");
  8349. commandhelp.add("nowb");
  8350. commandhelp.add("coords");
  8351. commandhelp.add("ping");
  8352. commandhelp.add("rank");
  8353. commandhelp.add("back");
  8354. commandhelp.add("boost");
  8355. commandhelp.add("bug");
  8356. commandhelp.add("report");
  8357. commandhelp.add("startgame");
  8358. commandhelp.add("top");
  8359. commandhelp.add("ride");
  8360. commandhelp.add("repair");
  8361. commandhelp.add("lag");
  8362. commandhelp.add("live");
  8363. commandhelp.add("hack");
  8364. commandhelp.add("vote");
  8365. commandhelp.add("voteshop");
  8366. commandhelp.addChildPlayer("mute");
  8367. commandhelp.addChildPlayer("unmute");
  8368. commandhelp.addChildPlayer("tpa");
  8369. commandhelp.addChildPlayer("tpaccept");
  8370. commandhelp.addChildPlayer("tpahere");
  8371. commandhelp.addChildPlayer("tpaccepthere");
  8372. commandhelp.addChildPlayer("head");
  8373. commandhelp.addChildPlayer("seen");
  8374. commandhelp.addChildPlayer("heal");
  8375. commandhelp.addChildPlayer("feed");
  8376. help = commandhelp.add("lightning");
  8377. commandhelp.addAlias(help, "thor", "lightning");
  8378. help = commandhelp.add("color");
  8379. commandhelp.addAlias(help, "colour", "color");
  8380. help = commandhelp.add("iteminfo");
  8381. commandhelp.addAlias(help, "itemdb", "iteminfo");
  8382. help = commandhelp.add("head");
  8383. commandhelp.addAlias(help, "skull", "head");
  8384. help = commandhelp.add("memory");
  8385. commandhelp.addAlias(help, "ram", "memory");
  8386. help = commandhelp.add("afk");
  8387. commandhelp.addAlias(help, "afklo", "afk");
  8388. help = commandhelp.add("jumpto");
  8389. commandhelp.addAlias(help, "j", "jumpto");
  8390. help = commandhelp.add("leave");
  8391. commandhelp.addAlias(help, "l", "leave");
  8392. commandhelp.addAlias(help, "hub", "leave");
  8393. help = commandhelp.add("giveup");
  8394. commandhelp.addAlias(help, "fuckit", "giveup");
  8395. help = command.newHelp("vanish", "vanish");
  8396. //vanish [on] [player]
  8397. helpArg0 = command.newHelpLiteral("on");
  8398. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8399. command.addHelpChild(help, helpArg0);
  8400. //vanish [off] [player]
  8401. helpArg0 = command.newHelpLiteral("off");
  8402. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8403. command.addHelpChild(help, helpArg0);
  8404. command.addHelp(help);
  8405. commandhelp.addAlias(help, "v", "vanish");
  8406. help = command.newHelp("start", "start");
  8407. command.addHelpChild(help, command.newHelpLiteral("ai"));
  8408. command.addHelpChild(help, command.newHelpLiteral("chat"));
  8409. command.addHelpChild(help, command.newHelpLiteral("commands"));
  8410. command.addHelpChild(help, command.newHelpLiteral("creative"));
  8411. command.addHelpChild(help, command.newHelpLiteral("damage"));
  8412. command.addHelpChild(help, command.newHelpLiteral("doors"));
  8413. command.addHelpChild(help, command.newHelpLiteral("fixitems"));
  8414. command.addHelpChild(help, command.newHelpLiteral("gemstones"));
  8415. command.addHelpChild(help, command.newHelpLiteral("harvest"));
  8416. command.addHelpChild(help, command.newHelpLiteral("hawkeye"));
  8417. command.addHelpChild(help, command.newHelpLiteral("herobrine"));
  8418. command.addHelpChild(help, command.newHelpLiteral("lectern"));
  8419. command.addHelpChild(help, command.newHelpLiteral("loom"));
  8420. command.addHelpChild(help, command.newHelpLiteral("games"));
  8421. command.addHelpChild(help, command.newHelpLiteral("mails"));
  8422. command.addHelpChild(help, command.newHelpLiteral("mobarena"));
  8423. command.addHelpChild(help, command.newHelpLiteral("perms"));
  8424. command.addHelpChild(help, command.newHelpLiteral("playerdata"));
  8425. command.addHelpChild(help, command.newHelpLiteral("pumpkin"));
  8426. command.addHelpChild(help, command.newHelpLiteral("recipes"));
  8427. command.addHelpChild(help, command.newHelpLiteral("scheduler"));
  8428. command.addHelpChild(help, command.newHelpLiteral("shop"));
  8429. command.addHelpChild(help, command.newHelpLiteral("sitting"));
  8430. command.addHelpChild(help, command.newHelpLiteral("stats"));
  8431. command.addHelpChild(help, command.newHelpLiteral("story"));
  8432. command.addHelpChild(help, command.newHelpLiteral("survival"));
  8433. command.addHelpChild(help, command.newHelpLiteral("ticket"));
  8434. command.addHelpChild(help, command.newHelpLiteral("timber"));
  8435. command.addHelpChild(help, command.newHelpLiteral("trader"));
  8436. command.addHelpChild(help, command.newHelpLiteral("voxel"));
  8437. command.addHelp(help);
  8438. help = command.newHelp("gamemode", "gamemode");
  8439. helpArg0 = command.newHelpLiteral("adventure");
  8440. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8441. command.addHelpChild(help, helpArg0);
  8442. helpArg0 = command.newHelpLiteral("creative");
  8443. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8444. command.addHelpChild(help, helpArg0);
  8445. helpArg0 = command.newHelpLiteral("spectator");
  8446. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8447. command.addHelpChild(help, helpArg0);
  8448. helpArg0 = command.newHelpLiteral("survival");
  8449. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8450. command.addHelpChild(help, helpArg0);
  8451. helpArg0 = command.newHelpInt("0-3", 0, 3);
  8452. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  8453. command.addHelpChild(help, helpArg0);
  8454. command.addHelp(help);
  8455. commandhelp.addAlias(help, "gm", "gamemode");
  8456. help = command.newHelp("databank", "databank");
  8457. //databank showtables
  8458. command.addHelpChild(help, command.newHelpLiteral("showtables"));
  8459. //databank showfields <table>
  8460. helpArg0 = command.newHelpLiteral("showfields");
  8461. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  8462. command.addHelpChild(help, helpArg0);
  8463. //databank showdataypes <table>
  8464. helpArg0 = command.newHelpLiteral("showdataypes");
  8465. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  8466. command.addHelpChild(help, helpArg0);
  8467. command.addHelp(help);
  8468. help = command.newHelp("copyisland", "copyisland");
  8469. //copyisland copy/paste
  8470. command.addHelpChild(help, command.newHelpLiteral("copy"));
  8471. command.addHelpChild(help, command.newHelpLiteral("paste"));
  8472. //copyisland pos1/pos2
  8473. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  8474. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  8475. command.addHelp(help);
  8476. help = command.newHelp("fly", "fly");
  8477. helpArg0 = command.newHelpSpecial("Player", "player", "fly.other");
  8478. command.addHelpChild(helpArg0, command.newHelpLiteral("on"));
  8479. command.addHelpChild(helpArg0, command.newHelpLiteral("off"));
  8480. command.addHelpChild(help, helpArg0);
  8481. command.addHelp(help);
  8482. help = command.newHelp("enchant", "enchant");
  8483. helpArg0 = command.newHelpSpecial("Enchantment", "enchantment");
  8484. command.addHelpChild(helpArg0, command.newHelpInt("level", 0, 100));
  8485. command.addHelpChild(help, helpArg0);
  8486. command.addHelp(help);
  8487. help = command.newHelp("allsounds", "allsounds");
  8488. command.addHelpChild(help, command.newHelpLiteral("start"));
  8489. command.addHelpChild(help, command.newHelpLiteral("stop"));
  8490. command.addHelp(help);
  8491. help = command.newHelp("spawn", "spawn");
  8492. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8493. command.addHelp(help);
  8494. help = command.newHelp("games", "games");
  8495. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8496. command.addHelp(help);
  8497. help = command.newHelp("creative", "creative");
  8498. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8499. command.addHelp(help);
  8500. help = command.newHelp("story", "story");
  8501. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  8502. command.addHelp(help);
  8503. help = command.newHelp("ass", "ass");
  8504. //ass set <name>
  8505. helpArg0 = command.newHelpLiteral("set");
  8506. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8507. command.addHelpChild(help, helpArg0);
  8508. //ass rename <name>
  8509. helpArg0 = command.newHelpLiteral("rename");
  8510. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8511. command.addHelpChild(help, helpArg0);
  8512. //ass remove <radius>
  8513. helpArg0 = command.newHelpLiteral("remove");
  8514. command.addHelpChild(helpArg0, command.newHelpInt("radius", 0, 30));
  8515. command.addHelpChild(help, helpArg0);
  8516. command.addHelp(help);
  8517. help = command.newHelp("tppos", "tppos");
  8518. helpArg0 = command.newHelpInt("x", -32000, 32000);
  8519. helpArg1 = command.newHelpInt("y", 0, 1000);
  8520. helpArg2 = command.newHelpInt("z", -32000, 32000);
  8521. helpArg3 = command.newHelpString("world", false);
  8522. helpArg4 = command.newHelpSpecial("Player", "player");
  8523. command.addHelpChild(helpArg3, helpArg4);
  8524. command.addHelpChild(helpArg2, helpArg3);
  8525. command.addHelpChild(helpArg1, helpArg2);
  8526. command.addHelpChild(helpArg0, helpArg1);
  8527. command.addHelpChild(help, helpArg0);
  8528. command.addHelp(help);
  8529. help = command.newHelp("stats", "stats");
  8530. addStatsGameHelp(help, "AmongUs");
  8531. addStatsGameHelp(help, "BedWars");
  8532. addStatsGameHelp(help, "RageMode");
  8533. addStatsGameHelp(help, "JR-Endless");
  8534. addStatsGameHelp(help, "Rebuild");
  8535. addStatsGameHelp(help, "FastBridge");
  8536. addStatsGameHelp(help, "SnowGame");
  8537. addStatsGameHelp(help, "TJR");
  8538. addStatsGameHelp(help, "JR-Ice");
  8539. addStatsGameHelp(help, "JR-Rooms");
  8540. addStatsGameHelp(help, "Letters");
  8541. addStatsGameHelp(help, "Sammelfieber");
  8542. addStatsGameHelp(help, "Buttons");
  8543. addStatsGameHelp(help, "HideAndSeek");
  8544. addStatsGameHelp(help, "Inverting");
  8545. addStatsGameHelp(help, "Spleef");
  8546. addStatsGameHelp(help, "Knockfight");
  8547. addStatsGameHelp(help, "Leapfrog");
  8548. addStatsGameHelp(help, "Parcour");
  8549. addStatsGameHelp(help, "Halma");
  8550. addStatsGameHelp(help, "ShoppingChaos");
  8551. addStatsGameHelp(help, "MengerRun");
  8552. command.addHelp(help);
  8553. help = command.newHelp("setspawn", "setspawn");
  8554. command.addHelpChild(help, command.newHelpLiteral("server"));
  8555. command.addHelpChild(help, command.newHelpLiteral("games"));
  8556. command.addHelpChild(help, command.newHelpLiteral("creative"));
  8557. command.addHelpChild(help, command.newHelpLiteral("story"));
  8558. command.addHelp(help);
  8559. help = command.newHelp("datatools", "datatools");
  8560. //datatools hide <name>
  8561. helpArg0 = command.newHelpLiteral("hide");
  8562. command.addHelpChild(helpArg0, command.newHelpLiteral("enchantments"));
  8563. command.addHelpChild(helpArg0, command.newHelpLiteral("attributes"));
  8564. command.addHelpChild(helpArg0, command.newHelpLiteral("unbreakable"));
  8565. command.addHelpChild(helpArg0, command.newHelpLiteral("destroys"));
  8566. command.addHelpChild(helpArg0, command.newHelpLiteral("placed_on"));
  8567. command.addHelpChild(helpArg0, command.newHelpLiteral("potion_effects"));
  8568. command.addHelpChild(help, helpArg0);
  8569. //datatools attribute <attribute> <slot> <double> <op>
  8570. helpArg0 = command.newHelpLiteral("attribute");
  8571. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("armor"));
  8572. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("armor_toughness"));
  8573. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("attack_damage"));
  8574. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("knockback_resistance"));
  8575. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("max_health"));
  8576. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("movement_speed"));
  8577. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("attack_speed"));
  8578. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("luck"));
  8579. command.addHelpChild(help, helpArg0);
  8580. //datatools hide-entity
  8581. command.addHelpChild(help, command.newHelpLiteral("hide-entity"));
  8582. //datatools show-entity
  8583. command.addHelpChild(help, command.newHelpLiteral("show-entity"));
  8584. //datatools name-entity <name>
  8585. helpArg0 = command.newHelpLiteral("name-entity");
  8586. helpArg1 = command.newHelpString("name", true);
  8587. command.addHelpChild(helpArg0, helpArg1);
  8588. command.addHelpChild(help, helpArg0);
  8589. //datatools name-visibility <name>
  8590. helpArg0 = command.newHelpLiteral("name-visibility");
  8591. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  8592. command.addHelpChild(help, helpArg0);
  8593. //datatools name-item <name>
  8594. helpArg0 = command.newHelpLiteral("name-item");
  8595. helpArg1 = command.newHelpString("name", true);
  8596. command.addHelpChild(helpArg0, helpArg1);
  8597. command.addHelpChild(help, helpArg0);
  8598. //datatools print-entity
  8599. command.addHelpChild(help, command.newHelpLiteral("print-entity"));
  8600. //datatools lore-item <line> <lore>
  8601. helpArg0 = command.newHelpLiteral("lore-item");
  8602. helpArg1 = command.newHelpInt("line", 0, 1000);
  8603. helpArg2 = command.newHelpString("lore", true);
  8604. command.addHelpChild(helpArg1, helpArg2);
  8605. command.addHelpChild(helpArg0, helpArg1);
  8606. command.addHelpChild(help, helpArg0);
  8607. command.addHelp(help);
  8608. commandhelp.addAlias(help, "dt", "datatools");
  8609. help = command.newHelp("hawkeye", "hawkeye");
  8610. //hawkeye search <parameters>
  8611. helpArg0 = command.newHelpLiteral("search");
  8612. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8613. command.addHelpChild(help, helpArg0);
  8614. //hawkeye undo
  8615. command.addHelpChild(help, command.newHelpLiteral("undo"));
  8616. //hawkeye entries
  8617. command.addHelpChild(help, command.newHelpLiteral("entries"));
  8618. //hawkeye rollback
  8619. command.addHelpChild(help, command.newHelpLiteral("rollback"));
  8620. //hawkeye tool
  8621. command.addHelpChild(help, command.newHelpLiteral("tool"));
  8622. commandhelp.addAlias(help, "ha", "hawkeye");
  8623. command.addHelp(help);
  8624. help = command.newHelp("voxel", "voxel");
  8625. command.addHelpChild(help, command.newHelpInt("radius", 1, 5));
  8626. command.addHelpChild(help, command.newHelpLiteral("block"));
  8627. command.addHelp(help);
  8628. help = command.newHelp("help", "help");
  8629. command.addHelpChild(help, command.newHelpInt("page", 1, 100));
  8630. command.addHelp(help);
  8631. commandhelp.addAlias(help, "mimimi", "help");
  8632. help = command.newHelp("suicide", "suicide");
  8633. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "kill.other"));
  8634. command.addHelp(help);
  8635. commandhelp.addAlias(help, "kill", "suicide");
  8636. help = command.newHelp("tempfly", "tempfly");
  8637. helpArg0 = command.newHelpSpecial("Player", "player");
  8638. command.addHelpChild(helpArg0, command.newHelpInt("seconds", 1, 10000));
  8639. command.addHelpChild(help, helpArg0);
  8640. command.addHelp(help);
  8641. help = command.newHelp("tempban", "tempban");
  8642. helpArg0 = command.newHelpSpecial("Player", "player");
  8643. helpArg1 = command.newHelpInt("days", 0, 100);
  8644. helpArg2 = command.newHelpInt("hours", 0, 100);
  8645. helpArg3 = command.newHelpInt("minutes", 1, 100);
  8646. command.addHelpChild(helpArg3, command.newHelpString("reason", true));
  8647. command.addHelpChild(helpArg2, helpArg3);
  8648. command.addHelpChild(helpArg1, helpArg2);
  8649. command.addHelpChild(helpArg0, helpArg1);
  8650. command.addHelpChild(help, helpArg0);
  8651. command.addHelp(help);
  8652. help = command.newHelp("ban", "ban");
  8653. helpArg0 = command.newHelpSpecial("Player", "player");
  8654. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8655. command.addHelpChild(help, helpArg0);
  8656. command.addHelp(help);
  8657. help = command.newHelp("silentban", "silentban");
  8658. helpArg0 = command.newHelpSpecial("Player", "player");
  8659. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8660. command.addHelpChild(help, helpArg0);
  8661. command.addHelp(help);
  8662. help = command.newHelp("kick", "kick");
  8663. helpArg0 = command.newHelpSpecial("Player", "player");
  8664. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8665. command.addHelpChild(help, helpArg0);
  8666. command.addHelp(help);
  8667. help = command.newHelp("silentkick", "silentkick");
  8668. helpArg0 = command.newHelpSpecial("Player", "player");
  8669. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  8670. command.addHelpChild(help, helpArg0);
  8671. command.addHelp(help);
  8672. help = command.newHelp("answer", "answer");
  8673. command.addHelpChild(help, command.newHelpString("message", true));
  8674. command.addHelp(help);
  8675. commandhelp.addAlias(help, "r", "answer");
  8676. help = command.newHelp("time", "time");
  8677. //time set <time>
  8678. helpArg0 = command.newHelpLiteral("set");
  8679. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  8680. command.addHelpChild(help, helpArg0);
  8681. //time add <time>
  8682. helpArg0 = command.newHelpLiteral("add");
  8683. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  8684. command.addHelpChild(help, helpArg0);
  8685. //time day / noon / night / midnight
  8686. command.addHelpChild(help, command.newHelpLiteral("day"));
  8687. command.addHelpChild(help, command.newHelpLiteral("noon"));
  8688. command.addHelpChild(help, command.newHelpLiteral("night"));
  8689. command.addHelpChild(help, command.newHelpLiteral("midnight"));
  8690. command.addHelp(help);
  8691. help = command.newHelp("enderchest", "enderchest");
  8692. //enderchest [player] <from-player>
  8693. helpArg0 = command.newHelpSpecial("Player", "player");
  8694. command.addHelpChild(helpArg0, command.newHelpString("from-player", false));
  8695. command.addHelpChild(help, helpArg0);
  8696. //enderchest [player] <from-player>
  8697. command.addHelpChild(help, command.newHelpString("from-player", false));
  8698. command.addHelp(help);
  8699. help = command.newHelp("nickname", "nickname");
  8700. command.addHelpChild(help, command.newHelpString("name", true));
  8701. command.addHelpChild(help, command.newHelpLiteral("remove"));
  8702. command.addHelp(help);
  8703. help = command.newHelp("perm", "perm");
  8704. //perm give <player> <perm>
  8705. helpArg0 = command.newHelpLiteral("give", "perm.give");
  8706. helpArg1 = command.newHelpSpecial("Player", "player");
  8707. command.addHelpChild(helpArg1, command.newHelpLiteral("admin", "isAdmin"));
  8708. command.addHelpChild(helpArg1, command.newHelpLiteral("mod", "isAdmin"));
  8709. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  8710. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  8711. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  8712. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  8713. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  8714. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  8715. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  8716. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  8717. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  8718. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass", "isAdmin"));
  8719. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  8720. command.addHelpChild(helpArg0, helpArg1);
  8721. command.addHelpChild(help, helpArg0);
  8722. //perm remove <player> <perm>
  8723. helpArg0 = command.newHelpLiteral("remove", "perm.remove");
  8724. helpArg1 = command.newHelpSpecial("Player", "player");
  8725. command.addHelpChild(helpArg1, command.newHelpLiteral("admin", "isAdmin"));
  8726. command.addHelpChild(helpArg1, command.newHelpLiteral("mod", "isAdmin"));
  8727. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  8728. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  8729. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  8730. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  8731. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  8732. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  8733. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  8734. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  8735. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  8736. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass", "isAdmin"));
  8737. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  8738. command.addHelpChild(helpArg0, helpArg1);
  8739. command.addHelpChild(help, helpArg0);
  8740. //perm removeall <player>
  8741. helpArg0 = command.newHelpLiteral("removeall", "perm.removeall");
  8742. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8743. command.addHelpChild(help, helpArg0);
  8744. //perm list <player>
  8745. helpArg0 = command.newHelpLiteral("list", "perm.list");
  8746. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8747. command.addHelpChild(help, helpArg0);
  8748. //perm toggle
  8749. command.addHelpChild(help, command.newHelpLiteral("toggle", "perm.toggle"));
  8750. command.addHelp(help);
  8751. help = command.newHelp("script", "script");
  8752. //script start <scripts>
  8753. helpArg0 = command.newHelpLiteral("start");
  8754. command.addHelpChild(helpArg0, command.newHelpString("scrips...", true));
  8755. command.addHelpChild(help, helpArg0);
  8756. //script see
  8757. command.addHelpChild(help, command.newHelpLiteral("see"));
  8758. //script term
  8759. helpArg0 = command.newHelpLiteral("term");
  8760. command.addHelpChild(helpArg0, command.newHelpLiteral("all"));
  8761. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 1000000));
  8762. command.addHelpChild(help, helpArg0);
  8763. command.addHelp(help);
  8764. commandhelp.addAlias(help, "s", "script");
  8765. help = command.newHelp("home", "home");
  8766. //home set
  8767. helpArg0 = command.newHelpLiteral("set");
  8768. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8769. command.addHelpChild(help, helpArg0);
  8770. //home delete
  8771. helpArg0 = command.newHelpLiteral("delete");
  8772. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8773. command.addHelpChild(help, helpArg0);
  8774. //home list
  8775. helpArg0 = command.newHelpLiteral("list");
  8776. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  8777. command.addHelpChild(help, helpArg0);
  8778. //home <name>
  8779. helpArg0 = command.newHelpString("name", false);
  8780. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  8781. command.addHelpChild(help, helpArg0);
  8782. command.addHelp(help);
  8783. help = command.newHelp("plot", "plot");
  8784. //plot info
  8785. command.addHelpChild(help, command.newHelpLiteral("info"));
  8786. command.addHelpChild(help, command.newHelpLiteral("i"));
  8787. //plot pos1/pos2
  8788. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  8789. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  8790. //plot create/create3D
  8791. command.addHelpChild(help, command.newHelpLiteral("create"));
  8792. command.addHelpChild(help, command.newHelpLiteral("create3D"));
  8793. //plot remove
  8794. helpArg0 = command.newHelpLiteral("remove");
  8795. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 10000));
  8796. command.addHelpChild(help, helpArg0);
  8797. //plot name <name>
  8798. helpArg0 = command.newHelpLiteral("name");
  8799. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8800. helpArg1 = command.newHelpInt("id", 0, 10000);
  8801. command.addHelpChild(helpArg1, command.newHelpString("name", true));
  8802. command.addHelpChild(helpArg0, helpArg1);
  8803. command.addHelpChild(help, helpArg0);
  8804. //plot share <name>
  8805. helpArg0 = command.newHelpLiteral("share");
  8806. helpArg1 = command.newHelpSpecial("Player", "player");
  8807. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8808. command.addHelpChild(helpArg0, helpArg1);
  8809. command.addHelpChild(help, helpArg0);
  8810. //plot kick <name>
  8811. helpArg0 = command.newHelpLiteral("kick");
  8812. helpArg1 = command.newHelpSpecial("Player", "player");
  8813. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8814. command.addHelpChild(helpArg0, helpArg1);
  8815. command.addHelpChild(help, helpArg0);
  8816. //plot raise
  8817. command.addHelpChild(help, command.newHelpLiteral("raise"));
  8818. //plot leader <name>
  8819. helpArg0 = command.newHelpLiteral("leader");
  8820. helpArg1 = command.newHelpSpecial("Player", "player");
  8821. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8822. command.addHelpChild(helpArg0, helpArg1);
  8823. command.addHelpChild(help, helpArg0);
  8824. //plot mod <name>
  8825. helpArg0 = command.newHelpLiteral("mod");
  8826. helpArg1 = command.newHelpSpecial("Player", "player");
  8827. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8828. command.addHelpChild(helpArg0, helpArg1);
  8829. command.addHelpChild(help, helpArg0);
  8830. //plot chest <name>
  8831. helpArg0 = command.newHelpLiteral("chest");
  8832. helpArg1 = command.newHelpSpecial("Player", "player");
  8833. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  8834. command.addHelpChild(helpArg0, helpArg1);
  8835. command.addHelpChild(help, helpArg0);
  8836. //plot sell <price>
  8837. helpArg0 = command.newHelpLiteral("sell");
  8838. command.addHelpChild(helpArg0, command.newHelpInt("price", 1, 10000));
  8839. command.addHelpChild(help, helpArg0);
  8840. //plot moreinfo
  8841. command.addHelpChild(help, command.newHelpLiteral("moreinfo", "plot.moreinfo"));
  8842. //plot listall
  8843. command.addHelpChild(help, command.newHelpLiteral("listall"));
  8844. //plot flags <int> <boolean>
  8845. helpArg0 = command.newHelpLiteral("flags");
  8846. helpArg1 = command.newHelpInt("int", 1, 1000);
  8847. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  8848. command.addHelpChild(helpArg0, helpArg1);
  8849. command.addHelpChild(help, helpArg0);
  8850. //plot expand <anzahl>
  8851. helpArg0 = command.newHelpLiteral("expand");
  8852. helpArg1 = command.newHelpInt("anzahl", 1, 1000);
  8853. helpArg3 = command.newHelpInt("id", 1, 10000);
  8854. helpArg2 = command.newHelpLiteral("north");
  8855. command.addHelpChild(helpArg2, helpArg3);
  8856. command.addHelpChild(helpArg1, helpArg2);
  8857. helpArg2 = command.newHelpLiteral("east");
  8858. command.addHelpChild(helpArg2, helpArg3);
  8859. command.addHelpChild(helpArg1, helpArg2);
  8860. helpArg2 = command.newHelpLiteral("south");
  8861. command.addHelpChild(helpArg2, helpArg3);
  8862. command.addHelpChild(helpArg1, helpArg2);
  8863. helpArg2 = command.newHelpLiteral("west");
  8864. command.addHelpChild(helpArg2, helpArg3);
  8865. command.addHelpChild(helpArg1, helpArg2);
  8866. command.addHelpChild(helpArg0, helpArg1);
  8867. command.addHelpChild(help, helpArg0);
  8868. command.addHelp(help);
  8869. commandhelp.addAlias(help, "p", "plot");
  8870. help = command.newHelp("warp", "warp");
  8871. //warp set [group] <name>
  8872. helpArg0 = command.newHelpLiteral("set", "warp.create");
  8873. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  8874. helpArg1 = command.newHelpString("group", false, "warp.create");
  8875. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  8876. command.addHelpChild(helpArg0, helpArg1);
  8877. command.addHelpChild(help, helpArg0);
  8878. //warp delete [group] <name>
  8879. helpArg0 = command.newHelpLiteral("delete", "warp.create");
  8880. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  8881. helpArg1 = command.newHelpString("group", false, "warp.create");
  8882. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  8883. command.addHelpChild(helpArg0, helpArg1);
  8884. command.addHelpChild(help, helpArg0);
  8885. //warp groups
  8886. command.addHelpChild(help, command.newHelpLiteral("groups", "warp.create"));
  8887. //warp list [group]
  8888. helpArg0 = command.newHelpLiteral("list");
  8889. command.addHelpChild(helpArg0, command.newHelpString("group", false, "warp.create"));
  8890. command.addHelpChild(help, helpArg0);
  8891. //warp [group] <name>
  8892. helpArg0 = command.newHelpString("name", false);
  8893. command.addHelpChild(help, helpArg0);
  8894. helpArg0 = command.newHelpString("group", false, "warp.create");
  8895. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8896. command.addHelpChild(help, helpArg0);
  8897. command.addHelp(help);
  8898. help = command.newHelp("teleport", "teleport");
  8899. helpArg0 = command.newHelpSpecial("Player", "player");
  8900. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "to-player", "teleport.other"));
  8901. command.addHelpChild(help, helpArg0);
  8902. command.addHelp(help);
  8903. commandhelp.addAlias(help, "tp", "teleport");
  8904. help = command.newHelp("lastseen", "lastseen");
  8905. command.addHelpChild(help, command.newHelpInt("amount", 1, 100));
  8906. command.addHelp(help);
  8907. help = command.newHelp("human", "human");
  8908. //human spawn
  8909. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  8910. //human set <name>
  8911. helpArg0 = command.newHelpLiteral("set");
  8912. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8913. command.addHelpChild(help, helpArg0);
  8914. //human setuuid <uuid>
  8915. helpArg0 = command.newHelpLiteral("setuuid");
  8916. command.addHelpChild(helpArg0, command.newHelpString("uuid", false));
  8917. command.addHelpChild(help, helpArg0);
  8918. //human name
  8919. helpArg0 = command.newHelpLiteral("name");
  8920. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  8921. command.addHelpChild(help, helpArg0);
  8922. //human kill
  8923. command.addHelpChild(help, command.newHelpLiteral("kill"));
  8924. //human size <scale>
  8925. helpArg0 = command.newHelpLiteral("size");
  8926. command.addHelpChild(helpArg0, command.newHelpInt("scale", 0, 100));
  8927. command.addHelpChild(help, helpArg0);
  8928. //human steve
  8929. command.addHelpChild(help, command.newHelpLiteral("steve"));
  8930. //human alex
  8931. command.addHelpChild(help, command.newHelpLiteral("alex"));
  8932. //human statue
  8933. helpArg0 = command.newHelpLiteral("statue");
  8934. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  8935. command.addHelpChild(help, helpArg0);
  8936. command.addHelp(help);
  8937. help = command.newHelp("mail", "mail");
  8938. //mail <player> <message>
  8939. helpArg0 = command.newHelpSpecial("Player", "player");
  8940. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8941. command.addHelpChild(help, helpArg0);
  8942. //mail new
  8943. command.addHelpChild(help, command.newHelpLiteral("new"));
  8944. //mail inbox
  8945. command.addHelpChild(help, command.newHelpLiteral("inbox"));
  8946. //mail outbox
  8947. command.addHelpChild(help, command.newHelpLiteral("outbox"));
  8948. //mail reset
  8949. command.addHelpChild(help, command.newHelpLiteral("reset", "mail.reset"));
  8950. command.addHelp(help);
  8951. help = command.newHelp("entities", "entities");
  8952. command.addHelpChild(help, command.newHelpString("world", false));
  8953. command.addHelp(help);
  8954. help = command.newHelp("playtime", "playtime");
  8955. //playtime [player]
  8956. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8957. //playtime all
  8958. command.addHelpChild(help, command.newHelpLiteral("all"));
  8959. //playtime month [1-12] [year]
  8960. helpArg0 = command.newHelpLiteral("month");
  8961. helpArg1 = command.newHelpInt("int", 1, 12);
  8962. command.addHelpChild(helpArg1, command.newHelpInt("year", 2019, 2024));
  8963. command.addHelpChild(helpArg0, helpArg1);
  8964. command.addHelpChild(help, helpArg0);
  8965. //playtime year [year]
  8966. helpArg0 = command.newHelpLiteral("year");
  8967. command.addHelpChild(helpArg0, command.newHelpInt("year", 2019, 2024));
  8968. command.addHelpChild(help, helpArg0);
  8969. command.addHelp(help);
  8970. help = command.newHelp("user", "user");
  8971. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  8972. command.addHelp(help);
  8973. help = command.newHelp("skills", "skills");
  8974. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  8975. command.addHelp(help);
  8976. help = command.newHelp("cli", "cli");
  8977. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8978. command.addHelp(help);
  8979. help = command.newHelp("plant", "plant");
  8980. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8981. command.addHelp(help);
  8982. help = command.newHelp("grow", "grow");
  8983. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8984. command.addHelp(help);
  8985. help = command.newHelp("plough", "plough");
  8986. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  8987. command.addHelp(help);
  8988. help = command.newHelp("news", "news");
  8989. command.addHelpChild(help, command.newHelpString("text", true));
  8990. command.addHelp(help);
  8991. help = command.newHelp("inv", "inv");
  8992. //inv ignore
  8993. command.addHelpChild(help, command.newHelpLiteral("ignore"));
  8994. //inv see <player>
  8995. helpArg0 = command.newHelpLiteral("see");
  8996. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8997. command.addHelpChild(help, helpArg0);
  8998. //inv reload <player>
  8999. helpArg0 = command.newHelpLiteral("reload");
  9000. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9001. command.addHelpChild(help, helpArg0);
  9002. //inv loadFrom <player> <world>
  9003. helpArg0 = command.newHelpLiteral("loadFrom");
  9004. helpArg1 = command.newHelpSpecial("Player", "player");
  9005. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  9006. command.addHelpChild(helpArg0, helpArg1);
  9007. command.addHelpChild(help, helpArg0);
  9008. //inv saveFor <player> <world>
  9009. helpArg0 = command.newHelpLiteral("saveFor");
  9010. helpArg1 = command.newHelpSpecial("Player", "player");
  9011. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  9012. command.addHelpChild(helpArg0, helpArg1);
  9013. command.addHelpChild(help, helpArg0);
  9014. command.addHelp(help);
  9015. help = command.newHelp("warn", "warn");
  9016. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9017. command.addHelp(help);
  9018. help = command.newHelp("jail", "jail");
  9019. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9020. command.addHelp(help);
  9021. help = command.newHelp("unjail", "unjail");
  9022. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9023. command.addHelp(help);
  9024. help = command.newHelp("friend", "friend");
  9025. //friend add <player>
  9026. helpArg0 = command.newHelpLiteral("add");
  9027. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9028. command.addHelpChild(help, helpArg0);
  9029. //friend remove <player>
  9030. helpArg0 = command.newHelpLiteral("remove");
  9031. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9032. command.addHelpChild(help, helpArg0);
  9033. //friend list
  9034. command.addHelpChild(help, command.newHelpLiteral("list"));
  9035. command.addHelp(help);
  9036. commandhelp.addAlias(help, "f", "friend");
  9037. help = command.newHelp("sign", "sign");
  9038. helpArg0 = command.newHelpInt("1-4", 1, 4);
  9039. command.addHelpChild(helpArg0, command.newHelpString("text", true));
  9040. command.addHelpChild(help, helpArg0);
  9041. command.addHelp(help);
  9042. help = command.newHelp("speed", "speed");
  9043. helpArg0 = command.newHelpInt("int", 1, 10);
  9044. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "speed.other"));
  9045. command.addHelpChild(help, helpArg0);
  9046. command.addHelp(help);
  9047. help = command.newHelp("errordebug", "errordebug");
  9048. command.addHelpChild(help, command.newHelpLiteral("list"));
  9049. command.addHelpChild(help, command.newHelpLiteral("clear"));
  9050. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  9051. command.addHelp(help);
  9052. help = command.newHelp("error", "error");
  9053. command.addHelpChild(help, command.newHelpLiteral("list"));
  9054. command.addHelpChild(help, command.newHelpLiteral("clear"));
  9055. command.addHelp(help);
  9056. help = command.newHelp("mailbox", "mailbox");
  9057. //mailbox show <player>
  9058. helpArg0 = command.newHelpLiteral("show");
  9059. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "mailbox.other"));
  9060. command.addHelpChild(help, helpArg0);
  9061. //mailbox send <player>
  9062. helpArg0 = command.newHelpLiteral("send");
  9063. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9064. command.addHelpChild(help, helpArg0);
  9065. command.addHelp(help);
  9066. help = command.newHelp("world", "world");
  9067. //world info
  9068. command.addHelpChild(help, command.newHelpLiteral("info"));
  9069. //world tp <world> [player]
  9070. helpArg0 = command.newHelpLiteral("tp");
  9071. helpArg1 = command.newHelpString("world", false);
  9072. command.addHelpChild(helpArg1, command.newHelpSpecial("Player", "player"));
  9073. command.addHelpChild(helpArg0, helpArg1);
  9074. command.addHelpChild(help, helpArg0);
  9075. //world list
  9076. command.addHelpChild(help, command.newHelpLiteral("list"));
  9077. //world diffi <world> <diffi>
  9078. helpArg0 = command.newHelpLiteral("diffi");
  9079. helpArg1 = command.newHelpString("world", false);
  9080. command.addHelpChild(helpArg1, command.newHelpLiteral("PEACEFUL"));
  9081. command.addHelpChild(helpArg1, command.newHelpLiteral("EASY"));
  9082. command.addHelpChild(helpArg1, command.newHelpLiteral("NORMAL"));
  9083. command.addHelpChild(helpArg1, command.newHelpLiteral("HARD"));
  9084. command.addHelpChild(helpArg0, helpArg1);
  9085. command.addHelpChild(help, helpArg0);
  9086. //world setspawn
  9087. helpArg0 = command.newHelpLiteral("setspawn");
  9088. command.addHelpChild(help, helpArg0);
  9089. command.addHelp(help);
  9090. help = command.newHelp("quest", "quest");
  9091. //quest see
  9092. command.addHelpChild(help, command.newHelpLiteral("see"));
  9093. //quest term <player>
  9094. helpArg0 = command.newHelpLiteral("term");
  9095. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9096. command.addHelpChild(help, helpArg0);
  9097. command.addHelp(help);
  9098. help = command.newHelp("pvp", "pvp");
  9099. helpArg0 = command.newHelpLiteral("on");
  9100. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  9101. command.addHelpChild(help, helpArg0);
  9102. helpArg0 = command.newHelpLiteral("off");
  9103. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  9104. command.addHelpChild(help, helpArg0);
  9105. command.addHelp(help);
  9106. help = command.newHelp("game", "game");
  9107. command.addHelpChild(help, command.newHelpLiteral("open"));
  9108. command.addHelpChild(help, command.newHelpLiteral("close"));
  9109. command.addHelp(help);
  9110. help = command.newHelp("party", "party");
  9111. //party invite <player>
  9112. helpArg0 = command.newHelpLiteral("invite");
  9113. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9114. command.addHelpChild(help, helpArg0);
  9115. //party accept <player>
  9116. helpArg0 = command.newHelpLiteral("accept");
  9117. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9118. command.addHelpChild(help, helpArg0);
  9119. //party deny <player>
  9120. helpArg0 = command.newHelpLiteral("deny");
  9121. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9122. command.addHelpChild(help, helpArg0);
  9123. //party kick <player>
  9124. helpArg0 = command.newHelpLiteral("kick");
  9125. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9126. command.addHelpChild(help, helpArg0);
  9127. //party leave
  9128. command.addHelpChild(help, command.newHelpLiteral("leave"));
  9129. //party promote <player>
  9130. helpArg0 = command.newHelpLiteral("promote");
  9131. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9132. command.addHelpChild(help, helpArg0);
  9133. //party demote <player>
  9134. helpArg0 = command.newHelpLiteral("demote");
  9135. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9136. command.addHelpChild(help, helpArg0);
  9137. //party disband
  9138. command.addHelpChild(help, command.newHelpLiteral("disband"));
  9139. //party list
  9140. command.addHelpChild(help, command.newHelpLiteral("list"));
  9141. command.addHelp(help);
  9142. help = command.newHelp("var", "var");
  9143. helpArg0 = command.newHelpInt("id", 0, 1000000);
  9144. command.addHelpChild(helpArg0, command.newHelpString("varname", false));
  9145. command.addHelpChild(help, helpArg0);
  9146. command.addHelp(help);
  9147. help = command.newHelp("setservermessage", "setservermessage");
  9148. command.addHelpChild(help, command.newHelpString("message", true));
  9149. command.addHelp(help);
  9150. help = command.newHelp("clan", "clan");
  9151. //clan invite <name>
  9152. helpArg0 = command.newHelpLiteral("invite");
  9153. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9154. command.addHelpChild(help, helpArg0);
  9155. //clan accept <id/name/tag>
  9156. helpArg0 = command.newHelpLiteral("invite");
  9157. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  9158. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  9159. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  9160. command.addHelpChild(help, helpArg0);
  9161. //clan info [id/name/tag]
  9162. helpArg0 = command.newHelpLiteral("info");
  9163. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  9164. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  9165. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  9166. command.addHelpChild(help, helpArg0);
  9167. //clan create <name> <tag>
  9168. helpArg0 = command.newHelpLiteral("create");
  9169. helpArg1 = command.newHelpString("name", false);
  9170. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  9171. command.addHelpChild(helpArg0, helpArg1);
  9172. command.addHelpChild(help, helpArg0);
  9173. //clan kick <name>
  9174. helpArg0 = command.newHelpLiteral("kick");
  9175. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9176. command.addHelpChild(help, helpArg0);
  9177. //clan leader <name>
  9178. helpArg0 = command.newHelpLiteral("leader");
  9179. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9180. command.addHelpChild(help, helpArg0);
  9181. //clan mod <name>
  9182. helpArg0 = command.newHelpLiteral("mod");
  9183. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9184. command.addHelpChild(help, helpArg0);
  9185. //clan degrade <name>
  9186. helpArg0 = command.newHelpLiteral("degrade");
  9187. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9188. command.addHelpChild(help, helpArg0);
  9189. //clan leave
  9190. command.addHelpChild(help, command.newHelpLiteral("leave"));
  9191. //clan rename <name> <tag>
  9192. helpArg0 = command.newHelpLiteral("rename");
  9193. helpArg1 = command.newHelpString("name", false);
  9194. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  9195. command.addHelpChild(helpArg0, helpArg1);
  9196. command.addHelpChild(help, helpArg0);
  9197. //clan disband
  9198. command.addHelpChild(help, command.newHelpLiteral("disband"));
  9199. //clan msg <message>
  9200. helpArg0 = command.newHelpLiteral("msg");
  9201. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9202. command.addHelpChild(help, helpArg0);
  9203. //clan mail <message>
  9204. helpArg0 = command.newHelpLiteral("mail");
  9205. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9206. command.addHelpChild(help, helpArg0);
  9207. //clan shout <message>
  9208. helpArg0 = command.newHelpLiteral("shout");
  9209. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9210. command.addHelpChild(help, helpArg0);
  9211. //clan deposit <money>
  9212. helpArg0 = command.newHelpLiteral("deposit");
  9213. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  9214. command.addHelpChild(help, helpArg0);
  9215. //clan withdraw <money>
  9216. helpArg0 = command.newHelpLiteral("withdraw");
  9217. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  9218. command.addHelpChild(help, helpArg0);
  9219. //clan party
  9220. command.addHelpChild(help, command.newHelpLiteral("party"));
  9221. //clan setspawn
  9222. command.addHelpChild(help, command.newHelpLiteral("setspawn"));
  9223. //clan spawn
  9224. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  9225. //clan list
  9226. command.addHelpChild(help, command.newHelpLiteral("list"));
  9227. command.addHelp(help);
  9228. help = command.newHelp("shop", "shop");
  9229. //shop create
  9230. command.addHelpChild(help, command.newHelpLiteral("create"));
  9231. //shop admin
  9232. command.addHelpChild(help, command.newHelpLiteral("admin"));
  9233. //shop remove
  9234. helpArg0 = command.newHelpLiteral("remove");
  9235. command.addHelpChild(helpArg0, command.newHelpLiteral("buy"));
  9236. command.addHelpChild(helpArg0, command.newHelpLiteral("sell"));
  9237. command.addHelpChild(help, helpArg0);
  9238. //shop buy <amount> <price>
  9239. helpArg0 = command.newHelpLiteral("buy");
  9240. helpArg1 = command.newHelpInt("amount", 0, 1000);
  9241. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  9242. command.addHelpChild(helpArg0, helpArg1);
  9243. command.addHelpChild(help, helpArg0);
  9244. //shop sell <amount> <price>
  9245. helpArg0 = command.newHelpLiteral("sell");
  9246. helpArg1 = command.newHelpInt("amount", 0, 1000);
  9247. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  9248. command.addHelpChild(helpArg0, helpArg1);
  9249. command.addHelpChild(help, helpArg0);
  9250. command.addHelp(help);
  9251. help = command.newHelp("setmessage", "setmessage");
  9252. //setmessage info
  9253. command.addHelpChild(help, command.newHelpLiteral("info"));
  9254. //setmessage join <message>
  9255. helpArg0 = command.newHelpLiteral("join");
  9256. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9257. command.addHelpChild(help, helpArg0);
  9258. //setmessage leave <message>
  9259. helpArg0 = command.newHelpLiteral("leave");
  9260. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9261. command.addHelpChild(help, helpArg0);
  9262. //setmessage delete <player>
  9263. helpArg0 = command.newHelpLiteral("delete");
  9264. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "setmessage.delete"));
  9265. command.addHelpChild(help, helpArg0);
  9266. command.addHelp(help);
  9267. help = command.newHelp("tip", "tip");
  9268. //tipp list
  9269. helpArg0 = command.newHelpLiteral("list");
  9270. command.addHelpChild(help, helpArg0);
  9271. //tipp add <tipp> <text>
  9272. helpArg0 = command.newHelpLiteral("add");
  9273. helpArg1 = command.newHelpString("tip", false);
  9274. command.addHelpChild(helpArg1, command.newHelpString("text", true));
  9275. command.addHelpChild(helpArg0, helpArg1);
  9276. command.addHelpChild(help, helpArg0);
  9277. //tipp remove <tipp>
  9278. helpArg0 = command.newHelpLiteral("remove");
  9279. command.addHelpChild(helpArg0, command.newHelpString("tip", false));
  9280. command.addHelpChild(help, helpArg0);
  9281. //tipp <tipp> [player]
  9282. helpArg0 = command.newHelpString("tip", false);
  9283. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  9284. command.addHelpChild(help, helpArg0);
  9285. //tipp loop <tip> <boolean>
  9286. helpArg0 = command.newHelpLiteral("loop");
  9287. helpArg1 = command.newHelpString("tip", false);
  9288. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  9289. command.addHelpChild(helpArg0, helpArg1);
  9290. command.addHelpChild(help, helpArg0);
  9291. command.addHelp(help);
  9292. help = command.newHelp("ticket", "ticket");
  9293. //ticket new <message>
  9294. helpArg0 = command.newHelpLiteral("new");
  9295. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  9296. command.addHelpChild(help, helpArg0);
  9297. //ticket stop <ticket-id>
  9298. helpArg0 = command.newHelpLiteral("stop");
  9299. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000));
  9300. command.addHelpChild(help, helpArg0);
  9301. //ticket list
  9302. command.addHelpChild(help, command.newHelpLiteral("list", "isSupporter"));
  9303. //ticket get [ticket-id]
  9304. helpArg0 = command.newHelpLiteral("get");
  9305. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9306. command.addHelpChild(help, helpArg0);
  9307. //ticket finish <ticket-id>
  9308. helpArg0 = command.newHelpLiteral("finish");
  9309. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9310. command.addHelpChild(help, helpArg0);
  9311. //ticket release <ticket-id>
  9312. helpArg0 = command.newHelpLiteral("release");
  9313. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9314. command.addHelpChild(help, helpArg0);
  9315. //ticket report <ticket-id>
  9316. helpArg0 = command.newHelpLiteral("report");
  9317. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  9318. command.addHelpChild(help, helpArg0);
  9319. command.addHelp(help);
  9320. help = command.newHelp("yeet", "yeet");
  9321. command.addHelpChild(help, command.newHelpInt("strength", 1, 10000000000000));
  9322. command.addHelp(help);
  9323. command.sendHelp();
  9324. }
  9325. function commandhelp.add(command) {
  9326. help = command.newHelp(command, command);
  9327. command.addHelp(help);
  9328. return help;
  9329. }
  9330. function commandhelp.addChildString(command, arg0, bool) {
  9331. help = command.newHelp(command, command);
  9332. command.addHelpChild(help, command.newHelpString(arg0, bool));
  9333. command.addHelp(help);
  9334. }
  9335. function commandhelp.addChildPlayer(command) {
  9336. help = command.newHelp(command, command);
  9337. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  9338. command.addHelp(help);
  9339. }
  9340. function commandhelp.addChildBool(command, arg0) {
  9341. help = command.newHelp(command, command);
  9342. command.addHelpChild(help, command.newHelpBool(arg0));
  9343. command.addHelp(help);
  9344. }
  9345. function commandhelp.addAlias(help, alias, command) {
  9346. helpAlias = command.newHelp(alias, command);
  9347. command.addHelpAlias(helpAlias, help);
  9348. command.addHelp(helpAlias);
  9349. }
  9350. function addStatsGameHelp(help, game) {
  9351. helpArg0 = command.newHelpLiteral(game);
  9352. command.addHelpChild(helpArg0, command.newHelpLiteral("top"));
  9353. command.addHelpChild(helpArg0, command.newHelpInt("rank", 1, 1000));
  9354. helpArg1 = command.newHelpSpecial("Player", "player");
  9355. command.addHelpChild(helpArg1, command.newHelpLiteral("remove", "stats.remove"));
  9356. command.addHelpChild(helpArg0, helpArg1);
  9357. command.addHelpChild(help, helpArg0);
  9358. }
  9359. function addDtAttributeAttributHelp(attribut) {
  9360. helpArg1 = command.newHelpLiteral(attribut);
  9361. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("mainhand"));
  9362. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("offhand"));
  9363. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("head"));
  9364. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("chest"));
  9365. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("legs"));
  9366. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("feet"));
  9367. return helpArg1;
  9368. }
  9369. function addDtAttributeSlotHelp(slot) {
  9370. helpArg2 = command.newHelpLiteral(slot);
  9371. helpArg3 = command.newHelpInt("double", 0, 1000);
  9372. command.addHelpChild(helpArg3, command.newHelpLiteral("ADDITION"));
  9373. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_BASE"));
  9374. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_TOTAL"));
  9375. command.addHelpChild(helpArg2, helpArg3);
  9376. return helpArg2;
  9377. }
  9378. function showJail(player_name) {
  9379. if(isOnline(player_name)) {
  9380. inv.open($jailmenu, read.player(player_name), "§8Gefängnis");
  9381. }
  9382. }
  9383. function isJailed(player_uuid) {
  9384. return(list.contains($jailed_list, player_uuid));
  9385. }
  9386. function command.register(command, description) {
  9387. command.add(command);
  9388. list.add($command_list, command);
  9389. map.add($command_map, command, description);
  9390. }
  9391. function command.registerAlias(alias, command) {
  9392. command.add(alias);
  9393. map.add($alias_map, alias, command);
  9394. }
  9395. //--------------------------------------------------
  9396. //Time-Utils
  9397. //--------------------------------------------------
  9398. //Spielzeit aller Online-Spieler
  9399. function playtime.getTotalOnlineMinutes() {
  9400. minutes = 0;
  9401. iter = list.iterator(players.toList());
  9402. while(hasNext(iter)) {
  9403. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  9404. }
  9405. return minutes;
  9406. }
  9407. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  9408. function playtime.getInterval(from, to) {
  9409. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  9410. databank.setLong(stmt, 1, from);
  9411. databank.setLong(stmt, 2, to);
  9412. result = databank.execute(stmt);
  9413. if(databank.next(result)) {
  9414. minutes = databank.getLong(result, 1) / 1000 / 60;
  9415. } else {
  9416. minutes = 0;
  9417. }
  9418. databank.close(result);
  9419. databank.close(stmt);
  9420. return minutes;
  9421. }
  9422. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  9423. function playtime.getTotal() {
  9424. minutes = playtime.getTotalOnlineMinutes();
  9425. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  9426. result = databank.execute(stmt);
  9427. if(databank.next(result)) {
  9428. minutes += databank.getLong(result, 1) / 1000 / 60;
  9429. }
  9430. databank.close(result);
  9431. databank.close(stmt);
  9432. return minutes;
  9433. }
  9434. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  9435. function playtime.getPlayerInterval(player_id, from, to) {
  9436. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  9437. databank.setInt(stmt, 1, player_id);
  9438. databank.setLong(stmt, 2, from);
  9439. databank.setLong(stmt, 3, to);
  9440. result = databank.execute(stmt);
  9441. if(databank.next(result)) {
  9442. minutes = databank.getLong(result, 1) / 1000 / 60;
  9443. } else {
  9444. minutes = 0;
  9445. }
  9446. databank.close(result);
  9447. databank.close(stmt);
  9448. return minutes;
  9449. }
  9450. function playtime.getPlayersPerInterval(from, to) {
  9451. set = set.new();
  9452. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  9453. databank.setLong(stmt, 1, from);
  9454. databank.setLong(stmt, 2, to);
  9455. result = databank.execute(stmt);
  9456. while(databank.next(result)) {
  9457. set.add(set, databank.getInt(result, 1));
  9458. }
  9459. databank.close(result);
  9460. databank.close(stmt);
  9461. return set.getSize(set);
  9462. }
  9463. function time.getYearDays(year) {
  9464. days = 365;
  9465. if(year % 4 == 0) {
  9466. days++;
  9467. }
  9468. return days;
  9469. }
  9470. function time.getMonthDays(month, year) {
  9471. days = month.getDays(month);
  9472. //Schaltjahre
  9473. if(month == 2 && year % 4 == 0) {
  9474. days++;
  9475. }
  9476. return days;
  9477. }
  9478. function time.getDaysBetween(day1, month1, year1, day2, month2, year2) {
  9479. d_days = 0;
  9480. m_days = 0;
  9481. y_days = 0;
  9482. y = 0;
  9483. m = 0;
  9484. d = 0;
  9485. //Volle Jahre
  9486. for(year = year1 + 1; year < year2; year++) {
  9487. y_days += time.getYearDays(year);
  9488. y++;
  9489. }
  9490. if(year1 == year2) {
  9491. //Volle Monate
  9492. for(month = month1 + 1; month < month2; month++) {
  9493. m_days += time.getMonthDays(month, year1);
  9494. }
  9495. //Volle Tage
  9496. if(month1 == month2) {
  9497. d_days = day2 - day1;
  9498. } else {
  9499. d_days += month.getDays(month1) - day1;
  9500. d_days += day2;
  9501. }
  9502. } else {
  9503. //Volle Monate
  9504. for(month = month1 + 1; month < 13; month++) {
  9505. m_days += time.getMonthDays(month, year1);
  9506. m++;
  9507. }
  9508. for(month = 1; month < month2; month++) {
  9509. m_days += time.getMonthDays(month, year2);
  9510. m++;
  9511. }
  9512. //Volle Tage
  9513. d_days += month.getDays(month1) - day1;
  9514. d_days += day2;
  9515. }
  9516. return y_days + m_days + d_days;
  9517. }
  9518. function month.add(month_index, shortname, days) {
  9519. $month_array[month_index, 0] = shortname;
  9520. $month_array[month_index, 1] = days;
  9521. }
  9522. function month.getShortName(month) {
  9523. return $month_array[month - 1, 0];
  9524. }
  9525. function month.getDays(month) {
  9526. return $month_array[month - 1, 1];
  9527. }
  9528. //--------------------------------------------------
  9529. //Player-Utils
  9530. //--------------------------------------------------
  9531. function player.hasClanInvitation(player_or_id, clan_id) {
  9532. if(isPlayer(player_or_id)) {
  9533. player_id = player.getId(player_or_id);
  9534. } else {
  9535. player_id = player_or_id;
  9536. }
  9537. iter = list.iterator($clan_invitations);
  9538. while(hasNext(iter)) {
  9539. invitation = next(iter);
  9540. p_id = invitation[0];
  9541. c_id = invitation[1];
  9542. if(player_id == p_id && clan_id == c_id) {
  9543. return true;
  9544. }
  9545. }
  9546. return false;
  9547. }
  9548. function player.addClanInvitation(player_id, clan_id) {
  9549. invitation = array.new(2);
  9550. invitation[0] = player_id;
  9551. invitation[1] = clan_id;
  9552. list.add($clan_invitations, invitation);
  9553. }
  9554. //--------------------------------------------------
  9555. //Party-Utils
  9556. //--------------------------------------------------
  9557. function party.invitePlayer(inviter, invitee) {
  9558. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  9559. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  9560. //Ansonsten neue Party-ID vergeben.
  9561. inviter_uuid = player.getUuid(inviter);
  9562. if(player.isInParty(inviter)) {
  9563. party_id = player.getPartyId(inviter);
  9564. } else {
  9565. party_id = map.get($party_invite_ids, inviter_uuid);
  9566. if(party_id == null) {
  9567. party_id = ++$party_counter;
  9568. }
  9569. }
  9570. if(invitee == null) {
  9571. return "inviteeNotOnline";
  9572. }
  9573. if(inviter == invitee) {
  9574. return "inviterEqualsInvitee";
  9575. }
  9576. if(player.isInParty(inviter)) {
  9577. if(!player.isPartyLeaderOrMod(inviter)) {
  9578. return "inviterNotPermitted";
  9579. }
  9580. }
  9581. if(player.isInParty(invitee)) {
  9582. return "inviteeAlreadyInParty";
  9583. }
  9584. invitee_uuid = player.getUuid(invitee);
  9585. list = map.get($party_invitations, invitee_uuid);
  9586. if(list == null) {
  9587. list = list.new();
  9588. map.add($party_invitations, invitee_uuid, list);
  9589. }
  9590. if(list.contains(list, inviter_uuid)) {
  9591. return "inviteeAlreadyInvited";
  9592. }
  9593. list.add(list, inviter_uuid);
  9594. list.add($deluuid, inviter_uuid);
  9595. list.add($delkeytime, time.getMillis());
  9596. list = map.get($delkeytimes, invitee_uuid);
  9597. if(list == null) {
  9598. list = list.new();
  9599. map.add($delkeytimes, invitee_uuid, list);
  9600. }
  9601. list.add(list, time.getMillis());
  9602. map.add($party_invite_ids, inviter_uuid, party_id);
  9603. inviter_name = player.getName(inviter);
  9604. msg.prefix(invitee, $prefix_party, concat(inviter_name, " invites you to a party."));
  9605. msg(invitee, " §5=> §rAccept ? ", text.click("[§aYes§r] ", concat("/party accept ", inviter_name)), text.click("[§cNo§r]", concat("/party deny ", inviter_name)));
  9606. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  9607. return true;
  9608. }
  9609. function party.kickPlayer(player, reason) {
  9610. party_id = player.getPartyId(player);
  9611. //Nachrichten
  9612. player_name = player.getName(player);
  9613. if(reason == "kick") {
  9614. message = concat("§r", player_name, " has been kicked out of the party.");
  9615. } else {
  9616. message = concat("§r", player_name, " has left the party.");
  9617. }
  9618. party.sendMessage(party_id, message);
  9619. player_uuid = player.getUuid(player_name);
  9620. //aus Partyliste entfernen
  9621. party_list = party.getList(party_id);
  9622. list.remove(party_list, player_uuid);
  9623. //ID und Rang entfernen
  9624. rank = player.getPartyRank(player);
  9625. player.delPartyRank(player);
  9626. player.delPartyId(player);
  9627. //Einladungen löschen
  9628. map.remove($party_invitations, player_uuid);
  9629. map.remove($delkeytimes, player_uuid);
  9630. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  9631. if(list.getSize(party_list) < 2) {
  9632. party.delete(party_id);
  9633. return;
  9634. }
  9635. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  9636. if(rank == "Leader") {
  9637. new_player = player.get(list.getIndex(party_list, 0));
  9638. player.setPartyRank(new_player, "Leader");
  9639. party.sendMessage(party_id, concat("§r", player.getName(new_player), " is now Leader."));
  9640. }
  9641. }
  9642. function party.sendMessage(party_id, message) {
  9643. iter = list.iterator(party.getList(party_id));
  9644. while(hasNext(iter)) {
  9645. msg.prefix(player.get(next(iter)), $prefix_party, message);
  9646. }
  9647. }
  9648. function party.delete(party_id) {
  9649. party.sendMessage(party_id, "Party disbanded.");
  9650. iter = list.iterator(party.getList(party_id));
  9651. while(hasNext(iter)) {
  9652. player = player.get(next(iter));
  9653. player.delPartyRank(player);
  9654. player.delPartyId(player);
  9655. }
  9656. }
  9657. @deletePartyInvitation
  9658. player_uuid = list.getIndex(deluuid, 0);
  9659. invitations = map.get(party_invitations, player_uuid);
  9660. keytimes = map.get(delkeytimes, player_uuid);
  9661. if(invitations != null) {
  9662. if(list.getSize(invitations) != 0) {
  9663. keytime = list.getIndex(delkeytime, 0);
  9664. keytime2 = list.getIndex(keytimes, 0);
  9665. list.remove(delkeytime, keytime);
  9666. if(keytime == keytime2) {
  9667. index = list.getIndexOf(keytimes, keytime2);
  9668. list.remove(keytimes, keytime2);
  9669. list.removeIndex(invitations, index);
  9670. }
  9671. }
  9672. }
  9673. goto("wait");
  9674. //--------------------------------------------------
  9675. //Plot-Utils
  9676. //--------------------------------------------------
  9677. function plot.registerMoveEvents(world) {
  9678. iter = plot.iterator(world);
  9679. while(hasNext(iter)) {
  9680. plot = next(iter);
  9681. if(plot.isCity(plot) || plot.isPlot(plot)) {
  9682. plot.setMoveEvent(plot, world);
  9683. }
  9684. }
  9685. }
  9686. function plot.delMoveEvent(plot) {
  9687. plot_id = plot.getId(plot);
  9688. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  9689. a = list.getIndex($plot_move_ids_list, i);
  9690. if(a[1] == plot_id) {
  9691. event.removeMoveData(a[0]);
  9692. list.removeIndex($plot_move_ids_list, i);
  9693. break;
  9694. }
  9695. }
  9696. }
  9697. function plot.setMoveEvent(plot, world) {
  9698. x1 = plot.getMinX(plot);
  9699. y1 = plot.getMinY(plot);
  9700. z1 = plot.getMinZ(plot);
  9701. x2 = plot.getMaxX(plot);
  9702. y2 = plot.getMaxY(plot);
  9703. z2 = plot.getMaxZ(plot);
  9704. loc1 = loc.new(world, x1, y1, z1);
  9705. loc2 = loc.new(world, x2, y2, z2);
  9706. move_id = event.addMoveData(loc1, loc2, 100, -1);
  9707. plot_id = plot.getId(plot);
  9708. a = array.new(2);
  9709. a[0] = move_id;
  9710. a[1] = plot_id;
  9711. list.add($plot_move_ids_list, a);
  9712. }
  9713. function plot.getPlotIdFromMoveId(move_id) {
  9714. iter = list.iterator($plot_move_ids_list);
  9715. while(hasNext(iter)) {
  9716. a = next(iter);
  9717. if(a[0] == move_id) {
  9718. return a[1];
  9719. }
  9720. }
  9721. return null;
  9722. }
  9723. function plot.getMoveIdFromPlotId(plot_id) {
  9724. iter = list.iterator($plot_move_ids_list);
  9725. while(hasNext(iter)) {
  9726. a = next(iter);
  9727. if(a[1] == plot_id) {
  9728. return a[0];
  9729. }
  9730. }
  9731. return null;
  9732. }
  9733. @checkForPlot
  9734. player_uuid = list.getIndex(check_for_plot_list, 0);
  9735. list.removeIndex(check_for_plot_list, 0);
  9736. player = player.get(player_uuid);
  9737. if(player == null) {
  9738. map.remove(actual_move_id, player_uuid);
  9739. goto("wait");
  9740. }
  9741. player_loc = entity.getLocation(player);
  9742. plot_list = plot.get(player_loc);
  9743. if(list.getSize(plot_list) == 0) {
  9744. map.remove(actual_move_id, player_uuid);
  9745. } else {
  9746. list.add(check_for_plot_list, player_uuid);
  9747. sgoto(100, "checkForPlot");
  9748. }
  9749. goto("wait");
  9750. function tpBottom(player) {
  9751. player_loc = entity.getLocation(player);
  9752. y = loc.getY(player_loc);
  9753. while(y > 0 && block.isAir(player_loc)) {
  9754. loc.setY(player_loc, y);
  9755. y--;
  9756. }
  9757. if(y <= 0) {
  9758. return;
  9759. }
  9760. loc.addY(player_loc, 1);
  9761. entity.teleport(player, player_loc);
  9762. }
  9763. //--------------------------------------------------
  9764. //Hawkeye-Utils
  9765. //--------------------------------------------------
  9766. function hawkeye.getStartIndices(string) {
  9767. a = array.new(5);
  9768. a[0] = text.indexOf(string, "e:", 0);
  9769. a[1] = text.indexOf(string, "p:", 0);
  9770. a[2] = text.indexOf(string, "r:", 0);
  9771. a[3] = text.indexOf(string, "t:", 0);
  9772. a[4] = text.length(string);
  9773. a = array.sort(a, true);
  9774. return a;
  9775. }
  9776. function hawkeye.getParStrings(string, indices) {
  9777. index = 0;
  9778. while(indices[index] == -1) {
  9779. index++;
  9780. }
  9781. start_index = indices[index];
  9782. if(start_index != 0) {
  9783. return null;
  9784. }
  9785. l = list.new();
  9786. while(++index < 5) {
  9787. next_index = indices[index];
  9788. if(index == 4) {
  9789. next_index++;
  9790. }
  9791. par_str = text.trim(text.subString(string, start_index, next_index - 1));
  9792. if(text.length(par_str) < 3) {
  9793. return null;
  9794. }
  9795. list.add(l, par_str);
  9796. start_index = next_index;
  9797. }
  9798. return l;
  9799. }
  9800. function hawkeye.processInput(args, player) {
  9801. string = text.concatList(args, " ", 1, list.getSize(args) - 1);
  9802. indices = hawkeye.getStartIndices(string);
  9803. par_strings = hawkeye.getParStrings(string, indices);
  9804. if(par_strings == null) {
  9805. return "False input parameters";
  9806. }
  9807. first_letters = set.new();
  9808. iter = list.iterator(par_strings);
  9809. while(hasNext(iter)) {
  9810. par_str = next(iter);
  9811. first_letter = text.subString(par_str, 0, 1);
  9812. if(set.contains(first_letters, first_letter)) {
  9813. return "Twice input parameters";
  9814. }
  9815. set.add(first_letters, first_letter);
  9816. par_str = text.subString(par_str, 2, text.length(par_str));
  9817. args_par_str = text.split(",", par_str);
  9818. if(first_letter == "e") {
  9819. events = list.new();
  9820. iter_args = list.iterator(args_par_str);
  9821. while(hasNext(iter_args)) {
  9822. list.add(events, next(iter_args));
  9823. }
  9824. }
  9825. elseif(first_letter == "p") {
  9826. players = list.new();
  9827. iter_args = list.iterator(args_par_str);
  9828. while(hasNext(iter_args)) {
  9829. list.add(players, next(iter_args));
  9830. }
  9831. }
  9832. elseif(first_letter == "r") {
  9833. if(list.getSize(args_par_str) > 1) {
  9834. return "False input at r:";
  9835. }
  9836. radius = list.getIndex(args_par_str, 0);
  9837. if(!isDouble(radius)) {
  9838. return "False input at r:";
  9839. }
  9840. }
  9841. elseif(first_letter == "t") {
  9842. if(list.getSize(args_par_str) > 3) {
  9843. return "False input at t:";
  9844. }
  9845. if(text.contains(par_str, "d")) {
  9846. d = true;
  9847. } else {
  9848. d = false;
  9849. }
  9850. time_span = 0;
  9851. iter_args = list.iterator(args_par_str);
  9852. while(hasNext(iter_args)) {
  9853. arg = next(iter_args);
  9854. if(text.contains(arg, "m")) {
  9855. minutes = text.convert(text.replace(arg, "m", ""));
  9856. if(!isDouble(minutes)) {
  9857. return "False input at t:";
  9858. }
  9859. time_span += minutes * 60;
  9860. }
  9861. elseif(text.contains(arg, "h")) {
  9862. hours = text.convert(text.replace(arg, "h", ""));
  9863. if(!isDouble(hours)) {
  9864. return "False input at t:";
  9865. }
  9866. time_span += hours * 60 * 60;
  9867. } else {
  9868. if(d) {
  9869. days = arg;
  9870. if(!isDouble(days)) {
  9871. return "False input at t:";
  9872. }
  9873. time_span += days * 24 * 60 * 60;
  9874. } else {
  9875. return "False input at t:";
  9876. }
  9877. }
  9878. }
  9879. timeTo = time.getMillis();
  9880. timeFrom = timeTo - time_span * 1000;
  9881. }
  9882. }
  9883. a = array.new(6);
  9884. a[0] = timeFrom;
  9885. a[1] = timeTo;
  9886. a[2] = entity.getLocation(player);
  9887. a[3] = radius;
  9888. a[4] = events;
  9889. a[5] = players;
  9890. return a;
  9891. }
  9892. function hawkeye.getAmountOfAll() {
  9893. stmt = databank.prepare("SELECT COUNT(*) FROM hawkeye;");
  9894. result = databank.execute(stmt);
  9895. if(databank.next(result)) {
  9896. amount = databank.getInt(result, 1);
  9897. } else {
  9898. amount = 0;
  9899. }
  9900. databank.close(result);
  9901. databank.close(stmt);
  9902. return amount;
  9903. }
  9904. function hawkeye.getEventName(event_id) {
  9905. return map.get($event_map, event_id);
  9906. }
  9907. //--------------------------------------------------
  9908. //Mailbox-Utils
  9909. //--------------------------------------------------
  9910. function mailbox.setItem(player_id, index, item) {
  9911. pfad = "scripts/configs/inv_data/mailbox";
  9912. config = config.new(pfad, player_id);
  9913. if(config.exists(config)) {
  9914. config.load(config);
  9915. }
  9916. item_string = text.item(item);
  9917. config.set(config, concat("item-", text.number(index)), item_string);
  9918. config.saveAsync(config);
  9919. }
  9920. function mailbox.getFreeIndex(player_id) {
  9921. pfad = "scripts/configs/inv_data/mailbox";
  9922. config = config.new(pfad, player_id);
  9923. if(config.exists(config)) {
  9924. config.load(config);
  9925. }
  9926. for(i = 0; i < 27; i++) {
  9927. item_string = config.getString(config, concat("item-", text.number(i)), "minecraft:air");
  9928. if(item_string == "minecraft:air") {
  9929. return i;
  9930. }
  9931. }
  9932. return -1;
  9933. }
  9934. function mailbox.show(to_player, player_id) {
  9935. pfad = "scripts/configs/inv_data/mailbox";
  9936. config = config.new(pfad, player_id);
  9937. if(config.exists(config)) {
  9938. config.load(config);
  9939. }
  9940. inv = inv.new("333333333333333333333333333");
  9941. for(i = 0; i < 27; i++) {
  9942. item_string = config.getString(config, concat("item-", text.number(i)), "minecraft:air");
  9943. item = read.item(item_string);
  9944. if(item == null) {
  9945. continue;
  9946. }
  9947. inv.setItem(inv, i, item);
  9948. }
  9949. inv.open(inv, to_player, concat("Mailbox from ", player.getNameFromId(player_id)));
  9950. }