Войти или зарегистрироваться

Помогите Деспаун мобов + экипировка мобов

CraftCoder

Старожил
Пользователь
Баллы
108
Имя в Minecraft
CraftCoderr
1.Как отменить или обойти деспаун мобов?
2.Как подгрузить чанк?
3.Как сделать так чтобы мобы спавнились максимум в кожанной броне, а не в золотой, кольчужной, железной или алмазной, т.е мне нужен оптимальный алгоритм этого: в CreatureSpawnEvent проверить наличие брони, и всю броню, которая есть на мобе, заменить на кожаннную и чтобы при этом чары остались.
 
Последнее редактирование:
1. При создании моба, при обработке CreatureSpawnEvent, выполните: event.getEntity().setRemoveWhenFarAway(false);
2. chunk.load()?
Жесть, ответы настолько просты :D Спасибо
А чанк на сколько времени подгружается?
 
CraftCoder, не знаю никогда этим не озадачивался ;)

Но Вы можете отследить момент выгрузки чанка обрабатывая событие ChunkUnloadEvent. По идее тут же можно отменить выгрузку. Но мне ещё это событие использовать не доводилось.
 
п.3 - собственно Вы сами всё правильно описали.
Моб отспавнился, проверяете броню. Есть броня - создаете кожаный аналог и вешаете на него те же эффекты, что были на оригинале
 
В броне-то чего сложного? Делаем все как сказал @fromgate. Если броня != кожаной и не равна null, значит ты ее можешь удалить/поставить кожаную + добавляешь эффекты к броне с помощью addEnchantment(Enchantment.ПРОЧНОСТЬ_КАРОЧ, Уровень)/addUnsafeEnchantment(Enchantment.ОПЯТЬПРОЧНОСТЬЕШКИНКОТ, Уровень) [ItemStack]

Или же ты можешь получить корректные зачарования с помощью getEnchantments() (return Map<Enchantment, Integer> (Зачарование, Его уровень)). Затем используя entrySet() распределяем все эффекты :D (Или как там еще, я не профи в мапах)

FucKQ:
1. Почему "прочность"? Да потому что только она и есть у мобов с зачаренной броней :D
2. Чем отличаются addEnchantment/addUnsafeEnchantment? В unsafeEnchantment ты можешь сделать меч хоть 127 уровня, а в простой addEnchantment ты можешь засунуть только тот энчат, уровень которого не завышает 4-5. (Как я помню)
 
На деле, зачарования могут быть любые
Разве? :eek: Сколько играл -- никогда не видел броню на мобе с другими зачарованиями. Как выбивал что-то - ПРОЧНОСТЬ 1! Ну да ладна..
 
Спасибо за разъяснение с броней, но меня интересует вопрос: на какое время подгружается чанк, с помощью chunk.load()?
 
Точно не сразу, где-то на следующий тик.
Если можно, то подскажите кодом как мне подгрузить чанк и заспавнить там моба, но мне нужны гарантии что он там заспавнится, ведь если чанк не подгружен, то моб не заспавнится.
 
PHP:
//Android editor text
Public void spawnCustomZombie(Location loc){
boolean unload = false;
if(!loc.getChunk().isLoaded()){
loc.getChunk().load();
unload = true;
}

Zombie zombie = loc.getWorld().spawn...
//Дальше лень писать

if(unload){
loc.getChunk().unload(true);
}
}
Писал с телефона, могут быть недочеты. Работоспособность не гаранитирую.
 
Последнее редактирование:
PHP:
//Android editor text
Public void spawnCustomZombie(Location loc){
boolean unload = false;
if(!loc.getChunk().isLoaded()){
loc.getChunk().load();
unload = true;
}

Zombie zombie = loc.getWorld().spawn...
//Дальше лень писать

if(unload){
loc.getChunk().unload(true);
}
}
Писал с телефона, могут быть недочеты. Работоспособность не гаранитирую.
Огромное спасибо!
 
Если можно, то подскажите кодом как мне подгрузить чанк и заспавнить там моба, но мне нужны гарантии что он там заспавнится, ведь если чанк не подгружен, то моб не заспавнится.

Моб заспавнится даже если чанк не загружен.
 
Почему эта строка может выдавать NullPointerExeption:
public HashMap<String, Integer> death = new HashMap<String, Integer>();
public HashMap<String, Integer> time = new HashMap<String, Integer>();
String name != null;

if (death.get(name) != 0 && (systemTime - death.get(name)) >= time.get(name))
 
может быть нужно проверять на нул, а не на ноль if (death.get(name) != null && ...) ?
 
может быть нужно проверять на нул, а не на ноль if (death.get(name) != null && ...) ?
Вот я криворукий.... Спасибо
1. При создании моба, при обработке CreatureSpawnEvent, выполните: event.getEntity().setRemoveWhenFarAway(false);
2. chunk.load()?
У меня почему-то event.getEntity().setRemoveWhenFarAway(false); не работает :(
Почему у меня не работает setRemoveWhenFarAway(false) и как это проверить?
 
Вот я криворукий.... Спасибо

У меня почему-то event.getEntity().setRemoveWhenFarAway(false); не работает :(
Почему у меня не работает setRemoveWhenFarAway(false) и как это проверить?
проверить - запихнуть это в евент спауна моба -> потом улетаем -> прилетаем обратно.
Или еще луште , tp 1000000 128 10000000 -> обратно.

оффтопик: в твоем плагине на "изумрудные инструменты" очень много кода... я бы искал все рецепты которые дадут тебе алм. тулы и добовлял бы свои такие же , но с заменой на изумруд с алмаза.
 
проверить - запихнуть это в евент спауна моба -> потом улетаем -> прилетаем обратно.
Или еще луште , tp 1000000 128 10000000 -> обратно.
Ну я улетал, а когда прилетал моба уже не было, как это имправить?
 
Назад
Верх