Переписал плагин с нуля. ©
Позвольте представить: Griswold Reloaded 1.0.
1. Если кликнуть любого кузнеца определенным предметом, то он может что-нибудь сказать.
Например, если кликать по нему едой, зельками, растениями, пытаться зачаровать конскую броню - в списке порядка 50 предметов, когда мне не будет лень - список расширю. Все фразы - в конфиге в разделе локализации.
Не умею делать здесь спойлеры, иначе рассказал бы, какими предметами нужно кликать по кузнецу.
2. Кузнец, который ремонтирует и расчаровывает броню, теперь также является скупщиком некоторых материалов. Это: кожа, железо (слиток, руда, блок), золото (тоже), алмаз (тоже). Цены устанавливаются в конфиге в разделе Buy. Нужно взять в руку сколько-то, допустим, золота, кликнуть по кузнецу - он скажет, за сколько все это заберет. Кликаешь повторно - получаешь деньги, теряешь предмет в руке. Обмануть его, выкинув из руки быстренько часть предметов, не удастся.
3. Теперь расчаровывание определяется кузнецом, как отдельная от зачаровывания операция и стоит отдельно. В данный момент - 100 (зачаровывание - 200). Раздел конфига Main.
4. Теперь кузнец зачаровывает ваш предмет не на случайный уровень от 0 до 30, а на уровень от 10 до 30.
И это можно изменить в любую сторону за пару минут в конфиге в разделе Main.
Ну, в общем, остальные изменения игрокам будут незаметны - это касается больше владельцев серверов. Исправлено не меньше десятка багов разной тяжести, убрано всё, что лично мне мешало, код сильно реорганизован, чтобы мне было проще в нем ориентироваться. Самый страшный баг - возможность дюпа зачаровываний через плагин ChestShop. Там его вроде исправили, но я на всякий случай подстраховался изнутри плагина, чтоб больше таких косяков не было.
Да, еще - совсем убрал возможность наложения чар на чары. Не считаю фишку полезной.
В плагине теперь только две пермиссии:
griswold.admin - для администрации, позволяет создавать, удалять кузнецов, перезагружать плагин.
griswold.list - для кому как нравится. Позволяет использование команды /bs list - можно дать только себе, можно дать его всем. Команда выдает список кузнецов. Теперь - не простой, а с типами и координатами местонахождения.
Типов кузнецов теперь тоже жестко два:
enchanter - зачаровывает, перезачаровывает вещи.
blacksmith - ремонтирует, снимает чары, скупает материалы.
Все настройки плагина объединены в один файл. Мне так удобнее. Редактировать список кузнецов вручную крайне не рекомендуется.
Убрал настройку типа "базовая_цена_ремонта", вместо нее ввел раздел Price. В нем перечислены (почти) все предметы, из которых крафтится то, что ремонтируют кузнецы. Цена рассчитывается на каждый предмет по отдельной формуле и напрямую зависит от цифр в конфиге.
Короче, вот часть конфига (без секции локализации и списка кузнецов)
Price: (ЭТО ДЛЯ РАСЧЕТА ЦЕНЫ РЕМОНТА)
Stick: 1 - цена палочки (ручки инструментов и оружия)
Wood: 2 - цена доски
Stone: 3 - цена камня
Thread: 3 - цена нити (лук)
Gold: 25 - цена золотого слитка
Leather: 10 - цена кожи
Iron: 20 - цена железа
Flint: 3 - цена кремня (зажигалка)
Fire: 20 - цена огня (составная часть кольчужной брони)
Diamond: 50 - цена алмаза
Buy: (ЭТО ЦЕНЫ, ПО КОТОРЫМ КУЗНЕЦ ПРИНИМАЕТ МАТЕРИАЛЫ)
Iron: 20 - цена железного слитка
IronOre: 15 - цена железной руды
IronBlock: 200 - цена железного блока
Leather: 10 - цена кожи
Gold: 25 - цена золотого слитка
GoldOre: 20 - цена золотой руды
GoldBlock: 250 - цена золотого блока
Diamond: 50 - цена алмаза
DiamondOre: 45 - цена алмазной руды
DiamondBlock: 500 - цена алмазного блока
Main:
Timeout: 5000 - это просто не трогайте
enchantPrice: 200.0 - это цена, за которую кузнец зачаровывает и перезачаровывает предмет
repairEnchantPrice: 200.0 - это цена, которая участвует в расчете цены ремонта зачарованной вещи, чем больше чар, тем выше цена
unchantPrice: 100.0 - это цена расчаровывания вещи - расчаровать можно только неповрежденную вещь
OperationPrice: 20.0 - это надбавка за каждую операцию ремонта - чтоб не чинили предметы каждые пять ударов
maxLevel: 30 - это максимальный уровень чар, на которые зачаровывает кузнец (от 0 до 30)
minLevel: 10 - это минимальный уровень чар, на которые зачаровывает кузнец (от 0 до 30)
В архиве два файла - версии для 1.6.4 и для 1.7.2.
Отличаются, помимо совместимости версий, тем, что в 1.7.2 кузнецы зачаровывают удочки.
Изучил казус дублирования энтити (возникновения ненастоящих кузнецов рядом с настоящими), понял причину - устранить не могу. Могу лишь объяснить, откуда берутся.
Когда сервер завершает работу в "правильном" режиме - в процедуре OnDisable плагин выгружает своих энтити. В иных случаях плагин не стирает своих энтити и сервер считает, что эти энтити там быть должны. При новом запуске плагин не проверяет наличие энтити, а создает новых. И получается дублирование. Могу лишь посоветовать не пользоваться командами /reload и Alt+F4.
P.S. Да, команды.
/blacksmith reload
/blacksmith create name type
/blacksmith list
/blacksmitn remove name (чувствительна к регистру)
/blacksmith despawn
Все, как было.
Псевдонимы:
/bs = /blacksmith
/bs set = /bs create
/bs remove = /bs rem = /bs delete = /bs del
/bs set Lao blacksmith - создаст кузнеца Lao, который сможет чинить, снимать чары, скупать ресурсы.
/bs set Sio enchanter - создаст кузнеца Sio, который зачаровывает и перезачаровывает.
Еще фишку добавил только что:
Кузнецом отныне может быть не только деревенский житель.
Это задается новым параметром. Команда будет такая:
/bs create name type presence , где
/bs - личная команда плагина;
create - создать;
name - имя кузнеца, без пробелов, но можно ставить "_";
type - enchanter или blacksmith;
presence - тип сущности, варианты: irongolem, bat, chicken, cow, horse, nushroomcow, ocelot, pig, sheep, snowman, wolf, villager. Если написать что-то иное или не задать параметр вообще - будет спавниться villager.
Да, теперь над кузнецами видно их имя.