Помогите Отключение опыта от торговли

  • Автор темы Автор темы Phizzle
  • Дата начала Дата начала

Phizzle

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Phizzle
Привет всем, в новых версиях админы серверов сталкиваются с такой проблемой как "абуз жителей" в следствие чего игроки размножая и торгуя с жителями получают огромное количество опыта, я так и не нашел ивент через который я мог бы отключить выдачу опыта после успешной сделки с жителем, подскажите пожалуйста (1.15-1.16)
 
Привет всем, в новых версиях админы серверов сталкиваются с такой проблемой как "абуз жителей" в следствие чего игроки размножая и торгуя с жителями получают огромное количество опыта, я так и не нашел ивент через который я мог бы отключить выдачу опыта после успешной сделки с жителем, подскажите пожалуйста (1.15-1.16)
Никогда о таком не думал, но вот 2 доки возможно могут помочь или толкнуть на мысль
Нашёл 3 ивента связанных с жителями
 
Никогда о таком не думал, но вот 2 доки возможно могут помочь или толкнуть на мысль
Нашёл 3 ивента связанных с жителями
ивенты то я тоже нашел) но как получать из них результат сделки в виде кол-ва опыт - нет
 
Согласно этому:
PHP:
// CraftBukkit 1.12
// net.minecraft.entity.passive.EntityVillager#useRecipe
if (recipe.getRewardsExp())
{
    this.world.spawnEntity(new EntityXPOrb(this.world, this.posX, this.posY + 0.5D, this.posZ, i));
}
При каждом использовании рецепта, в случае, если жителю разрешается дропать опыт, то он это делает.
Контроль этого осуществляется с помощью переменой rewardsExp.

org.bukkit.craft*********ventory.CraftMerchantRecipe#setExperienceReward
org.*********ventory.MerchantRecipe#setExperienceReward
(я не знаю почему форум делает звёздачками путь)

Осталось только найти способом принудительно выключать всем жителям дроп опыта.
Сперва я бы попробовал изучить эвенты выше более внимательнее, скорей всего через них может это всё получится, ибо там передаются рецепты торгов по которым можно пробежаться и сделать то, что я описал выше.
Второе, что приходит в голову, так это при взаимодействии с сущностью, проверять является ли это житель и вырубать дроп опыта setExperienceReward(false) для каждого рецепта.
Третье, в чём я менее уверен, и не знаю можно ли это сделать, ибо смотреть лень, так это получение списка всех рецептом и сразу установка им возможности дропа опыта на false, но скорей всего это

Я смотрел версию 1.12, ибо у меня нет под рукой 1.15 а ставить просто так лень да и не за чем, не думаю что там сильно что-то изменилось, хоть и VillagerCareerChangeEvent отсутствует на 1.12.
 
Последнее редактирование:
Согласно этому:
PHP:
// CraftBukkit 1.12
// net.minecraft.entity.passive.EntityVillager#useRecipe
if (recipe.getRewardsExp())
{
    this.world.spawnEntity(new EntityXPOrb(this.world, this.posX, this.posY + 0.5D, this.posZ, i));
}
При каждом использовании рецепта, в случае, если жителю разрешается дропать опыт, то он это делает.
Контроль этого осуществляется с помощью переменой rewardsExp.

org.bukkit.craft*********ventory.CraftMerchantRecipe#setExperienceReward
org.*********ventory.MerchantRecipe#setExperienceReward
(я не знаю почему форум делает звёздачками путь)

Осталось только найти способом принудительно выключать всем жителям дроп опыта.
Сперва я бы попробовал изучить эвенты выше более внимательнее, скорей всего через них может это всё получится, ибо там передаются рецепты торгов по которым можно пробежаться и сделать то, что я описал выше.
Второе, что приходит в голову, так это при взаимодействии с сущностью, проверять является ли это житель и вырубать дроп опыта setExperienceReward(false) для каждого рецепта.
Третье, в чём я менее уверен, и не знаю можно ли это сделать, ибо смотреть лень, так это получение списка всех рецептом и сразу установка им возможности дропа опыта на false, но скорей всего это

Я смотрел версию 1.12, ибо у меня нет под рукой 1.15 а ставить просто так лень да и не за чем, не думаю что там сильно что-то изменилось, хоть и VillagerCareerChangeEvent отсутствует на 1.12.
спасибо, я посмотрю, а на счет последнего абзаца, в 1.14 меняли полностью жителей, поэтому возможно и способы управления наградой
 
Назад
Верх