是有现成的第三方API?(不过比起套用API,我更想知道原理
监听EntityExplodeEvent,有一个方法blockList(),可以获取被tnt破坏的方块列表,替换为下落的沙子实体即可
疾风暗影 发表于 2020-6-28 00:48
监听EntityExplodeEvent,有一个方法blockList(),可以获取被tnt破坏的方块列表,替换为下落的沙子实体即 ...
“替换”是指遍历这个方块列表,获取每个方块的Location然后在相同的Location生成与该方块对应的掉落沙吗就行了吗?
如果是的话,有几个问题:
①所以不再需要自己去计算每个掉落沙的运动参数?
②因为我们没有去cancel这个EntityExplodeEvent,所以被炸掉的方块会照常消失。而且服务器对这些掉落沙的运动参数的计算是发生在“替换成掉落沙”这个过程之后?
aa0307bb 发表于 2020-6-28 01:38
“替换”是指遍历这个方块列表,获取每个方块的Location然后在相同的Location生成与该方块对应的掉落沙吗 ...
for(Block block : e.blockList())
{
float x = (float) -0.5 + (float) (Math.random() * ((0.5 - -0.5) + 1));
float y = (float) -1 + (float) (Math.random() * ((1 - -1) + 1));
float z = (float) -0.5 + (float) (Math.random() * ((0.5 - -0.5) + 1));
FallingBlock fb = block.getWorld().spawnFallingBlock(block.getLocation(), Material.SAND);
fb.setVelocity(new Vector(x, y, z));
block.setType(Material.AIR);
}
也就是先设成空气(移除),然后生成沙子,计算轨迹
计算公式自己调参数
凭印象写的,可能有小错