2017-04-21 22 views
1

私はminecraft-forge modを作成していて、ブロック#getBlockFromName(String name)に文字列を配置する際に問題があります。文字列:配列を文字列から作成し、文字列を1つずつ作成するより

String oreName = "minecraft:iron_ore -replace:minecraft:stone.minecraft:netherrack.minecraft:end_stone;"; 

そして、あなたが-replace後に見るように:私はブロック名(Minecraftの:石)があり、ドットと再びより名前とドットをブロックします。それぞれのブロック名を別々のStringに分割し、それを1つずつ読み込んでBlock#getBlockFromNameに挿入し、各Stringから1ブロックを取り出せます。私はString#split( "。")を使って配列に分割しようとしましたが、Array#toStringを使ってStringに戻したときに配列を出力すると、その配列は空でした。これらのブロックを何かに変更できるように私は設定ファイルを持っているので、私はドットで分割したいと思っています。私はmodを使用している人がその設定を行うことができるので、 minecraft:最初のブロック名の後にドットを使用して別のブロック名を追加します。 これは私がこれまで何をやったかである:

String oreName = "minecraft:iron_ore -replace:minecraft:stone.minecraft:netherrack.minecraft:end_stone;"; 

    String block1 = oreName.substring(oreName.indexOf("-replace:")); 
    String block2 = block1.replace("-replace:", ""); 
    String block3 = block2.contains(" -") ? block2.substring(0, block2.indexOf(" ")) : block2.replace(";", ""); 
    System.out.println("The Block Names Are: " + block3); // It prints it just without "minecraft:iron_ore -replace:" and ";" at the end 
    String[] block4 = block3.split("."); 
    System.out.println("The array: " + Arrays.toString(block4)); // only prints out "The array: []" 
+1

可能な重複を印刷し

String[] block4 = block3.split("\\."); 

: は、あなたのケースのために、あなたはと.記号をエスケープする必要があります。区切り記号として](http://stackoverflow.com/questions/3387622/split-string-on-dot-as-delimiter) – esin88

+0

問題はほとんど重複した古い質問のためです。また、ドットはおそらく良い区切り文字ではないでしょう。 modブロックが 'mymod:ores.copper'のような名前になるとすぐに、あなたのシステムは崩壊します。 ';'、 '!'、 '|'が良いでしょう。 – Draco18s

答えて

0

問題はString.split()は、引数として正規表現を取ることです。ドット上の[分割文字列の

The array: [minecraft:stone, minecraft:netherrack, minecraft:end_stone] 
+0

質問が重複している場合は、それを重複としてフラグを立てます。 *それに答えないでください。 – Draco18s

関連する問題