aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/kubatech/api/Variables.java3
-rw-r--r--src/main/java/kubatech/api/helpers/GTHelper.java40
-rw-r--r--src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java141
-rw-r--r--src/main/java/kubatech/loaders/MobRecipeLoader.java4
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java72
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java50
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) {