diff options
Diffstat (limited to 'src')
6 files changed, 109 insertions, 24 deletions
diff --git a/src/main/java/gregtech/api/enums/GT_Values.java b/src/main/java/gregtech/api/enums/GT_Values.java index b3394ca2a1..4b170ebf63 100644 --- a/src/main/java/gregtech/api/enums/GT_Values.java +++ b/src/main/java/gregtech/api/enums/GT_Values.java @@ -487,4 +487,11 @@ public class GT_Values { + EnumChatFormatting.BOLD + EnumChatFormatting.ITALIC + EnumChatFormatting.UNDERLINE + "e" + EnumChatFormatting.DARK_PURPLE + EnumChatFormatting.BOLD + EnumChatFormatting.ITALIC + EnumChatFormatting.UNDERLINE + "n"; + + public static final String AuthorKuba = "Author: " + EnumChatFormatting.DARK_RED + EnumChatFormatting.BOLD + "k" + + EnumChatFormatting.RED + EnumChatFormatting.BOLD + "u" + + EnumChatFormatting.GOLD + EnumChatFormatting.BOLD + "b" + EnumChatFormatting.YELLOW + + EnumChatFormatting.BOLD + "a" + EnumChatFormatting.DARK_GREEN + EnumChatFormatting.BOLD + "6" + + EnumChatFormatting.GREEN + EnumChatFormatting.BOLD + "0" + EnumChatFormatting.AQUA + + EnumChatFormatting.BOLD + "0" + EnumChatFormatting.DARK_AQUA + EnumChatFormatting.BOLD + "0"; } diff --git a/src/main/java/gregtech/api/interfaces/IAlleleBeeAcceleratableEffect.java b/src/main/java/gregtech/api/interfaces/IAlleleBeeAcceleratableEffect.java new file mode 100644 index 0000000000..fee1430137 --- /dev/null +++ b/src/main/java/gregtech/api/interfaces/IAlleleBeeAcceleratableEffect.java @@ -0,0 +1,9 @@ +package gregtech.api.interfaces; + +import forestry.api.apiculture.IBeeGenome; +import forestry.api.apiculture.IBeeHousing; +import forestry.api.genetics.IEffectData; + +public interface IAlleleBeeAcceleratableEffect { + IEffectData doEffectAccelerated(IBeeGenome genome, IEffectData storedData, IBeeHousing housing, float did); +} diff --git a/src/main/java/gregtech/api/util/GT_ApiaryModifier.java b/src/main/java/gregtech/api/util/GT_ApiaryModifier.java index 9df7bf9a7b..eee97a4458 100644 --- a/src/main/java/gregtech/api/util/GT_ApiaryModifier.java +++ b/src/main/java/gregtech/api/util/GT_ApiaryModifier.java @@ -3,20 +3,20 @@ package gregtech.api.util; import net.minecraft.world.biome.BiomeGenBase; public class GT_ApiaryModifier { - public float territory = 1.0F; - public float mutation = 1.0F; - public float lifespan = 1.0F; - public float production = 1.0F; - public float flowering = 1.0F; - public float geneticDecay = 1.0F; + public float territory = 1f; + public float mutation = 1f; + public float lifespan = 1f; + public float production = 0f; + public float flowering = 1f; + public float geneticDecay = 1f; public boolean isSealed = false; public boolean isSelfLighted = false; public boolean isSunlightSimulated = false; public boolean isAutomated = false; public boolean isCollectingPollen = false; public BiomeGenBase biomeOverride = null; - public float energy = 1.0F; - public float temperature = 0.0F; - public float humidity = 0.0F; + public float energy = 1f; + public float temperature = 0f; + public float humidity = 0f; public int maxSpeed = 0; } diff --git a/src/main/java/gregtech/common/gui/GT_GUIContainer_IndustrialApiary.java b/src/main/java/gregtech/common/gui/GT_GUIContainer_IndustrialApiary.java index 2225822764..015e9f74a5 100644 --- a/src/main/java/gregtech/common/gui/GT_GUIContainer_IndustrialApiary.java +++ b/src/main/java/gregtech/common/gui/GT_GUIContainer_IndustrialApiary.java @@ -120,10 +120,8 @@ public class GT_GUIContainer_IndustrialApiary extends GT_GUIContainerMetaTile_Ma energyreq, Temp, Hum, - Math.round(100f - * IA.getProductionModifier(null, 1f) - * genome.getSpeed() - * mod.getProductionModifier(null, 1f)), + genome.getSpeed(), + IA.getProductionModifier(null, 1f) * mod.getProductionModifier(null, 1f), Math.round(IA.getFloweringModifier(null, 1f) * genome.getFlowering() * mod.getFloweringModifier(null, 1f)), diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java index 472c39c744..ada7c0ae3b 100644 --- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java +++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java @@ -1,5 +1,6 @@ package gregtech.common.tileentities.machines.basic; +import static gregtech.api.enums.GT_Values.AuthorKuba; import static gregtech.api.enums.GT_Values.V; import static gregtech.api.enums.Textures.BlockIcons.*; import static gregtech.api.util.GT_Utility.moveMultipleItemStacks; @@ -15,8 +16,10 @@ import forestry.api.genetics.AlleleManager; import forestry.api.genetics.IEffectData; import forestry.api.genetics.IIndividual; import forestry.apiculture.genetics.Bee; +import forestry.apiculture.genetics.alleles.AlleleEffectThrottled; import forestry.core.errors.EnumErrorCode; import forestry.plugins.PluginApiculture; +import gregtech.api.interfaces.IAlleleBeeAcceleratableEffect; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; @@ -31,6 +34,7 @@ import gregtech.common.gui.GT_GUIContainer_IndustrialApiary; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.lang.reflect.Field; import java.util.*; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayerMP; @@ -47,9 +51,11 @@ import net.minecraft.world.biome.BiomeGenBase; public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicMachine implements IBeeHousing, IBeeHousingInventory, IErrorLogic, IBeeModifier, IBeeListener { + public static final int beeCycleLength = 550; public static final int baseEUtUsage = 37; static final int queen = 5; static final int drone = 6; + private static Field AlleleBeeEffectThrottledField; IBeeRoot beeRoot = (IBeeRoot) AlleleManager.alleleRegistry.getSpeciesRoot("rootBees"); @@ -67,9 +73,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM aNameRegional, aTier, 4, - new String[] { - "BEES GOES BRRRR", EnumChatFormatting.GRAY + "Added by " + EnumChatFormatting.GOLD + "kuba6000" - }, + new String[] {"BEES GOES BRRRR", EnumChatFormatting.GRAY + AuthorKuba}, 6, 9, "IndustrialApiary.png", @@ -163,6 +167,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (usedQueen != null) aNBT.setTag("usedQueen", usedQueen.writeToNBT(new NBTTagCompound())); aNBT.setBoolean("retrievingPollenInThisOperation", retrievingPollenInThisOperation); aNBT.setInteger("pollinationDelay", pollinationDelay); + aNBT.setFloat("usedBeeLife", usedBeeLife); } @Override @@ -173,11 +178,13 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM if (aNBT.hasKey("usedQueen")) usedQueen = ItemStack.loadItemStackFromNBT(aNBT.getCompoundTag("usedQueen")); retrievingPollenInThisOperation = aNBT.getBoolean("retrievingPollenInThisOperation"); pollinationDelay = aNBT.getInteger("pollinationDelay"); + usedBeeLife = aNBT.getFloat("usedBeeLife"); } boolean retrievingPollenInThisOperation = false; IIndividual retrievedpollen = null; int pollinationDelay = 100; + float usedBeeLife = 0f; @Override public int checkRecipe() { @@ -335,7 +342,8 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM // Overclock - this.mMaxProgresstime = (int) (cycles * 550.f); + usedBeeLife = cycles * (float) beeCycleLength; + this.mMaxProgresstime = (int) usedBeeLife; int timemaxdivider = this.mMaxProgresstime / 100; int useddivider = 1 << this.mSpeed; int actualdivider = useddivider; @@ -393,6 +401,68 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM return getBaseMetaTileEntity().isUniversalEnergyStored(V[mSpeed] * 8L); } + private void doEffect() { + IBeeGenome genome = usedQueenBee.getGenome(); + IAlleleBeeEffect effect = genome.getEffect(); + if (!(effect instanceof IAlleleBeeAcceleratableEffect)) { + effectData[0] = effect.validateStorage(effectData[0]); + effect.doEffect(genome, effectData[0], this); + } + + if (!effect.isCombinable()) return; + + IAlleleBeeEffect secondary = (IAlleleBeeEffect) genome.getInactiveAllele(EnumBeeChromosome.EFFECT); + if (!secondary.isCombinable()) return; + + if (!(secondary instanceof IAlleleBeeAcceleratableEffect)) { + effectData[1] = secondary.validateStorage(effectData[1]); + secondary.doEffect(genome, effectData[1], this); + } + } + + private void doAcceleratedEffects() { + IBeeGenome genome = usedQueenBee.getGenome(); + IAlleleBeeEffect effect = genome.getEffect(); + try { + if (AlleleBeeEffectThrottledField == null) { + AlleleBeeEffectThrottledField = AlleleEffectThrottled.class.getDeclaredField("throttle"); + AlleleBeeEffectThrottledField.setAccessible(true); + } + if (effect instanceof IAlleleBeeAcceleratableEffect) { + effectData[0] = effect.validateStorage(effectData[0]); + effectData[0] = ((IAlleleBeeAcceleratableEffect) effect) + .doEffectAccelerated( + genome, + effectData[0], + this, + usedBeeLife + / (effect instanceof AlleleEffectThrottled + ? (float) AlleleBeeEffectThrottledField.getInt(effect) + : 1f)); + } + + if (!effect.isCombinable()) return; + + IAlleleBeeEffect secondary = (IAlleleBeeEffect) genome.getInactiveAllele(EnumBeeChromosome.EFFECT); + if (!secondary.isCombinable()) return; + + if (secondary instanceof IAlleleBeeAcceleratableEffect) { + effectData[1] = secondary.validateStorage(effectData[1]); + effectData[1] = ((IAlleleBeeAcceleratableEffect) secondary) + .doEffectAccelerated( + genome, + effectData[0], + this, + usedBeeLife + / (secondary instanceof AlleleEffectThrottled + ? (float) AlleleBeeEffectThrottledField.getInt(secondary) + : 1f)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } + @Override public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { if (aBaseMetaTileEntity.isClientSide()) { @@ -456,7 +526,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM this.mProgresstime++; if (usedQueen != null) { if (usedQueenBee == null) usedQueenBee = beeRoot.getMember(usedQueen); - effectData = usedQueenBee.doEffect(effectData, this); + doEffect(); if (!retrievingPollenInThisOperation && floweringMod > 0f && this.mProgresstime % pollinationDelay == 0) { @@ -475,6 +545,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM } if (this.mProgresstime >= this.mMaxProgresstime) { + if (usedQueenBee != null) doAcceleratedEffects(); updateModifiers(); for (int i = 0; i < mOutputItems.length; i++) if (mOutputItems[i] != null) @@ -806,7 +877,7 @@ public class GT_MetaTileEntity_IndustrialApiary extends GT_MetaTileEntity_BasicM private float terrorityMod = 1f; private float mutationMod = 1f; private float lifespanMod = 1f; - private float productionMod = 1f; + private float productionMod = 0f; private float floweringMod = 1f; private float geneticDecayMod = 1f; private float energyMod = 1f; diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang index f6327670be..0931e767e8 100644 --- a/src/main/resources/assets/gregtech/lang/en_US.lang +++ b/src/main/resources/assets/gregtech/lang/en_US.lang @@ -188,12 +188,12 @@ GT5U.machines.industrialapiary.info.tooltip.3=§7§oInsert analyzed bee to see m GT5U.machines.industrialapiary.infoextended.tooltip=Energy required: %1$s EU/t GT5U.machines.industrialapiary.infoextended.tooltip.1=Temperature: %2$s GT5U.machines.industrialapiary.infoextended.tooltip.2=Humidity: %3$s -GT5U.machines.industrialapiary.infoextended.tooltip.3=Production Modifier: %4$d %% -GT5U.machines.industrialapiary.infoextended.tooltip.4=Flowering Chance: %5$d %% -GT5U.machines.industrialapiary.infoextended.tooltip.5=Lifespan Modifier: %6$d %% -GT5U.machines.industrialapiary.infoextended.tooltip.6=Territory: %7$d x %8$d x %9$d +GT5U.machines.industrialapiary.infoextended.tooltip.3=Bee genome speed: %4$.1f +GT5U.machines.industrialapiary.infoextended.tooltip.4=Production Modifier: %5$.2f +GT5U.machines.industrialapiary.infoextended.tooltip.5=Flowering Chance: %6$d %% +GT5U.machines.industrialapiary.infoextended.tooltip.6=Lifespan Modifier: %7$d %% +GT5U.machines.industrialapiary.infoextended.tooltip.7=Territory: %8$d x %9$d x %10$d GT5U.machines.industrialapiary.upgradeslot.tooltip=Upgrade slot -GT5U.machines.industrialapiary.upgradeslot.tooltip.1=§7Also accepts gendustry upgrades GT5U.machines.advdebugstructurewriter.tooltip=Scans Blocks Around GT5U.machines.advdebugstructurewriter.tooltip.1=Prints Multiblock NonTE structure check code GT5U.machines.advdebugstructurewriter.tooltip.2=ABC axes aligned to machine front |