2016-12-23 4 views
1

私はMinkraftでbukkit-pluginのメソッドを使って単純なピラミッドを構築したいと思う。最終的な結果は次のようになりなければならない。minecraft bukkitプラグインでピラミッドを構築する

public static void buildPyramid(Location l) { 
    Location pos; 
    for(int i = -2; i <= 2; i++) { 
     for(int j = -2; j <= 2; j++) { 
      pos = l.clone().add(i, 0, j); 
      Bukkit.broadcastMessage(Math.abs(i) + Math.abs(j) + ""); // for test 
      int diff = Math.abs(i) + Math.abs(j); 
      switch(diff) { 
       case 2: 
        l.getBlock().setType(Material.BEDROCK); 
        break; 
       case 1: 
        l.getBlock().setType(Material.BEDROCK); 
        pos.add(0, 1, 0); 
        l.getBlock().setType(Material.BEDROCK); 
        pos.add(0, -1, 0); 
        break; 
       case 0: 
        l.getBlock().setType(Material.BEDROCK); 
        pos.add(0, 1, 0); 
        l.getBlock().setType(Material.BEDROCK); 
        pos.add(0, 1, 0); 
        l.getBlock().setType(Material.BEDROCK); 
        pos.add(0, -2, 0); 
        break; 
       default: 
        break; 

      } 
     } 
    } 
} 

残念ながら、何が起こることは1つの岩盤が位置Lと何も起こら上に置かれていることである。

enter image description here私はこのコードを書きました。 これは非常に壊れています...どんな助け?

答えて

1

あなたの問題はここにある:

for(int i = -2; i <= 2; i++) { 
     for(int j = -2; j <= 2; j++) { 
      pos = l.clone().add(i, 0, j); 
      Bukkit.broadcastMessage(Math.abs(i) + Math.abs(j) + ""); // for test 
      int diff = Math.abs(i) + Math.abs(j); 

ボディvaribles'状況への最初のアプローチは、以下のとおりです。I = -2とj = -2。このライン」実行後:Math.abs()メソッド変換-2 2の両方の変数のためには、次に、差分のためにそれらを合計するため

int diff = Math.abs(i) + Math.abs(j); 

それらはI = -2、J = -2が、差分= 4となります。この結果、switch-caseの文章は正しく機能しません。ところで、私は最初からすべてのものを計算することをお勧めします。

0

申し訳ありませんが、解決策は簡単です。私は間違った変数を使用しました:

public static void buildPyramid(Location l) { 
    Location pos; 
    for(int i = -2; i <= 2; i++) { 
     for(int j = -2; j <= 2; j++) { 
      pos = l.clone().add(i, 0, j); 
      Bukkit.broadcastMessage(Math.abs(i) + Math.abs(j) + ""); // for test 
      int diff = Math.abs(i) + Math.abs(j); 
      switch(diff) { 
       case 2: 
        pos.getBlock().setType(Material.BEDROCK); 
        break; 
       case 1: 
        pos.getBlock().setType(Material.BEDROCK); 
        pos.add(0, 1, 0); 
        pos.getBlock().setType(Material.BEDROCK); 
        pos.add(0, -1, 0); 
        break; 
       case 0: 
        pos.getBlock().setType(Material.BEDROCK); 
        pos.add(0, 1, 0); 
        pos.getBlock().setType(Material.BEDROCK); 
        pos.add(0, 1, 0); 
        pos.getBlock().setType(Material.BEDROCK); 
        pos.add(0, -2, 0); 
        break; 
       default: 
        break; 

      } 
     } 
    } 
} 
関連する問題