aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2023-02-20 22:57:24 +0100
committerGitHub <noreply@github.com>2023-02-20 22:57:24 +0100
commitf95c6c6b2282bd3ef4cc39489c898aba0c9d327c (patch)
tree56dc7d4986ee5f75a295938505af15ee6333588f /src/main/java
parent1a975f49bde835fb1481d84514e0681c3e49f900 (diff)
parentae1496af0106b4b63db93d8571ae3edcfa602e6e (diff)
downloadGT5-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')
-rw-r--r--src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java4
-rw-r--r--src/main/java/com/github/technus/tectech/loader/NetworkDispatcher.java7
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/enderStorage/EnderLinkCoverMessage.java136
-rw-r--r--src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_EnderFluidLink.java106
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java164
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