Статия Нашият младежки екип
Статия: Нашият младежки отбор. (с)
Имаме десетки събития на Bakkit. Изглежда, какво друго е необходимо за спокойно посрещане на старостта, за да се установи взаимодействие с играчите? За съжаление, Minecraft не е черно-бял, не можете да обясните на играта какво ви трябва от него само с жестове. Рано или късно трябва да се справите с конзолата, а именно с конзолни команди. Тези много команди ви позволяват да изпратите сървъра в правилната посока по изключително формализиран начин, като обяснявате с помощта на аргументи какво да си сложите на врата и какво да правите, когато срещнете влак.
Командите на конзолата могат условно да бъдат разделени на „административни“, въведени от конзолата на сървъра (ако има достъп до нея) и „персонализирани“, които се използват от обикновените играчи, използващи чат линията. Това разделение е по-скоро произволно, тъй като повечето "административни" команди могат да се изпълняват директно от клиента за игра чрез линията за чат, а много "потребителски" команди могат да се въвеждат от конзолата на сървъра. Така че това разделение е по-вероятно поради системата от "разрешения" или "разрешения", инсталирана на сървъра за различни групи играчи (определено ще отделим отделна статия за това).
Самата команда е разделена на елементи чрез интервали: първият елемент е името на командата. Следват командните аргументи. Независимо дали това са някои опции или стойности на параметрите - бизнесът и проблемите са изцяло ваши. И се заемете с тяхното парсиране и обработка отново вместо вас. Как ще направите това - чрез каскадиране на изрази if () или чрез анализиране на команден ред чрез регулярни изрази - отново зависи от вас.
Сега нека разгледаме отблизо точно два и половина начина, по които можете да използвате тези команди в нашия плъгин. Първият метод, най-простият и най-гъвкав, е идеален за малки приставки с повече или по-малко статично съдържание. Ако вашият плъгин е пригоден за решаване на един проблем и включва работа само с една, две или три команди, това е само вашият случай. Всичко, което трябва да направите, е да наследите метода onCommand в основния клас на вашата приставка (който връща false в класа JavaPlugin, от който наследява вашия клас):
Както можете да видите от горната част на файла plugin.yml, приставката запазва командата/test. Тук трябва да разберете, че по принцип никой не налага ограничения върху пресичането на имената на командите, описани в този раздел. И по принцип те могат да бъдат същите като имената на командите, използвани от други приставки. Когато обаче се извика методът onCommand, важи съвсем логичното правило „Кой е станал първи - това и маратонките“, така че вашият плъгин може да е с нос, но без маратонки, ако някой друг плъгин е абониран "към тази команда в нейния метод onCommand вече върна true при обработка на същата команда. Така че този метод едва ли е подходящ за прихващане на "чужди" команди.
Що се отнася до останалите параметри на подраздела за описание на командата:
- описание: съдържа произволен низ за описание. Използва се главно за генериране на „помощ“ с командата/help.
- псевдоними: тук можете да изброите т.нар псевдоними за вашия екип, които могат да се използват взаимозаменяемо заедно с основното име на екипа. Тъй като изброяването на псевдоними е неназован списък, елементите му са разделени със запетая и затворени в скоби (вижте статията в YML и това е всичко.).
- разрешение: разрешението, необходимо за използване на тази команда. Ако разрешението не е посочено, отборът става достъпен за всички играчи на сървъра. Командите, въведени от сървърната конзола, не се влияят от системата за разрешения - това е абсолютен достъп директно от името на сървъра.
- message-message: съобщение, което ще бъде издадено на играч, който няма достъп до тази команда.
- употреба: съобщение, което се показва на потребителя, ако командата е въведена неправилно. Що се отнася до разработването на приставки, това звучи така: ако за приставка, която е „абонирана“ за команда, методът onCommand е извикан да обработи тази команда и тя връща false.
Сега нека се обърнем към параметрите на самия метод onCommand:
Какво да правим с всичко това? Процес, разбира се. Първо, трябва да определите за коя команда става въпрос, тъй като командният раздел на файла plugin.yml може да опише произволен брой от тях. Ако няма много много команди, можете да се справите с последователни if ():
С повече от няколко парчета броят на командите може да отиде в конструкцията на корпуса на превключвателя. Същността на въпроса няма да се промени много от това. Едно нещо, което трябва да имате предвид, е, че ако командата е анализирана успешно, вашият метод onCommand трябва да върне true. В този случай, разбира се, можете да извършите допълнителни проверки за коректността на аргументите на командата и в случай на грешка да върнете заплашителни съобщения на подателя. Но все пак е по-добре, ако името на командата бъде разпознато от вас, да позволите на Bakkit да разбере, че командата е обработена. Освен това, за да не се налага да проверявате тъжно всички възможни опции, най-добре е да напишете името на командата с малки букви и да използвате нейното основно име (getName) и да не използвате аргумента label, който може да не е същият като основното име.