aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTec <daniel112092@gmail.com>2020-08-24 20:16:11 +0200
committerTec <daniel112092@gmail.com>2020-08-24 20:16:11 +0200
commit4dcc2865086950ac8397206d47342d3613d14ae2 (patch)
tree6e29c331f3bc43fc0b56b234c49b30e340f7d228
parent47ab2b7b988c95518b862059ef0c0d8b4c71c5d7 (diff)
downloadGT5-Unofficial-4dcc2865086950ac8397206d47342d3613d14ae2.tar.gz
GT5-Unofficial-4dcc2865086950ac8397206d47342d3613d14ae2.tar.bz2
GT5-Unofficial-4dcc2865086950ac8397206d47342d3613d14ae2.zip
Add block with any meta structure utility
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java62
1 files changed, 55 insertions, 7 deletions
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 1b89b80036..a02e87308d 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
@@ -23,6 +23,7 @@ import java.util.function.Function;
import java.util.function.Supplier;
import static com.github.technus.tectech.thing.casing.TT_Container_Casings.sHintCasingsTT;
+import static java.lang.Integer.MIN_VALUE;
public class StructureUtility {
private static final String NICE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz=|!@#$%&()[]{};:<>/?_,.*^'`";
@@ -197,7 +198,7 @@ public class StructureUtility {
@Override
public boolean check(T t, World world, int x, int y, int z) {
Block worldBlock = world.getBlock(x, y, z);
- return blocsMap.getOrDefault(worldBlock, -1) == worldBlock.getDamageValue(world, x, y, z);
+ return blocsMap.getOrDefault(worldBlock, MIN_VALUE) == worldBlock.getDamageValue(world, x, y, z);
}
@Override
@@ -289,7 +290,7 @@ public class StructureUtility {
@Override
public boolean check(T t, World world, int x, int y, int z) {
Block worldBlock = world.getBlock(x, y, z);
- return blocsMap.getOrDefault(worldBlock, -1) == worldBlock.getDamageValue(world, x, y, z);
+ return blocsMap.getOrDefault(worldBlock, MIN_VALUE) == worldBlock.getDamageValue(world, x, y, z);
}
@Override
@@ -309,7 +310,7 @@ public class StructureUtility {
@Override
public boolean check(T t, World world, int x, int y, int z) {
Block worldBlock = world.getBlock(x, y, z);
- return blocsMap.getOrDefault(worldBlock, -1) == worldBlock.getDamageValue(world, x, y, z);
+ return blocsMap.getOrDefault(worldBlock, MIN_VALUE) == worldBlock.getDamageValue(world, x, y, z);
}
@Override
@@ -391,7 +392,6 @@ public class StructureUtility {
@Override
public boolean check(T t, World world, int x, int y, int z) {
Block worldBlock = world.getBlock(x, y, z);
- if (meta == -1) return block == worldBlock;
return block == worldBlock && meta == worldBlock.getDamageValue(world, x, y, z);
}
@@ -412,7 +412,6 @@ public class StructureUtility {
@Override
public boolean check(T t, World world, int x, int y, int z) {
Block worldBlock = world.getBlock(x, y, z);
- if (meta == -1) return block == worldBlock;
return block == worldBlock && meta == worldBlock.getDamageValue(world, x, y, z);
}
@@ -431,12 +430,61 @@ public class StructureUtility {
}
}
+ public static <T> IStructureElement<T> ofBlockAnyMeta(Block block, Block defaultBlock, int defaultMeta) {
+ if (block == null || defaultBlock == null) {
+ throw new IllegalArgumentException();
+ }
+ if(block instanceof ICustomBlockSetting){
+ return new IStructureElement<T>() {
+ @Override
+ public boolean check(T t, World world, int x, int y, int z) {
+ return block == world.getBlock(x, y, z);
+ }
+
+ @Override
+ public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
+ ((ICustomBlockSetting) defaultBlock).setBlock(world, x, y, z, defaultMeta);
+ return true;
+ }
+
+ @Override
+ public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
+ TecTech.proxy.hint_particle(world, x, y, z, defaultBlock, defaultMeta);
+ return true;
+ }
+ };
+ } else {
+ return new IStructureElement<T>() {
+ @Override
+ public boolean check(T t, World world, int x, int y, int z) {
+ return block == world.getBlock(x, y, z);
+ }
+
+ @Override
+ public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
+ world.setBlock(x, y, z, defaultBlock, defaultMeta, 2);
+ return true;
+ }
+
+ @Override
+ public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
+ TecTech.proxy.hint_particle(world, x, y, z, defaultBlock, defaultMeta);
+ return true;
+ }
+ };
+ }
+ }
+
public static <T> IStructureElement<T> ofBlock(Block block, int meta) {
return ofBlock(block, meta, block, meta);
}
- public static <T> IStructureElement<T> ofBlock(Block block) {
- return ofBlock(block, -1, block, 0);
+ public static <T> IStructureElement<T> ofBlockAnyMeta(Block block) {
+ return ofBlockAnyMeta(block, block, 0);
+ }
+
+ public static <T> IStructureElement<T> ofBlockAnyMeta(Block block,int defaultMeta) {
+ return ofBlockAnyMeta(block, block, defaultMeta);
}
//endregion