diff options
Diffstat (limited to 'src/main')
6 files changed, 180 insertions, 130 deletions
diff --git a/src/main/java/kubatech/api/Variables.java b/src/main/java/kubatech/api/Variables.java index 53171b8160..0f07c48324 100644 --- a/src/main/java/kubatech/api/Variables.java +++ b/src/main/java/kubatech/api/Variables.java @@ -43,4 +43,7 @@ public class Variables { public static final String StructureHologram = "To see the structure, use a " + EnumChatFormatting.BLUE + "Tec" + EnumChatFormatting.DARK_BLUE + "Tech" + EnumChatFormatting.RESET + "" + EnumChatFormatting.GRAY + " Blueprint on the Controller!"; + + public static final double ln4 = Math.log(4d); + public static final double ln2 = Math.log(2d); } diff --git a/src/main/java/kubatech/api/helpers/GTHelper.java b/src/main/java/kubatech/api/helpers/GTHelper.java index 05d8bfb919..782c697232 100644 --- a/src/main/java/kubatech/api/helpers/GTHelper.java +++ b/src/main/java/kubatech/api/helpers/GTHelper.java @@ -1,50 +1,16 @@ package kubatech.api.helpers; import static gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity; +import static kubatech.api.Variables.ln4; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; -import java.util.ArrayList; -import java.util.Arrays; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; +import kubatech.api.implementations.KubaTechGTMultiBlockBase; public class GTHelper { - private static final double ln4 = Math.log(4d); - - public static int calculateOverclockedNessMulti( - GT_MetaTileEntity_MultiBlockBase mte, long aEUt, int aDuration, boolean perfect) { - final long maxInputVoltage = getMaxInputEU(mte); - final int tiers = (int) (Math.log((double) maxInputVoltage / (double) aEUt) / ln4); - if (tiers <= 0) { - mte.mEUt = (int) aEUt; - mte.mMaxProgresstime = aDuration; - return 0; - } - mte.mEUt = (int) (aEUt << (tiers << 1)); - int dMulti = 1; - final int aDurationModifier = perfect ? 2 : 1; - for (int i = 0; i < tiers; i++) - if (aDuration > 1) aDuration >>= aDurationModifier; - else dMulti <<= aDurationModifier; - if (dMulti > 1) { - final ArrayList<ItemStack> stacks = new ArrayList<>(Arrays.asList(mte.mOutputItems)); - for (ItemStack mOutputItem : mte.mOutputItems) { - mOutputItem.stackSize *= dMulti; - int maxSize = mOutputItem.getMaxStackSize(); - while (mOutputItem.stackSize > maxSize) - stacks.add(mOutputItem.splitStack(Math.min(mOutputItem.stackSize - maxSize, maxSize))); - } - if (stacks.size() != mte.mOutputItems.length) mte.mOutputItems = stacks.toArray(new ItemStack[0]); - for (FluidStack mOutputFluid : mte.mOutputFluids) mOutputFluid.amount *= dMulti; - } - if (aDuration <= 0) aDuration = 1; - mte.mMaxProgresstime = aDuration; - return tiers; - } - public static long getMaxInputEU(GT_MetaTileEntity_MultiBlockBase mte) { + if (mte instanceof KubaTechGTMultiBlockBase) return ((KubaTechGTMultiBlockBase<?>) mte).getMaxInputEu(); long rEU = 0; for (GT_MetaTileEntity_Hatch_Energy tHatch : mte.mEnergyHatches) if (isValidMetaTileEntity(tHatch)) rEU += tHatch.maxEUInput() * tHatch.maxAmperesIn(); diff --git a/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java b/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java new file mode 100644 index 0000000000..aa51834a10 --- /dev/null +++ b/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java @@ -0,0 +1,141 @@ +package kubatech.api.implementations; + +import static kubatech.api.Variables.ln2; +import static kubatech.api.Variables.ln4; + +import com.gtnewhorizons.modularui.api.drawable.IDrawable; +import com.gtnewhorizons.modularui.api.widget.Widget; +import gregtech.api.gui.modularui.GT_UITextures; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.function.Function; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +public abstract class KubaTechGTMultiBlockBase<T extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<T>> + extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<T> { + + protected KubaTechGTMultiBlockBase(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + } + + protected KubaTechGTMultiBlockBase(String aName) { + super(aName); + } + + /** + * Enables infinite overclocking (will give more outputs with more energy past 1 tick) + * Currently doesn't support recipe inputs + * @return If this supports infinite overclock + */ + protected boolean isOverclockingInfinite() { + return false; + } + + /** + * @return The minimum amount of ticks this multiblock can overclock to + */ + protected int getOverclockTimeLimit() { + return 1; + } + + @Override + protected void calculateOverclockedNessMultiInternal( + long aEUt, int aDuration, int mAmperage, long maxInputVoltage, boolean perfectOC) { + calculateOverclock(aEUt, aDuration, getMaxInputEu(), perfectOC); + } + + /** + * @param aEUt Recipe EU/t + * @param aDuration Recipe duration (in ticks) + * @param maxInputEU The amount of energy we want to overclock to + * @param isPerfect Is this overclock perfect ? + * @return The amount of overclocks + */ + protected int calculateOverclock(long aEUt, int aDuration, final long maxInputEU, final boolean isPerfect) { + final int minDuration = getOverclockTimeLimit(); + int tiers = (int) (Math.log((double) maxInputEU / (double) aEUt) / ln4); + if (tiers <= 0) { + this.lEUt = aEUt; + this.mMaxProgresstime = aDuration; + return 0; + } + int durationTiers = + (int) Math.ceil(Math.log((double) aDuration / (double) minDuration) / (isPerfect ? ln4 : ln2)); + if (durationTiers < 0) durationTiers = 0; // We do not support downclocks (yet) + if (durationTiers > tiers) durationTiers = tiers; + if (!isOverclockingInfinite()) { + tiers = durationTiers; + if (tiers == 0) { + this.lEUt = aEUt; + this.mMaxProgresstime = aDuration; + return 0; + } + this.lEUt = aEUt << (tiers << 1); + aDuration >>= isPerfect ? (tiers << 1) : tiers; + if (aDuration < minDuration) aDuration = minDuration; + this.mMaxProgresstime = aDuration; + return tiers; + } + this.lEUt = aEUt << (tiers << 1); + aDuration >>= isPerfect ? (durationTiers << 1) : durationTiers; + int dMulti = tiers - durationTiers; + if (dMulti > 0) { + dMulti = 1 << (isPerfect ? (dMulti << 1) : dMulti); + // TODO: Use more inputs??? + final ArrayList<ItemStack> stacks = new ArrayList<>(Arrays.asList(this.mOutputItems)); + for (ItemStack mOutputItem : this.mOutputItems) { + mOutputItem.stackSize *= dMulti; + int maxSize = mOutputItem.getMaxStackSize(); + while (mOutputItem.stackSize > maxSize) + stacks.add(mOutputItem.splitStack(Math.min(mOutputItem.stackSize - maxSize, maxSize))); + } + if (stacks.size() != this.mOutputItems.length) this.mOutputItems = stacks.toArray(new ItemStack[0]); + for (FluidStack mOutputFluid : this.mOutputFluids) mOutputFluid.amount *= dMulti; + } + if (aDuration < minDuration) aDuration = minDuration; + this.mMaxProgresstime = aDuration; + return tiers; + } + + protected int calculateOverclock(long aEUt, int aDuration, boolean isPerfect) { + return calculateOverclock(aEUt, aDuration, getMaxInputEu(), isPerfect); + } + + protected int calculateOverclock(long aEUt, int aDuration) { + return calculateOverclock(aEUt, aDuration, false); + } + + protected int calculatePerfectOverclock(long aEUt, int aDuration) { + return calculateOverclock(aEUt, aDuration, true); + } + + @Override + public boolean isCorrectMachinePart(ItemStack aStack) { + return true; + } + + @Override + public int getMaxEfficiency(ItemStack aStack) { + return 10000; + } + + @Override + public int getDamageToComponent(ItemStack aStack) { + return 0; + } + + @Override + public boolean explodesOnComponentBreak(ItemStack aStack) { + return false; + } + + // ModularUI stuff + + protected final Function<Widget, Boolean> isFixed = widget -> getIdealStatus() == getRepairStatus() && mMachine; + protected static final Function<Integer, IDrawable[]> toggleButtonBackgroundGetter = val -> { + if (val == 0) return new IDrawable[] {GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_CROSS}; + else return new IDrawable[] {GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_CHECKMARK}; + }; +} diff --git a/src/main/java/kubatech/loaders/MobRecipeLoader.java b/src/main/java/kubatech/loaders/MobRecipeLoader.java index 307e927330..43fefc2a97 100644 --- a/src/main/java/kubatech/loaders/MobRecipeLoader.java +++ b/src/main/java/kubatech/loaders/MobRecipeLoader.java @@ -229,7 +229,7 @@ public class MobRecipeLoader { double attackDamage, int lootinglevel, boolean preferInfernalDrops) { - MTE.mEUt = mEUt; + MTE.lEUt = mEUt; MTE.mMaxProgresstime = Math.max(MOB_SPAWN_INTERVAL, (int) ((maxEntityHealth / attackDamage) * 10d)); ArrayList<ItemStack> stacks = new ArrayList<>(mOutputs.size()); for (MobDrop o : mOutputs) { @@ -298,7 +298,7 @@ public class MobRecipeLoader { EnchantmentHelper.addRandomEnchantment( rnd, infernalstack, infernalstack.getItem().getItemEnchantability()); stacks.add(infernalstack); - MTE.mEUt *= 8; + MTE.mEUt *= 8L; MTE.mMaxProgresstime *= mods * InfernalMobsCore.instance().getMobModHealthFactor(); } } 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 de9fe76fd3..f04af6adca 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 @@ -38,12 +38,10 @@ import com.google.common.collect.Multimap; import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits; import com.gtnewhorizon.structurelib.structure.IStructureDefinition; import com.gtnewhorizon.structurelib.structure.StructureDefinition; -import com.gtnewhorizons.modularui.api.drawable.IDrawable; import com.gtnewhorizons.modularui.api.drawable.Text; import com.gtnewhorizons.modularui.api.math.Color; import com.gtnewhorizons.modularui.api.screen.ModularWindow; import com.gtnewhorizons.modularui.api.screen.UIBuildContext; -import com.gtnewhorizons.modularui.api.widget.Widget; import com.gtnewhorizons.modularui.common.widget.*; import com.mojang.authlib.GameProfile; import cpw.mods.fml.common.eventhandler.EventPriority; @@ -58,7 +56,6 @@ import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_EnhancedMultiBlockBase; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus; import gregtech.api.render.TextureFactory; @@ -66,11 +63,10 @@ import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; import java.nio.charset.StandardCharsets; import java.util.*; -import java.util.function.Function; import kubatech.Tags; import kubatech.api.LoaderReference; -import kubatech.api.helpers.GTHelper; import kubatech.api.helpers.ReflectionHelper; +import kubatech.api.implementations.KubaTechGTMultiBlockBase; import kubatech.api.network.CustomTileEntityPacket; import kubatech.api.tileentity.CustomTileEntityPacketHandler; import kubatech.api.utils.FastRandom; @@ -104,7 +100,7 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; public class GT_MetaTileEntity_ExtremeExterminationChamber - extends GT_MetaTileEntity_EnhancedMultiBlockBase<GT_MetaTileEntity_ExtremeExterminationChamber> + extends KubaTechGTMultiBlockBase<GT_MetaTileEntity_ExtremeExterminationChamber> implements CustomTileEntityPacketHandler { public static final HashMap<String, MobRecipeLoader.MobRecipe> MobNameToRecipeMap = new HashMap<>(); @@ -214,6 +210,16 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber } @Override + public boolean isOverclockingInfinite() { + return true; + } + + @Override + protected int getOverclockTimeLimit() { + return 20; + } + + @Override public IStructureDefinition<GT_MetaTileEntity_ExtremeExterminationChamber> getStructureDefinition() { return STRUCTURE_DEFINITION; } @@ -312,11 +318,6 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber return new ITexture[] {Textures.BlockIcons.getCasingTextureForId(CASING_INDEX)}; } - @Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return true; - } - @SideOnly(Side.CLIENT) private void setupEntityRenderer(IGregTechTileEntity aBaseMetaTileEntity, int time) { if (entityRenderer == null) { @@ -465,7 +466,7 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber boolean isValid = false; ItemID id = null; int looting = 0; - double attackdamage = 0; + double attackDamage = 0; } private final WeaponCache weaponCache = new WeaponCache(); @@ -495,7 +496,7 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber if (getMaxInputVoltage() < recipe.mEUt / 4) return false; this.mOutputFluids = new FluidStack[] {FluidRegistry.getFluidStack("xpjuice", 5000)}; this.mOutputItems = recipe.generateOutputs(rand, this, 3, 0, mIsProducingInfernalDrops); - this.mEUt /= 4; + this.lEUt /= 4L; this.mMaxProgresstime = 400; } else { if (getMaxInputVoltage() < recipe.mEUt) return false; @@ -514,7 +515,7 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber } try { //noinspection unchecked - weaponCache.attackdamage = ((Multimap<String, AttributeModifier>) + weaponCache.attackDamage = ((Multimap<String, AttributeModifier>) lootingHolder.getAttributeModifiers()) .get(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName()).stream() .mapToDouble(attr -> attr.getAmount() @@ -529,12 +530,12 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber EnchantmentHelper.getEnchantmentLevel(Enchantment.looting.effectId, lootingHolder); weaponCache.id = ItemID.create_NoCopy(lootingHolder, true, true); } - if (weaponCache.isValid) attackDamage += weaponCache.attackdamage; + if (weaponCache.isValid) attackDamage += weaponCache.attackDamage; this.mOutputItems = recipe.generateOutputs( rand, this, attackDamage, weaponCache.isValid ? weaponCache.looting : 0, mIsProducingInfernalDrops); this.mOutputFluids = new FluidStack[] {FluidRegistry.getFluidStack("xpjuice", 120)}; - int times = GTHelper.calculateOverclockedNessMulti(this, this.mEUt, this.mMaxProgresstime, true); + int times = this.calculatePerfectOverclock(this.lEUt, this.mMaxProgresstime); //noinspection ConstantConditions if (weaponCache.isValid && lootingHolder.isItemStackDamageable()) { if (EECPlayer == null) EECPlayer = new EECFakePlayer(this); @@ -551,7 +552,7 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber EECPlayer.currentWeapon = null; } } - if (this.mEUt > 0) this.mEUt = -this.mEUt; + if (this.lEUt > 0) this.lEUt = -this.lEUt; this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; @@ -623,10 +624,10 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber else { info.add("Inserted weapon: " + EnumChatFormatting.YELLOW + (weaponCache.isValid ? "Yes" : "No")); if (weaponCache.isValid) { - info.add("Weapon attack damage: " + EnumChatFormatting.YELLOW + weaponCache.attackdamage); + info.add("Weapon attack damage: " + EnumChatFormatting.YELLOW + weaponCache.attackDamage); info.add("Weapon looting level: " + EnumChatFormatting.YELLOW + weaponCache.looting); info.add("Total attack damage: " + EnumChatFormatting.YELLOW - + (DIAMOND_SPIKES_DAMAGE + weaponCache.attackdamage)); + + (DIAMOND_SPIKES_DAMAGE + weaponCache.attackDamage)); } else info.add("Total attack damage: " + EnumChatFormatting.YELLOW + DIAMOND_SPIKES_DAMAGE); } return info.toArray(new String[0]); @@ -637,12 +638,6 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber return true; } - private final Function<Widget, Boolean> isFixed = widget -> getIdealStatus() == getRepairStatus() && mMachine; - private static final Function<Integer, IDrawable[]> toggleButtonBackgroundGetter = val -> { - if (val == 0) return new IDrawable[] {GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_CROSS}; - else return new IDrawable[] {GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_CHECKMARK}; - }; - @Override public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) { builder.widget(new DrawableWidget() @@ -652,18 +647,6 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber .setEnabled(widget -> !isFixed.apply(widget))); final SlotWidget inventorySlot = new SlotWidget(inventoryHandler, 1).setFilter(stack -> stack.getItem() == poweredSpawnerItem); - /* - Widget.PosProvider provider = (screenSize, window, parent)->{ - if(getRepairStatus() == getIdealStatus() && mMachine) - return new Pos2d(50, 50); - else - return new Pos2d(151, 4); - }; - builder.widget(inventorySlot.setPosProvider(provider).setTicker(widget -> { - if(!widget.getPos().equals(provider.getPos(null, null, null))) - widget.checkNeedsRebuild(); - })); - */ DynamicPositionedColumn configurationElements = new DynamicPositionedColumn(); addConfigurationWidgets(configurationElements, buildContext, inventorySlot); @@ -822,21 +805,6 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber .widget(new FakeSyncWidget.BooleanSyncer(() -> mMachine, val -> mMachine = val)); } - @Override - public int getMaxEfficiency(ItemStack aStack) { - return 10000; - } - - @Override - public int getDamageToComponent(ItemStack aStack) { - return 0; - } - - @Override - public boolean explodesOnComponentBreak(ItemStack aStack) { - return false; - } - private static class EECFakePlayer extends FakePlayer { GT_MetaTileEntity_ExtremeExterminationChamber mte; ItemStack currentWeapon; diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java index 1ef44e1380..3a79f69275 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java @@ -42,7 +42,6 @@ import com.gtnewhorizons.modularui.api.drawable.Text; import com.gtnewhorizons.modularui.api.math.Color; import com.gtnewhorizons.modularui.api.screen.ModularWindow; import com.gtnewhorizons.modularui.api.screen.UIBuildContext; -import com.gtnewhorizons.modularui.api.widget.Widget; import com.gtnewhorizons.modularui.common.widget.*; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -58,19 +57,18 @@ import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_EnhancedMultiBlockBase; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; import java.io.IOException; import java.util.*; -import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; import kubatech.Tags; import kubatech.api.LoaderReference; import kubatech.api.helpers.GTHelper; +import kubatech.api.implementations.KubaTechGTMultiBlockBase; import kubatech.api.network.CustomTileEntityPacket; import kubatech.api.tileentity.CustomTileEntityPacketHandler; import kubatech.client.effect.MegaApiaryBeesRenderer; @@ -85,7 +83,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class GT_MetaTileEntity_MegaIndustrialApiary - extends GT_MetaTileEntity_EnhancedMultiBlockBase<GT_MetaTileEntity_MegaIndustrialApiary> + extends KubaTechGTMultiBlockBase<GT_MetaTileEntity_MegaIndustrialApiary> implements CustomTileEntityPacketHandler, ISurvivalConstructable { private byte mGlassTier = 0; @@ -325,11 +323,6 @@ public class GT_MetaTileEntity_MegaIndustrialApiary } @Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return true; - } - - @Override public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { if (this.mMaxProgresstime > 0) { GT_Utility.sendChatToPlayer(aPlayer, "Can't change mode when running !"); @@ -369,7 +362,7 @@ public class GT_MetaTileEntity_MegaIndustrialApiary private void updateMaxSlots() { int mOld = mMaxSlots; - long v = GTHelper.getMaxInputEU(this); + long v = this.getMaxInputEu(); if (v < GT_Values.V[6]) mMaxSlots = 0; else if (mSecondaryMode == 0) mMaxSlots = (int) (v / GT_Values.V[6]); else mMaxSlots = 1; @@ -438,7 +431,7 @@ public class GT_MetaTileEntity_MegaIndustrialApiary mMaxProgresstime = 10; mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); mEfficiencyIncrease = 10000; - mEUt = 0; + lEUt = 0; return true; } else if (mPrimaryMode == 2) { if (mMaxSlots > 0 && !mStorage.isEmpty()) { @@ -483,7 +476,7 @@ public class GT_MetaTileEntity_MegaIndustrialApiary stacks.addAll(beeSimulator.getDrops(64_00d * boosted)); } - this.mEUt = -(int) ((double) GT_Values.V[6] * (double) mMaxSlots * 0.99d); + this.lEUt = -(int) ((double) GT_Values.V[6] * (double) mMaxSlots * 0.99d); this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; this.mMaxProgresstime = 100; @@ -495,7 +488,8 @@ public class GT_MetaTileEntity_MegaIndustrialApiary this.updateSlots(); return false; } - calculateOverclockedNessMulti(GT_Values.V[5], 1200, 2, getMaxInputVoltage()); + calculateOverclock(GT_Values.V[5] - 2L, 1200); + if (this.lEUt > 0) this.lEUt = -this.lEUt; this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; this.mOutputItems = new ItemStack[] {this.mStorage.get(0).createIgnobleCopy()}; @@ -557,21 +551,6 @@ public class GT_MetaTileEntity_MegaIndustrialApiary } @Override - public int getMaxEfficiency(ItemStack aStack) { - return 10000; - } - - @Override - public int getDamageToComponent(ItemStack aStack) { - return 0; - } - - @Override - public boolean explodesOnComponentBreak(ItemStack aStack) { - return false; - } - - @Override public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { return new GT_MetaTileEntity_MegaIndustrialApiary(this.mName); } @@ -615,21 +594,14 @@ public class GT_MetaTileEntity_MegaIndustrialApiary } @Override - public boolean useModularUI() { - return true; - } - - private final Function<Widget, Boolean> isFixed = widget -> getIdealStatus() == getRepairStatus() && mMachine; - - @Override public void HandleCustomPacket(CustomTileEntityPacket customdata) { mMaxSlots = customdata.getDataInt(); } - private static final Function<Integer, IDrawable[]> toggleButtonBackgroundGetter = val -> { - if (val == 0) return new IDrawable[] {GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_CROSS}; - else return new IDrawable[] {GT_UITextures.BUTTON_STANDARD, GT_UITextures.OVERLAY_BUTTON_CHECKMARK}; - }; + @Override + public boolean useModularUI() { + return true; + } @Override public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) { |