- Баллы
- 66
Актуально
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Сейчас опишуПодробнее опишите логику работы плагина.
Я пытался создать некий подобный скрипт и сделал систему звёзд. В плагине она мне не нужна1. Что за "звёзды"?
2. Моб обязательно должен сидеть и иметь спавнер на голове?
Все можно сделатьНельзя сделать если этот моб игрок. На счёт зомби скорее всего это возможно
А зачем он должен сидеть на мобе? Есть более простой способ сделать через векторы и велоситиЯ пытался создать некий подобный скрипт и сделал систему звёзд. В плагине она мне не нужна
Подбрасывание должно работать на всех Entity, кроме Armor_Stand, лодок, эндер драконов, вагонеток и тд. Моб должен сидеть на мобе во время подброса
Это нужно для того, что-бы отображать моба, в положение сидяА зачем он должен сидеть на мобе? Есть более простой способ сделать через векторы и велосити
Категория плагина: Веселье
Предлагаемое название: EpicSmach
Версия сервера: Надо чтобы работало под 1.8.7
Что я хочу:
У мобов есть параметр усталости. С каждым ударом он повышается
Если усталость высокая то можно подбросить моба при ударе
Можно подбрасывать много раз подряд
Во время подброса цель не не может двигаться
Усталость может снижаться если съесть еду
Или если не атакуют
Можно даже немного упростить идею
Идеи для команд: Этому плагину команды не нужны
Идеи пермишенов: Этому плагину команды нужны
Когда мне это нужно? Не срочно, сроки не жмут
По всем вопросам отвечаю
package com.example.epicsmash;
import org.bukkit.Bukkit;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.bukkit.material.Food;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.Map;
public class EpicSmashPlugin extends JavaPlugin implements Listener {
private Map<LivingEntity, Double> mobFatigueMap = new HashMap<>();
@Override
public void onEnable() {
Bukkit.getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent event) {
if (event.getEntity() instanceof LivingEntity && event.getDamager() instanceof Player) {
LivingEntity entity = (LivingEntity) event.getEntity();
Player player = (Player) event.getDamager();
// Отслеживаем усталость моба
double fatigue = mobFatigueMap.getOrDefault(entity, 0.0);
fatigue += 1.0; // Усталость увеличивается с каждым ударом
// Если усталость высока, подбрасываем моба
if (fatigue >= 5.0) {
entity.setVelocity(entity.getVelocity().setY(1.0)); // Подбрасываем
event.setCancelled(true); // Останавливаем дальнейшие действия при подбрасывании
}
// Сохраняем новый уровень усталости
mobFatigueMap.put(entity, fatigue);
}
}
@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
if (event.getEntity() instanceof LivingEntity) {
LivingEntity entity = (LivingEntity) event.getEntity();
// Если моб не атакует, усталость постепенно снижается
if (event.getCause() == EntityDamageEvent.DamageCause.ENTITY_ATTACK) {
return;
}
double fatigue = mobFatigueMap.getOrDefault(entity, 0.0);
fatigue -= 0.1; // Усталость снижается постепенно
if (fatigue < 0) fatigue = 0;
mobFatigueMap.put(entity, fatigue);
}
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
if (event.getItem() != null && event.getItem().getType().toString().contains("COOKED")) {
// Если игрок съел еду, усталость всех мобов на несколько единиц уменьшится
if (event.getPlayer() != null) {
for (LivingEntity entity : mobFatigueMap.keySet()) {
double fatigue = mobFatigueMap.get(entity);
fatigue -= 2.0; // Усталость снижается при поедании пищи
if (fatigue < 0) fatigue = 0;
mobFatigueMap.put(entity, fatigue);
}
}
}
}
}
Здесь есть ошибка. Плюс нет посадки на моба. Я пробовал делать через entity.setVelocity, это немного не так работает, нужно через мобаorg.*********ventory.ItemStack;
И как это сделать?Все можно сделать
Плагину нужен конфиг?Я пытался создать некий подобный скрипт и сделал систему звёзд. В плагине она мне не нужна
Подбрасывание должно работать на всех Entity, кроме Armor_Stand, лодок, эндер драконов, вагонеток и тд. Моб должен сидеть на мобе во время подброса
Да, можноПлагину нужен конфиг?
config:
onbattle: true //// Включает систему усталости и подбросы во время боя
ondeath: true //// Включает подбросы после смерти
velocity:
up: //// Сила отдачи по оси оY
horizontal: //// Дальность по осям oZ oX
speed: /// На сколько быстро будет лететь ragdall