Api

Свои собственные звуки

Это несколько сложнее чем, просто залить текстуры, как написано выше.

  • название файла на английском, не должно содержать большие буквы,символы,пробелы (вместо них можно использовать знак «_»)
  • в формате
  • размер файла не желательно делать больше, чем 2Мб. Это примерно 30-45 секунд звука в моно канале, самого низкого качества из формата «.ogg» . Если превысить размер в 2Мб, то в сетевой игре игрок, попавший в зону срабатывания вашего звука, зависнет на несколько секунд, так как для него будет разворачиваться этот огромный файл. В одиночной игре игрок подвисает, но совместно со всем миром,нежели в сетевой.

Под звуком можно принимать музыку, записанный голос и прочие звуки. Для создания формата .ogg используйте различные программы или конвертеры.

Далее:

Заходим в папку по пути:

в Win XP это — %AppData%/.minecraft/customnpcs/assets/customnpcs/sounds

Тут создаём себе папку, название которой должно быть на английском, не должно содержать большие буквы,символы,пробелы. Пример: «mysound»

Ну,а теперь самое сложное:

  • Вернемся назад, в папку: .minecraft/mods/customnpcs/assets/customnpcs/
  • Теперь,чтобы внести сюда свой файл, пролистаем весь текст до конца. Перед самой нижней/последней скобкой «}» жмём кнопку ↵ Enter и введем следующий текст:
, "(название вашего звука в игре)": {"category": "player","sounds": ["(путь к вашему файлу и его название через / без формата)"]} 

Пример: Вы создали папку с названием mysound и закинули туда звуковой файл с названием say_hello.ogg. Но вы хотите, чтобы в игре он отображался как My NPC Say hello. Тогда ваша строчка должна будет выглядеть так:

, "My NPC Say hello": {"category": "player","sounds": ["mysound/say_hello"]} 

Теперь, когда вы сохраните этот файл, зайдете/перезайдёте в игру и нажмёте кнопку «Выбрать Звук», то в открывшемся окне, в самом низу списка увидите строчку My NPC Say hello. Это и будет ваш файл.

• Если вы хотите разом добавить много файлов, то просто повторите процедуру: Скачать в папку/записать в файл.

Если вы хотите, чтобы ваш NPC играл один из нескольких звуков со случайным выбором, то укажите каждый путь к каждому файлу, через запятую, в одной строке.

 , "(название вашего звука в игре)": {"category": "player","sounds": } 

Из примера выше. Ваша папка mysound, три звуковых файла say_hello_1.ogg, say_hello_2.ogg, say_hello_3.ogg. Название в игре то же — My NPC Say hello. Тогда ваша строчка будет выглядеть так:

, "My NPC Say hello": {"category": "player","sounds": ["mysound/say_hello_1","mysound/say_hello_2","mysound/say_hello_3"]} 

Если вы добавили конкретно музыкальный файл, а не звук ( т.е. музыка,которую играет NPC Бард ) , то укажите это в строчке после пути параметром stream = true, весь путь указан в скобках «{ }» и начинается с «name»: . То бишь так:

, "(название вашего звука в игре)": {"category": "player","sounds": } 

Строчка будет выглядеть так (пример) :

, "My NPC Say hello": {"category": "player","sounds": [{"name":"mysound/say_hello_1","mysound/say_hello_2","mysound/say_hello_3", "stream": true}]} 

Using the AI API

The AI API of Citizens can be broken down into two parts — GoalController and Navigator.

A Goal is a repeatable, abstract unit of work that can be performed by an NPC. For example, moving to a different location or attacking an enemy until it dies. It can be registered with a GoalController with a priority (higher is more important). The highest priority goal which can be executed will be prioritised. NPC contains getDefaultGoalController() for this purpose.

The GoalSelector allows a great deal of flexibility within goal implementations. It allows firstly the dynamic selection of sub-goals and the concurrent execution of many sub-goals, and can stop execution at any time.

Code:
 public class MyBehavior extends BehaviorGoalAdapter { // enable direct GoalController compatibility
     private Object state; 
     public void reset() {
         state = null;
         // this method can be called at any time if another goal is selected
     }
     public BehaviorStatus run() {
         if(!npcIsCool()) {
             return BehaviorStatus.FAILURE;
         } else if (npcIsAwesome()) {
             return BehaviorStatus.SUCCESS; 
         } else if (npcNeedsCool()) {
             new AccumulateCoolBehavior().run(); // easily run other behavior inline
             return BehaviorStatus.RUNNING;
         }
     }
     public boolean shouldExecute() {
         if (npcIsCool()) { 
             return true;
         }
         return false;
     } 
 }

You can easily create trees of behaviors such as in the following example:

Code:
 public void setupTree(NPC npc) {
     npc.getGoalController().addGoal(Sequence.createSequence(new MyBehavior(), new MyAccumulateBehavior(), new MyParallelBehavior()));

     // A more complicated example
     npc.getGoalController().addGoal(Sequence.createSequence(
              new IfElse(() -> npc.isCool(), 
                  TimerDecorator.tickLimiter(new MyLongRunningBehavior(), 100), 
                  new MyElseBehavior()),
              new MyParallelBehavior()
     ));

     // You can implement nested loops and other behavior sequences using the API provided in net.citizensnpcs.api.ai.tree
 }
Code:
 public class MyGoal implements Goal {
     private Object state; 
     public void reset() {
         state = null;
         // this method can be called at any time if another goal is selected
     }
     public void run(GoalSelector selector) {
         if(!npcIsCool()) {
             selector.finish(); // stops execution
         } else if (npcIsAwesome()){
             selector.select(new AwesomeGoal()); // this switches execution to AwesomeGoal and stops execution of this goal.
         } else if (npcNeedsCool()) {
             selector.selectAdditional(new AccumulateCoolGoal()); // AccumulateCoolGoal executes concurrently to this goal.
         }
     }
     public boolean shouldExecute(GoalSelector selector) {
         if (npcIsCool()) { 
             return true;
         }
         return false;
     } 
 }

The second concept is the Navigator. This controls the pathfinding aspects of the NPC. The Navigator can have one target at a time, and will call events to notify of completion/cancellation:

  • NavigationBeginEvent
  • NavigationCancelEvent
  • NavigationCompleteEvent
  • NavigationEvent
  • NavigationReplaceEvent

You can use the NavigatorParameters class to control various aspects of pathfinding. The default parameters are copied to create the «local» parameters whenever a new path is started — modify local parameters after setting your path target!
The pathfinding range of the Navigator is the maximum range it will search when attempting to find a path to the target. This is usually set by the server admin. The speed modifier of the Navigator is the % modified movement speed of the NPC while moving to the target.

Особенности плагина dtlTraders:

  • Простой способ настройки и управления магазинами с помощью графического интерфейса
  • Создавайте/редактируйте свои магазины простым перетаскиванием
  • 3 типа магазинов: «Продам», «Купи» и «Обменяй».
  • 2 типа содержимого предмета: «статический» и «обменный».
  • 1 мощный тип трейдера: «трейдер» (/trait trader) связывает магазины dtlTraders с гражданами (2) NPC
  • Поддержка ванильных и кастомных NBT/DataTags
  • NBT/DataTags делает возможным создание пользовательских предметов из сторонних плагинов.
  • Опытные пользователи могут настраивать свои собственные предметов с помощью конфигураций.
  • Разрешает стековые сделки
  • Поддержка ЛЮБЫХ экономичных плагинов
  • Совместим со Spigot/bukkit  1.8 — 1.15.x
  • Измените описания и названия ваших товаров
  • Добавляйте торговые ограничения на такие предметы, как «лимиты»
  • Настройте свои магазины с помощью «магазина по умолчанию» и «переключения магазинов»
  • Настройте взаимодействие с магазином с помощью «настраиваемой суммы ввода» и «сдвига стека»
  • Сделайте свои магазины на основе рейтинга с индивидуальными «разрешениями»
  • Больше кнопок навигации и модулей графического интерфейса с целью создания «единого графического интерфейса».

Новые функции в версии 6.0.0:

  • Управляйте текстом, который вы видите на элементах, с помощью «настраиваемого отображаемого текста»
  • Переключатель «Выпадение предметов» позволяет выпасть предмету при заполнении инвентаря при покупке/продаже/обмене.
  • Переключатель «Продать все», позволяющий продать оставшиеся предметы.
  • «Тайтлы» позволяет настраивать или переключать общедоступные сообщения о покупке/продаже или обмене.
  • Включены изменения названий страниц
  • Улучшенный «Единый графический интерфейс» с категоризованными настройками, интерактивным просмотром изменений и более плавным и красивым видом <3
  • Еще более эффективное использование функций магазина

В настоящее время поддерживаются такие плагины на экономику как:

OptEcoBeastTokensGemsEconomy

Для пользователей, которым нужно больше функций, у нас есть премиальный плагин под названием: dtlTradersPlus.

Кнопка Ночь

Откроет окно управления изменением внешности и параметров NPC днём и ночью.

Позиция «Изменить», кнопки «Да, Нет» — Включить изменение NPC днём и ночью.

После чего настроить все Закладки (Задания, Характеристики, ИИ, Инвентарь, Продвинутые) и нажать одну из кнопок:

  • «Загрузите День» — применит текущие настройки для NPC днём.
  • «Загрузите Ночь» — применит текущие настройки для NPC ночью.

Далее измените те закладки, которые сменят вашего NPC и нажмите другую кнопку «день/ночь»

После чего в позициях Задания, Характеристики, ИИ, Инвентарь, Продвинутые, Роль, Работа, кнопки «Да, Нет» — установите что именно будет сменяться «днём/ночью»

Вот и все, днём ваш NPC один, а ночью другой.

Interface[]

NPC interface without world builder permission.

NPC interface with world builder permission.

Right-clicking an NPC displays the interface. It can be edited only as long as the player has the world builder permission. The interface allows the player to edit the dialog, name, appearance and advanced settings. When the player doesn’t have the world builder permission, it shows only the dialog and buttons.

Customization

Name
The name of an NPC can be entered in the top text pane titled «Name». The text limit for the name is 32, and the color can be changed by using the color codes as by default the color is yellow (§e).
Dialog
The dialog box located right below the «Name» and often used as a tool for guiding. The text limit for the dialog is 256, although in some cases it appears as 337.
Appearance
NPCs appearance are selectable, to change the skin simply just by left clicking on the preferred skin.
There are currently 20‌[Bedrock Edition only] or 35‌[Education Edition only] skins available for the NPCs and defaults to the yellow-robed NPC.
Advanced Settings
The advanced NPC settings consists of URL and commands. They are used to create interactive buttons. The current maximum advanced settings that can be added is 6.

URL
The URL feature allows the player to add a hyperlink button. The URL can be entered at the first input box below the title up to 1024 letters.
To change the button name or label can be proceeded by filling the input box titled «Button Name», the current text limit for the label is 16 letters.
When added, the button appears only if the player has the world builder permission disabled. The button label defaults to «Learn More» and the color defaults to blue, it can be changed by using the color codes.
Command
  • The command feature allows the player to add one or more executable commands in the NPC. The command can be entered at the first input box below the title, unlike the command block multiple commands can be executed in one window. The current maximum letters for the command is 1024. The command(s) get executed when the dialogue with the NPC is closed.
  • The command can be presented either as a button or a direct command. As a button, the button name or label can be changed by filling the input box titled «Button Name», the text limit for the label is 16 letters. It can be executed only if the player has the world builder permission disabled.
  • When not added as a button, the command is executed after the dialogue with the NPC, visible by right clicking the NPC, has closed. In contrariwise, the button is displayed and has a label color defaults to light gray, and can be changed by using the color codes. (the default name of the NPC is NPC)
  • ‌[Bedrock Edition only] is a specialized Target selector that targets the player that has interacted with the NPC, distinguishing them from other players that may interact later. This is useful for running commands on a per-player basis.

Возможные ошибки

  • «Текстура на NPC выглядит коряво, глаза на ногах, а головы и вовсе не видно/прочие глюки.» — Возможно, разрешение вашего файла не подходит под модель NPC. К примеру, текстура у крипера отличается от текстуры Стива. Или файл нарисован не полностью или неправильно.
  • «Не могу найти свою текстуру в игре в той папке, где она ну уж точно есть на все 100%!» — Возможные причины: Вы ввели в имя текстуры разные символы, или она не в формате .png
  • «Моя текстура отображается через чёрные и розовые кубы.» — Возможно, этой текстуры больше нет в вашей папке ( например, вы её удалили.) Если же она там есть, то перезапустите игру. В случае,когда глюк не проходит, попробуйте пересохранить свою текстуру и перезайдите в игру. Если и это вам не помогло, то смените название файла.
  • «Мой звук не отображается в игре.» — Вы однозначно допустили ошибку в своей строчке в файле «sounds.json» или вовсе забыли его сохранить. Проверьте всё ещё раз. Также вы могли изменить файл не по тому пути
  • «Мой звук видно в списке в игре, но он не играет.» — Тут может быть несколько дилемм:

    • Проверьте путь к вашему файлу и его название, указное в вашей строчке в файле «sounds.json», а также саму свою папку: …minecraft/customnpcs/assets/customnpcs/sounds/(ваша папка). Возможно, где-то опечатка (в именах/названиях).
    • Проверьте, что ваш файл имеет формат .ogg и он действительно играет музыку/звуки через любой проигрыватель.
    • Прочитай проблему ниже — возможно это ваш случай.
  • «Мой звук в игре либо играет полсекунды и повторяется снова, либо играет недолго и отключается, либо почти не играет.» — Если играет полсекунды и повторяется — отключите вашему NPC возможность видеть цели в закладке «ИИ». (Смотри раздел «Закладки ИИ» в статье Настройки и возможности NPC. ) Если это NPC-Бард, то проверьте наличие параметра в строчке stream=true (см.пример выше). Если играет недолго и отключается или почти не играет, то у вас большая проблема: на некоторых клиентах этот глюк появляется спустя минут 30 игры. Иногда помогает хитрость с отключением «видеть цель», заставить NPC стоять на месте и не двигаться, смотреть в одну сторону. Или вовсе создать нового NPC. Причина этого глюка (мне) неизвестна.
  • Если у вас есть вопросы по этой статье, то пишите их сюда.

Вернуться к предыдущему разделу: Создание квестов.

Просмотр: Шаблон:Custom NPCs/Содержимое

Other Options

Other ways you can control include:

  • to attach temporary permissions to the player (generally don’t use this, instead use … or just execute as-server)
  • to make the command respond to left clicks (punch/attack). Note that this may not work if PvP is disabled.
  • to make the command respond to right clicks (standard interact).
  • to make a command only usable a certain number of times per player (in this example, 5 usages).
  • to make the command only usable once per certain time period (in this example, 10 seconds), for each player.
  • to make the command only usable once per certain time period (in this example, 10 seconds), globally (nobody can use the NPC again until the cooldown ends).
  • to make the command have a delay before it activates (in this example, 40 ticks, aka 2 seconds).
  • to make the command have a cost using any Vault-compatible economy plugin (in this example, $50). This will refuse to run for players that don’t have enough money, and automatically take the money before executing the command for those that do have enough.
  • to open a GUI to configure an item-cost (the player has to give the item for the command to execute).

There maybe be more options available for not yet explained here, so type in-game to see any such options.

Кнопка Фракции[]

При нажатии на кнопку «Фракции» откроется окно редактирования фракций. Сами же фракции и достижения можно увидеть в режимах выживания или приключения в верхних закладках внутреннего инвентаря. При условии, что вы взаимодействовали с NPC той или иной фракции!

  • Кнопки «Добавить» и «Удалить» — отвечают за добавление новой фракции и удаление выбранной из списка в центре.
  • Поле «Имя» — Названия вашей Фракции. Можно изменить.
  • Кнопка Цвет — выбор цвета для вашей фракции. Именно этого цвета будут Имена NPC с этой фракцией, а также этого цвета она будет указываться у вас в списке. Цвета можно выбрать в цветовой палитре или вписать HTML код самостоятельно.

С версии 1.8 появилась палитра цветов, где, простым кликом по цветовому полю, можно выбрать цвет.

Вот некоторые Коды цветов:

Цвет Код
Maroon #800000
DarkRed #8B0000
FireBrick #B22222
Red #FF0000
Salmon #FA8072
Tomato #FF6347
Coral #FF7F50
OrangeRed #FF4500
Chocolate #D2691E
SandyBrown #F4A460
DarkOrange #FF8C00
Orange #FFA500
DarkGoldenrod #B8860B
Goldenrod #DAA520
Gold #FFD700
Olive #808000
Yellow #FFFF00
YellowGreen #9ACD32
GreenYellow #ADFF2F
Chartreuse #7FFF00
LawnGreen #7CFC00
Green #008000
Lime #00FF00
LimeGreen #32CD32
SpringGreen #00FF7F
MediumSpringGreen #00FA9A
Turquoise #40E0D0
LightSeaGreen #20B2AA
MediumTurquoise #48D1CC
Teal #008080
DarkCyan #008B8B
Aqua #00FFFF
Cyan #00FFFF
DarkTurquoise #00CED1
DeepSkyBlue #00BFFF
DodgerBlue #1E90FF
RoyalBlue #4169E1
Navy #000080
DarkBlue #00008B
MediumBlue #0000CD
Blue #0000FF
BlueViolet #8A2BE2
DarkOrchid #9932CC
DarkViolet #9400D3
Purple #800080
DarkMagenta #8B008B
Fuchsia #FF00FF
Magenta #FF00FF
MediumVioletRed #C71585
DeepPink #FF1493
HotPink #FF69B4
Crimson #DC143C
Brown #A52A2A
IndianRed #CD5C5C
RosyBrown #BC8F8F
LightCoral #F08080
Snow #FFFAFA
MistyRose #FFE4E1
DarkSalmon #E9967A
LightSalmon #FFA07A
Sienna #A0522D
SeaShell #FFF5EE
SaddleBrown #8B4513
Peachpuff #FFDAB9
Peru #CD853F
Linen #FAF0E6
Bisque #FFE4C4
Burlywood #DEB887
Tan #D2B48C
AntiqueWhite #FAEBD7
NavajoWhite #FFDEAD
BlanchedAlmond #FFEBCD
PapayaWhip #FFEFD5
Moccasin #FFE4B5
Wheat #F5DEB3
Oldlace #FDF5E6
FloralWhite #FFFAF0
Cornsilk #FFF8DC
Khaki #F0E68C
LemonChiffon #FFFACD
PaleGoldenrod #EEE8AA
DarkKhaki #BDB76B
Beige #F5F5DC
LightGoldenrodYellow #FAFAD2
LightYellow #FFFFE0
Ivory #FFFFF0
OliveDrab #6B8E23
DarkOliveGreen #556B2F
DarkSeaGreen #8FBC8F
DarkGreen #006400
ForestGreen #228B22
LightGreen #90EE90
PaleGreen #98FB98
Honeydew #F0FFF0
SeaGreen #2E8B57
MediumSeaGreen #3CB371
Mintcream #F5FFFA
MediumAquamarine #66CDAA
Aquamarine #7FFFD4
DarkSlateGray #2F4F4F
PaleTurquoise #AFEEEE
LightCyan #E0FFFF
Azure #F0FFFF
CadetBlue #5F9EA0
PowderBlue #B0E0E6
LightBlue #ADD8E6
SkyBlue #87CEEB
LightskyBlue #87CEFA
SteelBlue #4682B4
AliceBlue #F0F8FF
SlateGray #708090
LightSlateGray #778899
LightsteelBlue #B0C4DE
CornflowerBlue #6495ED
Lavender #E6E6FA
GhostWhite #F8F8FF
MidnightBlue #191970
SlateBlue #6A5ACD
DarkSlateBlue #483D8B
MediumSlateBlue #7B68EE
MediumPurple #9370DB
Indigo #4B0082
MediumOrchid #BA55D3
Plum #DDA0DD
Violet #EE82EE
Thistle #D8BFD8
Orchid #DA70D6
LavenderBlush #FFF0F5
PaleVioletRed #DB7093
Pink #FFC0CB
LightPink #FFB6C1
Black #000000
DimGray #696969
Gray #808080
DarkGray #A9A9A9
Silver #C0C0C0
LightGrey #D3D3D3
Gainsboro #DCDCDC
WhiteSmoke #F5F5F5
White #FFFFFF
  • Позиция «Очки» , кнопка «Редактировать» — откроет окно редактирования очков фракции.
    • Поле «По-умолчанию» — здесь указываются очки, которые игрок получит сразу же, когда обнаружит эту фракцию.
    • Поля «Недружелюбные <-> нейтральные» — здесь указываются очки, при которых фракция станет не дружелюбной.
    • Поля «Нейтральные <-> дружелюбные» — здесь указываются очки, при которых фракция станет дружелюбной.

Иначе говоря, если вы установите: по-ум. = 0, недруг. = −15000, а друж. = 15000, то Когда игрок найдет эту фракцию, у него будет репутация = 0 и отношение нейтральное. Как только игрок наберёт 15000 очков и больше — фракция станет дружелюбной, ну а если сбавит ниже −15000 то враждебной.

  • Позиция «Скрытый» , кнопки «Да, Нет» — отвечает за то, будет ли отображаться эта фракция в списке у игроков.
  • Позиция «Могут быть атакованы мобами» , кнопка «Да, Нет» — отвечает за то, будут ли МОБы атаковать эту фракцию, в том числе Мобы других модов.
  • Список «Враждебные Фракции» — в этом списке вы можете выбрать фракции, которые данная фракция будет атаковать, просто нажимая на них ЛКМ, и ещё раз чтобы отменить выделение. Настройки NPC на атаку враждебных фракций находятся в закладке «Продвинутые», кнопка «Фракции» у каждого NPC!

Блоки[]

Декорации

Изображение Название Описание
Блок крови Декоративный блок, текстура которого накладывается на соседние блоки. Можно проходить сквозь него.
Баннер Флаг на стойке, ставится на пол. Можно нанести на него любой предмет. Всего 5 видов.
Стена баннер Флаг на перегородке, устанавливается на стены и потолки. Можно нанести на него любой предмет. Всего 5 видов.
Высокая лампа Двухблочная структура, которая устанавливается на пол. Уровень света такой же, как и у факела. Всего 5 видов.
Стул Полублок. На нём можно сидеть. Всего 6 видов.
Табуретка Полублок. На ней можно сидеть. Всего 6 видов.
Шерстяной диван Полублок. Может быть многоблочной структурой. На нём можно сидеть. Всего 6 видов.
Деревянный диван Полублок. Может быть многоблочной структурой. На нём можно сидеть. Всего 6 видов.
Деревянный стол Декоративный блок. Может быть многоблочной структурой. Всего 6 видов.
Большой знак Большая табличка. Как и на табличке, на нём можно писать текст.
Ящик Блок. Имеет внутренний инвентарь с 54 ячейками, как двойной сундук. Всего 6 видов.
Бочка Блок, похожий на ящик. Имеет внутренний инвентарь с 54 ячейками, как двойной сундук. Всего 6 видов.
Оружейная стойка Двухблочная структура, которая может визуально хранить на себе до трёх любых предметов. Всего 6 видов.
Надгробная плита Блок, на котором можно написать текст как на табличке. Всего 3 вида.
Знак Блок-указатель. Можно нанести на него любой предмет. Всего 6 видов.
Полка Полублок. Может быть многоблочной структурой, на который можно поставить цветочный горшок или рычаг. Всего 6 видов.
Луч Миниблок, ставится на стены. На самом деле это не луч, а ствол, торчащий из стены. Всего 6 видов.
Книга Блок. После установки его можно использовать как простую книгу с пером.
Пьедестал Блок. Можно поставить на другие блоки, а в него можно установить любое не огнестрельное оружие. Всего 5 видов.
Кристалл Полупрозрачный блок. Похож на стекло, только имеет тени мутности на стенках. Всего 16 видов.
Костёр Полублок. Не поджигает блоки и сущности. Светится.
Лампа Миниблок. Светится как факел. Можно включать и выключать.
Свеча Миниблок. Светится как факел, Можно тушить и зажигать.
Заполнитель Матовый блок. Абсолютно бесшовные блоки. Всего 16 видов.

Технические блоки

Изображение Название Описание
Редстоун блок Блок, реагирующий на игроков вблизи него. Радиус реакции настраивается.
Локационный квестовый блок Блок, необходимый для квестов, в которых нужно найти местность или территорию.
Граница Блок, который препятствует перемещению игроков по нему. Отбрасывает в сторону стрелки.
Скриптовый блок Блок, интерфейс которого аналогичен интерфейсу сценариста из 1.9.0. Активируется подачей на него сигнала красного камня.
Скриптовая дверь Дверь, интерфейс которой аналогичен интерфейсу сценариста из 1.9.0. Активируется при открывании и закрывании.
Строительный блок Блок-строитель. Устанавливает шаблон готовой территории. Всё установленное пропадёт, если сломать блок. По функционалу похож на строитель из BuildCraft.
Копировальный блок Блок, который копирует указанную область.
Торговый блок Блок, который позволяет двум игрокам безопасно обмениваться товарами.
Верстак плотника Расширенный верстак крафта. Имеет сетку 4×4 (16 клеток) для создания предметов.
Наковальня Блок, полностью аналогичен верстаку плотника.
Почтовый ящик Блок, в котором можно читать полученные письма.

Creating a Trait

Traits are persistent, attachable objects that are linked to an NPC and provide specific functionality. This can be anything from a full-blown dynamic villager AI to a simple talking trait.

To register a trait, we use the TraitFactory class. This controls registration for your custom traits.

Code:
//This is your trait that will be applied to a npc using the /trait mytraitname command. Each NPC gets its own instance of this class.
//the Trait class has a reference to the attached NPC class through the protected field 'npc' or getNPC().
//The Trait class also implements Listener so you can add EventHandlers directly to your trait.
public class MyTrait extends Trait {
	public MyTrait() {
		super("mytraitname");
		plugin = JavaPlugin.getPlugin(MyPlugin.class);
	}

	MyPlugin plugin = null;

	boolean SomeSetting = false;
        
        // see the 'Persistence API' section
        @Persist("mysettingname") boolean automaticallyPersistedSetting = false;

	// Here you should load up any values you have previously saved (optional). 
        // This does NOT get called when applying the trait for the first time, only loading onto an existing npc at server start.
        // This is called AFTER onAttach so you can load defaults in onAttach and they will be overridden here.
        // This is called BEFORE onSpawn, npc.getEntity() will return null.
	public void load(DataKey key) {
		SomeSetting = key.getBoolean("SomeSetting", false);
	}

	// Save settings for this NPC (optional). These values will be persisted to the Citizens saves file
	public void save(DataKey key) {
		key.setBoolean("SomeSetting",SomeSetting);
	}

        // An example event handler. All traits will be registered automatically as Bukkit Listeners.
	@EventHandler
	public void click(net.citizensnpcs.api.event.NPCRightClickEvent event){
		//Handle a click on a NPC. The event has a getNPC() method. 
		//Be sure to check event.getNPC() == this.getNPC() so you only handle clicks on this NPC!
		
	}
      
        // Called every tick
        @Override
        public void run() {
        }

	//Run code when your trait is attached to a NPC. 
        //This is called BEFORE onSpawn, so npc.getEntity() will return null
        //This would be a good place to load configurable defaults for new NPCs.
	@Override
	public void onAttach() {
		plugin.getServer().getLogger().info(npc.getName() + "has been assigned MyTrait!");
	}

        // Run code when the NPC is despawned. This is called before the entity actually despawns so npc.getEntity() is still valid.
	@Override
	public void onDespawn() {
        }

	//Run code when the NPC is spawned. Note that npc.getEntity() will be null until this method is called.
        //This is called AFTER onAttach and AFTER Load when the server is started.
	@Override
	public void onSpawn() {

	}

        //run code when the NPC is removed. Use this to tear down any repeating tasks.
	@Override
	public void onRemove() {
        }

}

//This is your bukkit plugin class. Use it to hook your trait into Citizens and handle any commands.
public class MyPlugin extends org.bukkit.plugin.java.JavaPlugin {

	public void onEnable() {
	
	//check if Citizens is present and enabled.

		if(getServer().getPluginManager().getPlugin("Citizens") == null || getServer().getPluginManager().getPlugin("Citizens").isEnabled() == false) {
			getLogger().log(Level.SEVERE, "Citizens 2.0 not found or not enabled");
			getServer().getPluginManager().disablePlugin(this);	
			return;
		}	

		//Register your trait with Citizens.        
		net.citizensnpcs.api.CitizensAPI.getTraitFactory().registerTrait(net.citizensnpcs.api.trait.TraitInfo.create(MyTrait.class).withName("mytraitname"));	
	}

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] inargs) {
		//handle commands for /myplugin 
	}
}

Dos and Don’ts

DO

  • Check npc.isSpawned() before using npc.getEntity()
  • Check npc.isSpawned() before using npc.getNavigator()
  • Create a separate singleton Listener class if you expect there to be many instances of this trait running. This may help performance with frequently called events.
  • Honor npc.data().get(NPC.DEFAULT_PROTECTED_METADATA) If this is true the NPC should be ‘invulnerable’ to normal damaging effects.
  • use CitizensAPI.getNPCRegistry().isNPC() to check if an entity is a NPC. Real players and player-type NPCs will both return true for instanceof Player.

DON’T

  • Attempt to access npc.getEntity() from within traits until onSpawn() has been called or npc.isSpawned() returns true.
  • Change anything in npc.getNavigator.getDefaultParams() unless you’re sure you want a global change. Use the localParams() instead after setting a navigation target.
  • Assume a NPC is a player-type. Mob types have some important differences.

Команды на смену карты в Black Mesa

Главы в Black Mesa разделены на отдельные карты-уровни. Чтобы перенестись на нужный уровень, используйте команду map . Названия карт приведены ниже.

Карты комплекса Чёрная Меза

Прибытие в Чёрную Мезу

  • bm_c0a0a
  • bm_c0a0b
  • bm_c0a0c

Аномальные материалы

  • bm_c1a0a
  • bm_c1a0b

Непредвиденные последствия

  • bm_c1a1a
  • bm_c1a1b
  • bm_c1a1c
  • bm_c1a1d
  • bm_c1a1e

Офисный комплекс

  • bm_c1a2a
  • bm_c1a2b
  • bm_c1a2c

Мы встретили неприятеля

  • bm_c1a3a
  • bm_c1a3b
  • bm_c1a3c

Отводной колодец

  • bm_c1a4a
  • bm_c1a4b
  • bm_c1a4c
  • bm_c1a4d
  • bm_c1a4e

Подача питания

  • bm_c2a1a
  • bm_c2a1b

По рельсам

  • bm_c2a2a
  • bm_c2a2b
  • bm_c2a2c

Мрачное предчувствие

  • bm_c2a3a
  • bm_c2a3b

Переработка отходов

  • bm_c2a4a
  • bm_c2a4b
  • bm_c2a4c
  • bm_c2a4d

Сомнительная этика

  • bm_c2a4e
  • bm_c2a4f
  • bm_c2a4g
  • bm_c2a4h

Поверхностное натяжение

  • bm_c2a5a
  • bm_c2a4b
  • bm_c2a5c
  • bm_c2a5d
  • bm_c2a5e
  • bm_c2a5f
  • bm_c2a5g

Забудьте о Фримене

  • bm_c3a1a
  • bm_c3a1b

Ядро Лямбды

  • bm_c3a2a
  • bm_c3a2b
  • bm_c3a2c
  • bm_c3a2d
  • bm_c3a2e
  • bm_c3a2f
  • bm_c3a2g
  • bm_c3a2h

Карты Зена

Прибытие в Зен

  • bm_c4a1a
  • bm_c4a1a1
  • bm_c4a1b
  • bm_c4a1b1
  • bm_c4a1c
  • bm_c4a1c1

Гнездо Гонарча

  • bm_c4a2a
  • bm_c4a2b
  • bm_c4a2c

Нарушитель

  • bm_c4a3a
  • bm_c4a3a1
  • bm_c4a3b
  • bm_c4a3b1
  • bm_c4a3b2
  • bm_c4a3c
  • bm_c4a3c1
  • bm_c4a3c2
  • bm_c4a3d
  • bm_c4a3d1

Нихилант

bm_c4a4a

Финал

bm_c4a5a

Как открыть консоль в Black Mesa

Для ввода читов в Black Mesa понадобится консоль. По умолчанию она скрыта, и чтобы включить её, нужно воспользоваться одним из двух способов.

Первый способ: найдите Black Mesa в вашей библиотеке игр, кликните по игре правой кнопкой, перейдите в «Свойства», далее выберите пункт «Параметры запуска». В текстовом поле введите –console и запустите игру. Когда игра загрузится, появится консоль, куда нужно будет ввести bind p toggleconsole и нажать Enter. Вместо p можно использовать любую удобную вам клавишу.

Второй способ: в настройках игры зайдите в настройки клавиатуры, там – в расширенные настройки, и выберите пункт «включить консоль разработчика». Сохраните изменения, в игре нажмите клавишу ~ (тильда) и введите sv_cheats 1 в появившейся консоли – это разрешение на активацию читов. Учтите, что активация этой команды не позволит получать достижения.

Стоит заметить, что некоторые команды из приведённых ниже работают и без sv_cheats 1, следовательно, не влияют на получение достижений. В основном это команды на выдачу предметов.

Кнопка Фракции

Нажав эту кнопку вы перейдёте в окно выбора Фракции для вашего NPC. Если вы хотите создать себе новую фракцию то вам в раздел «Фракции» статьи Сами же фракции и достижения можно увидеть в режиме Выживание/Приключение в верхних закладках внутреннего инвентаря. При условии, что вы взаимодействовали с NPC той или иной фракции!

  • В этом окне есть список со всеми созданными Фракциями, просто нажмите кнопку ЛКМ на одну из них, чтобы задать эту фракцию для NPC.
  • Позиция «Атаковать Враждебные Фракции», кнопки «Да, Нет» — будет ли NPC атаковать враждебные фракции.
  • Позиция «Defence fraction members» (рус. «Защищать членов своей Фракции»), кнопки «Да, Нет» — будет ли NPC, защищать своих товарищей по фракции, если на них нападут. Зона осмотра (Агро радиус)х1,4.
  • Позиция «После смерти», кнопки «Очки» — откроет окно где вы можете выбрать 2 позиции. Назначить к какой фракции добавить или убавить количество очков, которое зачислится если этого NPC убить. Не забудьте нажать кнопку «Добавить»
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector