Sysy's
Sysy's

Reputation: 67

(Spigot 1.8) "stained_hardened_clay:14" != " stained_hardened_clay:14"

I am making a a mini game plugin, i need to replace every blocks that not a type, so i maked this :

    public static void replaceBlock(String x, String y, String z, String x2, String y2, String z2, String block, String secondBlockType, String mapDict) {
    String[] BlocksToReplace = mapDict.split("\\*");
    System.out.println(ConsoleColorUtils.PURPLE + "[" + Main.pName +"]" + ConsoleColorUtils.RESET + " " + x + " " + y + " " + z + " " + x2 + " " + y2 + " " + z2);
    ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
    String pos1 = "/pos1 " + x + "," + y + "," + z;
    String pos2 = "/pos2 " + x2 + "," + y2 + "," + z2;
    Bukkit.dispatchCommand(console, pos1);
    Bukkit.dispatchCommand(console, pos2);
    tasak =  Bukkit.getServer().getScheduler().runTaskTimer(Main.plugin, new Runnable() {
        private int count = 2;
        @Override
        public void run() {
            if(count == 0) {
                for(String b : BlocksToReplace) {
                    if(b == block) {
                        System.out.println(ConsoleColorUtils.PURPLE + "[" + Main.pName +"]" + ConsoleColorUtils.RESET + " fdbshjfbdjshq ");
                    }else {
                        String fillcmd = "/replace " + b + " " + secondBlockType;
                        System.out.println(ConsoleColorUtils.PURPLE + "[" + Main.pName +"]" + ConsoleColorUtils.RESET + " " + fillcmd + "         " + block);
                        Bukkit.dispatchCommand(console, fillcmd);
                    }
                }
                tasak.cancel();
            } else {
                count--;
            }
        }
    }, 20, 20);
}

Map dict is => gold_block*wool:15*stained_hardened_clay:4*wool:4*stained_hardened_clay:3*stained_hardened_clay:11*wool:9*wool:11*stained_hardened_clay:9*wool:10*wool:2*stained_hardened_clay:10*stained_hardened_clay:2*stained_hardened_clay:6*diamond_block*prismarine:2*prismarine:1*melon_block*wool:5*slime*emerald_block*quartz_block*stained_hardened_clay*sandstone:2*nether_brick*wool:14*wool:13

block var is : stained_hardened_clay:14

When i call the function, it replace every blocks not all exept the block i want

Any way to fix it ?

Upvotes: 2

Views: 80

Answers (1)

Oliver Stahl
Oliver Stahl

Reputation: 644

Dont use "==" for strings. use b.equals(block). Because "==" compares the hash values of the String objects. And the equals Method compares the string itself.

More Info: https://www.java67.com/2012/11/difference-between-operator-and-equals-method-in.html

Upvotes: 2

Related Questions