mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-15 07:01:36 +08:00
Made Mycel blocks throw BlockFade and BlockSpread events. This fixes BUKKIT-488. Thanks to tips48 for the pull request.
This commit is contained in:
parent
64ac337d4c
commit
9da730c8e1
@ -1,6 +1,8 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Random;
|
||||
import org.bukkit.event.block.BlockFadeEvent; // CraftBukkit
|
||||
import org.bukkit.event.block.BlockSpreadEvent; // CraftBukkit
|
||||
|
||||
public class BlockMycel extends Block {
|
||||
|
||||
@ -17,7 +19,18 @@ public class BlockMycel extends Block {
|
||||
public void a(World world, int i, int j, int k, Random random) {
|
||||
if (!world.isStatic) {
|
||||
if (world.getLightLevel(i, j + 1, k) < 4 && Block.q[world.getTypeId(i, j + 1, k)] > 2) {
|
||||
world.setTypeId(i, j, k, Block.DIRT.id);
|
||||
// CraftBukkit start
|
||||
org.bukkit.World bworld = world.getWorld();
|
||||
org.bukkit.block.BlockState blockState = bworld.getBlockAt(i, j, k).getState();
|
||||
blockState.setTypeId(Block.DIRT.id);
|
||||
|
||||
BlockFadeEvent event = new BlockFadeEvent(blockState.getBlock(), blockState);
|
||||
world.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
blockState.update(true);
|
||||
}
|
||||
// CraftBukkit end
|
||||
} else if (world.getLightLevel(i, j + 1, k) >= 9) {
|
||||
for (int l = 0; l < 4; ++l) {
|
||||
int i1 = i + random.nextInt(3) - 1;
|
||||
@ -26,7 +39,18 @@ public class BlockMycel extends Block {
|
||||
int l1 = world.getTypeId(i1, j1 + 1, k1);
|
||||
|
||||
if (world.getTypeId(i1, j1, k1) == Block.DIRT.id && world.getLightLevel(i1, j1 + 1, k1) >= 4 && Block.q[l1] <= 2) {
|
||||
world.setTypeId(i1, j1, k1, this.id);
|
||||
// CraftBukkit start
|
||||
org.bukkit.World bworld = world.getWorld();
|
||||
org.bukkit.block.BlockState blockState = bworld.getBlockAt(i1, j1, k1).getState();
|
||||
blockState.setTypeId(this.id);
|
||||
|
||||
BlockSpreadEvent event = new BlockSpreadEvent(blockState.getBlock(), bworld.getBlockAt(i, j, k), blockState);
|
||||
world.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
blockState.update(true);
|
||||
}
|
||||
// CraftBukkit end
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user