aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTec <daniel112092@gmail.com>2020-04-26 09:10:57 +0200
committerTec <daniel112092@gmail.com>2020-04-26 09:10:57 +0200
commitffcba9cfeada309748e3f2ad206b141fc102cb3e (patch)
treec99282ef7b11f9cd156ab87d490047d3bd030447
parentd0cafa5c88cbbff75321e2d781bca79a9057e473 (diff)
downloadGT5-Unofficial-ffcba9cfeada309748e3f2ad206b141fc102cb3e.tar.gz
GT5-Unofficial-ffcba9cfeada309748e3f2ad206b141fc102cb3e.tar.bz2
GT5-Unofficial-ffcba9cfeada309748e3f2ad206b141fc102cb3e.zip
Optimize navigation
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/structure/IStructureDefinition.java44
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElement.java24
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/structure/IStructureNavigate.java26
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java4
4 files changed, 59 insertions, 39 deletions
diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureDefinition.java b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureDefinition.java
index 1152713d5e..97e4fe2bad 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureDefinition.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureDefinition.java
@@ -73,9 +73,14 @@ public interface IStructureDefinition<T> {
return false;
}
- abc[0] =(element.resetA()?basePositionA:abc[0])+element.getStepA();
- abc[1] =(element.resetB()?basePositionA:abc[1])+element.getStepB();
- abc[2] =(element.resetC()?basePositionA:abc[2])+element.getStepC();
+ if(element instanceof IStructureNavigate) {
+ IStructureNavigate<T> navigate=(IStructureNavigate<T>)element;
+ abc[0] = (navigate.resetA() ? basePositionA : abc[0]) + navigate.getStepA();
+ abc[1] = (navigate.resetB() ? basePositionA : abc[1]) + navigate.getStepB();
+ abc[2] = (navigate.resetC() ? basePositionA : abc[2]) + navigate.getStepC();
+ }else {
+ abc[0]+=1;
+ }
}
} else {
for (IStructureElement<T> element : elements) {
@@ -90,9 +95,14 @@ public interface IStructureDefinition<T> {
}
}
- abc[0] =(element.resetA()?basePositionA:abc[0])+element.getStepA();
- abc[1] =(element.resetB()?basePositionA:abc[1])+element.getStepB();
- abc[2] =(element.resetC()?basePositionA:abc[2])+element.getStepC();
+ if(element instanceof IStructureNavigate) {
+ IStructureNavigate<T> navigate=(IStructureNavigate<T>)element;
+ abc[0] = (navigate.resetA() ? basePositionA : abc[0]) + navigate.getStepA();
+ abc[1] = (navigate.resetB() ? basePositionA : abc[1]) + navigate.getStepB();
+ abc[2] = (navigate.resetC() ? basePositionA : abc[2]) + navigate.getStepC();
+ }else {
+ abc[0]+=1;
+ }
}
}
}else {
@@ -107,9 +117,14 @@ public interface IStructureDefinition<T> {
element.spawnHint(object, world, xyz[0], xyz[1], xyz[2]);
}
- abc[0] =(element.resetA()?basePositionA:abc[0])+element.getStepA();
- abc[1] =(element.resetB()?basePositionA:abc[1])+element.getStepB();
- abc[2] =(element.resetC()?basePositionA:abc[2])+element.getStepC();
+ if(element instanceof IStructureNavigate) {
+ IStructureNavigate<T> navigate=(IStructureNavigate<T>)element;
+ abc[0] = (navigate.resetA() ? basePositionA : abc[0]) + navigate.getStepA();
+ abc[1] = (navigate.resetB() ? basePositionA : abc[1]) + navigate.getStepB();
+ abc[2] = (navigate.resetC() ? basePositionA : abc[2]) + navigate.getStepC();
+ }else {
+ abc[0]+=1;
+ }
}
} else {
for (IStructureElement<T> element : elements) {
@@ -122,9 +137,14 @@ public interface IStructureDefinition<T> {
element.placeBlock(object, world, xyz[0], xyz[1], xyz[2]);
}
- abc[0] =(element.resetA()?basePositionA:abc[0])+element.getStepA();
- abc[1] =(element.resetB()?basePositionA:abc[1])+element.getStepB();
- abc[2] =(element.resetC()?basePositionA:abc[2])+element.getStepC();
+ if(element instanceof IStructureNavigate) {
+ IStructureNavigate<T> navigate=(IStructureNavigate<T>)element;
+ abc[0] = (navigate.resetA() ? basePositionA : abc[0]) + navigate.getStepA();
+ abc[1] = (navigate.resetB() ? basePositionA : abc[1]) + navigate.getStepB();
+ abc[2] = (navigate.resetC() ? basePositionA : abc[2]) + navigate.getStepC();
+ }else {
+ abc[0]+=1;
+ }
}
}
}
diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElement.java b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElement.java
index 78997648ab..2ac5c19538 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElement.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElement.java
@@ -15,28 +15,4 @@ public interface IStructureElement<T> {
default boolean placeBlock(T t,World world,int x,int y,int z){
return false;
}
-
- default int getStepA(){
- return 1;
- }
-
- default int getStepB(){
- return 0;
- }
-
- default int getStepC(){
- return 0;
- }
-
- default boolean resetA(){
- return false;
- }
-
- default boolean resetB(){
- return false;
- }
-
- default boolean resetC(){
- return false;
- }
}
diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureNavigate.java b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureNavigate.java
index bba3dc5239..6382f130ee 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureNavigate.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureNavigate.java
@@ -5,7 +5,7 @@ import net.minecraft.world.World;
/**
* Use StructureUtility to instantiate
*/
-public interface IStructureNavigate<T> extends IStructureElement<T> {
+interface IStructureNavigate<T> extends IStructureElement<T> {
@Override
default boolean check(T t, World world, int x, int y, int z){
return true;
@@ -20,4 +20,28 @@ public interface IStructureNavigate<T> extends IStructureElement<T> {
default boolean placeBlock(T t, World world, int x, int y, int z) {
return true;
}
+
+ default int getStepA(){
+ return 1;
+ }
+
+ default int getStepB(){
+ return 0;
+ }
+
+ default int getStepC(){
+ return 0;
+ }
+
+ default boolean resetA(){
+ return false;
+ }
+
+ default boolean resetB(){
+ return false;
+ }
+
+ default boolean resetC(){
+ return false;
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java b/src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java
index f619c7482b..703c68221c 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java
@@ -363,7 +363,7 @@ public class StructureUtility {
}
@SuppressWarnings("unchecked")
- public static <T> IStructureNavigate<T> step(Vec3Impl step){
+ static <T> IStructureNavigate<T> step(Vec3Impl step){
if(step==null || step.get0()<0 || step.get1()<0 || step.get2()<0){
throw new IllegalArgumentException();
}
@@ -378,7 +378,7 @@ public class StructureUtility {
});
}
- public static <T> IStructureNavigate<T> step(int a,int b, int c){
+ static <T> IStructureNavigate<T> step(int a,int b, int c){
return step(new Vec3Impl(a,b,c));
}