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

Плагин Zombiekettle

Тема в разделе "Неподтвержденные плагины", создана пользователем Чайник, 31 май 2012.

Статус темы:
Закрыта.
  1. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    if(p.isPermissionSet("zombiekettle.death") {
    if(p.isOp) {
    в первом случае, спавнится будет ЛИТЛ зомби только у тех, у кого стоит разрешение
    в втором случае, спавнится будет БИГ зомби только у опа
    если оп будет добавлен в примишане, в группе в которой будет стоять разрешение, то куй его знает что будет... скорее всего будет, как вы сказали, оба моба.
    аналогично...
     
  2. mayor123

    mayor123 Старожил Девелопер Пользователь

    Баллы:
    173
    Если у опа будет прописан в пермах - '*', то спаунятся 2 вида. Такой вариант должен работать
    Код:
    if(положительное_условие1 && !положительное_условие2)
    Но положительное условие 2 станет отрицательным из-за "!" .
    А ещё одно замечание. Зачем делать ещё один if, если можно продолжить так:
    Код:
    if(условие)
    выполняется при true
    else if(условие)
    выполняется при true
    else if(условие)
    выполняется при true
     
  3. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    хммм...
    Код:
    package me.kettle.plugins.zombiekettle;
     
    import org.bukkit.World;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.weather;
     
    public class ZombieKettleEntityListener implements Listener {
     
        @EventHandler
        public void onEntityDeath(EntityDeathEvent ede) {
     
            if(ede instanceof PlayerDeathEvent) {
     
                Player p = (Player) ede.getEntity();
     
                if(p.isPermissionSet("zombiekettle.death") && !p.isOp()) {
     
                    p.getWorld().spawnCreature(p.getLocation(), EntityType.ZOMBIE);
                }
     
                else if(p.isOp) {
     
                    p.getWorld().spawnCreature(p.getLocation(), EntityType.GIANT);
                    WeatherChangeEvent.toWeatherState(p.getWorld(), true);
                    ((PlayerDeathEvent) ede).setDeathMessage(ChatColor.RED + p.getName() + " сдох. На его месте возрожден зомби переросток и теперь погода дождливая!");
                }
     
            }
     
        }
     
    }
    думаю пора проверить в eclipse :)
     
  4. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    Дааа к стати, нужно же префикс добавить ))))
    сейчас попробую сделать, и выложу сразу в коммент))))
     
  5. mayor123

    mayor123 Старожил Девелопер Пользователь

    Баллы:
    173
    Код не правилен, кстати, лишнии скобки старайтесь избегать, лучше так
    Код:
    public class ZombieKettleEntityListener implements Listener {
     
        @EventHandler
        public void onEntityDeath(EntityDeathEvent ede) {
     
            if(ede instanceof PlayerDeathEvent) {
     
                Player p = (Player) ede.getEntity();
     
                if(p.isPermissionSet("zombiekettle.death") && !p.isOp())
                    p.getWorld().spawnCreature(p.getLocation(), EntityType.ZOMBIE);
                else if(p.isOp) {
     
                    p.getWorld().spawnCreature(p.getLocation(), EntityType.GIANT);
                    WeatherChangeEvent.toWeatherState(p.getWorld(), true);
                    ((PlayerDeathEvent) ede).setDeathMessage(ChatColor.RED + p.getName() + " сдох. На его месте возрожден зомби переросток и теперь погода дождливая!");
                   
                }
     
            }
     
        }
     
    }
    Вот такой код будет работать
     
    zuma2 нравится это.
  6. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    Не нужно было убрать те скобки, вы только испортили код ещё хуже. Там уйма других проблем. Все исправил кроме некоторых... я выделил что не смог исправить:
    ZombieKettleEntityListener.java
    Код:
    package me.kettle.plugins.zombiekettle;
     
    import org.bukkit.World;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.weather.WeatherChangeEvent;
    import org.bukkit.plugin.PluginDescriptionFile;
     
    public class ZombieKettleEntityListener implements Listener {
     
        @EventHandler
        public void onEntityDeath(EntityDeathEvent ede) {
     
            if(ede instanceof PlayerDeathEvent) {
     
                Player p = (Player) ede.getEntity();
     
                if(p.isPermissionSet("zombiekettle.death") && !p.isOp()) {
     
                    p.getWorld().spawnCreature(p.getLocation(), EntityType.ZOMBIE);
                }
     
                else if(p.isOp()) {
     
                    p.getWorld().spawnCreature(p.getLocation(), EntityType.GIANT);
                    WeatherChangeEvent(p.getWorld(), true);
     
      //"WeatherChangeEvent" - здесь что-то неправильно
     
                    PluginDescriptionFile pdf = this.getDescription();
     
      //"getDescription" - здесь что-то неправильно (хотя тут все должно быть правильно... :(
     
                    ((PlayerDeathEvent) ede).setDeathMessage("[" + pdf.getName() + "] " + ChatColor.RED + p.getName() + " сдох. На его месте возрожден зомби переросток и теперь погода дождливая!");
                }
     
            }
     
        }
     
    }
    дальше все правильно, просто я там тоже кое что изменил
    ZombieKettle.java
    Код:
    package me.kettle.plugins.zombiekettle;
     
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class ZombieKettle extends JavaPlugin {
     
        @Override
        public void onDisable() {
     
            PluginDescriptionFile pdf = this.getDescription();
     
            System.out.println("[" + pdf.getName() + "] " + pdf.getName() + " v" + pdf.getVersion() + " disabled!");
     
        }
     
        @Override
        public void onEnable() {
     
            PluginDescriptionFile pdf = this.getDescription();
     
            System.out.println("[" + pdf.getName() + "] " + pdf.getName() + " v" + pdf.getVersion() + " enabled!");
     
            PluginManager pm = getServer().getPluginManager();
     
            pm.registerEvents(new ZombieKettleEntityListener(), this);
     
        }
     
    }
     
  7. mayor123

    mayor123 Старожил Девелопер Пользователь

    Баллы:
    173
    Уменьшение количества строк кода == оптимизация.
    WeatherChangeEvent вы изменяли
    //"getDescription" - здесь что-то не правильно
    Этой функции в моем коде вообще не было
     
  8. mayor123

    mayor123 Старожил Девелопер Пользователь

    Баллы:
    173
    Кстати, может использовать какой-нибудь WeatherLightingEvent ? Сейчас посмотрю название
     
  9. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    eclipse так не думает, то что вы отрезали было ошибкой
    Да я исправил. Добавил правильный импорт и само выполнение (я там много вариантов пробовал, все выполнения неправильные)
    Это добавляет префикс "[название плагина] "... но легче всего конечно же просто добавить кусок текста (уже так и поступил)
     
  10. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    молние))) да вы правы)))
     
  11. mayor123

    mayor123 Старожил Девелопер Пользователь

    Баллы:
    173
    [/quote]
    Да, правда, значит перепутал с другим оператором, где так делать можно
     
    zuma2 нравится это.
  12. mayor123

    mayor123 Старожил Девелопер Пользователь

    Баллы:
    173
    Класс молнии LightingStrike в пакете entiny. Как я понял, её нужно телепортировать, как и другие entiny
     
  13. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    уже все сделал, все работает, все супер))))))))
    Код:
    package me.kettle.plugins.zombiekettle;
     
    import org.bukkit.World;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
     
    public class ZombieKettleEntityListener implements Listener {
     
        @EventHandler
        public void onEntityDeath(EntityDeathEvent ede) {
     
            if(ede instanceof PlayerDeathEvent) {
     
                Player p = (Player) ede.getEntity();
                World w = p.getWorld();
     
                if(p.isPermissionSet("zombiekettle.death") && !p.isOp()) {
     
                    w.spawnCreature(p.getLocation(), EntityType.ZOMBIE);
                }
     
                else if(p.isOp()) {
     
                    w.spawnCreature(p.getLocation(), EntityType.GIANT);
                    w.strikeLightningEffect(p.getLocation());
                    ((PlayerDeathEvent) ede).setDeathMessage(ChatColor.YELLOW + "[ZombieKettle] " + ChatColor.RED + p.getName() + " умер. На его месте восстал огромный зомби!");
                }
     
            }
     
        }
     
    }
     
    slavik123123123 нравится это.
  14. mayor123

    mayor123 Старожил Девелопер Пользователь

    Баллы:
    173
    Спасибо тебе вообще. С помощью твоего плагина я открыл для себя BUKKIT API, оказалось, он очень легок!
     
  15. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    Смотря как далеко с этим делом углу****ься)))
    У вас есть свои плагины?
     
  16. mayor123

    mayor123 Старожил Девелопер Пользователь

    Баллы:
    173
    Нет. Подкиньте идейку, попробую сделать что-нибудь простое.
     
  17. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    Есть конечно идеи))) Но все они не простые)))
     
  18. Gate

    Gate Старожил Пользователь

    Баллы:
    103
    Прикольный плагин:);)
     
  19. Navigator

    Navigator Активный участник

    Баллы:
    63
    Имя в Minecraft:
    Navigator
    Дип-сервер твой проект?
     
  20. Автор темы
    Чайник

    Чайник Активный участник

    Баллы:
    68
    Имя в Minecraft:
    BupycOK
    нет
     
Статус темы:
Закрыта.

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