mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-30 20:21:51 +01:00
[Bleeding] Added BlockGrowEvent. Addresses BUKKIT-104
This commit is contained in:
parent
847e1c62c5
commit
7792156fb2
7 changed files with 29 additions and 15 deletions
|
@ -26,7 +26,7 @@ public class BlockCactus extends Block {
|
||||||
int i1 = world.getData(i, j, k);
|
int i1 = world.getData(i, j, k);
|
||||||
|
|
||||||
if (i1 == 15) {
|
if (i1 == 15) {
|
||||||
world.setTypeId(i, j + 1, k, this.id);
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
|
||||||
world.setData(i, j, k, 0);
|
world.setData(i, j, k, 0);
|
||||||
} else {
|
} else {
|
||||||
world.setData(i, j, k, i1 + 1);
|
world.setData(i, j, k, i1 + 1);
|
||||||
|
|
|
@ -26,8 +26,7 @@ public class BlockCrops extends BlockFlower {
|
||||||
float f = this.i(world, i, j, k);
|
float f = this.i(world, i, j, k);
|
||||||
|
|
||||||
if (random.nextInt((int) (25.0F / f) + 1) == 0) {
|
if (random.nextInt((int) (25.0F / f) + 1) == 0) {
|
||||||
++l;
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
|
||||||
world.setData(i, j, k, l);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,8 +26,7 @@ public class BlockNetherWart extends BlockFlower {
|
||||||
BiomeBase biomebase = worldchunkmanager.getBiome(i, k);
|
BiomeBase biomebase = worldchunkmanager.getBiome(i, k);
|
||||||
|
|
||||||
if (biomebase instanceof BiomeHell && random.nextInt(15) == 0) {
|
if (biomebase instanceof BiomeHell && random.nextInt(15) == 0) {
|
||||||
++l;
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
|
||||||
world.setData(i, j, k, l);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class BlockReed extends Block {
|
||||||
int i1 = world.getData(i, j, k);
|
int i1 = world.getData(i, j, k);
|
||||||
|
|
||||||
if (i1 == 15) {
|
if (i1 == 15) {
|
||||||
world.setTypeId(i, j + 1, k, this.id);
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j + 1, k, this.id, 0); // CraftBukkit
|
||||||
world.setData(i, j, k, 0);
|
world.setData(i, j, k, 0);
|
||||||
} else {
|
} else {
|
||||||
world.setData(i, j, k, i1 + 1);
|
world.setData(i, j, k, i1 + 1);
|
||||||
|
|
|
@ -28,8 +28,7 @@ public class BlockStem extends BlockFlower {
|
||||||
int l = world.getData(i, j, k);
|
int l = world.getData(i, j, k);
|
||||||
|
|
||||||
if (l < 7) {
|
if (l < 7) {
|
||||||
++l;
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
|
||||||
world.setData(i, j, k, l);
|
|
||||||
} else {
|
} else {
|
||||||
if (world.getTypeId(i - 1, j, k) == this.a.id) {
|
if (world.getTypeId(i - 1, j, k) == this.a.id) {
|
||||||
return;
|
return;
|
||||||
|
@ -70,7 +69,7 @@ public class BlockStem extends BlockFlower {
|
||||||
int l1 = world.getTypeId(j1, j - 1, k1);
|
int l1 = world.getTypeId(j1, j - 1, k1);
|
||||||
|
|
||||||
if (world.getTypeId(j1, j, k1) == 0 && (l1 == Block.SOIL.id || l1 == Block.DIRT.id || l1 == Block.GRASS.id)) {
|
if (world.getTypeId(j1, j, k1) == 0 && (l1 == Block.SOIL.id || l1 == Block.DIRT.id || l1 == Block.GRASS.id)) {
|
||||||
world.setTypeId(j1, j, k1, this.a.id);
|
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, j1, j, k1, this.a.id, 0); // CraftBukkit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,9 +80,11 @@ public class CraftBlockState implements BlockState {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setTypeId(final int type) {
|
public boolean setTypeId(final int type) {
|
||||||
|
if (this.type != type) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
|
||||||
createData((byte) 0);
|
createData((byte) 0);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,7 +128,7 @@ public class CraftBlockState implements BlockState {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createData(final byte data) {
|
private void createData(final byte data) {
|
||||||
Material mat = Material.getMaterial(type);
|
Material mat = getType();
|
||||||
if (mat == null || mat.getData() == null) {
|
if (mat == null || mat.getData() == null) {
|
||||||
this.data = new MaterialData(type, data);
|
this.data = new MaterialData(type, data);
|
||||||
} else {
|
} else {
|
||||||
|
@ -142,8 +144,8 @@ public class CraftBlockState implements BlockState {
|
||||||
return new Location(world, x, y, z);
|
return new Location(world, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setData(byte data) {
|
public void setRawData(byte data) {
|
||||||
createData(data);
|
this.data.setData(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -52,6 +52,7 @@ import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.craftbukkit.CraftWorld;
|
import org.bukkit.craftbukkit.CraftWorld;
|
||||||
import org.bukkit.craftbukkit.block.CraftBlock;
|
import org.bukkit.craftbukkit.block.CraftBlock;
|
||||||
|
import org.bukkit.craftbukkit.block.CraftBlockState;
|
||||||
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
||||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
|
@ -438,4 +439,18 @@ public class CraftEventFactory {
|
||||||
|
|
||||||
return !projectile.doesBounce();
|
return !projectile.doesBounce();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void handleBlockGrowEvent(World world, int x, int y, int z, int type, int data) {
|
||||||
|
Block block = world.getWorld().getBlockAt(x, y, z);
|
||||||
|
CraftBlockState state = (CraftBlockState) block.getState();
|
||||||
|
state.setTypeId(type);
|
||||||
|
state.setRawData((byte) data);
|
||||||
|
|
||||||
|
BlockGrowEvent event = new BlockGrowEvent(block, state);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
if (!event.isCancelled()) {
|
||||||
|
state.update(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue