2
私のコードでは、tntやクリーパーが爆発したときにブロックがどこにでも飛びますが、ブロックがすべて上がったときにすべてが再生する必要がありますが、それは起こりません。結論が出た人は誰ですか?ここで Bukkit EntityExplode物理学とブロックの再生
が私のコードです:私はあなたが作成したEntitysを格納し、場所を取り戻すために持っているだろうと思い @EventHandler
void onExplode1(EntityExplodeEvent event) {
for(Block block : event.blockList()) {
if(block.getType() != Material.TNT) {
float x = -0.4F + (float) (Math.random() * 0.9D);
float y = -1.2F + (float) (Math.random() * 1.9D);
float z = -0.9F + (float) (Math.random() * 1.4D);
FallingBlock falling = block.getWorld().spawnFallingBlock(block.getLocation(), block.getType(), block.getData());
falling.setVelocity(new Vector(x, y, z));
falling.setDropItem(true);
block.setType(Material.AIR);
}
if(block.getType() != Material.AIR) {
final BlockState state = block.getState();
int delay;
if(block.getType().hasGravity()) {
delay = 80;
} else {
delay = 80 + (int)(Math.random()*60);
}
// Set block to air so that no blocks drop
block.setType(Material.AIR);
// Regenerate all the blocks in a random order
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
state.update(true, false);
}
}, delay);
}
}
}
}
?ブロックが爆発の前にあった場所、またはブロックがどこに来たのか? –
はい、ブロックを正確な位置に戻したいと思います。 – InfernoArtz