2025-03-26 03:05:00 +11:00

36 lines
2.0 KiB
Diff

--- a/net/minecraft/world/level/IBlockAccess.java
+++ b/net/minecraft/world/level/IBlockAccess.java
@@ -30,7 +30,7 @@
default <T extends TileEntity> Optional<T> getBlockEntity(BlockPosition blockposition, TileEntityTypes<T> tileentitytypes) {
TileEntity tileentity = this.getBlockEntity(blockposition);
- return tileentity != null && tileentity.getType() == tileentitytypes ? Optional.of(tileentity) : Optional.empty();
+ return tileentity != null && tileentity.getType() == tileentitytypes ? (Optional<T>) Optional.of(tileentity) : Optional.empty(); // CraftBukkit - decompile error
}
IBlockData getBlockState(BlockPosition blockposition);
@@ -58,8 +58,8 @@
});
}
- default MovingObjectPositionBlock clip(RayTrace raytrace) {
- return (MovingObjectPositionBlock) traverseBlocks(raytrace.getFrom(), raytrace.getTo(), raytrace, (raytrace1, blockposition) -> {
+ // CraftBukkit start - moved block handling into separate method for use by Block#rayTrace
+ default MovingObjectPositionBlock clip(RayTrace raytrace1, BlockPosition blockposition) {
IBlockData iblockdata = this.getBlockState(blockposition);
Fluid fluid = this.getFluidState(blockposition);
Vec3D vec3d = raytrace1.getFrom();
@@ -72,6 +72,12 @@
double d1 = movingobjectpositionblock1 == null ? Double.MAX_VALUE : raytrace1.getFrom().distanceToSqr(movingobjectpositionblock1.getLocation());
return d0 <= d1 ? movingobjectpositionblock : movingobjectpositionblock1;
+ }
+ // CraftBukkit end
+
+ default MovingObjectPositionBlock clip(RayTrace raytrace) {
+ return (MovingObjectPositionBlock) traverseBlocks(raytrace.getFrom(), raytrace.getTo(), raytrace, (raytrace1, blockposition) -> {
+ return this.clip(raytrace1, blockposition); // CraftBukkit - moved into separate method
}, (raytrace1) -> {
Vec3D vec3d = raytrace1.getFrom().subtract(raytrace1.getTo());