Solved Odd Error

Discussion in 'Plugin Development' started by Binner_Done, Dec 24, 2015.

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

    Binner_Done

    Hello fellow developers! I'm currently making a teleportation plugin but I'm stuck on my signs, I'll post the code and error below.

    It's the BlockInteractionEvent that's making the error, it's at the bottom :)
    Error (open)

    24.12 13:08:01 [Server] INFO Fired 24.12 13:08:01 [Server] INFO 1 24.12 13:08:01 [Server] ERROR Could not pass event PlayerInteractEvent to W.A.R.P v1.0 24.12 13:08:01 [Server] INFO org.bukkit.event.EventException 24.12 13:08:01 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:227) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:463) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:736) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_66] 24.12 13:08:01 [Server] INFO at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_66] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.SystemUtils.a(SystemUtils.java:19) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:714) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:367) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66] 24.12 13:08:01 [Server] INFO Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_8_R3.block.CraftBlock cannot be cast to org.bukkit.block.Sign 24.12 13:08:01 [Server] INFO at me.binner_done.warp.Main.onClick(Main.java:235) ~[?:?] 24.12 13:08:01 [Server] INFO at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_66] 24.12 13:08:01 [Server] INFO at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_66] 24.12 13:08:01 [Server] INFO at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_66] 24.12 13:08:01 [Server] INFO at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_66] 24.12 13:08:01 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot40.jar:git-Spigot-ec3f46e-2359f6f] 24.12 13:08:01 [Server] INFO ... 17 more



    Code:
    package me.binner_done.warp;
    
    import java.util.HashMap;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.block.Sign;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener {
        HashMap<Player, Player> tpa = new HashMap<>();
        SettingsManager settings = SettingsManager.getInstance();
    
        public void onEnable() {
            settings.setup(this);
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
        }
    
        public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
            if (!(sender instanceof Player)) {
                sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                        + ChatColor.BOLD + "> " + ChatColor.GRAY + "You must be a player to use W.A.R.P!");
            }
            Player player = (Player) sender;
            if (player.hasPermission("warp.player")) {
                if (command.getName().equalsIgnoreCase("tp")) {
                    if (args.length == 0) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Please specify a player!");
                        return true;
                    }
                    Player target = Bukkit.getServer().getPlayer(args[0]);
                    if (target == null) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Cannot find player " + args[0]);
                        return true;
                    }
                    player.teleport(target.getLocation());
                    player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Teleported to player " + args[0]);
                    return true;
                }
                if (command.getName().equalsIgnoreCase("tpa")) {
                    if (!(args.length == 1)) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Please specify a player!");
                    }
                    Player target = Bukkit.getServer().getPlayer(args[0]);
                    if (target == null) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Player " + args[0] + " doesn't exist!");
                    }
                    tpa.put(target, player);
                    sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Sent a request to " + target.getName() + "!");
                    target.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + player.getName()
                            + " is requesting to teleport to you! Either /tpaccept or /tpdeny");
                }
                if (command.getName().equalsIgnoreCase("tpaccept")) {
                    if ((tpa.get(player) == null)) {
                        sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "You have no pending TP requests!");
                    }
                    tpa.get(player).teleport(player);
                    sender.sendMessage(
                            ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + "" + ChatColor.BOLD
                                    + "> " + ChatColor.GRAY + "You succesfully accepted the Teleportation request!");
                    tpa.get(player).sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Your TP request was accepted!");
                    tpa.put(player, null);
                }
                if (command.getName().equalsIgnoreCase("tpdeny")) {
                    if (tpa.get(player) == null) {
                        sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "You have no pending TP requests!");
    
                    }
                    sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Denied TP request!");
                    tpa.get(player).sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Your TP request was denied!");
                    tpa.put(player, null);
                }
            }
    
            if (command.getName().equalsIgnoreCase("setspawn")) {
                if (player.hasPermission("warp.admin")) {
                    settings.getData().set("spawn.world", player.getLocation().getWorld().getName());
                    settings.getData().set("spawn.x", player.getLocation().getX());
                    settings.getData().set("spawn.y", player.getLocation().getY());
                    settings.getData().set("spawn.z", player.getLocation().getZ());
                    settings.saveData();
                    player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Spawn set!");
                    return true;
                }
            }
            if (command.getName().equalsIgnoreCase("spawn")) {
                if (player.hasPermission("warp.use")) {
                    if (settings.getData().getConfigurationSection("spawn") == null) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY
                                + "The spawn has not yet been set! Contact an admin if you think this is an error.");
                        return true;
                    }
                    World w = Bukkit.getServer().getWorld(settings.getData().getString("spawn.world"));
                    double x = settings.getData().getDouble("spawn.x");
                    double y = settings.getData().getDouble("spawn.y");
                    double z = settings.getData().getDouble("spawn.z");
                    player.teleport(new Location(w, x, y, z));
                    player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Teleported to the spawn!");
                }
            }
            if (command.getName().equalsIgnoreCase("setwarp")) {
                if (player.hasPermission("warp.admin")) {
                    if (args.length == 0) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Please specify a name!");
                        return true;
                    }
                    settings.getData().set("warps." + args[0] + ".world", player.getLocation().getWorld().getName());
                    settings.getData().set("warps." + args[0] + ".x", player.getLocation().getX());
                    settings.getData().set("warps." + args[0] + ".y", player.getLocation().getY());
                    settings.getData().set("warps." + args[0] + ".z", player.getLocation().getZ());
                    settings.saveData();
                    player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Set the warp " + args[0] + "!");
                }
            }
            if (command.getName().equalsIgnoreCase("warp")) {
                if (player.hasPermission("warp.use")) {
                    if (args.length == 0) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Please specify a name!");
                        return true;
                    }
                    if (settings.getData().getConfigurationSection("warps." + args[0]) == null) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Warp " + ChatColor.RED + args[0]
                                + ChatColor.GRAY + " does not exist!");
                        return true;
                    }
                    World w = Bukkit.getServer().getWorld(settings.getData().getString("warps." + args[0] + ".world"));
                    double x = settings.getData().getDouble("warps." + args[0] + ".x");
                    double y = settings.getData().getDouble("warps." + args[0] + ".y");
                    double z = settings.getData().getDouble("warps." + args[0] + ".z");
                    player.teleport(new Location(w, x, y, z));
                    player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Warped to " + args[0] + "!");
                }
            }
            if (command.getName().equalsIgnoreCase("delwarp")) {
                if (player.hasPermission("warp.admin")) {
                    if (args.length == 0) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Please specify a name!");
                        return true;
                    }
                    if (settings.getData().getConfigurationSection("warps." + args[0]) == null) {
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Warp " + args[0] + " does not exist!");
                        return true;
                    }
                    settings.getData().set("warps." + args[0], null);
                    settings.saveData();
                    player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R. P" + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Remove warp " + args[0] + "!");
    
                }
                if (command.getName().equalsIgnoreCase("warps")) {
                    player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY + "Showing warps");
                    player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                            + ChatColor.BOLD + "> " + ChatColor.GRAY
                            + settings.getData().getConfigurationSection("warps.").toString());
                }
                return true;
            }
            if (command.getName().equalsIgnoreCase("warphelp")) {
                player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "---= W.A.R.P =---");
                player.sendMessage(ChatColor.GREEN + "Green means you have permission");
                player.sendMessage(ChatColor.RED + "Red means you don't have permission");
                if (player.hasPermission("warp.admin")) {
                    player.sendMessage(ChatColor.GREEN + "/tp");
                    player.sendMessage(ChatColor.GREEN + "/setspawn");
                    player.sendMessage(ChatColor.GREEN + "/setwarp");
                    player.sendMessage(ChatColor.GREEN + "/delwarp");
                } else {
                    player.sendMessage(ChatColor.RED + "/tp");
                    player.sendMessage(ChatColor.RED + "/setspawn");
                    player.sendMessage(ChatColor.RED + "/setwarp");
                    player.sendMessage(ChatColor.RED + "/delwarp");
                }
                if (player.hasPermission("warp.use")) {
                    player.sendMessage(ChatColor.GREEN + "/tpa");
                    player.sendMessage(ChatColor.GREEN + "/tpaccept");
                    player.sendMessage(ChatColor.GREEN + "/tpdeny");
                    player.sendMessage(ChatColor.GREEN + "spawn");
                    player.sendMessage(ChatColor.GREEN + "/warp");
                } else {
                    player.sendMessage(ChatColor.RED + "/tpa");
                    player.sendMessage(ChatColor.RED + "/tpaccept");
                    player.sendMessage(ChatColor.RED + "/tpdeny");
                    player.sendMessage(ChatColor.RED + "/spawn");
                    player.sendMessage(ChatColor.RED + "/warp");
                }
    
            }
            return true;
        }
    
        @EventHandler
        public void onClick(PlayerInteractEvent e) {
            System.out.println("Fired");
            if (!e.hasBlock()) {
                return;
            }
            if (Action.RIGHT_CLICK_BLOCK != null) {  if(e.getClickedBlock().getType() == Material.SIGN_POST
                    || e.getClickedBlock().getType() == Material.WALL_SIGN) {
                System.out.println("1");
                Player player = e.getPlayer();
                Sign s = (Sign) e.getClickedBlock();
                System.out.println("2");
                String str = s.getLine(0);
                String str2 = s.getLine(1);
                if (str.equals("[Warp]")) {
                    System.out.println("3");
                    if (str2.equals(settings.getData().getConfigurationSection("warps." + str2))) {
                        System.out.println("4");
                        World w = Bukkit.getServer().getWorld(settings.getData().getString("warps." + str2 + ".world"));
                        double x = settings.getData().getDouble("warps." + str2 + ".x");
                        double y = settings.getData().getDouble("warps." + str2 + ".y");
                        double z = settings.getData().getDouble("warps." + str2 + ".z");
                        player.teleport(new Location(w, x, y, z));
                        player.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "W.A.R.P " + ChatColor.DARK_GRAY + ""
                                + ChatColor.BOLD + "> " + ChatColor.GRAY + "Warped to " + str2 + "!");
                        System.out.println("5");
                    }
                }
            }
        }
        }
    
        @EventHandler
        public void onPlace(BlockPlaceEvent event) {
            if (event.getBlock().getType() == Material.SIGN || event.getBlock().getType() == Material.SIGN_POST
                    || event.getBlock().getType() == Material.WALL_SIGN) {
                Sign sign = (Sign) event.getBlock().getState();
                String str = sign.getLine(0);
                String str2 = sign.getLine(1);
                if (str.equals("[Warp]")) {
                    str.replace("[Warp]", ChatColor.BLUE + "[Warp]");
                }
    
            }
        }
    }
    
     
  2. Offline

    Mrs. bwfctower

    Takes place:
    Which is
    A Block is never a Sign. If you want to get a Sign object from a block, you must get the state of the block.
     
  3. Offline

    Binner_Done

    Mrs. bwfctower likes this.
Thread Status:
Not open for further replies.

Share This Page