diff options
| author | NotAPenguin <michiel.vandeginste@gmail.com> | 2024-09-02 23:17:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-02 23:17:17 +0200 |
| commit | 1b820de08a05070909a267e17f033fcf58ac8710 (patch) | |
| tree | 02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/kekztech/common | |
| parent | afd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff) | |
| download | GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2 GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip | |
The Great Renaming (#3014)
* move kekztech to a single root dir
* move detrav to a single root dir
* move gtnh-lanthanides to a single root dir
* move tectech and delete some gross reflection in gt++
* remove more reflection inside gt5u
* delete more reflection in gt++
* fix imports
* move bartworks and bwcrossmod
* fix proxies
* move galactigreg and ggfab
* move gtneioreplugin
* try to fix gt++ bee loader
* apply the rename rules to BW
* apply rename rules to bwcrossmod
* apply rename rules to detrav scanner mod
* apply rename rules to galacticgreg
* apply rename rules to ggfab
* apply rename rules to goodgenerator
* apply rename rules to gtnh-lanthanides
* apply rename rules to gt++
* apply rename rules to kekztech
* apply rename rules to kubatech
* apply rename rules to tectech
* apply rename rules to gt
apply the rename rules to gt
* fix tt import
* fix mui hopefully
* fix coremod except intergalactic
* rename assline recipe class
* fix a class name i stumbled on
* rename StructureUtility to GTStructureUtility to prevent conflict with structurelib
* temporary rename of GTTooltipDataCache to old name
* fix gt client/server proxy names
Diffstat (limited to 'src/main/java/kekztech/common')
37 files changed, 5553 insertions, 0 deletions
diff --git a/src/main/java/kekztech/common/Blocks.java b/src/main/java/kekztech/common/Blocks.java new file mode 100644 index 0000000000..013bcf54d5 --- /dev/null +++ b/src/main/java/kekztech/common/Blocks.java @@ -0,0 +1,61 @@ +package kekztech.common; + +import net.minecraft.block.Block; + +import gregtech.api.enums.Mods; +import kekztech.KekzCore; +import kekztech.common.blocks.BlockGDCUnit; +import kekztech.common.blocks.BlockIchorJar; +import kekztech.common.blocks.BlockLapotronicEnergyUnit; +import kekztech.common.blocks.BlockLargeHexPlate; +import kekztech.common.blocks.BlockTFFTStorageField; +import kekztech.common.blocks.BlockThaumiumReinforcedJar; +import kekztech.common.blocks.BlockYSZUnit; + +public class Blocks { + + public static Block yszUnit; + public static Block gdcUnit; + public static Block tfftStorageField; + public static Block jarThaumiumReinforced; + public static Block jarIchor; + public static Block lscLapotronicEnergyUnit; + + public static Block largeHexPlate; + + public static void preInit() { + KekzCore.LOGGER.info("Registering blocks..."); + + registerBlocks_SOFC(); + registerBlocks_TFFT(); + if (Mods.Thaumcraft.isModLoaded()) { + registerBlocks_Jars(); + } + registerBlocks_LSC(); + registerBlocks_Cosmetics(); + + KekzCore.LOGGER.info("Finished registering blocks"); + } + + private static void registerBlocks_SOFC() { + yszUnit = BlockYSZUnit.registerBlock(); + gdcUnit = BlockGDCUnit.registerBlock(); + } + + private static void registerBlocks_TFFT() { + tfftStorageField = BlockTFFTStorageField.registerBlock(); + } + + private static void registerBlocks_Jars() { + jarThaumiumReinforced = BlockThaumiumReinforcedJar.registerBlock(); + jarIchor = BlockIchorJar.registerBlock(); + } + + private static void registerBlocks_LSC() { + lscLapotronicEnergyUnit = BlockLapotronicEnergyUnit.registerBlock(); + } + + private static void registerBlocks_Cosmetics() { + largeHexPlate = BlockLargeHexPlate.registerBlock(); + } +} diff --git a/src/main/java/kekztech/common/CommonProxy.java b/src/main/java/kekztech/common/CommonProxy.java new file mode 100644 index 0000000000..1baa4e5c69 --- /dev/null +++ b/src/main/java/kekztech/common/CommonProxy.java @@ -0,0 +1,46 @@ +package kekztech.common; + +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import gregtech.api.enums.Mods; +import kekztech.Items; +import kekztech.common.items.ErrorItem; +import kekztech.common.items.MetaItemCraftingComponent; +import kekztech.common.tileentities.MTEHatchTFFT; + +public class CommonProxy { + + public void preInit(final FMLPreInitializationEvent e) { + // Items + ErrorItem.getInstance() + .registerItem(); + MetaItemCraftingComponent.getInstance() + .registerItem(); + Items.registerOreDictNames(); + // Blocks + Blocks.preInit(); + // TileEntities + TileEntities.preInit(); + if (Mods.Thaumcraft.isModLoaded() && Mods.ThaumicTinkerer.isModLoaded()) { + // TC Research + Researches.preInit(); + } + } + + public void init(final FMLInitializationEvent e) { + // GregTech Meta TileEntities + TileEntities.init(); + } + + public void postInit(final FMLPostInitializationEvent e) { + // Recipes + Recipes.postInit(); + if (Mods.Thaumcraft.isModLoaded() && Mods.ThaumicTinkerer.isModLoaded()) { + // Research + Researches.postInit(); + } + + MTEHatchTFFT.registerAEIntegration(); + } +} diff --git a/src/main/java/kekztech/common/Recipes.java b/src/main/java/kekztech/common/Recipes.java new file mode 100644 index 0000000000..e6472c23a3 --- /dev/null +++ b/src/main/java/kekztech/common/Recipes.java @@ -0,0 +1,143 @@ +package kekztech.common; + +import static gregtech.api.enums.Mods.ThaumicTinkerer; + +import java.util.HashMap; + +import net.minecraft.item.ItemStack; + +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.enums.Materials; +import gregtech.api.enums.Mods; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GTModHandler; +import gregtech.api.util.GTOreDictUnificator; +import kekztech.KekzCore; +import kekztech.common.recipeLoaders.AlloySmelter; +import kekztech.common.recipeLoaders.Assembler; +import kekztech.common.recipeLoaders.AssemblyLine; +import kekztech.common.recipeLoaders.ChemicalReactor; +import kekztech.common.recipeLoaders.Crafting; +import kekztech.common.recipeLoaders.FormingPress; +import kekztech.common.recipeLoaders.Mixer; +import kekztech.common.recipeLoaders.ResearchableAssemblyLine; +import kekztech.common.recipeLoaders.Unpackager; +import thaumcraft.api.ItemApi; +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.crafting.InfusionRecipe; + +public class Recipes { + + public static final HashMap<String, InfusionRecipe> infusionRecipes = new HashMap<>(); + + public static void postInit() { + KekzCore.LOGGER.info("Registering recipes..."); + + new AlloySmelter().run(); + new Assembler().run(); + new AssemblyLine().run(); + new ChemicalReactor().run(); + new Crafting().run(); + new FormingPress().run(); + new Mixer().run(); + new ResearchableAssemblyLine().run(); + new Unpackager().run(); + + if (Mods.Thaumcraft.isModLoaded()) { + registerRecipes_Jars(); + } + + KekzCore.LOGGER.info("Finished registering recipes"); + } + + private static void registerRecipes_Jars() { + + // Thaumium Reinforced Jar + final ItemStack[] recipe_jarthaumiumreinforced = { + GameRegistry.makeItemStack("Thaumcraft:ItemResource", 15, 1, null), + GTOreDictUnificator.get(OrePrefixes.plateDense, Materials.Thaumium, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GTOreDictUnificator.get(OrePrefixes.plateDense, Materials.Thaumium, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GTOreDictUnificator.get(OrePrefixes.frameGt, Materials.Titanium, 1), + GTOreDictUnificator.get(OrePrefixes.plateDense, Materials.Thaumium, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GTOreDictUnificator.get(OrePrefixes.plateDense, Materials.Thaumium, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), }; + final AspectList aspects_jarthaumiumreinforced = new AspectList().add(Aspect.ARMOR, 64) + .add(Aspect.ORDER, 32) + .add(Aspect.WATER, 32) + .add(Aspect.GREED, 16) + .add(Aspect.VOID, 16) + .add(Aspect.AIR, 8); + infusionRecipes.put( + "THAUMIUMREINFORCEDJAR", + ThaumcraftApi.addInfusionCraftingRecipe( + "THAUMIUMREINFORCEDJAR", + new ItemStack(Blocks.jarThaumiumReinforced, 1, 0), + 5, + aspects_jarthaumiumreinforced, + ItemApi.getBlock("blockJar", 0), + recipe_jarthaumiumreinforced)); + // Thaumium Reinforced Void Jar + final ItemStack[] recipe_voidjarupgrade = { + GTOreDictUnificator.get(OrePrefixes.plateDense, Materials.Obsidian, 1), + GTOreDictUnificator.get(OrePrefixes.dust, Materials.Blaze, 1), + GTOreDictUnificator.get(OrePrefixes.plate, Materials.EnderEye, 1), ItemApi.getItem("itemNugget", 5) }; + final AspectList aspects_voidjarupgrade = new AspectList().add(Aspect.VOID, 14) + .add(Aspect.MAGIC, 14) + .add(Aspect.ENTROPY, 14) + .add(Aspect.WATER, 14); + infusionRecipes.put( + "THAUMIUMREINFORCEDVOIDJAR", + ThaumcraftApi.addInfusionCraftingRecipe( + "THAUMIUMREINFORCEDJAR", + new ItemStack(Blocks.jarThaumiumReinforced, 1, 3), + 2, + aspects_voidjarupgrade, + new ItemStack(Blocks.jarThaumiumReinforced, 1, 0), + recipe_voidjarupgrade)); + + final ItemStack[] recipe_jarichor = { GTModHandler.getModItem(ThaumicTinkerer.ID, "kamiResource", 1, 0), + GTOreDictUnificator.get(OrePrefixes.plate, Materials.Diamond, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GTOreDictUnificator.get(OrePrefixes.foil, Materials.Osmiridium, 1), + GTOreDictUnificator.get(OrePrefixes.plate, Materials.Diamond, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GTOreDictUnificator.get(OrePrefixes.gemExquisite, Materials.Diamond, 1), + GTOreDictUnificator.get(OrePrefixes.plate, Materials.Diamond, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), + GTOreDictUnificator.get(OrePrefixes.foil, Materials.Osmiridium, 1), + GTOreDictUnificator.get(OrePrefixes.plate, Materials.Diamond, 1), + new ItemStack(net.minecraft.init.Blocks.glass_pane), }; + final AspectList aspects_jarichor = new AspectList().add(Aspect.ARMOR, 256) + .add(Aspect.ELDRITCH, 128) + .add(Aspect.ORDER, 128) + .add(Aspect.WATER, 128) + .add(Aspect.GREED, 64) + .add(Aspect.VOID, 64) + .add(Aspect.AIR, 32); + infusionRecipes.put( + "ICHORJAR", + ThaumcraftApi.addInfusionCraftingRecipe( + "ICHORJAR", + new ItemStack(Blocks.jarIchor, 1, 0), + 15, + aspects_jarichor, + ItemApi.getBlock("blockJar", 0), + recipe_jarichor)); + // Ichor Void Jar + infusionRecipes.put( + "ICHORVOIDJAR", + ThaumcraftApi.addInfusionCraftingRecipe( + "ICHORJAR", + new ItemStack(Blocks.jarIchor, 1, 3), + 5, + aspects_voidjarupgrade, + new ItemStack(Blocks.jarIchor, 1, 0), + recipe_voidjarupgrade)); + } + +} diff --git a/src/main/java/kekztech/common/Researches.java b/src/main/java/kekztech/common/Researches.java new file mode 100644 index 0000000000..8944f7a486 --- /dev/null +++ b/src/main/java/kekztech/common/Researches.java @@ -0,0 +1,71 @@ +package kekztech.common; + +import net.minecraft.item.ItemStack; + +import kekztech.KekzCore; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.research.ResearchItem; +import thaumcraft.api.research.ResearchPage; +import thaumic.tinkerer.common.research.KamiResearchItem; + +public class Researches { + + public static final String THAUMIUMREINFORCEDJAR = "THAUMIUMREINFORCEDJAR"; + public static final String ICHORJAR = "ICHORJAR"; + + public static void preInit() { + // Blacklist these researches from being a requirement to unlock TTKami + KekzCore.LOGGER.info("Blacklisting research " + THAUMIUMREINFORCEDJAR + " from /iskamiunlocked"); + KamiResearchItem.Blacklist.add(ICHORJAR); + KekzCore.LOGGER.info("Blacklisting research" + ICHORJAR + "from /iskamiunlocked"); + KamiResearchItem.Blacklist.add(ICHORJAR); + } + + public static void postInit() { + final AspectList aspects_jarthaumiumreinforced = new AspectList().add(Aspect.ARMOR, 3) + .add(Aspect.WATER, 3) + .add(Aspect.GREED, 3) + .add(Aspect.VOID, 3); + @SuppressWarnings("unused") + final ResearchItem jar_thaumiumreinforced = new ResearchItem( + "THAUMIUMREINFORCEDJAR", + "ALCHEMY", + aspects_jarthaumiumreinforced, + 3, + -4, + 2, + new ItemStack(Blocks.jarThaumiumReinforced, 1)) + .setPages( + new ResearchPage("kekztech.research_page.THAUMIUMREINFORCEDJAR.0"), + new ResearchPage(Recipes.infusionRecipes.get("THAUMIUMREINFORCEDJAR")), + new ResearchPage(Recipes.infusionRecipes.get("THAUMIUMREINFORCEDVOIDJAR")), + new ResearchPage("kekztech.research_page.THAUMIUMREINFORCEDJAR.1")) + .setConcealed() + .setParents("JARLABEL") + .registerResearchItem(); + + final AspectList aspects_jarichor = new AspectList().add(Aspect.ARMOR, 3) + .add(Aspect.ELDRITCH, 3) + .add(Aspect.WATER, 3) + .add(Aspect.GREED, 5) + .add(Aspect.VOID, 5); + @SuppressWarnings("unused") + final ResearchItem jar_ichor = new ResearchItem( + "ICHORJAR", + "ALCHEMY", + aspects_jarichor, + 2, + -5, + 3, + new ItemStack(Blocks.jarIchor, 1)) + .setPages( + new ResearchPage("kekztech.research_page.ICHORJAR.0"), + new ResearchPage(Recipes.infusionRecipes.get("ICHORJAR")), + new ResearchPage(Recipes.infusionRecipes.get("ICHORVOIDJAR"))) + .setConcealed() + .setParents("THAUMIUMREINFORCEDJAR") + .setParentsHidden("ICHOR") + .registerResearchItem(); + } +} diff --git a/src/main/java/kekztech/common/TileEntities.java b/src/main/java/kekztech/common/TileEntities.java new file mode 100644 index 0000000000..f510b481f9 --- /dev/null +++ b/src/main/java/kekztech/common/TileEntities.java @@ -0,0 +1,56 @@ +package kekztech.common; + +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.enums.MetaTileEntityIDs; +import gregtech.api.enums.Mods; +import kekztech.common.tileentities.MTEHatchTFFT; +import kekztech.common.tileentities.MTELapotronicSuperCapacitor; +import kekztech.common.tileentities.MTESOFuelCellMK1; +import kekztech.common.tileentities.MTESOFuelCellMK2; +import kekztech.common.tileentities.MTETankTFFT; +import kekztech.common.tileentities.TileEntityIchorJar; +import kekztech.common.tileentities.TileEntityIchorVoidJar; +import kekztech.common.tileentities.TileEntityThaumiumReinforcedJar; +import kekztech.common.tileentities.TileEntityThaumiumReinforcedVoidJar; + +public class TileEntities { + + // Multiblock controllers + public static MTESOFuelCellMK1 sofc1; + public static MTESOFuelCellMK2 sofc2; + public static MTETankTFFT tfft; + public static MTELapotronicSuperCapacitor lsc; + + // Singleblocks + public static MTEHatchTFFT tfftHatch; + + public static void preInit() { + if (Mods.Thaumcraft.isModLoaded()) { + GameRegistry.registerTileEntity(TileEntityThaumiumReinforcedJar.class, "kekztech_thaumiumreinforcedjar"); + GameRegistry + .registerTileEntity(TileEntityThaumiumReinforcedVoidJar.class, "kekztech_thaumiumreinforcedvoidjar"); + GameRegistry.registerTileEntity(TileEntityIchorJar.class, "kekztech_ichorjar"); + GameRegistry.registerTileEntity(TileEntityIchorVoidJar.class, "kekztech_ichorvoidjar"); + } + } + + public static void init() { + // Multiblock controllers + sofc1 = new MTESOFuelCellMK1( + MetaTileEntityIDs.sofc1.ID, + "multimachine.fuelcellmk1", + "Solid-Oxide Fuel Cell Mk I"); + sofc2 = new MTESOFuelCellMK2( + MetaTileEntityIDs.sofc2.ID, + "multimachine.fuelcellmk2", + "Solid-Oxide Fuel Cell Mk II"); + tfft = new MTETankTFFT(MetaTileEntityIDs.tfft.ID, "multimachine.tfft", "T.F.F.T"); + lsc = new MTELapotronicSuperCapacitor( + MetaTileEntityIDs.lsc.ID, + "multimachine.supercapacitor", + "Lapotronic Supercapacitor"); + + // Singleblocks + tfftHatch = new MTEHatchTFFT(MetaTileEntityIDs.tfftHatch.ID, "machine.tffthatch", "T.F.F.T Multi I/O Hatch"); + } +} diff --git a/src/main/java/kekztech/common/blocks/BaseGTUpdateableBlock.java b/src/main/java/kekztech/common/blocks/BaseGTUpdateableBlock.java new file mode 100644 index 0000000000..6c81807a82 --- /dev/null +++ b/src/main/java/kekztech/common/blocks/BaseGTUpdateableBlock.java @@ -0,0 +1,57 @@ +package kekztech.common.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import gregtech.api.GregTechAPI; + +/** + * Any blocks that are used as structure parts for GregTech multi machines have to inherit from this class. Otherwise + * the checkMachine() method that verifies a machine's structure won't be called correctly. + */ +public abstract class BaseGTUpdateableBlock extends Block { + + protected BaseGTUpdateableBlock(Material material) { + super(material); + GregTechAPI.registerMachineBlock(this, -1); + super.setHarvestLevel("wrench", 2); + } + + @Override + public int damageDropped(int meta) { + return meta; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) { + return false; + } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public void onBlockAdded(World aWorld, int aX, int aY, int aZ) { + if (GregTechAPI.isMachineBlock(this, aWorld.getBlockMetadata(aX, aY, aZ))) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } + + @Override + public void breakBlock(World aWorld, int aX, int aY, int aZ, Block aBlock, int aMetaData) { + if (GregTechAPI.isMachineBlock(this, aMetaData)) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } +} diff --git a/src/main/java/kekztech/common/blocks/BlockGDCUnit.java b/src/main/java/kekztech/common/blocks/BlockGDCUnit.java new file mode 100644 index 0000000000..515c5127c6 --- /dev/null +++ b/src/main/java/kekztech/common/blocks/BlockGDCUnit.java @@ -0,0 +1,29 @@ +package kekztech.common.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; + +public class BlockGDCUnit extends BaseGTUpdateableBlock { + + private static final BlockGDCUnit instance = new BlockGDCUnit(); + + private BlockGDCUnit() { + super(Material.iron); + } + + public static Block registerBlock() { + final String blockName = "kekztech_gdcceramicelectrolyteunit_block"; + instance.setBlockName(blockName); + instance.setCreativeTab(CreativeTabs.tabMisc); + instance.setBlockTextureName(KekzCore.MODID + ":" + "GDCCeramicElectrolyteUnit"); + instance.setHardness(5.0f); + instance.setResistance(6.0f); + GameRegistry.registerBlock(instance, blockName); + + return instance; + } +} diff --git a/src/main/java/kekztech/common/blocks/BlockIchorJar.java b/src/main/java/kekztech/common/blocks/BlockIchorJar.java new file mode 100644 index 0000000000..68ebbc2a43 --- /dev/null +++ b/src/main/java/kekztech/common/blocks/BlockIchorJar.java @@ -0,0 +1,229 @@ +package kekztech.common.blocks; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.Explosion; +import net.minecraft.world.World; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import kekztech.common.itemBlocks.ItemBlockIchorJar; +import kekztech.common.tileentities.TileEntityIchorJar; +import kekztech.common.tileentities.TileEntityIchorVoidJar; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.common.blocks.BlockJar; +import thaumcraft.common.config.ConfigBlocks; +import thaumcraft.common.config.ConfigItems; +import thaumcraft.common.items.ItemEssence; +import thaumcraft.common.tiles.TileJarFillable; + +public class BlockIchorJar extends BlockJar { + + private static final BlockIchorJar INSTANCE = new BlockIchorJar(); + + private BlockIchorJar() { + super(); + + super.setHardness(12.0F); + super.setResistance(3.0f); + } + + public static Block registerBlock() { + final String blockName = "kekztech_ichorjar_block"; + INSTANCE.setBlockName(blockName); + INSTANCE.setHarvestLevel("pickaxe", 3); + GameRegistry.registerBlock(INSTANCE, ItemBlockIchorJar.class, blockName); + + return INSTANCE; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister ir) { + super.iconLiquid = ir.registerIcon("thaumcraft:animatedglow"); + super.iconJarSide = ir.registerIcon("kekztech:ichor_jar_side"); + super.iconJarTop = ir.registerIcon("kekztech:ichor_jar_top"); + super.iconJarTopVoid = ir.registerIcon("kekztech:ichor_jar_top_void"); + super.iconJarSideVoid = ir.registerIcon("kekztech:ichor_jar_side_void"); + super.iconJarBottom = ir.registerIcon("kekztech:ichor_jar_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings({ "unchecked" }) + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + par3List.add(new ItemStack(par1, 1, 0)); // Normal jar + par3List.add(new ItemStack(par1, 1, 3)); // Void jar + } + + @Override + public TileEntity createTileEntity(World world, int meta) { + if (meta == 3) { + return new TileEntityIchorVoidJar(); + } else { + return new TileEntityIchorJar(); + } + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float f1, float f2, + float f3) { + // Call parent method to handle jar emptying, labels stuff etc + super.onBlockActivated(world, x, y, z, player, side, f1, f2, f3); + // Interact with Essentia Phials if the player holds one + final ItemStack heldItem = player.getHeldItem(); + if (heldItem != null && heldItem.getItem() == ConfigItems.itemEssence) { + final TileEntity te = world.getTileEntity(x, y, z); + if (te instanceof TileEntityIchorJar) { + return dealWithPhial(world, player, x, y, z); + } else if (te instanceof TileEntityIchorVoidJar) { + return dealWithPhial(world, player, x, y, z); + } + } + + return true; + } + + /** + * Handle compatibility with Essentia Phials + * + * @param world Pass through from onBlockActivated() + * @param player Pass through from onBlockActivated() + * @param x Pass through from onBlockActivated() + * @param y Pass through from onBlockActivated() + * @param z Pass through from onBlockActivated() + * @return Not sure tbh + */ + private boolean dealWithPhial(World world, EntityPlayer player, int x, int y, int z) { + final TileJarFillable jarTE = (TileJarFillable) world.getTileEntity(x, y, z); + final ItemStack heldItem = player.getHeldItem(); + // Check whether |
