World Borders (Packet)

Discussion in 'Plugin Development' started by Armandozetaxx, Aug 17, 2017.

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

    Armandozetaxx

    I'm trying to create different world borders for each player and their island, but i'm getting this error:

    Error (open)

    Code:
    [12:34:34 ERROR]: Could not pass event IslandEnterEvent to Bordes v1.0
    org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[Spigot.jar:git-Spigot-edd0396-2a927e8]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Spigot.jar:git-Spigot-edd0396-2a927e8]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:499) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at com.wasteofplastic.askyblock.listeners.PlayerEvents.onPlayerJoin(PlayerEvents.java:233) [askyblock.jar:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
        at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:499) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:346) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:166) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.LoginListener.b(LoginListener.java:159) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.LoginListener.e(LoginListener.java:57) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:233) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:140) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:845) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Spigot.jar:git-Spigot-edd0396-2a927e8]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_65]
    Caused by: java.lang.NullPointerException
        at net.minecraft.server.v1_12_R1.PacketPlayOutWorldBorder.<init>(PacketPlayOutWorldBorder.java:22) ~[Spigot.jar:git-Spigot-edd0396-2a927e8]
        at com.armandozetaxx.Bordes.Eventos.SkyblockEvents.sendWorldBorder(SkyblockEvents.java:73) ~[?:?]
        at com.armandozetaxx.Bordes.Eventos.SkyblockEvents.onIslandEntry(SkyblockEvents.java:38) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
        at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[Spigot.jar:git-Spigot-edd0396-2a927e8]
        ... 23 more


    Here is the code of the class:

    Code (open)

    Code:
    package com.armandozetaxx.Bordes.Eventos;
    
    import java.lang.reflect.Method;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    
    import com.wasteofplastic.askyblock.ASkyBlockAPI;
    import com.wasteofplastic.askyblock.Island;
    import com.wasteofplastic.askyblock.events.IslandEnterEvent;
    import com.wasteofplastic.askyblock.events.IslandNewEvent;
    
    import net.minecraft.server.v1_12_R1.PacketPlayOutWorldBorder;
    import net.minecraft.server.v1_12_R1.PacketPlayOutWorldBorder.EnumWorldBorderAction;
    import net.minecraft.server.v1_12_R1.WorldBorder;
    
    
    public class SkyblockEvents implements Listener {
    
        @EventHandler
        public void onIslandEntry(IslandEnterEvent e){
            Player p = Bukkit.getPlayer(e.getPlayer());
            Island is = ASkyBlockAPI.getInstance().getIslandAt(e.getIslandLocation());
            int size =is.getProtectionSize();
            double x = is.getCenter().getX();
            double z = is.getCenter().getZ();
            sendWorldBorder(p, x, z, size);
        }
      
        public static void sendPacket(Player player, Object packet){
            try {
                Object playerHandle = player.getClass().getMethod("getHandle").invoke(player);
                Object connection = playerHandle.getClass().getField("playerConnection").get(playerHandle);
                Method sendPacket = connection.getClass().getMethod("sendPacket", getServerClass("Packet"));
    
                sendPacket.invoke(connection, packet);
    
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static Class<?> getServerClass(String afterPackage){
            String servPack = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
    
            try {
                return Class.forName("net.minecraft.server." + servPack + "." + afterPackage);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                return null;
            }
        }
    
    
        public static void sendWorldBorder(Player player, double x, double z, int size){
            WorldBorder border = new WorldBorder();
            border.setCenter(x, z);
            border.setSize(size);
    
            PacketPlayOutWorldBorder packet = new PacketPlayOutWorldBorder(border, EnumWorldBorderAction.INITIALIZE);
    
            sendPacket(player, packet);
        }
    
    }


    Hope somebody can explain me what is the error and how to fixed, thank you for your time.
     
Thread Status:
Not open for further replies.

Share This Page