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 убить. Не забудьте нажать кнопку «Добавить»