下面列出了org.bukkit.event.block.BlockSpreadEvent#isCancelled ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void handleSpreadEvent(@Nonnull BlockSpreadEvent e) {
if (e.isCancelled()) return;
// Only cancel fire spreading
if (e.getBlock().getType() == Material.FIRE) {
cancelWorldEvent(e.getBlock().getChunk(), e, "blockFireSpread");
}
}
@SuppressWarnings("deprecation")
@Override
public void a(World world, int i, int j, int k, Random random) {
if(world.getGameRules().getBoolean("doFireTick")) {
boolean flag = world.getType(i, j - 1, k) == Blocks.NETHERRACK;
if(((world.worldProvider instanceof WorldProviderTheEnd)) && (world.getType(i, j - 1, k) == Blocks.BEDROCK)) {
flag = true;
}
if(!canPlace(world, i, j, k)) {
fireExtinguished(world, i, j, k);
}
if((!flag) && (world.Q()) && ((world.isRainingAt(i, j, k)) || (world.isRainingAt(i - 1, j, k)) || (world.isRainingAt(i + 1, j, k)) || (world.isRainingAt(i, j, k - 1)) || (world.isRainingAt(i, j, k + 1)))) {
fireExtinguished(world, i, j, k);
}
else {
int l = world.getData(i, j, k);
if(l < 15) {
world.setData(i, j, k, l + random.nextInt(3) / 2, 4);
}
world.a(i, j, k, this, a(world) + random.nextInt(10));
if((!flag) && (!e(world, i, j, k))) {
if((!World.a(world, i, j - 1, k)) || (l > 3)) {
fireExtinguished(world, i, j, k);
}
}
else if((!flag) && (!e(world, i, j - 1, k)) && (l == 15) && (random.nextInt(4) == 0)) {
fireExtinguished(world, i, j, k);
}
else {
boolean flag1 = world.z(i, j, k);
byte b0 = 0;
if(flag1) {
b0 = -50;
}
a(world, i + 1, j, k, 300 + b0, random, l);
a(world, i - 1, j, k, 300 + b0, random, l);
a(world, i, j - 1, k, 250 + b0, random, l);
a(world, i, j + 1, k, 250 + b0, random, l);
a(world, i, j, k - 1, 300 + b0, random, l);
a(world, i, j, k + 1, 300 + b0, random, l);
for(int i1 = i - 1; i1 <= i + 1; i1++) {
for(int j1 = k - 1; j1 <= k + 1; j1++) {
for(int k1 = j - 1; k1 <= j + 4; k1++) {
if((i1 != i) || (k1 != j) || (j1 != k)) {
int l1 = 100;
if(k1 > j + 1) {
l1 += (k1 - (j + 1)) * 100;
}
int i2 = m(world, i1, k1, j1);
if(i2 > 0) {
int j2 = (i2 + 40 + world.difficulty.a() * 7) / (l + 30);
if(flag1) {
j2 /= 2;
}
if((j2 > 0) && (random.nextInt(l1) <= j2) && ((!world.Q()) || (!world.isRainingAt(i1, k1, j1))) && (!world.isRainingAt(i1 - 1, k1, k)) && (!world.isRainingAt(i1 + 1, k1, j1)) && (!world.isRainingAt(i1, k1, j1 - 1)) && (!world.isRainingAt(i1, k1, j1 + 1))) {
int k2 = l + random.nextInt(5) / 4;
if(k2 > 15) {
k2 = 15;
}
if((world.getType(i1, k1, j1) != this) && (!CraftEventFactory.callBlockIgniteEvent(world, i1, k1, j1, i, j, k).isCancelled())) {
Server server = world.getServer();
org.bukkit.World bworld = world.getWorld();
BlockState blockState = bworld.getBlockAt(i1, k1, j1).getState();
blockState.setTypeId(Block.getId(this));
blockState.setData(new MaterialData(Block.getId(this), (byte) k2));
BlockSpreadEvent spreadEvent = new BlockSpreadEvent(blockState.getBlock(), bworld.getBlockAt(i, j, k), blockState);
server.getPluginManager().callEvent(spreadEvent);
if(!spreadEvent.isCancelled()) {
blockState.update(true);
}
}
}
}
}
}
}
}
}
}
}
}