Search in sources :

Example 11 with IPantableBlock

use of riskyken.armourersWorkshop.api.common.painting.IPantableBlock in project Armourers-Workshop by RiskyKen.

the class ItemSoap method onItemUse.

@Override
public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
    Block block = world.getBlock(x, y, z);
    if (block instanceof IPantableBlock) {
        IPantableBlock paintableBlock = (IPantableBlock) block;
    // DOTO This may make block sides transparent.
    }
    if (block == ModBlocks.boundingBox) {
        BlockBoundingBox bb = (BlockBoundingBox) block;
        if (!world.isRemote) {
            bb.setColour(world, x, y, z, 0x00FFFFFF, side);
            bb.setPaintType(world, x, y, z, PaintType.NONE, side);
            world.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, LibSounds.PAINT, 1.0F, world.rand.nextFloat() * 0.1F + 0.9F);
        }
        return true;
    }
    return false;
}
Also used : BlockBoundingBox(riskyken.armourersWorkshop.common.blocks.BlockBoundingBox) Block(net.minecraft.block.Block) IPantableBlock(riskyken.armourersWorkshop.api.common.painting.IPantableBlock) IPantableBlock(riskyken.armourersWorkshop.api.common.painting.IPantableBlock)

Example 12 with IPantableBlock

use of riskyken.armourersWorkshop.api.common.painting.IPantableBlock in project Armourers-Workshop by RiskyKen.

the class ItemBlendingTool method onItemUse.

@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
    Block block = world.getBlock(x, y, z);
    if (block instanceof IPantableBlock) {
        if (!world.isRemote) {
            UndoManager.begin(player);
            usedOnBlockSide(stack, player, world, new BlockLocation(x, y, z), block, side);
            UndoManager.end(player);
            world.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, LibSounds.BURN, 1.0F, 1.0F);
        }
        return true;
    }
    if (block == ModBlocks.armourerBrain & player.isSneaking()) {
        if (!world.isRemote) {
            TileEntity te = world.getTileEntity(x, y, z);
            if (te != null && te instanceof TileEntityArmourer) {
                ((TileEntityArmourer) te).toolUsedOnArmourer(this, world, stack, player);
            }
        }
        return true;
    }
    return false;
}
Also used : TileEntity(net.minecraft.tileentity.TileEntity) TileEntityArmourer(riskyken.armourersWorkshop.common.tileentities.TileEntityArmourer) Block(net.minecraft.block.Block) IPantableBlock(riskyken.armourersWorkshop.api.common.painting.IPantableBlock) BlockLocation(riskyken.armourersWorkshop.common.blocks.BlockLocation) IPantableBlock(riskyken.armourersWorkshop.api.common.painting.IPantableBlock)

Example 13 with IPantableBlock

use of riskyken.armourersWorkshop.api.common.painting.IPantableBlock in project Armourers-Workshop by RiskyKen.

the class ItemBurnTool method onItemUse.

@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
    Block block = world.getBlock(x, y, z);
    if (block instanceof IPantableBlock) {
        if (!world.isRemote) {
            UndoManager.begin(player);
        }
        if ((Boolean) ToolOptions.FULL_BLOCK_MODE.readFromNBT(stack.getTagCompound())) {
            for (int i = 0; i < 6; i++) {
                usedOnBlockSide(stack, player, world, new BlockLocation(x, y, z), block, i);
            }
        } else {
            usedOnBlockSide(stack, player, world, new BlockLocation(x, y, z), block, side);
        }
        if (!world.isRemote) {
            UndoManager.end(player);
            world.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, LibSounds.BURN, 1.0F, 1.0F);
        }
        return true;
    }
    if (block == ModBlocks.armourerBrain & player.isSneaking()) {
        if (!world.isRemote) {
            TileEntity te = world.getTileEntity(x, y, z);
            if (te != null && te instanceof TileEntityArmourer) {
                ((TileEntityArmourer) te).toolUsedOnArmourer(this, world, stack, player);
            }
        }
        return true;
    }
    return false;
}
Also used : TileEntity(net.minecraft.tileentity.TileEntity) TileEntityArmourer(riskyken.armourersWorkshop.common.tileentities.TileEntityArmourer) MessageClientToolPaintBlock(riskyken.armourersWorkshop.common.network.messages.client.MessageClientToolPaintBlock) Block(net.minecraft.block.Block) IPantableBlock(riskyken.armourersWorkshop.api.common.painting.IPantableBlock) BlockLocation(riskyken.armourersWorkshop.common.blocks.BlockLocation) IPantableBlock(riskyken.armourersWorkshop.api.common.painting.IPantableBlock)

Example 14 with IPantableBlock

use of riskyken.armourersWorkshop.api.common.painting.IPantableBlock in project Armourers-Workshop by RiskyKen.

the class ItemBurnTool method usedOnBlockSide.

@SuppressWarnings("deprecation")
@Override
public void usedOnBlockSide(ItemStack stack, EntityPlayer player, World world, BlockLocation bl, Block block, int side) {
    int intensity = (Integer) ToolOptions.INTENSITY.readFromNBT(stack.getTagCompound());
    IPantableBlock worldColourable = (IPantableBlock) block;
    if (worldColourable.isRemoteOnly(world, bl.x, bl.y, bl.z, side) & world.isRemote) {
        byte[] rgbt = new byte[4];
        int oldColour = worldColourable.getColour(world, bl.x, bl.y, bl.z, side);
        PaintType oldPaintType = worldColourable.getPaintType(world, bl.x, bl.y, bl.z, side);
        Color c = UtilColour.makeColourDarker(new Color(oldColour), intensity);
        rgbt[0] = (byte) c.getRed();
        rgbt[1] = (byte) c.getGreen();
        rgbt[2] = (byte) c.getBlue();
        rgbt[3] = (byte) oldPaintType.getKey();
        if (block == ModBlocks.boundingBox && oldPaintType == PaintType.NONE) {
            rgbt[3] = (byte) PaintType.NORMAL.getKey();
        }
        MessageClientToolPaintBlock message = new MessageClientToolPaintBlock(bl.x, bl.y, bl.z, (byte) side, rgbt);
        PacketHandler.networkWrapper.sendToServer(message);
    } else if (!worldColourable.isRemoteOnly(world, bl.x, bl.y, bl.z, side) & !world.isRemote) {
        int oldColour = worldColourable.getColour(world, bl.x, bl.y, bl.z, side);
        byte oldPaintType = (byte) worldColourable.getPaintType(world, bl.x, bl.y, bl.z, side).getKey();
        int newColour = UtilColour.makeColourDarker(new Color(oldColour), intensity).getRGB();
        UndoManager.blockPainted(player, world, bl.x, bl.y, bl.z, oldColour, oldPaintType, side);
        ((IPantableBlock) block).setColour(world, bl.x, bl.y, bl.z, newColour, side);
    }
}
Also used : Color(java.awt.Color) MessageClientToolPaintBlock(riskyken.armourersWorkshop.common.network.messages.client.MessageClientToolPaintBlock) PaintType(riskyken.armourersWorkshop.common.painting.PaintType) IPantableBlock(riskyken.armourersWorkshop.api.common.painting.IPantableBlock)

Example 15 with IPantableBlock

use of riskyken.armourersWorkshop.api.common.painting.IPantableBlock in project Armourers-Workshop by RiskyKen.

the class ItemDodgeTool method usedOnBlockSide.

@SuppressWarnings("deprecation")
@Override
public void usedOnBlockSide(ItemStack stack, EntityPlayer player, World world, BlockLocation bl, Block block, int side) {
    int intensity = (Integer) ToolOptions.INTENSITY.readFromNBT(stack.getTagCompound());
    IPantableBlock worldColourable = (IPantableBlock) block;
    if (worldColourable.isRemoteOnly(world, bl.x, bl.y, bl.z, side) & world.isRemote) {
        byte[] rgbt = new byte[4];
        int oldColour = worldColourable.getColour(world, bl.x, bl.y, bl.z, side);
        PaintType oldPaintType = worldColourable.getPaintType(world, bl.x, bl.y, bl.z, side);
        Color c = UtilColour.makeColourBighter(new Color(oldColour), intensity);
        rgbt[0] = (byte) c.getRed();
        rgbt[1] = (byte) c.getGreen();
        rgbt[2] = (byte) c.getBlue();
        rgbt[3] = (byte) oldPaintType.getKey();
        if (block == ModBlocks.boundingBox && oldPaintType == PaintType.NONE) {
            rgbt[3] = (byte) PaintType.NORMAL.getKey();
        }
        MessageClientToolPaintBlock message = new MessageClientToolPaintBlock(bl.x, bl.y, bl.z, (byte) side, rgbt);
        PacketHandler.networkWrapper.sendToServer(message);
    } else if (!worldColourable.isRemoteOnly(world, bl.x, bl.y, bl.z, side) & !world.isRemote) {
        int oldColour = worldColourable.getColour(world, bl.x, bl.y, bl.z, side);
        byte oldPaintType = (byte) worldColourable.getPaintType(world, bl.x, bl.y, bl.z, side).getKey();
        int newColour = UtilColour.makeColourBighter(new Color(oldColour), intensity).getRGB();
        UndoManager.blockPainted(player, world, bl.x, bl.y, bl.z, oldColour, oldPaintType, side);
        ((IPantableBlock) block).setColour(world, bl.x, bl.y, bl.z, newColour, side);
    }
}
Also used : Color(java.awt.Color) MessageClientToolPaintBlock(riskyken.armourersWorkshop.common.network.messages.client.MessageClientToolPaintBlock) PaintType(riskyken.armourersWorkshop.common.painting.PaintType) IPantableBlock(riskyken.armourersWorkshop.api.common.painting.IPantableBlock)

Aggregations

IPantableBlock (riskyken.armourersWorkshop.api.common.painting.IPantableBlock)22 Block (net.minecraft.block.Block)14 PaintType (riskyken.armourersWorkshop.common.painting.PaintType)12 MessageClientToolPaintBlock (riskyken.armourersWorkshop.common.network.messages.client.MessageClientToolPaintBlock)10 TileEntity (net.minecraft.tileentity.TileEntity)9 BlockLocation (riskyken.armourersWorkshop.common.blocks.BlockLocation)9 Color (java.awt.Color)8 TileEntityArmourer (riskyken.armourersWorkshop.common.tileentities.TileEntityArmourer)8 IPantable (riskyken.armourersWorkshop.api.common.painting.IPantable)4 ICubeColour (riskyken.armourersWorkshop.api.common.skin.cubes.ICubeColour)2 Tessellator (net.minecraft.client.renderer.Tessellator)1 EntityPlayerMP (net.minecraft.entity.player.EntityPlayerMP)1 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)1 World (net.minecraft.world.World)1 BlockBoundingBox (riskyken.armourersWorkshop.common.blocks.BlockBoundingBox)1 BlockMannequin (riskyken.armourersWorkshop.common.blocks.BlockMannequin)1 MessageClientGuiToolOptionUpdate (riskyken.armourersWorkshop.common.network.messages.client.MessageClientGuiToolOptionUpdate)1 TileEntityMannequin (riskyken.armourersWorkshop.common.tileentities.TileEntityMannequin)1