mirror of
https://hub.spigotmc.org/stash/scm/spigot/craftbukkit.git
synced 2025-08-21 05:44:33 +00:00

By having a single function to process BlockPlacement logic, we make it so that there is consistent behavior throughout all BlockPlace events. This should allow for easier troubleshooting and less diffs in source. This also fixes BUKKIT-3463 by including the correct coordinates that were clicked to the event.
46 lines
1.6 KiB
Java
46 lines
1.6 KiB
Java
package net.minecraft.server;
|
|
|
|
public class ItemWaterLily extends ItemWithAuxData {
|
|
|
|
public ItemWaterLily(int i) {
|
|
super(i, false);
|
|
}
|
|
|
|
public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) {
|
|
MovingObjectPosition movingobjectposition = this.a(world, entityhuman, true);
|
|
|
|
if (movingobjectposition == null) {
|
|
return itemstack;
|
|
} else {
|
|
if (movingobjectposition.type == EnumMovingObjectType.TILE) {
|
|
int i = movingobjectposition.b;
|
|
int j = movingobjectposition.c;
|
|
int k = movingobjectposition.d;
|
|
final int clickedX = i, clickedY = j, clickedZ = k; // CraftBukkit
|
|
|
|
if (!world.a(entityhuman, i, j, k)) {
|
|
return itemstack;
|
|
}
|
|
|
|
if (!entityhuman.a(i, j, k, movingobjectposition.face, itemstack)) {
|
|
return itemstack;
|
|
}
|
|
|
|
if (world.getMaterial(i, j, k) == Material.WATER && world.getData(i, j, k) == 0 && world.isEmpty(i, j + 1, k)) {
|
|
// CraftBukkit start - waterlily
|
|
// world.setTypeId(i, j + 1, k, Block.WATER_LILY.id);
|
|
if (!processBlockPlace(world, entityhuman, null, i, j + 1, k, Block.WATER_LILY.id, 0, clickedX, clickedY, clickedZ)) {
|
|
return itemstack;
|
|
}
|
|
// CraftBukkit end
|
|
|
|
if (!entityhuman.abilities.canInstantlyBuild) {
|
|
--itemstack.count;
|
|
}
|
|
}
|
|
}
|
|
|
|
return itemstack;
|
|
}
|
|
}
|
|
}
|