aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignment.java32
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignmentProvider.java5
-rw-r--r--src/main/java/com/github/technus/tectech/thing/item/FrontRotationTriggerItem.java15
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java3
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/render/TT_RenderedExtendedFacingTexture.java8
5 files changed, 43 insertions, 20 deletions
diff --git a/src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignment.java b/src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignment.java
index d7b48f8865..a2a6301070 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignment.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignment.java
@@ -8,12 +8,25 @@ import net.minecraftforge.common.util.ForgeDirection;
import java.util.Arrays;
-public interface IAlignment extends IAlignmentLimits {
+public interface IAlignment extends IAlignmentLimits,IAlignmentProvider {
int DIRECTIONS_COUNT= Direction.VALUES.length;
int ROTATIONS_COUNT= Rotation.VALUES.length;
int FLIPS_COUNT= Flip.VALUES.length;
int STATES_COUNT = ExtendedFacing.VALUES.length;
+ ExtendedFacing getExtendedFacing();
+
+ void setExtendedFacing(ExtendedFacing alignment);
+
+ IAlignmentLimits getAlignmentLimits();
+
+ void setAlignmentLimits(IAlignmentLimits limits);
+
+ @Override
+ default IAlignment getAlignment(){
+ return this;
+ }
+
static int getAlignmentIndex(ForgeDirection direction, Rotation rotation, Flip flip){
return (direction.ordinal()*ROTATIONS_COUNT+rotation.getIndex())*FLIPS_COUNT+flip.getIndex();
}
@@ -42,14 +55,6 @@ public interface IAlignment extends IAlignmentLimits {
setExtendedFacing(getExtendedFacing().with(flip));
}
- ExtendedFacing getExtendedFacing();
-
- void setExtendedFacing(ExtendedFacing alignment);
-
- IAlignmentLimits getAlignmentLimits();
-
- void setAlignmentLimits(IAlignmentLimits limits);
-
default boolean toolSetDirection(ForgeDirection direction){
if(direction==null || direction==ForgeDirection.UNKNOWN){
for (int i = 0,j=getDirection().ordinal()+1, valuesLength = Direction.VALUES.length; i < valuesLength; i++) {
@@ -75,6 +80,15 @@ public interface IAlignment extends IAlignmentLimits {
return false;
}
+ default boolean canSetToDirectionAny(ForgeDirection direction){
+ for (ExtendedFacing extendedFacing : ExtendedFacing.FOR_FACING.get(direction)) {
+ if(isNewExtendedFacingValid(extendedFacing)){
+ return true;
+ }
+ }
+ return false;
+ }
+
default boolean toolSetRotation(Rotation rotation) {
if(rotation==null){
int flips = Flip.VALUES.length;
diff --git a/src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignmentProvider.java b/src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignmentProvider.java
new file mode 100644
index 0000000000..07dc972aac
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/mechanics/alignment/IAlignmentProvider.java
@@ -0,0 +1,5 @@
+package com.github.technus.tectech.mechanics.alignment;
+
+public interface IAlignmentProvider {
+ IAlignment getAlignment();
+} \ No newline at end of file
diff --git a/src/main/java/com/github/technus/tectech/thing/item/FrontRotationTriggerItem.java b/src/main/java/com/github/technus/tectech/thing/item/FrontRotationTriggerItem.java
index efcfcfb7a3..5edc238a91 100644
--- a/src/main/java/com/github/technus/tectech/thing/item/FrontRotationTriggerItem.java
+++ b/src/main/java/com/github/technus/tectech/thing/item/FrontRotationTriggerItem.java
@@ -1,6 +1,7 @@
package com.github.technus.tectech.thing.item;
import com.github.technus.tectech.mechanics.alignment.IAlignment;
+import com.github.technus.tectech.mechanics.alignment.IAlignmentProvider;
import com.github.technus.tectech.util.CommonValues;
import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -42,19 +43,21 @@ public final class FrontRotationTriggerItem extends Item {
if (aPlayer instanceof EntityPlayerMP) {
if (tTileEntity instanceof IGregTechTileEntity) {
IMetaTileEntity metaTE = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity();
- if (metaTE instanceof IAlignment) {
+ if (metaTE instanceof IAlignmentProvider) {
+ IAlignment alignment = ((IAlignmentProvider) metaTE).getAlignment();
if(aPlayer.isSneaking()){
- ((IAlignment) metaTE).toolSetFlip(null);
+ alignment.toolSetFlip(null);
}else {
- ((IAlignment) metaTE).toolSetRotation(null);
+ alignment.toolSetRotation(null);
}
return true;
}
- } else if (tTileEntity instanceof IAlignment) {
+ } else if (tTileEntity instanceof IAlignmentProvider) {
+ IAlignment alignment = ((IAlignmentProvider) tTileEntity).getAlignment();
if(aPlayer.isSneaking()){
- ((IAlignment) tTileEntity).toolSetFlip(null);
+ alignment.toolSetFlip(null);
}else {
- ((IAlignment) tTileEntity).toolSetRotation(null);
+ alignment.toolSetRotation(null);
}
return true;
}
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 52bdd3574f..50e2aa575b 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
@@ -183,8 +183,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
@Override
public boolean isFacingValid(byte aFacing) {
- return getAlignmentLimits()
- .isNewExtendedFacingValid(getExtendedFacing().with(ForgeDirection.getOrientation(aFacing)));
+ return canSetToDirectionAny(ForgeDirection.getOrientation(aFacing));
}
@Override
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/render/TT_RenderedExtendedFacingTexture.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/render/TT_RenderedExtendedFacingTexture.java
index 4ecea706cc..44fa12ebb8 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/render/TT_RenderedExtendedFacingTexture.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/render/TT_RenderedExtendedFacingTexture.java
@@ -1,6 +1,6 @@
package com.github.technus.tectech.thing.metaTileEntity.multi.base.render;
-import com.github.technus.tectech.mechanics.alignment.IAlignment;
+import com.github.technus.tectech.mechanics.alignment.IAlignmentProvider;
import com.github.technus.tectech.mechanics.alignment.enumerable.ExtendedFacing;
import gregtech.api.enums.Dyes;
import gregtech.api.interfaces.IColorModulationContainer;
@@ -881,11 +881,13 @@ public class TT_RenderedExtendedFacingTexture implements ITexture,IColorModulati
TileEntity te = w.getTileEntity(x, y, z);
if (te instanceof IGregTechTileEntity) {
IMetaTileEntity meta = ((IGregTechTileEntity) te).getMetaTileEntity();
- if (meta instanceof IAlignment) {
- return ((IAlignment) meta).getExtendedFacing();
+ if (meta instanceof IAlignmentProvider) {
+ return ((IAlignmentProvider) meta).getAlignment().getExtendedFacing();
}else{
return ExtendedFacing.of(ForgeDirection.getOrientation(meta.getBaseMetaTileEntity().getFrontFacing()));
}
+ } else if (te instanceof IAlignmentProvider) {
+ return ((IAlignmentProvider) te).getAlignment().getExtendedFacing();
}
}
return ExtendedFacing.DEFAULT;