aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/items/GT_BreederCell_Item.java
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2022-03-09 00:15:30 +0800
committerGitHub <noreply@github.com>2022-03-08 17:15:30 +0100
commit233401bf38f0ca1cda32ab85c225742c74f435d8 (patch)
tree11e33a762402145d1b86492221f526617edaad9e /src/main/java/gregtech/api/items/GT_BreederCell_Item.java
parentfe7afc6d357f61c161bfdfffc6831502e6a6c8cb (diff)
downloadGT5-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.java124
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();
+ }
+}