package blusunrize.immersiveengineering.common.util.compat; import blusunrize.immersiveengineering.api.tool.ChemthrowerHandler; import blusunrize.immersiveengineering.api.tool.ChemthrowerHandler.ChemthrowerEffect_Damage; import blusunrize.immersiveengineering.api.tool.ChemthrowerHandler.ChemthrowerEffect_Potion; import blusunrize.immersiveengineering.api.tool.ChemthrowerHandler.ChemthrowerEffect_RandomTeleport; import blusunrize.immersiveengineering.common.IEContent; import blusunrize.immersiveengineering.common.util.IEPotions; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.MobEffects; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.oredict.OreDictionary; import javax.annotation.Nullable; import java.lang.reflect.Field; public class ThermalFoundationHelper extends IECompatModule { @Override public void preInit() { //TE Compat for smelter recipes. Not worth a separate module. OreDictionary.registerOre("crystalSlag", new ItemStack(IEContent.itemMaterial,1,7)); } @Override public void init() { ChemthrowerHandler.registerEffect("coal", new ChemthrowerEffect_Potion(null,0, IEPotions.flammable,100,0)); ChemthrowerHandler.registerFlammable("coal"); ChemthrowerHandler.registerEffect("crude_oil", new ChemthrowerEffect_Potion(null,0, new PotionEffect(IEPotions.flammable,140,0),new PotionEffect(MobEffects.BLINDNESS,80,1))); ChemthrowerHandler.registerFlammable("crude_oil"); ChemthrowerHandler.registerEffect("refined_oil", new ChemthrowerEffect_Potion(null,0, IEPotions.flammable,100,1)); ChemthrowerHandler.registerFlammable("refined_oil"); ChemthrowerHandler.registerEffect("resin", new ChemthrowerEffect_Potion(null,0, IEPotions.sticky,100,1)); ChemthrowerHandler.registerEffect("tree_oil", new ChemthrowerEffect_Potion(null,0, IEPotions.flammable,120,0)); ChemthrowerHandler.registerFlammable("tree_oil"); ChemthrowerHandler.registerEffect("redstone", new ChemthrowerEffect_Potion(null,0, IEPotions.conductive,100,1)); ChemthrowerHandler.registerEffect("glowstone", new ChemthrowerEffect_Potion(null,0, new PotionEffect(MobEffects.GLOWING,120,0),new PotionEffect(MobEffects.SPEED,120,0),new PotionEffect(MobEffects.JUMP_BOOST,120,0))); ChemthrowerHandler.registerEffect("ender", new ChemthrowerEffect_RandomTeleport(null,0, 1)); try { Class c_DamageHelper = Class.forName("cofh.lib.util.helpers.DamageHelper"); DamageSource pyrotheum = (DamageSource)c_DamageHelper.getDeclaredField("pyrotheum").get(null); Field f_explodeCreepers = Class.forName("cofh.thermalfoundation.fluid.BlockFluidPyrotheum").getDeclaredField("effect"); f_explodeCreepers.setAccessible(true); if((boolean)f_explodeCreepers.get(null)) ChemthrowerHandler.registerEffect("pyrotheum", new ChemthrowerEffect_Damage(pyrotheum,3){ @Override public void applyToEntity(EntityLivingBase target, @Nullable EntityPlayer shooter, ItemStack thrower, Fluid fluid) { super.applyToEntity(target, shooter, thrower, fluid); if(target instanceof EntityCreeper) { target.getEntityWorld().createExplosion(target, target.posX,target.posY,target.posZ, 6.0F, target.getEntityWorld().getGameRules().getBoolean("mobGriefing")); target.setDead(); } } }); else ChemthrowerHandler.registerEffect("pyrotheum", new ChemthrowerEffect_Damage(pyrotheum,3)); DamageSource cryotheum = (DamageSource)c_DamageHelper.getDeclaredField("cryotheum").get(null); ChemthrowerHandler.registerEffect("cryotheum", new ChemthrowerEffect_Potion(cryotheum,2, MobEffects.SLOWNESS,50,3)); } catch(Exception e) { } ChemthrowerHandler.registerEffect("aerotheum", new ChemthrowerEffect_Potion(null,0, new PotionEffect(MobEffects.INVISIBILITY,60,0),new PotionEffect(MobEffects.WATER_BREATHING,300,0))); ChemthrowerHandler.registerEffect("petrotheum", new ChemthrowerEffect_Potion(null,0, new PotionEffect(MobEffects.HASTE,300,2),new PotionEffect(MobEffects.NIGHT_VISION,300,0),new PotionEffect(MobEffects.RESISTANCE,300,1)) { @Override public void applyToBlock(World worldObj, RayTraceResult mop, @Nullable EntityPlayer shooter, ItemStack thrower, Fluid fluid) { IBlockState state = worldObj.getBlockState(mop.getBlockPos()); if(state.getBlock()==Blocks.STONE||state.getBlock()==Blocks.COBBLESTONE||state.getBlock()==Blocks.STONEBRICK||state.getBlock()==Blocks.MOSSY_COBBLESTONE) worldObj.setBlockState(mop.getBlockPos(), Blocks.GRAVEL.getDefaultState()); } }); ChemthrowerHandler.registerEffect("mana", new ChemthrowerEffect_RandomTeleport(null,0, .01f)); } @Override public void postInit() { } }