/**
* Copyright (c) Lambda Innovation, 2013-2016
* This file is part of the AcademyCraft mod.
* https://github.com/LambdaInnovation/AcademyCraft
* Licensed under GPLv3, see project root for more information.
*/
package cn.academy.crafting.block;
import cn.academy.core.AcademyCraft;
import cn.academy.crafting.ModuleCrafting;
import cn.academy.crafting.item.ItemMatterUnit;
import cn.academy.crafting.item.ItemMatterUnit.MatterMaterial;
import cn.lambdalib.annoreg.core.Registrant;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
import net.minecraftforge.fluids.BlockFluidClassic;
/**
* TODO Implement particle and fog effect
* @author WeAthFolD
*/
@Registrant
public class BlockImagPhase extends BlockFluidClassic implements ITileEntityProvider {
public static class ItemPhaseLiq extends ItemBlock {
IIcon icon;
public ItemPhaseLiq(Block block) {
super(block);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister ir) {
icon = ir.registerIcon("academy:phase_liquid");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int meta) {
return icon;
}
}
public final MatterMaterial mat;
public IIcon fluidIcon;
public BlockImagPhase() {
super(ModuleCrafting.fluidImagProj, Material.water);
setCreativeTab(AcademyCraft.cct);
setBlockName("ac_phase_liquid");
setBlockTextureName("academy:black");
this.setQuantaPerBlock(3);
mat = new MatterMaterial("phase_liquid", this);
ItemMatterUnit.addMatterMaterial(mat);
MinecraftForge.EVENT_BUS.register(this);
}
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister ir) {
super.registerBlockIcons(ir);
fluidIcon = ir.registerIcon("academy:phase_liquid");
}
@SideOnly(Side.CLIENT)
@Override
public int getRenderBlockPass() {
return 1;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public TileEntity createNewTileEntity(World world, int metadata) {
return new TileImagPhase();
}
@SubscribeEvent
public void onInteract(PlayerInteractEvent event) {
if(event.action == Action.RIGHT_CLICK_BLOCK) {
Block b = event.world.getBlock(event.x, event.y, event.z);
ItemStack stack = event.entityPlayer.getCurrentEquippedItem();
if(b == this && stack != null && stack.getItem() == ModuleCrafting.matterUnit) {
ModuleCrafting.matterUnit.setMaterial(stack, mat);
}
}
}
}