Update for minor remapping changes.
Dieser Commit ist enthalten in:
Ursprung
de5c26123f
Commit
9935adc4ed
@ -2,7 +2,7 @@
|
||||
+++ b/net/minecraft/server/BlockDispenser.java
|
||||
@@ -8,6 +8,7 @@
|
||||
public static final BlockStateBoolean TRIGGERED = BlockStateBoolean.of("triggered");
|
||||
public static final RegistryDefault<Item, IDispenseBehavior> N = new RegistryDefault(new DispenseBehaviorItem());
|
||||
public static final RegistryDefault<Item, IDispenseBehavior> REGISTRY = new RegistryDefault(new DispenseBehaviorItem());
|
||||
protected Random O = new Random();
|
||||
+ public static boolean eventFired = false; // CraftBukkit
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
super(Material.STONE);
|
||||
@@ -83,6 +84,7 @@
|
||||
|
||||
if (idispensebehavior != IDispenseBehavior.a) {
|
||||
if (idispensebehavior != IDispenseBehavior.NONE) {
|
||||
ItemStack itemstack1 = idispensebehavior.a(sourceblock, itemstack);
|
||||
+ eventFired = false; // CraftBukkit - reset event status
|
||||
|
||||
|
@ -11,23 +11,14 @@
|
||||
public class BlockDropper extends BlockDispenser {
|
||||
|
||||
private final IDispenseBehavior P = new DispenseBehaviorItem();
|
||||
@@ -14,7 +19,7 @@
|
||||
return new TileEntityDropper();
|
||||
}
|
||||
|
||||
- protected void dispense(World world, BlockPosition blockposition) {
|
||||
+ public void dispense(World world, BlockPosition blockposition) { // CraftBukkit - public
|
||||
SourceBlock sourceblock = new SourceBlock(world, blockposition);
|
||||
TileEntityDispenser tileentitydispenser = (TileEntityDispenser) sourceblock.getTileEntity();
|
||||
|
||||
@@ -38,8 +43,25 @@
|
||||
itemstack1 = null;
|
||||
}
|
||||
} else {
|
||||
- itemstack1 = TileEntityHopper.addItem(iinventory, itemstack.cloneItemStack().a(1), enumdirection.opposite());
|
||||
- itemstack1 = TileEntityHopper.addItem(iinventory, itemstack.cloneItemStack().cloneAndSubtract(1), enumdirection.opposite());
|
||||
- if (itemstack1 == null) {
|
||||
+ // CraftBukkit start - Fire event when pushing items into other inventories
|
||||
+ CraftItemStack oitemstack = CraftItemStack.asCraftMirror(itemstack.cloneItemStack().a(1));
|
||||
+ CraftItemStack oitemstack = CraftItemStack.asCraftMirror(itemstack.cloneItemStack().cloneAndSubtract(1));
|
||||
+
|
||||
+ org.bukkit.inventory.Inventory destinationInventory;
|
||||
+ // Have to special case large chests as they work oddly
|
||||
|
@ -24,7 +24,7 @@
|
||||
}
|
||||
} else if (!flag && ((Boolean) iblockdata.get(BlockPiston.EXTENDED)).booleanValue()) {
|
||||
+ // CraftBukkit start
|
||||
+ if (!this.N) {
|
||||
+ if (!this.sticky) {
|
||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
||||
+ BlockPistonRetractEvent event = new BlockPistonRetractEvent(block, ImmutableList.<org.bukkit.block.Block>of(), CraftBlock.notchToBlockFace(enumdirection));
|
||||
+ world.getServer().getPluginManager().callEvent(event);
|
||||
|
@ -24,18 +24,18 @@
|
||||
BlockPortal.Shape blockportal_shape = new BlockPortal.Shape(world, blockposition, EnumDirection.EnumAxis.X);
|
||||
|
||||
if (blockportal_shape.d() && blockportal_shape.e == 0) {
|
||||
- blockportal_shape.e();
|
||||
- blockportal_shape.createPortal();
|
||||
- return true;
|
||||
+ // CraftBukkit start - return portalcreator
|
||||
+ return blockportal_shape.e();
|
||||
+ return blockportal_shape.createPortal();
|
||||
+ // return true;
|
||||
} else {
|
||||
BlockPortal.Shape blockportal_shape1 = new BlockPortal.Shape(world, blockposition, EnumDirection.EnumAxis.Z);
|
||||
|
||||
if (blockportal_shape1.d() && blockportal_shape1.e == 0) {
|
||||
- blockportal_shape1.e();
|
||||
- blockportal_shape1.createPortal();
|
||||
- return true;
|
||||
+ return blockportal_shape1.e();
|
||||
+ return blockportal_shape1.createPortal();
|
||||
+ // return true;
|
||||
+ // CraftBukkit end
|
||||
} else {
|
||||
@ -53,9 +53,9 @@
|
||||
}
|
||||
|
||||
@@ -185,6 +195,7 @@
|
||||
private BlockPosition f;
|
||||
private int g;
|
||||
private int h;
|
||||
private BlockPosition position;
|
||||
private int height;
|
||||
private int width;
|
||||
+ java.util.Collection<org.bukkit.block.Block> blocks = new java.util.HashSet<org.bukkit.block.Block>(); // CraftBukkit - add field
|
||||
|
||||
public Shape(World world, BlockPosition blockposition, EnumDirection.EnumAxis enumdirection_enumaxis) {
|
||||
@ -81,7 +81,7 @@
|
||||
+ blocks.add(bworld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()));
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
} else if (i == this.h - 1) {
|
||||
} else if (i == this.width - 1) {
|
||||
block = this.a.getType(blockposition.shift(this.c)).getBlock();
|
||||
if (block != Blocks.OBSIDIAN) {
|
||||
break label56;
|
||||
@ -94,31 +94,31 @@
|
||||
}
|
||||
}
|
||||
@@ -277,6 +302,11 @@
|
||||
if (this.a.getType(this.f.shift(this.c, i).up(this.g)).getBlock() != Blocks.OBSIDIAN) {
|
||||
this.g = 0;
|
||||
if (this.a.getType(this.position.shift(this.c, i).up(this.height)).getBlock() != Blocks.OBSIDIAN) {
|
||||
this.height = 0;
|
||||
break;
|
||||
+ // CraftBukkit start - add the block to our list
|
||||
+ } else {
|
||||
+ BlockPosition pos = this.f.shift(this.c, i).up(this.g);
|
||||
+ BlockPosition pos = this.position.shift(this.c, i).up(this.height);
|
||||
+ blocks.add(bworld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()));
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
}
|
||||
|
||||
@@ -298,7 +328,27 @@
|
||||
return this.f != null && this.h >= 2 && this.h <= 21 && this.g >= 3 && this.g <= 21;
|
||||
return this.position != null && this.width >= 2 && this.width <= 21 && this.height >= 3 && this.height <= 21;
|
||||
}
|
||||
|
||||
- public void e() {
|
||||
- public void createPortal() {
|
||||
+ // CraftBukkit start - return boolean
|
||||
+ public boolean e() {
|
||||
+ public boolean createPortal() {
|
||||
+ org.bukkit.World bworld = this.a.getWorld();
|
||||
+
|
||||
+ // Copy below for loop
|
||||
+ for (int i = 0; i < this.h; ++i) {
|
||||
+ BlockPosition blockposition = this.f.shift(this.c, i);
|
||||
+ for (int i = 0; i < this.width; ++i) {
|
||||
+ BlockPosition blockposition = this.position.shift(this.c, i);
|
||||
+
|
||||
+ for (int j = 0; j < this.g; ++j) {
|
||||
+ for (int j = 0; j < this.height; ++j) {
|
||||
+ BlockPosition pos = blockposition.up(j);
|
||||
+ blocks.add(bworld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()));
|
||||
+ }
|
||||
@ -131,8 +131,8 @@
|
||||
+ return false;
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
for (int i = 0; i < this.h; ++i) {
|
||||
BlockPosition blockposition = this.f.shift(this.c, i);
|
||||
for (int i = 0; i < this.width; ++i) {
|
||||
BlockPosition blockposition = this.position.shift(this.c, i);
|
||||
|
||||
@@ -307,6 +357,7 @@
|
||||
}
|
||||
|
@ -12,11 +12,11 @@
|
||||
}
|
||||
|
||||
protected int f(World world, BlockPosition blockposition) {
|
||||
- int i = Math.min(world.a(Entity.class, this.a(blockposition)).size(), this.b);
|
||||
- int i = Math.min(world.a(Entity.class, this.getBoundingBox(blockposition)).size(), this.weight);
|
||||
+ // CraftBukkit start
|
||||
+ //int i = Math.min(world.a(Entity.class, this.a(blockposition)).size(), this.b);
|
||||
+ int i = 0;
|
||||
+ java.util.Iterator iterator = world.a(Entity.class, this.a(blockposition)).iterator();
|
||||
+ java.util.Iterator iterator = world.a(Entity.class, this.getBoundingBox(blockposition)).iterator();
|
||||
+
|
||||
+ while (iterator.hasNext()) {
|
||||
+ Entity entity = (Entity) iterator.next();
|
||||
@ -36,8 +36,8 @@
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ i = Math.min(i, this.b);
|
||||
+ i = Math.min(i, this.weight);
|
||||
+ // CraftBukkit end
|
||||
|
||||
if (i > 0) {
|
||||
float f = (float) Math.min(this.b, i) / (float) this.b;
|
||||
float f = (float) Math.min(this.weight, i) / (float) this.weight;
|
||||
|
@ -21,16 +21,16 @@
|
||||
for (i = 0; i < this.getDetectorSnowGolem().b(); ++i) {
|
||||
ShapeDetectorBlock shapedetectorblock = shapedetector_shapedetectorcollection.a(0, i, 0);
|
||||
|
||||
- world.setTypeAndData(shapedetectorblock.d(), Blocks.AIR.getBlockData(), 2);
|
||||
- world.setTypeAndData(shapedetectorblock.getPosition(), Blocks.AIR.getBlockData(), 2);
|
||||
+ // CraftBukkit start
|
||||
+ // world.setTypeAndData(shapedetectorblock.d(), Blocks.AIR.getBlockData(), 2);
|
||||
+ BlockPosition pos = shapedetectorblock.d();
|
||||
+ BlockPosition pos = shapedetectorblock.getPosition();
|
||||
+ blockList.setTypeId(pos.getX(), pos.getY(), pos.getZ(), 0);
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
EntitySnowman entitysnowman = new EntitySnowman(world);
|
||||
BlockPosition blockposition1 = shapedetector_shapedetectorcollection.a(0, 2, 0).d();
|
||||
BlockPosition blockposition1 = shapedetector_shapedetectorcollection.a(0, 2, 0).getPosition();
|
||||
|
||||
entitysnowman.setPositionRotation((double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.05D, (double) blockposition1.getZ() + 0.5D, 0.0F, 0.0F);
|
||||
- world.addEntity(entitysnowman);
|
||||
@ -42,17 +42,17 @@
|
||||
world.addParticle(EnumParticle.SNOW_SHOVEL, (double) blockposition1.getX() + world.random.nextDouble(), (double) blockposition1.getY() + world.random.nextDouble() * 2.5D, (double) blockposition1.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]);
|
||||
@@ -61,10 +74,16 @@
|
||||
|
||||
world.update(shapedetectorblock1.d(), Blocks.AIR);
|
||||
world.update(shapedetectorblock1.getPosition(), Blocks.AIR);
|
||||
}
|
||||
+ } // CraftBukkit end
|
||||
} else if ((shapedetector_shapedetectorcollection = this.getDetectorIronGolem().a(world, blockposition)) != null) {
|
||||
+ BlockStateListPopulator blockList = new BlockStateListPopulator(world.getWorld()); // CraftBukkit - Use BlockStateListPopulator
|
||||
for (i = 0; i < this.getDetectorIronGolem().c(); ++i) {
|
||||
for (int k = 0; k < this.getDetectorIronGolem().b(); ++k) {
|
||||
- world.setTypeAndData(shapedetector_shapedetectorcollection.a(i, k, 0).d(), Blocks.AIR.getBlockData(), 2);
|
||||
- world.setTypeAndData(shapedetector_shapedetectorcollection.a(i, k, 0).getPosition(), Blocks.AIR.getBlockData(), 2);
|
||||
+ // CraftBukkit start
|
||||
+ // world.setTypeAndData(shapedetectorcollection.a(i, k, 0).d(), Blocks.AIR.getBlockData(), 2);
|
||||
+ BlockPosition pos = shapedetector_shapedetectorcollection.a(i, k, 0).d();
|
||||
+ BlockPosition pos = shapedetector_shapedetectorcollection.a(i, k, 0).getPosition();
|
||||
+ blockList.setTypeId(pos.getX(), pos.getY(), pos.getZ(), 0);
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
@ -71,7 +71,7 @@
|
||||
for (j = 0; j < 120; ++j) {
|
||||
world.addParticle(EnumParticle.SNOWBALL, (double) blockposition2.getX() + world.random.nextDouble(), (double) blockposition2.getY() + world.random.nextDouble() * 3.9D, (double) blockposition2.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]);
|
||||
@@ -86,6 +108,7 @@
|
||||
world.update(shapedetectorblock2.d(), Blocks.AIR);
|
||||
world.update(shapedetectorblock2.getPosition(), Blocks.AIR);
|
||||
}
|
||||
}
|
||||
+ } // CraftBukkit end
|
||||
|
@ -69,10 +69,10 @@
|
||||
for (i = 0; i < 3; ++i) {
|
||||
ShapeDetectorBlock shapedetectorblock = shapedetector_shapedetectorcollection.a(i, 0, 0);
|
||||
|
||||
- world.setTypeAndData(shapedetectorblock.d(), shapedetectorblock.a().set(BlockSkull.NODROP, Boolean.valueOf(true)), 2);
|
||||
- world.setTypeAndData(shapedetectorblock.getPosition(), shapedetectorblock.a().set(BlockSkull.NODROP, Boolean.valueOf(true)), 2);
|
||||
+ // CraftBukkit start
|
||||
+ // world.setTypeAndData(shapedetectorblock.d(), shapedetectorblock.a().set(BlockSkull.NODROP, Boolean.valueOf(true)), 2);
|
||||
+ BlockPosition pos = shapedetectorblock.d();
|
||||
+ // world.setTypeAndData(shapedetectorblock.getPosition(), shapedetectorblock.a().set(BlockSkull.NODROP, Boolean.valueOf(true)), 2);
|
||||
+ BlockPosition pos = shapedetectorblock.getPosition();
|
||||
+ IBlockData data = shapedetectorblock.a().set(BlockSkull.NODROP, Boolean.valueOf(true));
|
||||
+ blockList.setTypeAndData(pos.getX(), pos.getY(), pos.getZ(), data.getBlock(), data.getBlock().toLegacyData(data), 2);
|
||||
+ // CraftBukkit end
|
||||
@ -82,10 +82,10 @@
|
||||
for (int j = 0; j < shapedetector.b(); ++j) {
|
||||
ShapeDetectorBlock shapedetectorblock1 = shapedetector_shapedetectorcollection.a(i, j, 0);
|
||||
|
||||
- world.setTypeAndData(shapedetectorblock1.d(), Blocks.AIR.getBlockData(), 2);
|
||||
- world.setTypeAndData(shapedetectorblock1.getPosition(), Blocks.AIR.getBlockData(), 2);
|
||||
+ // CraftBukkit start
|
||||
+ // world.setTypeAndData(shapedetectorblock1.d(), Blocks.AIR.getBlockData(), 2);
|
||||
+ BlockPosition pos = shapedetectorblock1.d();
|
||||
+ // world.setTypeAndData(shapedetectorblock1.getPosition(), Blocks.AIR.getBlockData(), 2);
|
||||
+ BlockPosition pos = shapedetectorblock1.getPosition();
|
||||
+ blockList.setTypeAndData(pos.getX(), pos.getY(), pos.getZ(), Blocks.AIR, 0, 2);
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
@ -111,7 +111,7 @@
|
||||
|
||||
for (k = 0; k < 120; ++k) {
|
||||
@@ -178,6 +218,7 @@
|
||||
world.update(shapedetectorblock2.d(), Blocks.AIR);
|
||||
world.update(shapedetectorblock2.getPosition(), Blocks.AIR);
|
||||
}
|
||||
}
|
||||
+ } // CraftBukkit end
|
||||
|
@ -28,8 +28,8 @@
|
||||
@@ -43,16 +54,35 @@
|
||||
}
|
||||
|
||||
public void a(World world, BlockPosition blockposition, Entity entity, float f) {
|
||||
+ super.a(world, blockposition, entity, f); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage.
|
||||
public void fallOn(World world, BlockPosition blockposition, Entity entity, float f) {
|
||||
+ super.fallOn(world, blockposition, entity, f); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage.
|
||||
if (entity instanceof EntityLiving) {
|
||||
if (!world.isClientSide && world.random.nextFloat() < f - 0.5F) {
|
||||
if (!(entity instanceof EntityHuman) && !world.getGameRules().getBoolean("mobGriefing")) {
|
||||
@ -57,8 +57,8 @@
|
||||
world.setTypeUpdate(blockposition, Blocks.DIRT.getBlockData());
|
||||
}
|
||||
|
||||
- super.a(world, blockposition, entity, f);
|
||||
+ // super.a(world, blockposition, entity, f); // CraftBukkit - moved up
|
||||
- super.fallOn(world, blockposition, entity, f);
|
||||
+ // super.fallOn(world, blockposition, entity, f); // CraftBukkit - moved up
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,23 +33,23 @@
|
||||
+ org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition2.getX(), blockposition2.getY(), blockposition2.getZ());
|
||||
+
|
||||
if (flag1 && this.c(world.getType(blockposition3).getBlock())) {
|
||||
- world.setTypeAndData(blockposition2, this.getBlockData().set(a(enumdirection1), Boolean.valueOf(true)), 2);
|
||||
- world.setTypeAndData(blockposition2, this.getBlockData().set(getDirection(enumdirection1), Boolean.valueOf(true)), 2);
|
||||
+ // world.setTypeAndData(blockposition2, this.getBlockData().set(a(enumdirection1), Boolean.valueOf(true)), 2);
|
||||
+ CraftEventFactory.handleBlockSpreadEvent(bukkitBlock, source, this, toLegacyData(this.getBlockData().set(a(enumdirection1), Boolean.valueOf(true))));
|
||||
+ CraftEventFactory.handleBlockSpreadEvent(bukkitBlock, source, this, toLegacyData(this.getBlockData().set(getDirection(enumdirection1), Boolean.valueOf(true))));
|
||||
} else if (flag2 && this.c(world.getType(blockposition4).getBlock())) {
|
||||
- world.setTypeAndData(blockposition2, this.getBlockData().set(a(enumdirection2), Boolean.valueOf(true)), 2);
|
||||
- world.setTypeAndData(blockposition2, this.getBlockData().set(getDirection(enumdirection2), Boolean.valueOf(true)), 2);
|
||||
+ // world.setTypeAndData(blockposition2, this.getBlockData().set(a(enumdirection2), Boolean.valueOf(true)), 2);
|
||||
+ CraftEventFactory.handleBlockSpreadEvent(bukkitBlock, source, this, toLegacyData(this.getBlockData().set(a(enumdirection2), Boolean.valueOf(true))));
|
||||
+ CraftEventFactory.handleBlockSpreadEvent(bukkitBlock, source, this, toLegacyData(this.getBlockData().set(getDirection(enumdirection2), Boolean.valueOf(true))));
|
||||
} else if (flag1 && world.isEmpty(blockposition3) && this.c(world.getType(blockposition.shift(enumdirection1)).getBlock())) {
|
||||
- world.setTypeAndData(blockposition3, this.getBlockData().set(a(enumdirection.opposite()), Boolean.valueOf(true)), 2);
|
||||
- world.setTypeAndData(blockposition3, this.getBlockData().set(getDirection(enumdirection.opposite()), Boolean.valueOf(true)), 2);
|
||||
+ // world.setTypeAndData(blockposition3, this.getBlockData().set(a(enumdirection.opposite()), Boolean.valueOf(true)), 2);
|
||||
+ bukkitBlock = world.getWorld().getBlockAt(blockposition3.getX(), blockposition3.getY(), blockposition3.getZ());
|
||||
+ CraftEventFactory.handleBlockSpreadEvent(bukkitBlock, source, this, toLegacyData(this.getBlockData().set(a(enumdirection.opposite()), Boolean.valueOf(true))));
|
||||
+ CraftEventFactory.handleBlockSpreadEvent(bukkitBlock, source, this, toLegacyData(this.getBlockData().set(getDirection(enumdirection.opposite()), Boolean.valueOf(true))));
|
||||
} else if (flag2 && world.isEmpty(blockposition4) && this.c(world.getType(blockposition.shift(enumdirection2)).getBlock())) {
|
||||
- world.setTypeAndData(blockposition4, this.getBlockData().set(a(enumdirection.opposite()), Boolean.valueOf(true)), 2);
|
||||
- world.setTypeAndData(blockposition4, this.getBlockData().set(getDirection(enumdirection.opposite()), Boolean.valueOf(true)), 2);
|
||||
+ // world.setTypeAndData(blockposition4, this.getBlockData().set(a(enumdirection.opposite()), Boolean.valueOf(true)), 2);
|
||||
+ bukkitBlock = world.getWorld().getBlockAt(blockposition4.getX(), blockposition4.getY(), blockposition4.getZ());
|
||||
+ CraftEventFactory.handleBlockSpreadEvent(bukkitBlock, source, this, toLegacyData(this.getBlockData().set(a(enumdirection.opposite()), Boolean.valueOf(true))));
|
||||
+ CraftEventFactory.handleBlockSpreadEvent(bukkitBlock, source, this, toLegacyData(this.getBlockData().set(getDirection(enumdirection.opposite()), Boolean.valueOf(true))));
|
||||
} else if (this.c(world.getType(blockposition2.up()).getBlock())) {
|
||||
- world.setTypeAndData(blockposition2, this.getBlockData(), 2);
|
||||
+ // world.setTypeAndData(blockposition2, this.getBlockData(), 2);
|
||||
@ -57,7 +57,7 @@
|
||||
}
|
||||
+ // CraftBukkit end
|
||||
} else if (block.material.k() && block.d()) {
|
||||
world.setTypeAndData(blockposition, iblockdata.set(a(enumdirection), Boolean.valueOf(true)), 2);
|
||||
world.setTypeAndData(blockposition, iblockdata.set(getDirection(enumdirection), Boolean.valueOf(true)), 2);
|
||||
}
|
||||
@@ -257,7 +277,12 @@
|
||||
}
|
||||
|
@ -110,12 +110,12 @@
|
||||
}
|
||||
|
||||
if (j == 1) {
|
||||
- entityhuman.drop(playerinventory.getCarried().a(1), true);
|
||||
- entityhuman.drop(playerinventory.getCarried().cloneAndSubtract(1), true);
|
||||
- if (playerinventory.getCarried().count == 0) {
|
||||
+ // CraftBukkit start - Store a reference
|
||||
+ ItemStack itemstack4 = playerinventory.getCarried();
|
||||
+ if (itemstack4.count > 0) {
|
||||
+ entityhuman.drop(itemstack4.a(1), true);
|
||||
+ entityhuman.drop(itemstack4.cloneAndSubtract(1), true);
|
||||
+ }
|
||||
+
|
||||
+ if (itemstack4.count == 0) {
|
||||
@ -136,7 +136,7 @@
|
||||
} else if (slot2.isAllowed(entityhuman)) {
|
||||
if (itemstack4 == null) {
|
||||
@@ -249,7 +315,11 @@
|
||||
itemstack4.a(k1);
|
||||
itemstack4.cloneAndSubtract(k1);
|
||||
if (itemstack4.count == 0) {
|
||||
playerinventory.setCarried((ItemStack) null);
|
||||
+ // CraftBukkit start - Update client cursor if we didn't empty it
|
||||
|
@ -7,7 +7,7 @@
|
||||
+
|
||||
public class ContainerBeacon extends Container {
|
||||
|
||||
private IInventory a;
|
||||
private IInventory beacon;
|
||||
private final ContainerBeacon.SlotBeacon f;
|
||||
+ // CraftBukkit start
|
||||
+ private CraftInventoryView bukkitEntity = null;
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
public ContainerBeacon(IInventory iinventory, IInventory iinventory1) {
|
||||
+ player = (PlayerInventory) iinventory; // CraftBukkit - TODO: check this
|
||||
this.a = iinventory1;
|
||||
this.beacon = iinventory1;
|
||||
this.a((Slot) (this.f = new ContainerBeacon.SlotBeacon(iinventory1, 0, 136, 110)));
|
||||
byte b0 = 36;
|
||||
@@ -47,6 +54,7 @@
|
||||
@ -24,7 +24,7 @@
|
||||
|
||||
public boolean a(EntityHuman entityhuman) {
|
||||
+ if (!this.checkReachable) return true; // CraftBukkit
|
||||
return this.a.a(entityhuman);
|
||||
return this.beacon.a(entityhuman);
|
||||
}
|
||||
|
||||
@@ -110,4 +118,17 @@
|
||||
@ -39,7 +39,7 @@
|
||||
+ return bukkitEntity;
|
||||
+ }
|
||||
+
|
||||
+ org.bukkit.craftbukkit.inventory.CraftInventory inventory = new org.bukkit.craftbukkit.inventory.CraftInventoryBeacon((TileEntityBeacon) this.a); // TODO - check this
|
||||
+ org.bukkit.craftbukkit.inventory.CraftInventory inventory = new org.bukkit.craftbukkit.inventory.CraftInventoryBeacon((TileEntityBeacon) this.beacon); // TODO - check this
|
||||
+ bukkitEntity = new CraftInventoryView(this.player.player.getBukkitEntity(), inventory, this);
|
||||
+ return bukkitEntity;
|
||||
+ }
|
||||
|
@ -86,7 +86,7 @@
|
||||
boolean flag = itemstack.getItem() == Items.BOOK;
|
||||
|
||||
if (list != null) {
|
||||
- entityhuman.b(j);
|
||||
- entityhuman.enchantDone(j);
|
||||
+ // CraftBukkit start
|
||||
+ Map<org.bukkit.enchantments.Enchantment, Integer> enchants = new java.util.HashMap<org.bukkit.enchantments.Enchantment, Integer>();
|
||||
+ for (Object obj : list) {
|
||||
@ -130,7 +130,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ entityhuman.b(j);
|
||||
+ entityhuman.enchantDone(j);
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
+ // CraftBukkit - TODO: let plugins change this
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CraftingManager.java
|
||||
+++ b/net/minecraft/server/CraftingManager.java
|
||||
@@ -9,16 +9,22 @@
|
||||
@@ -9,10 +9,16 @@
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
@ -17,13 +17,6 @@
|
||||
|
||||
public static CraftingManager getInstance() {
|
||||
return CraftingManager.a;
|
||||
}
|
||||
|
||||
- private CraftingManager() {
|
||||
+ public CraftingManager() { // PAIL: Public
|
||||
(new RecipesTools()).a(this);
|
||||
(new RecipesWeapons()).a(this);
|
||||
(new RecipeIngots()).a(this);
|
||||
@@ -167,7 +173,12 @@
|
||||
this.registerShapedRecipe(new ItemStack(Blocks.DAYLIGHT_DETECTOR), new Object[] { "GGG", "QQQ", "WWW", Character.valueOf('G'), Blocks.GLASS, Character.valueOf('Q'), Items.QUARTZ, Character.valueOf('W'), Blocks.WOODEN_SLAB});
|
||||
this.registerShapedRecipe(new ItemStack(Blocks.HOPPER), new Object[] { "I I", "ICI", " I ", Character.valueOf('I'), Items.IRON_INGOT, Character.valueOf('C'), Blocks.CHEST});
|
||||
@ -49,10 +42,10 @@
|
||||
irecipe = (IRecipe) iterator.next();
|
||||
} while (!irecipe.a(inventorycrafting, world));
|
||||
|
||||
- return irecipe.a(inventorycrafting);
|
||||
- return irecipe.craftItem(inventorycrafting);
|
||||
+ // CraftBukkit start - INVENTORY_PRE_CRAFT event
|
||||
+ inventorycrafting.currentRecipe = irecipe;
|
||||
+ ItemStack result = irecipe.a(inventorycrafting);
|
||||
+ ItemStack result = irecipe.craftItem(inventorycrafting);
|
||||
+ return CraftEventFactory.callPreCraftEvent(inventorycrafting, result, lastCraftView, false);
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
@ -13,11 +13,11 @@
|
||||
public DispenseBehaviorItem() {}
|
||||
@@ -17,11 +22,18 @@
|
||||
IPosition iposition = BlockDispenser.a(isourceblock);
|
||||
ItemStack itemstack1 = itemstack.a(1);
|
||||
ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
|
||||
- a(isourceblock.i(), itemstack1, 6, enumdirection, iposition);
|
||||
- a(isourceblock.getWorld(), itemstack1, 6, enumdirection, iposition);
|
||||
+ // CraftBukkit start
|
||||
+ if (!a(isourceblock.i(), itemstack1, 6, enumdirection, isourceblock)) {
|
||||
+ if (!a(isourceblock.getWorld(), itemstack1, 6, enumdirection, isourceblock)) {
|
||||
+ itemstack.count++;
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
@ -58,8 +58,8 @@
|
||||
+ if (!event.getItem().getType().equals(craftItem.getType())) {
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior.getClass() != DispenseBehaviorItem.class) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior.getClass() != DispenseBehaviorItem.class) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ } else {
|
||||
+ world.addEntity(entityitem);
|
||||
|
@ -15,10 +15,10 @@
|
||||
EnumDirection enumdirection = BlockDispenser.b(isourceblock.f());
|
||||
IProjectile iprojectile = this.a(world, iposition);
|
||||
|
||||
- iprojectile.shoot((double) enumdirection.getAdjacentX(), (double) ((float) enumdirection.getAdjacentY() + 0.1F), (double) enumdirection.getAdjacentZ(), this.b(), this.a());
|
||||
- iprojectile.shoot((double) enumdirection.getAdjacentX(), (double) ((float) enumdirection.getAdjacentY() + 0.1F), (double) enumdirection.getAdjacentZ(), this.getPower(), this.a());
|
||||
+ // iprojectile.shoot((double) enumdirection.getAdjacentX(), (double) ((float) enumdirection.getAdjacentY() + 0.1F), (double) enumdirection.getAdjacentZ(), this.b(), this.a());
|
||||
+ // CraftBukkit start
|
||||
+ ItemStack itemstack1 = itemstack.a(1);
|
||||
+ ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
|
||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||
+
|
||||
@ -36,18 +36,18 @@
|
||||
+ itemstack.count++;
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ iprojectile.shoot(event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), this.b(), this.a());
|
||||
+ iprojectile.shoot(event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), this.getPower(), this.a());
|
||||
+ ((Entity) iprojectile).projectileSource = new org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource((TileEntityDispenser) isourceblock.getTileEntity());
|
||||
+ // CraftBukkit end
|
||||
world.addEntity((Entity) iprojectile);
|
||||
- itemstack.a(1);
|
||||
- itemstack.cloneAndSubtract(1);
|
||||
+ // itemstack.a(1); // CraftBukkit - Handled during event processing
|
||||
return itemstack;
|
||||
}
|
||||
|
@ -16,12 +16,12 @@
|
||||
double d0 = isourceblock.getX() + (double) enumdirection.getAdjacentX();
|
||||
double d1 = (double) ((float) isourceblock.getBlockPosition().getY() + 0.2F);
|
||||
double d2 = isourceblock.getZ() + (double) enumdirection.getAdjacentZ();
|
||||
- Entity entity = ItemMonsterEgg.a(isourceblock.i(), itemstack.getData(), d0, d1, d2);
|
||||
+ // Entity entity = ItemMonsterEgg.a(isourceblock.i(), itemstack.getData(), d0, d1, d2);
|
||||
- Entity entity = ItemMonsterEgg.a(isourceblock.getWorld(), itemstack.getData(), d0, d1, d2);
|
||||
+ // Entity entity = ItemMonsterEgg.a(isourceblock.getWorld(), itemstack.getData(), d0, d1, d2);
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ World world = isourceblock.i();
|
||||
+ ItemStack itemstack1 = itemstack.a(1);
|
||||
+ World world = isourceblock.getWorld();
|
||||
+ ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
|
||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||
+
|
||||
@ -39,8 +39,8 @@
|
||||
+ itemstack.count++;
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
@ -48,13 +48,13 @@
|
||||
+
|
||||
+ itemstack1 = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+
|
||||
+ Entity entity = ItemMonsterEgg.spawnCreature(isourceblock.i(), itemstack.getData(), event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DISPENSE_EGG);
|
||||
+ Entity entity = ItemMonsterEgg.spawnCreature(isourceblock.getWorld(), itemstack.getData(), event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DISPENSE_EGG);
|
||||
|
||||
if (entity instanceof EntityLiving && itemstack.hasName()) {
|
||||
((EntityInsentient) entity).setCustomName(itemstack.getName());
|
||||
}
|
||||
|
||||
- itemstack.a(1);
|
||||
- itemstack.cloneAndSubtract(1);
|
||||
+ // itemstack.a(1); // Handled during event processing
|
||||
+ // CraftBukkit end
|
||||
return itemstack;
|
||||
@ -64,10 +64,10 @@
|
||||
double d0 = isourceblock.getX() + (double) enumdirection.getAdjacentX();
|
||||
double d1 = (double) ((float) isourceblock.getBlockPosition().getY() + 0.2F);
|
||||
double d2 = isourceblock.getZ() + (double) enumdirection.getAdjacentZ();
|
||||
- EntityFireworks entityfireworks = new EntityFireworks(isourceblock.i(), d0, d1, d2, itemstack);
|
||||
- EntityFireworks entityfireworks = new EntityFireworks(isourceblock.getWorld(), d0, d1, d2, itemstack);
|
||||
+ // CraftBukkit start
|
||||
+ World world = isourceblock.i();
|
||||
+ ItemStack itemstack1 = itemstack.a(1);
|
||||
+ World world = isourceblock.getWorld();
|
||||
+ ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
|
||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||
+
|
||||
@ -85,18 +85,18 @@
|
||||
+ itemstack.count++;
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ itemstack1 = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ EntityFireworks entityfireworks = new EntityFireworks(isourceblock.i(), event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), itemstack1);
|
||||
+ EntityFireworks entityfireworks = new EntityFireworks(isourceblock.getWorld(), event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), itemstack1);
|
||||
|
||||
isourceblock.i().addEntity(entityfireworks);
|
||||
- itemstack.a(1);
|
||||
isourceblock.getWorld().addEntity(entityfireworks);
|
||||
- itemstack.cloneAndSubtract(1);
|
||||
+ // itemstack.a(1); // Handled during event processing
|
||||
+ // CraftBukkit end
|
||||
return itemstack;
|
||||
@ -107,9 +107,9 @@
|
||||
double d5 = random.nextGaussian() * 0.05D + (double) enumdirection.getAdjacentZ();
|
||||
|
||||
- world.addEntity(new EntitySmallFireball(world, d0, d1, d2, d3, d4, d5));
|
||||
- itemstack.a(1);
|
||||
- itemstack.cloneAndSubtract(1);
|
||||
+ // CraftBukkit start
|
||||
+ ItemStack itemstack1 = itemstack.a(1);
|
||||
+ ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
|
||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||
+
|
||||
@ -127,8 +127,8 @@
|
||||
+ itemstack.count++;
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
@ -150,7 +150,7 @@
|
||||
- EntityBoat entityboat = new EntityBoat(world, d0, d1 + d3, d2);
|
||||
+ // EntityBoat entityboat = new EntityBoat(world, d0, d1 + d3, d2);
|
||||
+ // CraftBukkit start
|
||||
+ ItemStack itemstack1 = itemstack.a(1);
|
||||
+ ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
|
||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||
+
|
||||
@ -168,8 +168,8 @@
|
||||
+ itemstack.count++;
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
@ -179,7 +179,7 @@
|
||||
+ // CraftBukkit end
|
||||
|
||||
world.addEntity(entityboat);
|
||||
- itemstack.a(1);
|
||||
- itemstack.cloneAndSubtract(1);
|
||||
+ // itemstack.a(1); // CraftBukkit - handled during event processing
|
||||
return itemstack;
|
||||
}
|
||||
@ -189,7 +189,7 @@
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift(BlockDispenser.b(isourceblock.f()));
|
||||
|
||||
+ // CraftBukkit start
|
||||
+ World world = isourceblock.i();
|
||||
+ World world = isourceblock.getWorld();
|
||||
+ int x = blockposition.getX();
|
||||
+ int y = blockposition.getY();
|
||||
+ int z = blockposition.getZ();
|
||||
@ -209,8 +209,8 @@
|
||||
+ if (!event.getItem().equals(craftItem)) {
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
@ -220,7 +220,7 @@
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
if (itembucket.a(isourceblock.i(), blockposition)) {
|
||||
if (itembucket.a(isourceblock.getWorld(), blockposition)) {
|
||||
- itemstack.setItem(Items.BUCKET);
|
||||
- itemstack.count = 1;
|
||||
+ // CraftBukkit start - Handle stacked buckets
|
||||
@ -255,8 +255,8 @@
|
||||
+ if (!event.getItem().equals(craftItem)) {
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
@ -267,7 +267,7 @@
|
||||
if (--itemstack.count == 0) {
|
||||
itemstack.setItem(item);
|
||||
@@ -215,11 +402,39 @@
|
||||
World world = isourceblock.i();
|
||||
World world = isourceblock.getWorld();
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift(BlockDispenser.b(isourceblock.f()));
|
||||
|
||||
+ // CraftBukkit start
|
||||
@ -286,8 +286,8 @@
|
||||
+ if (!event.getItem().equals(craftItem)) {
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
@ -310,7 +310,7 @@
|
||||
Blocks.TNT.postBreak(world, blockposition, Blocks.TNT.getBlockData().set(BlockTNT.EXPLODE, Boolean.valueOf(true)));
|
||||
world.setAir(blockposition);
|
||||
@@ -247,6 +462,30 @@
|
||||
World world = isourceblock.i();
|
||||
World world = isourceblock.getWorld();
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift(BlockDispenser.b(isourceblock.f()));
|
||||
|
||||
+ // CraftBukkit start
|
||||
@ -329,8 +329,8 @@
|
||||
+ if (!event.getItem().equals(craftItem)) {
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
@ -342,13 +342,13 @@
|
||||
world.triggerEffect(2005, blockposition, 0);
|
||||
@@ -274,11 +513,40 @@
|
||||
protected ItemStack b(ISourceBlock isourceblock, ItemStack itemstack) {
|
||||
World world = isourceblock.i();
|
||||
World world = isourceblock.getWorld();
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift(BlockDispenser.b(isourceblock.f()));
|
||||
- EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, (EntityLiving) null);
|
||||
+ // EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, (EntityLiving) null);
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ ItemStack itemstack1 = itemstack.a(1);
|
||||
+ ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
|
||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||
+
|
||||
@ -366,8 +366,8 @@
|
||||
+ itemstack.count++;
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
|
@ -18,12 +18,8 @@
|
||||
public class EntityEnderDragon extends EntityInsentient implements IComplex, IMonster {
|
||||
|
||||
public double a;
|
||||
@@ -24,9 +35,10 @@
|
||||
public float bv;
|
||||
public boolean bw;
|
||||
public boolean bx;
|
||||
- private Entity bA;
|
||||
+ public Entity bA; // CraftBukkit - public // PAIL: Target
|
||||
@@ -27,6 +38,7 @@
|
||||
public Entity target;
|
||||
public int by;
|
||||
public EntityEnderCrystal bz;
|
||||
+ private Explosion explosionSource = new Explosion(null, this, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, true); // CraftBukkit - reusable source for CraftTNTPrimed.getSource()
|
||||
@ -57,7 +53,7 @@
|
||||
}
|
||||
|
||||
if (this.random.nextInt(2) == 0 && !arraylist.isEmpty()) {
|
||||
- this.bA = (Entity) arraylist.get(this.random.nextInt(arraylist.size()));
|
||||
- this.target = (Entity) arraylist.get(this.random.nextInt(arraylist.size()));
|
||||
+ // CraftBukkit start
|
||||
+ Entity target = (Entity) this.world.players.get(this.random.nextInt(this.world.players.size()));
|
||||
+ EntityTargetEvent event = new EntityTargetEvent(this.getBukkitEntity(), target.getBukkitEntity(), EntityTargetEvent.TargetReason.RANDOM_TARGET);
|
||||
@ -65,9 +61,9 @@
|
||||
+
|
||||
+ if (!event.isCancelled()) {
|
||||
+ if (event.getTarget() == null) {
|
||||
+ this.bA = null;
|
||||
+ this.target = null;
|
||||
+ } else {
|
||||
+ this.bA = ((org.bukkit.craftbukkit.entity.CraftEntity) event.getTarget()).getHandle();
|
||||
+ this.target = ((org.bukkit.craftbukkit.entity.CraftEntity) event.getTarget()).getHandle();
|
||||
+ }
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
|
@ -16,17 +16,6 @@
|
||||
public abstract class EntityInsentient extends EntityLiving {
|
||||
|
||||
public int a_;
|
||||
@@ -13,8 +22,8 @@
|
||||
protected ControllerJump g;
|
||||
private EntityAIBodyControl b;
|
||||
protected NavigationAbstract navigation;
|
||||
- public final PathfinderGoalSelector goalSelector;
|
||||
- public final PathfinderGoalSelector targetSelector;
|
||||
+ public PathfinderGoalSelector goalSelector; // PAIL: -final
|
||||
+ public PathfinderGoalSelector targetSelector; // PAIL: -final
|
||||
private EntityLiving goalTarget;
|
||||
private EntitySenses bk;
|
||||
private ItemStack[] equipment = new ItemStack[5];
|
||||
@@ -40,6 +49,9 @@
|
||||
this.dropChances[i] = 0.085F;
|
||||
}
|
||||
|
@ -139,13 +139,12 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -197,7 +266,10 @@
|
||||
@@ -197,7 +266,9 @@
|
||||
}
|
||||
|
||||
public EntityLiving c() {
|
||||
public EntityLiving getSource() {
|
||||
- return this.source == null ? null : (this.source instanceof EntityTNTPrimed ? ((EntityTNTPrimed) this.source).getSource() : (this.source instanceof EntityLiving ? (EntityLiving) this.source : null));
|
||||
+ // CraftBukkit start - obtain Fireball shooter for explosion tracking
|
||||
+ // PAIL: Rename
|
||||
+ return this.source == null ? null : (this.source instanceof EntityTNTPrimed ? ((EntityTNTPrimed) this.source).getSource() : (this.source instanceof EntityLiving ? (EntityLiving) this.source : (this.source instanceof EntityFireball ? ((EntityFireball) this.source).shooter : null)));
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
@ -64,7 +64,7 @@
|
||||
this.b.close(chatcomponenttext);
|
||||
} else {
|
||||
this.b.a((PacketListener) (new LoginListener(this.a, this.b)));
|
||||
+ ((LoginListener) this.b.getPacketListener()).hostname = packethandshakinginsetprotocol.b + ":" + packethandshakinginsetprotocol.c; // CraftBukkit - set hostname
|
||||
+ ((LoginListener) this.b.getPacketListener()).hostname = packethandshakinginsetprotocol.hostname + ":" + packethandshakinginsetprotocol.port; // CraftBukkit - set hostname
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -19,8 +19,8 @@
|
||||
- ItemStack itemstack1 = itemstack.cloneItemStack();
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ ItemStack itemstack1 = itemstack.a(1);
|
||||
+ World world = isourceblock.i();
|
||||
+ ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
+ World world = isourceblock.getWorld();
|
||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
|
||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||
+
|
||||
@ -38,8 +38,8 @@
|
||||
+ itemstack.count++;
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
|
@ -18,7 +18,7 @@
|
||||
- EntityMinecartAbstract entityminecartabstract = EntityMinecartAbstract.a(world, d0, d1 + d3, d2, ((ItemMinecart) itemstack.getItem()).b);
|
||||
+ // CraftBukkit start
|
||||
+ // EntityMinecartAbstract entityminecartabstract = EntityMinecartAbstract.a(world, d0, d1 + d3, d2, ((ItemMinecart) itemstack.getItem()).b);
|
||||
+ ItemStack itemstack1 = itemstack.a(1);
|
||||
+ ItemStack itemstack1 = itemstack.cloneAndSubtract(1);
|
||||
+ org.bukkit.block.Block block2 = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ());
|
||||
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
|
||||
+
|
||||
@ -36,8 +36,8 @@
|
||||
+ itemstack.count++;
|
||||
+ // Chain to handler for new item
|
||||
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.N.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
|
||||
+ IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem());
|
||||
+ if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) {
|
||||
+ idispensebehavior.a(isourceblock, eventStack);
|
||||
+ return itemstack;
|
||||
+ }
|
||||
@ -51,7 +51,7 @@
|
||||
}
|
||||
|
||||
world.addEntity(entityminecartabstract);
|
||||
- itemstack.a(1);
|
||||
- itemstack.cloneAndSubtract(1);
|
||||
+ // itemstack.a(1); // CraftBukkit - handled during event processing
|
||||
+ // CraftBukkit end
|
||||
return itemstack;
|
||||
|
@ -1,22 +0,0 @@
|
||||
--- a/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
||||
+++ b/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
||||
@@ -5,8 +5,8 @@
|
||||
public class PacketHandshakingInSetProtocol implements Packet<PacketHandshakingInListener> {
|
||||
|
||||
private int a;
|
||||
- private String b;
|
||||
- private int c;
|
||||
+ public String b; // CraftBukkit - public // PAIL: hostname
|
||||
+ public int c; // CraftBukkit - public // PAIL: port
|
||||
private EnumProtocol d;
|
||||
|
||||
public PacketHandshakingInSetProtocol() {}
|
||||
@@ -36,8 +36,4 @@
|
||||
public int b() {
|
||||
return this.a;
|
||||
}
|
||||
-
|
||||
- public void a(PacketListener packetlistener) {
|
||||
- this.a((PacketHandshakingInListener) packetlistener);
|
||||
- }
|
||||
}
|
@ -413,7 +413,7 @@ public class CraftEventFactory {
|
||||
EntityDamageEvent event;
|
||||
if (damager == null) {
|
||||
event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.BLOCK_EXPLOSION, modifiers, modifierFunctions);
|
||||
} else if (entity instanceof EntityEnderDragon && ((EntityEnderDragon) entity).bA == damager) {
|
||||
} else if (entity instanceof EntityEnderDragon && ((EntityEnderDragon) entity).target == damager) {
|
||||
event = new EntityDamageEvent(entity.getBukkitEntity(), DamageCause.ENTITY_EXPLOSION, modifiers, modifierFunctions);
|
||||
} else {
|
||||
if (damager instanceof org.bukkit.entity.TNTPrimed) {
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren