diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2022-03-09 00:15:30 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-08 17:15:30 +0100 |
commit | 233401bf38f0ca1cda32ab85c225742c74f435d8 (patch) | |
tree | 11e33a762402145d1b86492221f526617edaad9e /src/main/java/gregtech/api/items/GT_BreederCell_Item.java | |
parent | fe7afc6d357f61c161bfdfffc6831502e6a6c8cb (diff) | |
download | GT5-Unofficial-233401bf38f0ca1cda32ab85c225742c74f435d8.tar.gz GT5-Unofficial-233401bf38f0ca1cda32ab85c225742c74f435d8.tar.bz2 GT5-Unofficial-233401bf38f0ca1cda32ab85c225742c74f435d8.zip |
sunnarium from glowstone in reactors (#971)
* sunnarium from glowstone in reactors
* change glowstone dust to 9 items
(cherry picked from commit 24d7318ae8e73dc0082784e0a5872903b074dd2e)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/api/items/GT_BreederCell_Item.java')
-rw-r--r-- | src/main/java/gregtech/api/items/GT_BreederCell_Item.java | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/items/GT_BreederCell_Item.java b/src/main/java/gregtech/api/items/GT_BreederCell_Item.java new file mode 100644 index 0000000000..bb65a9a057 --- /dev/null +++ b/src/main/java/gregtech/api/items/GT_BreederCell_Item.java @@ -0,0 +1,124 @@ +package gregtech.api.items; + +import gregtech.api.GregTech_API; +import gregtech.api.util.GT_Utility; +import ic2.api.reactor.IReactor; +import ic2.api.reactor.IReactorComponent; +import ic2.core.IC2Potion; +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 java.util.List; +import java.util.function.Supplier; + +/** + * 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; + + public GT_BreederCell_Item(String aUnlocalized, String aEnglish, String aEnglishTooltip, int aHeatBonusStep, int aHeatBonusMultiplier, int aRequiredPulse, Supplier<ItemStack> aProduct) { + super(aUnlocalized, aEnglish, aEnglishTooltip); + this.mHeatBonusStep = aHeatBonusStep; + this.mHeatBonusMultiplier = aHeatBonusMultiplier; + this.setMaxDamage(aRequiredPulse); + setNoRepair(); + GregTech_API.sAfterGTServerstart.add(() -> mProduct = aProduct.get()); + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slotIndex, boolean isCurrentItem) { + if ((entity instanceof EntityLivingBase)) { + EntityLivingBase entityLiving = (EntityLivingBase) entity; + if (!GregTech_API.mIC2Classic && !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: + color2 = EnumChatFormatting.DARK_GRAY; + break; + case 1: + case 2: + color2 = EnumChatFormatting.GRAY; + break; + default: + color2 = EnumChatFormatting.WHITE; + break; + } + aList.add(String.format(transItem("020", "Progress: %s/%s"), "" + color2 + aStack.getItemDamage() + EnumChatFormatting.RESET, "" + 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 true; + } + + 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(); + } +} |