net.minecraft.util.math.AxisAlignedBB#intersects ( )源码实例Demo

下面列出了net.minecraft.util.math.AxisAlignedBB#intersects ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: AdvancedRocketry   文件: TileLandingPad.java
@SubscribeEvent
public void onRocketLand(RocketLandedEvent event) {
	EntityRocketBase rocket = (EntityRocketBase)event.getEntity();

	AxisAlignedBB bbCache =  new AxisAlignedBB(this.getPos().add(-1,0,-1), this.getPos().add(1,2,1));

	if(bbCache.intersects(rocket.getEntityBoundingBox())) {
		if(!world.isRemote)
			for(IInfrastructure infrastructure : getConnectedInfrastructure()) {
				rocket.linkInfrastructure(infrastructure);
			}
		ItemStack stack = getStackInSlot(0);
		if(stack.getItem() == LibVulpesItems.itemLinker && ItemLinker.getDimId(stack) != -1 &&
				event.getEntity() instanceof EntityRocket) {
			((EntityRocket)rocket).setOverriddenCoords(ItemLinker.getDimId(stack), 
					ItemLinker.getMasterX(stack) + 0.5f, Configuration.orbit, ItemLinker.getMasterZ(stack) + 0.5f);
		}
	}
}
 
源代码2 项目: AdvancedRocketry   文件: TileLandingPad.java
@SubscribeEvent
public void onRocketLaunch(RocketPreLaunchEvent event) {

	ItemStack stack = getStackInSlot(0);
	if(stack.getItem() == LibVulpesItems.itemLinker && ItemLinker.getDimId(stack) != -1) {

		EntityRocketBase rocket = (EntityRocketBase)event.getEntity();
		AxisAlignedBB bbCache =  new AxisAlignedBB(this.getPos().add(-1,0,-1), this.getPos().add(1,2,1));

		if(bbCache.intersects(rocket.getEntityBoundingBox())) {
			if(event.getEntity() instanceof EntityRocket) {
				((EntityRocket)rocket).setOverriddenCoords(ItemLinker.getDimId(stack), 
						ItemLinker.getMasterX(stack) + 0.5f, Configuration.orbit, ItemLinker.getMasterZ(stack) + 0.5f);
			}
		}
	}
}
 
源代码3 项目: AdvancedRocketry   文件: TileLandingPad.java
@SubscribeEvent
public void onRocketDismantle(RocketDismantleEvent event) {
	if(!world.isRemote && world.provider.getDimension() == Configuration.spaceDimId) {

		EntityRocketBase rocket = (EntityRocketBase)event.getEntity();
		AxisAlignedBB bbCache =  new AxisAlignedBB(this.getPos().add(-1,0,-1), this.getPos().add(1,2,1));

		if(bbCache.intersects(rocket.getEntityBoundingBox())) {

			ISpaceObject spaceObj = SpaceObjectManager.getSpaceManager().getSpaceStationFromBlockCoords(pos);

			if(spaceObj instanceof SpaceObject) {
				((SpaceObject)spaceObj).setPadStatus(pos, false);
			}
		}
	}
}
 
源代码4 项目: GregTech   文件: BlockMachine.java
@Override
public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entityIn, boolean isActualState) {
    for (Cuboid6 axisAlignedBB : getCollisionBox(worldIn, pos)) {
        AxisAlignedBB offsetBox = axisAlignedBB.aabb().offset(pos);
        if (offsetBox.intersects(entityBox)) collidingBoxes.add(offsetBox);
    }
}
 
源代码5 项目: GregTech   文件: BlockPipe.java
@Override
public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entityIn, boolean isActualState) {
    for (Cuboid6 axisAlignedBB : getCollisionBox(worldIn, pos)) {
        AxisAlignedBB offsetBox = axisAlignedBB.aabb().offset(pos);
        if (offsetBox.intersects(entityBox)) collidingBoxes.add(offsetBox);
    }
}
 
源代码6 项目: Wizardry   文件: BlockFluidMana.java
public static void run(World world, BlockPos pos, Block block, Entity entity, Predicate<Entity> test, Consumer<Entity> process) {
	if (!(block instanceof IFluidBlock)) return;
	float height;
	IBlockState up = world.getBlockState(pos.up());
	if (up.getMaterial().isLiquid() || up.getBlock() instanceof IFluidBlock)
		height = 1f;
	else
		height = ((IFluidBlock) block).getFilledPercentage(world, pos) * 0.875f;
	AxisAlignedBB bb = new AxisAlignedBB(pos).contract(0, 1 - height, 0);
	AxisAlignedBB entityBox = entity.getCollisionBoundingBox();
	if ((entityBox == null || entityBox.intersects(bb))
			&& test.test(entity)) process.accept(entity);
}
 
源代码7 项目: Wizardry   文件: BlockFluidLethe.java
public static void run(World world, BlockPos pos, Block block, Entity entity, Predicate<Entity> test, Consumer<Entity> process) {
	if (!(block instanceof IFluidBlock)) return;
	float height;
	IBlockState up = world.getBlockState(pos.up());
	if (up.getMaterial().isLiquid() || up.getBlock() instanceof IFluidBlock)
		height = 1f;
	else
		height = ((IFluidBlock) block).getFilledPercentage(world, pos) * 0.875f;
	AxisAlignedBB bb = new AxisAlignedBB(pos).contract(0, 1 - height, 0);
	AxisAlignedBB entityBox = entity.getCollisionBoundingBox();
	if ((entityBox == null || entityBox.intersects(bb))
			&& test.test(entity)) process.accept(entity);
}
 
源代码8 项目: AdvancedRocketry   文件: MobileAABB.java
@Override
public boolean intersects(AxisAlignedBB aabb) {

	//if(chunk == null || true)
	//	return super.intersectsWith(aabb);

	boolean collides = false;

	double diffX = 0;//((this.maxX - this.minX) - chunk.sizeX)/2f;
	double diffZ = 0;//((this.maxX - this.minX) - chunk.sizeX)/2f;

	out:
		for(int x = 0; x < chunk.blocks.length; x++) {
			for(int y = 0; y < chunk.blocks[0].length; y++) {
				for(int z = 0; z < chunk.blocks[0][0].length; z++) {
					Block block = chunk.blocks[x][y][z];

					if(!block.getDefaultState().getMaterial().isSolid())
						continue;

					AxisAlignedBB bb = block.getDefaultState().getCollisionBoundingBox(chunk.world, new BlockPos(x,y,z));

					if(bb == null)
						continue;




					bb = bb.offset(this.minX + x + diffX, this.minY + y, this.minZ + z + diffZ);
					if(bb.intersects(aabb)) {
						collides = true;
						break out;
					}
				}
			}
		}

	return collides;
}