From 1b820de08a05070909a267e17f033fcf58ac8710 Mon Sep 17 00:00:00 2001 From: NotAPenguin Date: Mon, 2 Sep 2024 23:17:17 +0200 Subject: 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 --- .../gregtech/api/items/BlockLongDistancePipe.java | 125 +++ .../java/gregtech/api/items/GTGenericBlock.java | 22 + .../java/gregtech/api/items/GTGenericItem.java | 162 ++++ .../api/items/GT_Block_LongDistancePipe.java | 125 --- .../gregtech/api/items/GT_BreederCell_Item.java | 153 --- .../gregtech/api/items/GT_CoolantCellIC_Item.java | 67 -- .../gregtech/api/items/GT_CoolantCell_Item.java | 82 -- .../gregtech/api/items/GT_EnergyArmor_Item.java | 332 ------- .../java/gregtech/api/items/GT_Generic_Block.java | 22 - .../java/gregtech/api/items/GT_Generic_Item.java | 162 ---- .../java/gregtech/api/items/GT_MetaBase_Item.java | 622 ------------ .../gregtech/api/items/GT_MetaGenerated_Item.java | 415 -------- .../api/items/GT_MetaGenerated_Item_X01.java | 213 ---- .../api/items/GT_MetaGenerated_Item_X32.java | 225 ----- .../gregtech/api/items/GT_MetaGenerated_Tool.java | 1013 -------------------- .../api/items/GT_RadioactiveCellIC_Item.java | 219 ----- .../api/items/GT_RadioactiveCell_Item.java | 159 --- src/main/java/gregtech/api/items/GT_Tool_Item.java | 41 - .../java/gregtech/api/items/ItemBreederCell.java | 153 +++ .../java/gregtech/api/items/ItemCoolantCell.java | 82 ++ .../java/gregtech/api/items/ItemCoolantCellIC.java | 67 ++ .../java/gregtech/api/items/ItemEnergyArmor.java | 331 +++++++ .../gregtech/api/items/ItemRadioactiveCell.java | 159 +++ .../gregtech/api/items/ItemRadioactiveCellIC.java | 219 +++++ src/main/java/gregtech/api/items/ItemTool.java | 41 + src/main/java/gregtech/api/items/MetaBaseItem.java | 622 ++++++++++++ .../java/gregtech/api/items/MetaGeneratedItem.java | 415 ++++++++ .../gregtech/api/items/MetaGeneratedItemX01.java | 210 ++++ .../gregtech/api/items/MetaGeneratedItemX32.java | 225 +++++ .../java/gregtech/api/items/MetaGeneratedTool.java | 1013 ++++++++++++++++++++ 30 files changed, 3846 insertions(+), 3850 deletions(-) create mode 100644 src/main/java/gregtech/api/items/BlockLongDistancePipe.java create mode 100644 src/main/java/gregtech/api/items/GTGenericBlock.java create mode 100644 src/main/java/gregtech/api/items/GTGenericItem.java delete mode 100644 src/main/java/gregtech/api/items/GT_Block_LongDistancePipe.java delete mode 100644 src/main/java/gregtech/api/items/GT_BreederCell_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_CoolantCell_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_Generic_Block.java delete mode 100644 src/main/java/gregtech/api/items/GT_Generic_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_MetaBase_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X01.java delete mode 100644 src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X32.java delete mode 100644 src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java delete mode 100644 src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java delete mode 100644 src/main/java/gregtech/api/items/GT_Tool_Item.java create mode 100644 src/main/java/gregtech/api/items/ItemBreederCell.java create mode 100644 src/main/java/gregtech/api/items/ItemCoolantCell.java create mode 100644 src/main/java/gregtech/api/items/ItemCoolantCellIC.java create mode 100644 src/main/java/gregtech/api/items/ItemEnergyArmor.java create mode 100644 src/main/java/gregtech/api/items/ItemRadioactiveCell.java create mode 100644 src/main/java/gregtech/api/items/ItemRadioactiveCellIC.java create mode 100644 src/main/java/gregtech/api/items/ItemTool.java create mode 100644 src/main/java/gregtech/api/items/MetaBaseItem.java create mode 100644 src/main/java/gregtech/api/items/MetaGeneratedItem.java create mode 100644 src/main/java/gregtech/api/items/MetaGeneratedItemX01.java create mode 100644 src/main/java/gregtech/api/items/MetaGeneratedItemX32.java create mode 100644 src/main/java/gregtech/api/items/MetaGeneratedTool.java (limited to 'src/main/java/gregtech/api/items') diff --git a/src/main/java/gregtech/api/items/BlockLongDistancePipe.java b/src/main/java/gregtech/api/items/BlockLongDistancePipe.java new file mode 100644 index 0000000000..3de95981f5 --- /dev/null +++ b/src/main/java/gregtech/api/items/BlockLongDistancePipe.java @@ -0,0 +1,125 @@ +package gregtech.api.items; + +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.Entity; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.GregTechAPI; +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.IIconContainer; +import gregtech.api.util.GTLanguageManager; +import gregtech.common.blocks.ItemLongDistancePipe; +import gregtech.common.blocks.MaterialMachines; + +public class BlockLongDistancePipe extends GTGenericBlock { + + public IIconContainer[] mIcons; + + public BlockLongDistancePipe() { + super(ItemLongDistancePipe.class, "gt.block.longdistancepipe", new MaterialMachines()); + setStepSound(soundTypeMetal); + setCreativeTab(GregTechAPI.TAB_GREGTECH); + GregTechAPI.registerMachineBlock(this, -1); + + GTLanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Long Distance Fluid Pipeline Pipe"); + GTLanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Long Distance Item Pipeline Pipe"); + GTLanguageManager.addStringLocalization(getUnlocalizedName() + "." + 32767 + ".name", "Any Sub Block of this"); + + ItemList.Long_Distance_Pipeline_Fluid_Pipe.set(new ItemStack(this, 1, 0)); + ItemList.Long_Distance_Pipeline_Item_Pipe.set(new ItemStack(this, 1, 1)); + mIcons = new IIconContainer[] { Textures.BlockIcons.LONG_DISTANCE_PIPE_FLUID, + Textures.BlockIcons.LONG_DISTANCE_PIPE_ITEM }; + } + + @Override + public void onBlockAdded(World aWorld, int aX, int aY, int aZ) { + super.onBlockAdded(aWorld, aX, aY, 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) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + super.breakBlock(aWorld, aX, aY, aZ, aBlock, aMetaData); + } + + @Override + public String getHarvestTool(int aMeta) { + return "wrench"; + } + + @Override + public int getHarvestLevel(int aMeta) { + return 2; + } + + @Override + public float getBlockHardness(World aWorld, int aX, int aY, int aZ) { + return Blocks.stone.getBlockHardness(aWorld, aX, aY, aZ); + } + + @Override + public float getExplosionResistance(Entity aTNT) { + return Blocks.iron_block.getExplosionResistance(aTNT); + } + + @Override + public String getUnlocalizedName() { + return this.mUnlocalizedName; + } + + @Override + public String getLocalizedName() { + return StatCollector.translateToLocal(this.mUnlocalizedName + ".name"); + } + + @Override + public IIcon getIcon(int ordinalSide, int aMeta) { + return mIcons[aMeta % mIcons.length].getIcon(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister aIconRegister) {} + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public int damageDropped(int metadata) { + return metadata; + } + + @Override + public int getDamageValue(World aWorld, int aX, int aY, int aZ) { + return aWorld.getBlockMetadata(aX, aY, aZ); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item aItem, CreativeTabs aCreativeTab, List aList) { + for (int i = 0; i < 3; i++) { + ItemStack aStack = new ItemStack(aItem, 1, i); + if (!aStack.getDisplayName() + .contains(".name")) aList.add(aStack); + } + } +} diff --git a/src/main/java/gregtech/api/items/GTGenericBlock.java b/src/main/java/gregtech/api/items/GTGenericBlock.java new file mode 100644 index 0000000000..314849e8cf --- /dev/null +++ b/src/main/java/gregtech/api/items/GTGenericBlock.java @@ -0,0 +1,22 @@ +package gregtech.api.items; + +import static gregtech.api.enums.GTValues.W; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.item.ItemBlock; + +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.util.GTLanguageManager; + +public class GTGenericBlock extends Block { + + protected final String mUnlocalizedName; + + protected GTGenericBlock(Class aItemClass, String aName, Material aMaterial) { + super(aMaterial); + setBlockName(mUnlocalizedName = aName); + GameRegistry.registerBlock(this, aItemClass, getUnlocalizedName()); + GTLanguageManager.addStringLocalization(getUnlocalizedName() + "." + W + ".name", "Any Sub Block of this one"); + } +} diff --git a/src/main/java/gregtech/api/items/GTGenericItem.java b/src/main/java/gregtech/api/items/GTGenericItem.java new file mode 100644 index 0000000000..4f0994bb12 --- /dev/null +++ b/src/main/java/gregtech/api/items/GTGenericItem.java @@ -0,0 +1,162 @@ +package gregtech.api.items; + +import static gregtech.api.enums.Mods.GregTech; + +import java.util.List; + +import net.minecraft.block.BlockDispenser; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.dispenser.BehaviorDefaultDispenseItem; +import net.minecraft.dispenser.BehaviorProjectileDispense; +import net.minecraft.dispenser.IBlockSource; +import net.minecraft.dispenser.IPosition; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.IProjectile; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IIcon; +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 gregtech.api.GregTechAPI; +import gregtech.api.enums.SubTag; +import gregtech.api.interfaces.IProjectileItem; +import gregtech.api.util.GTConfig; +import gregtech.api.util.GTLanguageManager; +import gregtech.api.util.GTModHandler; +import gregtech.api.util.GTUtility; + +/** + * Extended by most Items, also used as a fallback Item, to prevent the accidental deletion when Errors occur. + */ +public class GTGenericItem extends Item implements IProjectileItem { + + private final String mName, mTooltip; + protected IIcon mIcon; + + public GTGenericItem(String aUnlocalized, String aEnglish, String aEnglishTooltip) { + super(); + mName = "gt." + aUnlocalized; + GTLanguageManager.addStringLocalization(mName + ".name", aEnglish); + if (GTUtility.isStringValid(aEnglishTooltip)) + GTLanguageManager.addStringLocalization(mTooltip = mName + ".tooltip_main", aEnglishTooltip); + else mTooltip = null; + setCreativeTab(GregTechAPI.TAB_GREGTECH); + GameRegistry.registerItem(this, mName, GregTech.ID); + BlockDispenser.dispenseBehaviorRegistry.putObject(this, new GT_Item_Dispense()); + } + + @Override + public final Item setUnlocalizedName(String aName) { + return this; + } + + @Override + public final String getUnlocalizedName() { + return mName; + } + + @Override + public String getUnlocalizedName(ItemStack aStack) { + return getHasSubtypes() ? mName + "." + getDamage(aStack) : mName; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister aIconRegister) { + mIcon = aIconRegister.registerIcon(GregTech.getResourcePath(GTConfig.troll ? "troll" : mName)); + } + + @Override + public boolean doesSneakBypassUse(World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer) { + return true; + } + + @Override + public IIcon getIconFromDamage(int aMetaData) { + return mIcon; + } + + public int getTier(ItemStack aStack) { + return 0; + } + + @Override + public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { + if (getMaxDamage() > 0 && !getHasSubtypes()) + aList.add((aStack.getMaxDamage() - getDamage(aStack)) + " / " + aStack.getMaxDamage()); + if (mTooltip != null) aList.add(GTLanguageManager.getTranslation(mTooltip)); + if (GTModHandler.isElectricItem(aStack)) aList.add("Tier: " + getTier(aStack)); + addAdditionalToolTips(aList, aStack, aPlayer); + } + + protected void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) { + // + } + + @Override + public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { + isItemStackUsable(aStack); + } + + public boolean isItemStackUsable(ItemStack aStack) { + return true; + } + + public ItemStack onDispense(IBlockSource aSource, ItemStack aStack) { + EnumFacing enumfacing = BlockDispenser.func_149937_b(aSource.getBlockMetadata()); + IPosition iposition = BlockDispenser.func_149939_a(aSource); + ItemStack itemstack1 = aStack.splitStack(1); + BehaviorDefaultDispenseItem.doDispense(aSource.getWorld(), itemstack1, 6, enumfacing, iposition); + return aStack; + } + + @Override + public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, double aX, double aY, + double aZ) { + return null; + } + + @Override + public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, EntityLivingBase aEntity, + float aSpeed) { + return null; + } + + @Override + public boolean hasProjectile(SubTag aProjectileType, ItemStack aStack) { + return false; + } + + @Override + public ItemStack getContainerItem(ItemStack aStack) { + return null; + } + + @Override + public boolean hasContainerItem(ItemStack aStack) { + return getContainerItem(aStack) != null; + } + + public String transItem(String aKey, String aEnglish) { + return GTLanguageManager.addStringLocalization("Item_DESCRIPTION_Index_" + aKey, aEnglish); + } + + public static class GT_Item_Dispense extends BehaviorProjectileDispense { + + @Override + public ItemStack dispenseStack(IBlockSource aSource, ItemStack aStack) { + return ((GTGenericItem) aStack.getItem()).onDispense(aSource, aStack); + } + + @Override + protected IProjectile getProjectileEntity(World aWorld, IPosition aPosition) { + return null; + } + } +} diff --git a/src/main/java/gregtech/api/items/GT_Block_LongDistancePipe.java b/src/main/java/gregtech/api/items/GT_Block_LongDistancePipe.java deleted file mode 100644 index 31a44f3dbc..0000000000 --- a/src/main/java/gregtech/api/items/GT_Block_LongDistancePipe.java +++ /dev/null @@ -1,125 +0,0 @@ -package gregtech.api.items; - -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.Entity; -import net.minecraft.entity.EnumCreatureType; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.util.StatCollector; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import gregtech.api.GregTech_API; -import gregtech.api.enums.ItemList; -import gregtech.api.enums.Textures; -import gregtech.api.interfaces.IIconContainer; -import gregtech.api.util.GT_LanguageManager; -import gregtech.common.blocks.GT_Item_LongDistancePipe; -import gregtech.common.blocks.GT_Material_Machines; - -public class GT_Block_LongDistancePipe extends GT_Generic_Block { - - public IIconContainer[] mIcons; - - public GT_Block_LongDistancePipe() { - super(GT_Item_LongDistancePipe.class, "gt.block.longdistancepipe", new GT_Material_Machines()); - setStepSound(soundTypeMetal); - setCreativeTab(GregTech_API.TAB_GREGTECH); - GregTech_API.registerMachineBlock(this, -1); - - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Long Distance Fluid Pipeline Pipe"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Long Distance Item Pipeline Pipe"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + 32767 + ".name", "Any Sub Block of this"); - - ItemList.Long_Distance_Pipeline_Fluid_Pipe.set(new ItemStack(this, 1, 0)); - ItemList.Long_Distance_Pipeline_Item_Pipe.set(new ItemStack(this, 1, 1)); - mIcons = new IIconContainer[] { Textures.BlockIcons.LONG_DISTANCE_PIPE_FLUID, - Textures.BlockIcons.LONG_DISTANCE_PIPE_ITEM }; - } - - @Override - public void onBlockAdded(World aWorld, int aX, int aY, int aZ) { - super.onBlockAdded(aWorld, aX, aY, aZ); - if (GregTech_API.isMachineBlock(this, aWorld.getBlockMetadata(aX, aY, aZ))) { - GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); - } - } - - @Override - public void breakBlock(World aWorld, int aX, int aY, int aZ, Block aBlock, int aMetaData) { - GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); - super.breakBlock(aWorld, aX, aY, aZ, aBlock, aMetaData); - } - - @Override - public String getHarvestTool(int aMeta) { - return "wrench"; - } - - @Override - public int getHarvestLevel(int aMeta) { - return 2; - } - - @Override - public float getBlockHardness(World aWorld, int aX, int aY, int aZ) { - return Blocks.stone.getBlockHardness(aWorld, aX, aY, aZ); - } - - @Override - public float getExplosionResistance(Entity aTNT) { - return Blocks.iron_block.getExplosionResistance(aTNT); - } - - @Override - public String getUnlocalizedName() { - return this.mUnlocalizedName; - } - - @Override - public String getLocalizedName() { - return StatCollector.translateToLocal(this.mUnlocalizedName + ".name"); - } - - @Override - public IIcon getIcon(int ordinalSide, int aMeta) { - return mIcons[aMeta % mIcons.length].getIcon(); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister aIconRegister) {} - - @Override - public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { - return false; - } - - @Override - public int damageDropped(int metadata) { - return metadata; - } - - @Override - public int getDamageValue(World aWorld, int aX, int aY, int aZ) { - return aWorld.getBlockMetadata(aX, aY, aZ); - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item aItem, CreativeTabs aCreativeTab, List aList) { - for (int i = 0; i < 3; i++) { - ItemStack aStack = new ItemStack(aItem, 1, i); - if (!aStack.getDisplayName() - .contains(".name")) aList.add(aStack); - } - } -} diff --git a/src/main/java/gregtech/api/items/GT_BreederCell_Item.java b/src/main/java/gregtech/api/items/GT_BreederCell_Item.java deleted file mode 100644 index 438b0f467e..0000000000 --- a/src/main/java/gregtech/api/items/GT_BreederCell_Item.java +++ /dev/null @@ -1,153 +0,0 @@ -package gregtech.api.items; - -import static gregtech.api.util.GT_Utility.formatNumbers; - -import java.util.List; -import java.util.function.Supplier; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; - -import gregtech.api.GregTech_API; -import gregtech.api.enums.GT_Values; -import gregtech.api.recipe.RecipeMaps; -import gregtech.api.util.GT_Utility; -import ic2.api.reactor.IReactor; -import ic2.api.reactor.IReactorComponent; -import ic2.core.IC2Potion; - -/** - * A {@link ic2.core.item.reactor.ItemReactorLithiumCell}, but can be used to produce anything! - * - * @author glee8e - */ -public class GT_BreederCell_Item extends GT_Generic_Item implements IReactorComponent { - - protected final int mHeatBonusStep; - protected final int mHeatBonusMultiplier; - protected ItemStack mProduct; - protected boolean deflector = false; - protected boolean hidden = false; - protected boolean neiAdded = false; - - public GT_BreederCell_Item(String aUnlocalized, String aEnglish, String aEnglishTooltip, int aHeatBonusStep, - int aHeatBonusMultiplier, int aRequiredPulse, Supplier aProduct) { - super(aUnlocalized, aEnglish, aEnglishTooltip); - this.mHeatBonusStep = aHeatBonusStep; - this.mHeatBonusMultiplier = aHeatBonusMultiplier; - this.setMaxDamage(aRequiredPulse); - setNoRepair(); - GregTech_API.sAfterGTPostload.add(() -> { - mProduct = aProduct.get(); - if (!hidden && !neiAdded) { - GT_Values.RA.stdBuilder() - .itemInputs(new ItemStack(this)) - .itemOutputs(mProduct) - .setNEIDesc( - deflector ? "Neutron reflecting Breeder" : "Heat neutral Breeder", - String.format("Every %d reactor hull heat", mHeatBonusStep), - String.format("increase speed by %d00%%", mHeatBonusMultiplier), - String.format("Required pulses: %d", getMaxDamage())) - .duration(0) - .eut(0) - .addTo(RecipeMaps.ic2NuclearFakeRecipes); - - neiAdded = true; - } - }); - } - - public GT_BreederCell_Item setDeflector() { - deflector = true; - return this; - } - - public GT_BreederCell_Item setHidden() { - hidden = true; - return this; - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slotIndex, boolean isCurrentItem) { - if ((entity instanceof EntityLivingBase entityLiving)) { - if (!GT_Utility.isWearingFullRadioHazmat(entityLiving)) { - IC2Potion.radiation.applyTo(entityLiving, 20, 1); - } - } - } - - @Override - public void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) { - aList.add(transItem("019", "Bath with neutron in a hot reactor")); - int rDmg = aStack.getItemDamage() * 4 / getMaxDamage(); - EnumChatFormatting color2 = switch (rDmg) { - case 0 -> EnumChatFormatting.DARK_GRAY; - case 1, 2 -> EnumChatFormatting.GRAY; - default -> EnumChatFormatting.WHITE; - }; - aList.add( - String.format( - transItem("020", "Progress: %s/%s"), - "" + color2 + formatNumbers(aStack.getItemDamage()) + EnumChatFormatting.RESET, - "" + formatNumbers(getMaxDamage()))); - if (aStack.getItemDamage() > 0) aList.add(EnumChatFormatting.RED + transItem("021", "Radiation Hazard")); - } - - @Override - public int getItemStackLimit(ItemStack stack) { - return stack.getItemDamage() == 0 ? maxStackSize : 1; - } - - @Override - public void processChamber(IReactor reactor, ItemStack yourStack, int x, int y, boolean heatrun) {} - - @Override - public boolean acceptUraniumPulse(IReactor reactor, ItemStack yourStack, ItemStack pulsingStack, int youX, int youY, - int pulseX, int pulseY, boolean heatrun) { - if (heatrun) { - int myLevel = getNewDamage(reactor, yourStack); - if (myLevel >= getMaxDamage()) reactor.setItemAt(youX, youY, mProduct.copy()); - else yourStack.setItemDamage(myLevel); - } - - return deflector; - } - - protected int getNewDamage(IReactor reactor, ItemStack stack) { - return stack.getItemDamage() + 1 + reactor.getHeat() / mHeatBonusStep * mHeatBonusMultiplier; - } - - @Override - public boolean canStoreHeat(IReactor reactor, ItemStack yourStack, int x, int y) { - return false; - } - - @Override - public int getMaxHeat(IReactor reactor, ItemStack yourStack, int x, int y) { - return 0; - } - - @Override - public int getCurrentHeat(IReactor reactor, ItemStack yourStack, int x, int y) { - return 0; - } - - @Override - public int alterHeat(IReactor reactor, ItemStack yourStack, int x, int y, int heat) { - return heat; - } - - @Override - public float influenceExplosion(IReactor reactor, ItemStack yourStack) { - return 0.0F; - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) { - return 1.0D - (double) stack.getItemDamageForDisplay() / (double) stack.getMaxDamage(); - } -} diff --git a/src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java b/src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java deleted file mode 100644 index eb3c6276cf..0000000000 --- a/src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java +++ /dev/null @@ -1,67 +0,0 @@ -package gregtech.api.items; - -import net.minecraft.item.ItemStack; - -import ic2.api.reactor.IReactor; -import ic2.api.reactor.IReactorComponent; - -public class GT_CoolantCellIC_Item extends GT_CoolantCell_Item implements IReactorComponent { - - public GT_CoolantCellIC_Item(String aUnlocalized, String aEnglish, int aMaxStore) { - super(aUnlocalized, aEnglish, aMaxStore); - } - - @Override - public void processChamber(IReactor aReactor, ItemStack aStack, int x, int y, boolean aHeatRun) {} - - @Override - public boolean acceptUraniumPulse(IReactor aReactor, ItemStack aStack, ItemStack pulsingStack, int youX, int youY, - int pulseX, int pulseY, boolean aHeatRun) { - return false; - } - - @Override - public boolean canStoreHeat(IReactor aReactor, ItemStack aStack, int x, int y) { - return !aReactor.isFluidCooled() || getControlTagOfStack(aStack) == 0; - } - - @Override - public int getMaxHeat(IReactor aReactor, ItemStack aStack, int x, int y) { - return this.heatStorage; - } - - @Override - public int getCurrentHeat(IReactor aReactor, ItemStack aStack, int x, int y) { - return getHeatOfStack(aStack); - } - - @Override - public float influenceExplosion(IReactor aReactor, ItemStack aStack) { - return 1.0F + this.heatStorage / 30000.0F; - } - - @Override - public int alterHeat(IReactor aReactor, ItemStack aStack, int x, int y, int aHeat) { - int tHeat = getHeatOfStack(aStack); - if ((tHeat == 0) && (getControlTagOfStack(aStack) != 0)) { - setControlTagOfStack(aStack, 0); - } - tHeat += aHeat; - if (tHeat > this.heatStorage) { - aReactor.setItemAt(x, y, null); - aHeat = this.heatStorage - tHeat + 1; - } else { - if (tHeat < 0) { - aHeat = tHeat; - tHeat = 0; - } else { - aHeat = 0; - } - if ((tHeat > 0) && (getControlTagOfStack(aStack) == 0) && (!aReactor.isFluidCooled())) { - setControlTagOfStack(aStack, 1); - } - setHeatForStack(aStack, tHeat); - } - return aHeat; - } -} diff --git a/src/main/java/gregtech/api/items/GT_CoolantCell_Item.java b/src/main/java/gregtech/api/items/GT_CoolantCell_Item.java deleted file mode 100644 index 6ed7dae3b0..0000000000 --- a/src/main/java/gregtech/api/items/GT_CoolantCell_Item.java +++ /dev/null @@ -1,82 +0,0 @@ -package gregtech.api.items; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; - -import gregtech.api.GregTech_API; -import ic2.core.util.StackUtil; - -public class GT_CoolantCell_Item extends GT_Generic_Item { - - protected final int heatStorage; - - public GT_CoolantCell_Item(String aUnlocalized, String aEnglish, int aMaxStore) { - super(aUnlocalized, aEnglish, null); - this.setMaxStackSize(1); - this.setMaxDamage(100); - setNoRepair(); - this.heatStorage = aMaxStore; - this.setCreativeTab(GregTech_API.TAB_GREGTECH); - } - - protected static int getHeatOfStack(ItemStack aStack) { - NBTTagCompound tNBT = aStack.getTagCompound(); - if (tNBT == null) { - tNBT = new NBTTagCompound(); - aStack.setTagCompound(tNBT); - } - return tNBT.getInteger("heat"); - } - - protected void setHeatForStack(ItemStack aStack, int aHeat) { - NBTTagCompound tNBT = aStack.getTagCompound(); - if (tNBT == null) { - tNBT = new NBTTagCompound(); - aStack.setTagCompound(tNBT); - } - tNBT.setInteger("heat", aHeat); - if (this.heatStorage > 0) { - double heatRatio = (double) aHeat / (double) this.heatStorage; - int damage = (int) (aStack.getMaxDamage() * heatRatio); - if (damage >= aStack.getMaxDamage()) { - damage = aStack.getMaxDamage() - 1; - } - aStack.setItemDamage(damage); - } - } - - @Override - public void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) { - super.addAdditionalToolTips(aList, aStack, aPlayer); - int rHeat = getHeatOfStack(aStack) * 10 / this.heatStorage; - EnumChatFormatting color = switch (rHeat) { - case 0 -> EnumChatFormatting.BLUE; - case 1, 2 -> EnumChatFormatting.GREEN; - case 3, 4, 5, 6 -> EnumChatFormatting.YELLOW; - case 7, 8 -> EnumChatFormatting.RED; - default -> EnumChatFormatting.DARK_RED; - }; - aList.add( - EnumChatFormatting.WHITE - + String.format(transItem("000", "Stored Heat: %s"), "" + color + getHeatOfStack(aStack))); - if (getControlTagOfStack(aStack) == 1) { - aList.add(StatCollector.translateToLocal("ic2.reactoritem.heatwarning.line1")); - aList.add(StatCollector.translateToLocal("ic2.reactoritem.heatwarning.line2")); - } - } - - public int getControlTagOfStack(ItemStack stack) { - NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); - return nbtData.getInteger("tag"); - } - - public void setControlTagOfStack(ItemStack stack, int tag) { - NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); - nbtData.setInteger("tag", tag); - } -} diff --git a/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java b/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java deleted file mode 100644 index df820f928a..0000000000 --- a/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java +++ /dev/null @@ -1,332 +0,0 @@ -package gregtech.api.items; - -import static gregtech.api.enums.Mods.GregTech; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemArmor; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.common.ISpecialArmor; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.living.LivingFallEvent; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import gregtech.api.GregTech_API; -import gregtech.api.util.GT_LanguageManager; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_Utility; - -public class GT_EnergyArmor_Item extends ItemArmor implements ISpecialArmor { - - public static Map jumpChargeMap = new ConcurrentHashMap<>(); - public int mCharge, mTransfer, mTier, mDamageEnergyCost, mSpecials; - public boolean mChargeProvider; - public double mArmorAbsorbtionPercentage; - - public GT_EnergyArmor_Item(int aID, String aUnlocalized, String aEnglish, int aCharge, int aTransfer, int aTier, - int aDamageEnergyCost, int aSpecials, double aArmorAbsorbtionPercentage, boolean aChargeProvider, int aType, - int aArmorIndex) { - super(ArmorMaterial.DIAMOND, aArmorIndex, aType); - setMaxStackSize(1); - setMaxDamage(100); - setNoRepair(); - setUnlocalizedName(aUnlocalized); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".name", aEnglish); - mCharge = Math.max(1, aCharge); - mTransfer = Math.max(1, aTransfer); - mTier = Math.max(1, aTier); - mSpecials = aSpecials; - mChargeProvider = aChargeProvider; - mDamageEnergyCost = Math.max(0, aDamageEnergyCost); - mArmorAbsorbtionPercentage = aArmorAbsorbtionPercentage; - - setCreativeTab(GregTech_API.TAB_GREGTECH); - - MinecraftForge.EVENT_BUS.register(this); - } - - private static void setCharge(ItemStack aStack) { - NBTTagCompound tNBT = aStack.getTagCompound(); - if (tNBT == null) tNBT = new NBTTagCompound(); - tNBT.setInteger("charge", 1000000000); - aStack.setTagCompound(tNBT); - } - - @Override - public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { - ItemStack tStack = aPlayer.inventory.armorInventory[3 - armorType]; - if (tStack != null) { - for (int i = 0; i < 9; i++) { - if (aPlayer.inventory.mainInventory[i] == aStack) { - aPlayer.inventory.armorInventory[3 - armorType] = aPlayer.inventory.mainInventory[i]; - aPlayer.inventory.mainInventory[i] = tStack; - return tStack; - } - } - } - return super.onItemRightClick(aStack, aWorld, aPlayer); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister aIconRegister) { - this.itemIcon = aIconRegister.registerIcon(GregTech.getResourcePath(getUnlocalizedName())); - } - - @Override - public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { - aList.add("Tier: " + mTier); - if ((mSpecials & 1) != 0) aList.add("Rebreather"); - if ((mSpecials & 2) != 0) aList.add("Inertia Damper"); - if ((mSpecials & 4) != 0) aList.add("Food Replicator"); - if ((mSpecials & 8) != 0) aList.add("Medicine Module"); - if ((mSpecials & 16) != 0) aList.add("Lamp"); - if ((mSpecials & 32) != 0) aList.add("Solarpanel"); - if ((mSpecials & 64) != 0) aList.add("Extinguisher Module"); - if ((mSpecials & 128) != 0) aList.add("Jump Booster"); - if ((mSpecials & 256) != 0) aList.add("Speed Booster"); - if ((mSpecials & 512) != 0) aList.add("Invisibility Field"); - if ((mSpecials & 1024) != 0) aList.add("Infinite Charge"); - } - - @Override - public void onArmorTick(World aWorld, EntityPlayer aPlayer, ItemStack aStack) { - if (mSpecials == 0) return; - - if (!aPlayer.worldObj.isRemote && (mSpecials & 1) != 0) { - int airSupply = aPlayer.getAir(); - if (GT_ModHandler.canUseElectricItem(aStack, 1000) && airSupply < 50) { - aPlayer.setAir(airSupply + 250); - GT_ModHandler.useElectricItem(aStack, 1000, aPlayer); - } - } - - if (!aPlayer.worldObj.isRemote && (mSpecials & 4) != 0) { - if (GT_ModHandler.canUseElectricItem(aStack, 50000) && aPlayer.getFoodStats() - .needFood()) { - aPlayer.getFoodStats() - .addStats(1, 0.0F); - GT_ModHandler.useElectricItem(aStack, 50000, aPlayer); - } - } - - if ((mSpecials & 8) != 0) { - if (GT_ModHandler.canUseElectricItem(aStack, 10000) && aPlayer.isPotionActive(Potion.poison)) { - GT_Utility.removePotion(aPlayer, Potion.poison.id); - GT_ModHandler.useElectricItem(aStack, 10000, aPlayer); - } - if (GT_ModHandler.canUseElectricItem(aStack, 100000) && aPlayer.isPotionActive(Potion.wither)) { - GT_Utility.removePotion(aPlayer, Potion.wither.id); - GT_ModHandler.useElectricItem(aStack, 100000, aPlayer); - } - } - - if ((mSpecials & 64) != 0) { - aPlayer.setFire(0); - } - - if (!aPlayer.worldObj.isRemote && (mSpecials & 128) != 0) { - float jumpCharge = jumpChargeMap.getOrDefault(aPlayer, 1.0F); - - if (GT_ModHandler.canUseElectricItem(aStack, 1000) && aPlayer.onGround && jumpCharge < 1.0F) { - jumpCharge = 1.0F; - GT_ModHandler.useElectricItem(aStack, 1000, aPlayer); - } - - if (aPlayer.motionY >= 0.0D && jumpCharge > 0.0F && !aPlayer.isInWater()) { - if (jumpCharge < 1.0F) { - jumpCharge = 0.0F; - } - } - - jumpChargeMap.put(aPlayer, jumpCharge); - } - - if ((mSpecials & 256) != 0) { - if (GT_ModHandler.canUseElectricItem(aStack, 100) && aPlayer.isSprinting() - && (aPlayer.onGround && Math.abs(aPlayer.motionX) + Math.abs(aPlayer.motionZ) > 0.10000000149011612D - || aPlayer.isInWater())) { - GT_ModHandler.useElectricItem(aStack, 100, aPlayer); - float bonus = 0.22F; - - if (aPlayer.isInWater()) { - GT_ModHandler.useElectricItem(aStack, 100, aPlayer); - bonus = 0.1F; - - if (aPlayer.motionY > 0) { - aPlayer.motionY += 0.10000000149011612D; - } - } - - aPlayer.moveFlying(0.0F, 1.0F, bonus); - } - } - - if ((mSpecials & 512) != 0) { - if (GT_ModHandler.canUseElectricItem(aStack, 10000)) { - GT_ModHandler.useElectricItem(aStack, 10000, aPlayer); - aPlayer.addPotionEffect(new PotionEffect(Potion.invisibility.getId(), 25, 1, true)); - } - } - - if (!aPlayer.worldObj.isRemote && (mSpecials & (16 | 32)) != 0) { - // if (GregTech_API.sWorldTickCounter%20==0) { - ItemStack tTargetChargeItem = aStack, tTargetDechargeItem = aStack; - - if (GT_ModHandler.chargeElectricItem(tTargetChargeItem, 1, Integer.MAX_VALUE, true, true) < 1) { - tTargetChargeItem = aPlayer.inventory.armorInventory[2]; - } - if (GT_ModHandler.dischargeElectricItem(tTargetDechargeItem, 10, Integer.MAX_VALUE, true, true, true) - < 10) { - tTargetDechargeItem = aPlayer.inventory.armorInventory[2]; - } - - if (tTargetChargeItem == null || !GT_ModHandler.isElectricItem(tTargetChargeItem)) { - tTargetChargeItem = null; - } - - if (aPlayer.worldObj.isDaytime() && aPlayer.worldObj.canBlockSeeTheSky( - MathHelper.floor_double(aPlayer.posX), - MathHelper.floor_double(aPlayer.posY + 1), - MathHelper.floor_double(aPlayer.posZ))) { - if ((mSpecials & 32) != 0 && tTargetChargeItem != null) { - GT_ModHandler.chargeElectricItem(tTargetChargeItem, 20, Integer.MAX_VALUE, true, false); - } - } else { - /* - * TODO: if ((mSpecials & 16) != 0 && tTargetDechargeItem != null && - * GT_ModHandler.canUseElectricItem(tTargetDechargeItem, 10)) { if (aPlayer.worldObj.getBlock - * ((int)aPlayer.posX, (int)aPlayer.posY+1, (int)aPlayer.posZ) == Blocks.air) aPlayer.worldObj.setBlock - * ((int)aPlayer.posX, (int)aPlayer.posY+1, (int)aPlayer.posZ, GregTech_API.sBlockList[3]); - * GT_ModHandler.useElectricItem(tTargetDechargeItem, 10, aPlayer); } - */ - // } - } - } - } - - @Override - public boolean getShareTag() { - return true; - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(Item aItem, CreativeTabs creativeTab, List outputSubItems) { - ItemStack tCharged = new ItemStack(this, 1), tUncharged = new ItemStack(this, 1, getMaxDamage()); - GT_ModHandler.chargeElectricItem(tCharged, Integer.MAX_VALUE, Integer.MAX_VALUE, true, false); - outputSubItems.add(tCharged); - outputSubItems.add(tUncharged); - } - - public boolean canProvideEnergy(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return mChargeProvider; - } - - public Item getChargedItem(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return this; - } - - public Item getEmptyItem(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return this; - } - - public int getMaxCharge(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return mCharge; - } - - public int getTier(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return mTier; - } - - public int getTransferLimit(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return mTransfer; - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public boolean isBookEnchantable(ItemStack ingredient, ItemStack bookEnchant) { - return false; - } - - @Override - public boolean getIsRepairable(ItemStack toBeRepaired, ItemStack repairWith) { - return false; - } - - // TODO: @ForgeSubscribe - public void onEntityLivingFallEvent(LivingFallEvent event) { - if (!event.entity.worldObj.isRemote && event.entity instanceof EntityPlayer player) { - for (int i = 0; i < 4; i++) { - ItemStack armor = player.inventory.armorInventory[i]; - if (armor != null && armor.getItem() == this && (mSpecials & 2) != 0) { - int distanceFactor = (int) event.distance - 3; - int energyCost = (this.mDamageEnergyCost * distanceFactor) / 4; - if (energyCost <= GT_ModHandler - .dischargeElectricItem(armor, Integer.MAX_VALUE, Integer.MAX_VALUE, true, true, true)) { - GT_ModHandler.dischargeElectricItem(armor, energyCost, Integer.MAX_VALUE, true, false, true); - event.setCanceled(true); - break; - } - } - } - } - } - - @Override - public ISpecialArmor.ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, - double damage, int slotIndex) { - return new ISpecialArmor.ArmorProperties( - (source == DamageSource.fall && (mSpecials & 2) != 0) ? 10 : 0, - getBaseAbsorptionRatio() * mArmorAbsorbtionPercentage, - mDamageEnergyCost > 0 ? 25 - * GT_ModHandler.dischargeElectricItem(armor, Integer.MAX_VALUE, Integer.MAX_VALUE, true, true, true) - / mDamageEnergyCost : 0); - } - - @Override - public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slotIndex) { - return (int) Math.round(20.0D * getBaseAbsorptionRatio() * mArmorAbsorbtionPercentage); - } - - @Override - public void damageArmor(EntityLivingBase entity, ItemStack itemStack, DamageSource source, int damage, - int slotIndex) { - GT_ModHandler - .dischargeElectricItem(itemStack, damage * mDamageEnergyCost, Integer.MAX_VALUE, true, false, true); - } - - private double getBaseAbsorptionRatio() { - if (mArmorAbsorbtionPercentage <= 0) return 0.00; - return switch (this.armorType) { - case 0, 3 -> 0.15; - case 1 -> 0.40; - case 2 -> 0.30; - default -> 0.00; - }; - } -} diff --git a/src/main/java/gregtech/api/items/GT_Generic_Block.java b/src/main/java/gregtech/api/items/GT_Generic_Block.java deleted file mode 100644 index 7aaef6d5ca..0000000000 --- a/src/main/java/gregtech/api/items/GT_Generic_Block.java +++ /dev/null @@ -1,22 +0,0 @@ -package gregtech.api.items; - -import static gregtech.api.enums.GT_Values.W; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.item.ItemBlock; - -import cpw.mods.fml.common.registry.GameRegistry; -import gregtech.api.util.GT_LanguageManager; - -public class GT_Generic_Block extends Block { - - protected final String mUnlocalizedName; - - protected GT_Generic_Block(Class aItemClass, String aName, Material aMaterial) { - super(aMaterial); - setBlockName(mUnlocalizedName = aName); - GameRegistry.registerBlock(this, aItemClass, getUnlocalizedName()); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + W + ".name", "Any Sub Block of this one"); - } -} diff --git a/src/main/java/gregtech/api/items/GT_Generic_Item.java b/src/main/java/gregtech/api/items/GT_Generic_Item.java deleted file mode 100644 index 3fe2083a96..0000000000 --- a/src/main/java/gregtech/api/items/GT_Generic_Item.java +++ /dev/null @@ -1,162 +0,0 @@ -package gregtech.api.items; - -import static gregtech.api.enums.Mods.GregTech; - -import java.util.List; - -import net.minecraft.block.BlockDispenser; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.dispenser.BehaviorDefaultDispenseItem; -import net.minecraft.dispenser.BehaviorProjectileDispense; -import net.minecraft.dispenser.IBlockSource; -import net.minecraft.dispenser.IPosition; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.IIcon; -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 gregtech.api.GregTech_API; -import gregtech.api.enums.SubTag; -import gregtech.api.interfaces.IProjectileItem; -import gregtech.api.util.GT_Config; -import gregtech.api.util.GT_LanguageManager; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_Utility; - -/** - * Extended by most Items, also used as a fallback Item, to prevent the accidental deletion when Errors occur. - */ -public class GT_Generic_Item extends Item implements IProjectileItem { - - private final String mName, mTooltip; - protected IIcon mIcon; - - public GT_Generic_Item(String aUnlocalized, String aEnglish, String aEnglishTooltip) { - super(); - mName = "gt." + aUnlocalized; - GT_LanguageManager.addStringLocalization(mName + ".name", aEnglish); - if (GT_Utility.isStringValid(aEnglishTooltip)) - GT_LanguageManager.addStringLocalization(mTooltip = mName + ".tooltip_main", aEnglishTooltip); - else mTooltip = null; - setCreativeTab(GregTech_API.TAB_GREGTECH); - GameRegistry.registerItem(this, mName, GregTech.ID); - BlockDispenser.dispenseBehaviorRegistry.putObject(this, new GT_Item_Dispense()); - } - - @Override - public final Item setUnlocalizedName(String aName) { - return this; - } - - @Override - public final String getUnlocalizedName() { - return mName; - } - - @Override - public String getUnlocalizedName(ItemStack aStack) { - return getHasSubtypes() ? mName + "." + getDamage(aStack) : mName; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister aIconRegister) { - mIcon = aIconRegister.registerIcon(GregTech.getResourcePath(GT_Config.troll ? "troll" : mName)); - } - - @Override - public boolean doesSneakBypassUse(World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer) { - return true; - } - - @Override - public IIcon getIconFromDamage(int aMetaData) { - return mIcon; - } - - public int getTier(ItemStack aStack) { - return 0; - } - - @Override - public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { - if (getMaxDamage() > 0 && !getHasSubtypes()) - aList.add((aStack.getMaxDamage() - getDamage(aStack)) + " / " + aStack.getMaxDamage()); - if (mTooltip != null) aList.add(GT_LanguageManager.getTranslation(mTooltip)); - if (GT_ModHandler.isElectricItem(aStack)) aList.add("Tier: " + getTier(aStack)); - addAdditionalToolTips(aList, aStack, aPlayer); - } - - protected void addAdditionalToolTips(List aList, ItemStack aStack, EntityPlayer aPlayer) { - // - } - - @Override - public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { - isItemStackUsable(aStack); - } - - public boolean isItemStackUsable(ItemStack aStack) { - return true; - } - - public ItemStack onDispense(IBlockSource aSource, ItemStack aStack) { - EnumFacing enumfacing = BlockDispenser.func_149937_b(aSource.getBlockMetadata()); - IPosition iposition = BlockDispenser.func_149939_a(aSource); - ItemStack itemstack1 = aStack.splitStack(1); - BehaviorDefaultDispenseItem.doDispense(aSource.getWorld(), itemstack1, 6, enumfacing, iposition); - return aStack; - } - - @Override - public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, double aX, double aY, - double aZ) { - return null; - } - - @Override - public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, EntityLivingBase aEntity, - float aSpeed) { - return null; - } - - @Override - public boolean hasProjectile(SubTag aProjectileType, ItemStack aStack) { - return false; - } - - @Override - public ItemStack getContainerItem(ItemStack aStack) { - return null; - } - - @Override - public boolean hasContainerItem(ItemStack aStack) { - return getContainerItem(aStack) != null; - } - - public String transItem(String aKey, String aEnglish) { - return GT_LanguageManager.addStringLocalization("Item_DESCRIPTION_Index_" + aKey, aEnglish); - } - - public static class GT_Item_Dispense extends BehaviorProjectileDispense { - - @Override - public ItemStack dispenseStack(IBlockSource aSource, ItemStack aStack) { - return ((GT_Generic_Item) aStack.getItem()).onDispense(aSource, aStack); - } - - @Override - protected IProjectile getProjectileEntity(World aWorld, IPosition aPosition) { - return null; - } - } -} diff --git a/src/main/java/gregtech/api/items/GT_MetaBase_Item.java b/src/main/java/gregtech/api/items/GT_MetaBase_Item.java deleted file mode 100644 index 481c0b5a08..0000000000 --- a/src/main/java/gregtech/api/items/GT_MetaBase_Item.java +++ /dev/null @@ -1,622 +0,0 @@ -package gregtech.api.items; - -import static gregtech.api.enums.GT_Values.D1; -import static gregtech.api.enums.GT_Values.V; -import static gregtech.api.util.GT_Utility.formatNumbers; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -import net.minecraft.dispenser.IBlockSource; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.inventory.Container; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidContainerItem; - -import gregtech.api.enums.SubTag; -import gregtech.api.interfaces.IItemBehaviour; -import gregtech.api.util.GT_LanguageManager; -import gregtech.api.util.GT_Log; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_Utility; -import ic2.api.item.ElectricItem; -import ic2.api.item.IElectricItem; -import ic2.api.item.IElectricItemManager; -import ic2.api.item.ISpecialElectricItem; - -public abstract class GT_MetaBase_Item extends GT_Generic_Item - implements ISpecialElectricItem, IElectricItemManager, IFluidContainerItem { - - /* ---------- CONSTRUCTOR AND MEMBER VARIABLES ---------- */ - private final ConcurrentHashMap>> mItemBehaviors = new ConcurrentHashMap<>(); - - /** - * Creates the Item using these Parameters. - * - * @param aUnlocalized The Unlocalized Name of this Item. - */ - public GT_MetaBase_Item(String aUnlocalized) { - super(aUnlocalized, "Generated Item", null); - setHasSubtypes(true); - setMaxDamage(0); - } - - /** - * Adds a special Item Behaviour to the Item. - *

- * Note: the boolean Behaviours sometimes won't be executed if another boolean Behaviour returned true before. - * - * @param aMetaValue the Meta Value of the Item you want to add it to. [0 - 32765] - * @param aBehavior the Click Behavior you want to add. - * @return the Item itself for convenience in constructing. - */ - public final GT_MetaBase_Item addItemBehavior(int aMetaValue, IItemBehaviour aBehavior) { - if (aMetaValue < 0 || aMetaValue >= 32766 || aBehavior == null) return this; - ArrayList> tList = mItemBehaviors - .computeIfAbsent((short) aMetaValue, k -> new ArrayList<>(1)); - tList.add(aBehavior); - return this; - } - - public abstract Long[] getElectricStats(ItemStack aStack); - - public abstract Long[] getFluidContainerStats(ItemStack aStack); - - @Override - public boolean hasProjectile(SubTag aProjectileType, ItemStack aStack) { - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) - if (tBehavior.hasProjectile(this, aProjectileType, aStack)) return true; - return super.hasProjectile(aProjectileType, aStack); - } - - @Override - public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, double aX, double aY, - double aZ) { - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) { - EntityArrow rArrow = tBehavior.getProjectile(this, aProjectileType, aStack, aWorld, aX, aY, aZ); - if (rArrow != null) return rArrow; - } - return super.getProjectile(aProjectileType, aStack, aWorld, aX, aY, aZ); - } - - @Override - public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, EntityLivingBase aEntity, - float aSpeed) { - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) { - EntityArrow rArrow = tBehavior.getProjectile(this, aProjectileType, aStack, aWorld, aEntity, aSpeed); - if (rArrow != null) return rArrow; - } - return super.getProjectile(aProjectileType, aStack, aWorld, aEntity, aSpeed); - } - - @Override - public ItemStack onDispense(IBlockSource aSource, ItemStack aStack) { - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) - if (tBehavior.canDispense(this, aSource, aStack)) return tBehavior.onDispense(this, aSource, aStack); - return super.onDispense(aSource, aStack); - } - - @Override - public boolean isItemStackUsable(ItemStack aStack) { - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) - if (!tBehavior.isItemStackUsable(this, aStack)) return false; - return super.isItemStackUsable(aStack); - } - - @Override - public boolean onLeftClickEntity(ItemStack aStack, EntityPlayer aPlayer, Entity aEntity) { - use(aStack, 0, aPlayer); - isItemStackUsable(aStack); - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - try { - if (tList != null) for (IItemBehaviour tBehavior : tList) - if (tBehavior.onLeftClickEntity(this, aStack, aPlayer, aEntity)) { - if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); - return true; - } - if (aStack.stackSize <= 0) { - aPlayer.destroyCurrentEquippedItem(); - return false; - } - } catch (Throwable e) { - if (D1) e.printStackTrace(GT_Log.err); - } - return false; - } - - @Override - public boolean onItemUse(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, - int ordinalSide, float hitX, float hitY, float hitZ) { - use(aStack, 0, aPlayer); - isItemStackUsable(aStack); - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - try { - if (tList != null) for (IItemBehaviour tBehavior : tList) - if (tBehavior.onItemUse(this, aStack, aPlayer, aWorld, aX, aY, aZ, ordinalSide, hitX, hitY, hitZ)) { - if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); - return true; - } - if (aStack.stackSize <= 0) { - aPlayer.destroyCurrentEquippedItem(); - return false; - } - } catch (Throwable e) { - if (D1) e.printStackTrace(GT_Log.err); - } - return false; - } - - @Override - public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, - int ordinalSide, float hitX, float hitY, float hitZ) { - use(aStack, 0, aPlayer); - isItemStackUsable(aStack); - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - try { - if (tList != null) for (IItemBehaviour tBehavior : tList) if (tBehavior.onItemUseFirst( - this, - aStack, - aPlayer, - aWorld, - aX, - aY, - aZ, - ForgeDirection.getOrientation(ordinalSide), - hitX, - hitY, - hitZ)) { - if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); - return true; - } - if (aStack.stackSize <= 0) { - aPlayer.destroyCurrentEquippedItem(); - return false; - } - } catch (Throwable e) { - if (D1) e.printStackTrace(GT_Log.err); - } - return false; - } - - @Override - public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { - use(aStack, 0, aPlayer); - isItemStackUsable(aStack); - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - try { - if (tList != null) for (IItemBehaviour tBehavior : tList) - aStack = tBehavior.onItemRightClick(this, aStack, aWorld, aPlayer); - } catch (Throwable e) { - if (D1) e.printStackTrace(GT_Log.err); - } - return aStack; - } - - @Override - public final void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { - String tKey = getUnlocalizedName(aStack) + ".tooltip"; - String[] tStrings = GT_LanguageManager.getTranslation(tKey) - .split("/n "); - for (String tString : tStrings) - if (GT_Utility.isStringValid(tString) && !tKey.equals(tString)) aList.add(tString); - - Long[] tStats = getElectricStats(aStack); - if (tStats != null) { - if (tStats[3] > 0) { - aList.add( - EnumChatFormatting.AQUA + String.format( - transItem("009", "Contains %s EU Tier: %s"), - formatNumbers(tStats[3]), - "" + (tStats[2] >= 0 ? tStats[2] : 0)) + EnumChatFormatting.GRAY); - } else { - long tCharge = getRealCharge(aStack); - if (tStats[3] == -2 && tCharge <= 0) { - aList.add( - Enum