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

Помогите Запрет PVP в gm/fly/creat

  • Автор темы Автор темы Rbiter
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Rbiter

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Rbiter
Решил написать первый плагин. Сразу повторюсь что java не знаю, а скрипт нашел на каком то буржуйском сайте.
Что я делаю не так?


Код:
package ru;

import java.util.logging.Logger;

import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.craftbukkit.v1_8_R1.Overridden;
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;

public class main extends JavaPlugin implements Listener {
    public static final Logger _log = Logger.getLogger("Minecraft");
    @Overridden
    public void onEnable() {
        _log.info("StopPVP is enable");
    }
    @EventHandler
    public void onAttack(EntityDamageByEntityEvent e) {
        if(e.getDamager() instanceof Player & e.getEntity() instanceof Player) {
          Player p = (Player)e.getDamager();
          if(!p.isOp()){
            if(p.getGameMode() == GameMode.CREATIVE){
                e.setCancelled(true);
                p.sendMessage(ChatColor.RED + "Выключите креатив для атаки игроков.");
              }
              if(p.isFlying()) {
                  e.setCancelled(true);
                  p.sendMessage(ChatColor.RED + "Выключите fly для атаки игроков.");
              }
              if (p.hasMetadata("god")) {
                  e.setCancelled(true);
                  p.sendMessage(ChatColor.RED + "Выключите god для атаки игроков.");
              }
        }
      }
    
    }
   }
}
Собственно из моего там только:

Код:
    @Overridden
    public void onEnable() {
        _log.info("StopPVP is enable");
    }
:D. При компиляции проблем никаких. При запуске плагина то же. Но он не отправляет игроку сообщение это раз. Запрещает бить только в режиме бога. Флай и гм просто игнорирует...
Что делать?
 
Своё всегда лучше.
Плюсую, + простой плагин, как раз для начала)
Тем более отличная практика ибо учу язык java
А почему игроку не отправляются сообщения при нанесении урона в режиме бога?
Сейчас переписываю потихоньку код, не оч работоспособен оказался он.
 
Последнее редактирование:
Омг. А кто события регистрировать будет?
В onEnable пропиши:
Код:
Bukkit.getPluginManager().registerEvents(this, this);
 
Омг. А кто события регистрировать будет?
В onEnable пропиши:
Код:
Bukkit.getPluginManager().registerEvents(this, this);
С работоспособностью помогли, плагин работает прекрасно. Но в режиме бог почемут не выдает сообщение об атаке. Облазил документацию по BukkitAPI и не нашел там ничего о GodMode или режиме бога.
Режим полета есть, креатив есть а вот режима бога нету О_о. Самое интересное то что он останавливает атаку в боге но сообщение не выдает.
 
С работоспособностью помогли, плагин работает прекрасно. Но в режиме бог почемут не выдает сообщение об атаке. Облазил документацию по BukkitAPI и не нашел там ничего о GodMode или режиме бога.
Режим полета есть, креатив есть а вот режима бога нету О_о. Самое интересное то что он останавливает атаку в боге но сообщение не выдает.
Режим бога это простое отлавливание события урона и его блокировка.
 
Режим бога это простое отлавливание события урона и его блокировка.
Ээ а что тогда делать? Да и если нанесение урона игроком в режиме бога блокируется. Поч не отправляет сообщение? Ошибок в коде же нет и блокирует исправно.
 
Может проверять через Essentials API?
 
Ээ а что тогда делать? Да и если нанесение урона игроком в режиме бога блокируется. Поч не отправляет сообщение? Ошибок в коде же нет и блокирует исправно.
Можно поставить минимальный приоритет слушателя урона и если он был отменен, то разрешать его.
Приоритет выставляется таким образом: Там где пишите @EventHandler, припишите, чтобы получилось так
Java:
@EventHandler(priority=EventPriority.MONITOR)

P.S. С телефона писал, мог опечататься в коде.
 
Может проверять через Essentials API?
точняк!!! /god этож из Essentials :D.
А я EssentialsAPI даж не подключал, тупо свое ядро Spigot подключил :) Щя нд документацию поискать)))
Заранее спасиб!)
Можно поставить минимальный приоритет слушателя урона и если он был отменен, то разрешать его.
Приоритет выставляется таким образом: Там где пишите @EventHandler, припишите, чтобы получилось так
Java:
@EventHandler(priority=EventPriority.MONITOR)

P.S. С телефона писал, мог опечататься в коде.
Если с Essentials непрокатит, попробую.
 
точняк!!! /god этож из Essentials :D.
А я EssentialsAPI даж не подключал, тупо свое ядро Spigot подключил :) Щя нд документацию поискать)))
Заранее спасиб!)

Если с Essentials непрокатит, попробую.

С ним прокатит, но если режим бога будет создавать другой плагин, то это не будет работать. А мой метод универсальный.
 
А причём тут отмена урона? Если игрок в режиме бога ударит другого, то урон пройдёт. В Essentials есть перм, отвечающий за пвп в режиме бога.
 
Автор отпиши мне в лс, дам ИП серва своего посмотришь как у меня сделано, если по нравится то дам алгоритм
 
Я не нашел никакой документации по EssentialsAPI...
Ток BukkitAPI а там этого нету(
киньте хоть какую ни будь инфу...
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх