Solved .replace and .split problems

Discussion in 'Plugin Development' started by ICostaEx, Sep 30, 2014.

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

    ICostaEx

    So I decided to make my own shop plugin and when i run it and place a admin sign i get an error on the .replace and .split methonds i used....



    My Code:

    Code:java
    1. @EventHandler
    2. public void onInteract(PlayerInteractEvent event)
    3. {
    4. if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
    5. Inventory i = this.plugin.getServer().createInventory(null, InventoryType.MERCHANT);
    6. event.getPlayer().openInventory(i);
    7. if ((event.getClickedBlock().getType() == Material.WALL_SIGN) || (event.getClickedBlock().getType() == Material.SIGN)) {
    8. Sign sign = (Sign)event.getClickedBlock().getState();
    9. if (sign.getLine(1).equalsIgnoreCase(this.plugin.getConfig().getString("sell_sign"))) {
    10. Material currency = Material.getMaterial(this.plugin.getConfig().getString("currency"));
    11. String author = sign.getLine(0).replace(ChatColor.AQUA, "");
    12. int quantity = Integer.parseInt(sign.getLine(2).split(" " + ChatColor.GREEN)[0]);
    13. if (quantity <= 0) {
    14. event.getPlayer().sendMessage(ChatColor.RED + this.plugin.getConfig().getString("bad_quantity"));
    15. return;
    16. }
    17. String[] parsed = sign.getLine(2).split(ChatColor.GREEN)[1].split(":");
    18. if (parsed.length < 2) {
    19. parsed[1] = "0";
    20. }
    21. Material material = Material.getMaterial(parsed[0]);
    22. ItemStack sold = new ItemStack(material, quantity, (short)0, Byte.valueOf((byte)Integer.parseInt(parsed[1])));
    23.  
    24. if (material == null) {
    25. event.getPlayer().sendMessage(ChatColor.RED + this.plugin.getConfig().getString("bad_material"));
    26. return;
    27. }
    28. int price = Integer.parseInt(sign.getLine(3).replace(ChatColor.BOLD, "").replace(this.plugin.getConfig().getString("price_prefix"), "").replace(this.plugin.getConfig().getString("price_unit"), "").replace(" ", ""));
    29. if ((price >= 1) && (event.getPlayer().getInventory().contains(currency, price))) {
    30. if (!author.equalsIgnoreCase(this.plugin.getConfig().getString("admin_shop_owner"))) {
    31. Block below = sign.getWorld().getBlockAt(sign.getX(), sign.getY() - 1, sign.getZ());
    32. if (below.getType() == Material.CHEST) {
    33. Chest chest = (Chest)below.getState();
    34. Inventory chestinv = chest.getBlockInventory();
    35. if (chestinv.contains(material, quantity)) {
    36. chestinv.removeItem(new ItemStack[] { sold });
    37. chestinv.addItem(new ItemStack[] { new ItemStack(currency, price) });
    38. }
    39. else {
    40. event.getPlayer().sendMessage(ChatColor.RED + this.plugin.getConfig().getString("not_enough_in_chest"));
    41. }
    42. }
    43. else
    44. {
    45. event.getPlayer().sendMessage(ChatColor.RED + this.plugin.getConfig().getString("below_not_chest"));
    46. return;
    47. }
    48. }
    49. event.getPlayer().getInventory().removeItem(new ItemStack[] { new ItemStack(currency, price) });
    50. event.getPlayer().getInventory().addItem(new ItemStack[] { sold });
    51. event.getPlayer().sendMessage(ChatColor.GREEN + this.plugin.getConfig().getString("buy_notice").replace("${quantity}", new StringBuilder(String.valueOf(quantity)).toString()).replace("${material}", material.name()).replace("${price}", new StringBuilder().append(price).toString()));
    52. event.getPlayer().updateInventory();
    53.  
    54. }
    55. else
    56. {
    57. event.getPlayer().sendMessage(ChatColor.RED + this.plugin.getConfig().getString("cannot_pay"));
    58. }
    59. }
    60. }
    61. }
    62. }
    63. }



    Error Msg:

    Code:
    [18:14:00] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to MianiteShop v1.3
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:514) [craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:242) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PlayerInteractManager.interact(PlayerInteractManager.java:382) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:662) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:50) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PacketPlayInBlockPlace.handle(PacketPlayInBlockPlace.java:86) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:186) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Spigot-1649]
    Caused by: java.lang.Error: Unresolved compilation problems:
        The method replace(char, char) in the type String is not applicable for the arguments (ChatColor, String)
        The method split(String) in the type String is not applicable for the arguments (ChatColor)
        The method replace(char, char) in the type String is not applicable for the arguments (ChatColor, String)
     
        at me.ICostaEx.Shop.InteractionListener.onInteract(InteractionListener.java:90) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_67]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_67]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_67]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_67]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[craftbukkit.jar:git-Spigot-1649]
        ... 15 more
    [18:14:12] [Server thread/ERROR]: Could not pass event SignChangeEvent to MianiteShop v1.3
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:514) [craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1713) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PacketPlayInUpdateSign.a(PacketPlayInUpdateSign.java:58) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PacketPlayInUpdateSign.handle(PacketPlayInUpdateSign.java:78) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:186) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Spigot-1649]
    Caused by: java.lang.Error: Unresolved compilation problem:
        The method replace(char, char) in the type String is not applicable for the arguments (String, int)
     
        at me.ICostaEx.Shop.InteractionListener.onPlacement(InteractionListener.java:50) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_67]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_67]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_67]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_67]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[craftbukkit.jar:git-Spigot-1649]
        ... 13 more
    [18:14:14] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to MianiteShop v1.3
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:514) [craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [craftbukkit.jar:git-Spigot-1649]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:242) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PlayerInteractManager.dig(PlayerInteractManager.java:103) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:552) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.a(PacketPlayInBlockDig.java:41) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.handle(PacketPlayInBlockDig.java:65) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:186) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [craftbukkit.jar:git-Spigot-1649]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Spigot-1649]
    Caused by: java.lang.Error: Unresolved compilation problems:
        The method replace(char, char) in the type String is not applicable for the arguments (ChatColor, String)
        The method split(String) in the type String is not applicable for the arguments (ChatColor)
        The method replace(char, char) in the type String is not applicable for the arguments (ChatColor, String)
     
        at me.ICostaEx.Shop.InteractionListener.onInteract(InteractionListener.java:90) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_67]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_67]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_67]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_67]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[craftbukkit.jar:git-Spigot-1649]
        ... 15 more
    

    Help?
     
  2. Offline

    Gnat008

    ICostaEx
    I am not sure that you understand what the replace method does. Take a look at this.
    And I don't even know what you're trying to do here:
    String[] parsed = sign.getLine(2).split(ChatColor.GREEN)[1].split(":");
     
  3. Offline

    ICostaEx

    Gnat008
    Im getting the line of the sign and replacing it with the currency item...

    and the .split is to so the same thing basically...
     
  4. Offline

    Gnat008

    ICostaEx
    What I see here:
    String author = sign.getLine(0).replace(ChatColor.AQUA, "");
    Is you trying to replace a ChatColor with an empty String.

    And then later on you try to split a String with a ChatColor...?
     
  5. Offline

    ICostaEx

    Gnat008
    String author = sign.getLine(0).replace(ChatColor.AQUA, "");

    Is me trying to replace Sign line(0) with the given variable for say if its a sell sign it replaces it with the player name but with that chat color...

    and if its a adminsell sign it replaces line(0) with a config string i set up, and it adds that chat color.
     
  6. Offline

    Gnat008

  7. Offline

    ICostaEx

    Gnat008
    Why is it that the .replace value works on ther parts? for example...

    Code:java
    1. event.getPlayer().sendMessage(this.plugin.getConfig().getString("sell_notice").replace("${quantity}", quantity).replace("${material}", material.name()).replace("${price}", price));


    I only get the error on the first .replace

    Never mind, my great friend Trixy helped me fix this.
    It was an easy fix.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 14, 2016
  8. Offline

    Gnat008

    ICostaEx
    What's the error?
    Nevermind.
     
Thread Status:
Not open for further replies.

Share This Page