Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Идея Пвп по уровням предмета.

Discussion in 'Запросы на разработку плагинов' started by Slorikworld, Jun 21, 2016.

  1. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ни разу. Но это будет работать.

    Вот то, что у меня получилось:
    Code:
    package club.without.dereku.pvpbylevel;
    
    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.EntityDamageByEntityEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    /**
     *
     * @author Dereku
     */
    public class PvPByLevel extends JavaPlugin implements Listener {
    
        private int levelDifference;
       
        @Override
        public void onEnable() {
            this.saveDefaultConfig();
            this.levelDifference = this.getConfig().getInt("levelDifference", 20);
            this.getServer().getPluginManager().registerEvents(this, this);
        }
       
        @EventHandler
        public void onDamage(EntityDamageByEntityEvent event) {
            if (!event.getDamager().getType().equals(EntityType.PLAYER) && !event.getEntity().getType().equals(EntityType.PLAYER)) {
                return;
            }
           
            Player damager = (Player) event.getDamager();
            Player reciever = (Player) event.getEntity();
           
            int difference = Math.max(damager.getLevel(), reciever.getLevel()) - Math.min(damager.getLevel(), reciever.getLevel());
           
            if (difference > this.levelDifference) {
                event.setCancelled(true);
                damager.sendMessage(ChatColor.RED + "Ваш уровень слишком высок для атаки этого игрока.");
            }
        }
    }
    [DOUBLEPOST=1470205647,1470205445][/DOUBLEPOST]
    Передавать ссылку в класс, не?
     
  2. Хостинг MineCraft
    <
  3. _MediaNik_

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

    Trophy Points:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Это конечно хорошо, но, нету создания(автоматического) конфига.
    this.levelDifference = this.getConfig().getInt("levelDifference", 20); ничего не возвратит...[DOUBLEPOST=1470205723,1470205675][/DOUBLEPOST]
    А так разве можно? Ну и если это так, то зачем нужен static?
     
  4. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    this.saveDefaultConfig(); .
    И даже если нету никакого значения, вернётся 20, т.к. я его указал как дэфолтное значение.
    Можно. static нужен для таких вещей, которые не нужно инициализировать из одной копии класса в другой. Т.е. если у тебя есть лист с данными, которые никогда не меняются, то лучше будет его объявить финальной статической переменной (лол, переменной), т.е.
    Code:
    public static final List someData = Arrays.asList(data);
    А вообще понимание когда стоит использовать статические ссылки приходит с опытом. Которого у вас нету :trf:
     
  5. Mr_RoboMan

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

    Trophy Points:
    123
    Вместо каких this? Ты про что?
     
  6. _MediaNik_

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

    Trophy Points:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Ну в твоем классе ты пишешь:
    this.configFile = new File(this.getDataFolder().getAbsolutePath(), "config.yml");
    this.config = YamlConfiguration.loadConfiguration((File)this.configFile);
    this.getServer().getPluginManager().registerEvents((Listener)this, (Plugin)this);
    this.getLogger().log(Level.INFO, "Enabled!");
    Зачем?
     
  7. Mr_RoboMan

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

    Trophy Points:
    123
    Ты дурачек?
     
  8. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Лично мне быстрее написать "this.con" и выбрать нужное мне, чем тыкать Ctrl+Space и искать что либо.
    Да и, имхо, так красивее выглядит :D
     
  9. _MediaNik_

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

    Trophy Points:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Ну а если и так, то все-равно не докажешь. Хаха
     
  10. Mr_RoboMan

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

    Trophy Points:
    123
    Человек, я не хочу тебя огорчать, НО, то что твой декомпилятор решил назвать моим кодом - не мой код.
    Это то как решил его показать тебе твой декомпилятор.
    [​IMG][DOUBLEPOST=1470206829,1470206786][/DOUBLEPOST]P.S. И декомпилятор у тебя дурачек тоже, jd-gui декомпилирует без всех этих "this" каких-то бесполезных кастов, и т.д..
     
  11. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ты разделил 20 строк кода на два класса.
    #доказательства #изи #какМалыша #неНапрягаясь
     
  12. _MediaNik_

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

    Trophy Points:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Ну и шо?
    Это не я виноват, это все он
     
  13. Mr_RoboMan

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

    Trophy Points:
    123
    Ладно, я пездун3000, jd-gui тоже декомпилит не совсем правильно...
    Но все-равно лучше чем твой!
    [​IMG]
     
  14. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    fernflower
    2016 08 03_13-52-08.png
     
  15. Mr_RoboMan

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

    Trophy Points:
    123
  16. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Мамка твоя щит. Лично я не хочу гадать откуда вызывается тот или иной метод.
     
  17. Mr_RoboMan

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

    Trophy Points:
    123
    Сам такой(9((
     
  18. _MediaNik_

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

    Trophy Points:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    НЕАДЕКВАТ!!!! МОДЕРОВ СУДУ
     
  19. CoolBoy

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

    Trophy Points:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    1 совсем глупый вопрос.
    Есть ли какая-либо разница при сравнении EntityType или Material?
    Например, я всегда сравниваю через ==:
    Code:
    if (Material.GRASS == Material.GRASS)
    
    Ты сравнил EntityType через .equals:
    Code:
    if (EntityType.PLAYER.equals(EntityType.PLAYER) {
    
    Собственно, вопрос:
    Разве через .equals не сравниваются лишь строковые значения? И почему equals вместо "=="?
     
  20. Dereku

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Через equals сравниваются объекты, у которых вроде бы как есть hashCode(), но точно не могу сказать, ибо доки джавы не читаю (а надо бы).
    Т.е.
    Code:
    JavaPlugin plugin = this;
    boolean isEquals = plugin.equals(this); //true
    Пятка левой ноги так захотела. А я не люблю отказывать.
     
  21. Mr_RoboMan

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

    Trophy Points:
    123
    Я Енумы всегда через "==" сравниваю..
     

Share This Page