diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 4c8e4838c..d13c83de2 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -6,7 +6,7 @@ import static com.hbm.inventory.OreDictManager.*; import com.hbm.blocks.ModBlocks; import com.hbm.hazard.modifier.*; -import com.hbm.hazard.transformer.HazardTransformerRadiationNBT; +import com.hbm.hazard.transformer.*; import com.hbm.hazard.type.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; @@ -469,6 +469,7 @@ public class HazardRegistry { public static void registerTrafos() { HazardSystem.trafos.add(new HazardTransformerRadiationNBT()); + HazardSystem.trafos.add(new HazardTransformerRadiationME()); } private static HazardData makeData() { return new HazardData(); } diff --git a/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationME.java b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationME.java new file mode 100644 index 000000000..df387ac6c --- /dev/null +++ b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationME.java @@ -0,0 +1,33 @@ +package com.hbm.hazard.transformer; + +import java.util.List; + +import com.hbm.hazard.HazardEntry; +import com.hbm.hazard.HazardRegistry; +import com.hbm.hazard.HazardSystem; +import com.hbm.util.Compat; + +import net.minecraft.item.ItemStack; + +public class HazardTransformerRadiationME extends HazardTransformerBase { + + @Override + public void transformPre(ItemStack stack, List entries) { } + + @Override + public void transformPost(ItemStack stack, List entries) { + + if(stack.getItem().getClass().getName().equals("appeng.items.storage.ItemBasicStorageCell")) { + List stacks = Compat.scrapeItemFromME(stack); + float radiation = 0; + + for(ItemStack held : stacks) { + radiation += HazardSystem.getHazardLevelFromStack(held, HazardRegistry.RADIATION); + } + + if(radiation > 0) { + entries.add(new HazardEntry(HazardRegistry.RADIATION, radiation)); + } + } + } +} diff --git a/src/main/java/com/hbm/util/Compat.java b/src/main/java/com/hbm/util/Compat.java index 643ef1f91..ed5eb304d 100644 --- a/src/main/java/com/hbm/util/Compat.java +++ b/src/main/java/com/hbm/util/Compat.java @@ -1,8 +1,14 @@ package com.hbm.util; +import java.util.ArrayList; +import java.util.List; + import com.hbm.hazard.HazardRegistry; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; public class Compat { @@ -62,4 +68,29 @@ public class Compat { return this.rads; } } + + public static List scrapeItemFromME(ItemStack meDrive) { + List stacks = new ArrayList(); + + if(meDrive != null && meDrive.hasTagCompound()) { + NBTTagCompound nbt = meDrive.getTagCompound(); + int types = nbt.getShort("it"); //ITEM_TYPE_TAG + + for(int i = 0; i < types; i++) { + NBTBase stackTag = nbt.getTag("#" + i); + + if(stackTag instanceof NBTTagCompound) { + NBTTagCompound compound = (NBTTagCompound) stackTag; + ItemStack stack = ItemStack.loadItemStackFromNBT(compound); + + int count = nbt.getInteger("@" + i); + stack.stackSize = count; + + stacks.add(stack); + } + } + } + + return stacks; + } }