Advertisement
Guest User

Untitled

a guest
May 6th, 2020
730
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.32 KB | None | 0 0
  1. import net.minecraft.block.Block;
  2. import net.minecraft.block.BlockState;
  3. import net.minecraft.entity.Entity;
  4. import net.minecraft.entity.player.PlayerEntity;
  5. import net.minecraft.util.Direction;
  6. import net.minecraft.util.math.BlockPos;
  7. import net.minecraft.util.math.BlockRayTraceResult;
  8. import net.minecraft.util.math.RayTraceContext;
  9. import net.minecraft.util.math.Vec3d;
  10. import net.minecraft.world.World;
  11.  
  12. public class RayTraceUtil {
  13.    
  14.     public static BlockState getTargetBlock(PlayerEntity player,World world, int maxdistance){
  15.         BlockPos blockpos = getTargetBlockPos(player,world, maxdistance);  
  16.         if(blockpos == null) {
  17.             return null;
  18.         }
  19.         BlockState blockstate= world.getBlockState(blockpos);  
  20.         return blockstate;     
  21.     }
  22.    
  23.     public static BlockPos getTargetBlockPos(PlayerEntity player,World world, int maxdistance){
  24.         BlockRayTraceResult rayTraceResult = getTargetBlockResult(player,world, maxdistance);
  25.         if(rayTraceResult!=null){
  26.             return new BlockPos(rayTraceResult.getHitVec().getX(),rayTraceResult.getHitVec().getY(),rayTraceResult.getHitVec().getZ());
  27.         }
  28.         return null;       
  29.     }
  30.        
  31.     public static BlockRayTraceResult getTargetBlockResult(PlayerEntity player,World world, int maxdistance){
  32.         Vec3d vec = player.getPositionVector();
  33.         Vec3d vec3 = new Vec3d(vec.x,vec.y+player.getEyeHeight(),vec.z);
  34.         Vec3d vec3a = player.getLook(1.0F);
  35.         Vec3d vec3b = vec3.add(vec3a.getX() * maxdistance, vec3a.getY()*  maxdistance, vec3a.getZ()*  maxdistance);
  36.  
  37.         BlockRayTraceResult rayTraceResult = world.rayTraceBlocks(new RayTraceContext(vec3, vec3b,RayTraceContext.BlockMode.OUTLINE,  RayTraceContext.FluidMode.ANY, player));
  38.        
  39.        
  40.         if(rayTraceResult!=null)
  41.         {
  42.             double xm=rayTraceResult.getHitVec().getX();
  43.             double ym=rayTraceResult.getHitVec().getY();
  44.             double zm=rayTraceResult.getHitVec().getZ();
  45.            
  46.            
  47.             //playerIn.sendMessage(new StringTextComponent(rayTraceResult.getFace().toString()));
  48.             if(rayTraceResult.getFace() == Direction.SOUTH) {
  49.                 zm--;
  50.             }
  51.             if(rayTraceResult.getFace() == Direction.EAST) {
  52.                 xm--;
  53.             }
  54.             if(rayTraceResult.getFace() == Direction.UP) {
  55.                 ym--;
  56.             }
  57.        
  58.             return new BlockRayTraceResult(rayTraceResult.getHitVec(), rayTraceResult.getFace(), new BlockPos(xm,ym,zm), false);
  59.         }
  60.         return null;       
  61.     }
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement