commands.txt 283 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031
  1. waitfor(5); //Verhindert Endlos-Schleife on /start commands
  2. setCommandHelps();
  3. command.clear();
  4. //Games
  5. //command.add("hack");
  6. command.add("nextplayer");
  7. command.add("invstats");
  8. command.add("topinvstats");
  9. command.add("removeinvstats");
  10. command.add("sfstats");
  11. command.add("topsfstats");
  12. command.add("removesfstats");
  13. command.add("questanswer");
  14. command.add("infopoint1");
  15. command.add("infopoint2");
  16. command.add("infopoint3");
  17. command.add("infopoint4");
  18. command.add("infopoint5");
  19. command.add("infopoint6");
  20. command.add("infopoint7");
  21. command.add("infopoint8");
  22. command.add("infopoint9");
  23. command.add("infopoint10");
  24. command.add("infopoint11");
  25. //Vanilla überschreiben
  26. command.add("help");
  27. command.add("butcher");
  28. alias_map = map.new();
  29. command_list = list.new();
  30. command_map = map.new();
  31. command.register("afk", "Toggles afk");
  32. command.register("allsounds", "Plays all sounds");
  33. command.register("answer", "Answers the last private message");
  34. command.register("ass", "Armor Stand Signs");
  35. command.register("back", "Teleports to the last position");
  36. command.register("ban", "Bans a player");
  37. command.register("boost", "Boosts you up to the clouds");
  38. command.register("bug", "Report a bug");
  39. command.register("clan", "Clan-Commands");
  40. command.register("cli", "Clears items in a radius");
  41. command.register("color", "Shows all colors");
  42. command.register("coords", "Shows infos for the targeted block");
  43. command.register("copyisland", "Copyisland-Commands");
  44. command.register("databank", "Databank-Commands");
  45. command.register("datatools", "Datatools-Commands");
  46. command.register("enderchest", "Shows enderchests");
  47. command.register("error", "Error-Logger");
  48. command.register("errordebug", "Debug-Logger");
  49. command.register("feed", "Fills hunger bar");
  50. command.register("fly", "Toggles fly");
  51. command.register("friend", "Friend-Commands");
  52. command.register("game", "marvs minigame shit");
  53. command.register("gamemode", "Change gamemode");
  54. command.register("gamerule", "Manage gamerules");
  55. command.register("games", "Teleports to games-spawn");
  56. command.register("giveup", "Giveup a quest");
  57. command.register("grow", "Grow seeds");
  58. command.register("hat", "Be fame with a new hat");
  59. command.register("head", "Gives you a player's head");
  60. command.register("heal", "Heals, fills hunger bar and remove effects");
  61. command.register("home", "Manage your homes");
  62. command.register("live", "Toggles Live-Mode");
  63. command.register("leave", "Leave a minigame");
  64. command.register("human", "Human-Commands");
  65. command.register("inv", "Inv-Commands");
  66. command.register("iteminfo", "Returns information about an item");
  67. command.register("jail", "Sends a player to jail");
  68. command.register("kick", "Kicks a player");
  69. command.register("lastseen", "Shows the last players online");
  70. command.register("lightning", "Summons a lightning_bolt");
  71. command.register("list", "List all players online");
  72. command.register("mail", "Mail-Commands");
  73. command.register("memory", "Returns RAM-usage");
  74. command.register("msg", "Send a private message");
  75. command.register("mute", "Mutes a player");
  76. command.register("news", "Send Push-News to all players");
  77. command.register("nickname", "Set a nickname");
  78. command.register("nowb", "Sends no 'is back' message if afk");
  79. command.register("party", "Party-Commands");
  80. command.register("perm", "Manage permissions");
  81. command.register("plant", "Plant seeds");
  82. command.register("playtime", "Shows your playtime");
  83. command.register("plot", "Plot-Commands");
  84. command.register("plough", "Plough dirt around you");
  85. command.register("pvp", "Toggles pvp");
  86. command.register("rank", "Shows your available ranks");
  87. command.register("repair", "Repairs your item in mainhand");
  88. command.register("report", "Report whatever you want");
  89. command.register("ride", "Rides an entity");
  90. command.register("say", "[Server] chat message");
  91. command.register("script", "Script-Commands");
  92. command.register("seen", "Returns the last date the player was online");
  93. command.register("senditem", "Sends an itemstack to another player");
  94. command.register("setmessage", "Set your join/leave-message");
  95. command.register("setrank", "");
  96. command.register("setservermessage", "Sets the server-message in the serverlist");
  97. command.register("setspawn", "Changes a spawn");
  98. command.register("shop", "Shop-Commands");
  99. command.register("sign", "Edit a sign");
  100. command.register("silentban", "Silently bans a player");
  101. command.register("silentjoin", "Toggled Silentjoins");
  102. command.register("silentkick", "Silently kicks a player");
  103. command.register("skills", "Shows all skills");
  104. command.register("spawn", "Teleports to spawn");
  105. command.register("speed", "Sets your speed");
  106. command.register("start", "Starts a script");
  107. command.register("startgame", "Reduces start-countdown for a minigame");
  108. command.register("stats", "Statistics-Commands");
  109. command.register("stopadventure", "Stops an adventure");
  110. command.register("story", "Teleports to story-spawn");
  111. command.register("suicide", "Kill yourself");
  112. command.register("teleport", "Teleports a player to a player");
  113. command.register("tempban", "Bans a player temporarly");
  114. command.register("tempfly", "Let a player temporarly fly");
  115. command.register("ticket", "Ticket-Commands");
  116. command.register("time", "Time-Commands");
  117. command.register("tip", "Tip-Commands");
  118. command.register("top", "Teleports to to highest point at the current position");
  119. command.register("tpa", "Sends a teleport request to a player");
  120. command.register("tpahere", "Sends a teleport request to a player");
  121. command.register("tpaccept", "Accepts a teleport request");
  122. command.register("tpaccepthere", "Accepts a teleport request");
  123. command.register("tppos", "Teleports to coordinates");
  124. command.register("unban", "Unbans a player");
  125. command.register("unjail", "Releases a player from jail");
  126. command.register("unmute", "Unmutes a player");
  127. command.register("user", "Returns infos about a user");
  128. command.register("vanish", "Vanishes a player");
  129. command.register("var", "Reads variables from a scripts");
  130. command.register("voxel", "Set radius for voxel");
  131. command.register("warn", "Warns a player");
  132. command.register("warp", "Warp-Commands");
  133. command.register("weather", "Weather-Commands");
  134. command.register("world", "World-Commands");
  135. command.registerAlias("afklo", "afk");
  136. command.registerAlias("itemdb", "iteminfo");
  137. command.registerAlias("skull", "head");
  138. command.registerAlias("skick", "silentkick");
  139. command.registerAlias("sban", "silentban");
  140. command.registerAlias("tell", "msg");
  141. command.registerAlias("r", "answer");
  142. command.registerAlias("pardon", "unban");
  143. command.registerAlias("mimimi", "help");
  144. command.registerAlias("ci", "copyisland");
  145. command.registerAlias("mem", "memory");
  146. command.registerAlias("tp", "teleport");
  147. command.registerAlias("homes", "home");
  148. command.registerAlias("colour", "color");
  149. command.registerAlias("gm", "gamemode");
  150. command.registerAlias("p", "plot");
  151. command.registerAlias("coord", "coords");
  152. command.registerAlias("dt", "datatools");
  153. command.registerAlias("f", "friend");
  154. command.registerAlias("l", "leave");
  155. command.registerAlias("v", "vanish");
  156. command.registerAlias("hub", "leave");
  157. command.registerAlias("fuckit", "giveup");
  158. command.registerAlias("ram", "memory");
  159. command.registerAlias("thor", "lightning");
  160. composter_par = particle.get("composter");
  161. beds_tag = block.getTag("minecraft:beds");
  162. chest_tag = block.getTag("forge:chests");
  163. sign_tag = block.getTag("minecraft:signs");
  164. dirt_tag = block.getTag("forge:dirt");
  165. gamesspawn = world.getGamesSpawn();
  166. serverspawn = world.getServerSpawn();
  167. prefix_clan = "§2Clan";
  168. prefix_tips = "§eTips";
  169. prefix_lock = "§eLock";
  170. prefix_commands = "§6Commands";
  171. prefix_friends = "§5Friends";
  172. prefix_world = "§bWorld";
  173. prefix_jail = "§5Jail";
  174. prefix_quest = "§dQuest";
  175. prefix_perms = "§6Perms";
  176. prefix_datatools = "§6DataTools";
  177. prefix_human = "§6Human";
  178. prefix_plot = "§dPlots";
  179. prefix_party = "§5Party";
  180. prefix_skill = "§2Skill";
  181. party_ids = getScriptVar("party_ids");
  182. if(party_ids == null) {
  183. party_ids = map.new();
  184. setScriptVar("party_ids", map.new()); //Player, partyid
  185. }
  186. party_lists = getScriptVar("party_lists");
  187. if(party_lists == null) {
  188. party_lists = map.new();
  189. setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
  190. }
  191. party_ranks = getScriptVar("party_ranks");
  192. if(party_ranks == null) {
  193. party_ranks = map.new();
  194. setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
  195. }
  196. party_counter = getScriptVar("party_counter");
  197. if(party_counter == null) {
  198. party_counter = 0;
  199. setScriptVar("party_counter", party_counter); //Player, partyid
  200. }
  201. delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
  202. delkeytimes = map.new(); //Player_uuid, Liste mit Zeitpunkten zum Löschen der Einladungen
  203. deluuid = list.new(); //Alle Player_uuids zum Löschen der Einladungen
  204. party_invitations = map.new(); //Player_uuid, Liste mit Player_uuids aller Einlader
  205. party_invite_ids = map.new(); //Player_uuid, partyid
  206. list = getScriptVar("block_commands_list");
  207. if(list == null) {
  208. list = list.new();
  209. setScriptVar("block_commands_list", list);
  210. }
  211. live_set = getScriptVar("live_set");
  212. if(live_set == null) {
  213. live_set = set.new();
  214. setScriptVar("live_set", live_set);
  215. } else {
  216. //Register all Live-Players again
  217. iter = set.iterator(live_set);
  218. while(hasNext(iter)) {
  219. player = player.get(next(iter));
  220. if(player != null) {
  221. player.setLive(player, true);
  222. }
  223. }
  224. }
  225. afk_map = getScriptVar("afk_map");
  226. if(afk_map == null) {
  227. afk_map = map.new();
  228. setScriptVar("afk_map", afk_map);
  229. } else {
  230. //Alle Spieler, die AFK waren, wieder als AFK registrieren
  231. iter = map.iterator(afk_map);
  232. while(hasNext(iter)) {
  233. element = next(iter);
  234. player = player.get(map.getKey(element));
  235. if(player != null) {
  236. player.setAfk(player, true);
  237. }
  238. }
  239. }
  240. sgoto(10, "coordsloop");
  241. clan_invitations = list.new();
  242. friend_requests = map.new();
  243. lock_chests = map.new();
  244. chatbuffer = map.new();
  245. tpa_request = list.new();
  246. answer_map = map.new();
  247. warninglist = list.new();
  248. plotpos1 = map.new();
  249. plotpos2 = map.new();
  250. invseeids = set.new();
  251. ride_set = set.new();
  252. fields = set.new();
  253. vanish_set = set.new();
  254. skip_night_set = set.new();
  255. butcher_set = set.new();
  256. set.add(butcher_set, "zombie");
  257. set.add(butcher_set, "zombie_villager");
  258. set.add(butcher_set, "husk");
  259. set.add(butcher_set, "skeleton");
  260. set.add(butcher_set, "creeper");
  261. set.add(butcher_set, "enderman");
  262. set.add(butcher_set, "pillager");
  263. set.add(butcher_set, "spider");
  264. set.add(butcher_set, "phantom");
  265. set.add(butcher_set, "witch");
  266. set.add(butcher_set, "stray");
  267. set.add(butcher_set, "drowned");
  268. set.add(butcher_set, "wither");
  269. set.add(butcher_set, "silverfish");
  270. set.add(butcher_set, "zombified_piglin");
  271. rank_array = array.new(25, 2);
  272. //Playtime
  273. rank_array[0, 0] = "rank.owner";
  274. rank_array[0, 1] = "4Owner";
  275. rank_array[1, 0] = "rank.admin";
  276. rank_array[1, 1] = "cAdmin";
  277. rank_array[2, 0] = "rank.moderator";
  278. rank_array[2, 1] = "9Moderator";
  279. rank_array[3, 0] = "rank.supporter";
  280. rank_array[3, 1] = "bSupporter";
  281. rank_array[4, 0] = "rank.dev";
  282. rank_array[4, 1] = "5Developer";
  283. rank_array[5, 0] = "rank.builder";
  284. rank_array[5, 1] = "5Builder";
  285. rank_array[6, 0] = "rank.vip";
  286. rank_array[6, 1] = "dVIP";
  287. rank_array[7, 0] = "rank.influencer";
  288. rank_array[7, 1] = "dInfluencer";
  289. rank_array[8, 0] = "rank.sponsor";
  290. rank_array[8, 1] = "dSponsor";
  291. rank_array[9, 0] = "rank.legend";
  292. rank_array[9, 1] = "2Legend";
  293. rank_array[10, 0] = "rank.pioneer";
  294. rank_array[10, 1] = "2Pioneer";
  295. rank_array[11, 0] = "rank.lord";
  296. rank_array[11, 1] = "2Lord";
  297. rank_array[12, 0] = "rank.altruist";
  298. rank_array[12, 1] = "2Altruist";
  299. rank_array[13, 0] = "major";
  300. rank_array[13, 1] = "2Major";
  301. rank_array[14, 0] = "rank.frequenter";
  302. rank_array[14, 1] = "6Frequenter";
  303. rank_array[15, 0] = "rank.explorer";
  304. rank_array[15, 1] = "6Explorer";
  305. rank_array[16, 0] = "rank.chief";
  306. rank_array[16, 1] = "6Chief";
  307. rank_array[17, 0] = "rank.friend";
  308. rank_array[17, 1] = "6Friend";
  309. rank_array[18, 0] = "rank.colonizer";
  310. rank_array[18, 1] = "6Colonizer";
  311. rank_array[19, 0] = "rank.newcomer";
  312. rank_array[19, 1] = "eNewcomer";
  313. rank_array[20, 0] = "rank.adventurer";
  314. rank_array[20, 1] = "eAdventurer";
  315. rank_array[21, 0] = "rank.commander";
  316. rank_array[21, 1] = "eCommander";
  317. rank_array[22, 0] = "rank.volunteer";
  318. rank_array[22, 1] = "eVolunteer";
  319. rank_array[23, 0] = "rank.settler";
  320. rank_array[23, 1] = "eSettler";
  321. rank_array[24, 0] = "rank.user";
  322. rank_array[24, 1] = "3User";
  323. setScriptVar("ranks", rank_array);
  324. permgroupToRank = map.new();
  325. map.add(permgroupToRank, "admin", "cAdmin");
  326. map.add(permgroupToRank, "builder", "5Builder");
  327. map.add(permgroupToRank, "vip", "dVIP");
  328. map.add(permgroupToRank, "dev", "5Developer");
  329. map.add(permgroupToRank, "supporter", "bSupporter");
  330. map.add(permgroupToRank, "mod", "9Moderator");
  331. map.add(permgroupToRank, "yt", "dInfluencer");
  332. map.add(permgroupToRank, "streamer", "dInfluencer");
  333. map.add(permgroupToRank, "sponsor", "dSponsor");
  334. permgroupsmap = map.new();
  335. map.add(permgroupsmap, "worldedit", 1);
  336. map.add(permgroupsmap, "admin", 2);
  337. map.add(permgroupsmap, "builder", 3);
  338. map.add(permgroupsmap, "vip", 4);
  339. map.add(permgroupsmap, "dev", 5);
  340. map.add(permgroupsmap, "teleport", 6);
  341. map.add(permgroupsmap, "supporter", 9);
  342. map.add(permgroupsmap, "streamer", 11);
  343. map.add(permgroupsmap, "mod", 12);
  344. map.add(permgroupsmap, "yt", 13);
  345. map.add(permgroupsmap, "sponsor", 14);
  346. map.add(permgroupsmap, "bypass", 15);
  347. map.add(permgroupsmap, "creative", 17);
  348. permgroupsmap2 = map.new();
  349. map.add(permgroupsmap2, 1, "worldedit");
  350. map.add(permgroupsmap2, 2, "admin");
  351. map.add(permgroupsmap2, 3, "builder");
  352. map.add(permgroupsmap2, 4, "vip");
  353. map.add(permgroupsmap2, 5, "dev");
  354. map.add(permgroupsmap2, 6, "teleport");
  355. map.add(permgroupsmap2, 9, "supporter");
  356. map.add(permgroupsmap2, 11, "streamer");
  357. map.add(permgroupsmap2, 12, "mod");
  358. map.add(permgroupsmap2, 13, "yt");
  359. map.add(permgroupsmap2, 14, "sponsor");
  360. map.add(permgroupsmap2, 15, "bypass");
  361. map.add(permgroupsmap2, 17, "creative");
  362. monthlist = map.new();
  363. map.add(monthlist, 1, "Jan");
  364. map.add(monthlist, 2, "Feb");
  365. map.add(monthlist, 3, "Mar");
  366. map.add(monthlist, 4, "Apr");
  367. map.add(monthlist, 5, "May");
  368. map.add(monthlist, 6, "Jun");
  369. map.add(monthlist, 7, "Jul");
  370. map.add(monthlist, 8, "Aug");
  371. map.add(monthlist, 9, "Sep");
  372. map.add(monthlist, 10, "Oct");
  373. map.add(monthlist, 11, "Nov");
  374. map.add(monthlist, 12, "Dec");
  375. monthdays = map.new();
  376. map.add(monthdays, 1, 31);
  377. map.add(monthdays, 2, 28);
  378. map.add(monthdays, 3, 31);
  379. map.add(monthdays, 4, 30);
  380. map.add(monthdays, 5, 31);
  381. map.add(monthdays, 6, 30);
  382. map.add(monthdays, 7, 31);
  383. map.add(monthdays, 8, 31);
  384. map.add(monthdays, 9, 30);
  385. map.add(monthdays, 10, 31);
  386. map.add(monthdays, 11, 30);
  387. map.add(monthdays, 12, 31);
  388. jailed_list = list.new();
  389. ironbars = read.item("minecraft:iron_bars", 1, "§r");
  390. jailmenu = inv.new("222222222");
  391. inv.setItem(jailmenu, 0, ironbars);
  392. inv.setItem(jailmenu, 1, ironbars);
  393. inv.setItem(jailmenu, 2, ironbars);
  394. inv.setItem(jailmenu, 3, ironbars);
  395. inv.setItem(jailmenu, 4, ironbars);
  396. inv.setItem(jailmenu, 5, ironbars);
  397. inv.setItem(jailmenu, 6, ironbars);
  398. inv.setItem(jailmenu, 7, ironbars);
  399. inv.setItem(jailmenu, 8, ironbars);
  400. skip_night_inv = inv.new("002020200");
  401. inv.setItem(skip_night_inv, 0, read.item("km:check_green", 1, "§fYes"));
  402. inv.setItem(skip_night_inv, 1, read.item("km:gem_stone", 1, "§fI don't care"));
  403. inv.setItem(skip_night_inv, 2, read.item("km:cross_red", 1, "§fNo"));
  404. skip_night_inv_id = inv.getId(skip_night_inv);
  405. consoleCommands = set.new();
  406. set.add(consoleCommands, "ban");
  407. set.add(consoleCommands, "tempfly");
  408. set.add(consoleCommands, "silentban");
  409. set.add(consoleCommands, "tempban");
  410. set.add(consoleCommands, "unban");
  411. set.add(consoleCommands, "kick");
  412. set.add(consoleCommands, "silentkick");
  413. set.add(consoleCommands, "say");
  414. set.add(consoleCommands, "list");
  415. set.add(consoleCommands, "lastseen");
  416. set.add(consoleCommands, "start");
  417. set.add(consoleCommands, "msg");
  418. set.add(consoleCommands, "answer");
  419. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS friends (player_id INT NOT NULL, friend_id INT NOT NULL, time BIGINT NOT NULL, PRIMARY KEY (player_id, friend_id), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  420. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS logoutdata (player_id INT NOT NULL PRIMARY KEY, logouttime BIGINT, FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  421. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS tipps (tipp_key VARCHAR(20) PRIMARY KEY, tipp_value VARCHAR(255));"));
  422. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS plotranks (plot_id INT NOT NULL, player_id INT NOT NULL, rank VARCHAR(10), PRIMARY KEY (plot_id, player_id), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  423. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS homes (player_id INT NOT NULL, name VARCHAR(20) NOT NULL, world_name VARCHAR(20) NOT NULL, x DOUBLE NOT NULL, y DOUBLE NOT NULL, z DOUBLE NOT NULL, yaw DOUBLE NOT NULL, pitch DOUBLE NOT NULL, PRIMARY KEY (player_id, name), FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);"));
  424. last_skip_night = 0;
  425. skip_night_started = false;
  426. jail_loop_active = false;
  427. afk_loop_active = false;
  428. actual_move_id = map.new(); //Key: player_uuid, Value: move_id. Diese Map speichert das aktuell betretene Plot eines Spielers.
  429. plot_move_ids_list = list.new(); //Speichert Array mit plot_id und move_id
  430. check_for_plot_list = list.new();
  431. plot.registerMoveEvents(world.get("overworld"));
  432. plot.registerMoveEvents(world.get("the_nether"));
  433. plot.registerMoveEvents(world.get("the_end"));
  434. plot.registerMoveEvents(world.get("games"));
  435. event.load("entity_click");
  436. event.load("player_move");
  437. event.load("inv_click");
  438. event.load("inv_close");
  439. event.load("function_key");
  440. event.load("missing_perm");
  441. event.load("missing_command");
  442. event.load("custom_command");
  443. event.load("block_place");
  444. event.load("block_break");
  445. event.load("block_click");
  446. event.load("player_logout");
  447. event.load("player_data_tick");
  448. msg("dev", "§bCommands §rloaded.");
  449. @wait
  450. wait();
  451. if(event == "custom_command") {
  452. //Permission-Check
  453. command = text.toLowerCase(command);
  454. command = map.getOrDefault(alias_map, command, command);
  455. size = list.getSize(args);
  456. if(player == null) {
  457. sender = "SERVER";
  458. sender_name = "SERVER";
  459. if(set.contains(consoleCommands, command)) {
  460. ignoreGoto(command);
  461. goto("wait");
  462. }
  463. msg("SERVER", "Sorry. Not a console-command yet. Go and tell marvinius.");
  464. goto("wait");
  465. }
  466. if(!perm.has(player, command)) {
  467. perm.no(player, command);
  468. goto("wait");
  469. }
  470. sender = player;
  471. sender_name = player.getName(player);
  472. affectedname = player.getName(player);
  473. player_name = player.getName(player);
  474. affectedplayer = player;
  475. if(command != "leave") {
  476. if(player.isCommandBlocked(player)) {
  477. msg.prefix(player, prefix_commands, "§rThe most important rule in competition: Sabotage!");
  478. goto("wait");
  479. }
  480. }
  481. ignoreGoto(command);
  482. goto("wait");
  483. }
  484. if(event == "player_move") {
  485. player_uuid = player.getUuid(player);
  486. last_move_id = map.getOrDefault(actual_move_id, player_uuid, null);
  487. if(last_move_id == id) {
  488. goto("wait");
  489. }
  490. world = loc.getWorld(entity.getLocation(player));
  491. plot_id = plot.getPlotIdFromMoveId(id);
  492. plot = plot.getFromId(plot_id, world);
  493. if(plot == null) {
  494. goto("wait");
  495. }
  496. if(plot.isCity(plot)) {
  497. color_code = "§c";
  498. } else {
  499. color_code = "§e";
  500. }
  501. title.reset(player);
  502. title.setSub(player, concat("You entered ", color_code, plot.getName(plot), "."));
  503. title.send(player, "");
  504. map.add(actual_move_id, player_uuid, id);
  505. list.add(check_for_plot_list, player_uuid);
  506. sgoto(100, "checkForPlot");
  507. goto("wait");
  508. }
  509. if(event == "block_click") {
  510. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  511. if(action == "right" && !isSurvWorldName(world_name) && block.hasTag(beds_tag, block)) {
  512. cancel = true;
  513. goto("wait");
  514. }
  515. if(perm.has(player, "plot.bypass")) {
  516. goto("wait");
  517. }
  518. if(block.hasTag(chest_tag, block)) {
  519. if(plot.check(block_loc, player, 16, true)) {
  520. cancel = false;
  521. goto("wait");
  522. }
  523. player_id = player.getId(player);
  524. player_uuid = player.getUuid(player);
  525. list = plot.get(block_loc);
  526. if(list.getSize(list) > 0) {
  527. iter = list.iterator(list);
  528. access = false;
  529. while(hasNext(iter)) {
  530. plot = next(iter);
  531. canOpenChests = plot.canOpenChests(plot, player_id);
  532. if(plot.isSub(plot)) {
  533. if(canOpenChests) {
  534. cancel = false;
  535. goto("wait");
  536. }
  537. cancel = true;
  538. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  539. goto("wait");
  540. }
  541. if(canOpenChests) {
  542. access = true;
  543. cancel = false;
  544. }
  545. }
  546. if(!access) {
  547. msg.prefix(player, prefix_plot, "This chest is locked for you.");
  548. }
  549. }
  550. goto("wait");
  551. }
  552. if(action == "right" && block.hasTag(sign_tag, block)) {
  553. line0 = block.getSign(block_loc, 0);
  554. if(line0 != "§3[§bFree Plot§3]") {
  555. goto("wait");
  556. }
  557. price = text.convert(removeFormat(block.getSign(block_loc, 1)));
  558. if(!isDouble(price) || price < 0) {
  559. msg.prefix(player, prefix_plot, "Positive number expected.");
  560. goto("wait");
  561. }
  562. p_id = text.convert(block.getSign(block_loc, 3));
  563. if(!isDouble(p_id)) {
  564. msg.prefix(player, prefix_plot, "Invalid city owner.");
  565. goto("wait");
  566. }
  567. if(player.getNameFromId(p_id) == null) {
  568. msg.prefix(player, prefix_plot, "Invalid city owner.");
  569. goto("wait");
  570. }
  571. if(!hasEnoughMoney(player, price)) {
  572. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(price), "§r snuvis for this."));
  573. goto("wait");
  574. }
  575. plot_list = plot.get(block_loc);
  576. iter = list.iterator(plot_list);
  577. while(hasNext(iter)) {
  578. plot = next(iter);
  579. if(plot.isFree(plot)) {
  580. break;
  581. }
  582. }
  583. if(!plot.isFree(plot)) {
  584. msg.prefix(player, prefix_plot, "You aren't on a free plot.");
  585. goto("wait");
  586. }
  587. //Plot claimen
  588. subMoney(player, price);
  589. addMoney(p_id, price);
  590. plot.setSub(plot, true);
  591. plot.setLeader(plot, player.getId(player));
  592. player_name = player.getName(player);
  593. plot.addPlayer(plot, player_name);
  594. plot.setName(plot, concat(player_name, "'s plot"));
  595. msg.prefix(player, prefix_plot, concat("Plot claimed. Spent §6", text.number(price), "§r snuvis."));
  596. goto("wait");
  597. }
  598. goto("wait");
  599. }
  600. if(event == "missing_command") {
  601. if(player == null) { //--> Server
  602. player = "SERVER";
  603. if(command_name == null) {
  604. msg.prefix(player, prefix_commands, concat("Missing Command"));
  605. goto("wait");
  606. }
  607. }
  608. msg.prefix(player, prefix_commands, concat("No command ", command_name));
  609. goto("wait");
  610. }
  611. if(event == "player_logout") {
  612. player.setAfk(player, false);
  613. list.remove(jailed_list, player.getUuid(player));
  614. if(player.hasQuest2(player)) {
  615. script_id = quest.getFromPlayer(player);
  616. script = script.getFromId(script_id);
  617. setScriptVar("player", player);
  618. script.callEvent("quest_term", script);
  619. quest.term(script, player);
  620. }
  621. if(player.isInParty(player)) {
  622. party.kickPlayer(player, "logout");
  623. }
  624. goto("wait");
  625. }
  626. if(event == "missing_perm") {
  627. if(player == null) { //--> Server
  628. player = "SERVER";
  629. if(command_name == null) {
  630. msg.prefix(player, prefix_commands, concat("Missing Perm"));
  631. goto("wait");
  632. }
  633. }
  634. perm.no(player, command_name);
  635. goto("wait");
  636. }
  637. if(event == "entity_click") {
  638. player_uuid = player.getUuid(player);
  639. if(set.contains(ride_set, player_uuid)) {
  640. set.remove(ride_set, player_uuid);
  641. entity.mount(player, entity);
  642. }
  643. goto("wait");
  644. }
  645. if(event == "inv_click") {
  646. //inv see
  647. if(set.contains(invseeids, inv_id)) {
  648. //On inv_click in an invsee inventory
  649. split_list = text.split(" ", inv_name);
  650. p_name = list.getIndex(split_list, 2);
  651. p = read.player(p_name);
  652. if(p == null) {
  653. inv.close(player);
  654. 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.");
  655. goto("wait");
  656. }
  657. //Transmit item
  658. player.removeItem(p, item);
  659. safeGiveItemPlayer(player, item);
  660. inv.setItem(inv, inv_slot, read.item("minecraft:air"));
  661. inv.update(player);
  662. goto("wait");
  663. }
  664. if(inv_id == skip_night_inv_id) {
  665. world = world.getOverWorld();
  666. world_time = world.getTime(world);
  667. while(world_time >= 24000) {
  668. world_time -= 24000;
  669. }
  670. if(world_time <= 12500) {
  671. goto("wait");
  672. }
  673. player_uuid = player.getUuid(player);
  674. if(set.contains(skip_night_set, player_uuid)) {
  675. msg.prefix(player, prefix_commands, "Already voted.");
  676. goto("wait");
  677. }
  678. set.add(skip_night_set, player_uuid);
  679. if(!skip_night_started) {
  680. world.addTimedStatus(world, 49, 600, "Skip night?");
  681. sendMessageToWorld(world, "[§6Commands§r] Skip night? Vote within 30 seconds.");
  682. skip_night_counter = 30;
  683. skip_night_yes = 0;
  684. skip_night_no = 0;
  685. skip_night_no_care = 0;
  686. skip_night_started = true;
  687. sgoto(20, "skip_night_loop");
  688. }
  689. if(inv_slot == 0) {
  690. skip_night_yes++;
  691. inv.close(player);
  692. goto("wait");
  693. }
  694. if(inv_slot == 1) {
  695. skip_night_no_care++;
  696. inv.close(player);
  697. goto("wait");
  698. }
  699. if(inv_slot == 2) {
  700. skip_night_no++;
  701. inv.close(player);
  702. goto("wait");
  703. }
  704. goto("wait");
  705. }
  706. if(inv_name == "Skills") {
  707. if(item.getType(item) == "minecraft:air") {
  708. goto("wait");
  709. }
  710. skill_name = removeFormat(item.getName(item));
  711. tech_name = skill.getTechName(skill_name);
  712. //Toggle skill
  713. if(skill.isToggleable(skill_name)) {
  714. if(skill.isActivated(player, tech_name)) {
  715. skill.setActivated(player, tech_name, false);
  716. } else {
  717. skill.setActivated(player, tech_name, true);
  718. }
  719. inv.setItem(inv, inv_slot, skill.getShopItem(player, tech_name));
  720. inv.update(player);
  721. goto("wait");
  722. }
  723. //Activate skill
  724. if(skill.isActive(skill_name)) {
  725. player_loc = entity.getLocation(player);
  726. world_name = world.getName(loc.getWorld(player_loc));
  727. if(!isSurvWorldName(world_name)) {
  728. msg.prefix(player, prefix_skill, "You can't use this in this world.");
  729. goto("wait");
  730. }
  731. if(tech_name == "skill.fly10min") {
  732. duration = data.getTimer(player, "fly");
  733. if(duration > 0) {
  734. msg.prefix(player, prefix_skill, "Skill already active.");
  735. goto("wait");
  736. }
  737. amount = skill.getAmount(player, "skill.fly10min");
  738. if(amount > 0) {
  739. status.addTimed(player, 50, 12000, "Fly");
  740. data.setTimer(player, "fly", 12000);
  741. player.setFly(player, true);
  742. new_amount = amount - 1;
  743. skill.setAmount(player, "skill.fly10min", new_amount);
  744. msg.prefix(player, prefix_skill, concat("Used Fly 10min. New amount: ", text.number(new_amount)));
  745. }
  746. goto("wait");
  747. }
  748. if(tech_name == "skill.grow") {
  749. amount = skill.getAmount(player, "skill.grow");
  750. if(amount > 0) {
  751. grow(player_loc, 5);
  752. particle.spawnCircle(loc.mod(entity.getLocation(player), 0, 0.8, 0), composter_par, 50, 5, 1, 0, 0, 0.2, 0);
  753. new_amount = amount - 1;
  754. skill.setAmount(player, "skill.grow", new_amount);
  755. msg.prefix(player, prefix_skill, concat("Used Grow. New amount: ", text.number(new_amount)));
  756. }
  757. goto("wait");
  758. }
  759. if(tech_name == "skill.haste") {
  760. amount = skill.getAmount(player, "skill.haste");
  761. if(amount > 0) {
  762. entity.addEffect(player, "haste", 2400, 0);
  763. new_amount = amount - 1;
  764. skill.setAmount(player, "skill.haste", new_amount);
  765. msg.prefix(player, prefix_skill, concat("Used Haste. New amount: ", text.number(new_amount)));
  766. }
  767. goto("wait");
  768. }
  769. if(tech_name == "skill.speed") {
  770. amount = skill.getAmount(player, "skill.speed");
  771. if(amount > 0) {
  772. entity.addEffect(player, "speed", 2400, 0);
  773. new_amount = amount - 1;
  774. skill.setAmount(player, "skill.speed", new_amount);
  775. msg.prefix(player, prefix_skill, concat("Used Speed. New amount: ", text.number(new_amount)));
  776. }
  777. goto("wait");
  778. }
  779. if(tech_name == "skill.jump_boost") {
  780. amount = skill.getAmount(player, "skill.jump_boost");
  781. if(amount > 0) {
  782. entity.addEffect(player, "jump_boost", 2400, 1);
  783. new_amount = amount - 1;
  784. skill.setAmount(player, "skill.jump_boost", new_amount);
  785. msg.prefix(player, prefix_skill, concat("Used Jump Boost. New amount: ", text.number(new_amount)));
  786. }
  787. goto("wait");
  788. }
  789. if(tech_name == "skill.dolphin") {
  790. amount = skill.getAmount(player, "skill.dolphin");
  791. if(amount > 0) {
  792. entity.addEffect(player, "dolphins_grace", 1200, 0);
  793. new_amount = amount - 1;
  794. skill.setAmount(player, "skill.dolphin", new_amount);
  795. msg.prefix(player, prefix_skill, concat("Used Dolphin. New amount: ", text.number(new_amount)));
  796. }
  797. goto("wait");
  798. }
  799. if(tech_name == "skill.block_up") {
  800. duration = data.getTimer(player, "block_up");
  801. if(duration > 0) {
  802. msg.prefix(player, prefix_skill, "Skill already active.");
  803. goto("wait");
  804. }
  805. amount = skill.getAmount(player, "skill.block_up");
  806. if(amount > 0) {
  807. status.addTimed(player, 51, 1200, "Block Up");
  808. data.setTimer(player, "block_up", 1200);
  809. new_amount = amount - 1;
  810. skill.setAmount(player, "skill.block_up", new_amount);
  811. msg.prefix(player, prefix_skill, concat("Used Block Up. New amount: ", text.number(new_amount)));
  812. }
  813. goto("wait");
  814. }
  815. if(tech_name == "skill.block_down") {
  816. duration = data.getTimer(player, "block_down");
  817. if(duration > 0) {
  818. msg.prefix(player, prefix_skill, "Skill already active.");
  819. goto("wait");
  820. }
  821. amount = skill.getAmount(player, "skill.block_down");
  822. if(amount > 0) {
  823. status.addTimed(player, 52, 1200, "Block Down");
  824. data.setTimer(player, "block_down", 1200);
  825. new_amount = amount - 1;
  826. skill.setAmount(player, "skill.block_down", new_amount);
  827. msg.prefix(player, prefix_skill, concat("Used Block Down. New amount: ", text.number(new_amount)));
  828. }
  829. goto("wait");
  830. }
  831. }
  832. goto("wait");
  833. }
  834. if(inv_name == "§8Settings") {
  835. if(inv_slot == 0) {
  836. new_value = !player.getAutoCloseDoor(player);
  837. player.setAutoCloseDoor(player, new_value);
  838. inv.setItem(inv, inv_slot, read.item("minecraft:oak_door", 1, "§fAuto Door-Close", new_value));
  839. }
  840. elseif(inv_slot == 1) {
  841. new_value = !player.doesAcceptTpaRequests(player);
  842. player.acceptTpaRequests(player, new_value);
  843. inv.setItem(inv, inv_slot, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", new_value));
  844. }
  845. elseif(inv_slot == 2) {
  846. new_value = !showCoords.get(player);
  847. showCoords.set(player, new_value);
  848. inv.setItem(inv, inv_slot, read.item("minecraft:compass", 1, "§fShow Coords", new_value));
  849. if(!new_value) {
  850. display.remove(player, 30);
  851. }
  852. }
  853. elseif(inv_slot == 3) {
  854. new_value = !player.hasSittingActivated(player);
  855. player.activateSitting(player, new_value);
  856. inv.setItem(inv, inv_slot, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", new_value));
  857. }
  858. elseif(inv_slot == 4) {
  859. new_value = !hasPvpOn(player);
  860. setPvp(player, new_value);
  861. inv.setItem(inv, inv_slot, read.item("minecraft:iron_sword", 1, "§fPvP", new_value));
  862. }
  863. inv.update(player);
  864. }
  865. goto("wait");
  866. }
  867. if(event == "inv_close") {
  868. if(set.contains(invseeids, inv_id)) {
  869. set.remove(invseeids, inv_id);
  870. }
  871. goto("wait");
  872. }
  873. if(event == "function_key") {
  874. if(player.hasMinigame(player)) {
  875. goto("wait");
  876. }
  877. if(key == 1) {
  878. inv = inv.new("333333333");
  879. inv.setItem(inv, 0, read.item("minecraft:oak_door", 1, "§fAuto Door-Close", player.getAutoCloseDoor(player)));
  880. inv.setItem(inv, 1, read.item("minecraft:ender_pearl", 1, "§fAccept TPA-Requests", player.doesAcceptTpaRequests(player)));
  881. inv.setItem(inv, 2, read.item("minecraft:compass", 1, "§fShow Coords", showCoords.get(player)));
  882. inv.setItem(inv, 3, read.item("minecraft:oak_stairs", 1, "§fStair-Sitting", player.hasSittingActivated(player)));
  883. inv.setItem(inv, 4, read.item("minecraft:iron_sword", 1, "§fPvP", hasPvpOn(player)));
  884. inv.open(inv, player, "§8Settings");
  885. goto("wait");
  886. }
  887. if(key == 2) {
  888. skill.showAll(player);
  889. goto("wait");
  890. }
  891. if(key == 3) {
  892. world_time = world.getTime(world.getOverWorld());
  893. while(world_time >= 24000) {
  894. world_time -= 24000;
  895. }
  896. if(world_time <= 12500) {
  897. msg.prefix(player, prefix_commands, "Only during night possible.");
  898. goto("wait");
  899. }
  900. if(set.contains(skip_night_set, player_uuid)) {
  901. msg.prefix(player, prefix_commands, "Already voted.");
  902. goto("wait");
  903. }
  904. if(time.getMillis() - last_skip_night < 420000) {
  905. msg.prefix(player, prefix_commands, "Only once per night possible.");
  906. goto("wait");
  907. }
  908. inv.open(skip_night_inv, player, "Skip Night?");
  909. goto("wait");
  910. }
  911. goto("wait");
  912. }
  913. if(event == "player_data_tick") {
  914. if(var == "fly") {
  915. tpBottom(player);
  916. player.setFly(player, false);
  917. }
  918. }
  919. goto("wait");
  920. @skip_night_loop
  921. skip_night_counter--;
  922. if(skip_night_counter == 0) {
  923. world = world.getOverWorld();
  924. sendMessageToWorld(world, "[§6Commands§r] Skip night results:");
  925. sendMessageToWorld(world, concat("§e - §rYes: §e", text.number(skip_night_yes)));
  926. sendMessageToWorld(world, concat("§e - §rNo: §e", text.number(skip_night_no)));
  927. sendMessageToWorld(world, concat("§e - §rI don't care: §e", text.number(skip_night_no_care)));
  928. if(skip_night_yes > skip_night_no) {
  929. world.setTime(world, 0);
  930. }
  931. set.clear(skip_night_set);
  932. last_skip_night = time.getMillis();
  933. sgoto(8400, "reset_skip_night");
  934. }
  935. sgoto(20, "skip_night_loop");
  936. goto("wait");
  937. @reset_skip_night
  938. skip_night_started = false;
  939. goto("wait");
  940. @skills
  941. skill.showAll(player);
  942. goto("wait");
  943. @infopoint1
  944. msg(player, getSpacer());
  945. msg.prefix(player, "§eSurvival", "§aEnjoy our modded survival feeling. New ores, items and displays, and we are still beginner friendly.");
  946. goto("wait");
  947. @infopoint2
  948. msg(player, getSpacer());
  949. 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.");
  950. goto("wait");
  951. @infopoint3
  952. msg(player, getSpacer());
  953. msg.prefix(player, "§ePlots", "§aClaim land and protect your buildings against other players. Use /plot to create and manage your plots.");
  954. goto("wait");
  955. @infopoint4
  956. msg(player, getSpacer());
  957. 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.");
  958. goto("wait");
  959. @infopoint5
  960. msg(player, getSpacer());
  961. 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.");
  962. goto("wait");
  963. @infopoint6
  964. msg(player, getSpacer());
  965. 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.");
  966. goto("wait");
  967. @infopoint7
  968. msg(player, getSpacer());
  969. msg.prefix(player, "§eMinigames", "§aWe offer a range of different single- and multiplayer games.");
  970. goto("wait");
  971. @infopoint8
  972. msg(player, getSpacer());
  973. msg.prefix(player, "§eQuests", "§aYou are nice and helpful? There are lots of tasks to do in the villages.");
  974. goto("wait");
  975. @infopoint9
  976. msg(player, getSpacer());
  977. msg.prefix(player, "§eRanking", "§aWanna rise in rank and be the best player in every branch? Look at our ranks.");
  978. goto("wait");
  979. @infopoint10
  980. msg(player, getSpacer());
  981. msg.prefix(player, "§eRules", "§aThere is at least one rule: Be respectful. Look at our fake rules.");
  982. goto("wait");
  983. @infopoint11
  984. msg(player, getSpacer());
  985. msg.prefix(player, "§eNote", "§aEverything is self-coded. Worldedit is the only external mod we use.");
  986. goto("wait");
  987. @party
  988. if(size == 0) {
  989. @partyhelp
  990. msg.prefix(player, prefix_party, "§r/party ...");
  991. msg(player, "§5 - invite <player> §rInvite a player");
  992. msg(player, "§5 - accept <player> §rAccept an invitation");
  993. msg(player, "§5 - deny <player> §rDeny an invitation");
  994. msg(player, "§5 - kick <player> §rKick a player");
  995. msg(player, "§5 - leave §rLeave the party");
  996. msg(player, "§5 - promote <player> §rPromote a player");
  997. msg(player, "§5 - demote <player> §rDemote a player");
  998. msg(player, "§5 - disband §rDisband a party");
  999. msg(player, "§5 - list §rParty information");
  1000. msg(player, "§5 - <message> §rSends a party message");
  1001. goto("wait");
  1002. }
  1003. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1004. if(arg0 == "list") {
  1005. if(size != 1) {
  1006. msg.prefix(player, prefix_party, "§5/party list");
  1007. } else {
  1008. if(!player.isInParty(player)) {
  1009. msg.prefix(player, prefix_party, "You are not in a party.");
  1010. goto("wait");
  1011. }
  1012. list = party.getList(player.getPartyId(player));
  1013. table = table.new("§5", 13, 7);
  1014. msg(player, table.getStart(table));
  1015. msg(player, table.get(table, "§lName", "§lRole"));
  1016. msg(player, table.getMiddle(table));
  1017. iter = list.iterator(list);
  1018. while(hasNext(iter)) {
  1019. p = player.get(next(iter));
  1020. msg(player, table.get(table, player.getName(p), player.getPartyRank(p)));
  1021. }
  1022. msg(player, table.getEnd(table));
  1023. }
  1024. goto("wait");
  1025. }
  1026. if(arg0 == "leave") {
  1027. if(size != 1) {
  1028. msg.prefix(player, prefix_party, "§5/party leave");
  1029. } else {
  1030. if(!player.isInParty(player)) {
  1031. msg.prefix(player, prefix_party, "You are not in a party.");
  1032. goto("wait");
  1033. }
  1034. party.kickPlayer(player, "leave");
  1035. }
  1036. goto("wait");
  1037. }
  1038. if(arg0 == "disband") {
  1039. if(size != 1) {
  1040. msg.prefix(player, prefix_party, "§5/party disband");
  1041. } else {
  1042. if(!player.isInParty(player)) {
  1043. msg.prefix(player, prefix_party, "You are not in a party.");
  1044. goto("wait");
  1045. }
  1046. if(!player.isPartyLeader(player)) {
  1047. msg.prefix(player, prefix_party, "You are not the party leader.");
  1048. goto("wait");
  1049. }
  1050. party.delete(player.getPartyId(player));
  1051. }
  1052. goto("wait");
  1053. }
  1054. if(arg0 == "kick") {
  1055. if(size != 2) {
  1056. msg.prefix(player, prefix_party, "§5/party kick <player>");
  1057. } else {
  1058. if(!player.isInParty(player)) {
  1059. msg.prefix(player, prefix_party, "You are not in a party.");
  1060. goto("wait");
  1061. }
  1062. if(!player.isPartyLeaderOrMod(player)) {
  1063. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1064. goto("wait");
  1065. }
  1066. pname = list.getIndex(args, 1);
  1067. if(!checkIfEverOnline(pname)) {
  1068. msg.prefix(player, prefix_party, "This player has never been online.");
  1069. goto("wait");
  1070. }
  1071. p = read.player(pname);
  1072. if(p == null) {
  1073. msg.prefix(player, prefix_party, "This player is not online.");
  1074. goto("wait");
  1075. }
  1076. if(player == p) {
  1077. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1078. goto("wait");
  1079. }
  1080. if(!party.same(p, player)) {
  1081. msg.prefix(player, prefix_party, "This player is not in your party.");
  1082. goto("wait");
  1083. }
  1084. ownrank = player.getPartyRank(player);
  1085. if(ownrank == "Moderator") {
  1086. if(player.isPartyLeaderOrMod(p)) {
  1087. msg.prefix(player, prefix_party, "§rDu darfst diesen Spieler nicht kicken");
  1088. goto("wait");
  1089. }
  1090. }
  1091. party.kickPlayer(p, "kick");
  1092. }
  1093. goto("wait");
  1094. }
  1095. if(arg0 == "promote" || arg0 == "demote") {
  1096. if(size != 2) {
  1097. msg.prefix(player, prefix_party, concat("§5/party ", arg0, " <player>"));
  1098. } else {
  1099. pname = list.getIndex(args, 1);
  1100. if(!player.isInParty(player)) {
  1101. msg.prefix(player, prefix_party, "You are not in a party.");
  1102. goto("wait");
  1103. }
  1104. if(!player.isPartyLeader(player)) {
  1105. msg.prefix(player, prefix_party, "You are not the party leader.");
  1106. goto("wait");
  1107. }
  1108. if(!checkIfEverOnline(pname)) {
  1109. msg.prefix(player, prefix_party, "This player has never been online.");
  1110. goto("wait");
  1111. }
  1112. p = read.player(pname);
  1113. if(p == null) {
  1114. msg.prefix(player, prefix_party, "This player is not online.");
  1115. goto("wait");
  1116. }
  1117. if(player == p) {
  1118. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1119. goto("wait");
  1120. }
  1121. if(!party.same(p, player)) {
  1122. msg.prefix(player, prefix_party, "This player is not in your party.");
  1123. goto("wait");
  1124. }
  1125. partyid = player.getPartyId(player);
  1126. rank = player.getPartyRank(p);
  1127. if(arg0 == "promote") {
  1128. if(rank == "Player") {
  1129. player.setPartyRank(p, "Moderator");
  1130. party.sendMessage(partyid, concat("§r", pname, " is now Moderator."));
  1131. } elseif(rank == "Moderator") {
  1132. player.setPartyRank(p, "Leader");
  1133. player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
  1134. party.sendMessage(partyid, concat("§r", pname, " is now Leader."));
  1135. }
  1136. } elseif(arg0 == "demote") {
  1137. if(rank == "Moderator") {
  1138. player.setPartyRank(p, "Player");
  1139. party.sendMessage(partyid, concat("§r", pname, " is no longer Moderator."));
  1140. } else {
  1141. msg.prefix(player, prefix_party, "This player cannot be demoted.");
  1142. }
  1143. }
  1144. }
  1145. goto("wait");
  1146. }
  1147. if(arg0 == "invite") {
  1148. if(size != 2) {
  1149. msg.prefix(player, prefix_party, "§5/party invite <player>");
  1150. } else {
  1151. p_name = list.getIndex(args, 1);
  1152. if(!checkIfEverOnline(p_name)) {
  1153. msg.prefix(player, prefix_party, "This player has never been online.");
  1154. goto("wait");
  1155. }
  1156. p = read.player(p_name);
  1157. temp = party.invitePlayer(player, p);
  1158. if(temp == "inviteeNotOnline") {
  1159. msg.prefix(player, prefix_party, "This player is not online.");
  1160. } elseif(temp == "inviterEqualsInvitee") {
  1161. msg.prefix(player, prefix_party, "You can´t apply that to yourself.");
  1162. } elseif(temp == "inviterNotPermitted") {
  1163. msg.prefix(player, prefix_party, "You are not leader or moderator of the party.");
  1164. } elseif(temp == "inviteeAlreadyInParty") {
  1165. msg.prefix(player, prefix_party, "This player is already in your party.");
  1166. } elseif(temp == "inviteeAlreadyInvited") {
  1167. msg.prefix(player, prefix_party, "This player already has an invitation from you.");
  1168. } else {
  1169. msg.prefix(player, prefix_party, "Invitation sent.");
  1170. }
  1171. }
  1172. goto("wait");
  1173. }
  1174. if(arg0 == "accept") {
  1175. if(size != 2) {
  1176. msg.prefix(player, prefix_party, "§5/party accept <player>");
  1177. } else {
  1178. if(player.isInParty(player)) {
  1179. msg.prefix(player, prefix_party, "You are already in a party.");
  1180. goto("wait");
  1181. }
  1182. pname = list.getIndex(args, 1);
  1183. if(!checkIfEverOnline(pname)) {
  1184. msg.prefix(player, prefix_party, "This player has never been online.");
  1185. goto("wait");
  1186. }
  1187. p = read.player(pname);
  1188. if(p == null) {
  1189. msg.prefix(player, prefix_party, "This player is no longer online.");
  1190. goto("wait");
  1191. }
  1192. player_uuid = player.getUuid(player);
  1193. p_uuid = player.getUuid(p);
  1194. list = map.get(party_invitations, player_uuid);
  1195. if(list == null || !list.contains(list, p_uuid)) {
  1196. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1197. goto("wait");
  1198. }
  1199. if(player.isInParty(p)) { //wenn einlader bereits in party
  1200. partyid = player.getPartyId(p);
  1201. if(map.get(party_invite_ids, p_uuid) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
  1202. party.addPlayer(partyid, player);
  1203. player.setPartyRank(player, "Player");
  1204. } else {
  1205. msg.prefix(player, prefix_party, "This player is already in another party.");
  1206. goto("wait");
  1207. }
  1208. } else {
  1209. partyid = map.get(party_invite_ids, p_uuid);
  1210. party.setList(partyid, list.new());
  1211. party.addPlayer(partyid, p);
  1212. party.addPlayer(partyid, player);
  1213. player.setPartyRank(p, "Leader");
  1214. player.setPartyRank(player, "Player");
  1215. msg.prefix(p, prefix_party, "The party was created.");
  1216. }
  1217. list.clear(list); //Einladungs-Liste von oben
  1218. party.sendMessage(partyid, concat("§r", player_name, " joined the party."));
  1219. }
  1220. goto("wait");
  1221. }
  1222. if(arg0 == "deny") {
  1223. if(size != 2) {
  1224. msg.prefix(player, prefix_party, "§5/party deny <player>");
  1225. } else {
  1226. player_uuid = player.getUuid(player);
  1227. list = map.get(party_invitations, player_uuid);
  1228. if(list != null) {
  1229. pname = list.getIndex(args, 1);
  1230. p = read.player(pname);
  1231. if(p == null) {
  1232. msg.prefix(player, prefix_party, "This player is no longer online.");
  1233. goto("wait");
  1234. }
  1235. p_uuid = player.getUuid(p);
  1236. if(list == null || !list.contains(list, p_uuid)) {
  1237. msg.prefix(player, prefix_party, "This invitation is invalid.");
  1238. goto("wait");
  1239. }
  1240. index = list.getIndexOf(list, p_uuid);
  1241. list.remove(list, p_uuid);
  1242. keytimes = map.get(delkeytimes, player_uuid);
  1243. list.removeIndex(keytimes, index);
  1244. p = read.player(pname);
  1245. if(p != null) {
  1246. msg.prefix(p, prefix_party, concat("§r", player_name, " has denied your invitation."));
  1247. }
  1248. msg.prefix(player, prefix_party, concat("Invitation from ", pname, " denied."));
  1249. }
  1250. }
  1251. goto("wait");
  1252. }
  1253. if(player.isInParty(player)) {
  1254. message = concat(pname, " §1| §r", text.concatList(args, " ", 0, list.getSize(args) - 1));
  1255. party.sendMessage(player.getPartyId(player), message);
  1256. goto("wait");
  1257. }
  1258. goto("partyhelp");
  1259. @setmessage
  1260. if(size == 0) {
  1261. @setmessagehelp
  1262. msg.prefix(player, prefix_commands, "§r/setmessage ...");
  1263. msg(player, "§e- join <message> §rSets your joinmessage");
  1264. msg(player, "§e- leave <message> §rSets your leavemessage");
  1265. msg(player, "§e- info §rShows you set messages");
  1266. if(perm.has(player, "setmessage.delete")) {
  1267. msg(player, "§e- delete <player> §rDeletes a players messages");
  1268. }
  1269. goto("wait");
  1270. }
  1271. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1272. if(arg0 == "info") {
  1273. fullname = player.getFullName(player);
  1274. message = text.convert(player.getJoinMessage(player));
  1275. if(message == null) {
  1276. msg.prefix(player, prefix_commands, "No join message set.");
  1277. } else {
  1278. msg.prefix(player, prefix_commands, concat("§a§l> §r", fullname, " §9", message));
  1279. }
  1280. message = text.convert(player.getLeaveMessage(player));
  1281. if(message == null) {
  1282. msg.prefix(player, prefix_commands, "No leave message set.");
  1283. } else {
  1284. msg.prefix(player, prefix_commands, concat("§c§l> §r", fullname, " §9", message));
  1285. }
  1286. goto("wait");
  1287. }
  1288. if(arg0 == "join") {
  1289. if(size < 2) {
  1290. goto("setmessagehelp");
  1291. }
  1292. message = text.concatList(args, " ", 1, size - 1);
  1293. player.setJoinMessage(player, message);
  1294. msg.prefix(player, prefix_commands, "Join-Message set.");
  1295. goto("wait");
  1296. }
  1297. if(arg0 == "leave") {
  1298. if(size < 2) {
  1299. goto("setmessagehelp");
  1300. }
  1301. message = text.concatList(args, " ", 1, size - 1);
  1302. player.setLeaveMessage(player, message);
  1303. msg.prefix(player, prefix_commands, "Leave-Message set.");
  1304. goto("wait");
  1305. }
  1306. if(arg0 == "delete") {
  1307. if(size == 1) {
  1308. p_uuid = player.getUuid(player);
  1309. } elseif(size == 2) {
  1310. if(!perm.has(player, "setmessage.delete")) {
  1311. perm.no(player, "setmessage.delete");
  1312. goto("wait");
  1313. }
  1314. p_name = list.getIndex(args, 1);
  1315. if(!checkIfEverOnline(p_name)) {
  1316. msg.prefix(player, prefix_commands, "This player has never been online.");
  1317. goto("wait");
  1318. }
  1319. p_uuid = player.getUuid(p_name);
  1320. } else {
  1321. goto("setmessagehelp");
  1322. }
  1323. p_id = player.getId(p_uuid);
  1324. player.setJoinMessage(p_id, "null");
  1325. player.setLeaveMessage(p_id, "null");
  1326. msg.prefix(player, prefix_commands, "Messages deleted.");
  1327. goto("wait");
  1328. }
  1329. goto("wait");
  1330. @live
  1331. boolean = !player.isLive(player);
  1332. player.setLive(player, boolean);
  1333. player.setHeadName(player);
  1334. player.setTabName(player);
  1335. msg.prefix(player, prefix_commands, "Live toggled.");
  1336. goto("wait");
  1337. @lightning
  1338. location = player.getTarget(player, 50, true, true);
  1339. if(block.getType(location) == "minecraft:air") {
  1340. msg.prefix(player, prefix_commands, "No block in sight.");
  1341. goto("wait");
  1342. }
  1343. entity.spawn("minecraft:lightning_bolt", location);
  1344. goto("wait");
  1345. @ride
  1346. player_uuid = player.getUuid(player);
  1347. if(set.contains(ride_set, player_uuid)) {
  1348. msg.prefix(player, prefix_commands, "Entity-Ride-Click removed.");
  1349. set.remove(ride_set, player_uuid);
  1350. } else {
  1351. msg.prefix(player, prefix_commands, "Click an entity to ride it.");
  1352. set.add(ride_set, player_uuid);
  1353. }
  1354. goto("wait");
  1355. @vanish
  1356. //vanish [on/off] [player]
  1357. if(size == 0) {
  1358. if(set.contains(vanish_set, player.getUuid(affectedplayer))) {
  1359. bool = "off";
  1360. } else {
  1361. bool = "on";
  1362. }
  1363. }
  1364. if(size >= 1) {
  1365. bool = list.getIndex(args, 0);
  1366. }
  1367. if(size == 2) {
  1368. affectedname = list.getIndex(args, 1);
  1369. affectedplayer = read.player(affectedname);
  1370. affectedname = player.getName(affectedplayer);
  1371. if(affectedplayer == null) {
  1372. msg.prefix(player, prefix_commands, "This player is not online.");
  1373. goto("wait");
  1374. }
  1375. }
  1376. if(bool == "on") {
  1377. if(affectedname != player_name) {
  1378. msg.prefix(player, prefix_commands, concat(affectedname, " has been vanished."));
  1379. msg.prefix(affectedplayer, prefix_commands, concat("You have been vanished by ", player_name, "."));
  1380. } else {
  1381. msg.prefix(affectedplayer, prefix_commands, "You are vanished.");
  1382. }
  1383. set.add(vanish_set, player.getUuid(affectedplayer));
  1384. player.hide(affectedplayer);
  1385. } elseif(bool == "off") {
  1386. if(affectedname != player_name) {
  1387. msg.prefix(player, prefix_commands, concat(affectedname, " is no longer vanished."));
  1388. msg.prefix(affectedplayer, prefix_commands, concat("You are no longer vanished caused by ", player_name, "."));
  1389. } else {
  1390. msg.prefix(affectedplayer, prefix_commands, "You are no longer vanished.");
  1391. }
  1392. set.remove(vanish_set, player.getUuid(affectedplayer));
  1393. player.show(affectedplayer);
  1394. } else {
  1395. msg.prefix(player, prefix_commands, "§r/vanish [on/off] [player]");
  1396. }
  1397. goto("wait");
  1398. @user
  1399. if(size == 0) {
  1400. p_name = player.getName(player);
  1401. p_uuid = player.getUuid(p_name);
  1402. } else {
  1403. if(!perm.has(player, "user.other")) {
  1404. perm.no(player, "user.other");
  1405. goto("wait");
  1406. }
  1407. p_name = list.getIndex(args, 0);
  1408. if(!checkIfEverOnline(p_name)) {
  1409. msg.prefix(player, prefix_commands, "This player has never been online.");
  1410. goto("wait");
  1411. }
  1412. p_uuid = player.getUuid(p_name);
  1413. p_name = player.getName(p_uuid);
  1414. }
  1415. p = read.player(p_name);
  1416. p_id = player.getId(p_uuid);
  1417. if(p == null) {
  1418. p_or_id = p_id;
  1419. } else {
  1420. p_or_id = p;
  1421. }
  1422. table = table.new("§8", 6, 24);
  1423. msg(player, table.getStart(table));
  1424. msg(player, table.get(table, "Player", p_name));
  1425. msg(player, table.getMiddle(table));
  1426. msg(player, table.get(table, "Playtime", text.number(math.roundDown(player.getTotalPlaytime(p_or_id) / 60))));
  1427. msg(player, table.get(table, "Joins", text.number(player.getJoins(p_or_id))));
  1428. msg(player, table.get(table, "First Join", getDateString(player.getFirstJoin(p_or_id))));
  1429. msg(player, table.get(table, "Last Join", getDateString(player.getLastJoin(p_or_id))));
  1430. msg(player, table.get(table, "UUID", p_uuid));
  1431. msg(player, table.get(table, "ID", text.number(p_id)));
  1432. msg(player, table.get(table, "Rank", getRank(p_or_id)));
  1433. msg(player, table.get(table, "PvP", hasPvpOn(p_or_id)));
  1434. msg(player, table.get(table, "Quests", text.number(quest.getCounter(p_or_id))));
  1435. msg(player, table.get(table, "Money", text.number(getMoney(p_or_id))));
  1436. msg(player, table.getEnd(table));
  1437. goto("wait");
  1438. @friend
  1439. if(size == 0) {
  1440. @friend_syntax
  1441. msg.prefix(player, prefix_friends, "§r/friend ...");
  1442. msg(player, "§5 - add <player> §rAdds a friend");
  1443. msg(player, "§5 - remove <player> §rRemoves a friend");
  1444. msg(player, "§5 - list §rLists all your friends");
  1445. goto("wait");
  1446. }
  1447. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1448. if(arg0 == "add") {
  1449. if(size != 2) {
  1450. msg.prefix(player, prefix_friends, "§r/friend add <player>");
  1451. goto("wait");
  1452. }
  1453. friend_name = list.getIndex(args, 1);
  1454. if(player_name == friend_name) {
  1455. msg.prefix(player, prefix_friends, "You can't invite yourself.");
  1456. goto("wait");
  1457. }
  1458. player_id = player.getId(player);
  1459. if(!checkIfEverOnline(friend_name)) {
  1460. msg.prefix(player, prefix_friends, "This player has never been online.");
  1461. goto("wait");
  1462. }
  1463. friend_id = player.getId(player.getUuid(friend_name));
  1464. if(friend.check(player_id, friend_id)) {
  1465. msg.prefix(player, prefix_friends, "This player is already your friend.");
  1466. goto("wait");
  1467. }
  1468. if(map.contains(friend_requests, friend_id)) {
  1469. if(map.get(friend_requests, friend_id) == player_id) {
  1470. friend.add(player_id, friend_id);
  1471. map.remove(friend_requests, friend_id);
  1472. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is your friend now."));
  1473. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is your friend now."), true);
  1474. goto("wait");
  1475. }
  1476. }
  1477. map.add(friend_requests, player_id, friend_id); //Einlader, Eingeladener
  1478. friend = read.player(friend_name);
  1479. msg.prefix(player, prefix_friends, concat("You sent an invitation to §7", friend_name, "§r."));
  1480. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r wants to be your friend."), true);
  1481. if(friend != null) {
  1482. msg(friend, text.click("§r[§aAccept§r]", concat("/friend add ", player_name)));
  1483. }
  1484. goto("wait");
  1485. }
  1486. if(arg0 == "remove") {
  1487. if(size != 2) {
  1488. msg.prefix(player, prefix_friends, "§r/friend remove <player>");
  1489. goto("wait");
  1490. }
  1491. friend_name = list.getIndex(args, 1);
  1492. player_id = player.getId(player);
  1493. if(!checkIfEverOnline(friend_name)) {
  1494. msg.prefix(player, prefix_friends, "This player has never been online.");
  1495. goto("wait");
  1496. }
  1497. friend_id = player.getId(player.getUuid(friend_name));
  1498. if(!friend.check(player_id, friend_id)) {
  1499. msg.prefix(player, prefix_friends, "This player isn't your friend.");
  1500. goto("wait");
  1501. }
  1502. friend.delete(player_id, friend_id);
  1503. msg.prefix(player, prefix_friends, concat("§7", friend_name, "§r is no longer your friend."));
  1504. msg.send(player, friend_name, prefix_friends, concat("§7", player_name, "§r is no longer your friend."), true);
  1505. goto("wait");
  1506. }
  1507. if(arg0 == "list") {
  1508. if(size != 1) {
  1509. msg.prefix(player, prefix_friends, "/friend list");
  1510. goto("wait");
  1511. }
  1512. player_id = player.getId(player);
  1513. friendlist = friend.getList(player_id);
  1514. listsize = list.getSize(friendlist);
  1515. if(listsize == 0) {
  1516. msg.prefix(player, prefix_friends, "You have no friends yet.");
  1517. goto("wait");
  1518. }
  1519. msg(player, "§5Friends:");
  1520. for(i = 0; i <= listsize - 1; i++) {
  1521. msg(player, "§r- ", list.getIndex(friendlist, i));
  1522. }
  1523. goto("wait");
  1524. }
  1525. goto("friend_syntax");
  1526. @var
  1527. if(size != 2) {
  1528. msg.prefix(player, prefix_commands, "§r/var <id> <varname>");
  1529. goto("wait");
  1530. }
  1531. script_id = list.getIndex(args, 0);
  1532. script = script.getFromId(script_id);
  1533. if(script == null) {
  1534. msg.prefix(player, "§dScript", "Invalid id");
  1535. goto("wait");
  1536. }
  1537. var_name = list.getIndex(args, 1);
  1538. var = script.getVar(script, var_name);
  1539. msg.prefix(player, "§dScript", concat(var_name, " = ", var));
  1540. goto("wait");
  1541. @voxel
  1542. if(size < 1) {
  1543. @voxelhelp
  1544. msg.prefix(player, prefix_commands, "/voxel <radius:1-5>");
  1545. msg.prefix(player, prefix_commands, "/voxel block");
  1546. goto("wait");
  1547. }
  1548. arg0 = list.getIndex(args, 0);
  1549. if(isDouble(arg0)) {
  1550. radius = arg0;
  1551. if(radius < 1) {
  1552. radius = 1;
  1553. }
  1554. if(radius > 5) {
  1555. radius = 5;
  1556. }
  1557. script = script.get("Voxel");
  1558. map = script.getVar(script, "radius_per_player");
  1559. map.add(map, player.getUuid(player), radius);
  1560. script.setVar(script, "radius_per_player", map);
  1561. msg.prefix(player, prefix_commands, concat("Set radius to ", text.number(radius), "."));
  1562. goto("wait");
  1563. }
  1564. if(arg0 == "block") {
  1565. item = entity.getEquip(player, "hand");
  1566. item_type = item.getType(item);
  1567. if(item_type == "minecraft:air") {
  1568. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  1569. goto("wait");
  1570. }
  1571. state = block.newState(item_type);
  1572. script = script.get("Voxel");
  1573. map = script.getVar(script, "state_per_player");
  1574. map.add(map, player.getUuid(player), state);
  1575. script.setVar(script, "state_per_player", map);
  1576. msg.prefix(player, prefix_commands, concat("Set block to ", item_type, "."));
  1577. goto("wait");
  1578. }
  1579. goto("voxelhelp");
  1580. @setservermessage
  1581. if(size < 1) {
  1582. msg.prefix(player, prefix_commands, "/setservermessage <text>");
  1583. goto("wait");
  1584. }
  1585. message = text.concatList(args, " ", 0, size - 1);
  1586. message = text.replace(message, "&", "§");
  1587. setMOTD(message);
  1588. msg.prefix(player, prefix_commands, "Server-Message gesetzt");
  1589. goto("wait");
  1590. @error
  1591. if(size < 1) {
  1592. msg.prefix(player, "§cError", "§r/error ...");
  1593. msg(player, "§c - list §rLists all errors");
  1594. msg(player, "§c - clear §rDeletes all errors");
  1595. goto("wait");
  1596. }
  1597. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1598. if(arg0 == "list") {
  1599. error_size = error.getSize();
  1600. if(error_size == 0) {
  1601. msg.prefix(player, "§cError", "No errors existing.");
  1602. goto("wait");
  1603. }
  1604. for(i = 0; i < error_size; i++) {
  1605. msg(player, error.getIndex(i));
  1606. }
  1607. goto("wait");
  1608. }
  1609. if(arg0 == "clear") {
  1610. error.clear();
  1611. msg.prefix(player, "§cError", "All errors deleted.");
  1612. goto("wait");
  1613. }
  1614. goto("wait");
  1615. @errordebug
  1616. if(size < 1) {
  1617. msg.prefix(player, "§cErrorDebugs", "§r/errordebug ...");
  1618. msg(player, "§c - list §rLists all errordebugs");
  1619. msg(player, "§c - clear §rDeletes all errordebugs");
  1620. msg(player, "§c - toggle §rToggles errordebugs");
  1621. goto("wait");
  1622. }
  1623. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1624. if(arg0 == "list") {
  1625. error_size = debug.getSize();
  1626. if(error_size == 0) {
  1627. msg.prefix(player, "§cErrorDebugs", "No errordebugs existing.");
  1628. goto("wait");
  1629. }
  1630. for(i = 0; i < error_size; i++) {
  1631. msg(player, debug.getIndex(i));
  1632. }
  1633. goto("wait");
  1634. }
  1635. if(arg0 == "clear") {
  1636. debug.clear();
  1637. msg.prefix(player, "§cErrorDebugs", "All errordebugs deleted.");
  1638. goto("wait");
  1639. }
  1640. if(arg0 == "toggle") {
  1641. new_value = !perm.has(player, "script.debug");
  1642. player.showDebug(player, new_value);
  1643. if(new_value) {
  1644. msg.prefix(player, prefix_commands, "Debug messages are now shown.");
  1645. } else {
  1646. msg.prefix(player, prefix_commands, "Debug messages are now hidden.");
  1647. }
  1648. goto("wait");
  1649. }
  1650. goto("wait");
  1651. @hat
  1652. item = entity.getEquip(player, "hand");
  1653. if(item.getType(item) == "minecraft:air") {
  1654. msg.prefix(player, prefix_commands, "You have to hold an item in hand.");
  1655. goto("wait");
  1656. }
  1657. entity.setEquip(player, "head", item);
  1658. entity.setEquip(player, "hand", read.item("minecraft:air"));
  1659. goto("wait");
  1660. @news
  1661. if(size < 1) {
  1662. msg.prefix(player, prefix_commands, "/news <text>");
  1663. goto("wait");
  1664. }
  1665. message = text.concatList(args, " ", 0, size - 1);
  1666. online_list = players.toList();
  1667. for(i = 0; i < list.getSize(online_list); i++) {
  1668. p = list.getIndex(online_list, i);
  1669. title.reset(p);
  1670. title.setSub(p, concat("by ", player_name));
  1671. title.send(p, "§cNews");
  1672. msg.prefix(p, "§4News", concat("§c", message));
  1673. }
  1674. goto("wait");
  1675. @spawn
  1676. if(size == 1) {
  1677. if(!perm.has(player, "teleport.other")) {
  1678. perm.no(player, "teleport.other");
  1679. goto("wait");
  1680. }
  1681. affectedname = list.getIndex(args, 0);
  1682. affectedplayer = read.player(affectedname);
  1683. if(affectedplayer == null) {
  1684. msg.prefix(player, prefix_commands, "This player is not online.");
  1685. goto("wait");
  1686. }
  1687. }
  1688. if(player.hasMinigame(affectedplayer)) {
  1689. if(size == 1) {
  1690. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  1691. } else {
  1692. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  1693. }
  1694. goto("wait");
  1695. }
  1696. if(player.teleport(affectedplayer, serverspawn, true)) {
  1697. if(player == affectedplayer) {
  1698. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the spawn.");
  1699. } else {
  1700. affectedname = player.getName(affectedplayer);
  1701. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the spawn."));
  1702. }
  1703. }
  1704. goto("wait");
  1705. @rank
  1706. msg(player, getSpacer());
  1707. rank = getRank(player);
  1708. msg(player, concat("§6Current rank: §r[", rank, "§r]"));
  1709. msg(player, "Choose a rank:");
  1710. rank.showAll(player);
  1711. goto("wait");
  1712. @setrank
  1713. if(size < 2) {
  1714. msg.prefix(player, prefix_commands, "§r/setrank <player> <rank>");
  1715. goto("wait");
  1716. }
  1717. p_name = list.getIndex(args, 0);
  1718. if(!checkIfEverOnline(p_name)) {
  1719. msg.prefix(player, prefix_commands, "This player has never been online.");
  1720. goto("wait");
  1721. }
  1722. p = read.player(p_name);
  1723. if(p == null) {
  1724. msg.prefix(player, prefix_commands, "This player is not online.");
  1725. goto("wait");
  1726. }
  1727. p_name = player.getName(p);
  1728. rank = text.concatList(args, " ", 1, size - 1);
  1729. if(!perm.has(player, "setrank.other")) {
  1730. if(player.getName(player) != p_name) {
  1731. perm.no(player, "setrank.other");
  1732. goto("wait");
  1733. }
  1734. colored = text.startsWith(rank, "&", 0);
  1735. if(colored) {
  1736. rank = text.subString(rank, 1, text.length(rank));
  1737. }
  1738. a = rank.getRankArray();
  1739. a_size = array.getSize(a);
  1740. for(i = 0; i < a_size; i++) {
  1741. tech_name = a[i, 0];
  1742. if(rank == a[i, 1] && !rank.checkCriteria(p, tech_name)) {
  1743. perm.no(p, tech_name);
  1744. goto("wait");
  1745. }
  1746. }
  1747. if(colored) {
  1748. rank = concat("&", rank);
  1749. }
  1750. }
  1751. if(text.length(rank) >= 30) {
  1752. msg.prefix(player, prefix_commands, "Only 30 letters allowed.");
  1753. goto("wait");
  1754. }
  1755. rank = text.replace(rank, "&", "§");
  1756. setRank(p, rank);
  1757. player.setTabName(p);
  1758. msg.prefix(player, prefix_commands, concat("Rank for ", p_name, " changed to [", rank, "§r]."));
  1759. goto("wait");
  1760. @nowb
  1761. if(player.isAfk(player)) {
  1762. player.setAfk(player, false);
  1763. msg.prefix(player, prefix_commands, "marvinius whispers to you: Welcome back ;-)");
  1764. player.setTabName(player);
  1765. } else {
  1766. msg.prefix(player, prefix_commands, "You are not afk.");
  1767. }
  1768. goto("wait");
  1769. @afk
  1770. nickname = player.getNickname(player);
  1771. if(player.isAfk(player)) {
  1772. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  1773. player.setAfk(player, false);
  1774. } else {
  1775. msg.prefix("online", prefix_commands, concat(nickname, "§7 is now afk."));
  1776. player.setAfk(player, true);
  1777. }
  1778. player.setTabName(player);
  1779. if(!afk_loop_active) {
  1780. sgoto(30, "afk_loop");
  1781. }
  1782. goto("wait");
  1783. @silentjoin
  1784. silentjoin = player.getSilentJoin(player);
  1785. if(silentjoin) {
  1786. player.setSilentJoin(player, false);
  1787. msg.prefix(player, prefix_commands, "Silentjoin deactivated.");
  1788. } else {
  1789. player.setSilentJoin(player, true);
  1790. msg.prefix(player, prefix_commands, "Silentjoin activated.");
  1791. }
  1792. goto("wait");
  1793. @jailloop
  1794. size = list.getSize(jailed_list);
  1795. for(i = 0; i < size; i++) {
  1796. p_name = player.getName(list.getIndex(jailed_list, i));
  1797. showJail(p_name);
  1798. }
  1799. if(size > 0) {
  1800. jail_loop_active = true;
  1801. sgoto(5, "jailloop");
  1802. } else {
  1803. jail_loop_active = false;
  1804. }
  1805. goto("wait");
  1806. @coordsloop
  1807. list = players.toList();
  1808. size = list.getSize(list);
  1809. for(i = 0; i < size; i++) {
  1810. p = list.getIndex(list, i);
  1811. if(showcoords.get(p)) {
  1812. p_loc = entity.getLocation(p);
  1813. 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"))));
  1814. }
  1815. }
  1816. sgoto(10, "coordsloop");
  1817. goto("wait");
  1818. @afk_loop
  1819. afk_map = getScriptVar("afk_map");
  1820. iter = map.iterator(afk_map);
  1821. while(hasNext(iter)) {
  1822. element = next(iter);
  1823. yaw = map.getValue(element);
  1824. player = player.get(map.getKey(element));
  1825. if(player != null) {
  1826. if(yaw != loc.getYaw(entity.getLocation(player))) {
  1827. nickname = player.getNickname(player);
  1828. msg.prefix("online", prefix_commands, concat(nickname, "§7 is back."));
  1829. remove(iter);
  1830. player.setAfk(player, false);
  1831. player.setTabName(player);
  1832. }
  1833. }
  1834. }
  1835. size = map.getSize(afk_map);
  1836. if(size > 0) {
  1837. afk_loop_active = true;
  1838. sgoto(30, "afk_loop");
  1839. } else {
  1840. afk_loop_active = false;
  1841. }
  1842. goto("wait");
  1843. @pvp
  1844. if(size == 0) {
  1845. if(hasPvpOn(player)) {
  1846. mode = "off";
  1847. } else {
  1848. mode = "on";
  1849. }
  1850. } elseif(size == 1) {
  1851. mode = list.getIndex(args, 0);
  1852. if(!(mode == "on" || mode == "off")) {
  1853. goto("pvphelp");
  1854. }
  1855. } elseif(size == 2) {
  1856. if(!perm.has(player, "pvp.other")) {
  1857. perm.no(player, "pvp.other");
  1858. goto("wait");
  1859. }
  1860. mode = list.getIndex(args, 0);
  1861. if(!(mode == "on" || mode == "off")) {
  1862. goto("pvphelp");
  1863. }
  1864. affectedname = list.getIndex(args, 1);
  1865. if(!checkIfEverOnline(affectedname)) {
  1866. msg.prefix(player, prefix_commands, "This player has never been online.");
  1867. goto("wait");
  1868. }
  1869. affectedplayer = read.player(affectedname);
  1870. if(affectedplayer == null) {
  1871. msg.prefix(player, prefix_commands, "This player is not online.");
  1872. goto("wait");
  1873. }
  1874. } else {
  1875. @pvphelp
  1876. if(perm.has(player, "pvp.other")) {
  1877. msg.prefix(player, prefix_commands, "§r/pvp [on/off] [player]");
  1878. } else {
  1879. msg.prefix(player, prefix_commands, "§r/pvp [on/off]");
  1880. }
  1881. goto("wait");
  1882. }
  1883. if(mode == "on") {
  1884. setPvp(affectedplayer, true);
  1885. msg.prefix(affectedplayer, prefix_commands, "You have enabled PvP!");
  1886. if(affectedplayer != player) {
  1887. affectedname = player.getName(affectedplayer);
  1888. msg.prefix(player, prefix_commands, concat(affectedname, " has now enabled PvP!"));
  1889. }
  1890. } else {
  1891. setPvp(affectedplayer, false);
  1892. msg.prefix(affectedplayer, prefix_commands, "You have PvP disabled!");
  1893. if(affectedplayer != player) {
  1894. affectedname = player.getName(affectedplayer);
  1895. msg.prefix(player, prefix_commands, concat(affectedname, " has now disabled PvP!"));
  1896. }
  1897. }
  1898. goto("wait");
  1899. @suicide
  1900. if(size < 0 || size > 1) {
  1901. msg.prefix(player, prefix_commands, "§r/suicide [player]");
  1902. goto("wait");
  1903. }
  1904. if(size == 1) {
  1905. if(!perm.has(player, "kill.other")) {
  1906. perm.no(player, "kill.other");
  1907. goto("wait");
  1908. }
  1909. affectedname = list.getIndex(args, 0);
  1910. affectedplayer = read.player(affectedname);
  1911. if(affectedplayer == null) {
  1912. msg.prefix(player, prefix_commands, "This player is not online.");
  1913. goto("wait");
  1914. }
  1915. }
  1916. if(affectedplayer != player) {
  1917. affectedname = player.getName(affectedplayer);
  1918. msg.prefix(player, prefix_commands, concat(affectedname, " has been killed."));
  1919. msg.prefix(affectedplayer, prefix_commands, concat("You have been killed by ", player_name, "."));
  1920. } else {
  1921. msg.prefix(affectedplayer, prefix_commands, "You killed yourself.");
  1922. }
  1923. entity.damage(affectedplayer, 1000);
  1924. goto("wait");
  1925. @nickname
  1926. if(size < 1) {
  1927. msg.prefix(player, "§eNickname", "§r/nickname ...");
  1928. msg(player, "§e - <name> ", "Sets a nickname");
  1929. msg(player, "§e - remove ", "Removes a nickname");
  1930. goto("wait");
  1931. }
  1932. nickname = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  1933. if(nickname == "remove") {
  1934. player.removeNickName(player);
  1935. msg.prefix(player, prefix_commands, concat("§rYour nickname was removed."));
  1936. } else {
  1937. player.setNickName(player, nickname);
  1938. msg.prefix(player, prefix_commands, concat("§rYour nickname was changed to ", nickname, "§r."));
  1939. }
  1940. player.setTabName(player);
  1941. goto("wait");
  1942. @iteminfo
  1943. item = entity.getEquip(player, "hand");
  1944. text = text.item(item);
  1945. text = text.replace(text, "\"", "\\\"");
  1946. msg(player, text.clipBoard(text, text));
  1947. goto("wait");
  1948. @perm
  1949. if(size == 0) {
  1950. @perm_syntax
  1951. msg.prefix(player, prefix_perms, "§r/perm ...");
  1952. if(perm.has(player, "perm.give")) {
  1953. msg(player, "§6 - give <player> <perm>");
  1954. }
  1955. if(perm.has(player, "perm.remove")) {
  1956. msg(player, "§6 - remove <player> <perm>");
  1957. }
  1958. if(perm.has(player, "perm.removeall")) {
  1959. msg(player, "§6 - removeall <player>");
  1960. }
  1961. if(perm.has(player, "perm.list")) {
  1962. msg(player, "§6 - list <player>");
  1963. }
  1964. if(perm.has(player, "perm.toggle")) {
  1965. msg(player, "§6 - toggle <player>");
  1966. }
  1967. goto("wait");
  1968. }
  1969. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1970. if(arg0 == "give") {
  1971. if(!perm.has(player, "perm.give")) {
  1972. perm.no(player, "perm.give");
  1973. goto("wait");
  1974. }
  1975. if(size != 3) {
  1976. msg.prefix(player, prefix_perms, "/perm give <player> <perm>");
  1977. } else {
  1978. p_name = list.getIndex(args, 1);
  1979. perm = list.getIndex(args, 2);
  1980. if(!checkIfEverOnline(p_name)) {
  1981. msg.prefix(player, prefix_perms, "This player has never been online.");
  1982. goto("wait");
  1983. }
  1984. if(!isAPermGroup(perm)) {
  1985. msg.prefix(player, prefix_perms, "This is no permission group.");
  1986. goto("wait");
  1987. }
  1988. p_uuid = player.getUuid(p_name);
  1989. p_id = player.getId(p_uuid);
  1990. p_name = player.getName(p_uuid);
  1991. perm_id = map.get(permgroupsmap, perm);
  1992. if(hasPermAlready(p_id, perm_id)) {
  1993. msg.prefix(player, prefix_perms, "Perm already added.");
  1994. goto("wait");
  1995. }
  1996. if(isOnline(p_name)) {
  1997. p = read.player(p_name);
  1998. rank = map.get(permgroupToRank, perm);
  1999. if(rank != null) {
  2000. offerRank(p, rank.getTechName(rank));
  2001. }
  2002. }
  2003. givePerm(p_id, perm_id);
  2004. msg.prefix(player, prefix_perms, concat("§rPerm §7", perm, "§r added to §7", p_name, "§r."));
  2005. }
  2006. goto("wait");
  2007. }
  2008. if(arg0 == "remove") {
  2009. if(!perm.has(player, "perm.remove")) {
  2010. perm.no(player, "perm.remove");
  2011. goto("wait");
  2012. }
  2013. if(size != 3) {
  2014. msg.prefix(player, prefix_perms, "/perm remove <player> <perm>");
  2015. } else {
  2016. p_name = list.getIndex(args, 1);
  2017. perm = list.getIndex(args, 2);
  2018. if(!checkIfEverOnline(p_name)) {
  2019. msg.prefix(player, prefix_perms, "This player has never been online.");
  2020. goto("wait");
  2021. }
  2022. if(!isAPermGroup(perm)) {
  2023. msg.prefix(player, prefix_perms, "This is no permission group.");
  2024. goto("wait");
  2025. }
  2026. p_uuid = player.getUuid(p_name);
  2027. p_id = player.getId(p_uuid);
  2028. p_name = player.getName(p_uuid);
  2029. //Wenn marvinius eine Permission entfernt wird, wird dies blockiert, ausgenommen er tut dies selbst
  2030. player_id = player.getId(player);
  2031. if(player_id != 2) {
  2032. if(p_id == 2) {
  2033. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  2034. goto("wait");
  2035. }
  2036. }
  2037. perm_id = map.get(permgroupsmap, perm);
  2038. if(!hasPermAlready(p_id, perm_id)) {
  2039. msg.prefix(player, prefix_perms, "This player doesn't have that perm.");
  2040. goto("wait");
  2041. }
  2042. removePerm(p_id, perm_id);
  2043. msg.prefix(player, prefix_perms, concat("Perm §7", perm, "§r removed from §7", p_name, "§r."));
  2044. }
  2045. goto("wait");
  2046. }
  2047. if(arg0 == "removeall") {
  2048. if(!perm.has(player, "perm.removeall")) {
  2049. perm.no(player, "perm.removeall");
  2050. goto("wait");
  2051. }
  2052. if(size != 2) {
  2053. msg.prefix(player, prefix_perms, "/perm removeall <player>");
  2054. } else {
  2055. p_name = list.getIndex(args, 1);
  2056. if(!checkIfEverOnline(p_name)) {
  2057. msg.prefix(player, prefix_perms, "This player has never been online.");
  2058. goto("wait");
  2059. }
  2060. //Wenn marvinius Permissions entfernt werden, wird dies blockiert, ausgenommen er tut dies selbst
  2061. p_id = player.getId(player.getUuid(p_name));
  2062. player_id = player.getId(player);
  2063. if(player_id != 2) {
  2064. if(p_id == 2) {
  2065. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  2066. goto("wait");
  2067. }
  2068. }
  2069. removeAllPerms(p_id);
  2070. msg.prefix(player, prefix_perms, concat("§r All perms of §7", p_name, " §rwere removed"));
  2071. }
  2072. goto("wait");
  2073. }
  2074. if(arg0 == "list") {
  2075. if(!perm.has(player, "perm.list")) {
  2076. perm.no(player, "perm.list");
  2077. goto("wait");
  2078. }
  2079. if(size != 2) {
  2080. msg.prefix(player, prefix_perms, "/perm list <player>");
  2081. } else {
  2082. p_name = list.getIndex(args, 1);
  2083. if(!checkIfEverOnline(p_name)) {
  2084. msg.prefix(player, prefix_perms, "This player has never been online.");
  2085. goto("wait");
  2086. }
  2087. p_id = player.getId(player.getUuid(p_name));
  2088. permslist = getPermsFromPlayer(p_id);
  2089. listsize = list.getSize(permslist);
  2090. if(listsize == 0) {
  2091. msg.prefix(player, prefix_perms, "§rKeine Permissions vorhanden");
  2092. } else {
  2093. msg.prefix(player, prefix_perms, p_name);
  2094. for(i = 0; i < listsize; i++) {
  2095. msg(player, " - ", map.get(permgroupsmap2, list.getIndex(permslist, i)));
  2096. }
  2097. }
  2098. }
  2099. goto("wait");
  2100. }
  2101. if(arg0 == "toggle") {
  2102. if(!perm.has(player, "perm.toggle")) {
  2103. perm.no(player, "perm.toggle");
  2104. goto("wait");
  2105. }
  2106. player_id = player.getId(player);
  2107. if(perm.has(player, "pseudoPerm")) {
  2108. reloadAllPerms(player_id);
  2109. msg.prefix(player, prefix_commands, "You have regained your permissions.");
  2110. } else {
  2111. removeAllPermsTemporarly(player_id);
  2112. msg.prefix(player, prefix_commands, "Have fun as a user.");
  2113. }
  2114. goto("wait");
  2115. }
  2116. goto("perm_syntax");
  2117. @allsounds
  2118. if(size == 0) {
  2119. msg.prefix(player, prefix_commands, "§r/allsounds...");
  2120. msg(player, "§e - start");
  2121. msg(player, "§e - stop");
  2122. goto("wait");
  2123. }
  2124. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2125. if(arg0 == "start") {
  2126. if(!map.exists(sounds_map)) {
  2127. sounds_map = map.new();
  2128. }
  2129. player_uuid = player.getUuid(player);
  2130. script_id = map.get(sounds_map, player_uuid);
  2131. if(script_id != null) {
  2132. script = script.getFromId(script_id);
  2133. if(script != null) {
  2134. msg.prefix(player, prefix_commands, "Sounds already started.");
  2135. goto("wait");
  2136. }
  2137. }
  2138. script = script.start("system/playsounds");
  2139. script.setVar(script, "player", player);
  2140. map.add(sounds_map, player.getUuid(player), script.getId(script));
  2141. msg.prefix(player, prefix_commands, "Sounds started.");
  2142. goto("wait");
  2143. }
  2144. if(arg0 == "stop") {
  2145. if(!map.exists(sounds_map)) {
  2146. sounds_map = map.new();
  2147. }
  2148. script_id = map.get(sounds_map, player.getUuid(player));
  2149. if(script_id == null) {
  2150. msg.prefix(player, prefix_commands, "No sounds playing.");
  2151. goto("wait");
  2152. }
  2153. script = script.getFromId(script_id);
  2154. if(script == null) {
  2155. msg.prefix(player, prefix_commands, "No sounds playing.");
  2156. goto("wait");
  2157. }
  2158. script.term(script);
  2159. msg.prefix(player, prefix_commands, "Sounds stopped.");
  2160. goto("wait");
  2161. }
  2162. goto("wait");
  2163. @weather
  2164. if(size == 0) {
  2165. @weather_syntax
  2166. msg.prefix(player, "§eWeather", "§r/weather ...");
  2167. msg(player, "§e - clear [duration]");
  2168. msg(player, "§e - rain [duration]");
  2169. msg(player, "§e - thunder [duration]");
  2170. goto("wait");
  2171. }
  2172. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2173. if(arg0 == "clear" || arg0 == "rain" || arg0 == "thunder") {
  2174. if(size == 2) {
  2175. duration = list.getIndex(args, 1);
  2176. if(!isDouble(duration)) {
  2177. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2178. goto("wait");
  2179. }
  2180. if(duration < 0) {
  2181. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2182. goto("wait");
  2183. }
  2184. } else {
  2185. duration = 12000;
  2186. }
  2187. world = loc.getWorld(entity.getLocation(player));
  2188. if(arg0 == "clear") {
  2189. if(size > 2) {
  2190. msg.prefix(player, prefix_commands, "§r/weather clear [duration]");
  2191. goto("wait");
  2192. }
  2193. world.clearWeather(world, duration);
  2194. msg.prefix(player, prefix_commands, "§rWetter wurde auf Klar gestellt");
  2195. goto("wait");
  2196. }
  2197. if(arg0 == "rain") {
  2198. if(size > 2) {
  2199. msg.prefix(player, prefix_commands, "§r/weather rain [duration]");
  2200. goto("wait");
  2201. }
  2202. world.setRain(world, duration);
  2203. msg.prefix(player, prefix_commands, "§rWetter wurde auf Regen gestellt");
  2204. goto("wait");
  2205. }
  2206. if(arg0 == "thunder") {
  2207. if(size > 2) {
  2208. msg.prefix(player, prefix_commands, "§r/weather thunder [duration]");
  2209. goto("wait");
  2210. }
  2211. world.setThunder(world, duration);
  2212. msg.prefix(player, prefix_commands, "§rWetter wurde auf Gewitter gestellt");
  2213. goto("wait");
  2214. }
  2215. goto("wait");
  2216. }
  2217. goto("weather_syntax");
  2218. @time
  2219. if(size == 0) {
  2220. @time_syntax
  2221. msg.prefix(player, "§eTime", "§r/time ...");
  2222. msg(player, "§e - set <time>");
  2223. msg(player, "§e - add <time>");
  2224. msg(player, "§e - <day / noon / night / midnight>");
  2225. goto("wait");
  2226. }
  2227. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2228. if(arg0 == "set") {
  2229. if(size != 2) {
  2230. msg.prefix(player, prefix_commands, "§r/time set <time>");
  2231. goto("wait");
  2232. }
  2233. setTime = list.getIndex(args, 1);
  2234. if(!isDouble(setTime)) {
  2235. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2236. goto("wait");
  2237. }
  2238. if(setTime < 0) {
  2239. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2240. goto("wait");
  2241. }
  2242. world = loc.getWorld(entity.getLocation(player));
  2243. while(setTime >= 24000) {
  2244. setTime -= 24000;
  2245. }
  2246. world.setTime(world, setTime);
  2247. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(setTime), "."));
  2248. goto("wait");
  2249. }
  2250. if(arg0 == "add") {
  2251. if(size != 2) {
  2252. msg.prefix(player, prefix_commands, "§r/time add <time>");
  2253. goto("wait");
  2254. }
  2255. addTime = list.getIndex(args, 1);
  2256. if(!isDouble(addTime)) {
  2257. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2258. goto("wait");
  2259. }
  2260. if(addTime < 0) {
  2261. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2262. goto("wait");
  2263. }
  2264. world = loc.getWorld(entity.getLocation(player));
  2265. newtime = world.getTime(world) + addTime;
  2266. while(newtime >= 24000) {
  2267. newtime -= 24000;
  2268. }
  2269. world.setTime(world, newtime);
  2270. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2271. goto("wait");
  2272. }
  2273. newtime = null;
  2274. if(arg0 == "day") {
  2275. newtime = 1000;
  2276. } elseif(arg0 == "noon") {
  2277. newtime = 6000;
  2278. } elseif(arg0 == "night") {
  2279. newtime = 13000;
  2280. } elseif(arg0 == "midnight") {
  2281. newtime = 18000;
  2282. }
  2283. if(newtime != null) {
  2284. world = loc.getWorld(entity.getLocation(player));
  2285. world.setTime(world, newtime);
  2286. msg.prefix(player, prefix_commands, concat("Time set to ", text.number(newtime), "."));
  2287. goto("wait");
  2288. }
  2289. goto("time_syntax");
  2290. @gamerule
  2291. world = loc.getWorld(entity.getLocation(player));
  2292. if(size == 0) {
  2293. msg.prefix(player, prefix_commands, "/gamerule <gamerule> [value]");
  2294. goto("wait");
  2295. }
  2296. gamerule_string = list.getIndex(args, 0);
  2297. gamerule_key = gamerule.getKey(gamerule_string);
  2298. if(gamerule_key == null) {
  2299. msg.prefix(player, prefix_commands, "Gamerule doesn't exist.");
  2300. goto("wait");
  2301. }
  2302. gamerule_value = gamerule.getValue(world, gamerule_key);
  2303. if(size == 1) {
  2304. if(gamerule.isBool(gamerule_value)) {
  2305. value = gamerule.getBool(gamerule_value);
  2306. } elseif(gamerule.isInt(gamerule_value)) {
  2307. value = text.number(gamerule.getInt(gamerule_value));
  2308. } else {
  2309. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  2310. goto("wait");
  2311. }
  2312. msg.prefix(player, prefix_commands, concat(gamerule_string, " ", value));
  2313. goto("wait");
  2314. }
  2315. if(size == 2) {
  2316. if(!perm.has(player, "gamerule.write")) {
  2317. perm.no(player, "gamerule.write");
  2318. goto("wait");
  2319. }
  2320. value = list.getIndex(args, 1);
  2321. if(gamerule.isBool(gamerule_value)) {
  2322. if(!isBool(value)) {
  2323. msg.prefix(player, prefix_commands, "Boolean expected.");
  2324. goto("wait");
  2325. }
  2326. gamerule.setBool(gamerule_value, value);
  2327. } elseif(gamerule.isInt(gamerule_value)) {
  2328. if(!isDouble(value)) {
  2329. msg.prefix(player, prefix_commands, "Number expected.");
  2330. goto("wait");
  2331. }
  2332. gamerule.setInt(gamerule_value, value);
  2333. value = text.number(value);
  2334. } else {
  2335. msg.prefix(player, prefix_commands, "Unknown gamerule type.");
  2336. goto("wait");
  2337. }
  2338. if(world.getName(world) == "overworld") {
  2339. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, "."));
  2340. } else {
  2341. msg.prefix(player, prefix_commands, concat(gamerule_string, " set to ", value, " (not persistent)."));
  2342. }
  2343. goto("wait");
  2344. }
  2345. goto("wait");
  2346. @tip
  2347. if(size == 0) {
  2348. msg.prefix(player, prefix_tips, "§r/tip ...");
  2349. msg(player, "§e - list §rList all tips");
  2350. msg(player, "§e - add <tip> <text> §rAdds a tip");
  2351. msg(player, "§e - remove <tip> §rRemoves a tip");
  2352. msg(player, "§e - <tip> [player] §rSends a tip to all/a player");
  2353. goto("wait");
  2354. }
  2355. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2356. if(arg0 == "list") {
  2357. msg(player, "§r--==§eTipps§r==--");
  2358. counter = 0;
  2359. getTippsListStatement = databank.prepare("SELECT * FROM tipps;");
  2360. result = databank.execute(getTippsListStatement);
  2361. while(databank.next(result)) {
  2362. tipp_key = databank.getString(result, 1);
  2363. tipp_value = databank.getString(result, 2);
  2364. msg(player, concat("§e", tipp_key, "§r : ", tipp_value));
  2365. counter++;
  2366. }
  2367. databank.close(result);
  2368. databank.close(getTippsListStatement);
  2369. if(counter == 0) {
  2370. msg.prefix(player, prefix_tips, "§rIm Moment stehen keine Tipps zur Verfügung.");
  2371. }
  2372. goto("wait");
  2373. }
  2374. if(arg0 == "add") {
  2375. if(size < 3) {
  2376. msg.prefix(player, prefix_commands, "§r/tip add <name> <text>");
  2377. goto("wait");
  2378. }
  2379. tipp_key = list.getIndex(args, 1);
  2380. tipp_value = concatList(args, " ", 2, size - 1);
  2381. tipp.register(tipp_key, tipp_value);
  2382. msg.prefix(player, prefix_tips, "§rDer Tipp wurde hinzugefügt.");
  2383. goto("wait");
  2384. }
  2385. if(arg0 == "remove") {
  2386. if(size != 2) {
  2387. msg.prefix(player, prefix_commands, "§r/tip remove <name>");
  2388. goto("wait");
  2389. }
  2390. tipp_key = list.getIndex(args, 1);
  2391. removeTippStatement = databank.prepare("DELETE FROM tipps WHERE tipp_key = ?;");
  2392. databank.setInt(removeTippStatement, 1, tipp_key);
  2393. databank.workerExecute(removeTippStatement);
  2394. msg.prefix(player, prefix_tips, "§rDer Tipp wurde entfernt.");
  2395. goto("wait");
  2396. }
  2397. tipp_key = arg0;
  2398. tipp_value = tipp.get(tipp_key);
  2399. if(tipp_value == null) {
  2400. msg.prefix(player, prefix_tips, "§rDer Tipp existiert nicht.");
  2401. goto("wait");
  2402. }
  2403. if(size == 1) {
  2404. msg.prefix("online", prefix_tips, tipp_value);
  2405. } else {
  2406. p_name = list.getIndex(args, 1);
  2407. if(!isOnline(p_name)) {
  2408. msg.prefix(player, prefix_tips, "§rDieser Spieler ist nicht online");
  2409. goto("wait");
  2410. }
  2411. p = read.player(p_name);
  2412. msg.prefix(p, prefix_tips, tipp_value);
  2413. msg.prefix(player, prefix_tips, concat("§rDer Tipp wurde §7", p_name, "§r gesendet."));
  2414. }
  2415. goto("wait");
  2416. @help
  2417. if(size > 1) {
  2418. msg.prefix(player, prefix_commands, "§r/help [side]");
  2419. goto("wait");
  2420. }
  2421. //Auf Permission überprüfen
  2422. temp_list = list.new();
  2423. for(i = 0; i < list.getSize(command_list); i++) {
  2424. command = list.getIndex(command_list, i);
  2425. if(perm.has(player, command)) {
  2426. list.add(temp_list, command);
  2427. }
  2428. }
  2429. list.sort(temp_list);
  2430. temp_size = list.getSize(temp_list);
  2431. max_side = temp_size / 10;
  2432. if(size == 0) {
  2433. side = 1;
  2434. print_side = side - 1;
  2435. } else {
  2436. side = list.getIndex(args, 0);
  2437. if(!isDouble(side)) {
  2438. msg.prefix(player, prefix_commands, "§r/help [side]");
  2439. goto("wait");
  2440. }
  2441. print_side = side - 1;
  2442. if(print_side < 0 || print_side > max_side) {
  2443. msg.prefix(player, prefix_commands, concat("Möglich: 1 - ", text.number(math.roundDown(max_side + 1))));
  2444. goto("wait");
  2445. }
  2446. }
  2447. msg(player, concat("§a --- Help ", text.number(side), " ---"));
  2448. for(i = print_side * 10; i < print_side * 10 + 10; i++) {
  2449. if(i < temp_size) {
  2450. command = list.getIndex(temp_list, i);
  2451. command = text.hover(command, map.getOrDefault(command_map, command, ""));
  2452. msg(player, " /", command);
  2453. }
  2454. }
  2455. if(side == 1) {
  2456. backward = "§c<<Backward<<";
  2457. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  2458. } elseif(side > max_side) {
  2459. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  2460. forward = "§c>>Forward>>";
  2461. } else {
  2462. backward = text.click("§b<<Backward<<", concat("/help ", side - 1));
  2463. forward = text.click("§b>>Forward>>", concat("/help ", side + 1));
  2464. }
  2465. msg(player, backward, " ", forward);
  2466. goto("wait");
  2467. @cli
  2468. if(size != 1) {
  2469. msg.prefix(player, prefix_commands, "§r/cli <radius>");
  2470. goto("wait");
  2471. }
  2472. radius = list.getIndex(args, 0);
  2473. if(!isDouble(radius) || radius < 0) {
  2474. msg.prefix(player, prefix_commands, "Positive number expected.");
  2475. goto("wait");
  2476. }
  2477. entity.removeAll("net.minecraft.entity.item.ItemEntity", entity.getLocation(player), radius);
  2478. msg.prefix(player, prefix_commands, "§rItems entfernt");
  2479. goto("wait");
  2480. @plough
  2481. if(size != 1) {
  2482. msg.prefix(player, prefix_commands, "§r/plough <radius>");
  2483. goto("wait");
  2484. }
  2485. radius = list.getIndex(args, 0);
  2486. if(!isDouble(radius)) {
  2487. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2488. goto("wait");
  2489. }
  2490. if(radius < 0) {
  2491. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2492. goto("wait");
  2493. }
  2494. center_loc = getBlockLocation(entity.getLocation(player));
  2495. for(x = radius * -1; x <= radius; x++) {
  2496. for(z = radius * -1; z <= radius; z++) {
  2497. for(y = radius * -1; y <= radius; y++) {
  2498. length = math.hypot(x, math.hypot(y, z));
  2499. if(length <= radius) {
  2500. mod_loc = loc.mod(center_loc, x, y, z);
  2501. block = block.get(mod_loc);
  2502. if(block.hasTag(dirt_tag, block) && block.getType(loc.mod(mod_loc, 0, 1, 0)) == "minecraft:air") {
  2503. block.set(mod_loc, "minecraft:farmland[moisture=7]");
  2504. }
  2505. }
  2506. }
  2507. }
  2508. }
  2509. msg.prefix(player, prefix_commands, "§rFeld gepflügt");
  2510. goto("wait");
  2511. @plant
  2512. if(size != 1) {
  2513. msg.prefix(player, prefix_commands, "§r/plant <radius>");
  2514. goto("wait");
  2515. }
  2516. radius = list.getIndex(args, 0);
  2517. if(!isDouble(radius)) {
  2518. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2519. goto("wait");
  2520. }
  2521. if(radius < 0) {
  2522. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2523. goto("wait");
  2524. }
  2525. center_loc = getBlockLocation(entity.getLocation(player));
  2526. for(x = radius * -1; x <= radius; x++) {
  2527. for(z = radius * -1; z <= radius; z++) {
  2528. for(y = radius * -1; y <= radius; y++) {
  2529. length = math.hypot(x, math.hypot(y, z));
  2530. if(length <= radius) {
  2531. mod_loc = loc.mod(center_loc, x, y, z);
  2532. upper_loc = loc.mod(mod_loc, 0, 1, 0);
  2533. if(block.getType(mod_loc) == "minecraft:farmland" && block.getType(upper_loc) == "minecraft:air") {
  2534. block.set(upper_loc, "minecraft:wheat[age=7]");
  2535. }
  2536. }
  2537. }
  2538. }
  2539. }
  2540. msg.prefix(player, prefix_commands, "§rFeld bepflanzt");
  2541. goto("wait");
  2542. @grow
  2543. if(size != 1) {
  2544. msg.prefix(player, prefix_commands, "§r/grow <radius>");
  2545. goto("wait");
  2546. }
  2547. radius = list.getIndex(args, 0);
  2548. if(!isDouble(radius)) {
  2549. msg.prefix(player, prefix_commands, "§rZahl erwartet");
  2550. goto("wait");
  2551. }
  2552. if(radius < 0) {
  2553. msg.prefix(player, prefix_commands, "§rPositive Zahl erwartet");
  2554. goto("wait");
  2555. }
  2556. center_loc = getBlockLocation(entity.getLocation(player));
  2557. grow(center_loc, radius);
  2558. msg.prefix(player, prefix_commands, "§rFeld gedüngt");
  2559. goto("wait");
  2560. @start
  2561. if(size != 1) {
  2562. @starthelp
  2563. msg.prefix(sender, prefix_commands, "/start ...");
  2564. msg(sender, " - ai");
  2565. msg(sender, " - chat");
  2566. msg(sender, " - commands");
  2567. msg(sender, " - creative");
  2568. msg(sender, " - damage");
  2569. msg(sender, " - doors");
  2570. msg(sender, " - friends");
  2571. msg(sender, " - games");
  2572. msg(sender, " - harvest");
  2573. msg(sender, " - herobrine");
  2574. msg(sender, " - mails");
  2575. msg(sender, " - perms");
  2576. msg(sender, " - pumpkin");
  2577. msg(sender, " - scheduler");
  2578. msg(sender, " - shop");
  2579. msg(sender, " - sitting");
  2580. msg(sender, " - stats");
  2581. msg(sender, " - story");
  2582. msg(sender, " - survival");
  2583. msg(sender, " - ticket");
  2584. msg(sender, " - voxel");
  2585. goto("wait");
  2586. }
  2587. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2588. if(arg0 == "ai") {
  2589. script = script.get("Ai");
  2590. if(script != null) {
  2591. script.term(script);
  2592. }
  2593. script.startNamed("Ai", "system/ai", "utils/u_general");
  2594. }
  2595. elseif(arg0 == "commands") {
  2596. script = script.startNamed("Commands", "system/commands", "utils/u_general", "utils/u_games");
  2597. if(script == null) {
  2598. snuvi.debug("Old commands script still active due to error in new script");
  2599. goto("wait");
  2600. }
  2601. script.term(script.get());
  2602. }
  2603. elseif(arg0 == "chat") {
  2604. script = script.get("Chat");
  2605. if(script != null) {
  2606. script.term(script);
  2607. }
  2608. script.startNamed("Chat", "system/chat", "utils/u_general");
  2609. }
  2610. elseif(arg0 == "creative") {
  2611. script = script.get("Creative");
  2612. if(script != null) {
  2613. script.term(script);
  2614. }
  2615. script.startNamed("Creative", "system/creative", "utils/u_general");
  2616. }
  2617. elseif(arg0 == "damage") {
  2618. script = script.get("Damage");
  2619. if(script != null) {
  2620. script.term(script);
  2621. }
  2622. script.startNamed("Damage", "system/damage");
  2623. }
  2624. elseif(arg0 == "doors") {
  2625. script = script.get("Doors");
  2626. if(script != null) {
  2627. script.term(script);
  2628. }
  2629. script.startNamed("Doors", "system/doors", "utils/u_general");
  2630. }
  2631. elseif(arg0 == "games") {
  2632. script = script.get("Gamecenter");
  2633. if(script != null) {
  2634. script.term(script);
  2635. }
  2636. script.startNamed("Gamecenter", "system/gamecenter", "utils/u_general", "utils/u_games");
  2637. }
  2638. elseif(arg0 == "harvest") {
  2639. script = script.get("Harvest");
  2640. if(script != null) {
  2641. script.term(script);
  2642. }
  2643. script.startNamed("Harvest", "system/harvest", "utils/u_general");
  2644. }
  2645. elseif(arg0 == "herobrine") {
  2646. script = script.get("Herobrine");
  2647. if(script != null) {
  2648. script.term(script);
  2649. }
  2650. script.startNamed("Herobrine", "system/herobrine", "utils/u_general");
  2651. }
  2652. elseif(arg0 == "perms") {
  2653. script.start("system/perms", "utils/u_general");
  2654. }
  2655. elseif(arg0 == "pumpkin") {
  2656. script = script.get("Pumpkin");
  2657. if(script != null) {
  2658. script.term(script);
  2659. }
  2660. script.startNamed("Pumpkin", "system/pumpkin", "utils/u_general");
  2661. }
  2662. elseif(arg0 == "stats") {
  2663. script = script.get("Ranklist");
  2664. if(script != null) {
  2665. script.term(script);
  2666. }
  2667. script.startNamed("Ranklist", "system/ranklist", "utils/u_general", "utils/u_games");
  2668. }
  2669. elseif(arg0 == "scheduler") {
  2670. script = script.get("Scheduler");
  2671. if(script != null) {
  2672. script.term(script);
  2673. }
  2674. script.startNamed("Scheduler", "system/scheduler", "utils/u_general");
  2675. }
  2676. elseif(arg0 == "shop") {
  2677. script = script.get("Shops");
  2678. if(script != null) {
  2679. script.term(script);
  2680. }
  2681. script.startNamed("Shops", "system/chestshops", "utils/u_general");
  2682. }
  2683. elseif(arg0 == "mails") {
  2684. script = script.get("Mails");
  2685. if(script != null) {
  2686. script.term(script);
  2687. }
  2688. script.startNamed("Mails", "system/mailsystem", "utils/u_general");
  2689. }
  2690. elseif(arg0 == "ticket") {
  2691. script = script.get("Ticket");
  2692. if(script != null) {
  2693. script.term(script);
  2694. }
  2695. script.startNamed("Ticket", "system/tickets", "utils/u_general");
  2696. }
  2697. elseif(arg0 == "story") {
  2698. script = script.get("Story");
  2699. if(script != null) {
  2700. script.term(script);
  2701. }
  2702. script.startNamed("Story", "system/story", "utils/u_general");
  2703. script = script.get("QuestsAdmont");
  2704. if(script != null) {
  2705. script.term(script);
  2706. }
  2707. script.startNamed("QuestsAdmont", "story/admont/core", "utils/u_general", "utils/u_quest");
  2708. script = script.get("QuestsSchiffbruch");
  2709. if(script != null) {
  2710. script.term(script);
  2711. }
  2712. script.startNamed("QuestsSchiffbruch", "story/schiffbruch/core", "utils/u_general", "utils/u_quest");
  2713. }
  2714. elseif(arg0 == "sitting") {
  2715. script = script.get("Sitting");
  2716. if(script != null) {
  2717. script.term(script);
  2718. }
  2719. script.startNamed("Sitting", "system/sitting", "utils/u_general");
  2720. }
  2721. elseif(arg0 == "survival") {
  2722. script = script.get("Survival");
  2723. if(script != null) {
  2724. script.term(script);
  2725. }
  2726. script.startNamed("Survival", "system/survival", "utils/u_general");
  2727. }
  2728. elseif(arg0 == "voxel") {
  2729. script = script.get("Voxel");
  2730. if(script != null) {
  2731. script.term(script);
  2732. }
  2733. script.startNamed("Voxel", "system/voxel");
  2734. }
  2735. else {
  2736. goto("starthelp");
  2737. }
  2738. goto("wait");
  2739. @senditem
  2740. if(size != 1) {
  2741. msg.prefix(player, prefix_commands, "/senditem <player>");
  2742. goto("wait");
  2743. }
  2744. item = entity.getEquip(player, "hand");
  2745. if(item.getType(item) == "minecraft:air") {
  2746. msg.prefix(player, prefix_commands, "§rDu musst ein Item in der Hand halten");
  2747. goto("wait");
  2748. }
  2749. p_name = list.getIndex(args, 0);
  2750. p_uuid = player.getUuid(p_name);
  2751. if(p_uuid == null) {
  2752. msg.prefix(player, prefix_commands, "This player has never been online.");
  2753. goto("wait");
  2754. }
  2755. p = read.player(p_name);
  2756. if(p == null) {
  2757. msg.prefix(player, prefix_commands, "This player is not online.");
  2758. goto("wait");
  2759. }
  2760. safeGiveItemPlayer(p, item);
  2761. player.removeItem(player, item);
  2762. goto("wait");
  2763. @top
  2764. player_loc = entity.getLocation(player);
  2765. y = 255;
  2766. loc.setY(player_loc, y);
  2767. while(block.isAir(player_loc)) {
  2768. loc.setY(player_loc, y);
  2769. y--;
  2770. }
  2771. player.teleport(player, loc.mod(player_loc, 0, 1, 0), true);
  2772. goto("wait");
  2773. @story
  2774. story_spawn = world.getStorySpawn();
  2775. world = loc.getWorld(story_spawn);
  2776. if(world == null) {
  2777. msg.prefix(player, prefix_commands, "This world is not loaded.");
  2778. goto("wait");
  2779. }
  2780. if(size > 1) {
  2781. msg.prefix(player, prefix_commands, "/story [player]");
  2782. goto("wait");
  2783. }
  2784. if(size == 1) {
  2785. affectedname = list.getIndex(args, 0);
  2786. affectedplayer = read.player(affectedname);
  2787. if(affectedplayer == null) {
  2788. msg.prefix(player, prefix_commands, "This player is not online.");
  2789. goto("wait");
  2790. }
  2791. if(!perm.has(player, "teleport.other")) {
  2792. perm.no(player, "teleport.other");
  2793. goto("wait");
  2794. }
  2795. }
  2796. if(player.hasMinigame(affectedplayer)) {
  2797. if(size == 1) {
  2798. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  2799. } else {
  2800. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  2801. }
  2802. goto("wait");
  2803. }
  2804. if(size == 1) {
  2805. if(player != affectedplayer) {
  2806. affectedname = player.getName(affectedplayer);
  2807. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the story world."));
  2808. }
  2809. }
  2810. if(player.teleport(affectedplayer, story_spawn, true)) {
  2811. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the story world.");
  2812. }
  2813. goto("wait");
  2814. @games
  2815. world = loc.getWorld(gamesspawn);
  2816. if(world == null) {
  2817. msg.prefix(player, prefix_commands, "This world is not loaded.");
  2818. goto("wait");
  2819. }
  2820. if(size > 1) {
  2821. msg.prefix(player, prefix_commands, "/games [player]");
  2822. goto("wait");
  2823. }
  2824. if(size == 1) {
  2825. affectedname = list.getIndex(args, 0);
  2826. affectedplayer = read.player(affectedname);
  2827. if(affectedplayer == null) {
  2828. msg.prefix(player, prefix_commands, "This player is not online.");
  2829. goto("wait");
  2830. }
  2831. if(!perm.has(player, "teleport.other")) {
  2832. perm.no(player, "teleport.other");
  2833. goto("wait");
  2834. }
  2835. }
  2836. if(player.hasMinigame(affectedplayer)) {
  2837. if(size == 1) {
  2838. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  2839. } else {
  2840. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  2841. }
  2842. goto("wait");
  2843. }
  2844. if(size == 1) {
  2845. if(player != affectedplayer) {
  2846. affectedname = player.getName(affectedplayer);
  2847. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported to the games world."));
  2848. }
  2849. }
  2850. if(player.teleport(affectedplayer, gamesspawn, true)) {
  2851. msg.prefix(affectedplayer, prefix_commands, "You have been teleported to the games world.");
  2852. }
  2853. goto("wait");
  2854. @bug
  2855. msg.prefix(player, prefix_commands, "Found a bug? Report it to marvinius with §b/mail marvinius <message>");
  2856. goto("wait");
  2857. @repair
  2858. item = entity.getEquip(player, "hand");
  2859. if(item.getType(item) == "minecraft:air") {
  2860. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  2861. goto("wait");
  2862. }
  2863. item.setDamage(item, 0);
  2864. msg.prefix(player, prefix_commands, "Your item has been repaired.");
  2865. goto("wait");
  2866. @report
  2867. msg.prefix(player, prefix_commands, "Want to report a player?");
  2868. msg(player, " - §b/ticket <message>");
  2869. msg(player, " - §b/mail marvinius <message>");
  2870. goto("wait");
  2871. @playtime
  2872. if(size == 0) {
  2873. p_id = player.getId(player);
  2874. arg0 = player.getName(player);
  2875. } else {
  2876. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2877. if(arg0 == "year") {
  2878. if(!perm.has(player, "playtime.year")) {
  2879. perm.no(player, "playtime.year");
  2880. goto("wait");
  2881. }
  2882. calendar = time.new(time.getMillis());
  2883. now_month = time.getMonth(calendar);
  2884. now_year = time.getYear(calendar);
  2885. if(size == 1) {
  2886. year = now_year;
  2887. } else {
  2888. year = list.getIndex(args, 1);
  2889. if(!isDouble(year)) {
  2890. msg.prefix(player, prefix_commands, "Number expected.");
  2891. goto("wait");
  2892. }
  2893. if(year > now_year) {
  2894. year = now_year;
  2895. }
  2896. }
  2897. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  2898. since_minutes = playtime.getTotalOnlineMinutes();
  2899. //Tabelle erstellen
  2900. table = table.new("§8", 4, 5, 5);
  2901. msg(player, table.getStart(table));
  2902. msg(player, table.get(table, text.number(year), "Playtime", "Change"));
  2903. msg(player, table.getMiddle(table));
  2904. //Erstes Mitternacht des gewählten Jahres festlegen
  2905. now_day = time.getDay(calendar);
  2906. time.nextDay(calendar);
  2907. midnight = time.from(calendar) - (time.getDaysBetween(1, 1, year, now_day, now_month, now_year) + 1) * 86400000;
  2908. //Monats-Spielzeit berechnen
  2909. temp_list = list.new();
  2910. list.add(temp_list, playtime.getInterval(midnight - time.getMonthDays(12, year - 1) * 86400000, midnight)); //Dezember des Vorjahres hinzufügen
  2911. for(i = 1; i <= 12; i++) {
  2912. midnight_2 = midnight + time.getMonthDays(i, now_year) * 86400000; //Alle Tage eines Monats * 24 Stunden
  2913. minutes = playtime.getInterval(midnight, midnight_2);
  2914. list.add(temp_list, minutes);
  2915. midnight = midnight_2;
  2916. if(i == now_month && year == now_year) {
  2917. minutes += since_minutes;
  2918. }
  2919. }
  2920. for(i = 1; i <= 12; i++) {
  2921. minutes = list.getIndex(temp_list, i);
  2922. hours = math.roundDown(minutes / 60);
  2923. mod_minutes = minutes % 60;
  2924. if(mod_minutes < 10) {
  2925. time_string = concat("§6", text.number(hours), ":0", text.number(mod_minutes), " h");
  2926. } else {
  2927. time_string = concat("§6", text.number(hours), ":", text.number(mod_minutes), " h");
  2928. }
  2929. pre_minutes = list.getIndex(temp_list, i - 1);
  2930. if(minutes >= pre_minutes) {
  2931. color = "§a+";
  2932. a = minutes;
  2933. b = pre_minutes;
  2934. } else {
  2935. color = "§c-";
  2936. a = pre_minutes;
  2937. b = minutes;
  2938. }
  2939. if(b == 0) {
  2940. change = "";
  2941. } else {
  2942. change = math.round(a / b * 100 - 100);
  2943. change = concat(color, text.number(change), " %");
  2944. }
  2945. msg(player, table.get(table, concat("§6", map.get(monthlist, i)), time_string, change));
  2946. if(i == now_month && year == now_year) {
  2947. break;
  2948. }
  2949. }
  2950. //Tabelle beenden
  2951. msg(player, table.getEnd(table));
  2952. goto("wait");
  2953. }
  2954. if(arg0 == "month") {
  2955. if(!perm.has(player, "playtime.month")) {
  2956. perm.no(player, "playtime.month");
  2957. goto("wait");
  2958. }
  2959. calendar = time.new(time.getMillis());
  2960. now_month = time.getMonth(calendar);
  2961. now_year = time.getYear(calendar);
  2962. year = now_year;
  2963. if(size == 1) {
  2964. month = now_month;
  2965. } else {
  2966. month = list.getIndex(args, 1);
  2967. if(!isDouble(month)) {
  2968. msg.prefix(player, prefix_commands, "Number expected.");
  2969. goto("wait");
  2970. }
  2971. if(month < 1) {
  2972. month = 1;
  2973. } elseif(month > 12) {
  2974. month = 12;
  2975. }
  2976. if(size == 3) {
  2977. year = list.getIndex(args, 2);
  2978. if(!isDouble(year)) {
  2979. msg.prefix(player, prefix_commands, "Number expected.");
  2980. goto("wait");
  2981. }
  2982. }
  2983. if(year > now_year ||(year >= now_year && month > now_month)) {
  2984. month = now_month;
  2985. year = now_year;
  2986. }
  2987. }
  2988. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  2989. since_minutes = playtime.getTotalOnlineMinutes();
  2990. //Tabelle erstellen
  2991. table = table.new("§8", 4, 5, 5);
  2992. msg(player, table.getStart(table));
  2993. msg(player, table.get(table, map.get(monthlist, month), "Playtime", "Players"));
  2994. msg(player, table.getMiddle(table));
  2995. //Erstes Mitternacht des gewählten Monats festlegen
  2996. now_day = time.getDay(calendar);
  2997. time.nextDay(calendar);
  2998. midnight = time.from(calendar) - (time.getDaysBetween(1, month, year, now_day, now_month, now_year) + 1) * 86400000;
  2999. //Tages-Spielzeit berechnen
  3000. for(i = 1; i <= time.getMonthDays(month, year); i++) {
  3001. players = playtime.getPlayersPerInterval(midnight, midnight + 86400000);
  3002. minutes = playtime.getInterval(midnight, midnight + 86400000);
  3003. midnight += 86400000; //24 Stunden
  3004. if(i == now_day && month == now_month && year == now_year) {
  3005. minutes += since_minutes;
  3006. }
  3007. hours = math.roundDown(minutes / 60);
  3008. minutes = minutes % 60;
  3009. if(minutes < 10) {
  3010. time_string = concat("§6", text.number(hours), ":0", text.number(minutes), " h");
  3011. } else {
  3012. time_string = concat("§6", text.number(hours), ":", text.number(minutes), " h");
  3013. }
  3014. msg(player, table.get(table, concat("§6", text.number(i)), time_string, text.number(players)));
  3015. if(i == now_day && month == now_month && year == now_year) {
  3016. break;
  3017. }
  3018. }
  3019. //Tabelle beenden
  3020. msg(player, table.getEnd(table));
  3021. goto("wait");
  3022. }
  3023. if(arg0 == "all") {
  3024. msg(player, getSpacer());
  3025. msg.prefix(player, prefix_commands, "Server-Playtime");
  3026. //Von allen Online-Spielern die Onlinezeit abrufen, summieren und zur Heute-Spielzeit addieren
  3027. since_minutes = playtime.getTotalOnlineMinutes();
  3028. now_time = time.getMillis();
  3029. //Spielzeit heute
  3030. calendar = time.new(now_time);
  3031. time.nextDay(calendar);
  3032. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3033. minutes = playtime.getInterval(midnight, now_time) + since_minutes;
  3034. hours = text.number(math.roundDown(minutes / 60));
  3035. minutes = text.number(minutes % 60);
  3036. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3037. //Spielzeit 30 Tage für alle Spieler
  3038. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3039. minutes = playtime.getInterval(oneMonthAgo, now_time) + since_minutes;
  3040. hours = text.number(math.roundDown(minutes / 60));
  3041. minutes = text.number(minutes % 60);
  3042. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3043. //Spielzeit gesamt
  3044. minutes = playtime.getTotal();
  3045. hours = text.number(math.roundDown(minutes / 60));
  3046. minutes = text.number(minutes % 60);
  3047. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3048. goto("wait");
  3049. }
  3050. if(!perm.has(player, "playtime.other")) {
  3051. perm.no(player, "playtime.other");
  3052. goto("wait");
  3053. }
  3054. }
  3055. if(!checkIfEverOnline(arg0)) {
  3056. msg.prefix(player, prefix_commands, "This player has never been online.");
  3057. goto("wait");
  3058. }
  3059. now_time = time.getMillis();
  3060. p_uuid = player.getUuid(arg0);
  3061. arg0 = player.getName(p_uuid);
  3062. p_id = player.getId(p_uuid);
  3063. msg(player, getSpacer());
  3064. msg.prefix(player, prefix_commands, concat("Playtime of ", player.getName(p_uuid)));
  3065. //Online seit
  3066. since_minutes = playtime.getPlayerOnlineMinutes(p_id);
  3067. if(isOnline(arg0)) {
  3068. since_hours = math.roundDown(since_minutes / 60);
  3069. mod_minutes = since_minutes % 60;
  3070. msg(player, concat("§aOnline since: §r", text.number(since_hours), " hours ", text.number(mod_minutes), " minutes"));
  3071. } else {
  3072. msg(player, "§6Status: ", "§cOffline");
  3073. }
  3074. //Spielzeit heute
  3075. calendar = time.new(now_time);
  3076. time.nextDay(calendar);
  3077. midnight = time.from(calendar) - 86400000; //24 Stunden von nächstem Mitternacht abziehen
  3078. minutes = playtime.getPlayerInterval(p_id, midnight, now_time) + since_minutes;
  3079. hours = text.number(math.roundDown(minutes / 60));
  3080. minutes = text.number(minutes % 60);
  3081. msg(player, "§6Today: §r", hours, " h ", minutes, " min");
  3082. //Spielzeit 30 Tage
  3083. oneMonthAgo = now_time - 2592000000; //30 Tage von jetzt an
  3084. minutes = playtime.getPlayerInterval(p_id, oneMonthAgo, now_time) + since_minutes;
  3085. hours = text.number(math.roundDown(minutes / 60));
  3086. minutes = text.number(minutes % 60);
  3087. msg(player, "§630 Days: §r", hours, " h ", minutes, " min");
  3088. //Spielzeit gesamt
  3089. minutes = playtime.getPlayerTotal(p_id);
  3090. hours = text.number(math.roundDown(minutes / 60));
  3091. minutes = text.number(minutes % 60);
  3092. msg(player, "§6Total: §r", hours, " h ", minutes, " min");
  3093. goto("wait");
  3094. @datatools
  3095. if(size == 0) {
  3096. @datatoolshelp
  3097. msg.prefix(player, prefix_datatools, "/datatools ...");
  3098. msg(player, "§6 - hide <name> §rHides wusi on an itemstack");
  3099. msg(player, "§6 - attribute <attribut> <slot> <double> <op> §rFügt ein Attribut zu einem ItemStack hinzu");
  3100. msg(player, "§6 - hide-entity §rMacht ein Entity unsichtbar");
  3101. msg(player, "§6 - show-entity §rMacht ein Entity sichtbar");
  3102. msg(player, "§6 - name-entity <name> §rSetzt den Namen des Entities");
  3103. msg(player, "§6 - name-visibility <boolean> §rZeigt den Namen (nicht) dauerhaft");
  3104. msg(player, "§6 - name-item <name> §rSetzt den Itemnamen");
  3105. msg(player, "§6 - lore-item <line> <lore> §rSetzt die Itemlore");
  3106. goto("wait");
  3107. }
  3108. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3109. if(arg0 == "hide") {
  3110. if(size < 2) {
  3111. msg.prefix(player, prefix_datatools, "§r/datatools hide <name>");
  3112. goto("wait");
  3113. }
  3114. item = entity.getEquip(player, "hand");
  3115. if(item.getType(item) == "minecraft:air") {
  3116. msg.prefix(player, prefix_datatools, "Hold an item in your hand.");
  3117. goto("wait");
  3118. }
  3119. name = text.concatList(args, " ", 1, size - 1);
  3120. if(item.hide(item, name)) {
  3121. msg.prefix(player, prefix_datatools, "You hided something.");
  3122. } else {
  3123. msg.prefix(player, prefix_datatools, "You can't hide that.");
  3124. }
  3125. goto("wait");
  3126. }
  3127. if(arg0 == "attribute") {
  3128. if(size < 5) {
  3129. msg.prefix(player, prefix_datatools, "/datatools attribute <attribut> <slot> <double> <op>");
  3130. goto("wait");
  3131. }
  3132. item = entity.getEquip(player, "hand");
  3133. if(item.getType(item) == "minecraft:air") {
  3134. msg.prefix(player, prefix_commands, "You have to hold an item in your mainhand.");
  3135. goto("wait");
  3136. }
  3137. double = list.getIndex(args, 3);
  3138. if(!isDouble(double) || double < 0) {
  3139. msg.prefix(player, prefix_datatools, "Natural number expected.");
  3140. goto("wait");
  3141. }
  3142. attribut = concat("generic.", list.getIndex(args, 1));
  3143. slot = read.slot(list.getIndex(args, 2));
  3144. if(slot == null) {
  3145. msg.prefix(player, prefix_datatools, "Incorrect slot.");
  3146. goto("wait");
  3147. }
  3148. operation = list.getIndex(args, 4);
  3149. if(operation == "ADDITION") {
  3150. operation = 0;
  3151. } elseif(operation == "MULTIPLY_BASE") {
  3152. operation = 1;
  3153. } elseif(operation == "MULTIPLY_TOTAL") {
  3154. operation = 2;
  3155. } else {
  3156. msg.prefix(player, prefix_datatools, "Incorrect operation.");
  3157. goto("wait");
  3158. }
  3159. item.addAttribute(item, attribut, slot, double, operation);
  3160. msg.prefix(player, prefix_datatools, "Attribute added.");
  3161. goto("wait");
  3162. }
  3163. if(arg0 == "name-item") {
  3164. if(size < 2) {
  3165. msg.prefix(player, prefix_datatools, "§r/datatools name-item <name>");
  3166. goto("wait");
  3167. }
  3168. item = entity.getEquip(player, "hand");
  3169. if(item.getType(item) == "minecraft:air") {
  3170. msg.prefix(player, prefix_datatools, "§rDu musst ein Item in der Hand halten.");
  3171. goto("wait");
  3172. }
  3173. name = text.concatList(args, " ", 1, size - 1);
  3174. name = text.replace(name, "&", "§");
  3175. name = text.replace(name, "\\n", "\n");
  3176. item.setName(item, name);
  3177. msg.prefix(player, prefix_datatools, concat("Das Item trägt nun den Namen ", name, "§r."));
  3178. goto("wait");
  3179. }
  3180. if(arg0 == "lore-item") {
  3181. if(size < 3) {
  3182. msg.prefix(player, prefix_datatools, "§r/datatools lore-item <line> <lore>");
  3183. goto("wait");
  3184. }
  3185. item = entity.getEquip(player, "hand");
  3186. if(item.getType(item) == "minecraft:air") {
  3187. msg.prefix(player, prefix_datatools, "§rDu musst ein Item in der Hand halten.");
  3188. goto("wait");
  3189. }
  3190. line = list.getIndex(args, 1);
  3191. if(!isDouble(line)) {
  3192. msg.prefix(player, prefix_datatools, "Zahl erwartet.");
  3193. goto("wait");
  3194. }
  3195. if(line < 0) {
  3196. msg.prefix(player, prefix_datatools, "Positive Zahl erwartet.");
  3197. goto("wait");
  3198. }
  3199. lore = text.concatList(args, " ", 2, size - 1);
  3200. lore = text.replace(lore, "&", "§");
  3201. item.addLore(item, line, lore);
  3202. msg.prefix(player, prefix_datatools, "Die neue Lore wurde hinzugefügt.");
  3203. goto("wait");
  3204. }
  3205. if(arg0 == "maxhealth") {
  3206. if(size < 2) {
  3207. msg.prefix(player, prefix_datatools, "§r/datatools maxhealth <value>");
  3208. goto("wait");
  3209. }
  3210. value = list.getIndex(args, 1);
  3211. if(!isDouble(value)) {
  3212. msg.prefix(player, prefix_datatools, "Zahl erwartet.");
  3213. goto("wait");
  3214. }
  3215. templist = living.near(player, 3);
  3216. if(list.getSize(templist) == 0) {
  3217. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3218. goto("wait");
  3219. }
  3220. entity = list.getIndex(templist, 0);
  3221. if(isPlayer(entity)) {
  3222. msg.prefix(player, prefix_datatools, "Auf Spieler nicht anwendbar.");
  3223. goto("wait");
  3224. }
  3225. living.setMaxHealth(entity, value);
  3226. msg.prefix(player, prefix_datatools, concat("Das Entity ", entity.getType(entity), " hat nun Maxhealth: ", entity.getMaxHealth(entity), "§r."));
  3227. goto("wait");
  3228. }
  3229. if(arg0 == "name-entity") {
  3230. if(size < 2) {
  3231. msg.prefix(player, prefix_datatools, "§r/datatools name-entity <name>");
  3232. goto("wait");
  3233. }
  3234. templist = living.near(player, 3);
  3235. if(list.getSize(templist) == 0) {
  3236. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3237. goto("wait");
  3238. }
  3239. entity = list.getIndex(templist, 0);
  3240. name = text.concatList(args, " ", 1, size - 1);
  3241. name = text.replace(name, "&", "§");
  3242. name = text.replace(name, "\\n", "\n");
  3243. entity.setName(entity, name, true);
  3244. msg.prefix(player, prefix_datatools, concat("Das Entity trägt nun den Namen ", name, "§r."));
  3245. goto("wait");
  3246. }
  3247. if(arg0 == "name-visibility") {
  3248. if(size != 2) {
  3249. msg.prefix(player, prefix_datatools, "§r/datatools name-visibility <boolean>");
  3250. goto("wait");
  3251. }
  3252. templist = living.near(player, 3);
  3253. if(list.getSize(templist) == 0) {
  3254. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3255. goto("wait");
  3256. }
  3257. entity = list.getIndex(templist, 0);
  3258. boolean = list.getIndex(args, 1);
  3259. name = entity.getName(entity);
  3260. entity.setName(entity, name, boolean);
  3261. msg.prefix(player, prefix_datatools, "Änderung durchgeführt.");
  3262. goto("wait");
  3263. }
  3264. if(arg0 == "hide-entity") {
  3265. if(size != 1) {
  3266. msg.prefix(player, prefix_datatools, "§r/datatools hide-entity");
  3267. goto("wait");
  3268. }
  3269. templist = living.near(player, 3);
  3270. if(list.getSize(templist) == 0) {
  3271. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3272. goto("wait");
  3273. }
  3274. entity = list.getIndex(templist, 0);
  3275. entity.setInvisible(entity, true);
  3276. msg.prefix(player, prefix_datatools, "Das Entity ist nun unsichtbar.");
  3277. goto("wait");
  3278. }
  3279. if(arg0 == "show-entity") {
  3280. if(size != 1) {
  3281. msg.prefix(player, prefix_datatools, "§r/datatools show-entity");
  3282. goto("wait");
  3283. }
  3284. templist = living.near(player, 3);
  3285. if(list.getSize(templist) == 0) {
  3286. msg.prefix(player, prefix_datatools, "Zu weit weg vom Entity.");
  3287. goto("wait");
  3288. }
  3289. entity = list.getIndex(templist, 0);
  3290. entity.setInvisible(entity, false);
  3291. msg.prefix(player, prefix_datatools, "Das Entity ist nun sichtbar.");
  3292. goto("wait");
  3293. }
  3294. goto("datatoolshelp");
  3295. @human
  3296. if(size == 0) {
  3297. @humanhelp
  3298. msg.prefix(player, prefix_human, "/human ...");
  3299. msg(player, concat("§6 - spawn §rSpawnt einen Human"));
  3300. msg(player, concat("§6 - set <name> §rSetzt den Skin"));
  3301. msg(player, concat("§6 - setuuid <uuid> §rSetzt den Skin"));
  3302. msg(player, concat("§6 - name §rSetzt den Namen"));
  3303. msg(player, concat("§6 - kill §rTötet einen Human"));
  3304. msg(player, concat("§6 - size <scale> §rSetzt die Größenskalierung"));
  3305. msg(player, concat("§6 - steve §rSchaltet auf Steve Skin"));
  3306. msg(player, concat("§6 - alex §rSchaltet auf Alex Skin"));
  3307. msg(player, concat("§6 - statue <bool> §rToggles between statue"));
  3308. goto("wait");
  3309. }
  3310. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3311. if(arg0 == "spawn") {
  3312. human.spawn(entity.getLocation(player));
  3313. msg.prefix(player, prefix_human, "Human gespawnt.");
  3314. goto("wait");
  3315. }
  3316. player_loc = entity.getLocation(player);
  3317. human = entity.get(player_loc, 3, "me.km.entities.EntityHuman");
  3318. if(human == null) {
  3319. msg.prefix(player, prefix_human, "Zu weit weg vom Human.");
  3320. goto("wait");
  3321. }
  3322. if(arg0 == "set") {
  3323. if(size == 2) {
  3324. name = list.getIndex(args, 1);
  3325. human.setSkin(human, name);
  3326. msg.prefix(player, prefix_human, "Skin gesetzt.");
  3327. goto("wait");
  3328. }
  3329. }
  3330. elseif(arg0 == "setuuid") {
  3331. if(size == 2) {
  3332. uuid = list.getIndex(args, 1);
  3333. human.setSkin(human, uuid);
  3334. msg.prefix(player, prefix_human, "Skin gesetzt.");
  3335. goto("wait");
  3336. }
  3337. }
  3338. elseif(arg0 == "name") {
  3339. if(size > 1) {
  3340. name = text.concatList(args, " ", 1, size - 1);
  3341. name = text.replace(name, "&", "§");
  3342. name = text.replace(name, "\\n", "\n");
  3343. entity.setName(human, name, true);
  3344. msg.prefix(player, prefix_human, concat("Das Entity trägt nun den Namen ", name, "§r."));
  3345. goto("wait");
  3346. }
  3347. }
  3348. elseif(arg0 == "kill") {
  3349. entity.remove(human);
  3350. msg.prefix(player, prefix_human, "Human getötet.");
  3351. goto("wait");
  3352. }
  3353. elseif(arg0 == "size") {
  3354. if(size == 2) {
  3355. scale = list.getIndex(args, 1);
  3356. if(!isDouble(scale)) {
  3357. msg.prefix(player, prefix_human, "Zahl erwartet.");
  3358. goto("wait");
  3359. }
  3360. if(scale > 10) {
  3361. msg.prefix(player, prefix_human, "Maximal 10.");
  3362. scale = 10;
  3363. }
  3364. human.setScale(human, scale);
  3365. msg.prefix(player, prefix_human, "Größe verändert.");
  3366. goto("wait");
  3367. }
  3368. }
  3369. elseif(arg0 == "steve") {
  3370. human.setSlim(human, false);
  3371. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  3372. goto("wait");
  3373. }
  3374. elseif(arg0 == "alex") {
  3375. human.setSlim(human, true);
  3376. msg.prefix(player, prefix_human, "Skin-Format geändert.");
  3377. goto("wait");
  3378. }
  3379. elseif(arg0 == "statue") {
  3380. if(size == 1) {
  3381. bool = true;
  3382. } elseif(size == 2) {
  3383. bool = list.getIndex(args, 1);
  3384. if(bool != true && bool != false) {
  3385. bool = true;
  3386. }
  3387. }
  3388. human.setStatue(human, bool);
  3389. msg.prefix(player, prefix_human, "Human changed.");
  3390. goto("wait");
  3391. }
  3392. goto("humanhelp");
  3393. @answer
  3394. if(player.isMuted(player)) {
  3395. msg.prefix(player, "§6Commands", "You are muted.");
  3396. goto("wait");
  3397. }
  3398. if(size < 1) {
  3399. msg.prefix(sender, prefix_commands, "/answer <message>");
  3400. goto("wait");
  3401. }
  3402. player_uuid = player.getUuid(sender);
  3403. p_uuid = map.get(answer_map, player_uuid);
  3404. if(p_uuid == null) {
  3405. msg.prefix(sender, prefix_commands, "There is no one you could answer.");
  3406. goto("wait");
  3407. }
  3408. message = text.replace(text.concatList(args, " ", 0, size - 1), "&", "§");
  3409. if(text.startsWith(message, "https://", 0)) {
  3410. message = text.link(message, message);
  3411. }
  3412. if(player.getId(p_uuid) == 18) {
  3413. msg(sender, "§6[ -> §cSERVER§6] ", message);
  3414. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  3415. } else {
  3416. p = player.get(p_uuid);
  3417. if(p == null) {
  3418. msg.prefix(sender, prefix_commands, "This player is not online.");
  3419. goto("wait");
  3420. }
  3421. msg(sender, text.concat2(concat("§6[ -> §c", player.getName(p), "§6] "), message));
  3422. msg(p, text.concat2(concat("§6[§c", sender_name, "§6] "), message));
  3423. }
  3424. map.add(answer_map, p_uuid, player_uuid);
  3425. map.add(answer_map, player_uuid, p_uuid);
  3426. goto("wait");
  3427. @msg
  3428. if(player.isMuted(player)) {
  3429. msg.prefix(player, "§6Commands", "You are muted.");
  3430. goto("wait");
  3431. }
  3432. if(size < 2) {
  3433. msg.prefix(sender, prefix_commands, "/msg <player> <message>");
  3434. goto("wait");
  3435. }
  3436. p_name = list.getIndex(args, 0);
  3437. p_uuid = player.getUuid(p_name);
  3438. if(p_uuid == null) {
  3439. msg.prefix(sender, prefix_commands, "Unknown player.");
  3440. goto("wait");
  3441. }
  3442. message = text.replace(text.concatList(args, " ", 1, size - 1), "&", "§");
  3443. if(text.startsWith(message, "https://", 0)) {
  3444. message = text.link(message, message);
  3445. }
  3446. if(text.toUpperCase(p_name) == "SERVER") {
  3447. msg("SERVER", concat("§6[§c", sender_name), "§6] ", message);
  3448. msg(sender, "§6[ -> §cSERVER§6] ", message);
  3449. } else {
  3450. p = read.player(p_name);
  3451. if(p == null) {
  3452. msg.prefix(sender, prefix_commands, "This player is not online.");
  3453. goto("wait");
  3454. }
  3455. msg(p, concat("§6[§c", sender_name), "§6] ", message);
  3456. msg(sender, concat("§6[ -> §c", player.getName(p)), "§6] ", message);
  3457. }
  3458. player_uuid = player.getUuid(sender);
  3459. map.add(answer_map, p_uuid, player_uuid);
  3460. map.add(answer_map, player_uuid, p_uuid);
  3461. goto("wait");
  3462. @list
  3463. list = players.toList();
  3464. size = list.getSize(list);
  3465. msg(sender, getSpacer());
  3466. if(size == 1) {
  3467. msg(sender, concat("§6There is ", text.number(size), " players online."));
  3468. } else {
  3469. msg(sender, concat("§6There are ", text.number(size), " players online."));
  3470. }
  3471. for(i = 0; i < size; i++) {
  3472. p = list.getIndex(list, i);
  3473. full_name = player.getFullName(p);
  3474. if(player.isAfk(p)) {
  3475. full_name = concat("§7§m", removeFormat(full_name));
  3476. }
  3477. msg(sender, full_name);
  3478. }
  3479. goto("wait");
  3480. @ass
  3481. if(size < 2) {
  3482. msg.prefix(player, prefix_commands, "§r/ass ...");
  3483. msg(player, " - set <name>");
  3484. msg(player, " - rename <name>");
  3485. msg(player, " - remove <radius>");
  3486. goto("wait");
  3487. }
  3488. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3489. if(arg0 == "set") {
  3490. name = text.concatList(args, " ", 1, size - 1);
  3491. name = text.replace(name, "&", "§");
  3492. name = text.replace(name, "\\n", "\n");
  3493. ent = entity.spawn("km:nobody", entity.getLocation(player), "{NoGravity:true}");
  3494. entity.setName(ent, name);
  3495. goto("wait");
  3496. }
  3497. if(arg0 == "rename") {
  3498. name = text.concatList(args, " ", 1, size - 1);
  3499. name = text.replace(name, "&", "§");
  3500. name = text.replace(name, "\\n", "\n");
  3501. ent_list = living.near(player, 5);
  3502. for(i = 0; i < list.getSize(ent_list); i++) {
  3503. ent = list.getIndex(ent_list, i);
  3504. if(entity.getType(ent) == "nobody") {
  3505. entity.setName(ent, name);
  3506. goto("wait");
  3507. }
  3508. }
  3509. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  3510. goto("wait");
  3511. }
  3512. if(arg0 == "remove") {
  3513. radius = list.getIndex(args, 1);
  3514. if(!isDouble(radius)) {
  3515. msg.prefix(player, prefix_commands, "Zahl erwartet.");
  3516. goto("wait");
  3517. }
  3518. if(radius < 0 || radius > 5) {
  3519. msg.prefix(player, prefix_commands, "§rRadius: 0-5");
  3520. goto("wait");
  3521. }
  3522. ent_list = living.near(player, radius);
  3523. for(i = 0; i < list.getSize(ent_list); i++) {
  3524. ent = list.getIndex(ent_list, i);
  3525. if(entity.getType(ent) == "nobody") {
  3526. entity.remove(ent);
  3527. msg.prefix(player, prefix_commands, "§rLufttext entfernt");
  3528. goto("wait");
  3529. }
  3530. }
  3531. msg.prefix(player, prefix_commands, "§rKeinen Lufttext gefunden");
  3532. }
  3533. goto("wait");
  3534. @coords
  3535. target_loc = player.getTarget(player, 5, false, false);
  3536. targettype = block.getType(target_loc);
  3537. if(targettype == "minecraft:air") {
  3538. msg.prefix(player, prefix_commands, "You have to look at a block.");
  3539. goto("wait");
  3540. }
  3541. msg(player, getSpacer());
  3542. x = text.Number(loc.getX(target_loc));
  3543. y = text.Number(loc.getY(target_loc));
  3544. z = text.Number(loc.getZ(target_loc));
  3545. msg(player, "§6World: §r", world.getName(loc.getWorld(target_loc)));
  3546. msg(player, "§6Coords: §r", x, " / ", y, " / ", z);
  3547. msg(player, "§6Block: §r", targettype);
  3548. goto("wait");
  3549. @sign
  3550. if(size == 0) {
  3551. msg.prefix(player, prefix_commands, "/sign <1-4> [text]");
  3552. goto("wait");
  3553. }
  3554. target_loc = player.getTarget(player, 5, false, false);
  3555. block = block.get(target_loc);
  3556. if(!block.hasTag(sign_tag, block)) {
  3557. msg.prefix(player, prefix_commands, "Look at a sign.");
  3558. goto("wait");
  3559. }
  3560. line = list.getIndex(args, 0);
  3561. if(!isDouble(line)) {
  3562. msg.prefix(player, prefix_commands, "Number expected.");
  3563. goto("wait");
  3564. }
  3565. if(!(line == 1 || line == 2 || line == 3 || line == 4)) {
  3566. msg.prefix(player, prefix_commands, "Number between 1 and 5 expected.");
  3567. goto("wait");
  3568. }
  3569. string = "";
  3570. if(size > 1) {
  3571. for(i = 1; i < size; i++) {
  3572. arg = list.getIndex(args, i);
  3573. if(isDouble(arg)) {
  3574. arg = text.number(arg);
  3575. }
  3576. if(i == 1) {
  3577. string = arg;
  3578. } else {
  3579. string = concat(string, " ", arg);
  3580. }
  3581. }
  3582. }
  3583. string = text.replace(string, "&", "§");
  3584. block.setSign(target_loc, line - 1, string);
  3585. goto("wait");
  3586. @head
  3587. if(size != 1) {
  3588. msg.prefix(player, prefix_commands, "/head <player>");
  3589. goto("wait");
  3590. }
  3591. name = list.getIndex(args, 0);
  3592. uuid = player.getUuid(name);
  3593. if(uuid == null) {
  3594. player.giveItem(player, read.item(concat("{id:\"minecraft:player_head\", Count:1b, tag:{SkullOwner:\"", name, "\"}}")));
  3595. } else {
  3596. player.giveItem(player, player.getHead(uuid, name));
  3597. }
  3598. goto("wait");
  3599. @mute
  3600. if(size < 1) {
  3601. msg.prefix(sender, prefix_commands, "/mute <player>");
  3602. goto("wait");
  3603. }
  3604. p_name = list.getIndex(args, 0);
  3605. if(!isOnline(p_name)) {
  3606. msg.prefix(sender, prefix_commands, "This player is not online.");
  3607. goto("wait");
  3608. }
  3609. p = read.player(p_name);
  3610. p_name = player.getName(p);
  3611. if(p_name == "marvinius") {
  3612. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3613. goto("wait");
  3614. }
  3615. msg("online", concat("§c", p_name, " was muted by ", sender_name, "."));
  3616. player.mute(p, true);
  3617. goto("wait");
  3618. @unmute
  3619. if(size < 1) {
  3620. msg.prefix(sender, prefix_commands, "/unmute <player>");
  3621. goto("wait");
  3622. }
  3623. p_name = list.getIndex(args, 0);
  3624. if(!isOnline(p_name)) {
  3625. msg.prefix(sender, prefix_commands, "This player is not online.");
  3626. goto("wait");
  3627. }
  3628. p = read.player(p_name);
  3629. p_name = player.getName(p);
  3630. if(p_name == "marvinius") {
  3631. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3632. goto("wait");
  3633. }
  3634. msg("online", concat("§c", p_name, " was unmuted by ", sender_name, "."));
  3635. player.mute(p, false);
  3636. goto("wait");
  3637. @kick
  3638. if(size < 1) {
  3639. msg.prefix(sender, prefix_commands, "/kick <player> [reason]");
  3640. goto("wait");
  3641. }
  3642. p_name = list.getIndex(args, 0);
  3643. if(!isOnline(p_name)) {
  3644. msg.prefix(sender, prefix_commands, "This player is not online.");
  3645. goto("wait");
  3646. }
  3647. p = read.player(p_name);
  3648. p_name = player.getName(p);
  3649. if(p_name == "marvinius") {
  3650. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3651. goto("wait");
  3652. }
  3653. if(size > 1) {
  3654. reason = text.concatList(args, " ", 1, size - 1);
  3655. msg("online", concat("§c", p_name, " was kicked by ", sender_name, ": ", reason));
  3656. } else {
  3657. reason = "You got kicked";
  3658. msg("online", concat("§c", p_name, " was kicked by ", sender_name, "."));
  3659. }
  3660. ban.kick(p, reason);
  3661. goto("wait");
  3662. @silentkick
  3663. if(size < 1) {
  3664. msg.prefix(sender, prefix_commands, "/silentkick <player> [reason]");
  3665. goto("wait");
  3666. }
  3667. p_name = list.getIndex(args, 0);
  3668. if(!isOnline(p_name)) {
  3669. msg.prefix(sender, prefix_commands, "This player is not online.");
  3670. goto("wait");
  3671. }
  3672. p = read.player(p_name);
  3673. p_name = player.getName(p);
  3674. if(p_name == "marvinius") {
  3675. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3676. goto("wait");
  3677. }
  3678. if(size > 1) {
  3679. reason = text.concatList(args, " ", 1, size - 1);
  3680. msg(sender, concat("§cYou silently kicked ", p_name, ": ", reason));
  3681. } else {
  3682. reason = "Du wurdest gekickt";
  3683. msg(sender, concat("§cYou silently kicked ", p_name, "."));
  3684. }
  3685. ban.kick(p, reason);
  3686. goto("wait");
  3687. @warn
  3688. if(size != 1) {
  3689. msg.prefix(player, prefix_commands, "/warn <player>");
  3690. goto("wait");
  3691. }
  3692. p_name = list.getIndex(args, 0);
  3693. if(!isOnline(p_name)) {
  3694. msg.prefix(player, prefix_commands, "This player is not online.");
  3695. goto("wait");
  3696. }
  3697. p = read.player(p_name);
  3698. p_name = player.getName(p);
  3699. if(p_name == "marvinius") {
  3700. msg(player, "§cSorry §b¯\\_(ツ)_/¯");
  3701. goto("wait");
  3702. }
  3703. head.add(p, 0, sender_name, 160, 50, 20);
  3704. title.setSub(p, "is watching you");
  3705. title.send(p, concat("§c", sender_name));
  3706. list.add(warninglist, p_name);
  3707. sgoto(100, "removeWarning");
  3708. msg.prefix(player, prefix_commands, "The player got warned.");
  3709. goto("wait");
  3710. @removeWarning
  3711. p_name = list.getIndex(warninglist, 0);
  3712. if(isOnline(p_name)) {
  3713. p = read.player(p_name);
  3714. head.remove(p, 0);
  3715. list.removeIndex(warninglist, 0);
  3716. }
  3717. goto("wait");
  3718. @ban
  3719. if(size < 1) {
  3720. msg.prefix(sender, prefix_commands, "/ban <player> [reason]");
  3721. goto("wait");
  3722. }
  3723. p_name = list.getIndex(args, 0);
  3724. if(!checkIfEverOnline(p_name)) {
  3725. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3726. goto("wait");
  3727. }
  3728. p_name = player.getName(player.getUuid(p_name));
  3729. if(p_name == "marvinius") {
  3730. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3731. goto("wait");
  3732. }
  3733. if(size > 1) {
  3734. reason = text.concatList(args, " ", 1, size - 1);
  3735. msg("online", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  3736. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, ". Reason: ", reason));
  3737. } else {
  3738. reason = "Du wurdest gebannt";
  3739. msg("online", concat("§c", p_name, " got banned by ", sender_name, "."));
  3740. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, "."));
  3741. }
  3742. ban.add(player.getUuid(p_name), reason, sender_name);
  3743. if(isOnline(p_name)) {
  3744. p = read.player(p_name);
  3745. ban.kick(p, reason);
  3746. }
  3747. goto("wait");
  3748. @silentban
  3749. if(size < 1) {
  3750. msg.prefix(sender, prefix_commands, "/silentban <player> [reason]");
  3751. goto("wait");
  3752. }
  3753. p_name = list.getIndex(args, 0);
  3754. if(!checkIfEverOnline(p_name)) {
  3755. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3756. goto("wait");
  3757. }
  3758. p_name = player.getName(player.getUuid(p_name));
  3759. if(p_name == "marvinius") {
  3760. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3761. goto("wait");
  3762. }
  3763. if(size > 1) {
  3764. reason = text.concatList(args, " ", 1, size - 1);
  3765. msg(sender, concat("§cYou silently banned ", p_name, ": ", reason));
  3766. } else {
  3767. reason = "You got banned.";
  3768. msg(sender, concat("§cYou silently banned ", p_name, "."));
  3769. }
  3770. ban.add(player.getUuid(p_name), reason, sender_name);
  3771. if(isOnline(p_name)) {
  3772. p = read.player(p_name);
  3773. ban.kick(p, reason);
  3774. }
  3775. goto("wait");
  3776. @unban
  3777. if(size != 1) {
  3778. msg.prefix(sender, prefix_commands, "/unban <player>");
  3779. goto("wait");
  3780. }
  3781. p_name = list.getIndex(args, 0);
  3782. if(!checkIfEverOnline(p_name)) {
  3783. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3784. goto("wait");
  3785. }
  3786. p_name = player.getName(player.getUuid(p_name));
  3787. ban.remove(player.getUuid(p_name));
  3788. msg(sender, concat("§cYou unbanned ", p_name, "."));
  3789. goto("wait");
  3790. @tempban
  3791. if(size < 4) {
  3792. msg.prefix(sender, prefix_commands, "/tempban <player> <days> <hours> <minutes> [reason]");
  3793. goto("wait");
  3794. }
  3795. p_name = list.getIndex(args, 0);
  3796. if(!checkIfEverOnline(p_name)) {
  3797. msg.prefix(sender, prefix_commands, "This player has never been online.");
  3798. goto("wait");
  3799. }
  3800. p_name = player.getName(player.getUuid(p_name));
  3801. if(p_name == "marvinius") {
  3802. msg(sender, "§cSorry §b¯\\_(ツ)_/¯");
  3803. goto("wait");
  3804. }
  3805. days = list.getIndex(args, 1);
  3806. hours = list.getIndex(args, 2);
  3807. minutes = list.getIndex(args, 3);
  3808. if(!isDouble(days) || !isDouble(hours) || !isDouble(minutes)) {
  3809. msg.prefix(sender, prefix_commands, "Number expected.");
  3810. goto("wait");
  3811. }
  3812. if(days < 0 || hours < 0 || minutes < 0) {
  3813. msg.prefix(sender, prefix_commands, "Positive number expected.");
  3814. goto("wait");
  3815. }
  3816. endtime = time.getMillis() + minutes * 60000 + hours * 3600000 + days * 86400000;
  3817. timestring = getTimeString(endtime);
  3818. if(size > 4) {
  3819. reason = text.concatList(args, " ", 4, size - 1);
  3820. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  3821. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, ". Reason: ", reason));
  3822. } else {
  3823. reason = "Du wurdest gebannt";
  3824. msg("online", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  3825. msg("SERVER", concat("§c", p_name, " got banned by ", sender_name, " until ", timestring, "."));
  3826. }
  3827. calendar = time.new(endtime);
  3828. ban.add(player.getUuid(p_name), reason, sender_name, calendar);
  3829. if(isOnline(p_name)) {
  3830. p = read.player(p_name);
  3831. ban.kick(p, reason);
  3832. }
  3833. goto("wait");
  3834. @ping
  3835. msg(player, "pong");
  3836. goto("wait");
  3837. @plot
  3838. if(size == 0) {
  3839. @plothelp
  3840. msg.prefix(player, prefix_plot, "/plot ...");
  3841. msg(player, "§d - info §rReturns info about current location");
  3842. msg(player, "§d - pos1/pos2 §rSet corner points");
  3843. msg(player, "§d - create §rCreates a (sub-)plot (Y: 0 - 255)");
  3844. msg(player, "§d - create3D §rCreates a 3D (sub-)plot");
  3845. msg(player, "§d - remove [id] §rRemoves a plot");
  3846. msg(player, "§d - expand <anzahl> [id] §rExpands a plot");
  3847. msg(player, "§d - name [id] <name> §rRenames a plot");
  3848. msg(player, "§d - share <player> [id] §rAdd a player to a plot");
  3849. msg(player, "§d - kick <player> [id] §rRemove a player from a plot");
  3850. msg(player, "§d - leader <player> [id] §rPromote to plot-leader");
  3851. msg(player, "§d - mod <player> [id] §rPromote to plot-mod");
  3852. msg(player, "§d - chest <player> [id] §rAllows a player to open chests");
  3853. msg(player, "§d - raise §rRaises a plot to a city");
  3854. msg(player, "§d - sell <price> §rSells a sub-plot");
  3855. if(perm.has(player, "plot.moreinfo")) {
  3856. msg(player, "§d - list [player] §rLists all plots from a player");
  3857. msg(player, "§d - moreinfo [id] §rReturns more detailed infos");
  3858. msg(player, "§d - listall §rLists all plots");
  3859. msg(player, "§d - flags <flags> <boolean> §rSet all flags to the boolean");
  3860. } else {
  3861. msg(player, "§d - list §rLists your plots");
  3862. }
  3863. goto("wait");
  3864. }
  3865. arg0 = text.toLowerCase(list.getIndex(args, 0));
  3866. if(arg0 == "sell") {
  3867. if(size != 2) {
  3868. msg.prefix(player, prefix_commands, "/plot sell <price>");
  3869. goto("wait");
  3870. }
  3871. sign_loc = player.getTarget(player, 5, false, false);
  3872. block = block.get(sign_loc);
  3873. if(!block.hasTag(sign_tag, block)) {
  3874. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  3875. goto("wait");
  3876. }
  3877. if(block.getSign(sign_loc, 0) != "" || block.getSign(sign_loc, 1) != "" || block.getSign(sign_loc, 2) != "" || block.getSign(sign_loc, 3) != "") {
  3878. msg.prefix(player, prefix_plot, "You need to look at an empty sign.");
  3879. goto("wait");
  3880. }
  3881. plot_list = plot.get(sign_loc);
  3882. amount = list.getSize(plot_list);
  3883. if(amount == 0 || amount == 1) {
  3884. msg.prefix(player, prefix_plot, "You aren't on a sub plot.");
  3885. goto("wait");
  3886. }
  3887. if(amount > 2) {
  3888. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  3889. goto("wait");
  3890. }
  3891. plot_1 = list.getIndex(plot_list, 0);
  3892. plot_2 = list.getIndex(plot_list, 1);
  3893. if(plot.isCity(plot_1)) {
  3894. city_plot = plot_1;
  3895. sell_plot = plot_2;
  3896. } elseif(plot.isCity(plot_2)) {
  3897. sell_plot = plot_1;
  3898. city_plot = plot_2;
  3899. } else {
  3900. msg.prefix(player, prefix_plot, "No city found.");
  3901. goto("wait");
  3902. }
  3903. if(!plot.isLeader(city_plot, player) && !plot.isMod(city_plot, player)) {
  3904. msg.prefix(player, prefix_plot, "You aren't a city plot leader or mod.");
  3905. goto("wait");
  3906. }
  3907. snuvis = list.getIndex(args, 1);
  3908. if(!isDouble(snuvis) || snuvis < 0) {
  3909. msg.prefix(player, prefix_plot, "Positive number expected.");
  3910. goto("wait");
  3911. }
  3912. //Sell Plot
  3913. x1 = plot.getMinX(sell_plot);
  3914. y1 = plot.getMinY(sell_plot);
  3915. z1 = plot.getMinZ(sell_plot);
  3916. x2 = plot.getMaxX(sell_plot);
  3917. y2 = plot.getMaxY(sell_plot);
  3918. z2 = plot.getMaxZ(sell_plot);
  3919. length = math.abs(x1 - x2) + 1;
  3920. width = math.abs(z1 - z2) + 1;
  3921. high = math.abs(y1 - y2) + 1;
  3922. //Change plot settings
  3923. plot.setFree(sell_plot, true);
  3924. plot.setName(sell_plot, "Free Plot");
  3925. plot.removePlayer(sell_plot, player.getName(player));
  3926. //Label Sign
  3927. block.setSign(sign_loc, 0, "§3[§bFree Plot§3]");
  3928. block.setSign(sign_loc, 1, concat("§2", text.number(snuvis)));
  3929. if(high == 256) {
  3930. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width)));
  3931. } else {
  3932. block.setSign(sign_loc, 2, concat(text.number(length), "x", text.number(width), " (Y:", text.number(high), ")"));
  3933. }
  3934. block.setSign(sign_loc, 3, text.number(player.getId(player)));
  3935. msg.prefix(player, prefix_plot, "Free plot for selling created.");
  3936. goto("wait");
  3937. }
  3938. if(arg0 == "raise") {
  3939. location = entity.getLocation(player);
  3940. plot_list = plot.get(location);
  3941. amount = list.getSize(plot_list);
  3942. if(amount == 0) {
  3943. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  3944. goto("wait");
  3945. }
  3946. if(!player.isClanLeader(player)) {
  3947. msg.prefix(player, prefix_plot, "Only a clan leader can do this.");
  3948. goto("wait");
  3949. }
  3950. clan_id = player.getClanId(player);
  3951. if(clan.getMembersAmount(clan_id) < 5) {
  3952. msg.prefix(player, prefix_plot, "Your clan needs 4 members to do this.");
  3953. goto("wait");
  3954. }
  3955. plot = list.getIndex(plot_list, 0);
  3956. if(plot.isCity(plot)) {
  3957. msg.prefix(player, prefix_plot, "This plot is already a city.");
  3958. goto("wait");
  3959. }
  3960. if(!plot.isLeader(plot, player)) {
  3961. msg.prefix(player, prefix_plot, "Only the plot leader can do this.");
  3962. goto("wait");
  3963. }
  3964. if(amount > 1) {
  3965. msg.prefix(player, prefix_plot, "Multiple plots present. Not possible.");
  3966. goto("wait");
  3967. }
  3968. x1 = plot.getMinX(plot);
  3969. z1 = plot.getMinZ(plot);
  3970. x2 = plot.getMaxX(plot);
  3971. z2 = plot.getMaxZ(plot);
  3972. length = math.abs(x1 - x2) + 1;
  3973. width = math.abs(z1 - z2) + 1;
  3974. plot_size = length * width;
  3975. if(plot_size < 900) {
  3976. msg.prefix(player, prefix_plot, "Your plot must be over 900m2.");
  3977. goto("wait");
  3978. }
  3979. snuvis = 4096;
  3980. if(!hasEnoughMoney(player, snuvis)) {
  3981. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  3982. goto("wait");
  3983. }
  3984. offerRank(player, "rank.major");
  3985. player.setPlotRaised(player, true);
  3986. subMoney(player, snuvis);
  3987. plot.setCity(plot, true);
  3988. msg.prefix(player, prefix_plot, concat("City created. Spent §6", text.number(snuvis), "§r snuvis."));
  3989. goto("wait");
  3990. }
  3991. if(arg0 == "leader") {
  3992. if(size < 2) {
  3993. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  3994. goto("wait");
  3995. }
  3996. p_name = list.getIndex(args, 1);
  3997. p_uuid = player.getUuid(p_name);
  3998. if(p_uuid == null) {
  3999. msg.prefix(player, prefix_plot, "This player has never been online.");
  4000. goto("wait");
  4001. }
  4002. p_name = player.getName(p_uuid);
  4003. location = entity.getLocation(player);
  4004. world = loc.getWorld(location);
  4005. if(size == 2) {
  4006. plot_list = plot.get(location);
  4007. amount = list.getSize(plot_list);
  4008. if(amount == 0) {
  4009. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4010. goto("wait");
  4011. }
  4012. plot = list.getIndex(plot_list, 0);
  4013. if(amount > 1) {
  4014. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4015. for(i = 0; i < amount; i++) {
  4016. plot = list.getIndex(plot_list, i);
  4017. plot_id = plot.getId(plot);
  4018. 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)));
  4019. }
  4020. goto("wait");
  4021. }
  4022. } else {
  4023. if(size != 3) {
  4024. msg.prefix(player, prefix_commands, "/plot leader <player> [plot_id]");
  4025. goto("wait");
  4026. }
  4027. plot_id = list.getIndex(args, 2);
  4028. plot = plot.getFromId(plot_id, world);
  4029. if(plot == null) {
  4030. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4031. goto("wait");
  4032. }
  4033. }
  4034. player_id = player.getId(player);
  4035. if(!perm.has(player, "plot.other")) {
  4036. if(!world.canUsePlots(world)) {
  4037. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4038. goto("wait");
  4039. }
  4040. if(!plot.isLeader(plot, player_id)) {
  4041. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4042. goto("wait");
  4043. }
  4044. if(player_name == p_name) {
  4045. msg.prefix(player, prefix_plot, "You are already the plot leader.");
  4046. goto("wait");
  4047. }
  4048. }
  4049. p_id = player.getId(p_uuid);
  4050. if(plot.isLeader(plot, p_id)) {
  4051. msg.prefix(player, prefix_plot, "This player is already the plot leader.");
  4052. goto("wait");
  4053. }
  4054. old_leader = plot.getLeaderId(plot);
  4055. if(old_leader != null) {
  4056. plot.setMod(plot, old_leader);
  4057. }
  4058. plot.setLeader(plot, p_id);
  4059. plot.addPlayer(plot, p_name);
  4060. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot leader."));
  4061. goto("wait");
  4062. }
  4063. if(arg0 == "mod") {
  4064. if(size < 2) {
  4065. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4066. goto("wait");
  4067. }
  4068. p_name = list.getIndex(args, 1);
  4069. p_uuid = player.getUuid(p_name);
  4070. if(p_uuid == null) {
  4071. msg.prefix(player, prefix_plot, "This player has never been online.");
  4072. goto("wait");
  4073. }
  4074. p_name = player.getName(p_uuid);
  4075. location = entity.getLocation(player);
  4076. world = loc.getWorld(location);
  4077. if(size == 2) {
  4078. plot_list = plot.get(location);
  4079. amount = list.getSize(plot_list);
  4080. if(amount == 0) {
  4081. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4082. goto("wait");
  4083. }
  4084. plot = list.getIndex(plot_list, 0);
  4085. if(amount > 1) {
  4086. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4087. for(i = 0; i < amount; i++) {
  4088. plot = list.getIndex(plot_list, i);
  4089. plot_id = plot.getId(plot);
  4090. 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)));
  4091. }
  4092. goto("wait");
  4093. }
  4094. } else {
  4095. if(size != 3) {
  4096. msg.prefix(player, prefix_commands, "/plot mod <player> [plot_id]");
  4097. goto("wait");
  4098. }
  4099. plot_id = list.getIndex(args, 2);
  4100. plot = plot.getFromId(plot_id, world);
  4101. if(plot == null) {
  4102. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4103. goto("wait");
  4104. }
  4105. }
  4106. player_id = player.getId(player);
  4107. if(!perm.has(player, "plot.other")) {
  4108. if(!world.canUsePlots(world)) {
  4109. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4110. goto("wait");
  4111. }
  4112. if(!plot.isLeader(plot, player_id)) {
  4113. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4114. goto("wait");
  4115. }
  4116. }
  4117. p_id = player.getId(p_uuid);
  4118. if(plot.isLeader(plot, p_id)) {
  4119. msg.prefix(player, prefix_plot, "Not possible. Promote another player first /plot leader <player>.");
  4120. goto("wait");
  4121. }
  4122. if(plot.isMod(plot, p_id)) {
  4123. msg.prefix(player, prefix_plot, "This player is already a plot mod.");
  4124. goto("wait");
  4125. }
  4126. plot.setMod(plot, p_id);
  4127. plot.addPlayer(plot, p_name);
  4128. msg.prefix(player, prefix_plot, concat(p_name, " promoted to plot mod."));
  4129. goto("wait");
  4130. }
  4131. if(arg0 == "chest") {
  4132. if(size < 2) {
  4133. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4134. goto("wait");
  4135. }
  4136. p_name = list.getIndex(args, 1);
  4137. p_uuid = player.getUuid(p_name);
  4138. if(p_uuid == null) {
  4139. msg.prefix(player, prefix_plot, "This player has never been online.");
  4140. goto("wait");
  4141. }
  4142. p_name = player.getName(p_uuid);
  4143. location = entity.getLocation(player);
  4144. world = loc.getWorld(location);
  4145. if(size == 2) {
  4146. plot_list = plot.get(location);
  4147. amount = list.getSize(plot_list);
  4148. if(amount == 0) {
  4149. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4150. goto("wait");
  4151. }
  4152. plot = list.getIndex(plot_list, 0);
  4153. if(amount > 1) {
  4154. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4155. for(i = 0; i < amount; i++) {
  4156. plot = list.getIndex(plot_list, i);
  4157. plot_id = plot.getId(plot);
  4158. 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)));
  4159. }
  4160. goto("wait");
  4161. }
  4162. } else {
  4163. if(size != 3) {
  4164. msg.prefix(player, prefix_commands, "/plot chest <player> [plot_id]");
  4165. goto("wait");
  4166. }
  4167. plot_id = list.getIndex(args, 2);
  4168. plot = plot.getFromId(plot_id, world);
  4169. if(plot == null) {
  4170. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4171. goto("wait");
  4172. }
  4173. }
  4174. player_id = player.getId(player);
  4175. if(!perm.has(player, "plot.other")) {
  4176. if(!world.canUsePlots(world)) {
  4177. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4178. goto("wait");
  4179. }
  4180. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4181. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4182. goto("wait");
  4183. }
  4184. }
  4185. p_id = player.getId(p_uuid);
  4186. if(plot.isLeader(plot, p_id) || plot.isMod(plot, p_id)) {
  4187. msg.prefix(player, prefix_plot, "Not possible. Player has higher permissions.");
  4188. goto("wait");
  4189. }
  4190. if(plot.canOpenChests(plot, p_id)) {
  4191. msg.prefix(player, prefix_plot, "This player already can open chests.");
  4192. goto("wait");
  4193. }
  4194. plot.setChest(plot, p_id);
  4195. msg.prefix(player, prefix_plot, concat(p_name, " can now open chests."));
  4196. goto("wait");
  4197. }
  4198. if(arg0 == "remove") {
  4199. location = entity.getLocation(player);
  4200. world = loc.getWorld(location);
  4201. if(size == 1) {
  4202. plot_list = plot.get(location);
  4203. amount = list.getSize(plot_list);
  4204. if(amount == 0) {
  4205. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4206. goto("wait");
  4207. }
  4208. plot = list.getIndex(plot_list, 0);
  4209. if(amount > 1) {
  4210. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4211. for(i = 0; i < amount; i++) {
  4212. plot = list.getIndex(plot_list, i);
  4213. plot_id = plot.getId(plot);
  4214. 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)));
  4215. }
  4216. goto("wait");
  4217. }
  4218. } else {
  4219. if(size != 2) {
  4220. msg.prefix(player, prefix_commands, "/plot remove [plot_id]");
  4221. goto("wait");
  4222. }
  4223. plot_id = list.getIndex(args, 1);
  4224. plot = plot.getFromId(plot_id, world);
  4225. if(plot == null) {
  4226. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4227. goto("wait");
  4228. }
  4229. }
  4230. if(!perm.has(player, "plot.other")) {
  4231. if(!world.canUsePlots(world)) {
  4232. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4233. goto("wait");
  4234. }
  4235. player_id = player.getId(player);
  4236. if(!plot.isLeader(plot, player_id)) {
  4237. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4238. goto("wait");
  4239. }
  4240. }
  4241. if(plot.isCity(plot)) {
  4242. plot_list = plot.intersecting(world, plot.getMinX(plot), plot.getMinY(plot), plot.getMinZ(plot), plot.getMaxX(plot), plot.getMaxY(plot), plot.getMaxZ(plot));
  4243. iter = list.iterator(plot_list);
  4244. while(hasNext(iter)) {
  4245. sub_plot = next(iter);
  4246. plot.removeAllPlayers(sub_plot);
  4247. plot.remove(sub_plot, world);
  4248. }
  4249. }
  4250. plot.removeAllPlayers(plot);
  4251. plot.delMoveEvent(plot);
  4252. plot.remove(plot, world);
  4253. msg.prefix(player, prefix_plot, concat("Plot removed. #", text.number(plot.getId(plot)), " §6", plot.getName(plot)));
  4254. goto("wait");
  4255. }
  4256. if(arg0 == "expand") {
  4257. if(size < 2) {
  4258. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  4259. goto("wait");
  4260. }
  4261. location = entity.getLocation(player);
  4262. world = loc.getWorld(location);
  4263. anzahl = list.getIndex(args, 1);
  4264. if(!isDouble(anzahl) || anzahl < 0) {
  4265. msg.prefix(player, prefix_plot, "Positive number expected.");
  4266. goto("wait");
  4267. }
  4268. if(size == 2) {
  4269. yaw = loc.getYaw(location);
  4270. direction = getDirection(yaw);
  4271. if(direction == null) {
  4272. msg.prefix(player, prefix_plot, "Direction of view too imprecise.");
  4273. goto("wait");
  4274. }
  4275. plot_list = plot.get(location);
  4276. amount = list.getSize(plot_list);
  4277. if(amount == 0) {
  4278. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4279. goto("wait");
  4280. }
  4281. plot = list.getIndex(plot_list, 0);
  4282. if(amount > 1) {
  4283. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4284. for(i = 0; i < amount; i++) {
  4285. plot = list.getIndex(plot_list, i);
  4286. plot_id = plot.getId(plot);
  4287. 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)));
  4288. }
  4289. goto("wait");
  4290. }
  4291. } else {
  4292. if(size != 4) {
  4293. msg.prefix(player, prefix_commands, "/plot expand <anzahl> [direction] [plot_id]");
  4294. goto("wait");
  4295. }
  4296. direction = text.toLowerCase(list.getIndex(args, 2));
  4297. plot_id = list.getIndex(args, 3);
  4298. plot = plot.getFromId(plot_id, world);
  4299. if(plot == null) {
  4300. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4301. goto("wait");
  4302. }
  4303. }
  4304. if(plot.isSub(plot)) {
  4305. msg.prefix(player, prefix_plot, "Sub plots can't be expanded.");
  4306. goto("wait");
  4307. }
  4308. x1 = plot.getMinX(plot);
  4309. y1 = plot.getMinY(plot);
  4310. z1 = plot.getMinZ(plot);
  4311. x2 = plot.getMaxX(plot);
  4312. y2 = plot.getMaxY(plot);
  4313. z2 = plot.getMaxZ(plot);
  4314. if(direction == "east") {
  4315. old_x2 = x2;
  4316. x2 += anzahl;
  4317. list = plot.intersecting(world, x2, y1, z1, old_x2, y2, z2);
  4318. } elseif(direction == "south") {
  4319. old_z2 = z2;
  4320. z2 += anzahl;
  4321. list = plot.intersecting(world, x1, y1, z2, x2, y2, old_z2);
  4322. } elseif(direction == "west") {
  4323. old_x1 = x1;
  4324. x1 -= anzahl;
  4325. list = plot.intersecting(world, old_x1, y1, z1, x1, y2, z2);
  4326. } elseif(direction == "north") {
  4327. old_z1 = z1;
  4328. z1 -= anzahl;
  4329. list = plot.intersecting(world, x1, y1, old_z1, x2, y2, z1);
  4330. } else {
  4331. msg.prefix(player, prefix_plot, "Unknown direction [north/east/south/west].");
  4332. goto("wait");
  4333. }
  4334. if(!perm.has(player, "plot.other")) {
  4335. if(list.getSize(list) > 0) {
  4336. msg.prefix(player, prefix_plot, "New area is intersecting with other plots.");
  4337. goto("wait");
  4338. }
  4339. if(!world.canUsePlots(world)) {
  4340. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4341. goto("wait");
  4342. }
  4343. player_id = player.getId(player);
  4344. if(!plot.isLeader(plot, player_id)) {
  4345. msg.prefix(player, prefix_plot, "You aren't the plot leader.");
  4346. goto("wait");
  4347. }
  4348. //Calc costs
  4349. length = math.abs(x1 - x2) + 1;
  4350. width = math.abs(z1 - z2) + 1;
  4351. snuvis = plot.calcCost(world, length, width);
  4352. if(!hasEnoughMoney(player, snuvis)) {
  4353. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4354. goto("wait");
  4355. }
  4356. subMoney(player, snuvis);
  4357. expand_message = concat("The plot has been expanded. Spent §6", text.number(snuvis), "§r snuvis.");
  4358. if(!player.hasBigPlotCreated(player)) {
  4359. plot_size = length * width;
  4360. if(plot_size >= 900) {
  4361. offerRank(player, "rank.colonizer");
  4362. player.setBigPlotCreated(player, true);
  4363. }
  4364. }
  4365. } else {
  4366. expand_message = concat("The plot has been expanded.");
  4367. }
  4368. //Expand plot
  4369. gs_edge1 = loc.new(world, x1, y1, z1);
  4370. gs_edge2 = loc.new(world, x2, y2, z2);
  4371. new_plot = plot.setEdges(plot, gs_edge1, gs_edge2);
  4372. plot.delMoveEvent(plot);
  4373. plot.setMoveEvent(new_plot, world);
  4374. msg.prefix(player, prefix_plot, expand_message);
  4375. goto("wait");
  4376. }
  4377. if(arg0 == "share") {
  4378. if(size < 2) {
  4379. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  4380. goto("wait");
  4381. }
  4382. p_name = list.getIndex(args, 1);
  4383. p_uuid = player.getUuid(p_name);
  4384. if(p_uuid == null) {
  4385. msg.prefix(player, prefix_plot, "This player has never been online.");
  4386. goto("wait");
  4387. }
  4388. p_name = player.getName(p_uuid);
  4389. location = entity.getLocation(player);
  4390. world = loc.getWorld(location);
  4391. if(size == 2) {
  4392. plot_list = plot.get(location);
  4393. amount = list.getSize(plot_list);
  4394. if(amount == 0) {
  4395. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4396. goto("wait");
  4397. }
  4398. plot = list.getIndex(plot_list, 0);
  4399. if(amount > 1) {
  4400. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4401. for(i = 0; i < amount; i++) {
  4402. plot = list.getIndex(plot_list, i);
  4403. plot_id = plot.getId(plot);
  4404. 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)));
  4405. }
  4406. goto("wait");
  4407. }
  4408. } else {
  4409. if(size != 3) {
  4410. msg.prefix(player, prefix_commands, "/plot share <player> [plot_id]");
  4411. goto("wait");
  4412. }
  4413. plot_id = list.getIndex(args, 2);
  4414. plot = plot.getFromId(plot_id, world);
  4415. if(plot == null) {
  4416. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4417. goto("wait");
  4418. }
  4419. }
  4420. if(!perm.has(player, "plot.other")) {
  4421. if(!world.canUsePlots(world)) {
  4422. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4423. goto("wait");
  4424. }
  4425. player_id = player.getId(player);
  4426. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4427. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4428. goto("wait");
  4429. }
  4430. }
  4431. plot.addPlayer(plot, p_name);
  4432. msg.prefix(player, prefix_plot, concat(p_name, " added to the plot."));
  4433. goto("wait");
  4434. }
  4435. if(arg0 == "kick") {
  4436. if(size < 2) {
  4437. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  4438. goto("wait");
  4439. }
  4440. p_name = list.getIndex(args, 1);
  4441. p_uuid = player.getUuid(p_name);
  4442. if(p_uuid == null) {
  4443. msg.prefix(player, prefix_plot, "This player has never been online.");
  4444. goto("wait");
  4445. }
  4446. p_name = player.getName(p_uuid);
  4447. location = entity.getLocation(player);
  4448. world = loc.getWorld(location);
  4449. if(size == 2) {
  4450. plot_list = plot.get(location);
  4451. amount = list.getSize(plot_list);
  4452. if(amount == 0) {
  4453. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4454. goto("wait");
  4455. }
  4456. plot = list.getIndex(plot_list, 0);
  4457. if(amount > 1) {
  4458. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4459. for(i = 0; i < amount; i++) {
  4460. plot = list.getIndex(plot_list, i);
  4461. plot_id = plot.getId(plot);
  4462. 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)));
  4463. }
  4464. goto("wait");
  4465. }
  4466. } else {
  4467. if(size != 3) {
  4468. msg.prefix(player, prefix_commands, "/plot kick <player> [plot_id]");
  4469. goto("wait");
  4470. }
  4471. plot_id = list.getIndex(args, 2);
  4472. plot = plot.getFromId(plot_id, world);
  4473. if(plot == null) {
  4474. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4475. goto("wait");
  4476. }
  4477. }
  4478. if(!perm.has(player, "plot.other")) {
  4479. if(!world.canUsePlots(world)) {
  4480. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4481. goto("wait");
  4482. }
  4483. player_id = player.getId(player);
  4484. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4485. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4486. goto("wait");
  4487. }
  4488. if(player_name == p_name) {
  4489. msg.prefix(player, prefix_plot, "You can't kick yourself.");
  4490. goto("wait");
  4491. }
  4492. p_id = player.getId(p_uuid);
  4493. if(plot.isLeader(plot, p_id)) {
  4494. msg.prefix(player, prefix_plot, "You can't kick the plot-leader.");
  4495. goto("wait");
  4496. }
  4497. }
  4498. plot.removePlayer(plot, p_name);
  4499. msg.prefix(player, prefix_plot, concat(p_name, " removed from this plot."));
  4500. goto("wait");
  4501. }
  4502. if(arg0 == "name") {
  4503. if(size < 2) {
  4504. msg.prefix(player, prefix_commands, "/plot name [plot_id] <name>");
  4505. goto("wait");
  4506. }
  4507. location = entity.getLocation(player);
  4508. world = loc.getWorld(location);
  4509. //Angegeben wurde ein Name aus einem Wort, ohne Plotid. Der Spieler muss auf einem Plot sein.
  4510. if(size == 2) {
  4511. plot_list = plot.get(location);
  4512. amount = list.getSize(plot_list);
  4513. if(amount == 0) {
  4514. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4515. goto("wait");
  4516. }
  4517. plot = list.getIndex(plot_list, 0);
  4518. name = list.getIndex(args, 1);
  4519. if(amount > 1) {
  4520. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4521. for(i = 0; i < amount; i++) {
  4522. plot = list.getIndex(plot_list, i);
  4523. plot_id = plot.getId(plot);
  4524. 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)));
  4525. }
  4526. goto("wait");
  4527. }
  4528. }
  4529. if(size > 2) {
  4530. plot_id = list.getIndex(args, 1);
  4531. if(isDouble(plot_id)) {
  4532. //Angegeben wurde eine eine Plotid mit einem Namen aus ein oder mehreren Wörtern
  4533. plot = plot.getFromId(plot_id, world);
  4534. if(plot == null) {
  4535. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4536. goto("wait");
  4537. }
  4538. name = text.concatList(args, " ", 2, size - 1);
  4539. } else {
  4540. //Angegeben wurde ein Name aus mehreren Wörtern, ohne Plotid. Der Spieler muss auf einem Plot sein.
  4541. name = text.concatList(args, " ", 1, size - 1);
  4542. plot_list = plot.get(location);
  4543. amount = list.getSize(plot_list);
  4544. if(amount == 0) {
  4545. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4546. goto("wait");
  4547. }
  4548. plot = list.getIndex(plot_list, 0);
  4549. if(amount > 1) {
  4550. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4551. for(i = 0; i < amount; i++) {
  4552. plot = list.getIndex(plot_list, i);
  4553. plot_id = plot.getId(plot);
  4554. 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)));
  4555. }
  4556. goto("wait");
  4557. }
  4558. }
  4559. }
  4560. if(!perm.has(player, "plot.other")) {
  4561. if(!world.canUsePlots(world)) {
  4562. msg.prefix(player, prefix_perms, "You have no permission for this in this world.");
  4563. goto("wait");
  4564. }
  4565. player_id = player.getId(player);
  4566. if(!plot.isLeader(plot, player_id) && !plot.isMod(plot, player_id)) {
  4567. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4568. goto("wait");
  4569. }
  4570. }
  4571. plot.setName(plot, name);
  4572. msg.prefix(player, prefix_plot, concat("Plot renamed to ", name, "."));
  4573. goto("wait");
  4574. }
  4575. if(arg0 == "create" || arg0 == "create3d") {
  4576. player_id = player.getId(player);
  4577. loc1 = map.get(plotpos1, player_id);
  4578. loc2 = map.get(plotpos2, player_id);
  4579. if(loc1 == null || loc2 == null) {
  4580. msg.prefix(player, prefix_plot, "No corner points set.");
  4581. goto("wait");
  4582. }
  4583. world1 = loc.getWorld(loc1);
  4584. if(world1 != loc.getWorld(loc2)) {
  4585. msg.prefix(player, prefix_plot, "Corner points have different worlds.");
  4586. goto("wait");
  4587. }
  4588. x1 = loc.getX(loc1);
  4589. y1 = loc.getY(loc1);
  4590. z1 = loc.getZ(loc1);
  4591. x2 = loc.getX(loc2);
  4592. y2 = loc.getY(loc2);
  4593. z2 = loc.getZ(loc2);
  4594. if(arg0 == "create") {
  4595. loc.setY(loc1, 0);
  4596. loc.setY(loc2, 255);
  4597. }
  4598. create_message = "Plot created.";
  4599. sub_plot = false;
  4600. if(!perm.has(player, "plot.other")) {
  4601. world_name = world.getName(world1);
  4602. if(!world.canUsePlots(world1)) {
  4603. msg.prefix(player, prefix_perms, "You have no permission in this world.");
  4604. goto("wait");
  4605. }
  4606. list = plot.intersecting(world1, x1, y1, z1, x2, y2, z2);
  4607. if(list.getSize(list) > 0) {
  4608. city_plot = list.getIndex(list, 0);
  4609. if(plot.isCity(city_plot)) {
  4610. if(!plot.isLeader(city_plot, player_id) && !plot.isMod(city_plot, player_id)) {
  4611. msg.prefix(player, prefix_plot, "You aren't a plot leader or mod.");
  4612. goto("wait");
  4613. }
  4614. city_id = plot.getId(city_plot);
  4615. if(!loc.hasPlotId(loc1, city_id)) {
  4616. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  4617. goto("wait");
  4618. }
  4619. if(!loc.hasPlotId(loc2, city_id)) {
  4620. msg.prefix(player, prefix_plot, "The sub plot needs to be surrounded by the city.");
  4621. goto("wait");
  4622. }
  4623. sub_plot = true;
  4624. } else {
  4625. msg.prefix(player, prefix_plot, "Intersecting plots are not allowed.");
  4626. goto("wait");
  4627. }
  4628. }
  4629. if(!sub_plot) {
  4630. //Calc costs
  4631. length = math.abs(x1 - x2) + 1;
  4632. width = math.abs(z1 - z2) + 1;
  4633. if(length < 3 || width < 3) {
  4634. msg.prefix(player, prefix_plot, "Length and width of the plot must be at least 3.");
  4635. goto("wait");
  4636. }
  4637. snuvis = plot.calcCost(world1, length, width);
  4638. free_plot_used = player.usedHisFreePlot(player_id);
  4639. if(!free_plot_used && world_name != "creative") {
  4640. snuvis -= plot.calcCost(world1, 16, 16);
  4641. if(snuvis < 0) {
  4642. snuvis = 0;
  4643. }
  4644. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  4645. }
  4646. if(!hasEnoughMoney(player, snuvis)) {
  4647. msg.prefix(player, prefix_plot, concat("You'll need §6", text.number(snuvis), "§r snuvis for this."));
  4648. goto("wait");
  4649. }
  4650. create_message = concat("Plot created. Spent §6", text.number(snuvis), "§r snuvis.");
  4651. subMoney(player, snuvis);
  4652. if(!free_plot_used && world_name != "creative") {
  4653. player.setUsedFreePlot(player_id, true);
  4654. offerRank(player, "rank.settler");
  4655. }
  4656. if(!player.hasBigPlotCreated(player)) {
  4657. plot_size = length * width;
  4658. if(plot_size >= 900) {
  4659. offerRank(player, "rank.colonizer");
  4660. player.setBigPlotCreated(player, true);
  4661. }
  4662. }
  4663. }
  4664. }
  4665. //Create plot
  4666. map.remove(plotpos1, player_id);
  4667. map.remove(plotpos2, player_id);
  4668. plot = plot.add(loc1, loc2);
  4669. if(sub_plot) {
  4670. plot.setSub(plot, true);
  4671. }
  4672. plot.setMoveEvent(plot, world1);
  4673. plot.setName(plot, concat(player_name, "'s plot"));
  4674. plot.addPlayer(plot, player_name);
  4675. plot.setLeader(plot, player_id);
  4676. msg.prefix(player, prefix_plot, create_message);
  4677. goto("wait");
  4678. }
  4679. if(arg0 == "pos1" || arg0 == "pos2") {
  4680. loc = entity.getLocation(player);
  4681. loc = getBlockLocation(loc);
  4682. player_id = player.getId(player);
  4683. if(arg0 == "pos1") {
  4684. map.add(plotpos1, player_id, loc);
  4685. pos_string = "Pos1";
  4686. } elseif(arg0 == "pos2") {
  4687. map.add(plotpos2, player_id, loc);
  4688. pos_string = "Pos2";
  4689. }
  4690. x = text.number(loc.getX(loc));
  4691. y = text.number(loc.getY(loc));
  4692. z = text.number(loc.getZ(loc));
  4693. msg.prefix(player, prefix_plot, concat(pos_string, " (", x, "/", y, "/", z, ") set."));
  4694. loc1 = map.get(plotpos1, player_id);
  4695. loc2 = map.get(plotpos2, player_id);
  4696. if(loc1 != null && loc2 != null) {
  4697. world1 = loc.getWorld(loc1);
  4698. snuvis = plot.calcCost(world1, loc1, loc2);
  4699. if(!player.usedHisFreePlot(player_id) && world.getName(world1) != "creative") {
  4700. snuvis -= plot.calcCost(world1, 16, 16);
  4701. if(snuvis < 0) {
  4702. snuvis = 0;
  4703. }
  4704. msg.prefix(player, prefix_plot, "Free plot (16 x 16) to calculation included.");
  4705. }
  4706. if(loc.isCity(loc1) && loc.isCity(loc2)) {
  4707. snuvis = 0;
  4708. }
  4709. msg.prefix(player, prefix_plot, concat("This plot will cost §6", text.number(snuvis), "§r snuvis."));
  4710. }
  4711. goto("wait");
  4712. }
  4713. if(arg0 == "flags") {
  4714. if(!perm.has(player, "plot.moreinfo")) {
  4715. perm.no(player, "plot.moreinfo");
  4716. goto("wait");
  4717. }
  4718. if(size < 3 || size > 4) {
  4719. msg.prefix(player, prefix_commands, "/plot flags <flags> <boolean> [plot_id]");
  4720. goto("wait");
  4721. }
  4722. flags = list.getIndex(args, 1);
  4723. if(!isDouble(flags) || flags < 0) {
  4724. msg.prefix(player, prefix_commands, "Positive number expected.");
  4725. goto("wait");
  4726. }
  4727. boolean = list.getIndex(args, 2);
  4728. if(!(boolean == true || boolean == false)) {
  4729. msg.prefix(player, prefix_commands, "Boolean expected.");
  4730. goto("wait");
  4731. }
  4732. location = entity.getLocation(player);
  4733. world = loc.getWorld(location);
  4734. if(size == 3) {
  4735. plot_list = plot.get(location);
  4736. amount = list.getSize(plot_list);
  4737. if(amount == 0) {
  4738. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4739. goto("wait");
  4740. }
  4741. plot = list.getIndex(plot_list, 0);
  4742. if(amount > 1) {
  4743. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4744. for(i = 0; i < amount; i++) {
  4745. plot = list.getIndex(plot_list, i);
  4746. plot_id = plot.getId(plot);
  4747. x = loc.getX(location);
  4748. y = loc.getY(location);
  4749. z = loc.getZ(location);
  4750. 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)));
  4751. }
  4752. goto("wait");
  4753. }
  4754. } else {
  4755. plot_id = list.getIndex(args, 3);
  4756. plot = plot.getFromId(plot_id, world);
  4757. if(plot == null) {
  4758. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4759. goto("wait");
  4760. }
  4761. }
  4762. flags_list = list.new();
  4763. temp_flags = 0;
  4764. if(flags >= 512) {
  4765. list.add(flags_list, "SUB_PLOT_FLAG");
  4766. temp_flags += 512;
  4767. }
  4768. if(flags >= 256) {
  4769. list.add(flags_list, "FREE_FLAG");
  4770. temp_flags += 256;
  4771. }
  4772. if(flags >= 128) {
  4773. list.add(flags_list, "CITY_FLAG");
  4774. temp_flags += 128;
  4775. }
  4776. if(flags >= 64) {
  4777. list.add(flags_list, "EXPLOSION_FLAG");
  4778. temp_flags += 64;
  4779. }
  4780. if(flags >= 32) {
  4781. list.add(flags_list, "ENTITY_INTERACT_FLAG");
  4782. temp_flags += 32;
  4783. }
  4784. if(flags >= 16) {
  4785. list.add(flags_list, "BLOCK_INTERACT_FLAG");
  4786. temp_flags += 16;
  4787. }
  4788. if(flags >= 8) {
  4789. list.add(flags_list, "HIT_AMBIENT_FLAG");
  4790. temp_flags += 8;
  4791. }
  4792. if(flags >= 4) {
  4793. list.add(flags_list, "BUCKET_FLAG");
  4794. temp_flags += 4;
  4795. }
  4796. if(flags >= 2) {
  4797. list.add(flags_list, "BREAK_FLAG");
  4798. temp_flags += 2;
  4799. }
  4800. if(flags >= 1) {
  4801. list.add(flags_list, "PLACE_FLAG");
  4802. temp_flags += 1;
  4803. }
  4804. plot.setFlags(plot, flags, boolean);
  4805. msg.prefix(player, prefix_plot, "Flags gesetzt.");
  4806. goto("wait");
  4807. }
  4808. if(arg0 == "list") {
  4809. if(size == 1) {
  4810. p_name = player.getName(player);
  4811. } else {
  4812. if(!perm.has(player, "plot.moreinfo")) {
  4813. perm.no(player, "plot.moreinfo");
  4814. goto("wait");
  4815. }
  4816. p_name = list.getIndex(args, 1);
  4817. }
  4818. p_uuid = player.getUuid(p_name);
  4819. if(p_uuid == null) {
  4820. msg.prefix(player, prefix_plot, "This player has never been online.");
  4821. goto("wait");
  4822. }
  4823. p_name = player.getName(p_uuid);
  4824. msg.prefix(player, prefix_commands, concat(p_name, "'s plots:"));
  4825. world = loc.getWorld(entity.getLocation(player));
  4826. iter = plot.iterator(world, p_uuid);
  4827. while(hasNext(iter)) {
  4828. plot = next(iter);
  4829. msg(player, concat(" - #", text.number(plot.getId(plot)), " ", plot.getType(plot), " §6", plot.getName(plot)));
  4830. }
  4831. goto("wait");
  4832. }
  4833. if(arg0 == "listall") {
  4834. if(!perm.has(player, "plot.moreinfo")) {
  4835. perm.no(player, "plot.moreinfo");
  4836. goto("wait");
  4837. }
  4838. if(size != 1) {
  4839. msg.prefix(player, prefix_commands, "/plot listall");
  4840. goto("wait");
  4841. }
  4842. world = loc.getWorld(entity.getLocation(player));
  4843. msg.prefix(player, prefix_commands, concat("All plots in this world: ", world.getName(world)));
  4844. iterator = plot.iterator(world);
  4845. while(hasNext(iterator)) {
  4846. plot = next(iterator);
  4847. plot_id = plot.getId(plot);
  4848. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot), " §r", plot.getLeaderName(plot)));
  4849. }
  4850. goto("wait");
  4851. }
  4852. if(arg0 == "moreinfo" || arg0 == "mi") {
  4853. if(!perm.has(player, "plot.moreinfo")) {
  4854. perm.no(player, "plot.moreinfo");
  4855. goto("wait");
  4856. }
  4857. location = entity.getLocation(player);
  4858. world = loc.getWorld(location);
  4859. if(size == 1) {
  4860. plot_list = plot.get(location);
  4861. amount = list.getSize(plot_list);
  4862. if(amount == 0) {
  4863. msg.prefix(player, prefix_plot, "You aren't on a plot.");
  4864. goto("wait");
  4865. }
  4866. plot = list.getIndex(plot_list, 0);
  4867. if(amount > 1) {
  4868. msg.prefix(player, prefix_plot, "Multiple plots present:");
  4869. for(i = 0; i < amount; i++) {
  4870. plot = list.getIndex(plot_list, i);
  4871. plot_id = plot.getId(plot);
  4872. msg(player, text.click(" [§cSelect§r] ", concat("/plot moreinfo ", plot_id)), concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  4873. }
  4874. goto("wait");
  4875. }
  4876. } else {
  4877. if(size != 2) {
  4878. msg.prefix(player, prefix_commands, "/plot moreinfo [plot_id]");
  4879. goto("wait");
  4880. }
  4881. plot_id = list.getIndex(args, 1);
  4882. plot = plot.getFromId(plot_id, world);
  4883. if(plot == null) {
  4884. msg.prefix(player, prefix_plot, "Unknown plot or not in this world.");
  4885. goto("wait");
  4886. }
  4887. }
  4888. owners = "";
  4889. owners_list = plot.getOwners(plot);
  4890. copy_list = list.copy(owners_list);
  4891. plot_id = plot.getId(plot);
  4892. msg.prefix(player, prefix_plot, concat("#", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  4893. msg(player, " §dWorld: §r", world.getName(world));
  4894. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  4895. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  4896. leader_name = plot.getLeaderName(plot);
  4897. if(leader_name == "") {
  4898. leader_name = "-";
  4899. }
  4900. msg(player, " §dLeader: §r", leader_name);
  4901. list.remove(copy_list, player.getUuid(leader_name));
  4902. mods_list = plot.getMods(plot);
  4903. mods_amount = list.getSize(mods_list);
  4904. if(mods_amount == 0) {
  4905. mods_string = "-";
  4906. } else {
  4907. iter = list.iterator(mods_list);
  4908. mods_string = "";
  4909. while(hasNext(iter)) {
  4910. p_name = player.getNameFromId(next(iter));
  4911. p_uuid = player.getUuid(p_name);
  4912. list.remove(copy_list, p_uuid);
  4913. if(mods_string == "") {
  4914. mods_string = p_name;
  4915. } else {
  4916. mods_string = concat(mods_string, " / ", p_name);
  4917. }
  4918. }
  4919. }
  4920. msg(player, " §dMods: §r", mods_string);
  4921. members_amount = list.getSize(copy_list);
  4922. if(members_amount == 0) {
  4923. members_string = "-";
  4924. } else {
  4925. iter = list.iterator(copy_list);
  4926. members_string = "";
  4927. while(hasNext(iter)) {
  4928. p_name = player.getName(next(iter));
  4929. if(members_string == "") {
  4930. members_string = p_name;
  4931. } else {
  4932. members_string = concat(members_string, " / ", p_name);
  4933. }
  4934. }
  4935. }
  4936. msg(player, " §dMembers: §r", members_string);
  4937. chests_list = plot.getChestRanks(plot);
  4938. chests_amount = list.getSize(chests_list);
  4939. if(chests_amount == 0) {
  4940. chests_string = "-";
  4941. } else {
  4942. iter = list.iterator(chests_list);
  4943. chests_string = "";
  4944. while(hasNext(iter)) {
  4945. p_name = player.getNameFromId(next(iter));
  4946. if(chests_string == "") {
  4947. chests_string = p_name;
  4948. } else {
  4949. chests_string = concat(chests_string, " / ", p_name);
  4950. }
  4951. }
  4952. }
  4953. msg(player, " §dOnly chest: §r", chests_string);
  4954. flags = plot.getFlags(plot);
  4955. flags_true = list.new();
  4956. flags_false = list.new();
  4957. array = array.new(2);
  4958. array[0] = 512;
  4959. array[1] = "SUB_PLOT_FLAG";
  4960. if(flags >= 512) {
  4961. list.add(flags_true, array);
  4962. flags -= 512;
  4963. } else {
  4964. list.add(flags_false, array);
  4965. }
  4966. array = array.new(2);
  4967. array[0] = 256;
  4968. array[1] = "FREE_FLAG";
  4969. if(flags >= 256) {
  4970. list.add(flags_true, array);
  4971. flags -= 256;
  4972. } else {
  4973. list.add(flags_false, array);
  4974. }
  4975. array = array.new(2);
  4976. array[0] = 128;
  4977. array[1] = "CITY_FLAG";
  4978. if(flags >= 128) {
  4979. list.add(flags_true, array);
  4980. flags -= 128;
  4981. } else {
  4982. list.add(flags_false, array);
  4983. }
  4984. array = array.new(2);
  4985. array[0] = 64;
  4986. array[1] = "EXPLOSION_FLAG";
  4987. if(flags >= 64) {
  4988. list.add(flags_true, array);
  4989. flags -= 64;
  4990. } else {
  4991. list.add(flags_false, array);
  4992. }
  4993. array = array.new(2);
  4994. array[0] = 32;
  4995. array[1] = "ENTITY_INTERACT_FLAG";
  4996. if(flags >= 32) {
  4997. list.add(flags_true, array);
  4998. flags -= 32;
  4999. } else {
  5000. list.add(flags_false, array);
  5001. }
  5002. array = array.new(2);
  5003. array[0] = 16;
  5004. array[1] = "BLOCK_INTERACT_FLAG";
  5005. if(flags >= 16) {
  5006. list.add(flags_true, array);
  5007. flags -= 16;
  5008. } else {
  5009. list.add(flags_false, array);
  5010. }
  5011. array = array.new(2);
  5012. array[0] = 8;
  5013. array[1] = "HIT_AMBIENT_FLAG";
  5014. if(flags >= 8) {
  5015. list.add(flags_true, array);
  5016. flags -= 8;
  5017. } else {
  5018. list.add(flags_false, array);
  5019. }
  5020. array = array.new(2);
  5021. array[0] = 4;
  5022. array[1] = "BUCKET_FLAG";
  5023. if(flags >= 4) {
  5024. list.add(flags_true, array);
  5025. flags -= 4;
  5026. } else {
  5027. list.add(flags_false, array);
  5028. }
  5029. array = array.new(2);
  5030. array[0] = 2;
  5031. array[1] = "BREAK_FLAG";
  5032. if(flags >= 2) {
  5033. list.add(flags_true, array);
  5034. flags -= 2;
  5035. } else {
  5036. list.add(flags_false, array);
  5037. }
  5038. array = array.new(2);
  5039. array[0] = 1;
  5040. array[1] = "PLACE_FLAG";
  5041. if(flags >= 1) {
  5042. list.add(flags_true, array);
  5043. } else {
  5044. list.add(flags_false, array);
  5045. }
  5046. x = loc.getX(location);
  5047. y = loc.getY(location);
  5048. z = loc.getZ(location);
  5049. msg(player, " §dFlags true:");
  5050. iter = list.iterator(flags_true);
  5051. while(hasNext(iter)) {
  5052. array = next(iter);
  5053. flag_number = array[0];
  5054. flag_name = array[1];
  5055. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " false ", plot_id)));
  5056. }
  5057. msg(player, " §dFlags false:");
  5058. iter = list.iterator(flags_false);
  5059. while(hasNext(iter)) {
  5060. array = next(iter);
  5061. flag_number = array[0];
  5062. flag_name = array[1];
  5063. msg(player, " ", text.click(concat(" §d[§r", flag_name, "§d] "), concat("/plot flags ", flag_number, " true ", plot_id)));
  5064. }
  5065. goto("wait");
  5066. }
  5067. if(arg0 == "info" || arg0 == "i") {
  5068. location = entity.getLocation(player);
  5069. list = plot.get(location);
  5070. world = loc.getWorld(location);
  5071. size = list.getSize(list);
  5072. if(size == 0) {
  5073. msg.prefix(player, prefix_plot, "No plots found.");
  5074. goto("wait");
  5075. }
  5076. if(size == 1) {
  5077. msg.prefix(player, prefix_plot, concat(text.number(size), " plot found:"));
  5078. } else {
  5079. msg.prefix(player, prefix_plot, concat(text.number(size), " plots found:"));
  5080. }
  5081. for(i = 0; i < size; i++) {
  5082. plot = list.getIndex(list, i);
  5083. plot_id = plot.getId(plot);
  5084. msg(player, concat(" - #", text.number(plot_id), " ", plot.getType(plot), " §6", plot.getName(plot)));
  5085. owners_list = plot.getOwners(plot);
  5086. copy_list = list.copy(owners_list);
  5087. plot_id = plot.getId(plot);
  5088. msg(player, " §dWorld: §r", world.getName(world));
  5089. msg(player, " §dPos1: §r", plot.getMinX(plot), " / ", plot.getMinY(plot), " / ", plot.getMinZ(plot));
  5090. msg(player, " §dPos2: §r", plot.getMaxX(plot), " / ", plot.getMaxY(plot), " / ", plot.getMaxZ(plot));
  5091. leader_name = plot.getLeaderName(plot);
  5092. if(leader_name == "") {
  5093. leader_name = "-";
  5094. }
  5095. msg(player, " §dLeader: §r", leader_name);
  5096. list.remove(copy_list, player.getUuid(leader_name));
  5097. mods_list = plot.getMods(plot);
  5098. mods_amount = list.getSize(mods_list);
  5099. if(mods_amount == 0) {
  5100. mods_string = "-";
  5101. } else {
  5102. iter = list.iterator(mods_list);
  5103. mods_string = "";
  5104. while(hasNext(iter)) {
  5105. p_name = player.getNameFromId(next(iter));
  5106. p_uuid = player.getUuid(p_name);
  5107. list.remove(copy_list, p_uuid);
  5108. if(mods_string == "") {
  5109. mods_string = p_name;
  5110. } else {
  5111. mods_string = concat(mods_string, " / ", p_name);
  5112. }
  5113. }
  5114. }
  5115. msg(player, " §dMods: §r", mods_string);
  5116. members_amount = list.getSize(copy_list);
  5117. if(members_amount == 0) {
  5118. members_string = "-";
  5119. } else {
  5120. iter = list.iterator(copy_list);
  5121. members_string = "";
  5122. while(hasNext(iter)) {
  5123. p_name = player.getName(next(iter));
  5124. if(members_string == "") {
  5125. members_string = p_name;
  5126. } else {
  5127. members_string = concat(members_string, " / ", p_name);
  5128. }
  5129. }
  5130. }
  5131. msg(player, " §dMembers: §r", members_string);
  5132. chests_list = plot.getChestRanks(plot);
  5133. chests_amount = list.getSize(chests_list);
  5134. if(chests_amount == 0) {
  5135. chests_string = "-";
  5136. } else {
  5137. iter = list.iterator(chests_list);
  5138. chests_string = "";
  5139. while(hasNext(iter)) {
  5140. p_name = player.getNameFromId(next(iter));
  5141. if(chests_string == "") {
  5142. chests_string = p_name;
  5143. } else {
  5144. chests_string = concat(chests_string, " / ", p_name);
  5145. }
  5146. }
  5147. }
  5148. msg(player, " §dOnly chest: §r", chests_string);
  5149. }
  5150. goto("wait");
  5151. }
  5152. goto("plothelp");
  5153. @stopadventure
  5154. removeAdventureDisplay(player);
  5155. player.setAdventure(player, false);
  5156. msg.prefix(player, "§5Adventure", "Adventure canceled!");
  5157. goto("wait");
  5158. @speed
  5159. if(size < 1 || size > 2) {
  5160. if(perm.has(player, "speed.other")) {
  5161. msg.prefix(player, prefix_commands, "/speed <1-10> [player]");
  5162. } else {
  5163. msg.prefix(player, prefix_commands, "/speed <1-10>");
  5164. }
  5165. goto("wait");
  5166. }
  5167. speed = list.getIndex(args, 0);
  5168. if(!isDouble(speed)) {
  5169. msg.prefix(player, prefix_commands, "Zahl erwartet.");
  5170. goto("wait");
  5171. }
  5172. if(speed < 1) {
  5173. speed = 1;
  5174. }
  5175. if(speed > 10) {
  5176. speed = 10;
  5177. }
  5178. if(size == 2) {
  5179. if(!perm.has(player, "speed.other")) {
  5180. perm.no(player, "speed.other");
  5181. goto("wait");
  5182. }
  5183. affectedname = list.getIndex(args, 1);
  5184. affectedplayer = read.player(affectedname);
  5185. if(affectedplayer == null) {
  5186. msg.prefix(player, prefix_commands, "This player is not online.");
  5187. goto("wait");
  5188. }
  5189. }
  5190. player.setSpeed(affectedplayer, speed);
  5191. msg.prefix(affectedplayer, prefix_commands, concat("Set your speed to ", text.number(speed), "."));
  5192. if(affectedplayer != player) {
  5193. affectedname = player.getName(affectedplayer);
  5194. msg.prefix(player, prefix_commands, concat(affectedname, " set your speed to ", text.number(speed), "."));
  5195. }
  5196. goto("wait");
  5197. @butcher
  5198. loc = entity.getLocation(player);
  5199. world = loc.getWorld(loc);
  5200. list = world.getEntities(world);
  5201. size = list.getSize(list);
  5202. killed = 0;
  5203. for(i = 0; i < size; i++) {
  5204. element = list.getIndex(list, i);
  5205. if(isLiving(element)) {
  5206. entity_type = entity.getType(element);
  5207. if(set.contains(butcher_set, entity_type)) {
  5208. entity.remove(element);
  5209. killed++;
  5210. }
  5211. }
  5212. }
  5213. msg.prefix(player, prefix_commands, concat(text.number(killed), " mobs killed."));
  5214. goto("wait");
  5215. @enderchest
  5216. if(size < 1 || size > 2) {
  5217. msg.prefix(player, prefix_commands, "/enderchest [player] <from-player>");
  5218. goto("wait");
  5219. }
  5220. if(size == 1) {
  5221. from_name = list.getIndex(args, 0);
  5222. }
  5223. elseif(size == 2) {
  5224. affectedname = list.getIndex(args, 0);
  5225. from_name = list.getIndex(args, 1);
  5226. affectedplayer = read.player(affectedname);
  5227. if(affectedplayer == null) {
  5228. msg.prefix(player, prefix_commands, "This player is not online.");
  5229. goto("wait");
  5230. }
  5231. }
  5232. from_player = read.player(from_name);
  5233. if(from_player == null) {
  5234. msg.prefix(player, prefix_commands, "This player is not online.");
  5235. goto("wait");
  5236. }
  5237. player.openEnderchest(affectedplayer, from_player, concat("Enderchest von ", from_name));
  5238. goto("wait");
  5239. @gamemode
  5240. if(size < 1 || size > 2) {
  5241. msg.prefix(player, prefix_commands, "/gamemode <mode> [player]");
  5242. goto("wait");
  5243. }
  5244. if(size == 2) {
  5245. if(!perm.has(player, "gamemode.other")) {
  5246. perm.no(player, "gamemode.other");
  5247. goto("wait");
  5248. }
  5249. affectedname = list.getIndex(args, 1);
  5250. affectedplayer = read.player(affectedname);
  5251. if(affectedplayer == null) {
  5252. msg.prefix(player, prefix_commands, "This player is not online.");
  5253. goto("wait");
  5254. }
  5255. }
  5256. mode = list.getIndex(args, 0);
  5257. if(isDouble(mode)) {
  5258. mode = text.number(mode);
  5259. } else {
  5260. mode = text.toLowerCase(mode);
  5261. }
  5262. if(mode == "s" || mode == "0" || mode == "survival") {
  5263. mode = "survival";
  5264. } elseif(mode == "c" || mode == "1" || mode == "creative") {
  5265. mode = "creative";
  5266. } elseif(mode == "a" || mode == "2" || mode == "adventure") {
  5267. mode = "adventure";
  5268. } elseif(mode == "w" || mode == "3" || mode == "spectator") {
  5269. mode = "spectator";
  5270. } else {
  5271. msg.prefix(player, prefix_commands, "Unknown gamemode.");
  5272. goto("wait");
  5273. }
  5274. player.setGamemode(affectedplayer, mode);
  5275. if(affectedplayer != player) {
  5276. affectedname = player.getName(affectedplayer);
  5277. msg.prefix(player, prefix_commands, concat("Gamemode of ", affectedname, " set to ", mode, "."));
  5278. }
  5279. msg.prefix(affectedplayer, prefix_commands, concat("Set your gamemode to ", mode, "."));
  5280. goto("wait");
  5281. @home
  5282. if(size == 0) {
  5283. @homesyntax
  5284. msg.prefix(player, prefix_commands, "/home ...");
  5285. msg(player, "§6 - set <home> §rSets a home");
  5286. msg(player, "§6 - delete <home> §rDeletes a home");
  5287. if(perm.has(player, "home.other")) {
  5288. msg(player, "§6 - list [player] §rLists all homes");
  5289. msg(player, "§6 - <home> [player] §rTeleports to a home");
  5290. } else {
  5291. msg(player, "§6 - list §rLists your homes");
  5292. msg(player, "§6 - <home> §rTeleports to your home");
  5293. }
  5294. goto("wait");
  5295. }
  5296. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5297. if(arg0 == "del" || arg0 == "delete") {
  5298. if(size < 2) {
  5299. goto("homesyntax");
  5300. }
  5301. player_id = player.getId(player);
  5302. name = text.toLowerCase(list.getIndex(args, 1));
  5303. if(!home.exists(player_id, name)) {
  5304. msg.prefix(player, prefix_commands, concat("Home ", name, "doesn't exist."));
  5305. goto("wait");
  5306. }
  5307. home.delete(player_id, name);
  5308. msg.prefix(player, prefix_commands, concat("Home ", name, " deleted."));
  5309. goto("wait");
  5310. }
  5311. if(arg0 == "list") {
  5312. affecteduuid = player.getUuid(affectedname);
  5313. if(size == 2) {
  5314. if(!perm.has(player, "home.other")) {
  5315. perm.no(player, "home.other");
  5316. goto("wait");
  5317. }
  5318. affectedname = text.toLowerCase(list.getIndex(args, 1));
  5319. affecteduuid = player.getUuid(affectedname);
  5320. if(affecteduuid == null) {
  5321. msg.prefix(player, prefix_commands, "This player has never been online.");
  5322. goto("wait");
  5323. }
  5324. }
  5325. id = player.getId(affecteduuid);
  5326. homes_list = home.getList(id);
  5327. home_amount = list.getSize(homes_list);
  5328. if(home_amount == 0) {
  5329. msg.prefix(player, prefix_commands, "No homes existing.");
  5330. } else {
  5331. msg.prefix(player, prefix_commands, concat("Homes of ", affectedname, ":"));
  5332. for(i = 0; i < home_amount; i++) {
  5333. msg(player, concat("§6 - §r", list.getIndex(homes_list, i)));
  5334. }
  5335. }
  5336. goto("wait");
  5337. }
  5338. location = entity.getLocation(player);
  5339. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5340. if(!isSurvWorldName(world_name)) {
  5341. msg.prefix(player, prefix_commands, "You can't use this command in this world.");
  5342. goto("wait");
  5343. }
  5344. if(arg0 == "set") {
  5345. if(size < 2) {
  5346. goto("homesyntax");
  5347. }
  5348. player_id = player.getId(player);
  5349. homes_list = home.getList(player_id);
  5350. home_amount = list.getSize(homes_list);
  5351. if(perm.has(player, "isAdmin")) {
  5352. max_homes = 100;
  5353. } elseif(perm.has(player, "isMod")) {
  5354. max_homes = 40;
  5355. } elseif(perm.has(player, "isTeam")) {
  5356. max_homes = 20;
  5357. } elseif(perm.has(player, "canTP")) {
  5358. max_homes = 10;
  5359. } else {
  5360. max_homes = 5;
  5361. }
  5362. if(home_amount >= max_homes) {
  5363. msg.prefix(player, prefix_commands, concat("You can only set ", text.number(max_homes), " homes."));
  5364. goto("wait");
  5365. }
  5366. name = text.toLowerCase(list.getIndex(args, 1));
  5367. if(name == "set" || name == "del" || name == "delete" || name == "list") {
  5368. msg.prefix(player, prefix_commands, "This name ist not allowed.");
  5369. goto("wait");
  5370. }
  5371. if(!text.onlyletters(name)) {
  5372. msg.prefix(player, prefix_commands, "Only letters allowed.");
  5373. goto("wait");
  5374. }
  5375. if(text.length(name) > 20) {
  5376. msg.prefix(player, prefix_commands, "Maximum 20 letters.");
  5377. goto("wait");
  5378. }
  5379. if(home.exists(player_id, name)) {
  5380. msg.prefix(player, prefix_commands, concat("Home ", name, " already exists."));
  5381. goto("wait");
  5382. }
  5383. home.set(player_id, name, location);
  5384. msg.prefix(player, prefix_commands, concat("Home ", name, " set."));
  5385. goto("wait");
  5386. }
  5387. //Teleportation
  5388. if(size == 2) {
  5389. affectedname = text.toLowerCase(list.getIndex(args, 1));
  5390. }
  5391. affecteduuid = player.getUuid(affectedname);
  5392. if(affecteduuid == null) {
  5393. msg.prefix(player, prefix_commands, "Der Spieler war noch nie online.");
  5394. goto("wait");
  5395. }
  5396. player_id = player.getID(affecteduuid);
  5397. location = home.getLocation(player_id, arg0);
  5398. if(location == null) {
  5399. msg.prefix(player, prefix_commands, "Home doesn't exist."); //oder die welt ist nicht geladen
  5400. goto("wait");
  5401. }
  5402. player.teleport(player, location, true);
  5403. goto("wait");
  5404. @tpa
  5405. if(size != 1) {
  5406. msg.prefix(player, prefix_commands, "/tpa <player>");
  5407. goto("wait");
  5408. }
  5409. p_name = list.getIndex(args, 0);
  5410. p_uuid = player.getUuid(p_name);
  5411. if(p_uuid == null) {
  5412. msg.prefix(player, prefix_commands, "This player has never been online.");
  5413. goto("wait");
  5414. }
  5415. p_name = player.getName(p_uuid);
  5416. p = read.player(p_name);
  5417. if(p == null) {
  5418. msg.prefix(player, prefix_commands, "This player is not online.");
  5419. goto("wait");
  5420. }
  5421. if(!player.doesAcceptTpaRequests(p)) {
  5422. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  5423. goto("wait");
  5424. }
  5425. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5426. if(isGamesWorldName(world_name)) {
  5427. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5428. goto("wait");
  5429. }
  5430. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5431. if(isGamesWorldName(world_name)) {
  5432. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5433. goto("wait");
  5434. }
  5435. addTpaRequest(player.getUuid(player), p_uuid);
  5436. msg(player, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6]"));
  5437. msg(p, concat("§6Teleport-Request: [§c", player_name, "§6 -> §c ", p_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccept ", player_name)));
  5438. goto("wait");
  5439. @tpahere
  5440. if(size != 1) {
  5441. msg.prefix(player, prefix_commands, "/tpahere <player>");
  5442. goto("wait");
  5443. }
  5444. p_name = list.getIndex(args, 0);
  5445. p_uuid = player.getUuid(p_name);
  5446. if(p_uuid == null) {
  5447. msg.prefix(player, prefix_commands, "This player has never been online.");
  5448. goto("wait");
  5449. }
  5450. p_name = player.getName(p_uuid);
  5451. p = read.player(p_name);
  5452. if(p == null) {
  5453. msg.prefix(player, prefix_commands, "This player is not online.");
  5454. goto("wait");
  5455. }
  5456. if(!player.doesAcceptTpaRequests(p)) {
  5457. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r rejects teleport requests."));
  5458. goto("wait");
  5459. }
  5460. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5461. if(isGamesWorldName(world_name)) {
  5462. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to this world."));
  5463. goto("wait");
  5464. }
  5465. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5466. if(isGamesWorldName(world_name)) {
  5467. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  5468. goto("wait");
  5469. }
  5470. addTpaRequest(p_uuid, player.getUuid(player));
  5471. msg(player, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6]"));
  5472. msg(p, concat("§6Teleport-Request: [§c", p_name, "§6 -> §c ", player_name, "§6] "), text.click("§6[§aAccept§6]", concat("/tpaccepthere ", player_name)));
  5473. goto("wait");
  5474. @tpaccept
  5475. if(size != 1) {
  5476. msg.prefix(player, prefix_commands, "/tpaccept <player>");
  5477. goto("wait");
  5478. }
  5479. p_name = list.getIndex(args, 0);
  5480. p_uuid = player.getUuid(p_name);
  5481. if(p_uuid == null) {
  5482. msg.prefix(player, prefix_commands, "This player has never been online.");
  5483. goto("wait");
  5484. }
  5485. p_name = player.getName(p_uuid);
  5486. p = read.player(p_name);
  5487. if(p == null) {
  5488. msg.prefix(player, prefix_commands, "This player is not online.");
  5489. goto("wait");
  5490. }
  5491. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5492. if(isGamesWorldName(world_name)) {
  5493. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport to your world."));
  5494. goto("wait");
  5495. }
  5496. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5497. if(isGamesWorldName(world_name)) {
  5498. msg.prefix(player, prefix_commands, concat("§c", p_name, "§r isn't allowed to teleport from their world."));
  5499. goto("wait");
  5500. }
  5501. player_uuid = player.getUuid(player);
  5502. if(!hasTpaRequest(p_uuid, player_uuid)) {
  5503. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  5504. goto("wait");
  5505. }
  5506. location = entity.getLocation(player);
  5507. player.teleport(p, location, true);
  5508. goto("wait");
  5509. @tpaccepthere
  5510. if(size != 1) {
  5511. msg.prefix(player, prefix_commands, "/tpaccepthere <player>");
  5512. goto("wait");
  5513. }
  5514. p_name = list.getIndex(args, 0);
  5515. p_uuid = player.getUuid(p_name);
  5516. if(p_uuid == null) {
  5517. msg.prefix(player, prefix_commands, "This player has never been online.");
  5518. goto("wait");
  5519. }
  5520. p_name = player.getName(p_uuid);
  5521. p = read.player(p_name);
  5522. if(p == null) {
  5523. msg.prefix(player, prefix_commands, "This player is not online.");
  5524. goto("wait");
  5525. }
  5526. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5527. if(isGamesWorldName(world_name)) {
  5528. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5529. goto("wait");
  5530. }
  5531. world_name = world.getName(loc.getWorld(entity.getLocation(p)));
  5532. if(isGamesWorldName(world_name)) {
  5533. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5534. goto("wait");
  5535. }
  5536. player_uuid = player.getUuid(player);
  5537. if(!hasTpaRequest(player_uuid, p_uuid)) {
  5538. msg.prefix(player, prefix_commands, "No outstanding teleport-request.");
  5539. goto("wait");
  5540. }
  5541. location = entity.getLocation(p);
  5542. player.teleport(player, location, true);
  5543. goto("wait");
  5544. @teleport
  5545. if(size < 1 || size > 2) {
  5546. if(perm.has(player, "teleport.other")) {
  5547. msg.prefix(player, prefix_commands, "/teleport [player] <to-player>");
  5548. } else {
  5549. msg.prefix(player, prefix_commands, "/teleport <player>");
  5550. }
  5551. goto("wait");
  5552. }
  5553. if(size == 1) {
  5554. to_name = list.getIndex(args, 0);
  5555. }
  5556. elseif(size == 2) {
  5557. if(!perm.has(player, "teleport.other")) {
  5558. perm.no(player, "teleport.other");
  5559. goto("wait");
  5560. }
  5561. affectedname = list.getIndex(args, 0);
  5562. affectedplayer = read.player(affectedname);
  5563. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  5564. to_name = list.getIndex(args, 1);
  5565. if(affectedplayer == null) {
  5566. msg.prefix(player, prefix_commands, "This player is not online.");
  5567. goto("wait");
  5568. }
  5569. }
  5570. if(player.hasMinigame(affectedplayer)) {
  5571. if(size == 2) {
  5572. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  5573. } else {
  5574. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  5575. }
  5576. goto("wait");
  5577. }
  5578. to_player = read.player(to_name);
  5579. if(to_player == null) {
  5580. msg.prefix(player, prefix_commands, "This player is not online.");
  5581. goto("wait");
  5582. }
  5583. //Damit der ganze Spielername und nicht nur der eingegebene angezeigt wird
  5584. to_name = player.getName(to_player);
  5585. location = entity.getLocation(to_player);
  5586. if(player.teleport(affectedplayer, location, true)) {
  5587. if(player != affectedplayer) {
  5588. affectedname = player.getName(affectedplayer);
  5589. msg.prefix(player, prefix_commands, concat("Teleported ", affectedname, " to ", to_name, "."));
  5590. }
  5591. msg.prefix(affectedplayer, prefix_commands, concat("Teleported you to ", to_name, "."));
  5592. }
  5593. goto("wait");
  5594. @say
  5595. if(size == 0) {
  5596. msg.prefix(sender, prefix_commands, "/say <text>");
  5597. goto("wait");
  5598. }
  5599. message = text.concatList(args, " ", 0, size - 1);
  5600. msg("online", text.hover("[§cServer§r]", "The center of Wusiness"), " ", text.replace(message, "&", "§"));
  5601. msg("SERVER", "[§cServer§r] ", text.replace(message, "&", "§"));
  5602. goto("wait");
  5603. @warp
  5604. if(size == 0) {
  5605. @warpsyntax
  5606. msg.prefix(player, prefix_commands, "/warp ...");
  5607. if(perm.has(player, "warp.create")) {
  5608. msg(player, "§6 - set [group] <warp> §rSets a warp");
  5609. msg(player, "§6 - delete [group] <warp> §rDeletes a warp");
  5610. msg(player, "§6 - [group] <warp> §rTeleports to a warp");
  5611. msg(player, "§6 - list [group] §rLists all warps");
  5612. msg(player, "§6 - groups §rLists all warp groups");
  5613. } else {
  5614. msg(player, "§6 - <warp> §rTeleports to a warp");
  5615. msg(player, "§6 - list §rLists all warps");
  5616. }
  5617. goto("wait");
  5618. }
  5619. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5620. if(arg0 == "delete") {
  5621. if(!perm.has(player, "warp.create")) {
  5622. perm.no(player, "warp.create");
  5623. goto("wait");
  5624. }
  5625. if(size < 2) {
  5626. goto("warpsyntax");
  5627. }
  5628. if(size == 2) {
  5629. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5630. warp_group = "default";
  5631. } else {
  5632. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5633. warp_name = text.toLowerCase(list.getIndex(args, 2));
  5634. }
  5635. if(warp.delete(warp_group, warp_name)) {
  5636. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " deleted."));
  5637. } else {
  5638. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  5639. }
  5640. goto("wait");
  5641. }
  5642. if(arg0 == "list") {
  5643. if(size == 1) {
  5644. warp_group = "default";
  5645. } else {
  5646. if(!perm.has(player, "warp.create")) {
  5647. perm.no(player, "warp.create");
  5648. goto("wait");
  5649. }
  5650. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5651. }
  5652. warps_list = warp.getList(warp_group);
  5653. if(list.getSize(warps_list) == 0) {
  5654. msg.prefix(player, prefix_commands, "No warps existing.");
  5655. } else {
  5656. msg.prefix(player, prefix_commands, concat("§6", warp_group, "§r warps:"));
  5657. for(i = 0; i < list.getSize(warps_list); i++) {
  5658. msg(player, concat("§6 - §r", list.getIndex(warps_list, i)));
  5659. }
  5660. }
  5661. goto("wait");
  5662. }
  5663. if(arg0 == "groups") {
  5664. if(!perm.has(player, "warp.create")) {
  5665. perm.no(player, "warp.create");
  5666. goto("wait");
  5667. }
  5668. groups_list = warp.getGroups();
  5669. msg.prefix(player, prefix_commands, "All warp groups:");
  5670. for(i = 0; i < list.getSize(groups_list); i++) {
  5671. msg(player, concat("§6 - §r", list.getIndex(groups_list, i)));
  5672. }
  5673. goto("wait");
  5674. }
  5675. if(arg0 == "set") {
  5676. if(!perm.has(player, "warp.create")) {
  5677. perm.no(player, "warp.create");
  5678. goto("wait");
  5679. }
  5680. if(size < 2) {
  5681. goto("warpsyntax");
  5682. }
  5683. if(size == 2) {
  5684. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5685. warp_group = "default";
  5686. } else {
  5687. warp_group = text.toLowerCase(list.getIndex(args, 1));
  5688. warp_name = text.toLowerCase(list.getIndex(args, 2));
  5689. }
  5690. if(warp.exists(warp_group, warp_name)) {
  5691. msg.prefix(player, prefix_commands, "Warpname already exists.");
  5692. goto("wait");
  5693. }
  5694. warp.create(warp_group, warp_name, entity.getLocation(player));
  5695. msg.prefix(player, prefix_commands, concat("Warp ", warp_name, " in group ", warp_group, " set."));
  5696. goto("wait");
  5697. }
  5698. //Teleportation
  5699. if(size == 1) {
  5700. warp_name = arg0;
  5701. warp_group = "default";
  5702. } else {
  5703. if(!perm.has(player, "warp.create")) {
  5704. perm.no(player, "warp.create");
  5705. goto("wait");
  5706. }
  5707. warp_name = text.toLowerCase(list.getIndex(args, 1));
  5708. warp_group = arg0;
  5709. }
  5710. warp_loc = warp.get(warp_group, warp_name);
  5711. if(warp_loc == null) {
  5712. msg.prefix(player, prefix_commands, "Warpname doesn't exist.");
  5713. goto("wait");
  5714. }
  5715. if(!perm.has(player, "warp.create")) {
  5716. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  5717. if(isGamesWorldName(world_name)) {
  5718. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  5719. goto("wait");
  5720. }
  5721. world_name = world.getName(loc.getWorld(warp_loc));
  5722. if(isGamesWorldName(world_name)) {
  5723. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  5724. goto("wait");
  5725. }
  5726. }
  5727. if(player.teleport(player, warp_loc, true)) {
  5728. msg.prefix(player, prefix_commands, concat("You have been teleported to warp §7", warp_name, "."));
  5729. }
  5730. goto("wait");
  5731. @databank
  5732. if(size == 0) {
  5733. @databankhelp
  5734. msg.prefix(player, prefix_commands, "/databank...");
  5735. msg(player, "§6 - showtables §rShows all tables");
  5736. msg(player, "§6 - showfields §rShows fields from a table");
  5737. msg(player, "§6 - showdataypes §rShows dataypes from a table");
  5738. goto("wait");
  5739. }
  5740. arg0 = text.toLowerCase(list.getIndex(args, 0));
  5741. if(arg0 == "showtables") {
  5742. msg(player, getSpacer());
  5743. stmt = databank.prepare("SHOW TABLES");
  5744. result = databank.execute(stmt);
  5745. while(databank.next(result)) {
  5746. msg(player, databank.getString(result, 1));
  5747. }
  5748. databank.close(result);
  5749. databank.close(stmt);
  5750. goto("wait");
  5751. }
  5752. if(arg0 == "showfields") {
  5753. if(size < 2) {
  5754. msg.prefix(player, prefix_commands, "/databank showfields <table>");
  5755. goto("wait");
  5756. }
  5757. table = list.getIndex(args, 1);
  5758. if(!databank.isExistingTable(table)) {
  5759. msg.prefix(player, prefix_commands, "This in no existing table.");
  5760. goto("wait");
  5761. }
  5762. msg(player, getSpacer());
  5763. fields = databank.getTableFields(table);
  5764. iter = list.iterator(fields);
  5765. while(hasNext(iter)) {
  5766. msg(player, next(iter));
  5767. }
  5768. goto("wait");
  5769. }
  5770. if(arg0 == "showdataypes") {
  5771. if(size < 2) {
  5772. msg.prefix(player, prefix_commands, "/databank showdataypes <table>");
  5773. goto("wait");
  5774. }
  5775. table = list.getIndex(args, 1);
  5776. if(!databank.isExistingTable(table)) {
  5777. msg.prefix(player, prefix_commands, "This in no existing table.");
  5778. goto("wait");
  5779. }
  5780. msg(player, getSpacer());
  5781. msg(player, databank.getTableDatatypes(table));
  5782. goto("wait");
  5783. }
  5784. goto("databankhelp");
  5785. @seen
  5786. if(size != 1) {
  5787. msg.prefix(player, prefix_commands, "/seen <player>");
  5788. goto("wait");
  5789. }
  5790. seen_name = list.getIndex(args, 0);
  5791. seen_uuid = player.getUuid(seen_name);
  5792. if(seen_uuid == null) {
  5793. msg.prefix(player, prefix_commands, "Dieser Spieler war noch nie online.");
  5794. goto("wait");
  5795. }
  5796. if(read.player(seen_name) != null) {
  5797. msg.prefix(player, prefix_commands, "Dieser Spieler ist gerade online.");
  5798. goto("wait");
  5799. }
  5800. seenStatement = databank.prepare("SELECT logouttime FROM logoutdata WHERE player_id = ?;");
  5801. databank.setInt(seenStatement, 1, player.getId(seen_uuid));
  5802. result = databank.execute(seenStatement);
  5803. varset = false;
  5804. while(databank.next(result)) {
  5805. time = databank.getLong(result, 1);
  5806. calendar = time.new(time);
  5807. year = text.number(time.getYear(calendar));
  5808. month = text.number(time.getMonth(calendar));
  5809. day = text.number(time.getDay(calendar));
  5810. minute = text.number(time.getMinute(calendar));
  5811. hour = text.number(time.getHour(calendar));
  5812. month = correctTimeFormat(month);
  5813. day = correctTimeFormat(day);
  5814. hour = correctTimeFormat(hour);
  5815. minute = correctTimeFormat(minute);
  5816. dateformat = concat(day, ".", month, ".", year);
  5817. clockformat = concat(hour, ":", minute);
  5818. msg.prefix(player, prefix_commands, concat(seen_name, " war zuletzt am §e", dateformat, "§r um §e", clockformat, " Uhr §ronline."));
  5819. varset = true;
  5820. }
  5821. databank.close(result);
  5822. databank.close(seenStatement);
  5823. if(!varset) {
  5824. msg.prefix(player, prefix_commands, "Keine Daten vorhanden.");
  5825. goto("wait");
  5826. }
  5827. goto("wait");
  5828. @lastseen
  5829. if(size != 1) {
  5830. msg.prefix(sender, prefix_commands, "/lastseen <amount>");
  5831. goto("wait");
  5832. }
  5833. amount = list.getIndex(args, 0);
  5834. if(!isDouble(amount)) {
  5835. msg.prefix(sender, prefix_commands, "Zahl erwartet.");
  5836. goto("wait");
  5837. }
  5838. if(amount < 1) {
  5839. msg.prefix(sender, prefix_commands, "Zahl größer 0 erwartet.");
  5840. goto("wait");
  5841. }
  5842. msg.prefix(sender, prefix_commands, "These players were last seen:");
  5843. table = table.new("§f", 12, 12);
  5844. msg(sender, table.getStart(table));
  5845. msg(sender, table.get(table, "Player", "Date"));
  5846. msg(sender, table.getMiddle(table));
  5847. lastseenStatement = databank.prepare("SELECT player_id, logouttime FROM logoutdata ORDER BY logouttime DESC LIMIT ?;");
  5848. databank.setInt(lastseenStatement, 1, amount);
  5849. result = databank.execute(lastseenStatement);
  5850. while(databank.next(result)) {
  5851. id = databank.getInt(result, 1);
  5852. time = databank.getLong(result, 2);
  5853. msg(sender, table.get(table, concat("§a", player.getNameFromId(id)), concat("§e", getTimeString(time))));
  5854. }
  5855. msg(sender, table.getEnd(table));
  5856. databank.close(result);
  5857. databank.close(lastseenStatement);
  5858. goto("wait");
  5859. @feed
  5860. if(size > 1) {
  5861. msg.prefix(player, prefix_commands, "/feed [player]");
  5862. goto("wait");
  5863. }
  5864. if(size == 1) {
  5865. affectedname = list.getIndex(args, 0);
  5866. affectedplayer = read.player(affectedname);
  5867. if(affectedplayer == null) {
  5868. msg.prefix(player, prefix_commands, "This player is not online.");
  5869. goto("wait");
  5870. }
  5871. if(player != affectedplayer) {
  5872. affectedname = player.getName(affectedplayer);
  5873. msg.prefix(player, prefix_commands, concat("Der Hunger von ", affectedname, " wurde gestillt."));
  5874. }
  5875. }
  5876. player.setHunger(affectedplayer, 20);
  5877. player.setSaturation(affectedplayer, 5);
  5878. msg.prefix(affectedplayer, prefix_commands, "Dein Hunger wurde gestillt.");
  5879. goto("wait");
  5880. @tempfly
  5881. if(size < 2) {
  5882. msg.prefix(sender, prefix_commands, "/tempfly <player> <sec>");
  5883. goto("wait");
  5884. }
  5885. p_name = list.getIndex(args, 0);
  5886. if(!checkIfEverOnline(p_name)) {
  5887. msg.prefix(sender, prefix_commands, "This player has never been online.");
  5888. goto("wait");
  5889. }
  5890. p = read.player(p_name);
  5891. if(p == null) {
  5892. msg.prefix(sender, prefix_commands, "This player is not online.");
  5893. goto("wait");
  5894. }
  5895. p_name = player.getName(player.getUuid(p_name));
  5896. if(player.hasMinigame(p)) {
  5897. msg.prefix(player, prefix_commands, "This player can't fly now.");
  5898. goto("wait");
  5899. }
  5900. sec = list.getIndex(args, 1);
  5901. if(!isDouble(sec) || sec < 0) {
  5902. msg.prefix(sender, prefix_commands, "Positive number expected.");
  5903. goto("wait");
  5904. }
  5905. msg.prefix(sender, prefix_commands, concat(p_name, " can now fly for ", text.number(sec), " seconds."));
  5906. msg.prefix(p, prefix_commands, concat("You can now fly for ", text.number(sec), " seconds."));
  5907. player.setFly(p, true);
  5908. duration = sec * 20;
  5909. data.setTimer(p, "fly", duration);
  5910. status.addTimed(player, 53, duration, "Fly");
  5911. goto("wait");
  5912. @fly
  5913. if(size > 2) {
  5914. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  5915. goto("wait");
  5916. }
  5917. if(size >= 1) {
  5918. if(!perm.has(player, "fly.other")) {
  5919. perm.no(player, "fly.other");
  5920. goto("wait");
  5921. }
  5922. affectedname = list.getIndex(args, 0);
  5923. affectedplayer = read.player(affectedname);
  5924. if(affectedplayer == null) {
  5925. msg.prefix(player, prefix_commands, "This player is not online.");
  5926. goto("wait");
  5927. }
  5928. }
  5929. if(player.hasMinigame(affectedplayer)) {
  5930. if(size == 2) {
  5931. msg.prefix(player, prefix_commands, "This player can't fly now.");
  5932. } else {
  5933. msg.prefix(player, prefix_commands, "You can't fly now.");
  5934. }
  5935. goto("wait");
  5936. }
  5937. if(size == 2) {
  5938. boolean = list.getIndex(args, 1);
  5939. if(boolean == "on") {
  5940. fly = true;
  5941. } elseif(boolean == "off") {
  5942. fly = false;
  5943. } else {
  5944. msg.prefix(player, prefix_commands, "/fly [player] [on/off]");
  5945. goto("wait");
  5946. }
  5947. } else {
  5948. if(player.hasFly(affectedplayer)) {
  5949. fly = false;
  5950. } else {
  5951. fly = true;
  5952. }
  5953. }
  5954. player.setFly(affectedplayer, fly);
  5955. if(fly) {
  5956. msg.prefix(affectedplayer, prefix_commands, "You can fly now.");
  5957. if(player != affectedplayer) {
  5958. affectedname = player.getName(affectedplayer);
  5959. msg.prefix(player, prefix_commands, concat(affectedname, " can fly now."));
  5960. }
  5961. } else {
  5962. msg.prefix(affectedplayer, prefix_commands, "You can't fly anymore.");
  5963. if(player != affectedplayer) {
  5964. affectedname = player.getName(affectedplayer);
  5965. msg.prefix(player, prefix_commands, concat(affectedname, " can't fly anymore."));
  5966. }
  5967. }
  5968. goto("wait");
  5969. @tppos
  5970. if(size < 3 || size > 5) {
  5971. msg.prefix(player, prefix_commands, "/tppos <x> <y> <z> [world] [player]");
  5972. goto("wait");
  5973. }
  5974. x = list.getIndex(args, 0);
  5975. y = list.getIndex(args, 1);
  5976. z = list.getIndex(args, 2);
  5977. if(!isDouble(x) || !isDouble(y) || !isDouble(z)) {
  5978. msg.prefix(player, prefix_commands, "x/y/z müssen Zahlen sein.");
  5979. goto("wait");
  5980. }
  5981. if(size >= 4) {
  5982. worldname = list.getIndex(args, 3);
  5983. world = world.get(worldname);
  5984. if(world == null) {
  5985. msg.prefix(player, prefix_commands, "This world is not loaded.");
  5986. goto("wait");
  5987. }
  5988. } else {
  5989. world = loc.getWorld(entity.getLocation(player));
  5990. }
  5991. if(x < -16000) {
  5992. x = -16000;
  5993. } elseif(x > 16000) {
  5994. x = 16000;
  5995. }
  5996. if(y < 0) {
  5997. y = 0;
  5998. } elseif(y > 255) {
  5999. y = 255;
  6000. }
  6001. if(z < -16000) {
  6002. z = -16000;
  6003. } elseif(z > 16000) {
  6004. z = 16000;
  6005. }
  6006. location = loc.new(world, x, y, z);
  6007. if(size == 5) {
  6008. affectedname = list.getIndex(args, 4);
  6009. affectedplayer = read.player(affectedname);
  6010. if(affectedplayer == null) {
  6011. msg.prefix(player, prefix_commands, "This player is not online.");
  6012. goto("wait");
  6013. }
  6014. }
  6015. if(player.hasMinigame(affectedplayer)) {
  6016. if(size == 5) {
  6017. msg.prefix(player, prefix_commands, "§rThe player can't be teleported now.");
  6018. } else {
  6019. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  6020. }
  6021. goto("wait");
  6022. }
  6023. if(player.teleport(affectedplayer, location, true)) {
  6024. if(player != affectedplayer) {
  6025. affectedname = player.getName(affectedplayer);
  6026. msg.prefix(player, prefix_commands, concat(affectedname, " was teleported."));
  6027. }
  6028. }
  6029. goto("wait");
  6030. @back
  6031. if(size > 0) {
  6032. msg.prefix(player, prefix_commands, "/back");
  6033. goto("wait");
  6034. }
  6035. if(player.hasMinigame(player)) {
  6036. msg.prefix(player, prefix_commands, "§rYou can't teleport now.");
  6037. goto("wait");
  6038. }
  6039. hasPerms = perm.has(player, "isTeam");
  6040. if(!hasPerms) {
  6041. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6042. if(isGamesWorldName(world_name) || isStoryWorldName(world_name)) {
  6043. msg.prefix(player, prefix_commands, "You can't use /back in this world.");
  6044. goto("wait");
  6045. }
  6046. }
  6047. location = player.getBackPos(player);
  6048. if(location == null) {
  6049. msg.prefix(player, prefix_commands, "No back-location available.");
  6050. goto("wait");
  6051. }
  6052. world = loc.getWorld(location);
  6053. if(world == null) {
  6054. msg.prefix(player, prefix_commands, "This world is not loaded.");
  6055. goto("wait");
  6056. }
  6057. if(!hasPerms) {
  6058. world_name = world.getName(world);
  6059. if(isGamesWorldName(world_name)) {
  6060. msg.prefix(player, prefix_commands, "You can't teleport to this world.");
  6061. goto("wait");
  6062. }
  6063. }
  6064. player.teleport(player, location, true);
  6065. goto("wait");
  6066. @clan
  6067. if(size == 0) {
  6068. @clanhelp
  6069. msg.prefix(player, prefix_clan, "§r/clan...");
  6070. msg(player, "§2 - invite <name> §rInvites a player");
  6071. msg(player, "§2 - accept <id/name/tag> §rAccepts an invitation");
  6072. msg(player, "§2 - info [id/name/tag] §rReturns info about a clan");
  6073. msg(player, "§2 - create <name> <tag> §rCreates a clan");
  6074. msg(player, "§2 - kick <name> §rKicks a player");
  6075. msg(player, "§2 - leader <name> §rPromote to clan-leader");
  6076. msg(player, "§2 - mod <name> §rPromote to clan-mod");
  6077. msg(player, "§2 - degrade <name> §rDemote a clan-mod");
  6078. msg(player, "§2 - leave §rLeave a clan");
  6079. msg(player, "§2 - disband §rDisband a clan");
  6080. msg(player, "§2 - rename <name> <tag> §rRenames a clan");
  6081. msg(player, "§2 - setspawn §rSets a clan-spawn");
  6082. msg(player, "§2 - spawn §rTeleports to clan-spawn");
  6083. msg(player, "§2 - msg <message> §rSends a clan-message");
  6084. msg(player, "§2 - mail <message> §rSends a clan-mail");
  6085. msg(player, "§2 - shout <message> §rSends a message to all online players");
  6086. msg(player, "§2 - deposit <money> §rDeposit money to the clan account");
  6087. msg(player, "§2 - withdraw <money> §rWithdraw money from the clan account");
  6088. msg(player, "§2 - party §rInvites all online members to a party");
  6089. msg(player, "§2 - list §rLists all clans");
  6090. goto("wait");
  6091. }
  6092. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6093. if(arg0 == "invite") {
  6094. if(size != 2) {
  6095. msg.prefix(player, prefix_commands, "/clan invite <name>");
  6096. goto("wait");
  6097. }
  6098. if(!player.isInClan(player)) {
  6099. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6100. goto("wait");
  6101. }
  6102. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6103. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6104. goto("wait");
  6105. }
  6106. p_name = list.getIndex(args, 1);
  6107. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6108. msg.prefix(player, prefix_clan, "You can't invite yourself.");
  6109. goto("wait");
  6110. }
  6111. if(!checkIfEverOnline(p_name)) {
  6112. msg.prefix(sender, prefix_clan, "This player has never been online.");
  6113. goto("wait");
  6114. }
  6115. if(!isOnline(p_name)) {
  6116. msg.prefix(player, prefix_clan, "This player has to be online.");
  6117. goto("wait");
  6118. }
  6119. p = read.player(p_name);
  6120. if(player.isClanMember(player)) {
  6121. msg.prefix(player, prefix_clan, "This player is already in a clan.");
  6122. goto("wait");
  6123. }
  6124. clan_id = player.getClanId(player);
  6125. p_id = player.getId(p);
  6126. if(player.hasClanInvitation(p_id, clan_id)) {
  6127. msg.prefix(player, prefix_clan, "This player already has an invitation from your clan.");
  6128. goto("wait");
  6129. }
  6130. player.addClanInvitation(p_id, clan_id);
  6131. clan_name = clan.getName(clan_id);
  6132. msg.prefix(player, prefix_clan, text.concat("You invited §7", p_name, "§r to your clan."));
  6133. msg.prefix(p, prefix_clan, text.concat("You got an clan invitation by §7", clan_name, "§r."));
  6134. msg(p, text.click("§r[§aAccept§r]", concat("/clan accept ", clan_id)));
  6135. sgoto(6000, "remove_clan_invitation"); //5 Minuten
  6136. goto("wait");
  6137. }
  6138. if(arg0 == "accept") {
  6139. if(size != 2) {
  6140. msg.prefix(player, prefix_commands, "/clan accept <id/name/tag>");
  6141. goto("wait");
  6142. }
  6143. if(player.isInClan(player)) {
  6144. msg.prefix(player, prefix_clan, "You are already in a clan.");
  6145. goto("wait");
  6146. }
  6147. arg1 = list.getIndex(args, 1);
  6148. if(isDouble(arg1)) {
  6149. clan_id = arg1;
  6150. clan_name = clan.getName(clan_id);
  6151. if(clan_name == null) {
  6152. msg.prefix(player, prefix_clan, "Unknown clan.");
  6153. goto("wait");
  6154. }
  6155. } else {
  6156. clan_id = clan.getIdFromName(arg1);
  6157. if(clan_id == null) {
  6158. clan_id = clan.getIdFromTag(arg1);
  6159. if(clan_id == null) {
  6160. msg.prefix(player, prefix_clan, "Unknown clan.");
  6161. goto("wait");
  6162. }
  6163. }
  6164. }
  6165. player_id = player.getId(player);
  6166. if(!player.hasClanInvitation(player_id, clan_id)) {
  6167. msg.prefix(player, prefix_clan, "You have no invitation from this clan.");
  6168. goto("wait");
  6169. }
  6170. clan.addMember(clan_id, player, "member");
  6171. player.setHeadName(player);
  6172. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r joined the clan."));
  6173. msg.prefix(player, prefix_clan, text.concat("You joined §7", clan_name, "§r."));
  6174. clan_size = clan.getMembersAmount(clan_id);
  6175. if(clan_size >= 15) {
  6176. rank.offerClan(clan_id, "rank.lord");
  6177. } elseif(clan_size >= 10) {
  6178. rank.offerClan(clan_id, "rank.chief");
  6179. } elseif(clan_size >= 5) {
  6180. rank.offerClan(clan_id, "rank.commander");
  6181. }
  6182. goto("wait");
  6183. }
  6184. if(arg0 == "create") {
  6185. if(size != 3) {
  6186. msg.prefix(player, prefix_commands, "/clan create <name> <tag>");
  6187. goto("wait");
  6188. }
  6189. if(player.isInClan(player)) {
  6190. msg.prefix(player, prefix_clan, "You are already in a clan.");
  6191. goto("wait");
  6192. }
  6193. clan_name = list.getIndex(args, 1);
  6194. if(text.length(clan_name) > 20) {
  6195. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  6196. goto("wait");
  6197. }
  6198. if(!text.onlyletters(clan_name)) {
  6199. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6200. goto("wait");
  6201. }
  6202. if(clan.isExistingName(clan_name)) {
  6203. msg.prefix(player, prefix_clan, "This name already exists.");
  6204. goto("wait");
  6205. }
  6206. clan_tag = list.getIndex(args, 2);
  6207. tag_length = text.length(clan_tag);
  6208. if(tag_length < 3 || tag_length > 4) {
  6209. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  6210. goto("wait");
  6211. }
  6212. if(!text.onlyletters(clan_tag)) {
  6213. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6214. goto("wait");
  6215. }
  6216. if(clan.isExistingTag(clan_tag)) {
  6217. msg.prefix(player, prefix_clan, "This tag already exists.");
  6218. goto("wait");
  6219. }
  6220. if(!hasEnoughMoney(player, 4096)) { //1 Goldmünze
  6221. msg.prefix(player, prefix_clan, "You need 4096 snuvis (1 gold coin).");
  6222. goto("wait");
  6223. }
  6224. subMoney(player, 4096);
  6225. clan_id = clan.create(clan_name, clan_tag);
  6226. clan.addMember(clan_id, player, "leader");
  6227. player.setHeadName(player);
  6228. msg.prefix(player, prefix_clan, "Clan successful created.");
  6229. goto("wait");
  6230. }
  6231. if(arg0 == "info") {
  6232. if(size == 1) {
  6233. if(!player.isInClan(player)) {
  6234. msg.prefix(player, prefix_commands, "/clan info <id/name/tag>");
  6235. goto("wait");
  6236. }
  6237. clan_id = player.getClanId(player);
  6238. clan_name = clan.getName(clan_id);
  6239. clan_tag = clan.getTag(clan_id);
  6240. }
  6241. if(size == 2) {
  6242. arg1 = list.getIndex(args, 1);
  6243. if(isDouble(arg1)) {
  6244. clan_id = arg1;
  6245. clan_name = clan.getName(clan_id);
  6246. if(clan_name == null) {
  6247. msg.prefix(player, prefix_clan, "Unknown clan.");
  6248. goto("wait");
  6249. }
  6250. } else {
  6251. clan_id = clan.getIdFromName(arg1);
  6252. if(clan_id == null) {
  6253. clan_id = clan.getIdFromTag(arg1);
  6254. if(clan_id == null) {
  6255. msg.prefix(player, prefix_clan, "Unknown clan.");
  6256. goto("wait");
  6257. }
  6258. }
  6259. clan_name = clan.getName(clan_id);
  6260. }
  6261. clan_tag = clan.getTag(clan_id);
  6262. }
  6263. list = clan.getMembersList(clan_id);
  6264. mod_list = list.new();
  6265. members_list = list.new();
  6266. iter = list.iterator(list);
  6267. while(hasNext(iter)) {
  6268. player_uuid = next(iter);
  6269. player_name = player.getName(player_uuid);
  6270. player_id = player.getId(player_uuid);
  6271. if(player.isClanLeader(player_id)) {
  6272. leader = player_name;
  6273. } else {
  6274. if(player.isClanMod(player_id)) {
  6275. list.add(mod_list, player_name);
  6276. } else {
  6277. list.add(members_list, player_name);
  6278. }
  6279. }
  6280. }
  6281. if(list.getSize(mod_list) == 0) {
  6282. mods = "-";
  6283. } else {
  6284. mods = text.concatList(mod_list, ", ", 0, list.getSize(mod_list) - 1);
  6285. }
  6286. if(list.getSize(members_list) == 0) {
  6287. members = "-";
  6288. } else {
  6289. members = text.concatList(members_list, ", ", 0, list.getSize(members_list) - 1);
  6290. }
  6291. msg(player, text.concat("§6§lClan §r", clan_name, " (", clan_tag, " #ID:", text.number(clan_id), ")"));
  6292. msg(player, "§6Leader");
  6293. msg(player, "§r", leader);
  6294. msg(player, "§6Mods");
  6295. msg(player, "§r", mods);
  6296. msg(player, "§6Members");
  6297. msg(player, "§r", members);
  6298. msg(player, "§6Money");
  6299. msg(player, text.number(clan.getMoney(clan_id)));
  6300. goto("wait");
  6301. }
  6302. if(arg0 == "rename") {
  6303. if(!player.isInClan(player)) {
  6304. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6305. goto("wait");
  6306. }
  6307. if(!player.isClanLeader(player)) {
  6308. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6309. goto("wait");
  6310. }
  6311. if(size != 3) {
  6312. msg.prefix(player, prefix_commands, "/clan rename <name> <tag>");
  6313. goto("wait");
  6314. }
  6315. clan_name = list.getIndex(args, 1);
  6316. if(text.length(clan_name) > 20) {
  6317. msg.prefix(player, prefix_clan, "Maximum 20 letters allowed for name.");
  6318. goto("wait");
  6319. }
  6320. if(!text.onlyletters(clan_name)) {
  6321. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6322. goto("wait");
  6323. }
  6324. if(clan.isExistingName(clan_name)) {
  6325. msg.prefix(player, prefix_clan, "This name already exists.");
  6326. goto("wait");
  6327. }
  6328. clan_tag = list.getIndex(args, 2);
  6329. tag_length = text.length(clan_tag);
  6330. if(tag_length < 3 || tag_length > 4) {
  6331. msg.prefix(player, prefix_clan, "3 to 4 letters allowed for tag.");
  6332. goto("wait");
  6333. }
  6334. if(!text.onlyletters(clan_tag)) {
  6335. msg.prefix(player, prefix_clan, "Only letters are allowed.");
  6336. goto("wait");
  6337. }
  6338. if(clan.isExistingTag(clan_tag)) {
  6339. msg.prefix(player, prefix_clan, "This tag already exists.");
  6340. goto("wait");
  6341. }
  6342. clan_id = player.getClanId(player);
  6343. if(clan.getMoney(clan_id) < 64) {
  6344. msg.prefix(player, prefix_clan, "Your clan needs 64 snuvis.");
  6345. goto("wait");
  6346. }
  6347. clan.subMoney(clan_id, 64);
  6348. clan.setName(clan_id, clan_name);
  6349. clan.setTag(clan_id, clan_tag);
  6350. clan.msg(clan_id, text.concat("Clan renamed to §7", clan_name, "§r."));
  6351. //New tag for online players
  6352. clan.updateHeadNames(clan_id);
  6353. goto("wait");
  6354. }
  6355. if(arg0 == "msg") {
  6356. if(!player.isInClan(player)) {
  6357. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6358. goto("wait");
  6359. }
  6360. if(size < 2) {
  6361. msg.prefix(player, prefix_commands, "/clan msg <message>");
  6362. goto("wait");
  6363. }
  6364. clan_id = player.getClanId(player);
  6365. clan.msg(clan_id, text.concat(player.getName(player), ": ", text.concatList(args, " ", 1, size - 1)));
  6366. goto("wait");
  6367. }
  6368. if(arg0 == "mail") {
  6369. if(!player.isInClan(player)) {
  6370. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6371. goto("wait");
  6372. }
  6373. if(size < 2) {
  6374. msg.prefix(player, prefix_commands, "/clan mail <message>");
  6375. goto("wait");
  6376. }
  6377. if(player.isClanMember(player)) {
  6378. msg.prefix(player, prefix_commands, "You have no permission for this.");
  6379. goto("wait");
  6380. }
  6381. clan_id = player.getClanId(player);
  6382. clan.mail(clan_id, player.getName(player), text.concatList(args, " ", 1, size - 1));
  6383. goto("wait");
  6384. }
  6385. if(arg0 == "shout") {
  6386. if(!player.isInClan(player)) {
  6387. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6388. goto("wait");
  6389. }
  6390. if(size < 2) {
  6391. msg.prefix(player, prefix_commands, "/clan shout <message>");
  6392. goto("wait");
  6393. }
  6394. if(player.isClanMember(player)) {
  6395. msg.prefix(player, prefix_commands, "You have no permission for this.");
  6396. goto("wait");
  6397. }
  6398. clan_id = player.getClanId(player);
  6399. if(clan.getMoney(clan_id) < 10) {
  6400. msg.prefix(player, prefix_clan, "Your clan needs 10 snuvis.");
  6401. goto("wait");
  6402. }
  6403. clan.subMoney(clan_id, 10);
  6404. msg.prefix("online", prefix_clan, text.concat(clan.getTag(clan_id), ": ", text.concatList(args, " ", 1, size - 1)));
  6405. goto("wait");
  6406. }
  6407. if(arg0 == "deposit") {
  6408. if(!player.isInClan(player)) {
  6409. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6410. goto("wait");
  6411. }
  6412. if(size != 2) {
  6413. msg.prefix(player, prefix_commands, "/clan deposit <money>");
  6414. goto("wait");
  6415. }
  6416. money = list.getIndex(args, 1);
  6417. if(!isDouble(money) || money < 0) {
  6418. msg.prefix(player, prefix_clan, "Positive number expected.");
  6419. goto("wait");
  6420. }
  6421. if(!hasEnoughMoney(player, money)) {
  6422. msg.prefix(player, prefix_clan, "You can't transfer more money than you have.");
  6423. goto("wait");
  6424. }
  6425. clan_id = player.getClanId(player);
  6426. clan.addMoney(clan_id, money);
  6427. subMoney(player, money);
  6428. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r transferred §7", text.number(money), "§r snuvis."));
  6429. goto("wait");
  6430. }
  6431. if(arg0 == "party") {
  6432. counter = 0;
  6433. clan_id = player.getClanId(player);
  6434. list = clan.getMembersList(clan_id);
  6435. iter = list.iterator(list);
  6436. while(hasNext(iter)) {
  6437. p = player.get(next(iter));
  6438. if(p != null) {
  6439. temp = party.invitePlayer(player, p);
  6440. if(temp == true) {
  6441. counter++;
  6442. }
  6443. }
  6444. }
  6445. msg.prefix(player, prefix_clan, concat(text.number(counter), " online clan members invited to a party."));
  6446. goto("wait");
  6447. }
  6448. if(arg0 == "withdraw") {
  6449. if(!player.isInClan(player)) {
  6450. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6451. goto("wait");
  6452. }
  6453. if(!player.isClanLeader(player)) {
  6454. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6455. goto("wait");
  6456. }
  6457. if(size != 2) {
  6458. msg.prefix(player, prefix_commands, "/clan withdraw <money>");
  6459. goto("wait");
  6460. }
  6461. money = list.getIndex(args, 1);
  6462. if(!isDouble(money) || money < 0) {
  6463. msg.prefix(player, prefix_clan, "Positive number expected.");
  6464. goto("wait");
  6465. }
  6466. clan_id = player.getClanId(player);
  6467. clan_money = clan.getMoney(clan_id);
  6468. if(clan_money < money) {
  6469. msg.prefix(player, prefix_clan, text.concat("There are only §7", text.number(clan_money), "§r snuvis on the clan account."));
  6470. goto("wait");
  6471. }
  6472. clan.subMoney(clan_id, money);
  6473. addMoney(player, money);
  6474. msg.prefix(player, prefix_clan, text.concat("You have withdrawn §7", text.number(money), "§r snuvis."));
  6475. goto("wait");
  6476. }
  6477. if(arg0 == "leader") {
  6478. if(!player.isInClan(player)) {
  6479. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6480. goto("wait");
  6481. }
  6482. if(!player.isClanLeader(player)) {
  6483. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6484. goto("wait");
  6485. }
  6486. if(size != 2) {
  6487. msg.prefix(player, prefix_commands, "/clan leader <name>");
  6488. goto("wait");
  6489. }
  6490. p_name = list.getIndex(args, 1);
  6491. if(!checkIfEverOnline(p_name)) {
  6492. msg.prefix(player, prefix_clan, "This player has never been online.");
  6493. goto("wait");
  6494. }
  6495. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6496. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6497. goto("wait");
  6498. }
  6499. p_uuid = player.getUuid(p_name);
  6500. p_id = player.getId(p_uuid);
  6501. if(!player.isSameClan(player, p_id)) {
  6502. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6503. goto("wait");
  6504. }
  6505. player.setClanRole(p_id, "leader");
  6506. player.setClanRole(player, "mod");
  6507. clan_id = player.getClanId(player);
  6508. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan leader."));
  6509. goto("wait");
  6510. }
  6511. if(arg0 == "mod") {
  6512. if(!player.isInClan(player)) {
  6513. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6514. goto("wait");
  6515. }
  6516. if(!player.isClanLeader(player)) {
  6517. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6518. goto("wait");
  6519. }
  6520. if(size != 2) {
  6521. msg.prefix(player, prefix_commands, "/clan leader <name>");
  6522. goto("wait");
  6523. }
  6524. p_name = list.getIndex(args, 1);
  6525. if(!checkIfEverOnline(p_name)) {
  6526. msg.prefix(player, prefix_clan, "This player has never been online.");
  6527. goto("wait");
  6528. }
  6529. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6530. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6531. goto("wait");
  6532. }
  6533. p_uuid = player.getUuid(p_name);
  6534. p_id = player.getId(p_uuid);
  6535. if(!player.isSameClan(player, p_id)) {
  6536. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6537. goto("wait");
  6538. }
  6539. player.setClanRole(p_id, "mod");
  6540. clan_id = player.getClanId(player);
  6541. clan.msg(clan_id, text.concat("§7", p_name, "§r was set to clan mod."));
  6542. goto("wait");
  6543. }
  6544. if(arg0 == "degrade") {
  6545. if(!player.isInClan(player)) {
  6546. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6547. goto("wait");
  6548. }
  6549. if(!player.isClanLeader(player)) {
  6550. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6551. goto("wait");
  6552. }
  6553. if(size != 2) {
  6554. msg.prefix(player, prefix_commands, "/clan degrade <name>");
  6555. goto("wait");
  6556. }
  6557. p_name = list.getIndex(args, 1);
  6558. if(!checkIfEverOnline(p_name)) {
  6559. msg.prefix(player, prefix_clan, "This player has never been online.");
  6560. goto("wait");
  6561. }
  6562. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6563. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6564. goto("wait");
  6565. }
  6566. p_uuid = player.getUuid(p_name);
  6567. p_id = player.getId(p_uuid);
  6568. if(!player.isSameClan(player, p_id)) {
  6569. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6570. goto("wait");
  6571. }
  6572. player.setClanRole(p_id, "member");
  6573. clan_id = player.getClanId(player);
  6574. clan.msg(clan_id, text.concat("§7", p_name, "§r was degraded."));
  6575. goto("wait");
  6576. }
  6577. if(arg0 == "kick") {
  6578. if(!player.isInClan(player)) {
  6579. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6580. goto("wait");
  6581. }
  6582. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6583. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6584. goto("wait");
  6585. }
  6586. if(size != 2) {
  6587. msg.prefix(player, prefix_commands, "/clan kick <name>");
  6588. goto("wait");
  6589. }
  6590. p_name = list.getIndex(args, 1);
  6591. if(!checkIfEverOnline(p_name)) {
  6592. msg.prefix(player, prefix_clan, "This player has never been online.");
  6593. goto("wait");
  6594. }
  6595. if(text.toLowerCase(player.getName(player)) == text.toLowerCase(p_name)) {
  6596. msg.prefix(player, prefix_clan, "You can't do this for yourself.");
  6597. goto("wait");
  6598. }
  6599. p_uuid = player.getUuid(p_name);
  6600. p_id = player.getId(p_uuid);
  6601. if(!player.isSameClan(player, p_id)) {
  6602. msg.prefix(player, prefix_clan, "This player is not in your clan.");
  6603. goto("wait");
  6604. }
  6605. if(player.isClanLeader(p_id)) {
  6606. msg.prefix(player, prefix_clan, "You can't kick the leader.");
  6607. goto("wait");
  6608. }
  6609. if(player.isClanMod(player) && player.isClanMod(p_id)) {
  6610. msg.prefix(player, prefix_clan, "You can't kick another mod.");
  6611. goto("wait");
  6612. }
  6613. clan_id = player.getClanId(player);
  6614. clan.msg(clan_id, text.concat("§7", p_name, "§r got kicked out of the clan."));
  6615. clan.removeMember(clan_id, p_id);
  6616. p = read.player(p_name);
  6617. if(p_name != null) {
  6618. player.setHeadName(p);
  6619. }
  6620. goto("wait");
  6621. }
  6622. if(arg0 == "disband") {
  6623. if(!player.isInClan(player)) {
  6624. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6625. goto("wait");
  6626. }
  6627. if(!player.isClanLeader(player)) {
  6628. msg.prefix(player, prefix_clan, "You are not a clan leader.");
  6629. goto("wait");
  6630. }
  6631. clan_id = player.getClanId(player);
  6632. clan.msg(clan_id, "Clan disbanded.");
  6633. list = clan.getMembersList(clan_id);
  6634. clan.delete(clan_id);
  6635. iter = list.iterator(list);
  6636. while(hasNext(iter)) {
  6637. p = player.get(next(iter));
  6638. if(p != null) {
  6639. player.setHeadName(p);
  6640. }
  6641. }
  6642. goto("wait");
  6643. }
  6644. if(arg0 == "leave") {
  6645. if(!player.isInClan(player)) {
  6646. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6647. goto("wait");
  6648. }
  6649. if(player.isClanLeader(player)) {
  6650. msg.prefix(player, prefix_clan, "You have to set another leader first.");
  6651. goto("wait");
  6652. }
  6653. clan_id = player.getClanId(player);
  6654. clan.msg(clan_id, text.concat("§7", player.getName(player), "§r left the clan."));
  6655. clan.removeMember(clan_id, player);
  6656. player.setHeadName(player);
  6657. goto("wait");
  6658. }
  6659. if(arg0 == "list") {
  6660. table = table.new("§b", 2, 6, 4, 5);
  6661. msg(player, table.getStart(table));
  6662. msg(player, table.get(table, "§2ID", "§2Name", "§2Tag", "§2Members"));
  6663. msg(player, table.getMiddle(table));
  6664. list = clan.getIdList();
  6665. iter = list.iterator(list);
  6666. while(hasNext(iter)) {
  6667. clan_id = next(iter);
  6668. name = clan.getName(clan_id);
  6669. tag = clan.getTag(clan_id);
  6670. amount = clan.getMembersAmount(clan_id);
  6671. msg(player, table.get(table, text.number(clan_id), name, tag, text.number(amount)));
  6672. }
  6673. msg(player, table.getEnd(table));
  6674. goto("wait");
  6675. }
  6676. if(arg0 == "setspawn") {
  6677. if(!player.isInClan(player)) {
  6678. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6679. goto("wait");
  6680. }
  6681. if(!player.isClanLeader(player) && !player.isClanMod(player)) {
  6682. msg.prefix(player, prefix_clan, "You have no permission for this.");
  6683. goto("wait");
  6684. }
  6685. clan_id = player.getClanId(player);
  6686. clan.setSpawn(clan_id, entity.getLocation(player));
  6687. msg.prefix(player, prefix_clan, "New clan spawn set.");
  6688. goto("wait");
  6689. }
  6690. if(arg0 == "spawn") {
  6691. if(!player.isInClan(player)) {
  6692. msg.prefix(player, prefix_clan, "You are not in a clan.");
  6693. goto("wait");
  6694. }
  6695. clan_id = player.getClanId(player);
  6696. spawn_loc = clan.getSpawn(clan_id);
  6697. if(spawn_loc == null) {
  6698. msg.prefix(player, prefix_clan, "No clan spawn set.");
  6699. goto("wait");
  6700. }
  6701. if(!perm.has(player, "isTeam")) {
  6702. world_name = world.getName(loc.getWorld(entity.getLocation(player)));
  6703. if(isGamesWorldName(world_name)) {
  6704. msg.prefix(player, prefix_commands, "You can't teleport in this world.");
  6705. goto("wait");
  6706. }
  6707. }
  6708. player.teleport(player, spawn_loc, true);
  6709. goto("wait");
  6710. }
  6711. goto("clanhelp");
  6712. @remove_clan_invitation
  6713. list.removeIndex(clan_invitations, 0);
  6714. goto("wait");
  6715. @color
  6716. msg(player, getSpacer());
  6717. msg(player, " §0&0 §1&1 §2&2 §3&3 §4&4 §5&5 §6&6 §7&7");
  6718. msg(player, " §8&8 §9&9 §a&a §b&b §c&c §d&d §e&e §f&f");
  6719. msg(player, " &l §l(bold)");
  6720. msg(player, " &m §m(strikethrough)");
  6721. msg(player, " &n §n(underline)");
  6722. msg(player, " &o §o(italic)");
  6723. goto("wait");
  6724. @setspawn
  6725. if(size != 1) {
  6726. @setspawnhelp
  6727. msg.prefix(player, prefix_commands, "§r/setspawn ...");
  6728. msg(player, "§6 - server");
  6729. msg(player, "§6 - games");
  6730. msg(player, "§6 - creative");
  6731. msg(player, "§6 - story");
  6732. goto("wait");
  6733. }
  6734. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6735. new_spawn = text.location(entity.getLocation(player));
  6736. config = getScriptVar("server_config");
  6737. if(arg0 == "games") {
  6738. config.set(config, "gamesspawn", new_spawn);
  6739. msg.prefix(player, prefix_commands, "New spawn for gaming world set.");
  6740. } elseif(arg0 == "server") {
  6741. config.set(config, "serverspawn", new_spawn);
  6742. msg.prefix(player, prefix_commands, "New main Spawn set.");
  6743. } elseif(arg0 == "creative") {
  6744. config.set(config, "creativespawn", new_spawn);
  6745. msg.prefix(player, prefix_commands, "New spawn for creative world set.");
  6746. } elseif(arg0 == "story") {
  6747. config.set(config, "storyspawn", new_spawn);
  6748. msg.prefix(player, prefix_commands, "New spawn for story world set.");
  6749. } else {
  6750. goto("setspawnhelp");
  6751. }
  6752. config.saveAsync(config);
  6753. goto("wait");
  6754. @heal
  6755. if(size > 1) {
  6756. msg.prefix(player, prefix_commands, "/heal [player]");
  6757. goto("wait");
  6758. }
  6759. if(size == 1) {
  6760. affectedname = list.getIndex(args, 0);
  6761. affectedplayer = read.player(affectedname);
  6762. if(affectedplayer == null) {
  6763. msg.prefix(player, prefix_commands, "This player is not online.");
  6764. goto("wait");
  6765. }
  6766. if(player != affectedplayer) {
  6767. affectedname = player.getName(affectedplayer);
  6768. msg.prefix(player, prefix_commands, concat(affectedname, " was healed."));
  6769. }
  6770. }
  6771. entity.heal(affectedplayer, 50);
  6772. player.setHunger(affectedplayer, 20);
  6773. player.setSaturation(affectedplayer, 5);
  6774. entity.clearEffects(affectedplayer);
  6775. entity.setBurning(affectedplayer, 0);
  6776. msg.prefix(affectedplayer, prefix_commands, "You have been healed.");
  6777. goto("wait");
  6778. @inv
  6779. if(size == 0) {
  6780. @invhelp
  6781. msg.prefix(player, prefix_commands, "§r/inv ...");
  6782. if(perm.has(player, "inv.ignore")) {
  6783. msg(player, "§6 - ignore §rToggles inventory change on world change");
  6784. }
  6785. if(perm.has(player, "inv.see")) {
  6786. msg(player, "§6 - see <player> §rOpens a player's inventory");
  6787. }
  6788. if(perm.has(player, "inv.reload")) {
  6789. msg(player, "§6 - reload <player> §rReloads a player's inventory");
  6790. }
  6791. if(perm.has(player, "inv.saveFor")) {
  6792. msg(player, "§6 - saveFor <player> <world> §rSaves your inventory for a player");
  6793. }
  6794. if(perm.has(player, "inv.loadFrom")) {
  6795. msg(player, "§6 - loadFrom <player> <world> §rLoads a player's inventory for you");
  6796. }
  6797. goto("wait");
  6798. }
  6799. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6800. if(arg0 == "ignore") {
  6801. if(!perm.has(player, "inv.ignore")) {
  6802. perm.no(player, "inv.ignore");
  6803. goto("wait");
  6804. }
  6805. ignore = player.hasInvIgnore(player);
  6806. if(ignore == null) {
  6807. ignore = false;
  6808. }
  6809. if(ignore) {
  6810. msg.prefix(player, prefix_commands, "Your inventory will change on joining another world.");
  6811. } else {
  6812. msg.prefix(player, prefix_commands, "You'll keep your inventory on joining another world.");
  6813. }
  6814. player.invIgnore(player, !ignore);
  6815. goto("wait");
  6816. }
  6817. if(arg0 == "see") {
  6818. if(!perm.has(player, "inv.see")) {
  6819. perm.no(player, "inv.see");
  6820. goto("wait");
  6821. }
  6822. if(size < 2) {
  6823. msg.prefix(player, prefix_commands, "/inv see <player>");
  6824. goto("wait");
  6825. }
  6826. p_name = list.getIndex(args, 1);
  6827. p_uuid = player.getUuid(p_name);
  6828. if(p_uuid == null) {
  6829. msg.prefix(player, prefix_commands, "This player has never been online.");
  6830. goto("wait");
  6831. }
  6832. p = read.player(p_name);
  6833. if(p == null) {
  6834. msg.prefix(player, prefix_commands, "This player is not online.");
  6835. goto("wait");
  6836. }
  6837. inv.show(p, player);
  6838. goto("wait");
  6839. }
  6840. if(arg0 == "reload") {
  6841. if(!perm.has(player, "inv.reload")) {
  6842. perm.no(player, "inv.reload");
  6843. goto("wait");
  6844. }
  6845. if(size < 2) {
  6846. msg.prefix(player, prefix_commands, "/inv reload <player>");
  6847. goto("wait");
  6848. }
  6849. p_name = list.getIndex(args, 1);
  6850. p_uuid = player.getUuid(p_name);
  6851. if(p_uuid == null) {
  6852. msg.prefix(player, prefix_commands, "This player has never been online.");
  6853. goto("wait");
  6854. }
  6855. p = read.player(p_name);
  6856. if(p == null) {
  6857. msg.prefix(player, prefix_commands, "This player is not online.");
  6858. goto("wait");
  6859. }
  6860. world = loc.getWorld(entity.getLocation(p));
  6861. inv.loadFromPlayer(p, p, world);
  6862. msg.prefix(player, prefix_commands, "Inventory reloaded.");
  6863. goto("wait");
  6864. }
  6865. if(arg0 == "savefor") {
  6866. if(size != 1 && size != 3) {
  6867. msg.prefix(player, prefix_commands, "/inv saveFor <player> <world>");
  6868. goto("wait");
  6869. }
  6870. if(size == 1) {
  6871. for_player_or_id = player.getId(player);
  6872. world = loc.getWorld(entity.getLocation(player));
  6873. }
  6874. if(size == 3) {
  6875. if(!perm.has(player, "inv.saveFor")) {
  6876. perm.no(player, "inv.saveFor");
  6877. goto("wait");
  6878. }
  6879. p_name = list.getIndex(args, 1);
  6880. p_uuid = player.getUuid(p_name);
  6881. if(p_uuid == null) {
  6882. msg.prefix(player, prefix_commands, "This player has never been online.");
  6883. goto("wait");
  6884. }
  6885. p = read.player(p_name);
  6886. if(p != null) {
  6887. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  6888. goto("wait");
  6889. }
  6890. for_player_or_id = player.getId(p_uuid);
  6891. world_name = list.getIndex(args, 2);
  6892. world = world.get(world_name);
  6893. if(world == null) {
  6894. msg.prefix(player, prefix_world, "This world is not loaded.");
  6895. goto("wait");
  6896. }
  6897. }
  6898. inv.saveForPlayer(player, for_player_or_id, world);
  6899. msg.prefix(player, prefix_commands, "Inventory saved.");
  6900. goto("wait");
  6901. }
  6902. if(arg0 == "loadfrom") {
  6903. if(size != 1 && size != 3) {
  6904. msg.prefix(player, prefix_commands, "/inv loadFrom <player> <world>");
  6905. goto("wait");
  6906. }
  6907. if(size == 1) {
  6908. from_player_or_id = player.getId(player);
  6909. world = loc.getWorld(entity.getLocation(player));
  6910. }
  6911. if(size == 3) {
  6912. if(!perm.has(player, "inv.loadFrom")) {
  6913. perm.no(player, "inv.loadFrom");
  6914. goto("wait");
  6915. }
  6916. p_name = list.getIndex(args, 1);
  6917. p_uuid = player.getUuid(p_name);
  6918. if(p_uuid == null) {
  6919. msg.prefix(player, prefix_commands, "This player has never been online.");
  6920. goto("wait");
  6921. }
  6922. p = read.player(p_name);
  6923. if(p != null) {
  6924. msg.prefix(player, prefix_commands, "This player is online. Use /invsee");
  6925. goto("wait");
  6926. }
  6927. from_player_or_id = player.getId(p_uuid);
  6928. world_name = list.getIndex(args, 2);
  6929. world = world.get(world_name);
  6930. if(world == null) {
  6931. msg.prefix(player, prefix_world, "This world is not loaded.");
  6932. goto("wait");
  6933. }
  6934. }
  6935. inv.loadFromPlayer(player, from_player_or_id, world);
  6936. msg.prefix(player, prefix_commands, "Inventory loaded.");
  6937. goto("wait");
  6938. }
  6939. goto("wait");
  6940. @boost
  6941. entity.throw(player, 0, 5, 0);
  6942. goto("wait");
  6943. @memory
  6944. msg.prefix(player, prefix_commands, concat("Used RAM: ", text.number(usedMemory()), " / ", text.number(math.round(allocatedMemory())), " MB"));
  6945. goto("wait");
  6946. @world
  6947. if(size == 0) {
  6948. @world_syntax
  6949. msg.prefix(player, prefix_world, "/world ...");
  6950. msg(player, "§b - info <world> §rShows info about a world");
  6951. msg(player, "§b - tp <world> [player] §rTeleports a player to a world");
  6952. msg(player, "§b - list §rShows all loaded worlds");
  6953. msg(player, "§b - load <world> §rLoads a world");
  6954. msg(player, "§b - unload <world> §rUnloads a world (removes it from memory)");
  6955. msg(player, "§b - setspawn §rSets the world's spawn");
  6956. msg(player, "§b - diffi <world> <diffi> §rSets the world's difficulty");
  6957. goto("wait");
  6958. }
  6959. arg0 = text.toLowerCase(list.getIndex(args, 0));
  6960. if(arg0 == "info") {
  6961. msg(player, getSpacer());
  6962. world = loc.getWorld(entity.getLocation(player));
  6963. msg(player, "§6World: §r", world.getName(world));
  6964. msg(player, "§6Rain: §r", world.hasStorm(world));
  6965. time = world.getTime(world);
  6966. while(time >= 24000) {
  6967. time -= 24000;
  6968. }
  6969. msg(player, "§6Zeit: §r", text.number(time));
  6970. goto("wait");
  6971. }
  6972. if(arg0 == "tp") {
  6973. if(size < 2 || size > 3) {
  6974. msg.prefix(player, prefix_world, "§r/world tp <world> [player]");
  6975. goto("wait");
  6976. }
  6977. if(size >= 2) {
  6978. world_name = text.toLowerCase(list.getIndex(args, 1));
  6979. world = world.get(world_name);
  6980. if(world == null) {
  6981. msg.prefix(player, prefix_world, "This world is not loaded.");
  6982. goto("wait");
  6983. }
  6984. }
  6985. if(size == 3) {
  6986. affectedname = list.getIndex(args, 2);
  6987. affectedplayer = read.player(affectedname);
  6988. if(affectedplayer == null) {
  6989. msg.prefix(player, prefix_world, "This player is not online.");
  6990. goto("wait");
  6991. }
  6992. }
  6993. if(player.hasMinigame(affectedplayer)) {
  6994. if(size == 3) {
  6995. msg.prefix(player, prefix_commands, "This player can't be teleported now.");
  6996. } else {
  6997. msg.prefix(player, prefix_commands, "You can't teleport now.");
  6998. }
  6999. goto("wait");
  7000. }
  7001. if(player != affectedplayer) {
  7002. affectedname = player.getName(affectedplayer);
  7003. msg.prefix(player, prefix_world, concat(affectedname, " was teleported to the spawn of the world ", world_name, "."));
  7004. }
  7005. if(world_name == "games") {
  7006. loc = world.getGamesSpawn();
  7007. } elseif(world_name == "creative") {
  7008. loc = world.getCreativeSpawn();
  7009. } elseif(world_name == "story") {
  7010. loc = world.getStorySpawn();
  7011. } else {
  7012. loc = world.getSpawn(world);
  7013. }
  7014. player.teleport(affectedplayer, loc, true);
  7015. goto("wait");
  7016. }
  7017. if(arg0 == "list") {
  7018. msg.prefix(player, prefix_world, "Loaded worlds:");
  7019. worldlist = world.getAll();
  7020. for(i = 0; i < list.getSize(worldlist); i++) {
  7021. msg(player, " - ", world.getName(list.getIndex(worldlist, i)));
  7022. }
  7023. msg(player, getSpacer());
  7024. goto("wait");
  7025. }
  7026. if(arg0 == "load") {
  7027. if(size != 2) {
  7028. msg.prefix(player, prefix_world, "§r/world load <world>");
  7029. goto("wait");
  7030. }
  7031. worldname = list.getIndex(args, 1);
  7032. world = world.get(worldname);
  7033. if(world != null) {
  7034. msg.prefix(player, prefix_world, "This world is already loaded.");
  7035. goto("wait");
  7036. }
  7037. if(!world.register(worldname)) {
  7038. msg.prefix(player, prefix_world, concat("The world ", worldname, " can't be found."));
  7039. goto("wait");
  7040. }
  7041. msg.prefix(player, prefix_world, "The world was loaded.");
  7042. goto("wait");
  7043. }
  7044. if(arg0 == "unload") {
  7045. if(size != 2) {
  7046. msg.prefix(player, prefix_world, "§r/world unload <world>");
  7047. goto("wait");
  7048. }
  7049. worldname = list.getIndex(args, 1);
  7050. world = world.get(worldname);
  7051. if(world == null) {
  7052. msg.prefix(player, prefix_world, "This world is not loaded.");
  7053. goto("wait");
  7054. }
  7055. if(!world.unregister(worldname)) {
  7056. msg.prefix(player, prefix_world, "This world can't be unlaoded.");
  7057. goto("wait");
  7058. }
  7059. msg.prefix(player, prefix_world, "You unlaoded this world.");
  7060. goto("wait");
  7061. }
  7062. if(arg0 == "setspawn") {
  7063. location = entity.getLocation(player);
  7064. world.setSpawn(location, 0);
  7065. msg.prefix(player, prefix_world, concat("New spawn of the world ", world.getName(loc.getWorld(location)), " set."));
  7066. goto("wait");
  7067. }
  7068. if(arg0 == "diffi") {
  7069. if(size != 3) {
  7070. msg.prefix(player, prefix_world, "§r/world diffi <world> <diffi>");
  7071. goto("wait");
  7072. }
  7073. worldname = list.getIndex(args, 1);
  7074. world = world.get(worldname);
  7075. if(world == null) {
  7076. msg.prefix(player, prefix_world, "This world is not loaded.");
  7077. goto("wait");
  7078. }
  7079. diffi_string = list.getIndex(args, 2);
  7080. if(diffi_string != "PEACEFUL" || diffi_string != "EASY" || diffi_string != "NORMAL" || diffi_string != "HARD") {
  7081. msg.prefix(player, prefix_world, "False input.");
  7082. goto("wait");
  7083. }
  7084. world.setDiffi(world, diffi_string);
  7085. msg.prefix(player, prefix_world, "Difficulty changed.");
  7086. goto("wait");
  7087. }
  7088. goto("world_syntax");
  7089. @giveup
  7090. script_id = quest.getFromPlayer(player);
  7091. if(script_id == null) {
  7092. msg.prefix(player, prefix_quest, "You are not in a quest.");
  7093. goto("wait");
  7094. }
  7095. script = script.getFromId(script_id);
  7096. if(script == null) {
  7097. msg.prefix(player, prefix_quest, "You have no quest.");
  7098. goto("wait");
  7099. }
  7100. setScriptVar("player", player);
  7101. script.callEvent("quest_term", script);
  7102. quest.term(script, player);
  7103. msg.prefix(player, prefix_quest, "Quest termed.");
  7104. goto("wait");
  7105. @leave
  7106. set = player.getMinigameIds(player);
  7107. iter = set.iterator(set);
  7108. if(hasNext(iter)) {
  7109. script_id = next(iter);
  7110. script = script.getFromId(script_id);
  7111. if(script == null) {
  7112. snuvi.debug(concat("Player left game without existing gamescript ", set));
  7113. 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.");
  7114. player.resetMinigames(player);
  7115. entity.teleport(player, gamesspawn);
  7116. goto("wait");
  7117. }
  7118. minigame.hub(script, player);
  7119. goto("wait");
  7120. }
  7121. msg.prefix(player, "§dScript", "You are not in a minigame.");
  7122. goto("wait");
  7123. function minigame.hub(script, player) {
  7124. script.setVar(script, "player", player);
  7125. script.callEvent("player_giveup", script);
  7126. }
  7127. @jail
  7128. if(size != 1) {
  7129. msg.prefix(player, prefix_commands, "/jail <player>");
  7130. } else {
  7131. p_name = list.getIndex(args, 0);
  7132. if(!checkIfEverOnline(p_name)) {
  7133. msg.prefix(player, prefix_jail, "This player has never been online.");
  7134. goto("wait");
  7135. }
  7136. p_uuid = player.getUuid(p_name);
  7137. if(isJailed(p_uuid)) {
  7138. msg.prefix(player, prefix_jail, "This player is already jailed.");
  7139. goto("wait");
  7140. }
  7141. if(player_name == p_name) {
  7142. msg.prefix(player, prefix_jail, "Self-Jailing isn't a good idea.");
  7143. goto("wait");
  7144. }
  7145. if(!isOnline(p_name)) {
  7146. msg.prefix(player, prefix_jail, "This player is not online.");
  7147. goto("wait");
  7148. }
  7149. p = read.player(p_name);
  7150. if(perm.has(p, "jail")) {
  7151. msg.prefix(player, prefix_jail, "You can't jail this player.");
  7152. goto("wait");
  7153. }
  7154. list.add(jailed_list, p_uuid);
  7155. msg.prefix(player, prefix_jail, concat(p_name, " wurde gejailt"));
  7156. showJail(p_name);
  7157. if(!jail_loop_active) {
  7158. sgoto(5, "jailloop");
  7159. }
  7160. }
  7161. goto("wait");
  7162. @unjail
  7163. if(size != 1) {
  7164. msg.prefix(player, prefix_commands, "/unjail <player>");
  7165. } else {
  7166. p_name = list.getIndex(args, 0);
  7167. if(!checkIfEverOnline(p_name)) {
  7168. msg.prefix(player, prefix_jail, "This player has never been online.");
  7169. goto("wait");
  7170. }
  7171. p_uuid = player.getUuid(p_name);
  7172. if(!isJailed(p_uuid)) {
  7173. msg.prefix(player, prefix_jail, "This player is not jailed.");
  7174. goto("wait");
  7175. }
  7176. list.remove(jailed_list, p_uuid);
  7177. msg.prefix(player, prefix_jail, "You freed this player from jail.");
  7178. }
  7179. goto("wait");
  7180. //--------------------------------------------------
  7181. //Inv-Utils
  7182. //--------------------------------------------------
  7183. function inv.show(from_player, to_player) {
  7184. player_inv = player.getInv(from_player);
  7185. //inv = inv.new("333303000 333333333 333333333 333333333 000000000 333333333");
  7186. inv = inv.new("333303000333333333333333333333333333000000000333333333");
  7187. set.add($invseeids, inv.getId(inv));
  7188. inv.setItem(inv, 0, entity.getEquip(from_player, "head"));
  7189. inv.setItem(inv, 1, entity.getEquip(from_player, "chest"));
  7190. inv.setItem(inv, 2, entity.getEquip(from_player, "legs"));
  7191. inv.setItem(inv, 3, entity.getEquip(from_player, "feet"));
  7192. inv.setItem(inv, 4, entity.getEquip(from_player, "offhand"));
  7193. for(slot = 0; slot <= 8; slot++) {
  7194. inv.setItem(inv, slot + 32, inv.getItem(player_inv, slot));
  7195. }
  7196. for(slot = 0; slot <= 26; slot++) {
  7197. inv.setItem(inv, slot + 5, inv.getItem(player_inv, slot + 9));
  7198. }
  7199. inv.open(inv, to_player, concat("Inventory of ", player.getName(from_player)));
  7200. }
  7201. //--------------------------------------------------
  7202. //Databank-Utils
  7203. //--------------------------------------------------
  7204. function databank.isExistingTable(table) {
  7205. temp = false;
  7206. stmt = databank.prepare("SHOW TABLES");
  7207. result = databank.execute(stmt);
  7208. while(databank.next(result)) {
  7209. if(table == databank.getString(result, 1)) {
  7210. temp = true;
  7211. break;
  7212. }
  7213. }
  7214. databank.close(result);
  7215. databank.close(stmt);
  7216. return temp;
  7217. }
  7218. function databank.getTableFields(table) {
  7219. fields = list.new();
  7220. stmt = databank.prepare(concat("SHOW FIELDS FROM ", table));
  7221. result = databank.execute(stmt);
  7222. while(databank.next(result)) {
  7223. list.add(fields, databank.getString(result, 1));
  7224. }
  7225. databank.close(result);
  7226. databank.close(stmt);
  7227. return fields;
  7228. }
  7229. function databank.getTableDatatypes(table) {
  7230. stmt = databank.prepare(concat("SHOW CREATE TABLE ", table));
  7231. result = databank.execute(stmt);
  7232. if(databank.next(result)) {
  7233. temp = databank.getString(result, 2);
  7234. }
  7235. databank.close(result);
  7236. databank.close(stmt);
  7237. return temp;
  7238. }
  7239. //--------------------------------------------------
  7240. //Tipp-Utils
  7241. //--------------------------------------------------
  7242. function tipp.register(tipp_key, tipp_value) {
  7243. stmt = databank.prepare("INSERT INTO tipps (tipp_key, tipp_value) VALUES (?,?) ON DUPLICATE KEY UPDATE tipp_value = ?");
  7244. databank.setString(stmt, 1, tipp_key);
  7245. databank.setString(stmt, 2, tipp_value);
  7246. databank.setString(stmt, 3, tipp_value);
  7247. databank.workerExecute(stmt);
  7248. }
  7249. function tipp.get(tipp_key) {
  7250. tipp_value = null;
  7251. stmt = databank.prepare("SELECT tipp_value FROM tipps WHERE tipp_key = ?;");
  7252. databank.setString(stmt, 1, tipp_key);
  7253. result = databank.execute(stmt);
  7254. while(databank.next(result)) {
  7255. tipp_value = databank.getString(result, 1);
  7256. }
  7257. databank.close(result);
  7258. databank.close(stmt);
  7259. return tipp_value;
  7260. }
  7261. //--------------------------------------------------
  7262. //Warp-Utils
  7263. //--------------------------------------------------
  7264. function warp.create(warp_group, warp_name, location) {
  7265. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7266. config.set(config, "world", world.getName(loc.getWorld(location)));
  7267. config.set(config, "x", loc.getX(location));
  7268. config.set(config, "y", loc.getY(location));
  7269. config.set(config, "z", loc.getZ(location));
  7270. config.set(config, "yaw", loc.getYaw(location));
  7271. config.set(config, "pitch", loc.getPitch(location));
  7272. config.saveAsync(config);
  7273. }
  7274. function warp.exists(warp_group, warp_name) {
  7275. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7276. return config.exists(config);
  7277. }
  7278. function warp.getGroups() {
  7279. file = file.new("scripts/configs/warps");
  7280. file_list = file.getList(file);
  7281. groups_list = list.new();
  7282. iter = list.iterator(file_list);
  7283. while(hasNext(iter)) {
  7284. warp = file.getName(next(iter));
  7285. list.add(groups_list, warp);
  7286. }
  7287. return groups_list;
  7288. }
  7289. function warp.get(warp_group, warp_name) {
  7290. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7291. if(config.exists(config)) {
  7292. config.load(config);
  7293. }
  7294. world_name = text.convert(config.getString(config, "world", "null"));
  7295. if(world_name == null) {
  7296. return null;
  7297. }
  7298. world = world.get(world_name);
  7299. x = config.getDouble(config, "x", 0);
  7300. y = config.getDouble(config, "y", 100);
  7301. z = config.getDouble(config, "z", 0);
  7302. yaw = config.getDouble(config, "yaw", 0);
  7303. pitch = config.getDouble(config, "pitch", 0);
  7304. location = loc.new(world, x, y, z, yaw, pitch);
  7305. return location;
  7306. }
  7307. function warp.delete(warp_group, warp_name) {
  7308. config = config.new(concat("scripts/configs/warps/", warp_group), warp_name);
  7309. if(!config.exists(config)) {
  7310. return false;
  7311. }
  7312. config.delete(config);
  7313. return true;
  7314. }
  7315. function warp.getList(warp_group) {
  7316. file = file.new(concat("scripts/configs/warps/", warp_group));
  7317. warps_list = list.new();
  7318. if(file.exists(file)) {
  7319. file_list = file.getList(file);
  7320. iter = list.iterator(file_list);
  7321. while(hasNext(iter)) {
  7322. warp = file.getName(next(iter));
  7323. warp = text.replace(warp, ".snuvic", "");
  7324. list.add(warps_list, warp);
  7325. }
  7326. }
  7327. return warps_list;
  7328. }
  7329. //--------------------------------------------------
  7330. //Home-Utils
  7331. //--------------------------------------------------
  7332. function home.set(player_id, home_name, location) {
  7333. stmt = databank.prepare("INSERT INTO homes (player_id, name, world_name, x, y, z, yaw, pitch) VALUES (?,?,?,?,?,?,?,?);");
  7334. databank.setInt(stmt, 1, player_id);
  7335. databank.setString(stmt, 2, home_name);
  7336. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  7337. databank.setInt(stmt, 4, loc.getX(location));
  7338. databank.setInt(stmt, 5, loc.getY(location));
  7339. databank.setInt(stmt, 6, loc.getZ(location));
  7340. databank.setInt(stmt, 7, loc.getYaw(location));
  7341. databank.setInt(stmt, 8, loc.getPitch(location));
  7342. databank.workerExecute(stmt);
  7343. }
  7344. function home.delete(player_id, home_name) {
  7345. stmt = databank.prepare("DELETE FROM homes WHERE player_id = ? AND name = ?;");
  7346. databank.setInt(stmt, 1, player_id);
  7347. databank.setString(stmt, 2, home_name);
  7348. databank.workerExecute(stmt);
  7349. }
  7350. function home.getLocation(player_id, home_name) {
  7351. stmt = databank.prepare("SELECT world_name, x, y, z, yaw, pitch FROM homes WHERE player_id = ? AND name = ?;");
  7352. databank.setInt(stmt, 1, player_id);
  7353. databank.setString(stmt, 2, home_name);
  7354. result = databank.execute(stmt);
  7355. if(databank.next(result)) {
  7356. world = world.get(databank.getString(result, 1));
  7357. if(world == null) {
  7358. return null;
  7359. }
  7360. x = databank.getDouble(result, 2);
  7361. y = databank.getDouble(result, 3);
  7362. z = databank.getDouble(result, 4);
  7363. yaw = databank.getDouble(result, 5);
  7364. pitch = databank.getDouble(result, 6);
  7365. location = loc.new(world, x, y, z, yaw, pitch);
  7366. }
  7367. databank.close(result);
  7368. databank.close(stmt);
  7369. return location;
  7370. }
  7371. function home.exists(player_id, home_name) {
  7372. stmt = databank.prepare("SELECT player_id FROM homes WHERE player_id = ? AND name = ?;");
  7373. databank.setInt(stmt, 1, player_id);
  7374. databank.setString(stmt, 2, home_name);
  7375. result = databank.execute(stmt);
  7376. if(databank.next(result)) {
  7377. temp = true;
  7378. } else {
  7379. temp = false;
  7380. }
  7381. databank.close(result);
  7382. databank.close(stmt);
  7383. return temp;
  7384. }
  7385. function home.getList(player_id) {
  7386. homes_list = list.new();
  7387. stmt = databank.prepare("SELECT name FROM homes WHERE player_id = ?;");
  7388. databank.setInt(stmt, 1, player_id);
  7389. result = databank.execute(stmt);
  7390. while(databank.next(result)) {
  7391. list.add(homes_list, databank.getString(result, 1));
  7392. }
  7393. databank.close(result);
  7394. databank.close(stmt);
  7395. return homes_list;
  7396. }
  7397. function hasTpaRequest(player_uuid, aim_uuid) {
  7398. for(i = 0; i < list.getSize($tpa_request); i++) {
  7399. array = list.getIndex($tpa_request, i);
  7400. if(array[0] == player_uuid && array[1] == aim_uuid) {
  7401. list.removeIndex($tpa_request, i);
  7402. return true;
  7403. }
  7404. }
  7405. return false;
  7406. }
  7407. function addTpaRequest(player_uuid, aim_uuid) {
  7408. array = array.new(2);
  7409. array[0] = player_uuid;
  7410. array[1] = aim_uuid;
  7411. list.add($tpa_request, array);
  7412. }
  7413. function setCommandHelps() {
  7414. command.clearHelp();
  7415. command.clearIgnored();
  7416. command.addIgnored("teleport");
  7417. command.addIgnored("time");
  7418. command.addIgnored("help");
  7419. command.addIgnored("ban");
  7420. command.addIgnored("kick");
  7421. command.addIgnored("kill");
  7422. command.addIgnored("gamemode");
  7423. addCommandHelp("silentjoin");
  7424. addCommandHelp("nowb");
  7425. addCommandHelp("coords");
  7426. addCommandHelp("ping");
  7427. addCommandHelp("rank");
  7428. addCommandHelp("back");
  7429. addCommandHelp("boost");
  7430. addCommandHelp("bug");
  7431. addCommandHelp("report");
  7432. addCommandHelp("skills");
  7433. addCommandHelp("startgame");
  7434. addCommandHelp("top");
  7435. addCommandHelp("ride");
  7436. addCommandHelp("repair");
  7437. addCommandHelp("live");
  7438. addCommandHelp("hack");
  7439. addCommandHelpChildPlayer("mute");
  7440. addCommandHelpChildPlayer("unmute");
  7441. addCommandHelpChildPlayer("tpa");
  7442. addCommandHelpChildPlayer("tpaccept");
  7443. addCommandHelpChildPlayer("tpahere");
  7444. addCommandHelpChildPlayer("tpaccepthere");
  7445. addCommandHelpChildPlayer("head");
  7446. addCommandHelpChildPlayer("seen");
  7447. addCommandHelpChildPlayer("heal");
  7448. addCommandHelpChildPlayer("feed");
  7449. help = addCommandHelp("lightning");
  7450. addCommandAlias(help, "thor", "lightning");
  7451. help = addCommandHelp("color");
  7452. addCommandAlias(help, "colour", "color");
  7453. help = addCommandHelp("iteminfo");
  7454. addCommandAlias(help, "itemdb", "iteminfo");
  7455. help = addCommandHelp("head");
  7456. addCommandAlias(help, "skull", "head");
  7457. help = addCommandHelp("memory");
  7458. addCommandAlias(help, "ram", "memory");
  7459. help = addCommandHelp("afk");
  7460. addCommandAlias(help, "afklo", "afk");
  7461. help = addCommandHelp("leave");
  7462. addCommandAlias(help, "l", "leave");
  7463. addCommandAlias(help, "hub", "leave");
  7464. help = addCommandHelp("giveup");
  7465. addCommandAlias(help, "fuckit", "giveup");
  7466. help = command.newHelp("vanish", "vanish");
  7467. //vanish [on] [player]
  7468. helpArg0 = command.newHelpLiteral("on");
  7469. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7470. command.addHelpChild(help, helpArg0);
  7471. //vanish [off] [player]
  7472. helpArg0 = command.newHelpLiteral("off");
  7473. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7474. command.addHelpChild(help, helpArg0);
  7475. command.addHelp(help);
  7476. addCommandAlias(help, "v", "vanish");
  7477. help = command.newHelp("start", "start");
  7478. command.addHelpChild(help, command.newHelpLiteral("ai"));
  7479. command.addHelpChild(help, command.newHelpLiteral("chat"));
  7480. command.addHelpChild(help, command.newHelpLiteral("commands"));
  7481. command.addHelpChild(help, command.newHelpLiteral("creative"));
  7482. command.addHelpChild(help, command.newHelpLiteral("damage"));
  7483. command.addHelpChild(help, command.newHelpLiteral("doors"));
  7484. command.addHelpChild(help, command.newHelpLiteral("harvest"));
  7485. command.addHelpChild(help, command.newHelpLiteral("herobrine"));
  7486. command.addHelpChild(help, command.newHelpLiteral("games"));
  7487. command.addHelpChild(help, command.newHelpLiteral("mails"));
  7488. command.addHelpChild(help, command.newHelpLiteral("perms"));
  7489. command.addHelpChild(help, command.newHelpLiteral("pumpkin"));
  7490. command.addHelpChild(help, command.newHelpLiteral("scheduler"));
  7491. command.addHelpChild(help, command.newHelpLiteral("shop"));
  7492. command.addHelpChild(help, command.newHelpLiteral("sitting"));
  7493. command.addHelpChild(help, command.newHelpLiteral("stats"));
  7494. command.addHelpChild(help, command.newHelpLiteral("story"));
  7495. command.addHelpChild(help, command.newHelpLiteral("survival"));
  7496. command.addHelpChild(help, command.newHelpLiteral("ticket"));
  7497. command.addHelpChild(help, command.newHelpLiteral("voxel"));
  7498. command.addHelp(help);
  7499. help = command.newHelp("gamemode", "gamemode");
  7500. helpArg0 = command.newHelpLiteral("adventure");
  7501. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7502. command.addHelpChild(help, helpArg0);
  7503. helpArg0 = command.newHelpLiteral("creative");
  7504. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7505. command.addHelpChild(help, helpArg0);
  7506. helpArg0 = command.newHelpLiteral("spectator");
  7507. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7508. command.addHelpChild(help, helpArg0);
  7509. helpArg0 = command.newHelpLiteral("survival");
  7510. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7511. command.addHelpChild(help, helpArg0);
  7512. helpArg0 = command.newHelpInt("0-3", 0, 3);
  7513. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "gamemode.other"));
  7514. command.addHelpChild(help, helpArg0);
  7515. command.addHelp(help);
  7516. addCommandAlias(help, "gm", "gamemode");
  7517. help = command.newHelp("databank", "databank");
  7518. //databank showtables
  7519. command.addHelpChild(help, command.newHelpLiteral("showtables"));
  7520. //databank showfields <table>
  7521. helpArg0 = command.newHelpLiteral("showfields");
  7522. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  7523. command.addHelpChild(help, helpArg0);
  7524. //databank showdataypes <table>
  7525. helpArg0 = command.newHelpLiteral("showdataypes");
  7526. command.addHelpChild(helpArg0, command.newHelpString("table", false));
  7527. command.addHelpChild(help, helpArg0);
  7528. command.addHelp(help);
  7529. help = command.newHelp("copyisland", "copyisland");
  7530. //copyisland copy/paste
  7531. command.addHelpChild(help, command.newHelpLiteral("copy"));
  7532. command.addHelpChild(help, command.newHelpLiteral("paste"));
  7533. //copyisland pos1/pos2
  7534. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  7535. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  7536. command.addHelp(help);
  7537. help = command.newHelp("fly", "fly");
  7538. helpArg0 = command.newHelpSpecial("Player", "player", "fly.other");
  7539. command.addHelpChild(helpArg0, command.newHelpLiteral("on"));
  7540. command.addHelpChild(helpArg0, command.newHelpLiteral("off"));
  7541. command.addHelpChild(help, helpArg0);
  7542. command.addHelp(help);
  7543. help = command.newHelp("allsounds", "allsounds");
  7544. command.addHelpChild(help, command.newHelpLiteral("start"));
  7545. command.addHelpChild(help, command.newHelpLiteral("stop"));
  7546. command.addHelp(help);
  7547. help = command.newHelp("spawn", "spawn");
  7548. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7549. command.addHelp(help);
  7550. help = command.newHelp("games", "games");
  7551. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7552. command.addHelp(help);
  7553. help = command.newHelp("story", "story");
  7554. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "teleport.other"));
  7555. command.addHelp(help);
  7556. help = command.newHelp("ass", "ass");
  7557. //ass set <name>
  7558. helpArg0 = command.newHelpLiteral("set");
  7559. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7560. command.addHelpChild(help, helpArg0);
  7561. //ass rename <name>
  7562. helpArg0 = command.newHelpLiteral("rename");
  7563. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7564. command.addHelpChild(help, helpArg0);
  7565. //ass remove <radius>
  7566. helpArg0 = command.newHelpLiteral("remove");
  7567. command.addHelpChild(helpArg0, command.newHelpInt("radius", 0, 30));
  7568. command.addHelpChild(help, helpArg0);
  7569. command.addHelp(help);
  7570. help = command.newHelp("tppos", "tppos");
  7571. helpArg0 = command.newHelpInt("x", -16000, 16000);
  7572. helpArg1 = command.newHelpInt("y", 0, 1000);
  7573. helpArg2 = command.newHelpInt("z", -16000, 16000);
  7574. helpArg3 = command.newHelpString("world", false);
  7575. helpArg4 = command.newHelpSpecial("Player", "player");
  7576. command.addHelpChild(helpArg3, helpArg4);
  7577. command.addHelpChild(helpArg2, helpArg3);
  7578. command.addHelpChild(helpArg1, helpArg2);
  7579. command.addHelpChild(helpArg0, helpArg1);
  7580. command.addHelpChild(help, helpArg0);
  7581. command.addHelp(help);
  7582. help = command.newHelp("stats", "stats");
  7583. addStatsGameHelp(help, "BedWars");
  7584. addStatsGameHelp(help, "RageMode");
  7585. addStatsGameHelp(help, "Jump'n'Run");
  7586. addStatsGameHelp(help, "Rebuild");
  7587. addStatsGameHelp(help, "FastBridge");
  7588. addStatsGameHelp(help, "SnowGame");
  7589. addStatsGameHelp(help, "TJR");
  7590. addStatsGameHelp(help, "IJR");
  7591. addStatsGameHelp(help, "Letters");
  7592. addStatsGameHelp(help, "Sammelfieber");
  7593. addStatsGameHelp(help, "Buttons");
  7594. addStatsGameHelp(help, "HideAndSeek");
  7595. addStatsGameHelp(help, "Inverting");
  7596. addStatsGameHelp(help, "Spleef");
  7597. addStatsGameHelp(help, "Knockfight");
  7598. addStatsGameHelp(help, "Leapfrog");
  7599. addStatsGameHelp(help, "Parcour");
  7600. addStatsGameHelp(help, "Halma");
  7601. addStatsGameHelp(help, "ShoppingChaos");
  7602. addStatsGameHelp(help, "MengerRun");
  7603. command.addHelp(help);
  7604. help = command.newHelp("setspawn", "setspawn");
  7605. command.addHelpChild(help, command.newHelpLiteral("server"));
  7606. command.addHelpChild(help, command.newHelpLiteral("games"));
  7607. command.addHelpChild(help, command.newHelpLiteral("creative"));
  7608. command.addHelpChild(help, command.newHelpLiteral("story"));
  7609. command.addHelp(help);
  7610. help = command.newHelp("datatools", "datatools");
  7611. //datatools hide <name>
  7612. helpArg0 = command.newHelpLiteral("hide");
  7613. command.addHelpChild(helpArg0, command.newHelpLiteral("enchantments"));
  7614. command.addHelpChild(helpArg0, command.newHelpLiteral("attributes"));
  7615. command.addHelpChild(helpArg0, command.newHelpLiteral("unbreakable"));
  7616. command.addHelpChild(helpArg0, command.newHelpLiteral("destroys"));
  7617. command.addHelpChild(helpArg0, command.newHelpLiteral("placed_on"));
  7618. command.addHelpChild(helpArg0, command.newHelpLiteral("potion_effects"));
  7619. command.addHelpChild(help, helpArg0);
  7620. //datatools attribute <attribute> <slot> <double> <op>
  7621. helpArg0 = command.newHelpLiteral("attribute");
  7622. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR"));
  7623. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ARMOR_TOUGHNESS"));
  7624. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_DAMAGE"));
  7625. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("KNOCKBACK_RESISTANCE"));
  7626. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MAX_HEALTH"));
  7627. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("MOVEMENT_SPEED"));
  7628. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("ATTACK_SPEED"));
  7629. command.addHelpChild(helpArg0, addDtAttributeAttributHelp("LUCK"));
  7630. command.addHelpChild(help, helpArg0);
  7631. //datatools hide-entity
  7632. command.addHelpChild(help, command.newHelpLiteral("hide-entity"));
  7633. //datatools show-entity
  7634. command.addHelpChild(help, command.newHelpLiteral("show-entity"));
  7635. //datatools name-entity <name>
  7636. helpArg0 = command.newHelpLiteral("name-entity");
  7637. helpArg1 = command.newHelpString("name", true);
  7638. command.addHelpChild(helpArg0, helpArg1);
  7639. command.addHelpChild(help, helpArg0);
  7640. //datatools name-visibility <name>
  7641. helpArg0 = command.newHelpLiteral("name-visibility");
  7642. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  7643. command.addHelpChild(help, helpArg0);
  7644. //datatools name-item <name>
  7645. helpArg0 = command.newHelpLiteral("name-item");
  7646. helpArg1 = command.newHelpString("name", true);
  7647. command.addHelpChild(helpArg0, helpArg1);
  7648. command.addHelpChild(help, helpArg0);
  7649. //datatools lore-item <line> <lore>
  7650. helpArg0 = command.newHelpLiteral("lore-item");
  7651. helpArg1 = command.newHelpInt("line", 0, 1000);
  7652. helpArg2 = command.newHelpString("lore", true);
  7653. command.addHelpChild(helpArg1, helpArg2);
  7654. command.addHelpChild(helpArg0, helpArg1);
  7655. command.addHelpChild(help, helpArg0);
  7656. command.addHelp(help);
  7657. addCommandAlias(help, "dt", "datatools");
  7658. help = command.newHelp("voxel", "voxel");
  7659. command.addHelpChild(help, command.newHelpInt("radius", 1, 5));
  7660. command.addHelpChild(help, command.newHelpLiteral("block"));
  7661. command.addHelp(help);
  7662. help = command.newHelp("help", "help");
  7663. command.addHelpChild(help, command.newHelpInt("page", 1, 100));
  7664. command.addHelp(help);
  7665. addCommandAlias(help, "mimimi", "help");
  7666. help = command.newHelp("suicide", "suicide");
  7667. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "kill.other"));
  7668. command.addHelp(help);
  7669. help = command.newHelp("tempfly", "tempfly");
  7670. helpArg0 = command.newHelpSpecial("Player", "player");
  7671. command.addHelpChild(helpArg0, command.newHelpInt("seconds", 1, 10000));
  7672. command.addHelpChild(help, helpArg0);
  7673. command.addHelp(help);
  7674. help = command.newHelp("tempban", "tempban");
  7675. helpArg0 = command.newHelpSpecial("Player", "player");
  7676. helpArg1 = command.newHelpInt("days", 1, 100);
  7677. helpArg2 = command.newHelpInt("hours", 1, 100);
  7678. helpArg3 = command.newHelpInt("minutes", 1, 100);
  7679. command.addHelpChild(helpArg3, command.newHelpString("reason", true));
  7680. command.addHelpChild(helpArg2, helpArg3);
  7681. command.addHelpChild(helpArg1, helpArg2);
  7682. command.addHelpChild(helpArg0, helpArg1);
  7683. command.addHelpChild(help, helpArg0);
  7684. command.addHelp(help);
  7685. help = command.newHelp("ban", "ban");
  7686. helpArg0 = command.newHelpSpecial("Player", "player");
  7687. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7688. command.addHelpChild(help, helpArg0);
  7689. command.addHelp(help);
  7690. help = command.newHelp("silentban", "silentban");
  7691. helpArg0 = command.newHelpSpecial("Player", "player");
  7692. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7693. command.addHelpChild(help, helpArg0);
  7694. command.addHelp(help);
  7695. help = command.newHelp("kick", "kick");
  7696. helpArg0 = command.newHelpSpecial("Player", "player");
  7697. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7698. command.addHelpChild(help, helpArg0);
  7699. command.addHelp(help);
  7700. help = command.newHelp("silentkick", "silentkick");
  7701. helpArg0 = command.newHelpSpecial("Player", "player");
  7702. command.addHelpChild(helpArg0, command.newHelpString("reason", true));
  7703. command.addHelpChild(help, helpArg0);
  7704. command.addHelp(help);
  7705. help = command.newHelp("time", "time");
  7706. //time set <time>
  7707. helpArg0 = command.newHelpLiteral("set");
  7708. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  7709. command.addHelpChild(help, helpArg0);
  7710. //time add <time>
  7711. helpArg0 = command.newHelpLiteral("add");
  7712. command.addHelpChild(helpArg0, command.newHelpInt("time", 0, 100000));
  7713. command.addHelpChild(help, helpArg0);
  7714. //time day / noon / night / midnight
  7715. command.addHelpChild(help, command.newHelpLiteral("day"));
  7716. command.addHelpChild(help, command.newHelpLiteral("noon"));
  7717. command.addHelpChild(help, command.newHelpLiteral("night"));
  7718. command.addHelpChild(help, command.newHelpLiteral("midnight"));
  7719. command.addHelp(help);
  7720. help = command.newHelp("enderchest", "enderchest");
  7721. //enderchest [player] <from-player>
  7722. helpArg0 = command.newHelpSpecial("Player", "player");
  7723. command.addHelpChild(helpArg0, command.newHelpString("from-player", false));
  7724. command.addHelpChild(help, helpArg0);
  7725. //enderchest [player] <from-player>
  7726. command.addHelpChild(help, command.newHelpString("from-player", false));
  7727. command.addHelp(help);
  7728. help = command.newHelp("nickname", "nickname");
  7729. command.addHelpChild(help, command.newHelpString("name", true));
  7730. command.addHelpChild(help, command.newHelpLiteral("remove"));
  7731. command.addHelp(help);
  7732. help = command.newHelp("perm", "perm");
  7733. //perm give <player> <perm>
  7734. helpArg0 = command.newHelpLiteral("give");
  7735. helpArg1 = command.newHelpSpecial("Player", "player");
  7736. command.addHelpChild(helpArg1, command.newHelpLiteral("admin"));
  7737. command.addHelpChild(helpArg1, command.newHelpLiteral("mod"));
  7738. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  7739. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  7740. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  7741. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  7742. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  7743. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  7744. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  7745. command.addHelpChild(helpArg1, command.newHelpLiteral("streamer"));
  7746. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  7747. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass"));
  7748. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  7749. command.addHelpChild(helpArg0, helpArg1);
  7750. command.addHelpChild(help, helpArg0);
  7751. //perm remove <player> <perm>
  7752. helpArg0 = command.newHelpLiteral("remove");
  7753. helpArg1 = command.newHelpSpecial("Player", "player");
  7754. command.addHelpChild(helpArg1, command.newHelpLiteral("admin"));
  7755. command.addHelpChild(helpArg1, command.newHelpLiteral("mod"));
  7756. command.addHelpChild(helpArg1, command.newHelpLiteral("supporter"));
  7757. command.addHelpChild(helpArg1, command.newHelpLiteral("builder"));
  7758. command.addHelpChild(helpArg1, command.newHelpLiteral("worldedit"));
  7759. command.addHelpChild(helpArg1, command.newHelpLiteral("teleport"));
  7760. command.addHelpChild(helpArg1, command.newHelpLiteral("vip"));
  7761. command.addHelpChild(helpArg1, command.newHelpLiteral("dev"));
  7762. command.addHelpChild(helpArg1, command.newHelpLiteral("yt"));
  7763. command.addHelpChild(helpArg1, command.newHelpLiteral("sponsor"));
  7764. command.addHelpChild(helpArg1, command.newHelpLiteral("bypass"));
  7765. command.addHelpChild(helpArg1, command.newHelpLiteral("creative"));
  7766. command.addHelpChild(helpArg0, helpArg1);
  7767. command.addHelpChild(help, helpArg0);
  7768. //perm removeall <player>
  7769. helpArg0 = command.newHelpLiteral("removeall");
  7770. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7771. command.addHelpChild(help, helpArg0);
  7772. //perm list <player>
  7773. helpArg0 = command.newHelpLiteral("list");
  7774. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  7775. command.addHelpChild(help, helpArg0);
  7776. //perm toggle
  7777. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  7778. command.addHelp(help);
  7779. help = command.newHelp("script", "script");
  7780. //script start <scripts>
  7781. helpArg0 = command.newHelpLiteral("start");
  7782. command.addHelpChild(helpArg0, command.newHelpString("scrips...", true));
  7783. command.addHelpChild(help, helpArg0);
  7784. //script see
  7785. command.addHelpChild(help, command.newHelpLiteral("see"));
  7786. //script term
  7787. helpArg0 = command.newHelpLiteral("term");
  7788. command.addHelpChild(helpArg0, command.newHelpLiteral("all"));
  7789. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 1000000));
  7790. command.addHelpChild(help, helpArg0);
  7791. command.addHelp(help);
  7792. addCommandAlias(help, "s", "script");
  7793. help = command.newHelp("home", "home");
  7794. //home set
  7795. helpArg0 = command.newHelpLiteral("set");
  7796. command.addHelpChild(helpArg0, command.newHelpString("home", false));
  7797. command.addHelpChild(help, helpArg0);
  7798. //home delete
  7799. helpArg0 = command.newHelpLiteral("delete");
  7800. command.addHelpChild(helpArg0, command.newHelpString("home", false));
  7801. command.addHelpChild(help, helpArg0);
  7802. //home list
  7803. helpArg0 = command.newHelpLiteral("list");
  7804. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  7805. command.addHelpChild(help, helpArg0);
  7806. //home <name>
  7807. helpArg0 = command.newHelpString("home", false);
  7808. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "home.other"));
  7809. command.addHelpChild(help, helpArg0);
  7810. command.addHelp(help);
  7811. help = command.newHelp("plot", "plot");
  7812. //plot info
  7813. command.addHelpChild(help, command.newHelpLiteral("info"));
  7814. command.addHelpChild(help, command.newHelpLiteral("i"));
  7815. //plot pos1/pos2
  7816. command.addHelpChild(help, command.newHelpLiteral("pos1"));
  7817. command.addHelpChild(help, command.newHelpLiteral("pos2"));
  7818. //plot create/create3D
  7819. command.addHelpChild(help, command.newHelpLiteral("create"));
  7820. command.addHelpChild(help, command.newHelpLiteral("create3D"));
  7821. //plot remove
  7822. helpArg0 = command.newHelpLiteral("remove");
  7823. command.addHelpChild(helpArg0, command.newHelpInt("id", 0, 10000));
  7824. command.addHelpChild(help, helpArg0);
  7825. //plot name <name>
  7826. helpArg0 = command.newHelpLiteral("name");
  7827. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7828. helpArg1 = command.newHelpInt("id", 0, 10000);
  7829. command.addHelpChild(helpArg1, command.newHelpString("name", true));
  7830. command.addHelpChild(helpArg0, helpArg1);
  7831. command.addHelpChild(help, helpArg0);
  7832. //plot share <name>
  7833. helpArg0 = command.newHelpLiteral("share");
  7834. helpArg1 = command.newHelpSpecial("Player", "player");
  7835. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7836. command.addHelpChild(helpArg0, helpArg1);
  7837. command.addHelpChild(help, helpArg0);
  7838. //plot kick <name>
  7839. helpArg0 = command.newHelpLiteral("kick");
  7840. helpArg1 = command.newHelpSpecial("Player", "player");
  7841. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7842. command.addHelpChild(helpArg0, helpArg1);
  7843. command.addHelpChild(help, helpArg0);
  7844. //plot raise
  7845. command.addHelpChild(help, command.newHelpLiteral("raise"));
  7846. //plot leader <name>
  7847. helpArg0 = command.newHelpLiteral("leader");
  7848. helpArg1 = command.newHelpSpecial("Player", "player");
  7849. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7850. command.addHelpChild(helpArg0, helpArg1);
  7851. command.addHelpChild(help, helpArg0);
  7852. //plot mod <name>
  7853. helpArg0 = command.newHelpLiteral("mod");
  7854. helpArg1 = command.newHelpSpecial("Player", "player");
  7855. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7856. command.addHelpChild(helpArg0, helpArg1);
  7857. command.addHelpChild(help, helpArg0);
  7858. //plot chest <name>
  7859. helpArg0 = command.newHelpLiteral("chest");
  7860. helpArg1 = command.newHelpSpecial("Player", "player");
  7861. command.addHelpChild(helpArg1, command.newHelpInt("id", 0, 10000));
  7862. command.addHelpChild(helpArg0, helpArg1);
  7863. command.addHelpChild(help, helpArg0);
  7864. //plot sell <price>
  7865. helpArg0 = command.newHelpLiteral("sell");
  7866. command.addHelpChild(helpArg0, command.newHelpInt("price", 1, 10000));
  7867. command.addHelpChild(help, helpArg0);
  7868. //plot moreinfo
  7869. command.addHelpChild(help, command.newHelpLiteral("moreinfo", "plot.moreinfo"));
  7870. //plot listall
  7871. command.addHelpChild(help, command.newHelpLiteral("listall"));
  7872. //plot flags <int> <boolean>
  7873. helpArg0 = command.newHelpLiteral("flags");
  7874. helpArg1 = command.newHelpInt("int", 1, 1000);
  7875. command.addHelpChild(helpArg1, command.newHelpBool("wusi"));
  7876. command.addHelpChild(helpArg0, helpArg1);
  7877. command.addHelpChild(help, helpArg0);
  7878. //plot expand <anzahl>
  7879. helpArg0 = command.newHelpLiteral("expand");
  7880. helpArg1 = command.newHelpInt("anzahl", 1, 1000);
  7881. command.addHelpChild(helpArg1, command.newHelpInt("id", 1, 10000));
  7882. command.addHelpChild(helpArg0, helpArg1);
  7883. command.addHelpChild(help, helpArg0);
  7884. command.addHelp(help);
  7885. addCommandAlias(help, "p", "plot");
  7886. help = command.newHelp("warp", "warp");
  7887. //warp set [group] <name>
  7888. helpArg0 = command.newHelpLiteral("set", "warp.create");
  7889. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  7890. helpArg1 = command.newHelpString("group", false, "warp.create");
  7891. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  7892. command.addHelpChild(helpArg0, helpArg1);
  7893. command.addHelpChild(help, helpArg0);
  7894. //warp delete [group] <name>
  7895. helpArg0 = command.newHelpLiteral("delete", "warp.create");
  7896. command.addHelpChild(helpArg0, command.newHelpString("name", false, "warp.create"));
  7897. helpArg1 = command.newHelpString("group", false, "warp.create");
  7898. command.addHelpChild(helpArg1, command.newHelpString("name", false, "warp.create"));
  7899. command.addHelpChild(helpArg0, helpArg1);
  7900. command.addHelpChild(help, helpArg0);
  7901. //warp groups
  7902. command.addHelpChild(help, command.newHelpLiteral("groups", "warp.create"));
  7903. //warp list [group]
  7904. helpArg0 = command.newHelpLiteral("list");
  7905. command.addHelpChild(helpArg0, command.newHelpString("group", false, "warp.create"));
  7906. command.addHelpChild(help, helpArg0);
  7907. //warp [group] <name>
  7908. helpArg0 = command.newHelpString("name", false);
  7909. command.addHelpChild(help, helpArg0);
  7910. helpArg0 = command.newHelpString("group", false, "warp.create");
  7911. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  7912. command.addHelpChild(help, helpArg0);
  7913. command.addHelp(help);
  7914. help = command.newHelp("teleport", "teleport");
  7915. helpArg0 = command.newHelpSpecial("Player", "player");
  7916. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "to-player", "teleport.other"));
  7917. command.addHelpChild(help, helpArg0);
  7918. command.addHelp(help);
  7919. addCommandAlias(help, "tp", "teleport");
  7920. help = command.newHelp("lastseen", "lastseen");
  7921. command.addHelpChild(help, command.newHelpInt("amount", 1, 100));
  7922. command.addHelp(help);
  7923. help = command.newHelp("human", "human");
  7924. //human spawn
  7925. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  7926. //human set <name>
  7927. helpArg0 = command.newHelpLiteral("set");
  7928. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  7929. command.addHelpChild(help, helpArg0);
  7930. //human setuuid <uuid>
  7931. helpArg0 = command.newHelpLiteral("setuuid");
  7932. command.addHelpChild(helpArg0, command.newHelpString("uuid", false));
  7933. command.addHelpChild(help, helpArg0);
  7934. //human name
  7935. helpArg0 = command.newHelpLiteral("name");
  7936. command.addHelpChild(helpArg0, command.newHelpString("name", true));
  7937. command.addHelpChild(help, helpArg0);
  7938. //human kill
  7939. command.addHelpChild(help, command.newHelpLiteral("kill"));
  7940. //human size <scale>
  7941. helpArg0 = command.newHelpLiteral("size");
  7942. command.addHelpChild(helpArg0, command.newHelpInt("scale", 0, 100));
  7943. command.addHelpChild(help, helpArg0);
  7944. //human steve
  7945. command.addHelpChild(help, command.newHelpLiteral("steve"));
  7946. //human alex
  7947. command.addHelpChild(help, command.newHelpLiteral("alex"));
  7948. //human statue
  7949. helpArg0 = command.newHelpLiteral("statue");
  7950. command.addHelpChild(helpArg0, command.newHelpBool("wusi"));
  7951. command.addHelpChild(help, helpArg0);
  7952. command.addHelp(help);
  7953. help = command.newHelp("mail", "mail");
  7954. //mail <player> <message>
  7955. helpArg0 = command.newHelpSpecial("Player", "player");
  7956. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  7957. command.addHelpChild(help, helpArg0);
  7958. //mail new
  7959. command.addHelpChild(help, command.newHelpLiteral("new"));
  7960. //mail inbox
  7961. command.addHelpChild(help, command.newHelpLiteral("inbox"));
  7962. //mail outbox
  7963. command.addHelpChild(help, command.newHelpLiteral("outbox"));
  7964. //mail reset
  7965. command.addHelpChild(help, command.newHelpLiteral("reset", "mail.reset"));
  7966. command.addHelp(help);
  7967. help = command.newHelp("playtime", "playtime");
  7968. //playtime [player]
  7969. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  7970. //playtime all
  7971. command.addHelpChild(help, command.newHelpLiteral("all"));
  7972. //playtime month [1-12] [year]
  7973. helpArg0 = command.newHelpLiteral("month");
  7974. helpArg1 = command.newHelpInt("int", 1, 12);
  7975. command.addHelpChild(helpArg1, command.newHelpInt("year", 2019, 2024));
  7976. command.addHelpChild(helpArg0, helpArg1);
  7977. command.addHelpChild(help, helpArg0);
  7978. //playtime year [year]
  7979. helpArg0 = command.newHelpLiteral("year");
  7980. command.addHelpChild(helpArg0, command.newHelpInt("year", 2019, 2024));
  7981. command.addHelpChild(help, helpArg0);
  7982. command.addHelp(help);
  7983. help = command.newHelp("user", "user");
  7984. command.addHelpChild(help, command.newHelpSpecial("Player", "player", "user.other"));
  7985. command.addHelp(help);
  7986. help = command.newHelp("cli", "cli");
  7987. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  7988. command.addHelp(help);
  7989. help = command.newHelp("plant", "plant");
  7990. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  7991. command.addHelp(help);
  7992. help = command.newHelp("grow", "grow");
  7993. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  7994. command.addHelp(help);
  7995. help = command.newHelp("plough", "plough");
  7996. command.addHelpChild(help, command.newHelpInt("int", 0, 1000));
  7997. command.addHelp(help);
  7998. help = command.newHelp("news", "news");
  7999. command.addHelpChild(help, command.newHelpString("text", true));
  8000. command.addHelp(help);
  8001. help = command.newHelp("inv", "inv");
  8002. //inv ignore
  8003. command.addHelpChild(help, command.newHelpLiteral("ignore"));
  8004. //inv see <player>
  8005. helpArg0 = command.newHelpLiteral("see");
  8006. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8007. command.addHelpChild(help, helpArg0);
  8008. //inv reload <player>
  8009. helpArg0 = command.newHelpLiteral("reload");
  8010. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8011. command.addHelpChild(help, helpArg0);
  8012. //inv loadFrom <player> <world>
  8013. helpArg0 = command.newHelpLiteral("loadFrom");
  8014. helpArg1 = command.newHelpSpecial("Player", "player");
  8015. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  8016. command.addHelpChild(helpArg0, helpArg1);
  8017. command.addHelpChild(help, helpArg0);
  8018. //inv saveFor <player> <world>
  8019. helpArg0 = command.newHelpLiteral("saveFor");
  8020. helpArg1 = command.newHelpSpecial("Player", "player");
  8021. command.addHelpChild(helpArg1, command.newHelpString("world", false));
  8022. command.addHelpChild(helpArg0, helpArg1);
  8023. command.addHelpChild(help, helpArg0);
  8024. command.addHelp(help);
  8025. help = command.newHelp("warn", "warn");
  8026. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8027. command.addHelp(help);
  8028. help = command.newHelp("jail", "jail");
  8029. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8030. command.addHelp(help);
  8031. help = command.newHelp("unjail", "unjail");
  8032. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8033. command.addHelp(help);
  8034. help = command.newHelp("friend", "friend");
  8035. //friend add <player>
  8036. helpArg0 = command.newHelpLiteral("add");
  8037. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8038. command.addHelpChild(help, helpArg0);
  8039. //friend remove <player>
  8040. helpArg0 = command.newHelpLiteral("remove");
  8041. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8042. command.addHelpChild(help, helpArg0);
  8043. //friend list
  8044. command.addHelpChild(help, command.newHelpLiteral("list"));
  8045. command.addHelp(help);
  8046. addCommandAlias(help, "f", "friend");
  8047. help = command.newHelp("sign", "sign");
  8048. helpArg0 = command.newHelpInt("1-4", 1, 4);
  8049. command.addHelpChild(helpArg0, command.newHelpString("text", true));
  8050. command.addHelpChild(help, helpArg0);
  8051. command.addHelp(help);
  8052. help = command.newHelp("speed", "speed");
  8053. helpArg0 = command.newHelpInt("int", 1, 10);
  8054. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "speed.other"));
  8055. command.addHelpChild(help, helpArg0);
  8056. command.addHelp(help);
  8057. help = command.newHelp("errordebug", "errordebug");
  8058. command.addHelpChild(help, command.newHelpLiteral("list"));
  8059. command.addHelpChild(help, command.newHelpLiteral("clear"));
  8060. command.addHelpChild(help, command.newHelpLiteral("toggle"));
  8061. command.addHelp(help);
  8062. help = command.newHelp("error", "error");
  8063. command.addHelpChild(help, command.newHelpLiteral("list"));
  8064. command.addHelpChild(help, command.newHelpLiteral("clear"));
  8065. command.addHelp(help);
  8066. help = command.newHelp("world", "world");
  8067. //world info <world>
  8068. helpArg0 = command.newHelpLiteral("info");
  8069. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8070. command.addHelpChild(help, helpArg0);
  8071. //world tp <world> [player]
  8072. helpArg0 = command.newHelpLiteral("tp");
  8073. helpArg1 = command.newHelpString("world", false);
  8074. command.addHelpChild(helpArg1, command.newHelpSpecial("Player", "player"));
  8075. command.addHelpChild(helpArg0, helpArg1);
  8076. command.addHelpChild(help, helpArg0);
  8077. //world list
  8078. command.addHelpChild(help, command.newHelpLiteral("list"));
  8079. //world load <world>
  8080. helpArg0 = command.newHelpLiteral("load");
  8081. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8082. command.addHelpChild(help, helpArg0);
  8083. //world unload <world>
  8084. helpArg0 = command.newHelpLiteral("unload");
  8085. command.addHelpChild(helpArg0, command.newHelpString("world", false));
  8086. command.addHelpChild(help, helpArg0);
  8087. //world diffi <world> <diffi>
  8088. helpArg0 = command.newHelpLiteral("diffi");
  8089. helpArg1 = command.newHelpString("world", false);
  8090. command.addHelpChild(helpArg1, command.newHelpLiteral("PEACEFUL"));
  8091. command.addHelpChild(helpArg1, command.newHelpLiteral("EASY"));
  8092. command.addHelpChild(helpArg1, command.newHelpLiteral("NORMAL"));
  8093. command.addHelpChild(helpArg1, command.newHelpLiteral("HARD"));
  8094. command.addHelpChild(helpArg0, helpArg1);
  8095. command.addHelpChild(help, helpArg0);
  8096. //world setspawn
  8097. helpArg0 = command.newHelpLiteral("setspawn");
  8098. command.addHelpChild(help, helpArg0);
  8099. command.addHelp(help);
  8100. help = command.newHelp("pvp", "pvp");
  8101. helpArg0 = command.newHelpLiteral("on");
  8102. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  8103. command.addHelpChild(help, helpArg0);
  8104. helpArg0 = command.newHelpLiteral("off");
  8105. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "pvp.other"));
  8106. command.addHelpChild(help, helpArg0);
  8107. command.addHelp(help);
  8108. help = command.newHelp("game", "game");
  8109. command.addHelpChild(help, command.newHelpLiteral("open"));
  8110. command.addHelpChild(help, command.newHelpLiteral("close"));
  8111. command.addHelp(help);
  8112. help = command.newHelp("party", "party");
  8113. //party invite <player>
  8114. helpArg0 = command.newHelpLiteral("invite");
  8115. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8116. command.addHelpChild(help, helpArg0);
  8117. //party accept <player>
  8118. helpArg0 = command.newHelpLiteral("accept");
  8119. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8120. command.addHelpChild(help, helpArg0);
  8121. //party deny <player>
  8122. helpArg0 = command.newHelpLiteral("deny");
  8123. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8124. command.addHelpChild(help, helpArg0);
  8125. //party kick <player>
  8126. helpArg0 = command.newHelpLiteral("kick");
  8127. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8128. command.addHelpChild(help, helpArg0);
  8129. //party leave
  8130. command.addHelpChild(help, command.newHelpLiteral("leave"));
  8131. //party promote <player>
  8132. helpArg0 = command.newHelpLiteral("promote");
  8133. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8134. command.addHelpChild(help, helpArg0);
  8135. //party demote <player>
  8136. helpArg0 = command.newHelpLiteral("demote");
  8137. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8138. command.addHelpChild(help, helpArg0);
  8139. //party disband
  8140. command.addHelpChild(help, command.newHelpLiteral("disband"));
  8141. //party list
  8142. command.addHelpChild(help, command.newHelpLiteral("list"));
  8143. command.addHelp(help);
  8144. help = command.newHelp("var", "var");
  8145. helpArg0 = command.newHelpInt("id", 0, 1000000);
  8146. command.addHelpChild(helpArg0, command.newHelpString("varname", false));
  8147. command.addHelpChild(help, helpArg0);
  8148. command.addHelp(help);
  8149. help = command.newHelp("setservermessage", "setservermessage");
  8150. command.addHelpChild(help, command.newHelpString("message", true));
  8151. command.addHelp(help);
  8152. help = command.newHelp("clan", "clan");
  8153. //clan invite <name>
  8154. helpArg0 = command.newHelpLiteral("invite");
  8155. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8156. command.addHelpChild(help, helpArg0);
  8157. //clan accept <id/name/tag>
  8158. helpArg0 = command.newHelpLiteral("invite");
  8159. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  8160. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8161. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  8162. command.addHelpChild(help, helpArg0);
  8163. //clan info [id/name/tag]
  8164. helpArg0 = command.newHelpLiteral("info");
  8165. command.addHelpChild(helpArg0, command.newHelpInt("id", 1, 500));
  8166. command.addHelpChild(helpArg0, command.newHelpString("name", false));
  8167. command.addHelpChild(helpArg0, command.newHelpString("tag", false));
  8168. command.addHelpChild(help, helpArg0);
  8169. //clan create <name> <tag>
  8170. helpArg0 = command.newHelpLiteral("create");
  8171. helpArg1 = command.newHelpString("name", false);
  8172. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  8173. command.addHelpChild(helpArg0, helpArg1);
  8174. command.addHelpChild(help, helpArg0);
  8175. //clan kick <name>
  8176. helpArg0 = command.newHelpLiteral("kick");
  8177. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8178. command.addHelpChild(help, helpArg0);
  8179. //clan leader <name>
  8180. helpArg0 = command.newHelpLiteral("leader");
  8181. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8182. command.addHelpChild(help, helpArg0);
  8183. //clan mod <name>
  8184. helpArg0 = command.newHelpLiteral("mod");
  8185. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8186. command.addHelpChild(help, helpArg0);
  8187. //clan degrade <name>
  8188. helpArg0 = command.newHelpLiteral("degrade");
  8189. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8190. command.addHelpChild(help, helpArg0);
  8191. //clan leave
  8192. command.addHelpChild(help, command.newHelpLiteral("leave"));
  8193. //clan rename <name> <tag>
  8194. helpArg0 = command.newHelpLiteral("rename");
  8195. helpArg1 = command.newHelpString("name", false);
  8196. command.addHelpChild(helpArg1, command.newHelpString("false", false));
  8197. command.addHelpChild(helpArg0, helpArg1);
  8198. command.addHelpChild(help, helpArg0);
  8199. //clan disband
  8200. command.addHelpChild(help, command.newHelpLiteral("disband"));
  8201. //clan msg <message>
  8202. helpArg0 = command.newHelpLiteral("msg");
  8203. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8204. command.addHelpChild(help, helpArg0);
  8205. //clan mail <message>
  8206. helpArg0 = command.newHelpLiteral("mail");
  8207. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8208. command.addHelpChild(help, helpArg0);
  8209. //clan shout <message>
  8210. helpArg0 = command.newHelpLiteral("shout");
  8211. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8212. command.addHelpChild(help, helpArg0);
  8213. //clan deposit <money>
  8214. helpArg0 = command.newHelpLiteral("deposit");
  8215. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  8216. command.addHelpChild(help, helpArg0);
  8217. //clan withdraw <money>
  8218. helpArg0 = command.newHelpLiteral("withdraw");
  8219. command.addHelpChild(helpArg0, command.newHelpInt("money", 0, 1000));
  8220. command.addHelpChild(help, helpArg0);
  8221. //clan party
  8222. command.addHelpChild(help, command.newHelpLiteral("party"));
  8223. //clan setspawn
  8224. command.addHelpChild(help, command.newHelpLiteral("setspawn"));
  8225. //clan spawn
  8226. command.addHelpChild(help, command.newHelpLiteral("spawn"));
  8227. //clan list
  8228. command.addHelpChild(help, command.newHelpLiteral("list"));
  8229. command.addHelp(help);
  8230. help = command.newHelp("shop", "shop");
  8231. //shop create
  8232. command.addHelpChild(help, command.newHelpLiteral("create"));
  8233. //shop admin
  8234. command.addHelpChild(help, command.newHelpLiteral("admin"));
  8235. //shop remove
  8236. helpArg0 = command.newHelpLiteral("remove");
  8237. command.addHelpChild(helpArg0, command.newHelpLiteral("buy"));
  8238. command.addHelpChild(helpArg0, command.newHelpLiteral("sell"));
  8239. command.addHelpChild(help, helpArg0);
  8240. //shop buy <amount> <price>
  8241. helpArg0 = command.newHelpLiteral("buy");
  8242. helpArg1 = command.newHelpInt("amount", 0, 1000);
  8243. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  8244. command.addHelpChild(helpArg0, helpArg1);
  8245. command.addHelpChild(help, helpArg0);
  8246. //shop sell <amount> <price>
  8247. helpArg0 = command.newHelpLiteral("sell");
  8248. helpArg1 = command.newHelpInt("amount", 0, 1000);
  8249. command.addHelpChild(helpArg1, command.newHelpInt("price", 0, 10000));
  8250. command.addHelpChild(helpArg0, helpArg1);
  8251. command.addHelpChild(help, helpArg0);
  8252. command.addHelp(help);
  8253. help = command.newHelp("setmessage", "setmessage");
  8254. //setmessage info
  8255. command.addHelpChild(help, command.newHelpLiteral("info"));
  8256. //setmessage join <message>
  8257. helpArg0 = command.newHelpLiteral("join");
  8258. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8259. command.addHelpChild(help, helpArg0);
  8260. //setmessage leave <message>
  8261. helpArg0 = command.newHelpLiteral("leave");
  8262. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8263. command.addHelpChild(help, helpArg0);
  8264. //setmessage delete <player>
  8265. helpArg0 = command.newHelpLiteral("delete");
  8266. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player", "setmessage.delete"));
  8267. command.addHelpChild(help, helpArg0);
  8268. command.addHelp(help);
  8269. help = command.newHelp("tip", "tip");
  8270. //tipp list
  8271. helpArg0 = command.newHelpLiteral("list");
  8272. command.addHelpChild(help, helpArg0);
  8273. //tipp add <tipp> <text>
  8274. helpArg0 = command.newHelpLiteral("add");
  8275. helpArg1 = command.newHelpString("tip", false);
  8276. command.addHelpChild(helpArg1, command.newHelpString("text", true));
  8277. command.addHelpChild(helpArg0, helpArg1);
  8278. command.addHelpChild(help, helpArg0);
  8279. //tipp remove <tipp>
  8280. helpArg0 = command.newHelpLiteral("remove");
  8281. command.addHelpChild(helpArg0, command.newHelpString("tip", false));
  8282. command.addHelpChild(help, helpArg0);
  8283. //tipp <tipp> [player]
  8284. helpArg0 = command.newHelpString("tip", false);
  8285. command.addHelpChild(helpArg0, command.newHelpSpecial("Player", "player"));
  8286. command.addHelpChild(help, helpArg0);
  8287. command.addHelp(help);
  8288. help = command.newHelp("ticket", "ticket");
  8289. //ticket new <message>
  8290. helpArg0 = command.newHelpLiteral("new");
  8291. command.addHelpChild(helpArg0, command.newHelpString("message", true));
  8292. command.addHelpChild(help, helpArg0);
  8293. //ticket stop <ticket-id>
  8294. helpArg0 = command.newHelpLiteral("stop");
  8295. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000));
  8296. command.addHelpChild(help, helpArg0);
  8297. //ticket list
  8298. command.addHelpChild(help, command.newHelpLiteral("list", "isSupporter"));
  8299. //ticket get [ticket-id]
  8300. helpArg0 = command.newHelpLiteral("get");
  8301. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8302. command.addHelpChild(help, helpArg0);
  8303. //ticket finish <ticket-id>
  8304. helpArg0 = command.newHelpLiteral("finish");
  8305. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8306. command.addHelpChild(help, helpArg0);
  8307. //ticket release <ticket-id>
  8308. helpArg0 = command.newHelpLiteral("release");
  8309. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8310. command.addHelpChild(help, helpArg0);
  8311. //ticket report <ticket-id>
  8312. helpArg0 = command.newHelpLiteral("report");
  8313. command.addHelpChild(helpArg0, command.newHelpInt("ticket-id", 1, 1000, "isSupporter"));
  8314. command.addHelpChild(help, helpArg0);
  8315. command.addHelp(help);
  8316. command.sendHelp();
  8317. }
  8318. function addCommandHelp(command) {
  8319. help = command.newHelp(command, command);
  8320. command.addHelp(help);
  8321. return help;
  8322. }
  8323. function addCommandHelpChildString(command, arg0, bool) {
  8324. help = command.newHelp(command, command);
  8325. command.addHelpChild(help, command.newHelpString(arg0, bool));
  8326. command.addHelp(help);
  8327. }
  8328. function addCommandHelpChildPlayer(command) {
  8329. help = command.newHelp(command, command);
  8330. command.addHelpChild(help, command.newHelpSpecial("Player", "player"));
  8331. command.addHelp(help);
  8332. }
  8333. function addCommandHelpChildBool(command, arg0) {
  8334. help = command.newHelp(command, command);
  8335. command.addHelpChild(help, command.newHelpBool(arg0));
  8336. command.addHelp(help);
  8337. }
  8338. function addCommandAlias(help, alias, command) {
  8339. helpAlias = command.newHelp(alias, command);
  8340. command.addHelpAlias(helpAlias, help);
  8341. command.addHelp(helpAlias);
  8342. }
  8343. function addStatsGameHelp(help, game) {
  8344. helpArg0 = command.newHelpLiteral(game);
  8345. command.addHelpChild(helpArg0, command.newHelpLiteral("top"));
  8346. command.addHelpChild(helpArg0, command.newHelpInt("rank", 1, 1000));
  8347. helpArg1 = command.newHelpSpecial("Player", "player");
  8348. command.addHelpChild(helpArg1, command.newHelpLiteral("remove", "stats.remove"));
  8349. command.addHelpChild(helpArg0, helpArg1);
  8350. command.addHelpChild(help, helpArg0);
  8351. }
  8352. function addDtAttributeAttributHelp(attribut) {
  8353. helpArg1 = command.newHelpLiteral(attribut);
  8354. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("mainhand"));
  8355. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("offhand"));
  8356. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("head"));
  8357. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("chest"));
  8358. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("legs"));
  8359. command.addHelpChild(helpArg1, addDtAttributeSlotHelp("feet"));
  8360. return helpArg1;
  8361. }
  8362. function addDtAttributeSlotHelp(slot) {
  8363. helpArg2 = command.newHelpLiteral(slot);
  8364. helpArg3 = command.newHelpInt("double", 0, 1000);
  8365. command.addHelpChild(helpArg3, command.newHelpLiteral("ADDITION"));
  8366. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_BASE"));
  8367. command.addHelpChild(helpArg3, command.newHelpLiteral("MULTIPLY_TOTAL"));
  8368. command.addHelpChild(helpArg2, helpArg3);
  8369. return helpArg2;
  8370. }
  8371. function showJail(player_name) {
  8372. if(isOnline(player_name)) {
  8373. inv.open($jailmenu, read.player(player_name), "§8Gefängnis");
  8374. }
  8375. }
  8376. function isJailed(player_uuid) {
  8377. return(list.contains($jailed_list, player_uuid));
  8378. }
  8379. function command.register(command, description) {
  8380. command.add(command);
  8381. list.add($command_list, command);
  8382. map.add($command_map, command, description);
  8383. }
  8384. function command.registerAlias(alias, command) {
  8385. command.add(alias);
  8386. map.add($alias_map, alias, command);
  8387. }
  8388. //Spielzeit aller Online-Spieler
  8389. function playtime.getTotalOnlineMinutes() {
  8390. minutes = 0;
  8391. iter = list.iterator(players.toList());
  8392. while(hasNext(iter)) {
  8393. minutes += playtime.getPlayerOnlineMinutes(player.getId(next(iter)));
  8394. }
  8395. return minutes;
  8396. }
  8397. //Spielzeit in einem Zeitraum exkl. der Spielzeit der Online-Spieler
  8398. function playtime.getInterval(from, to) {
  8399. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE join_time > ? AND join_time < ?;");
  8400. databank.setLong(stmt, 1, from);
  8401. databank.setLong(stmt, 2, to);
  8402. result = databank.execute(stmt);
  8403. if(databank.next(result)) {
  8404. minutes = databank.getLong(result, 1) / 1000 / 60;
  8405. } else {
  8406. minutes = 0;
  8407. }
  8408. databank.close(result);
  8409. databank.close(stmt);
  8410. return minutes;
  8411. }
  8412. //Gesamte Spielzeit inkl. der Spielzeit der Online-Spieler
  8413. function playtime.getTotal() {
  8414. minutes = playtime.getTotalOnlineMinutes();
  8415. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime;");
  8416. result = databank.execute(stmt);
  8417. if(databank.next(result)) {
  8418. minutes += databank.getLong(result, 1) / 1000 / 60;
  8419. }
  8420. databank.close(result);
  8421. databank.close(stmt);
  8422. return minutes;
  8423. }
  8424. //Spielzeit eines Spielers in einem Zeitraum exkl. der Online-Spielzeit
  8425. function playtime.getPlayerInterval(player_id, from, to) {
  8426. stmt = databank.prepare("SELECT SUM(leave_time - join_time) FROM playtime WHERE player_id = ? AND join_time > ? AND join_time < ?;");
  8427. databank.setInt(stmt, 1, player_id);
  8428. databank.setLong(stmt, 2, from);
  8429. databank.setLong(stmt, 3, to);
  8430. result = databank.execute(stmt);
  8431. if(databank.next(result)) {
  8432. minutes = databank.getLong(result, 1) / 1000 / 60;
  8433. } else {
  8434. minutes = 0;
  8435. }
  8436. databank.close(result);
  8437. databank.close(stmt);
  8438. return minutes;
  8439. }
  8440. function playtime.getPlayersPerInterval(from, to) {
  8441. set = set.new();
  8442. stmt = databank.prepare("SELECT player_id FROM playtime WHERE join_time > ? AND join_time < ?;");
  8443. databank.setLong(stmt, 1, from);
  8444. databank.setLong(stmt, 2, to);
  8445. result = databank.execute(stmt);
  8446. while(databank.next(result)) {
  8447. set.add(set, databank.getInt(result, 1));
  8448. }
  8449. databank.close(result);
  8450. databank.close(stmt);
  8451. return set.getSize(set);
  8452. }
  8453. function time.getYearDays(year) {
  8454. days = 365;
  8455. if(year % 4 == 0) {
  8456. days++;
  8457. }
  8458. return days;
  8459. }
  8460. function time.getMonthDays(month, year) {
  8461. days = map.get($monthdays, month);
  8462. //Schaltjahre
  8463. if(month == 2 && year % 4 == 0) {
  8464. days++;
  8465. }
  8466. return days;
  8467. }
  8468. function time.getDaysBetween(day1, month1, year1, day2, month2, year2) {
  8469. d_days = 0;
  8470. m_days = 0;
  8471. y_days = 0;
  8472. y = 0;
  8473. m = 0;
  8474. d = 0;
  8475. //Volle Jahre
  8476. for(year = year1 + 1; year < year2; year++) {
  8477. y_days += time.getYearDays(year);
  8478. y++;
  8479. }
  8480. if(year1 == year2) {
  8481. //Volle Monate
  8482. for(month = month1 + 1; month < month2; month++) {
  8483. m_days += time.getMonthDays(month, year1);
  8484. }
  8485. //Volle Tage
  8486. if(month1 == month2) {
  8487. d_days = day2 - day1;
  8488. } else {
  8489. d_days += map.get($monthdays, month1) - day1;
  8490. d_days += day2;
  8491. }
  8492. } else {
  8493. //Volle Monate
  8494. for(month = month1 + 1; month < 13; month++) {
  8495. m_days += time.getMonthDays(month, year1);
  8496. m++;
  8497. }
  8498. for(month = 1; month < month2; month++) {
  8499. m_days += time.getMonthDays(month, year2);
  8500. m++;
  8501. }
  8502. //Volle Tage
  8503. d_days += map.get($monthdays, month1) - day1;
  8504. d_days += day2;
  8505. }
  8506. return y_days + m_days + d_days;
  8507. }
  8508. //--------------------------------------------------
  8509. //Player-Utils
  8510. //--------------------------------------------------
  8511. function player.hasClanInvitation(player_or_id, clan_id) {
  8512. if(isPlayer(player_or_id)) {
  8513. player_id = player.getId(player_or_id);
  8514. } else {
  8515. player_id = player_or_id;
  8516. }
  8517. iter = list.iterator($clan_invitations);
  8518. while(hasNext(iter)) {
  8519. invitation = next(iter);
  8520. p_id = invitation[0];
  8521. c_id = invitation[1];
  8522. if(player_id == p_id && clan_id == c_id) {
  8523. return true;
  8524. }
  8525. }
  8526. return false;
  8527. }
  8528. function player.addClanInvitation(player_id, clan_id) {
  8529. invitation = array.new(2);
  8530. invitation[0] = player_id;
  8531. invitation[1] = clan_id;
  8532. list.add($clan_invitations, invitation);
  8533. }
  8534. //--------------------------------------------------
  8535. //Party-Utils
  8536. //--------------------------------------------------
  8537. function party.invitePlayer(inviter, invitee) {
  8538. //Wenn bereits ein Party besteht, diese Party-ID verwenden.
  8539. //Ansonsten überprüfen, ob der Einlader bereits andere Spieler eingeladen hat. Dann diese Party-ID verwenden.
  8540. //Ansonsten neue Party-ID vergeben.
  8541. inviter_uuid = player.getUuid(inviter);
  8542. if(player.isInParty(inviter)) {
  8543. party_id = player.getPartyId(inviter);
  8544. } else {
  8545. party_id = map.get($party_invite_ids, inviter_uuid);
  8546. if(party_id == null) {
  8547. party_id = ++$party_counter;
  8548. }
  8549. }
  8550. if(invitee == null) {
  8551. return "inviteeNotOnline";
  8552. }
  8553. if(inviter == invitee) {
  8554. return "inviterEqualsInvitee";
  8555. }
  8556. if(player.isInParty(inviter)) {
  8557. if(!player.isPartyLeaderOrMod(inviter)) {
  8558. return "inviterNotPermitted";
  8559. }
  8560. }
  8561. if(player.isInParty(invitee)) {
  8562. return "inviteeAlreadyInParty";
  8563. }
  8564. invitee_uuid = player.getUuid(invitee);
  8565. list = map.get($party_invitations, invitee_uuid);
  8566. if(list == null) {
  8567. list = list.new();
  8568. map.add($party_invitations, invitee_uuid, list);
  8569. }
  8570. if(list.contains(list, inviter_uuid)) {
  8571. return "inviteeAlreadyInvited";
  8572. }
  8573. list.add(list, inviter_uuid);
  8574. list.add($deluuid, inviter_uuid);
  8575. list.add($delkeytime, time.getMillis());
  8576. list = map.get($delkeytimes, invitee_uuid);
  8577. if(list == null) {
  8578. list = list.new();
  8579. map.add($delkeytimes, invitee_uuid, list);
  8580. }
  8581. list.add(list, time.getMillis());
  8582. map.add($party_invite_ids, inviter_uuid, party_id);
  8583. inviter_name = player.getName(inviter);
  8584. msg.prefix(invitee, $prefix_party, concat(inviter_name, " invites you to a party."));
  8585. msg(invitee, " §5=> §rAccept ? ", text.click("[§aYes§r] ", concat("/party accept ", inviter_name)), text.click("[§cNo§r]", concat("/party deny ", inviter_name)));
  8586. sgoto(200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
  8587. return true;
  8588. }
  8589. function party.kickPlayer(player, reason) {
  8590. party_id = player.getPartyId(player);
  8591. //Nachrichten
  8592. player_name = player.getName(player);
  8593. if(reason == "kick") {
  8594. message = concat("§r", player_name, " has been kicked out of the party.");
  8595. } else {
  8596. message = concat("§r", player_name, " has left the party.");
  8597. }
  8598. party.sendMessage(party_id, message);
  8599. player_uuid = player.getUuid(player_name);
  8600. //aus Partyliste entfernen
  8601. party_list = party.getList(party_id);
  8602. list.remove(party_list, player_uuid);
  8603. //ID und Rang entfernen
  8604. rank = player.getPartyRank(player);
  8605. player.delPartyRank(player);
  8606. player.delPartyId(player);
  8607. //Einladungen löschen
  8608. map.remove($party_invitations, player_uuid);
  8609. map.remove($delkeytimes, player_uuid);
  8610. //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
  8611. if(list.getSize(party_list) < 2) {
  8612. party.delete(party_id);
  8613. return;
  8614. }
  8615. //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
  8616. if(rank == "Leader") {
  8617. new_player = player.get(list.getIndex(party_list, 0));
  8618. player.setPartyRank(new_player, "Leader");
  8619. party.sendMessage(party_id, concat("§r", player.getName(new_player), " is now Leader."));
  8620. }
  8621. }
  8622. function party.sendMessage(party_id, message) {
  8623. iter = list.iterator(party.getList(party_id));
  8624. while(hasNext(iter)) {
  8625. msg.prefix(player.get(next(iter)), $prefix_party, message);
  8626. }
  8627. }
  8628. function party.delete(party_id) {
  8629. party.sendMessage(party_id, "Party disbanded.");
  8630. iter = list.iterator(party.getList(party_id));
  8631. while(hasNext(iter)) {
  8632. player = player.get(next(iter));
  8633. player.delPartyRank(player);
  8634. player.delPartyId(player);
  8635. }
  8636. }
  8637. @deletePartyInvitation
  8638. player_uuid = list.getIndex(deluuid, 0);
  8639. invitations = map.get(party_invitations, player_uuid);
  8640. keytimes = map.get(delkeytimes, player_uuid);
  8641. if(invitations != null) {
  8642. if(list.getSize(invitations) != 0) {
  8643. keytime = list.getIndex(delkeytime, 0);
  8644. keytime2 = list.getIndex(keytimes, 0);
  8645. list.remove(delkeytime, keytime);
  8646. if(keytime == keytime2) {
  8647. index = list.getIndexOf(keytimes, keytime2);
  8648. list.remove(keytimes, keytime2);
  8649. list.removeIndex(invitations, index);
  8650. }
  8651. }
  8652. }
  8653. goto("wait");
  8654. //--------------------------------------------------
  8655. //Plot-Utils
  8656. //--------------------------------------------------
  8657. function plot.registerMoveEvents(world) {
  8658. iter = plot.iterator(world);
  8659. while(hasNext(iter)) {
  8660. plot = next(iter);
  8661. if(plot.isCity(plot) || plot.isPlot(plot)) {
  8662. plot.setMoveEvent(plot, world);
  8663. }
  8664. }
  8665. }
  8666. function plot.delMoveEvent(plot) {
  8667. plot_id = plot.getId(plot);
  8668. for(i = 0; i < list.getSize($plot_move_ids_list); i++) {
  8669. a = list.getIndex($plot_move_ids_list, i);
  8670. if(a[1] == plot_id) {
  8671. event.removeMoveData(a[0]);
  8672. list.removeIndex($plot_move_ids_list, i);
  8673. break;
  8674. }
  8675. }
  8676. }
  8677. function plot.setMoveEvent(plot, world) {
  8678. x1 = plot.getMinX(plot);
  8679. y1 = plot.getMinY(plot);
  8680. z1 = plot.getMinZ(plot);
  8681. x2 = plot.getMaxX(plot);
  8682. y2 = plot.getMaxY(plot);
  8683. z2 = plot.getMaxZ(plot);
  8684. loc1 = loc.new(world, x1, y1, z1);
  8685. loc2 = loc.new(world, x2, y2, z2);
  8686. move_id = event.addMoveData(loc1, loc2, 100, -1);
  8687. plot_id = plot.getId(plot);
  8688. a = array.new(2);
  8689. a[0] = move_id;
  8690. a[1] = plot_id;
  8691. list.add($plot_move_ids_list, a);
  8692. }
  8693. function plot.getPlotIdFromMoveId(move_id) {
  8694. iter = list.iterator($plot_move_ids_list);
  8695. while(hasNext(iter)) {
  8696. a = next(iter);
  8697. if(a[0] == move_id) {
  8698. return a[1];
  8699. }
  8700. }
  8701. return null;
  8702. }
  8703. function plot.getMoveIdFromPlotId(plot_id) {
  8704. iter = list.iterator($plot_move_ids_list);
  8705. while(hasNext(iter)) {
  8706. a = next(iter);
  8707. if(a[1] == plot_id) {
  8708. return a[0];
  8709. }
  8710. }
  8711. return null;
  8712. }
  8713. @checkForPlot
  8714. player_uuid = list.getIndex(check_for_plot_list, 0);
  8715. list.removeIndex(check_for_plot_list, 0);
  8716. player = player.get(player_uuid);
  8717. if(player == null) {
  8718. map.remove(actual_move_id, player_uuid);
  8719. goto("wait");
  8720. }
  8721. player_loc = entity.getLocation(player);
  8722. plot_list = plot.get(player_loc);
  8723. if(list.getSize(plot_list) == 0) {
  8724. map.remove(actual_move_id, player_uuid);
  8725. } else {
  8726. list.add(check_for_plot_list, player_uuid);
  8727. sgoto(100, "checkForPlot");
  8728. }
  8729. goto("wait");
  8730. function tpBottom(player) {
  8731. player_loc = entity.getLocation(player);
  8732. y = loc.getY(player_loc);
  8733. while(block.isAir(player_loc)) {
  8734. loc.setY(player_loc, y);
  8735. y--;
  8736. }
  8737. loc.addY(player_loc, 1);
  8738. entity.teleport(player, player_loc);
  8739. }