diff options
| author | Martin Robertz <dream-master@gmx.net> | 2023-02-20 22:57:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-20 22:57:24 +0100 |
| commit | f95c6c6b2282bd3ef4cc39489c898aba0c9d327c (patch) | |
| tree | 56dc7d4986ee5f75a295938505af15ee6333588f /src/main/java | |
| parent | 1a975f49bde835fb1481d84514e0681c3e49f900 (diff) | |
| parent | ae1496af0106b4b63db93d8571ae3edcfa602e6e (diff) | |
| download | GT5-Unofficial-f95c6c6b2282bd3ef4cc39489c898aba0c9d327c.tar.gz GT5-Unofficial-f95c6c6b2282bd3ef4cc39489c898aba0c9d327c.tar.bz2 GT5-Unofficial-f95c6c6b2282bd3ef4cc39489c898aba0c9d327c.zip | |
Merge pull request #165 from GTNewHorizons/master
merge master
Diffstat (limited to 'src/main/java')
5 files changed, 73 insertions, 344 deletions
diff --git a/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java b/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java index 6db446aaa1..c368df041f 100644 --- a/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java +++ b/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java @@ -5335,7 +5335,9 @@ public class DreamCraftRecipeLoader { ? FluidRegistry.getFluid("molten.mutatedlivingsolder") : FluidRegistry.getFluid("molten.solderingalloy"); - ItemStack largeShirabonPlate = TGregUtils.newItemStack(Materials.get("Shirabon"), PartTypes.LargePlate, 1); + ItemStack largeShirabonPlate = Loader.isModLoaded("TGregworks") + ? TGregUtils.newItemStack(Materials.get("Shirabon"), PartTypes.LargePlate, 1) + : GT_OreDictUnificator.get("plateDenseShirabon", 1); final FluidStack[] specialFluid = new FluidStack[] { Materials.SpaceTime.getMolten(1_440), Materials.SpaceTime.getMolten(1_440), Materials.SpaceTime.getMolten(1_440), diff --git a/src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java b/src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java index 105452f3d2..1f53928360 100644 --- a/src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java +++ b/src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java @@ -4,7 +4,6 @@ import static com.github.technus.tectech.Reference.MODID; import com.github.technus.tectech.mechanics.data.ChunkDataMessage; import com.github.technus.tectech.mechanics.data.PlayerDataMessage; -import com.github.technus.tectech.mechanics.enderStorage.EnderLinkCoverMessage; import com.github.technus.tectech.mechanics.pipe.PipeActivityMessage; import com.github.technus.tectech.mechanics.spark.RendererMessage; @@ -30,11 +29,5 @@ public class NetworkDispatcher extends eu.usrv.yamcore.network.PacketDispatcher registerMessage(PlayerDataMessage.ClientHandler.class, PlayerDataMessage.PlayerDataData.class); registerMessage(RendererMessage.ClientHandler.class, RendererMessage.RendererData.class); - - registerMessage(EnderLinkCoverMessage.ServerHandler.class, EnderLinkCoverMessage.EnderLinkCoverQuery.class); - registerMessage( - EnderLinkCoverMessage.ServerUpdateHandler.class, - EnderLinkCoverMessage.EnderLinkCoverUpdate.class); - registerMessage(EnderLinkCoverMessage.ClientHandler.class, EnderLinkCoverMessage.EnderLinkCoverData.class); } } diff --git a/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderLinkCoverMessage.java b/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderLinkCoverMessage.java deleted file mode 100644 index e1484d566f..0000000000 --- a/src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderLinkCoverMessage.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.github.technus.tectech.mechanics.enderStorage; - -import static com.github.technus.tectech.mechanics.enderStorage.EnderWorldSavedData.bindEnderLinkTag; -import static com.github.technus.tectech.mechanics.enderStorage.EnderWorldSavedData.getEnderLinkTag; -import static com.github.technus.tectech.thing.cover.GT_Cover_TM_EnderFluidLink.setEnderLinkTag; - -import java.io.*; -import java.util.Arrays; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraftforge.fluids.IFluidHandler; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import eu.usrv.yamcore.network.client.AbstractClientMessageHandler; -import eu.usrv.yamcore.network.server.AbstractServerMessageHandler; -import gregtech.api.metatileentity.BaseMetaTileEntity; -import io.netty.buffer.ByteBuf; - -public class EnderLinkCoverMessage implements IMessage { - - EnderLinkTankWithTag messageData; - - public EnderLinkCoverMessage() {} - - @Override - public void fromBytes(ByteBuf pBuffer) { - try { - // I'd love to know why I need to offset by one byte for this to work - byte[] boop = pBuffer.array(); - boop = Arrays.copyOfRange(boop, 1, boop.length); - InputStream is = new ByteArrayInputStream(boop); - ObjectInputStream ois = new ObjectInputStream(is); - Object data = ois.readObject(); - messageData = (EnderLinkTankWithTag) data; - } catch (Exception ignore) {} - } - - @Override - public void toBytes(ByteBuf pBuffer) { - try { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(baos); - oos.writeObject(messageData); - oos.flush(); - InputStream is = new ByteArrayInputStream(baos.toByteArray()); - pBuffer.writeBytes(is, baos.toByteArray().length); - } catch (Exception ignore) {} - } - - public static class EnderLinkCoverQuery extends EnderLinkCoverMessage { - - public EnderLinkCoverQuery() {} - - public EnderLinkCoverQuery(EnderLinkTag tag, IFluidHandler fluidHandler) { - messageData = new EnderLinkTankWithTag(tag, fluidHandler); - } - } - - public static class EnderLinkCoverUpdate extends EnderLinkCoverMessage { - - public EnderLinkCoverUpdate() {} - - public EnderLinkCoverUpdate(EnderLinkTag tag, IFluidHandler fluidHandler) { - messageData = new EnderLinkTankWithTag(tag, fluidHandler); - } - } - - public static class EnderLinkCoverData extends EnderLinkCoverMessage { - - public EnderLinkCoverData() {} - - public EnderLinkCoverData(EnderLinkTag tag, IFluidHandler fluidHandler) { - messageData = new EnderLinkTankWithTag(tag, fluidHandler); - } - } - - public static class ServerHandler extends AbstractServerMessageHandler<EnderLinkCoverQuery> { - - @Override - public IMessage handleServerMessage(EntityPlayer pPlayer, EnderLinkCoverQuery pMessage, MessageContext pCtx) { - IMessage reply = null; - if (pMessage.messageData != null) { - reply = new EnderLinkCoverData( - getEnderLinkTag(pMessage.messageData.getFluidHandler()), - pMessage.messageData.getFluidHandler()); - } - return reply; - } - } - - public static class ServerUpdateHandler extends AbstractServerMessageHandler<EnderLinkCoverUpdate> { - - @Override - public IMessage handleServerMessage(EntityPlayer pPlayer, EnderLinkCoverUpdate pMessage, MessageContext pCtx) { - if (pMessage.messageData != null) { - EnderLinkTag tag = pMessage.messageData.getTag(); - IFluidHandler handler = pMessage.messageData.getFluidHandler(); - if (tag.getUUID() == null) { - bindEnderLinkTag(handler, tag); - } else if (handler instanceof BaseMetaTileEntity) { - BaseMetaTileEntity baseTile = (BaseMetaTileEntity) handler; - if (tag.getUUID().equals(baseTile.getOwnerUuid())) { - bindEnderLinkTag(handler, tag); - } - } - } - return null; - } - } - - public static class ClientHandler extends AbstractClientMessageHandler<EnderLinkCoverData> { - - @Override - public IMessage handleClientMessage(EntityPlayer pPlayer, EnderLinkCoverData pMessage, MessageContext pCtx) { - if (pMessage.messageData != null) { - setEnderLinkTag(pMessage.messageData.getTag()); - } - return null; - } - } - - private static class EnderLinkTankWithTag extends EnderLinkTank { - - private final EnderLinkTag tag; - - public EnderLinkTankWithTag(EnderLinkTag tag, IFluidHandler fluidHandler) { - super(fluidHandler); - this.tag = tag; - } - - public EnderLinkTag getTag() { - return tag; - } - } -} diff --git a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java index 53500c683e..8baabd7683 100644 --- a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java +++ b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java @@ -11,9 +11,8 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidHandler; -import com.github.technus.tectech.loader.NetworkDispatcher; -import com.github.technus.tectech.mechanics.enderStorage.EnderLinkCoverMessage; import com.github.technus.tectech.mechanics.enderStorage.EnderLinkTag; +import com.github.technus.tectech.mechanics.enderStorage.EnderWorldSavedData; import com.gtnewhorizons.modularui.api.math.Alignment; import com.gtnewhorizons.modularui.api.math.Color; import com.gtnewhorizons.modularui.api.screen.ModularWindow; @@ -24,6 +23,7 @@ import eu.usrv.yamcore.auxiliary.PlayerChatHelper; import gregtech.api.gui.modularui.GT_CoverUIBuildContext; import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.util.GT_CoverBehavior; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; @@ -35,18 +35,9 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior { private static final int L_PER_TICK = 8000; private static final int IMPORT_EXPORT_MASK = 0b0001; private static final int PUBLIC_PRIVATE_MASK = 0b0010; - private static EnderLinkTag tag = new EnderLinkTag("", null); // Client-Sided public GT_Cover_TM_EnderFluidLink() {} - public static void setEnderLinkTag(EnderLinkTag inputTag) { - if (inputTag != null) { - tag = inputTag; - // Hacky Way to update the gui - GUI_INSTANCE.resetTextField(); - } - } - private void transferFluid(IFluidHandler source, byte sSide, IFluidHandler target, byte tSide, int amount) { FluidStack fluidStack = source.drain(ForgeDirection.getOrientation(sSide), amount, false); @@ -116,8 +107,6 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior { // region GUI - private static EnderFluidLinkUIFactory GUI_INSTANCE; - @Override public boolean hasCoverGUI() { return true; @@ -148,8 +137,6 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior { private static final int IMPORT_BUTTON_ID = 2; private static final int EXPORT_BUTTON_ID = 3; - private TextFieldWidget frequencyField; - public EnderFluidLinkUIFactory(GT_CoverUIBuildContext buildContext) { super(buildContext); } @@ -157,31 +144,29 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior { @SuppressWarnings("PointlessArithmeticExpression") @Override protected void addUIWidgets(ModularWindow.Builder builder) { - NetworkDispatcher.INSTANCE.sendToServer( - new EnderLinkCoverMessage.EnderLinkCoverQuery(tag, (IFluidHandler) getUIBuildContext().getTile())); - GUI_INSTANCE = this; - frequencyField = new TextFieldWidget() { - - @Override - public void onRemoveFocus() { - super.onRemoveFocus(); - try { - String string = getText(); - tag = new EnderLinkTag(string, tag.getUUID()); - NetworkDispatcher.INSTANCE.sendToServer( - new EnderLinkCoverMessage.EnderLinkCoverUpdate( - tag, - (IFluidHandler) getUIBuildContext().getTile())); - } catch (NumberFormatException ignored) {} - resetTextField(); + TextFieldWidget frequencyField = new TextFieldWidget(); + builder.widget(frequencyField.setGetter(() -> { + ICoverable te = getUIBuildContext().getTile(); + if (!frequencyField.isClient() && te instanceof IFluidHandler) { + return EnderWorldSavedData.getEnderLinkTag((IFluidHandler) te).getFrequency(); } - }; - - builder.widget( - frequencyField.setTextColor(Color.WHITE.dark(1)).setTextAlignment(Alignment.CenterLeft) - .setFocusOnGuiOpen(true) - .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2)) - .setPos(START_X + SPACE_X * 0, START_Y + SPACE_Y * 0).setSize(SPACE_X * 5 - 8, 12)) + return ""; + }).setSetter(val -> { + ICoverable te = getUIBuildContext().getTile(); + if (!frequencyField.isClient() && te instanceof IFluidHandler) { + UUID uuid; + if (testBit(convert(getCoverData()), PUBLIC_PRIVATE_MASK)) { + uuid = getUUID(); + if (!(te instanceof IGregTechTileEntity)) return; + if (!uuid.equals(((IGregTechTileEntity) te).getOwnerUuid())) return; + } else { + uuid = null; + } + EnderWorldSavedData.bindEnderLinkTag((IFluidHandler) te, new EnderLinkTag(val, uuid)); + } + }).setTextColor(Color.WHITE.dark(1)).setTextAlignment(Alignment.CenterLeft).setFocusOnGuiOpen(true) + .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2)) + .setPos(START_X + SPACE_X * 0, START_Y + SPACE_Y * 0).setSize(SPACE_X * 5 - 8, 12)) .widget( new CoverDataControllerWidget.CoverDataIndexedControllerWidget_ToggleButtons<>( this::getCoverData, @@ -237,59 +222,36 @@ public class GT_Cover_TM_EnderFluidLink extends GT_CoverBehavior { new TextWidget(GT_Utility.trans("229", "Import/Export")) .setDefaultColor(COLOR_TEXT_GRAY.get()) .setPos(START_X + SPACE_X * 2, 4 + START_Y + SPACE_Y * 3)); - - resetTextField(); } private int getNewCoverVariable(int id, int coverVariable) { - int tempCoverVariable = coverVariable; switch (id) { case PUBLIC_BUTTON_ID: case PRIVATE_BUTTON_ID: - tempCoverVariable = toggleBit(tempCoverVariable, PUBLIC_PRIVATE_MASK); - switchPrivatePublic(tempCoverVariable); - break; + return toggleBit(coverVariable, PUBLIC_PRIVATE_MASK); case IMPORT_BUTTON_ID: case EXPORT_BUTTON_ID: - tempCoverVariable = toggleBit(tempCoverVariable, IMPORT_EXPORT_MASK); + return toggleBit(coverVariable, IMPORT_EXPORT_MASK); } - return tempCoverVariable; + return coverVariable; } private boolean getClickable(int id, int coverVariable) { - boolean canBeClicked = false; switch (id) { case PUBLIC_BUTTON_ID: - canBeClicked = testBit(coverVariable, PUBLIC_PRIVATE_MASK); - break; + return testBit(coverVariable, PUBLIC_PRIVATE_MASK); case PRIVATE_BUTTON_ID: - canBeClicked = !testBit(coverVariable, PUBLIC_PRIVATE_MASK); - break; + return !testBit(coverVariable, PUBLIC_PRIVATE_MASK); case IMPORT_BUTTON_ID: - canBeClicked = testBit(coverVariable, IMPORT_EXPORT_MASK); - break; + return testBit(coverVariable, IMPORT_EXPORT_MASK); case EXPORT_BUTTON_ID: - canBeClicked = !testBit(coverVariable, IMPORT_EXPORT_MASK); + return !testBit(coverVariable, IMPORT_EXPORT_MASK); } - return canBeClicked; - } - - private void resetTextField() { - frequencyField.setText(tag.getFrequency()); + return false; } - private void switchPrivatePublic(int coverVar) { - UUID ownerUUID; - if (testBit(coverVar, PUBLIC_PRIVATE_MASK)) { - ownerUUID = getUIBuildContext().getPlayer().getUniqueID(); - } else { - ownerUUID = null; - } - EnderLinkTag newTag = new EnderLinkTag(tag.getFrequency(), ownerUUID); - NetworkDispatcher.INSTANCE.sendToServer( - new EnderLinkCoverMessage.EnderLinkCoverUpdate( - newTag, - (IFluidHandler) getUIBuildContext().getTile())); + private UUID getUUID() { + return getUIBuildContext().getPlayer().getUniqueID(); } } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java index f3b6ec754f..af9f5342f8 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java @@ -18,13 +18,10 @@ import java.util.List; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; @@ -42,12 +39,7 @@ import com.github.technus.tectech.util.TT_Utility; import com.google.common.collect.Iterables; import com.gtnewhorizon.structurelib.StructureLibAPI; import com.gtnewhorizon.structurelib.alignment.IAlignment; -import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits; import com.gtnewhorizon.structurelib.alignment.IAlignmentProvider; -import com.gtnewhorizon.structurelib.alignment.enumerable.ExtendedFacing; -import com.gtnewhorizon.structurelib.alignment.enumerable.Flip; -import com.gtnewhorizon.structurelib.alignment.enumerable.Rotation; -import com.gtnewhorizon.structurelib.structure.IItemSource; import com.gtnewhorizon.structurelib.structure.IStructureDefinition; import com.gtnewhorizon.structurelib.structure.IStructureElement; import com.gtnewhorizon.structurelib.util.Vec3Impl; @@ -62,7 +54,6 @@ import com.gtnewhorizons.modularui.api.widget.Widget; import com.gtnewhorizons.modularui.common.widget.*; import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget; -import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.Textures; @@ -81,7 +72,8 @@ import gregtech.common.GT_Pollution; /** * Created by danie_000 on 27.10.2016. */ -public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEntity_TooltipMultiBlockBase +public abstract class GT_MetaTileEntity_MultiblockBase_EM + extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<GT_MetaTileEntity_MultiblockBase_EM> implements IAlignment, IBindPlayerInventoryUI { // region Client side variables (static - one per class) @@ -182,9 +174,9 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt // just some info - private so hidden private boolean explodedThisTick = false; - // front rotation val - private IAlignmentLimits alignmentLimits = IAlignmentLimits.UNLIMITED; - private ExtendedFacing extendedFacing = ExtendedFacing.DEFAULT; + /** Flag if the new long power variable should be used */ + protected boolean useLongPower = false; + // endregion protected GT_MetaTileEntity_MultiblockBase_EM(int aID, String aName, String aNameRegional) { @@ -202,65 +194,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt } // region SUPER STRUCT - @Override - public IAlignmentLimits getAlignmentLimits() { - return alignmentLimits; - } - - @Override - public ExtendedFacing getExtendedFacing() { - return extendedFacing; - } - - @Override - public void setExtendedFacing(ExtendedFacing newExtendedFacing) { - if (extendedFacing != newExtendedFacing) { - if (mMachine) stopMachine(); - extendedFacing = newExtendedFacing; - final IGregTechTileEntity base = getBaseMetaTileEntity(); - mMachine = false; - mUpdated = false; - mUpdate = 100; - if (getBaseMetaTileEntity().isServerSide()) { - StructureLibAPI.sendAlignment( - (IAlignmentProvider) base, - new NetworkRegistry.TargetPoint( - base.getWorld().provider.dimensionId, - base.getXCoord(), - base.getYCoord(), - base.getZCoord(), - 512)); - } else { - base.issueTextureUpdate(); - } - } - } - - @Override - public boolean onWrenchRightClick(byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY, - float aZ) { - if (aWrenchingSide != getBaseMetaTileEntity().getFrontFacing()) - return super.onWrenchRightClick(aSide, aWrenchingSide, aPlayer, aX, aY, aZ); - if (aPlayer.isSneaking()) { - // we won't be allowing horizontal flips, as it can be perfectly emulated by rotating twice and flipping - // horizontally - // allowing an extra round of flip make it hard to draw meaningful flip markers in GT_Proxy#drawGrid - toolSetFlip(getFlip().isHorizontallyFlipped() ? Flip.NONE : Flip.HORIZONTAL); - } else { - toolSetRotation(null); - } - return true; - } - - @Override - public boolean isFacingValid(byte aFacing) { - return canSetToDirectionAny(ForgeDirection.getOrientation(aFacing)); - } - - @Override - public void onFacingChange() { - toolSetDirection(ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing())); - } /** * Gets structure @@ -274,6 +207,11 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt return (IStructureDefinition<GT_MetaTileEntity_MultiblockBase_EM>) getStructure_EM(); } + @Override + public IStructureDefinition<GT_MetaTileEntity_MultiblockBase_EM> getStructureDefinition() { + return getStructure_EM_Internal(); + } + public final boolean structureCheck_EM(String piece, int horizontalOffset, int verticalOffset, int depthOffset) { IGregTechTileEntity baseMetaTileEntity = getBaseMetaTileEntity(); return getStructure_EM_Internal().check( @@ -307,44 +245,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt depthOffset, hintsOnly); } - - protected final int survivialBuildPiece(String piece, ItemStack trigger, int horizontalOffset, int verticalOffset, - int depthOffset, int elementsBudget, IItemSource source, EntityPlayerMP actor, boolean check) { - final IGregTechTileEntity tTile = getBaseMetaTileEntity(); - return getStructure_EM_Internal().survivalBuild( - this, - trigger, - piece, - tTile.getWorld(), - getExtendedFacing(), - tTile.getXCoord(), - tTile.getYCoord(), - tTile.getZCoord(), - horizontalOffset, - verticalOffset, - depthOffset, - elementsBudget, - source, - actor, - check); - } - - protected final int survivialBuildPiece(String piece, ItemStack trigger, int horizontalOffset, int verticalOffset, - int depthOffset, int elementsBudget, IItemSource source, EntityPlayerMP actor, boolean check, - boolean checkIfPlaced) { - int built = survivialBuildPiece( - piece, - trigger, - horizontalOffset, - verticalOffset, - depthOffset, - elementsBudget, - source, - actor, - check); - if (checkIfPlaced && built > 0) checkStructure(true, getBaseMetaTileEntity()); - return built; - } // endregion // region METHODS TO OVERRIDE - general functionality, recipe check, output @@ -493,8 +393,8 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt + GT_Utility.formatNumbers(maxEnergy) + EnumChatFormatting.RESET + " EU", - (mEUt * eAmpereFlow <= 0 ? "Probably uses: " : "Probably makes: ") + EnumChatFormatting.RED - + GT_Utility.formatNumbers(Math.abs(mEUt)) + (getPowerFlow() * eAmpereFlow <= 0 ? "Probably uses: " : "Probably makes: ") + EnumChatFormatting.RED + + GT_Utility.formatNumbers(Math.abs(getPowerFlow())) + EnumChatFormatting.RESET + " EU/t at " + EnumChatFormatting.RED @@ -767,6 +667,18 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt return result; } + protected long getPowerFlow() { + return useLongPower ? lEUt : mEUt; + } + + protected void setPowerFlow(long lEUt) { + if (useLongPower) { + this.lEUt = lEUt; + } else { + mEUt = (int) Math.min(Integer.MAX_VALUE, lEUt); + } + } + /** * Extra hook on cyclic updates (not really needed for machines smaller than 1 chunk) BUT NEEDED WHEN - machine * blocks are not touching each other or they don't implement IMachineBlockUpdateable (ex. air,stone,weird TE's) @@ -828,8 +740,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt aNBT.setByte("eCertainM", eCertainMode); aNBT.setByte("eCertainS", eCertainStatus); aNBT.setByte("eMinRepair", minRepairStatus); - aNBT.setByte("eRotation", (byte) extendedFacing.getRotation().getIndex()); - aNBT.setByte("eFlip", (byte) extendedFacing.getFlip().getIndex()); aNBT.setBoolean("eParam", eParameters); aNBT.setBoolean("ePass", ePowerPass); aNBT.setBoolean("ePowerPassCover", ePowerPassCover); @@ -919,10 +829,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt eCertainMode = aNBT.getByte("eCertainM"); eCertainStatus = aNBT.getByte("eCertainS"); minRepairStatus = aNBT.hasKey("eMinRepair") ? aNBT.getByte("eMinRepair") : 3; - extendedFacing = ExtendedFacing.of( - ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()), - Rotation.byIndex(aNBT.getByte("eRotation")), - Flip.byIndex(aNBT.getByte("eFlip"))); eParameters = !aNBT.hasKey("eParam") || aNBT.getBoolean("eParam"); ePowerPass = aNBT.getBoolean("ePass"); ePowerPassCover = aNBT.getBoolean("ePowerPassCover"); @@ -1807,16 +1713,16 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt // new method public boolean energyFlowOnRunningTick_EM(ItemStack aStack, boolean allowProduction) { - long euFlow = mEUt * eAmpereFlow; // quick scope sign + long euFlow = getPowerFlow() * eAmpereFlow; // quick scope sign if (allowProduction && euFlow > 0) { - addEnergyOutput_EM((long) mEUt * (long) mEfficiency / getMaxEfficiency(aStack), eAmpereFlow); + addEnergyOutput_EM(getPowerFlow() * (long) mEfficiency / getMaxEfficiency(aStack), eAmpereFlow); } else if (euFlow < 0) { if (POWERLESS_MODE) { return true; } if (!drainEnergyInput_EM( - mEUt, - (long) mEUt * getMaxEfficiency(aStack) / Math.max(1000L, mEfficiency), + getPowerFlow(), + getPowerFlow() * getMaxEfficiency(aStack) / Math.max(1000L, mEfficiency), eAmpereFlow)) { criticalStopMachine(); return false; @@ -1826,14 +1732,16 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt } public boolean energyFlowOnRunningTick(ItemStack aStack, boolean allowProduction) { - long euFlow = mEUt * eAmpereFlow; // quick scope sign + long euFlow = getPowerFlow() * eAmpereFlow; // quick scope sign if (allowProduction && euFlow > 0) { - addEnergyOutput_EM((long) mEUt * (long) mEfficiency / getMaxEfficiency(aStack), eAmpereFlow); + addEnergyOutput_EM(getPowerFlow() * (long) mEfficiency / getMaxEfficiency(aStack), eAmpereFlow); } else if (euFlow < 0) { if (POWERLESS_MODE) { return true; } - if (!drainEnergyInput((long) mEUt * getMaxEfficiency(aStack) / Math.max(1000L, mEfficiency), eAmpereFlow)) { + if (!drainEnergyInput( + getPowerFlow() * getMaxEfficiency(aStack) / Math.max(1000L, mEfficiency), + eAmpereFlow)) { criticalStopMachine(); return false; } @@ -1998,7 +1906,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt // new method public final boolean overclockAndPutValuesIn_EM(long EU, int time) { // TODO revise if (EU == 0L) { - mEUt = 0; + setPowerFlow(0); mMaxProgresstime = time; return true; } @@ -2011,11 +1919,11 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt // power } if (EU > Integer.MAX_VALUE || EU < Integer.MIN_VALUE) { - mEUt = Integer.MAX_VALUE - 1; + setPowerFlow(Integer.MAX_VALUE - 1); mMaxProgresstime = Integer.MAX_VALUE - 1; return false; } - mEUt = (int) EU; + setPowerFlow(EU); mMaxProgresstime = time == 0 ? 1 : time; return true; } // Use in EM check recipe return statement if you want overclocking |
