package emasher.modules; import cpw.mods.fml.common.registry.GameRegistry; import emasher.api.SideConfig; import emasher.api.SocketModule; import emasher.api.SocketTileAccess; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import java.util.List; public class ModWaterCooler extends SocketModule { public ModWaterCooler( int id ) { super( id, "eng_toolbox:waterCooler" ); } @Override public String getLocalizedName() { return "Water Cooler"; } @Override public void getToolTip( List l ) { l.add( "Cools adjacent lava blocks" ); } @Override public void addRecipe() { GameRegistry.addShapedRecipe( new ItemStack( emasher.items.Items.module(), 1, moduleID ), "www", " b ", Character.valueOf( 'w' ), Items.water_bucket, Character.valueOf( 'b' ), emasher.items.Items.blankSide() ); } @Override public void updateSide( SideConfig config, SocketTileAccess ts, ForgeDirection side ) { config.meta++; if( config.meta >= 20 ) { config.meta = 0; int xo = ts.xCoord + side.offsetX; int yo = ts.yCoord + side.offsetY; int zo = ts.zCoord + side.offsetZ; //int id = Block b = ts.getWorldObj().getBlock( xo, yo, zo ); Material mat = Material.water; if( b != null ) mat = b.getMaterial(); if( mat == Material.lava ) { int meta = ts.getWorldObj().getBlockMetadata( xo, yo, zo ); if( meta == 0 ) ts.getWorldObj().setBlock( xo, yo, zo, Blocks.obsidian ); else ts.getWorldObj().setBlock( xo, yo, zo, Blocks.cobblestone ); triggerLavaMixEffects( ts.getWorldObj(), xo, yo, zo ); } } } protected void triggerLavaMixEffects( World par1World, int par2, int par3, int par4 ) { par1World.playSoundEffect( ( double ) ( ( float ) par2 + 0.5F ), ( double ) ( ( float ) par3 + 0.5F ), ( double ) ( ( float ) par4 + 0.5F ), "random.fizz", 0.5F, 2.6F + ( par1World.rand.nextFloat() - par1World.rand.nextFloat() ) * 0.8F ); for( int l = 0; l < 8; ++l ) { par1World.spawnParticle( "largesmoke", ( double ) par2 + Math.random(), ( double ) par3 + 1.2D, ( double ) par4 + Math.random(), 0.0D, 0.0D, 0.0D ); } } }