aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/enums/GT_Values.java7
-rw-r--r--src/main/java/gregtech/api/interfaces/IAlleleBeeAcceleratableEffect.java9
-rw-r--r--src/main/java/gregtech/api/util/GT_ApiaryModifier.java18
-rw-r--r--src/main/java/gregtech/common/gui/GT_GUIContainer_IndustrialApiary.java6
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_IndustrialApiary.java83
-rw-r--r--src/main/resources/assets/gregtech/lang/en_US.lang10
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