1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Идея Удары как в игре Tekken

Тема в разделе "Запросы на разработку плагинов", создана пользователем 250, 19 дек 2024.

  1. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Актуально
     
  2. devUniqueStudio

    devUniqueStudio Новичок

    Баллы:
    6
    Подробнее опишите логику работы плагина.
    1. Что за "звёзды"?
    2. Моб обязательно должен сидеть и иметь спавнер на голове?
     
  3. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Сейчас опишу

    Когда моб умирает, его можно подкидывать
    За каждое комбо даётся орбы опыта

    Если подкидывать много раз подряд моб улетает в небо и исчезает. За это даётся большой бонус в виде дополнительные орбов опыта

    Если моб касается земли комбо сбрасывается, а сам моб исчезает
     
    Последнее редактирование: 25 фев 2025
  4. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Я пытался создать некий подобный скрипт и сделал систему звёзд. В плагине она мне не нужна
    Подбрасывание должно работать на всех Entity, кроме Armor_Stand, лодок, эндер драконов, вагонеток и тд. Моб должен сидеть на мобе во время подброса
     
  5. Ichiban

    Ichiban Новичок

    Баллы:
    6
    Нельзя сделать если этот моб игрок. На счёт зомби скорее всего это возможно
     
  6. Zerkala8D4

    Zerkala8D4 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    AlohaDanse
    Все можно сделать
     
  7. Zerkala8D4

    Zerkala8D4 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    AlohaDanse
    А зачем он должен сидеть на мобе? Есть более простой способ сделать через векторы и велосити
     
  8. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Это нужно для того, что-бы отображать моба, в положение сидя
    И это позволяет более тонко контолировать вектор моба, чем velocity
     
  9. Fagaset

    Fagaset Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Fagaset
    Код:
    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);
                    }
                }
            }
        }
    }
     
  10. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Здесь есть ошибка. Плюс нет посадки на моба. Я пробовал делать через entity.setVelocity, это немного не так работает, нужно через моба
     
  11. Ichiban

    Ichiban Новичок

    Баллы:
    6
    И как это сделать?
    Плагину нужен конфиг?
     
  12. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Да, можно

    Есть пример для возможностей конфига
    Код:
    config:
     onbattle: true    //// Включает систему усталости и подбросы во время боя
     ondeath: true     //// Включает подбросы после смерти
    
    velocity:
     up:                  ////  Сила отдачи по оси оY
     horizontal:   ////  Дальность по осям oZ oX
    
    
     speed:          /// На сколько быстро будет лететь ragdall
    
    
     
  13. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Актуально
     
  14. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Актуально
     
  15. Ichiban

    Ichiban Новичок

    Баллы:
    6
    Я не знаю как это сделать. Думаю что это не возможно. Для меня слишком трудно понять
     
  16. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Может сделать подброс только при смерти, это будет более легко?

    Так или иначе спасибо что попробовали
     
  17. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Актуально
     
  18. Автор темы
    250

    250 Участник Пользователь

    Баллы:
    36
    Актуально
     
  19. SlenderMix

    SlenderMix Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    HIDDEN
    На данной версии врятли реализуемо только плугином, уже проще модификацию написать.
     
  20. Shadow12

    Shadow12 Новичок Пользователь

    Баллы:
    21
    Версии ниже 1.13 обречены давно
     

Поделиться этой страницей