119 lines
6.2 KiB
Diff
119 lines
6.2 KiB
Diff
From c5e8524e67e8def786c77dc219c459d0ef932b4a Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
|
Date: Sun, 6 Dec 2015 17:12:38 -0600
|
|
Subject: [PATCH] Add FallingBlock source location API
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockDragonEgg.java b/src/main/java/net/minecraft/server/BlockDragonEgg.java
|
|
index de7ac6f..76a6272 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockDragonEgg.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockDragonEgg.java
|
|
@@ -28,7 +28,10 @@ public class BlockDragonEgg extends Block {
|
|
byte b0 = 32;
|
|
|
|
if (!BlockFalling.instaFall && world.areChunksLoadedBetween(blockposition.a(-b0, -b0, -b0), blockposition.a(b0, b0, b0))) {
|
|
- world.addEntity(new EntityFallingBlock(world, (double) ((float) blockposition.getX() + 0.5F), (double) blockposition.getY(), (double) ((float) blockposition.getZ() + 0.5F), this.getBlockData()));
|
|
+ // PaperSpigot start - Add FallingBlock source location API
|
|
+ org.bukkit.Location loc = new org.bukkit.Location(world.getWorld(), (double) ((float) blockposition.getX() + 0.5F), (double) blockposition.getY(), (double) ((float) blockposition.getZ() + 0.5F));
|
|
+ world.addEntity(new EntityFallingBlock(loc, world, (double) ((float) blockposition.getX() + 0.5F), (double) blockposition.getY(), (double) ((float) blockposition.getZ() + 0.5F), this.getBlockData()));
|
|
+ // PaperSpigot end
|
|
} else {
|
|
world.setAir(blockposition);
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockFalling.java b/src/main/java/net/minecraft/server/BlockFalling.java
|
|
index 29f8554..1d952b8 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockFalling.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockFalling.java
|
|
@@ -36,7 +36,10 @@ public class BlockFalling extends Block {
|
|
|
|
if (!BlockFalling.instaFall && world.areChunksLoadedBetween(blockposition.a(-b0, -b0, -b0), blockposition.a(b0, b0, b0))) {
|
|
if (!world.isClientSide) {
|
|
- EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, world.getType(blockposition));
|
|
+ // PaperSpigot start - Add FallingBlock source location API
|
|
+ org.bukkit.Location loc = new org.bukkit.Location(world.getWorld(), (double) ((float) blockposition.getX() + 0.5F), (double) blockposition.getY(), (double) ((float) blockposition.getZ() + 0.5F));
|
|
+ EntityFallingBlock entityfallingblock = new EntityFallingBlock(loc, world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, world.getType(blockposition));
|
|
+ // PaperSpigot end
|
|
|
|
this.a(entityfallingblock);
|
|
world.addEntity(entityfallingblock);
|
|
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
index 86556cd..b34e93c 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
@@ -16,13 +16,26 @@ public class EntityFallingBlock extends Entity {
|
|
private int fallHurtMax = 40;
|
|
private float fallHurtAmount = 2.0F;
|
|
public NBTTagCompound tileEntityData;
|
|
+ public org.bukkit.Location sourceLoc; // PaperSpigot
|
|
|
|
+ // PaperSpigot start - Add FallingBlock source location API
|
|
public EntityFallingBlock(World world) {
|
|
+ this(null, world);
|
|
+ }
|
|
+
|
|
+ public EntityFallingBlock(org.bukkit.Location loc, World world) {
|
|
super(world);
|
|
+ sourceLoc = loc;
|
|
}
|
|
|
|
public EntityFallingBlock(World world, double d0, double d1, double d2, IBlockData iblockdata) {
|
|
+ this(null, world, d0, d1, d2, iblockdata);
|
|
+ }
|
|
+
|
|
+ public EntityFallingBlock(org.bukkit.Location loc, World world, double d0, double d1, double d2, IBlockData iblockdata) {
|
|
super(world);
|
|
+ sourceLoc = loc;
|
|
+ // PaperSpigot end
|
|
this.block = iblockdata;
|
|
this.k = true;
|
|
this.setSize(0.98F, 0.98F);
|
|
@@ -197,7 +210,13 @@ public class EntityFallingBlock extends Entity {
|
|
if (this.tileEntityData != null) {
|
|
nbttagcompound.set("TileEntityData", this.tileEntityData);
|
|
}
|
|
-
|
|
+ // PaperSpigot start - Add FallingBlock source location API
|
|
+ if (sourceLoc != null) {
|
|
+ nbttagcompound.setInt("SourceLoc_x", sourceLoc.getBlockX());
|
|
+ nbttagcompound.setInt("SourceLoc_y", sourceLoc.getBlockY());
|
|
+ nbttagcompound.setInt("SourceLoc_z", sourceLoc.getBlockZ());
|
|
+ }
|
|
+ // PaperSpigot end
|
|
}
|
|
|
|
protected void a(NBTTagCompound nbttagcompound) {
|
|
@@ -233,7 +252,14 @@ public class EntityFallingBlock extends Entity {
|
|
if (block == null || block.getMaterial() == Material.AIR) {
|
|
this.block = Blocks.SAND.getBlockData();
|
|
}
|
|
-
|
|
+ // PaperSpigot start - Add FallingBlock source location API
|
|
+ if (nbttagcompound.hasKey("SourceLoc_x")) {
|
|
+ int srcX = nbttagcompound.getInt("SourceLoc_x");
|
|
+ int srcY = nbttagcompound.getInt("SourceLoc_y");
|
|
+ int srcZ = nbttagcompound.getInt("SourceLoc_z");
|
|
+ sourceLoc = new org.bukkit.Location(world.getWorld(), srcX, srcY, srcZ);
|
|
+ }
|
|
+ // PaperSpigot end
|
|
}
|
|
|
|
public void a(boolean flag) {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java
|
|
index 75eed48..eedb66f 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingSand.java
|
|
@@ -57,4 +57,11 @@ public class CraftFallingSand extends CraftEntity implements FallingSand {
|
|
public void setHurtEntities(boolean hurtEntities) {
|
|
getHandle().hurtEntities = hurtEntities;
|
|
}
|
|
+
|
|
+ // PaperSpigot start - Add FallingBlock source location API
|
|
+ @Override
|
|
+ public org.bukkit.Location getSourceLoc() {
|
|
+ return getHandle().sourceLoc;
|
|
+ }
|
|
+ // PaperSpigot end
|
|
}
|
|
--
|
|
2.6.3
|
|
|