Вопрос Как отменять Пвп Режим

rezetkakiller

Заблокирован
Сообщения
11
Хочу сделать отмену пвп режима в своем плагине, если игрок бьёт мотыгой, как это сделать. (Плагин AntiRelog от Славика)
 
Последнее редактирование:
QUOTE="BlackBaroness, post: 72248, member: 1053"]
Код:
JavaPlugin.getPlugin(Antirelog.class).getPvpManager().stopPvP(player)
[/QUOTE]
При ударе
[23:54:14 ERROR]: Could not pass event EntityDamageByEntityEvent to StickHelper v1.0-SNAPSHOT
org.bukkit.event.EventException: null
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:72) ~[patched_1.12.2.jar:git-Paper-1620]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[patched_1.12.2.jar:git-Paper-1620]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched_1.12.2.jar:git-Paper-1620]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:513) ~[patched_1.12.2.jar:git-Paper-1620]
at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:94) ~[patched_1.12.2.jar:git-Paper-1620]
at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:620) ~[patched_1.12.2.jar:git-Paper-1620]
at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:523) ~[patched_1.12.2.jar:git-Paper-1620]
at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:652) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity0(EntityLiving.java:1415) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity0(EntityHuman.java:860) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity(EntityLiving.java:888) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity(EntityHuman.java:773) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.EntityPlayer.damageEntity(EntityPlayer.java:629) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.EntityHuman.attack(EntityHuman.java:1028) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.EntityPlayer.attack(EntityPlayer.java:1397) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1724) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(PacketPlayInUseEntity.java:49) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(PacketPlayInUseEntity.java:6) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[patched_1.12.2.jar:git-Paper-1620]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_301]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_301]
at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:850) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666) ~[patched_1.12.2.jar:git-Paper-1620]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_301]
Caused by: java.lang.NullPointerException
at ru.merkii.check.listener.CheckListener.onDamage(CheckListener.java:34) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor789.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:70) ~[patched_1.12.2.jar:git-Paper-1620]
... 26 more
Java:
package ru.merkii.check.listener;

import org.bukkit.event.EventPriority;

import org.bukkit.event.EventHandler;

import org.bukkit.plugin.Plugin;

import org.bukkit.Bukkit;

import org.bukkit.plugin.java.JavaPlugin;

import ru.leymooo.antirelog.Antirelog;

import ru.merkii.check.configuration.CCLocale;

import ru.merkii.check.CheckPlugin;

import org.bukkit.Material;

import de.myzelyam.api.vanish.VanishAPI;

import org.bukkit.entity.Player;

import org.bukkit.event.entity.EntityDamageByEntityEvent;

import org.bukkit.event.Listener;

public class CheckListener implements Listener {

    @EventHandler(priority = EventPriority.HIGH)

    public void onDamage(final EntityDamageByEntityEvent e) {

        if (!(e.getDamager() instanceof Player)) {

            return;

        }

        if (!(e.getEntity() instanceof Player)) {

            return;

        }

        final Player target = (Player) e.getEntity();

        final Player damager = (Player) e.getDamager();

        if (VanishAPI.isInvisible(damager) && damager.getInventory().getItemInMainHand().getType() == Material.WOOD_HOE) {

            for (final String names : CheckPlugin.getInstance().getSettings().getNames()) {

                if (target.getName().equalsIgnoreCase(names)) {

                    continue;

                }

                if (CheckPlugin.getInstance().getPvpManager().isInPvP(target)) {

                    continue;

                }

                CCLocale.DAMAGE_TARGET.tag("helper", (Object)damager.getName()).send(target);

                e.setCancelled(false);

                Bukkit.getScheduler().runTaskLater((Plugin)CheckPlugin.getInstance(), () -> {

                    JavaPlugin.getPlugin(Antirelog.class).getPvpManager().stopPvP(damager);

                    JavaPlugin.getPlugin(Antirelog.class).getPvpManager().stopPvP(target);

                }, 2L);

            }

        }

    }

}
package ru.merkii.check.listener;

import org.bukkit.event.EventPriority;
import org.bukkit.event.EventHandler;
import org.bukkit.plugin.Plugin;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import ru.leymooo.antirelog.Antirelog;
import ru.merkii.check.configuration.CCLocale;
import ru.merkii.check.CheckPlugin;
import org.bukkit.Material;
import de.myzelyam.api.vanish.VanishAPI;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.Listener;

public class CheckListener implements Listener {

@EventHandler(priority = EventPriority.HIGH)
public void onDamage(final EntityDamageByEntityEvent e) {
if (!(e.getDamager() instanceof Player)) {
return;
}
if (!(e.getEntity() instanceof Player)) {
return;
}
final Player target = (Player) e.getEntity();
final Player damager = (Player) e.getDamager();
if (VanishAPI.isInvisible(damager) && damager.getInventory().getItemInMainHand().getType() == Material.WOOD_HOE) {
for (final String names : CheckPlugin.getInstance().getSettings().getNames()) {
if (target.getName().equalsIgnoreCase(names)) {
continue;
}
if (CheckPlugin.getInstance().getPvpManager().isInPvP(target)) {
continue;
}
CCLocale.DAMAGE_TARGET.tag("helper", (Object)damager.getName()).send(target);
e.setCancelled(false);
Bukkit.getScheduler().runTaskLater((Plugin)CheckPlugin.getInstance(), () -> {
JavaPlugin.getPlugin(Antirelog.class).getPvpManager().stopPvP(damager);
JavaPlugin.getPlugin(Antirelog.class).getPvpManager().stopPvP(target);
}, 2L);
}
}
}
}
 
Точно! Спасибо! Только теперь в чат пишется что Вы вышли с пвп, можно это сообщение отменить?
Наверное использовать метод stopSilentPvP или какой там такой был. Если не поможет, то если только переписать Antirelog под свои требования
 
Наверное использовать метод stopSilentPvP или какой там такой был. Если не поможет, то если только переписать Antirelog под свои требования
Да, это сработало, только теперь сообщение о пвп появляется. Придется релог переписать:(
 
Назад
Сверху Снизу