Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -668,8 +668,13 @@ public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) {
Player player = event.getPlayer();
Block blockClicked = event.getBlockClicked();
Block blockAffected;

if (blockClicked.getBlockData() instanceof Waterlogged) {
boolean canPlaceInside = false;
// Can be placed inside blocks only when not sneaking
if (!player.isSneaking()) {
canPlaceInside = (event.getBucket() != Material.LAVA_BUCKET && blockClicked.getBlockData() instanceof Waterlogged)
|| (Materials.isCauldron(blockClicked.getType()) && Materials.isCauldronBucketType(event.getBucket()));
}
if (canPlaceInside) {
blockAffected = blockClicked;
} else {
blockAffected = blockClicked.getRelative(event.getBlockFace());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1057,6 +1057,7 @@ public static Material getBucketBlockMaterial(Material type) {
return switch (type) {
case LAVA_BUCKET -> Material.LAVA;
case WATER_BUCKET -> Material.WATER;
case POWDER_SNOW_BUCKET -> Material.POWDER_SNOW;
default -> Material.WATER;
};
}
Expand Down Expand Up @@ -1583,4 +1584,19 @@ public static boolean isAmethystGrowth(Material mat) {
public static boolean isSculkGrowth(Material mat) {
return mat == Material.SCULK || mat == Material.SCULK_VEIN;
}

public static boolean isCauldron(Material mat) {
return switch (mat) {
case CAULDRON, LAVA_CAULDRON, POWDER_SNOW_CAULDRON, WATER_CAULDRON -> true;
default -> false;
};
}

// Other buckets containing mobs cannot be placed inside cauldrons
public static boolean isCauldronBucketType(Material mat) {
return switch (mat) {
case WATER_BUCKET, LAVA_BUCKET, POWDER_SNOW_BUCKET -> true;
default -> false;
};
}
}
Loading