Java Code Examples for net.minecraft.world.World#destroyBlock()

The following examples show how to use net.minecraft.world.World#destroyBlock() . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may want to check out the right sidebar which shows the related API usage.
Example 1
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing heldItem, float side, float hitX, float hitY) {
	if (playerIn.getHeldItem(hand).getItem() instanceof ItemWrench && playerIn.isSneaking()) {
		worldIn.destroyBlock(pos, true);
		return true;
	}
	return false;
}
 
Example 2
@Override
public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos) {
    if (fromPos.up().equals(pos)) {
        if (worldIn.getBlockState(fromPos).getBlockFaceShape(worldIn, fromPos, EnumFacing.UP) != BlockFaceShape.SOLID) {
            worldIn.destroyBlock(pos, true);
        }
    }
}
 
Example 3
Source Project: Production-Line   File: BlockWaterHyacinth.java    License: MIT License 5 votes vote down vote up
/**
 * Called When an Entity Collided with the Block
 */
@Override
public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn) {
    super.onEntityCollidedWithBlock(worldIn, pos, state, entityIn);

    if (entityIn instanceof EntityBoat) {
        worldIn.destroyBlock(new BlockPos(pos), true);
    }
}
 
Example 4
Source Project: Production-Line   File: BlockContainerPL.java    License: MIT License 5 votes vote down vote up
@Override
public void breakBlock(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull IBlockState state) {
    TileEntity tileentity = world.getTileEntity(pos);
    if (tileentity != null && tileentity instanceof IInventory) {
        Inventories.spill(world, pos, (IInventory) tileentity);
        world.removeTileEntity(pos);
    }
    world.destroyBlock(pos, true);
}
 
Example 5
Source Project: TFC2   File: BlockThatch.java    License: GNU General Public License v3.0 5 votes vote down vote up
@Override
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos)
{
	if(!world.isRemote && pos.up().equals(fromPos) && world.isAirBlock(pos.down()))
	{
		if(world.getBlockState(fromPos).getBlock() instanceof BlockGravity)
			world.destroyBlock(pos, true);
	}
}
 
Example 6
Source Project: AgriCraft   File: DebugModeTestBlockRange.java    License: MIT License 5 votes vote down vote up
/**
 * This method allows the user to test what Block Positions are covered by the BlockRange
 * iterator. The expected result will be the full cuboid between opposing corner positions. Also
 * remember that the BlockRange min and max positions aren't necessarily the input positions.
 *
 * Usage: Right-click on two blocks to specify the opposite corners. Some blocks should get
 * replaced with free wool. Be careful. In case of terrible bugs, might destroy or overwrite
 * unexpected locations!
 */
@Override
public void debugActionBlockClicked(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
    if (world.isRemote) {
        return;
    }
    Optional<BlockPos> startPos = getStartPos(stack);
    if (!startPos.isPresent()) {
        // This is the first click. Save 'pos' as the starting coordinate.
        setStartPos(stack, pos);
        player.sendMessage(new TextComponentString("Starting corner set: (" + pos.getX() + "," + pos.getY() + "," + pos.getZ() + ")"));
        player.sendMessage(new TextComponentString("Next right click will set the opposite/ending corner."));
        player.sendMessage(new TextComponentString("WARNING: this mode will destroy blocks, be careful."));
    } else {
        // This is the second click. Load the starting coordinate. Use 'pos' as the ending coordinate. Then fill the cuboid with wool.
        int count = 0;
        IBlockState wool = Blocks.WOOL.getDefaultState().withProperty(BlockColored.COLOR, EnumDyeColor.BLACK);
        //
        // IMPORTANT PART OF THE TEST IS BELOW
        //
        BlockRange range = new BlockRange(startPos.get(), pos);
        for (BlockPos target : range) {                         // <-- Is the iterator giving a complete set?
            IBlockState old = world.getBlockState(target);
            world.destroyBlock(target, true);
            world.setBlockState(target, wool);
            world.notifyBlockUpdate(target, old, wool, 2);
            count += 1;
        }
        //
        // IMPORTANT PART OF THE TEST IS ABOVE
        //
        player.sendMessage(new TextComponentString("Volume:     " + range.getVolume()));
        player.sendMessage(new TextComponentString("Replaced:  " + count));
        player.sendMessage(new TextComponentString("Coverage: " + (range.getVolume() == count ? "Complete" : "INCOMPLETE")));
        setStartPos(stack, null);
    }
}
 
Example 7
Source Project: AgriCraft   File: DebugModeClearGrass.java    License: MIT License 5 votes vote down vote up
@Override
public void debugActionBlockClicked(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
    pos = pos.toImmutable();
    for (int x = -radius; x < radius; x++) {
        for (int z = -radius; z < radius; z++) {
            BlockPos loc = pos.add(x, 0, z);
            Block block = world.getBlockState(loc).getBlock();
            if (block instanceof BlockBush) {
                world.destroyBlock(loc, false);
            }
        }
    }
}
 
Example 8
public void placeBlockAtIndex(World world, int index, BlockPos posStart)
{
    if (index < this.blocks.size())
    {
        TemplateEnderUtilities.TemplateBlockInfo blockInfo = this.blocks.get(index);

        BlockPos pos = transformedBlockPos(this.placement, blockInfo.pos).add(posStart);
        IBlockState stateNew = blockInfo.blockState;

        if (this.replaceMode == ReplaceMode.EVERYTHING ||
            (this.replaceMode == ReplaceMode.WITH_NON_AIR && stateNew.getMaterial() != Material.AIR) || world.isAirBlock(pos))
        {
            Mirror mirror = this.placement.getMirror();
            Rotation rotation = this.placement.getRotation();
            stateNew = stateNew.withMirror(mirror).withRotation(rotation);

            boolean success = false;

            if (this.dropOldBlocks)
            {
                world.destroyBlock(pos, true);
            }
            /*
            else
            {
                // Replace the block temporarily so that the old TE gets cleared for sure
                BlockUtils.setBlockToAirWithoutSpillingContents(world, pos, 4);
            }
            */

            // Place the new block
            success = world.setBlockState(pos, stateNew, 2);

            if (success && blockInfo.tileEntityData != null)
            {
                TileUtils.createAndAddTileEntity(world, pos, blockInfo.tileEntityData, rotation, mirror);
            }
        }
    }
}
 
Example 9
/**
 * Keep ticking a continuous task that has already been started
 */
public void updateTask()
{
    super.updateTask();
    this.villager.getLookHelper().setLookPosition((double)this.destinationBlock.getX() + 0.5D, (double)(this.destinationBlock.getY() + 1), (double)this.destinationBlock.getZ() + 0.5D, 10.0F, (float)this.villager.getVerticalFaceSpeed());

    if (this.getIsAboveDestination())
    {
        World world = this.villager.world;
        BlockPos blockpos = this.destinationBlock.up();
        IBlockState iblockstate = world.getBlockState(blockpos);
        Block block = iblockstate.getBlock();

        if (this.currentTask == 0 && block instanceof BlockCrops && ((BlockCrops)block).isMaxAge(iblockstate))
        {
            world.destroyBlock(blockpos, true);
        }
        else if (this.currentTask == 1 && iblockstate.getMaterial() == Material.AIR)
        {
            InventoryBasic inventorybasic = this.villager.getVillagerInventory();

            for (int i = 0; i < inventorybasic.getSizeInventory(); ++i)
            {
                ItemStack itemstack = inventorybasic.getStackInSlot(i);
                boolean flag = false;

                if (!itemstack.isEmpty())
                {
                    if (itemstack.getItem() == Items.WHEAT_SEEDS)
                    {
                        world.setBlockState(blockpos, Blocks.WHEAT.getDefaultState(), 3);
                        flag = true;
                    }
                    else if (itemstack.getItem() == Items.POTATO)
                    {
                        world.setBlockState(blockpos, Blocks.POTATOES.getDefaultState(), 3);
                        flag = true;
                    }
                    else if (itemstack.getItem() == Items.CARROT)
                    {
                        world.setBlockState(blockpos, Blocks.CARROTS.getDefaultState(), 3);
                        flag = true;
                    }
                    else if (itemstack.getItem() == Items.BEETROOT_SEEDS)
                    {
                        world.setBlockState(blockpos, Blocks.BEETROOTS.getDefaultState(), 3);
                        flag = true;
                    }
                    else if (itemstack.getItem() instanceof net.minecraftforge.common.IPlantable) {
                        if(((net.minecraftforge.common.IPlantable)itemstack.getItem()).getPlantType(world,blockpos) == net.minecraftforge.common.EnumPlantType.Crop) {
                            world.setBlockState(blockpos, ((net.minecraftforge.common.IPlantable)itemstack.getItem()).getPlant(world,blockpos),3);
                            flag = true;
                        }
                    }
                }

                if (flag)
                {
                    itemstack.shrink(1);

                    if (itemstack.isEmpty())
                    {
                        inventorybasic.setInventorySlotContents(i, ItemStack.EMPTY);
                    }

                    break;
                }
            }
        }

        this.currentTask = -1;
        this.runDelay = 10;
    }
}
 
Example 10
Source Project: TofuCraftReload   File: BlockUnderVine.java    License: MIT License 4 votes vote down vote up
protected void checkAndDropBlock(World worldIn, BlockPos pos, IBlockState state) {
    if (!this.canBlockStay(worldIn, pos)) {
        worldIn.destroyBlock(pos, true);
    }
}
 
Example 11
Source Project: TofuCraftReload   File: BlockYubaNoren.java    License: MIT License 4 votes vote down vote up
protected void checkAndDropBlock(World worldIn, BlockPos pos, IBlockState state) {
	if (!this.canBlockStay(worldIn, pos)) {
		worldIn.destroyBlock(pos, true);
	}
}
 
Example 12
Source Project: Sakura_mod   File: BlockBambooShoot.java    License: MIT License 4 votes vote down vote up
@Override
public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos) {
    if (!this.canBlockStay(worldIn, pos)) {
        worldIn.destroyBlock(pos, true);
    }
}
 
Example 13
Source Project: Sakura_mod   File: BlockNoren.java    License: MIT License 4 votes vote down vote up
protected void checkAndDropBlock(World worldIn, BlockPos pos, IBlockState state) {
	if (!this.canBlockStay(worldIn, pos)) {
		worldIn.destroyBlock(pos, true);
	}
}
 
Example 14
Source Project: Sakura_mod   File: BlockWindBell.java    License: MIT License 4 votes vote down vote up
@Override
public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos) {
    if (!this.canBlockStay(worldIn, pos)) {
        worldIn.destroyBlock(pos, true);
    }
}
 
Example 15
Source Project: Sakura_mod   File: BlockPlantBamboo.java    License: MIT License 4 votes vote down vote up
@Override
public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos) {
    if (!this.canBlockStay(worldIn, pos)) {
        worldIn.destroyBlock(pos, true);
    }
}
 
Example 16
@Override
public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ)
{
    // If the player is standing inside a portal, then we try to activate the teleportation in onItemRightClick()
    if (EntityUtils.isEntityCollidingWithBlockSpace(world, player, Blocks.PORTAL))
    {
        return EnumActionResult.PASS;
    }

    Block block = world.getBlockState(pos).getBlock();

    // When right clicking on a Nether Portal block, shut down the portal
    if (block == Blocks.PORTAL)
    {
        if (world.isRemote == false && world.isBlockModifiable(player, pos))
        {
            world.destroyBlock(pos, false);
        }

        return EnumActionResult.SUCCESS;
    }

    if (world.isRemote)
    {
        return EnumActionResult.SUCCESS;
    }

    ItemStack stack = player.getHeldItem(hand);

    // When right clicking on Obsidian, try to light a Nether Portal
    if (block == Blocks.OBSIDIAN && world.isAirBlock(pos.offset(side)) && world.isBlockModifiable(player, pos.offset(side)) &&
        UtilItemModular.useEnderCharge(stack, ENDER_CHARGE_COST_PORTAL_ACTIVATION, true) &&
        Blocks.PORTAL.trySpawnPortal(world, pos.offset(side)))
    {
        UtilItemModular.useEnderCharge(stack, ENDER_CHARGE_COST_PORTAL_ACTIVATION, false);
        world.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.ENTITY_BLAZE_SHOOT, SoundCategory.MASTER, 0.8f, 1.0f);

        return EnumActionResult.SUCCESS;
    }

    return EnumActionResult.PASS;
}
 
Example 17
/**
 *  Attempts to place one fluid block in the world, identified by the given FluidStack
 */
public boolean tryPlaceFluidBlock(World world, BlockPos pos, FluidStack fluidStack)
{
    if (fluidStack == null || fluidStack.getFluid() == null || fluidStack.getFluid().canBePlacedInWorld() == false)
    {
        return false;
    }

    Block block = fluidStack.getFluid().getBlock();

    // We need to convert water and lava to the flowing variant, otherwise we get non-flowing source blocks
    if (block == Blocks.WATER)
    {
        block = Blocks.FLOWING_WATER;
    }
    else if (block == Blocks.LAVA)
    {
        block = Blocks.FLOWING_LAVA;
    }

    IBlockState state = world.getBlockState(pos);
    Material material = state.getMaterial();

    if (world.isAirBlock(pos) == false && material.isSolid())
    {
        return false;
    }

    if (world.provider.doesWaterVaporize() && block == Blocks.FLOWING_WATER)
    {
        float x = pos.getX();
        float y = pos.getY();
        float z = pos.getZ();

        world.playSound(null, x + 0.5F, y + 0.5F, z + 0.5F, SoundEvents.BLOCK_FIRE_EXTINGUISH,
                SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F);

        for (int l = 0; l < 8; ++l)
        {
            world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, x + Math.random(), y + Math.random(), z + Math.random(), 0.0D, 0.0D, 0.0D);
        }
    }
    else
    {
        if (world.isRemote == false && material.isSolid() == false && material.isLiquid() == false)
        {
            // Set a replaceable block to air, and drop the items
            world.destroyBlock(pos, true);
        }

        world.setBlockState(pos, block.getDefaultState(), 3);
        SoundEvent soundevent = block == Blocks.FLOWING_LAVA ? SoundEvents.ITEM_BUCKET_EMPTY_LAVA : SoundEvents.ITEM_BUCKET_EMPTY;
        world.playSound(null, pos, soundevent, SoundCategory.BLOCKS, 1.0f, 1.0f);
    }

    return true;
}
 
Example 18
Source Project: OpenModsLib   File: OpenBlock.java    License: MIT License 4 votes vote down vote up
protected void breakBlockIfSideNotSolid(World world, BlockPos blockPos, EnumFacing direction) {
	if (!isNeighborBlockSolid(world, blockPos, direction)) {
		world.destroyBlock(blockPos, true);
	}
}
 
Example 19
Source Project: ExtraCells1   File: BlockCertusTank.java    License: MIT License 4 votes vote down vote up
@Override
public boolean onBlockActivated(World worldObj, int x, int y, int z, EntityPlayer entityplayer, int blockID, float offsetX, float offsetY, float offsetZ)
{

	ItemStack current = entityplayer.inventory.getCurrentItem();

	if (entityplayer.isSneaking() && current == null)
	{
		dropBlockAsItem_do(worldObj, x, y, z, getDropWithNBT(worldObj, x, y, z));
		worldObj.destroyBlock(x, y, z, false);
		return true;
	}
	if (current != null)
	{
		FluidStack liquid = FluidContainerRegistry.getFluidForFilledItem(current);
		TileEntityCertusTank tank = (TileEntityCertusTank) worldObj.getBlockTileEntity(x, y, z);

		if (liquid != null)
		{
			int amountFilled = tank.fill(ForgeDirection.UNKNOWN, liquid, true);

			if (amountFilled != 0 && !entityplayer.capabilities.isCreativeMode)
			{
				if (current.stackSize > 1)
				{
					entityplayer.inventory.mainInventory[entityplayer.inventory.currentItem].stackSize -= 1;
					entityplayer.inventory.addItemStackToInventory(current.getItem().getContainerItemStack(current));
				} else
				{
					entityplayer.inventory.mainInventory[entityplayer.inventory.currentItem] = current.getItem().getContainerItemStack(current);
				}
			}

			return true;

			// Handle empty containers
		} else
		{

			FluidStack available = tank.getTankInfo(ForgeDirection.UNKNOWN)[0].fluid;
			if (available != null)
			{
				ItemStack filled = FluidContainerRegistry.fillFluidContainer(available, current);

				liquid = FluidContainerRegistry.getFluidForFilledItem(filled);

				if (liquid != null)
				{
					if (!entityplayer.capabilities.isCreativeMode)
					{
						if (current.stackSize > 1)
						{
							if (!entityplayer.inventory.addItemStackToInventory(filled))
							{
								tank.fill(ForgeDirection.UNKNOWN, new FluidStack(liquid, liquid.amount), true);
								return false;
							} else
							{
								entityplayer.inventory.mainInventory[entityplayer.inventory.currentItem].stackSize -= 1;
							}
						} else
						{
							entityplayer.inventory.mainInventory[entityplayer.inventory.currentItem] = filled;
						}
					}
					tank.drain(ForgeDirection.UNKNOWN, liquid.amount, true);
					return true;
				}
			}
		}
	}
	return false;
}