Solved Trying to add to ArrayList after 5 seconds

Discussion in 'Plugin Development' started by SiezureSalad, Aug 5, 2016.

Thread Status:
Not open for further replies.
  1. Offline

    SiezureSalad

    I'm making a temporary pvp protection after respawn. It adds them to protection array after respawn, then 5 seconds after (100 ticks) it removes them. Don't mind the message sending that's just debugging. When I respawn I get this error message:


    Code:
    C:\Users\Spider\Desktop\Server>java -Xmx1024M -jar craftbukkit1.7.jar -o true
    Loading libraries, please wait...
    [05:04:33 INFO]: Starting minecraft server version 1.7.10
    [05:04:33 INFO]: Loading properties
    [05:04:33 INFO]: Default game type: SURVIVAL
    [05:04:33 INFO]: Generating keypair
    [05:04:33 INFO]: Starting Minecraft server on *:25565
    [05:04:33 INFO]: This server is running CraftBukkit version git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks (MC: 1.7.10) (Implementing API version 1.7.10-R0.1-SNAPSHOT)
    [05:04:33 ERROR]: Ambiguous plugin name `RoyaleEnchanting' for files `plugins\RoyaleEnchanting.jar' and `plugins\RoyaleCustomCraft.jar' in `plugins'
    [05:04:33 INFO]: [RoyaleBorder] Loading RoyaleBorder v1.0
    [05:04:33 INFO]: [RoyalePotionLimiter] Loading RoyalePotionLimiter v1.0
    [05:04:33 INFO]: [RoyaleRespawn] Loading RoyaleRespawn v1.0
    [05:04:33 INFO]: [RoyaleEventHandle] Loading RoyaleEventHandle v1.0
    [05:04:33 INFO]: [RoyaleDeathBan] Loading RoyaleDeathBan v1.0
    [05:04:33 INFO]: [RoyaleEnchanting] Loading RoyaleEnchanting v1.0
    [05:04:33 INFO]: [RoyaleMain] Loading RoyaleMain v1.0
    [05:04:33 INFO]: [RoyaleWorldGuard] Loading RoyaleWorldGuard v1.0
    [05:04:33 INFO]: Preparing level "world"
    [05:04:33 INFO]: Preparing start region for level 0 (Seed: 3202342053056863501)
    [05:04:33 WARN]: Exception in thread "Thread-7"
    [05:04:33 WARN]: org.bukkit.craftbukkit.libs.com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 7
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:180)
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.Gson.fromJson(Gson.java:755)
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.Gson.fromJson(Gson.java:694)
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.BukkitDLUpdaterService.fetchArtifact(BukkitDLUpdaterService.java:53)
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.BukkitDLUpdaterService.getArtifact(BukkitDLUpdaterService.java:30)
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.AutoUpdater$1.run(AutoUpdater.java:77)
    [05:04:33 WARN]: Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 7
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
    [05:04:33 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:168)
    [05:04:33 WARN]:        ... 5 more
    [05:04:34 INFO]: Preparing start region for level 1 (Seed: 8023853212068130101)
    [05:04:34 INFO]: Preparing start region for level 2 (Seed: 8023853212068130101)
    [05:04:34 INFO]: [RoyaleBorder] Enabling RoyaleBorder v1.0
    [05:04:34 INFO]: [RoyalePotionLimiter] Enabling RoyalePotionLimiter v1.0
    [05:04:34 INFO]: [RoyaleRespawn] Enabling RoyaleRespawn v1.0
    [05:04:34 INFO]: [RoyaleEventHandle] Enabling RoyaleEventHandle v1.0
    [05:04:34 INFO]: [RoyaleDeathBan] Enabling RoyaleDeathBan v1.0
    [05:04:34 INFO]: [RoyaleEnchanting] Enabling RoyaleEnchanting v1.0
    [05:04:34 INFO]: [RoyaleMain] Enabling RoyaleMain v1.0
    [05:04:34 INFO]: [RoyaleWorldGuard] Enabling RoyaleWorldGuard v1.0
    [05:04:34 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [05:04:34 INFO]: Done (0.999s)! For help, type "help" or "?"
    [05:04:36 INFO]: UUID of player Eav is 8574c93c-c2a9-4129-ab18-f9931f04c516
    [05:04:36 INFO]: Eav[/127.0.0.1:53927] logged in with entity id 448 at ([world] 20.5, 71.0, 252.5)
    [05:04:37 INFO]: Eav issued server command: /kill
    [05:04:37 INFO]: Eav died
    [05:04:38 ERROR]: Could not pass event PlayerRespawnEvent to RoyaleRespawn v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerList.moveToWorld(PlayerList.java:494) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerList.moveToWorld(PlayerList.java:433) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1142) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInClientCommand.a(SourceFile:50) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInClientCommand.handle(SourceFile:8) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    Caused by: java.lang.ClassCastException: me.billy.eav.RespawnListener cannot be cast to org.bukkit.plugin.Plugin
            at me.billy.eav.RespawnListener.onRespawn(RespawnListener.java:41) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            ... 15 more
    >
    Says something about line 41 so I assume I'm using this wrong or something. (Could it be to do with me casting this with (Plugin))?

    My main class RoyaleRespawn.java:

    Code:
    package me.billy.eav;
    
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class RoyaleRespawn extends JavaPlugin{
       
        @Override
        public void onEnable(){
           
            new RespawnListener(this);
        }
    
    }
    
    My listener RespawnListener.java:

    Code:
    package me.billy.eav;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerRespawnEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.scheduler.BukkitRunnable;
    
    public class RespawnListener implements Listener{
       
        Boolean pvp = true;
        ArrayList<Player> pvpProtection = new ArrayList<Player>();
       
        public RespawnListener(RoyaleRespawn plugin) {
            plugin.getServer().getPluginManager().registerEvents(this, plugin);
        }
       
        @SuppressWarnings("deprecation")
        @EventHandler
        public void onRespawn(PlayerRespawnEvent event) {
           
            final Player player = event.getPlayer();
           
            ItemStack rod = new ItemStack(Material.FISHING_ROD);
            rod.addEnchantment(Enchantment.LURE, 2);
            rod.getItemMeta().setDisplayName("Respawn Fishing Rod");
            player.getInventory().addItem(rod);
           
    //Add player to protection array list
            player.sendMessage(pvpProtection.toString());
            pvpProtection.add(player);
            player.sendMessage(pvpProtection.toString());
           
            Bukkit.getServer().getScheduler().scheduleSyncDelayedTask((Plugin) this, new BukkitRunnable() {
               
                @Override
                public void run() {
    
                    player.sendMessage(pvpProtection.toString());
                    pvpProtection.remove(player);
                    player.sendMessage(pvpProtection.toString());               
                }
            }, 100);
        }
    }
    
    any help is appreciated, I've been on this for 3 days.
     
  2. @SiezureSalad
    You can't cast your Listener class to Plugin! You must put in thr instance of the Main, JavaPlugin-extending class.
     
  3. Offline

    SiezureSalad

    I know people don't like to spoon feed on here but please could you tell me where and how... Thanks ily <3
     
  4. @SiezureSalad
    Rather simple, just replace "this" with "plugin".
     
  5. @SiezureSalad Don't use th Boolean object, just use boolean. Store UUID rather than the Player object, don't use deprecated methods, make things private that don't need to be public or package.
     
  6. Offline

    MordorKing78

    I'd recommend you to register a Listener like this (personal preference);
    Code:
            PluginManager pm = getServer().getPluginManager();
           
            pm.registerEvents(new <ListenerHere>(this), this);
     
  7. Offline

    Zombie_Striker

    @MordorKing78
    If you're only going to use pm once, there is no need to create that variable. True, your way is more compact, but you are wasting memory space.
     
    bwfcwalshy likes this.
  8. Offline

    x_Jake_s

    Okay
    Code:
    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask((Plugin) this, new BukkitRunnable() {
    The ONLY issue here is you are casting (Plugin) --> this, which is a big no.
    you need to make a reference to your plugin for example in your main class go to your onEnable() {}

    The best way of implementing a class is like so:
    Code:
    Bukkit.getServer().getPluginManager().registerEvents(new <ListenerHere>(this), this);
    When you write that it will offer an error so you can simply hover over it and select create constructor which will create a constructor in your listener class that resembles this:
    Code:
    public <ListenerClass>(<MainClass> plugin) {
       
    }
    then all you have to do is create a way to reference your main class so above the constructor you would need to reference it like so
    Code:
    <MainClass> plugin;
    this simply set it like so :
    Code:
    <MainClass> plugin;
    
    public <ListenerClass>(<MainClass> plugin) {
        plugin = plugin;
    }
    now that you have made the reference simply go to your DelayedTask and replace (this) with (plugin) like so:
    Code:
    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new BukkitRunnable() {
    This is something to practice when making a listener file or any extra class file in that case if it has to refer back to your Main class, I have provided you nothing more then what Bukkit and Information found in the Javadocs provides its your job to interoperate it and change it to your needs.
     
  9. Offline

    MordorKing78

    @Zombie_Striker true but if you're using multiple classes it isn't is it? But I see your point since he's only using one class.
     
  10. @MordorKing78 It can be useful but I wouldn't say so unless you have like 4/5+ different listeners
     
  11. Offline

    SiezureSalad

    After doing that I get this error message in the console (this is after respawning once - it shows an error twice):

    Code:
    C:\Users\Spider\Desktop\Server>java -Xmx1024M -jar craftbukkit1.7.jar -o true
    Loading libraries, please wait...
    [02:41:40 INFO]: Starting minecraft server version 1.7.10
    [02:41:40 INFO]: Loading properties
    [02:41:40 INFO]: Default game type: SURVIVAL
    [02:41:40 INFO]: Generating keypair
    [02:41:40 INFO]: Starting Minecraft server on *:25565
    [02:41:41 INFO]: This server is running CraftBukkit version git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks (MC: 1.7.10) (Implementing API version 1.7.10-R0.1-SNAPSHOT)
    [02:41:41 ERROR]: Ambiguous plugin name `RoyaleEnchanting' for files `plugins\RoyaleEnchanting.jar' and `plugins\RoyaleCustomCraft.jar' in `plugins'
    [02:41:41 INFO]: [RoyaleBorder] Loading RoyaleBorder v1.0
    [02:41:41 INFO]: [RoyalePotionLimiter] Loading RoyalePotionLimiter v1.0
    [02:41:41 INFO]: [RoyaleRespawn] Loading RoyaleRespawn v1.0
    [02:41:41 INFO]: [RoyaleEventHandle] Loading RoyaleEventHandle v1.0
    [02:41:41 INFO]: [RoyaleDeathBan] Loading RoyaleDeathBan v1.0
    [02:41:41 INFO]: [RoyaleEnchanting] Loading RoyaleEnchanting v1.0
    [02:41:41 INFO]: [RoyaleMain] Loading RoyaleMain v1.0
    [02:41:41 INFO]: [RoyaleWorldGuard] Loading RoyaleWorldGuard v1.0
    [02:41:41 INFO]: Preparing level "world"
    [02:41:41 INFO]: Preparing start region for level 0 (Seed: 3202342053056863501)
    [02:41:41 WARN]: Exception in thread "Thread-7"
    [02:41:41 WARN]: org.bukkit.craftbukkit.libs.com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 7
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:180)
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.Gson.fromJson(Gson.java:755)
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.Gson.fromJson(Gson.java:694)
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.BukkitDLUpdaterService.fetchArtifact(BukkitDLUpdaterService.java:53)
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.BukkitDLUpdaterService.getArtifact(BukkitDLUpdaterService.java:30)
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.AutoUpdater$1.run(AutoUpdater.java:77)
    [02:41:41 WARN]: Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 7
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
    [02:41:41 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:168)
    [02:41:41 WARN]:        ... 5 more
    [02:41:41 INFO]: Preparing start region for level 1 (Seed: 8023853212068130101)
    [02:41:42 INFO]: Preparing start region for level 2 (Seed: 8023853212068130101)
    [02:41:42 INFO]: [RoyaleBorder] Enabling RoyaleBorder v1.0
    [02:41:42 INFO]: [RoyalePotionLimiter] Enabling RoyalePotionLimiter v1.0
    [02:41:42 INFO]: [RoyaleRespawn] Enabling RoyaleRespawn v1.0
    [02:41:42 INFO]: [RoyaleEventHandle] Enabling RoyaleEventHandle v1.0
    [02:41:42 INFO]: [RoyaleDeathBan] Enabling RoyaleDeathBan v1.0
    [02:41:42 INFO]: [RoyaleEnchanting] Enabling RoyaleEnchanting v1.0
    [02:41:42 INFO]: [RoyaleMain] Enabling RoyaleMain v1.0
    [02:41:42 INFO]: [RoyaleWorldGuard] Enabling RoyaleWorldGuard v1.0
    [02:41:42 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [02:41:42 INFO]: Done (1.051s)! For help, type "help" or "?"
    [02:41:43 INFO]: UUID of player Eav is 8574c93c-c2a9-4129-ab18-f9931f04c516
    [02:41:43 INFO]: Eav[/127.0.0.1:62788] logged in with entity id 446 at ([world] 33.161408530808316, 72.0, 252.76765170165208)
    [02:41:47 INFO]: Eav issued server command: /kill
    [02:41:47 INFO]: Eav died
    [02:41:48 ERROR]: Could not pass event PlayerRespawnEvent to RoyaleRespawn v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerList.moveToWorld(PlayerList.java:494) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerList.moveToWorld(PlayerList.java:433) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1142) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInClientCommand.a(SourceFile:50) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInClientCommand.handle(SourceFile:8) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
            at org.apache.commons.lang.Validate.notNull(Validate.java:203) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.validate(CraftScheduler.java:395) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:123) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.scheduleSyncRepeatingTask(CraftScheduler.java:119) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.scheduleSyncDelayedTask(CraftScheduler.java:102) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at me.billy.eav.RespawnListener.onRespawn(RespawnListener.java:41) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            ... 15 more
    [02:41:48 ERROR]: Could not pass event PlayerRespawnEvent to RoyaleRespawn v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerList.moveToWorld(PlayerList.java:494) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerList.moveToWorld(PlayerList.java:433) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1142) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInClientCommand.a(SourceFile:50) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInClientCommand.handle(SourceFile:8) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
            at org.apache.commons.lang.Validate.notNull(Validate.java:203) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.validate(CraftScheduler.java:395) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:123) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.scheduleSyncRepeatingTask(CraftScheduler.java:119) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.scheduleSyncDelayedTask(CraftScheduler.java:102) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at me.billy.eav.RespawnListener.onRespawn(RespawnListener.java:41) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            ... 15 more
    >
    RoyaleRespawn (main):
    Code:
    package me.billy.eav;
    
    import org.bukkit.Bukkit;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class RoyaleRespawn extends JavaPlugin{
     
        @Override
        public void onEnable(){
         
            Bukkit.getServer().getPluginManager().registerEvents(new RespawnListener(this), this);
        }
    
    }
    
    RespawnListener (listener):

    Code:
    package me.billy.eav;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerRespawnEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.Plugin;
    
    public class RespawnListener implements Listener{
     
        Boolean pvp = true;
        ArrayList<Player> pvpProtection = new ArrayList<Player>();
        RoyaleRespawn plugin;
     
        public RespawnListener(RoyaleRespawn plugin) {
            plugin.getServer().getPluginManager().registerEvents(this, plugin);
         
        }
     
        @EventHandler
        public void onRespawn(PlayerRespawnEvent event) {
         
            final Player player = event.getPlayer();
         
            ItemStack rod = new ItemStack(Material.FISHING_ROD);
            rod.addEnchantment(Enchantment.LURE, 2);
            rod.getItemMeta().setDisplayName("Respawn Fishing Rod");
            player.getInventory().addItem(rod);
         
    //Add player to protection array list
            player.sendMessage(pvpProtection.toString());
            pvpProtection.add(player);
            player.sendMessage(pvpProtection.toString());
         
            Bukkit.getServer().getScheduler().scheduleSyncDelayedTask((Plugin) plugin, new Runnable() {
                @Override
                public void run() {
    
                    player.sendMessage(pvpProtection.toString());
                    pvpProtection.remove(player);
                    player.sendMessage(pvpProtection.toString());             
                }
             
            },20 * 10);
        }
     
    //    @Override
    //    public void run() {
    //
    //        player.sendMessage(pvpProtection.toString());
    //        pvpProtection.remove(player);
    //        player.sendMessage(pvpProtection.toString());             
    //    }
    // 
    //    @EventHandler
    //    public void onAttack(EntityDamageByEntityEvent event) {
    //     
    //        if (event.getDamager() instanceof Player && event.getEntity() instanceof Player) {
    //         
    //            Player attacker = (Player) event.getDamager();
    //            Player defender = (Player) event.getDamager();
    //         
    //            if (pvpProtection.contains(defender)) {
    //             
    //             
    //            }
    //        }
    //    }
    
    }
    
    I also tried the other method of scheduleSyncDelayedTask with BukkitRunnable() and the same outcome.

    It gives me 2 fishing rods btw.

    @bwfcwalshy what other method could I use other than this deprecated one?
     
    Last edited: Aug 7, 2016
  12. Offline

    MordorKing78

    @bwfcwalshy Aye okay, thanks for clearing that up! :)
     
  13. Offline

    Zombie_Striker

    You only need to register your class once. Keep the line for the onEnable, and remove the line for the constructor.
    The reason why you were getting this error was because you have not set plugin equal to anything. In order for you to have fixed it, you would have has to have used the instance from the parameter, But now that does not matter, since you are already registering it in the onEnable.
     
  14. Offline

    SiezureSalad

    Btw I changed the method to .runTaskTimer() because apparently it is better and not deprecated but I assume the reference is still the only problem.

    After doing what you suggested I only get one error message, which is progress :D but I still get it:


    Code:
    C:\Users\Spider\Desktop\Server>java -Xmx1024M -jar craftbukkit1.7.jar -o true
    Loading libraries, please wait...
    [05:59:56 INFO]: Starting minecraft server version 1.7.10
    [05:59:56 INFO]: Loading properties
    [05:59:56 INFO]: Default game type: SURVIVAL
    [05:59:56 INFO]: Generating keypair
    [05:59:56 INFO]: Starting Minecraft server on *:25565
    [05:59:56 INFO]: This server is running CraftBukkit version git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks (MC: 1.7.10) (Implementing API version 1.7.10-R0.1-SNAPSHOT)
    [05:59:56 ERROR]: Ambiguous plugin name `RoyaleEnchanting' for files `plugins\RoyaleEnchanting.jar' and `plugins\RoyaleCustomCraft.jar' in `plugins'
    [05:59:56 INFO]: [RoyaleBorder] Loading RoyaleBorder v1.0
    [05:59:56 INFO]: [RoyalePotionLimiter] Loading RoyalePotionLimiter v1.0
    [05:59:56 INFO]: [RoyaleRespawn] Loading RoyaleRespawn v1.0
    [05:59:56 INFO]: [RoyaleEventHandle] Loading RoyaleEventHandle v1.0
    [05:59:56 INFO]: [RoyaleDeathBan] Loading RoyaleDeathBan v1.0
    [05:59:56 INFO]: [RoyaleEnchanting] Loading RoyaleEnchanting v1.0
    [05:59:56 INFO]: [RoyaleMain] Loading RoyaleMain v1.0
    [05:59:56 INFO]: [RoyaleWorldGuard] Loading RoyaleWorldGuard v1.0
    [05:59:56 INFO]: Preparing level "world"
    [05:59:56 INFO]: Preparing start region for level 0 (Seed: 3202342053056863501)
    [05:59:56 WARN]: Exception in thread "Thread-7"
    [05:59:56 WARN]: org.bukkit.craftbukkit.libs.com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 7
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:180)
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.Gson.fromJson(Gson.java:755)
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.Gson.fromJson(Gson.java:694)
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.BukkitDLUpdaterService.fetchArtifact(BukkitDLUpdaterService.java:53)
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.BukkitDLUpdaterService.getArtifact(BukkitDLUpdaterService.java:30)
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.v1_7_R4.updater.AutoUpdater$1.run(AutoUpdater.java:77)
    [05:59:56 WARN]: Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 7
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
    [05:59:56 WARN]:        at org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:168)
    [05:59:56 WARN]:        ... 5 more
    [05:59:57 INFO]: Preparing start region for level 1 (Seed: 8023853212068130101)
    [05:59:57 INFO]: Preparing start region for level 2 (Seed: 8023853212068130101)
    [05:59:57 INFO]: [RoyaleBorder] Enabling RoyaleBorder v1.0
    [05:59:57 INFO]: [RoyalePotionLimiter] Enabling RoyalePotionLimiter v1.0
    [05:59:57 INFO]: [RoyaleRespawn] Enabling RoyaleRespawn v1.0
    [05:59:57 INFO]: [RoyaleEventHandle] Enabling RoyaleEventHandle v1.0
    [05:59:57 INFO]: [RoyaleDeathBan] Enabling RoyaleDeathBan v1.0
    [05:59:57 INFO]: [RoyaleEnchanting] Enabling RoyaleEnchanting v1.0
    [05:59:57 INFO]: [RoyaleMain] Enabling RoyaleMain v1.0
    [05:59:57 INFO]: [RoyaleWorldGuard] Enabling RoyaleWorldGuard v1.0
    [05:59:57 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [05:59:57 INFO]: Done (0.931s)! For help, type "help" or "?"
    [06:00:00 INFO]: UUID of player Eav is 8574c93c-c2a9-4129-ab18-f9931f04c516
    [06:00:00 INFO]: Eav[/127.0.0.1:50543] logged in with entity id 466 at ([world] 20.5, 71.0, 252.5)
    [06:00:02 INFO]: Eav issued server command: /kill
    [06:00:02 INFO]: Eav died
    [06:00:03 ERROR]: Could not pass event PlayerRespawnEvent to RoyaleRespawn v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerList.moveToWorld(PlayerList.java:494) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerList.moveToWorld(PlayerList.java:433) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1142) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInClientCommand.a(SourceFile:50) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.PacketPlayInClientCommand.handle(SourceFile:8) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
            at org.apache.commons.lang.Validate.notNull(Validate.java:203) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.validate(CraftScheduler.java:395) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:123) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at org.bukkit.scheduler.BukkitRunnable.runTaskTimer(BukkitRunnable.java:100) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            at me.billy.eav.RespawnListener.onRespawn(RespawnListener.java:46) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit1.7.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
            ... 15 more
    >
    Main:

    Code:
    package me.billy.eav;
    
    import org.bukkit.Bukkit;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class RoyaleRespawn extends JavaPlugin{
       
        @Override
        public void onEnable(){
           
            Bukkit.getServer().getPluginManager().registerEvents(new RespawnListener (this), this);
       
        }
    
    }
    
    Listener: (I removed the line you suggested)

    Code:
    package me.billy.eav;
    import java.util.ArrayList;
    import org.bukkit.Material;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerRespawnEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.scheduler.BukkitRunnable;
    public class RespawnListener implements Listener{
      
        Boolean pvp = true;
        ArrayList<Player> pvpProtection = new ArrayList<Player>();
        public RoyaleRespawn plugin;
      
        public RespawnListener(RoyaleRespawn plugin) {
        }
      
        @EventHandler
        public void onRespawn(PlayerRespawnEvent event) {
          
            final Player player = event.getPlayer();
          
    //Give player fishing rod       
            ItemStack rod = new ItemStack(Material.FISHING_ROD);
            rod.addEnchantment(Enchantment.LURE, 2);
            rod.getItemMeta().setDisplayName("Respawn Fishing Rod");
            player.getInventory().addItem(rod);
          
    //Add player to protection array list
            pvpProtection.add(player);
            player.sendMessage(pvpProtection.toString());
          
            new BukkitRunnable() {
               
                @Override
                public void run() {
                    pvpProtection.remove(player);
                    player.sendMessage(pvpProtection.toString());
                   
                }
            }.runTaskTimer(plugin, 0, 20);
        }
    }
     
  15. Offline

    Zombie_Striker

    @SiezureSalad
    The issue is that plugin is still not set to anything. Add the following line to the RespawnListener constructor
    Code:
    this.plugin = plugin;
     
  16. Offline

    SiezureSalad

    Thanks man. Thanks everyone for helping. This worked out in the end :D

    Only problem I have now is that they are not protected from people shooting them with bows, or hitting them with the projectile part of a fishing rod. I've tried out ProjectileLaunchEvent but there doesn't seem to be any reference to the target or sender of the projectile. (Should I post this in a new thread considering it is about a different event?)
     
  17. A new thread would be better, but to answer your question, just use PlayerDamageEvent and check the cause.
     
  18. Offline

    SiezureSalad

    There is no such thing as PlayerDamageEvent?

    I've figured out how to do it with bows, only I do not know the entity value for the fishing hook, even though the JavaDocs say FishHook is valid, it will not let me import it:


    PHP:
        @EventHandler
        
    public void onAttack(EntityDamageByEntityEvent event) {
            if (
    event.getEntity() instanceof Player && event.getDamager() instanceof Player) {
                
    Player defender = (Playerevent.getEntity();
                
    Player attacker = (Playerevent.getDamager();
              
    //Cancel the attack event if defender has protection
                
    if (pvpProtection.contains(defender)) {
                  
                    
    event.setCancelled(true);
                    
    attacker.sendMessage(ChatColor.RED "This player has PvP protection.");
                }
              
    //Remove protection from attacker
                
    if (pvpProtection.contains(attacker)) {
                  
                    
    pvpProtection.remove(attacker);
                    
    attacker.sendMessage(ChatColor.RED "You not longer have PvP protection.");
                }
            }
          
    //Bow shooting
            
    if (event.getDamager() instanceof Arrow) {
              
                
    Arrow arrow = (Arrowevent.getDamager();
                
    Player defender = (Playerevent.getEntity();
                
    Player attacker = (Playerarrow.getShooter();
              
                if (
    pvpProtection.contains(defender)) {
                  
                    
    event.setCancelled(true);
                    
    attacker.sendMessage(ChatColor.RED "This player has PvP protection.");
                }
            }
          
    //Fishing rod attack
            
    if (event.getDamager() instanceof FishHook) {
              
            }
        }
     
Thread Status:
Not open for further replies.

Share This Page