Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- RayTraceResult res = /*world.isRemote? Minecraft.getMinecraft().objectMouseOver :*/RayTracer.retrace(player,16);
- BlockPos to = res.getBlockPos();
- if(player.getDistanceSqToCenter(to)>16*16)return;
- if(world.isRemote){
- //FIXME to is the player position (client side) if using world.raytrace
- world.spawnParticle(EnumParticleTypes.SPELL, true, to.getX()+0.5, to.getY(), to.getZ()+0.5, 0d, 0d, 0d, 0);
- }else{
- ((WorldServer)world).spawnParticle(EnumParticleTypes.SPELL_MOB, to.getX()+0.5, to.getY(), to.getZ()+0.5, 10, 0d, 0d, 0d, 0);
- }
- public static RayTraceResult retrace(EntityPlayer player, double reach) {
- Vec3d headVec = getCorrectedHeadVec(player);
- Vec3d lookVec = player.getLook(1);
- Vec3d endVec = headVec.addVector(lookVec.xCoord * reach, lookVec.yCoord * reach, lookVec.zCoord * reach);
- return player.worldObj.rayTraceBlocks(headVec, endVec, true, false, true);
- }
- public static Vec3d getCorrectedHeadVec(EntityPlayer player) {
- double y = player.posY;
- if (player.worldObj.isRemote) {
- //compatibility with eye height changing mods
- y += player.getEyeHeight() - player.getDefaultEyeHeight();
- } else {
- y += player.getEyeHeight();
- if (player instanceof EntityPlayerMP && player.isSneaking())
- y -= 0.08;
- }
- return new Vec3d(player.posX,y,player.posZ);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement