diff options
Diffstat (limited to 'src/main/java/kubatech/tileentity/gregtech')
-rw-r--r-- | src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java index 03bc9f7cdc..6eda8055be 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java @@ -34,6 +34,7 @@ import WayofTime.alchemicalWizardry.api.tile.IBloodAltar; import WayofTime.alchemicalWizardry.common.rituals.RitualEffectWellOfSuffering; import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; import com.github.bartimaeusnek.bartworks.API.BorosilicateGlass; +import com.google.common.collect.Multimap; import com.gtnewhorizon.structurelib.structure.IStructureDefinition; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import cpw.mods.fml.common.eventhandler.EventPriority; @@ -67,6 +68,9 @@ import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.EnumCreatureAttribute; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -428,20 +432,45 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber if (!recipe.isPeacefulAllowed && this.getBaseMetaTileEntity().getWorld().difficultySetting == EnumDifficulty.PEACEFUL) return false; - GT_MetaTileEntity_Hatch_InputBus inputbus = this.mInputBusses.get(0); - if (inputbus == null || !isValidMetaTileEntity(inputbus)) return false; - ItemStack lootingholder = inputbus.getStackInSlot(0); - if (lootingholder == null || !Enchantment.looting.canApply(lootingholder)) return false; - - this.mOutputItems = recipe.generateOutputs( - rand, this, EnchantmentHelper.getEnchantmentLevel(Enchantment.looting.effectId, lootingholder)); - if (isInRitualMode && isRitualValid()) { this.mMaxProgresstime = 400; this.mEUt /= 4; this.mOutputFluids = new FluidStack[] {FluidRegistry.getFluidStack("xpjuice", 5000)}; + this.mOutputItems = recipe.generateOutputs(rand, this, 3, 0); } else { + GT_MetaTileEntity_Hatch_InputBus inputbus = this.mInputBusses.get(0); + if (inputbus == null || !isValidMetaTileEntity(inputbus)) return false; + ItemStack lootingholder = inputbus.getStackInSlot(0); + if (lootingholder == null || !Enchantment.looting.canApply(lootingholder)) return false; + double attackDamage = 3; + + try { + //noinspection unchecked + attackDamage += ((Multimap<String, AttributeModifier>) lootingholder.getAttributeModifiers()) + .get(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName()).stream() + .mapToDouble(attr -> attr.getAmount() + + (double) EnchantmentHelper.func_152377_a( + lootingholder, EnumCreatureAttribute.UNDEFINED)) + .sum(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + this.mOutputItems = recipe.generateOutputs( + rand, + this, + attackDamage, + EnchantmentHelper.getEnchantmentLevel(Enchantment.looting.effectId, lootingholder)); + int eut = this.mEUt; calculatePerfectOverclockedNessMulti(this.mEUt, this.mMaxProgresstime, 2, getMaxInputVoltage()); + if (lootingholder.isItemStackDamageable()) { + do { + if (lootingholder.attemptDamageItem(1, rand)) { + inputbus.setInventorySlotContents(0, null); + break; + } + } while ((eut <<= 2) < this.mEUt); + } this.mOutputFluids = new FluidStack[] {FluidRegistry.getFluidStack("xpjuice", 120)}; } if (this.mEUt > 0) this.mEUt = -this.mEUt; @@ -454,6 +483,7 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber if (mAnimationEnabled) mobPacket.addData(mobType); mobPacket.sendToAllAround(16); + this.updateSlots(); return true; } |