diff options
author | Tec <daniel112092@gmail.com> | 2020-08-24 20:16:11 +0200 |
---|---|---|
committer | Tec <daniel112092@gmail.com> | 2020-08-24 20:16:11 +0200 |
commit | 4dcc2865086950ac8397206d47342d3613d14ae2 (patch) | |
tree | 6e29c331f3bc43fc0b56b234c49b30e340f7d228 | |
parent | 47ab2b7b988c95518b862059ef0c0d8b4c71c5d7 (diff) | |
download | GT5-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.java | 62 |
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 |