summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorFeildmaster <admin@feildmaster.com>2012-02-11 23:32:24 -0600
committerEvilSeph <evilseph@gmail.com>2012-02-22 21:46:45 -0500
commit7792156fb25d25103d4a5e8ccfd563ff1707560d (patch)
tree7e90ecc9bb6b2fd6290b9613686bd04f1b9f96bc /src/main/java
parent847e1c62c5b6d5f40d0be8a465140e8255e82ec9 (diff)
downloadcraftbukkit-7792156fb25d25103d4a5e8ccfd563ff1707560d.tar
craftbukkit-7792156fb25d25103d4a5e8ccfd563ff1707560d.tar.gz
craftbukkit-7792156fb25d25103d4a5e8ccfd563ff1707560d.tar.lz
craftbukkit-7792156fb25d25103d4a5e8ccfd563ff1707560d.tar.xz
craftbukkit-7792156fb25d25103d4a5e8ccfd563ff1707560d.zip
[Bleeding] Added BlockGrowEvent. Addresses BUKKIT-104
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/net/minecraft/server/BlockCactus.java2
-rw-r--r--src/main/java/net/minecraft/server/BlockCrops.java3
-rw-r--r--src/main/java/net/minecraft/server/BlockNetherWart.java3
-rw-r--r--src/main/java/net/minecraft/server/BlockReed.java2
-rw-r--r--src/main/java/net/minecraft/server/BlockStem.java5
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java12
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java17
7 files changed, 29 insertions, 15 deletions
diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java
index b9da7d2a..c7235365 100644
--- a/src/main/java/net/minecraft/server/BlockCactus.java
+++ b/src/main/java/net/minecraft/server/BlockCactus.java
@@ -26,7 +26,7 @@ public class BlockCactus extends Block {
int i1 = world.getData(i, j, k);
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);
} else {
world.setData(i, j, k, i1 + 1);
diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java
index 818d2efd..dfdbc746 100644
--- a/src/main/java/net/minecraft/server/BlockCrops.java
+++ b/src/main/java/net/minecraft/server/BlockCrops.java
@@ -26,8 +26,7 @@ public class BlockCrops extends BlockFlower {
float f = this.i(world, i, j, k);
if (random.nextInt((int) (25.0F / f) + 1) == 0) {
- ++l;
- world.setData(i, j, k, l);
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
}
}
}
diff --git a/src/main/java/net/minecraft/server/BlockNetherWart.java b/src/main/java/net/minecraft/server/BlockNetherWart.java
index f4968534..c6e635ab 100644
--- a/src/main/java/net/minecraft/server/BlockNetherWart.java
+++ b/src/main/java/net/minecraft/server/BlockNetherWart.java
@@ -26,8 +26,7 @@ public class BlockNetherWart extends BlockFlower {
BiomeBase biomebase = worldchunkmanager.getBiome(i, k);
if (biomebase instanceof BiomeHell && random.nextInt(15) == 0) {
- ++l;
- world.setData(i, j, k, l);
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
}
}
}
diff --git a/src/main/java/net/minecraft/server/BlockReed.java b/src/main/java/net/minecraft/server/BlockReed.java
index 21afe6a3..58f90fab 100644
--- a/src/main/java/net/minecraft/server/BlockReed.java
+++ b/src/main/java/net/minecraft/server/BlockReed.java
@@ -25,7 +25,7 @@ public class BlockReed extends Block {
int i1 = world.getData(i, j, k);
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);
} else {
world.setData(i, j, k, i1 + 1);
diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java
index 38807777..8736f2cd 100644
--- a/src/main/java/net/minecraft/server/BlockStem.java
+++ b/src/main/java/net/minecraft/server/BlockStem.java
@@ -28,8 +28,7 @@ public class BlockStem extends BlockFlower {
int l = world.getData(i, j, k);
if (l < 7) {
- ++l;
- world.setData(i, j, k, l);
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, i, j, k, this.id, ++l); // CraftBukkit
} else {
if (world.getTypeId(i - 1, j, k) == this.a.id) {
return;
@@ -70,7 +69,7 @@ public class BlockStem extends BlockFlower {
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)) {
- world.setTypeId(j1, j, k1, this.a.id);
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(world, j1, j, k1, this.a.id, 0); // CraftBukkit
}
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
index 5519afea..34d8290f 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
@@ -80,9 +80,11 @@ public class CraftBlockState implements BlockState {
}
public boolean setTypeId(final int type) {
- this.type = type;
+ if (this.type != type) {
+ this.type = type;
- createData((byte) 0);
+ createData((byte) 0);
+ }
return true;
}
@@ -126,7 +128,7 @@ public class CraftBlockState implements BlockState {
}
private void createData(final byte data) {
- Material mat = Material.getMaterial(type);
+ Material mat = getType();
if (mat == null || mat.getData() == null) {
this.data = new MaterialData(type, data);
} else {
@@ -142,8 +144,8 @@ public class CraftBlockState implements BlockState {
return new Location(world, x, y, z);
}
- public void setData(byte data) {
- createData(data);
+ public void setRawData(byte data) {
+ this.data.setData(data);
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 9087d6ff..a829d2ef 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -52,6 +52,7 @@ import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.block.CraftBlock;
+import org.bukkit.craftbukkit.block.CraftBlockState;
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
import org.bukkit.craftbukkit.entity.CraftPlayer;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
@@ -424,7 +425,7 @@ public class CraftEventFactory {
public static boolean handleProjectileEvent(Projectile projectile, Entity target, DamageSource damagesource, int damage) {
if (target instanceof EntityLiving || target instanceof EntityComplexPart || target instanceof EntityEnderCrystal) {
org.bukkit.entity.Entity damagee = target.getBukkitEntity();
-
+
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(projectile, damagee, EntityDamageEvent.DamageCause.PROJECTILE, damage);
Bukkit.getPluginManager().callEvent(event);
@@ -438,4 +439,18 @@ public class CraftEventFactory {
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);
+ }
+ }
}