From 5d43e5230fe6e184d3f71f11da333086ee78960e Mon Sep 17 00:00:00 2001 From: Tec Date: Thu, 10 Sep 2020 19:06:43 +0200 Subject: Cleanup structure iterator code --- .../mechanics/structure/IStructureDefinition.java | 134 ++------------------- .../structure/StructureIterationType.java | 8 ++ .../mechanics/structure/StructureUtility.java | 130 ++++++++++++++++++++ 3 files changed, 145 insertions(+), 127 deletions(-) create mode 100644 src/main/java/com/github/technus/tectech/mechanics/structure/StructureIterationType.java (limited to 'src/main/java/com') 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 c8488d5cea..de7a98f9bc 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 @@ -1,13 +1,11 @@ package com.github.technus.tectech.mechanics.structure; -import com.github.technus.tectech.TecTech; import com.github.technus.tectech.mechanics.alignment.enumerable.ExtendedFacing; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import java.util.Arrays; - -import static com.github.technus.tectech.loader.TecTechConfig.DEBUG_MODE; +import static com.github.technus.tectech.mechanics.structure.StructureIterationType.*; +import static com.github.technus.tectech.mechanics.structure.StructureUtility.iterate; public interface IStructureDefinition { /** @@ -22,146 +20,28 @@ public interface IStructureDefinition { int basePositionA, int basePositionB, int basePositionC, boolean forceCheckAllBlocks){ return iterate(object, null, getStructureFor(piece), world, extendedFacing, basePositionX, basePositionY, basePositionZ, - basePositionA, basePositionB, basePositionC,false,forceCheckAllBlocks); + basePositionA, basePositionB, basePositionC,forceCheckAllBlocks? CHECK_FULLY:CHECK); } default boolean hints(T object, ItemStack trigger,String piece, World world, ExtendedFacing extendedFacing, int basePositionX, int basePositionY, int basePositionZ, int basePositionA, int basePositionB, int basePositionC) { return iterate(object, trigger, getStructureFor(piece), world, extendedFacing, basePositionX, basePositionY, basePositionZ, - basePositionA, basePositionB, basePositionC,true,null); + basePositionA, basePositionB, basePositionC,SPAWN_HINTS); } default boolean build(T object, ItemStack trigger,String piece, World world, ExtendedFacing extendedFacing, int basePositionX, int basePositionY, int basePositionZ, int basePositionA, int basePositionB, int basePositionC) { return iterate(object, trigger, getStructureFor(piece), world, extendedFacing, basePositionX, basePositionY, basePositionZ, - basePositionA, basePositionB, basePositionC,false,null); + basePositionA, basePositionB, basePositionC,BUILD_TEMPLATE); } default boolean buildOrHints(T object, ItemStack trigger,String piece, World world, ExtendedFacing extendedFacing, int basePositionX, int basePositionY, int basePositionZ, int basePositionA, int basePositionB, int basePositionC, - boolean hintsOnly){ + boolean hints){ return iterate(object, trigger, getStructureFor(piece), world, extendedFacing, basePositionX, basePositionY, basePositionZ, - basePositionA, basePositionB, basePositionC,hintsOnly,null); - } - - static boolean iterate(T object, ItemStack trigger, IStructureElement[] elements, World world, ExtendedFacing extendedFacing, - int basePositionX, int basePositionY, int basePositionZ, - int basePositionA, int basePositionB, int basePositionC, - boolean hintsOnly, Boolean checkBlocksIfNotNullForceCheckAllIfTrue){ - if(world.isRemote ^ hintsOnly){ - return false; - } - - //change base position to base offset - basePositionA=-basePositionA; - basePositionB=-basePositionB; - basePositionC=-basePositionC; - - int[] abc = new int[]{basePositionA,basePositionB,basePositionC}; - int[] xyz = new int[3]; - - if(checkBlocksIfNotNullForceCheckAllIfTrue!=null){ - if(checkBlocksIfNotNullForceCheckAllIfTrue){ - for (IStructureElement element : elements) { - if(element.isNavigating()) { - abc[0] = (element.resetA() ? basePositionA : abc[0]) + element.getStepA(); - abc[1] = (element.resetB() ? basePositionB : abc[1]) + element.getStepB(); - abc[2] = (element.resetC() ? basePositionC : abc[2]) + element.getStepC(); - }else { - extendedFacing.getWorldOffset(abc, xyz); - xyz[0] += basePositionX; - xyz[1] += basePositionY; - xyz[2] += basePositionZ; - - if (world.blockExists(xyz[0], xyz[1], xyz[2])) { - if(!element.check(object, world, xyz[0], xyz[1], xyz[2])){ - if(DEBUG_MODE){ - TecTech.LOGGER.info("Multi ["+basePositionX+", "+basePositionY+", "+basePositionZ+"] failed @ "+ - Arrays.toString(xyz)+" "+Arrays.toString(abc)); - } - return false; - } - } else { - if(DEBUG_MODE){ - TecTech.LOGGER.info("Multi ["+basePositionX+", "+basePositionY+", "+basePositionZ+"] !blockExists @ "+ - Arrays.toString(xyz)+" "+Arrays.toString(abc)); - } - return false; - } - abc[0]+=1; - } - } - } else { - for (IStructureElement element : elements) { - if(element.isNavigating()) { - abc[0] = (element.resetA() ? basePositionA : abc[0]) + element.getStepA(); - abc[1] = (element.resetB() ? basePositionB : abc[1]) + element.getStepB(); - abc[2] = (element.resetC() ? basePositionC : abc[2]) + element.getStepC(); - }else { - extendedFacing.getWorldOffset(abc, xyz); - xyz[0] += basePositionX; - xyz[1] += basePositionY; - xyz[2] += basePositionZ; - - if (world.blockExists(xyz[0], xyz[1], xyz[2])) { - if(!element.check(object, world, xyz[0], xyz[1], xyz[2])){ - if(DEBUG_MODE){ - TecTech.LOGGER.info("Multi ["+basePositionX+", "+basePositionY+", "+basePositionZ+"] failed @ "+ - Arrays.toString(xyz)+" "+Arrays.toString(abc)); - } - return false; - } - } else { - if(DEBUG_MODE){ - TecTech.LOGGER.info("Multi ["+basePositionX+", "+basePositionY+", "+basePositionZ+"] !blockExists @ "+ - Arrays.toString(xyz)+" "+Arrays.toString(abc)); - } - } - abc[0]+=1; - } - } - } - }else { - if(hintsOnly) { - for (IStructureElement element : elements) { - if(element.isNavigating()) { - abc[0] = (element.resetA() ? basePositionA : abc[0]) + element.getStepA(); - abc[1] = (element.resetB() ? basePositionB : abc[1]) + element.getStepB(); - abc[2] = (element.resetC() ? basePositionC : abc[2]) + element.getStepC(); - }else { - extendedFacing.getWorldOffset(abc, xyz); - xyz[0] += basePositionX; - xyz[1] += basePositionY; - xyz[2] += basePositionZ; - - element.spawnHint(object, world, xyz[0], xyz[1], xyz[2], trigger); - - abc[0]+=1; - } - } - } else { - for (IStructureElement element : elements) { - if(element.isNavigating()) { - abc[0] = (element.resetA() ? basePositionA : abc[0]) + element.getStepA(); - abc[1] = (element.resetB() ? basePositionB : abc[1]) + element.getStepB(); - abc[2] = (element.resetC() ? basePositionC : abc[2]) + element.getStepC(); - }else { - extendedFacing.getWorldOffset(abc, xyz); - xyz[0] += basePositionX; - xyz[1] += basePositionY; - xyz[2] += basePositionZ; - - if (world.blockExists(xyz[0], xyz[1], xyz[2])) { - element.placeBlock(object, world, xyz[0], xyz[1], xyz[2], trigger); - } - abc[0]+=1; - } - } - } - } - return true; + basePositionA, basePositionB, basePositionC,hints?SPAWN_HINTS:BUILD_TEMPLATE); } } diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/StructureIterationType.java b/src/main/java/com/github/technus/tectech/mechanics/structure/StructureIterationType.java new file mode 100644 index 0000000000..618c07f970 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/StructureIterationType.java @@ -0,0 +1,8 @@ +package com.github.technus.tectech.mechanics.structure; + +public enum StructureIterationType { + SPAWN_HINTS, //only spawn hint particles + BUILD_TEMPLATE, //only builds template + CHECK, //checks the structure skipping all unloaded chunks (for machines that were validated already) + CHECK_FULLY, //checks the structure failing on unloaded chunks (for machines that are not valid currently) +} 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 2f6998f028..131822fa46 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 @@ -22,6 +22,8 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; +import static com.github.technus.tectech.loader.TecTechConfig.DEBUG_MODE; +import static com.github.technus.tectech.mechanics.structure.StructureIterationType.SPAWN_HINTS; import static com.github.technus.tectech.thing.casing.TT_Container_Casings.sHintCasingsTT; import static java.lang.Integer.MIN_VALUE; @@ -1376,6 +1378,134 @@ public class StructureUtility { } } + public static boolean iterate(T object, + ItemStack trigger, + IStructureElement[] elements, + World world, + ExtendedFacing extendedFacing, + int basePositionX, int basePositionY, int basePositionZ, + int basePositionA, int basePositionB, int basePositionC, + StructureIterationType iterationType) { + if (world.isRemote ^ (iterationType == SPAWN_HINTS)) { + return false; + } + + //change base position to base offset + basePositionA = -basePositionA; + basePositionB = -basePositionB; + basePositionC = -basePositionC; + + int[] abc = new int[]{basePositionA, basePositionB, basePositionC}; + int[] xyz = new int[3]; + + switch (iterationType) { + case SPAWN_HINTS: { + for (IStructureElement element : elements) { + if (element.isNavigating()) { + abc[0] = (element.resetA() ? basePositionA : abc[0]) + element.getStepA(); + abc[1] = (element.resetB() ? basePositionB : abc[1]) + element.getStepB(); + abc[2] = (element.resetC() ? basePositionC : abc[2]) + element.getStepC(); + } else { + extendedFacing.getWorldOffset(abc, xyz); + xyz[0] += basePositionX; + xyz[1] += basePositionY; + xyz[2] += basePositionZ; + + element.spawnHint(object, world, xyz[0], xyz[1], xyz[2], trigger); + + abc[0] += 1; + } + } + break; + } + case BUILD_TEMPLATE: { + for (IStructureElement element : elements) { + if (element.isNavigating()) { + abc[0] = (element.resetA() ? basePositionA : abc[0]) + element.getStepA(); + abc[1] = (element.resetB() ? basePositionB : abc[1]) + element.getStepB(); + abc[2] = (element.resetC() ? basePositionC : abc[2]) + element.getStepC(); + } else { + extendedFacing.getWorldOffset(abc, xyz); + xyz[0] += basePositionX; + xyz[1] += basePositionY; + xyz[2] += basePositionZ; + + if (world.blockExists(xyz[0], xyz[1], xyz[2])) { + element.placeBlock(object, world, xyz[0], xyz[1], xyz[2], trigger); + } + abc[0] += 1; + } + } + break; + } + case CHECK: { + for (IStructureElement element : elements) { + if (element.isNavigating()) { + abc[0] = (element.resetA() ? basePositionA : abc[0]) + element.getStepA(); + abc[1] = (element.resetB() ? basePositionB : abc[1]) + element.getStepB(); + abc[2] = (element.resetC() ? basePositionC : abc[2]) + element.getStepC(); + } else { + extendedFacing.getWorldOffset(abc, xyz); + xyz[0] += basePositionX; + xyz[1] += basePositionY; + xyz[2] += basePositionZ; + + if (world.blockExists(xyz[0], xyz[1], xyz[2])) { + if (!element.check(object, world, xyz[0], xyz[1], xyz[2])) { + if (DEBUG_MODE) { + TecTech.LOGGER.info("Multi [" + basePositionX + ", " + basePositionY + ", " + basePositionZ + "] failed @ " + + Arrays.toString(xyz) + " " + Arrays.toString(abc)); + } + return false; + } + } else { + if (DEBUG_MODE) { + TecTech.LOGGER.info("Multi [" + basePositionX + ", " + basePositionY + ", " + basePositionZ + "] !blockExists @ " + + Arrays.toString(xyz) + " " + Arrays.toString(abc)); + } + } + abc[0] += 1; + } + break; + } + } + case CHECK_FULLY: { + for (IStructureElement element : elements) { + if (element.isNavigating()) { + abc[0] = (element.resetA() ? basePositionA : abc[0]) + element.getStepA(); + abc[1] = (element.resetB() ? basePositionB : abc[1]) + element.getStepB(); + abc[2] = (element.resetC() ? basePositionC : abc[2]) + element.getStepC(); + } else { + extendedFacing.getWorldOffset(abc, xyz); + xyz[0] += basePositionX; + xyz[1] += basePositionY; + xyz[2] += basePositionZ; + + if (world.blockExists(xyz[0], xyz[1], xyz[2])) { + if (!element.check(object, world, xyz[0], xyz[1], xyz[2])) { + if (DEBUG_MODE) { + TecTech.LOGGER.info("Multi [" + basePositionX + ", " + basePositionY + ", " + basePositionZ + "] failed @ " + + Arrays.toString(xyz) + " " + Arrays.toString(abc)); + } + return false; + } + } else { + if (DEBUG_MODE) { + TecTech.LOGGER.info("Multi [" + basePositionX + ", " + basePositionY + ", " + basePositionZ + "] !blockExists @ " + + Arrays.toString(xyz) + " " + Arrays.toString(abc)); + } + return false; + } + abc[0] += 1; + } + } + break; + } + default: return false; + } + return true; + } + /** * Transposes shape (swaps B and C axis, can be used to un-transpose transposed shape) * WARNING! Do not use on old api... -- cgit From 62953799f55937348fa49b8de9f3dad11963bd52 Mon Sep 17 00:00:00 2001 From: Tec Date: Mon, 14 Sep 2020 18:52:27 +0200 Subject: Renamge Generic parameter --- .../mechanics/structure/IStructureDefinition.java | 12 +++--- .../mechanics/structure/IStructureElement.java | 8 ++-- .../structure/IStructureElementChain.java | 22 +++++----- .../structure/IStructureElementCheckOnly.java | 6 +-- .../structure/IStructureElementDeferred.java | 2 +- .../structure/IStructureElementNoPlacement.java | 4 +- .../mechanics/structure/IStructureNavigate.java | 8 ++-- .../mechanics/structure/StructureDefinition.java | 50 +++++++++++----------- .../mechanics/structure/adders/IBlockAdder.java | 4 +- .../mechanics/structure/adders/IHatchAdder.java | 6 +-- .../mechanics/structure/adders/ITileAdder.java | 4 +- .../java/com/github/technus/tectech/util/Util.java | 1 - 12 files changed, 63 insertions(+), 64 deletions(-) (limited to 'src/main/java/com') 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 de7a98f9bc..ca9712df04 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 @@ -7,15 +7,15 @@ import net.minecraft.world.World; import static com.github.technus.tectech.mechanics.structure.StructureIterationType.*; import static com.github.technus.tectech.mechanics.structure.StructureUtility.iterate; -public interface IStructureDefinition { +public interface IStructureDefinition { /** * Used internally * @param name same name as for other methods here * @return the array of elements to process */ - IStructureElement[] getStructureFor(String name); + IStructureElement[] getStructureFor(String name); - default boolean check(T object,String piece, World world, ExtendedFacing extendedFacing, + default boolean check(MultiBlock object, String piece, World world, ExtendedFacing extendedFacing, int basePositionX, int basePositionY, int basePositionZ, int basePositionA, int basePositionB, int basePositionC, boolean forceCheckAllBlocks){ @@ -23,21 +23,21 @@ public interface IStructureDefinition { basePositionA, basePositionB, basePositionC,forceCheckAllBlocks? CHECK_FULLY:CHECK); } - default boolean hints(T object, ItemStack trigger,String piece, World world, ExtendedFacing extendedFacing, + default boolean hints(MultiBlock object, ItemStack trigger, String piece, World world, ExtendedFacing extendedFacing, int basePositionX, int basePositionY, int basePositionZ, int basePositionA, int basePositionB, int basePositionC) { return iterate(object, trigger, getStructureFor(piece), world, extendedFacing, basePositionX, basePositionY, basePositionZ, basePositionA, basePositionB, basePositionC,SPAWN_HINTS); } - default boolean build(T object, ItemStack trigger,String piece, World world, ExtendedFacing extendedFacing, + default boolean build(MultiBlock object, ItemStack trigger, String piece, World world, ExtendedFacing extendedFacing, int basePositionX, int basePositionY, int basePositionZ, int basePositionA, int basePositionB, int basePositionC) { return iterate(object, trigger, getStructureFor(piece), world, extendedFacing, basePositionX, basePositionY, basePositionZ, basePositionA, basePositionB, basePositionC,BUILD_TEMPLATE); } - default boolean buildOrHints(T object, ItemStack trigger,String piece, World world, ExtendedFacing extendedFacing, + default boolean buildOrHints(MultiBlock object, ItemStack trigger, String piece, World world, ExtendedFacing extendedFacing, int basePositionX, int basePositionY, int basePositionZ, int basePositionA, int basePositionB, int basePositionC, boolean hints){ 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 f946e71f91..436c7ce203 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 @@ -6,12 +6,12 @@ import net.minecraft.world.World; /** * Use StructureUtility to instantiate */ -public interface IStructureElement { - boolean check(T t,World world,int x,int y,int z); +public interface IStructureElement { + boolean check(MultiBlock multiBlock, World world, int x, int y, int z); - boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger); + boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger); - boolean placeBlock(T t,World world,int x,int y,int z, ItemStack trigger); + boolean placeBlock(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger); default int getStepA(){ return 1; diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementChain.java b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementChain.java index f9593ee1c5..4c7059dd81 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementChain.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementChain.java @@ -6,13 +6,13 @@ import net.minecraft.world.World; /** * Use StructureUtility to instantiate */ -public interface IStructureElementChain extends IStructureElement { - IStructureElement[] fallbacks(); +public interface IStructureElementChain extends IStructureElement { + IStructureElement[] fallbacks(); @Override - default boolean check(T t, World world, int x, int y, int z){ - for (IStructureElement fallback : fallbacks()) { - if (fallback.check(t, world, x, y, z)) { + default boolean check(MultiBlock multiBlock, World world, int x, int y, int z){ + for (IStructureElement fallback : fallbacks()) { + if (fallback.check(multiBlock, world, x, y, z)) { return true; } } @@ -20,9 +20,9 @@ public interface IStructureElementChain extends IStructureElement { } @Override - default boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { - for (IStructureElement fallback : fallbacks()) { - if (fallback.spawnHint(t, world, x, y, z, trigger)) { + default boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { + for (IStructureElement fallback : fallbacks()) { + if (fallback.spawnHint(multiBlock, world, x, y, z, trigger)) { return true; } } @@ -30,9 +30,9 @@ public interface IStructureElementChain extends IStructureElement { } @Override - default boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { - for (IStructureElement fallback : fallbacks()) { - if (fallback.placeBlock(t, world, x, y, z, trigger)) { + default boolean placeBlock(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { + for (IStructureElement fallback : fallbacks()) { + if (fallback.placeBlock(multiBlock, world, x, y, z, trigger)) { return true; } } diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementCheckOnly.java b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementCheckOnly.java index ec15aea53b..c6492a5ed6 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementCheckOnly.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementCheckOnly.java @@ -3,14 +3,14 @@ package com.github.technus.tectech.mechanics.structure; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public interface IStructureElementCheckOnly extends IStructureElement { +public interface IStructureElementCheckOnly extends IStructureElement { @Override - default boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger){ + default boolean placeBlock(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger){ return false; } @Override - default boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger){ + default boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger){ return false; } } diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementDeferred.java b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementDeferred.java index dbb74312a8..c0e39bb2ad 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementDeferred.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementDeferred.java @@ -3,5 +3,5 @@ package com.github.technus.tectech.mechanics.structure; /** * Use StructureUtility to instantiate */ -public interface IStructureElementDeferred extends IStructureElement { +public interface IStructureElementDeferred extends IStructureElement { } diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementNoPlacement.java b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementNoPlacement.java index 47e6060878..12cf2141ae 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementNoPlacement.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/IStructureElementNoPlacement.java @@ -3,9 +3,9 @@ package com.github.technus.tectech.mechanics.structure; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public interface IStructureElementNoPlacement extends IStructureElement { +public interface IStructureElementNoPlacement extends IStructureElement { @Override - default boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger){ + default boolean placeBlock(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger){ 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 d3f4134cea..8c7c837a94 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 @@ -6,19 +6,19 @@ import net.minecraft.world.World; /** * Use StructureUtility to instantiate */ -interface IStructureNavigate extends IStructureElement { +interface IStructureNavigate extends IStructureElement { @Override - default boolean check(T t, World world, int x, int y, int z){ + default boolean check(MultiBlock multiBlock, World world, int x, int y, int z){ return true; } @Override - default boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + default boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { return true; } @Override - default boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + default boolean placeBlock(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { return true; } diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/StructureDefinition.java b/src/main/java/com/github/technus/tectech/mechanics/structure/StructureDefinition.java index 9a1e94d98a..f42cbd35d1 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/StructureDefinition.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/StructureDefinition.java @@ -7,31 +7,31 @@ import java.util.*; import static com.github.technus.tectech.loader.TecTechConfig.DEBUG_MODE; import static com.github.technus.tectech.mechanics.structure.StructureUtility.*; -public class StructureDefinition implements IStructureDefinition { - private final Map> elements; +public class StructureDefinition implements IStructureDefinition { + private final Map> elements; private final Map shapes; - private final Map[]> structures; + private final Map[]> structures; - public static Builder builder() { + public static Builder builder() { return new Builder<>(); } private StructureDefinition( - Map> elements, + Map> elements, Map shapes, - Map[]> structures) { + Map[]> structures) { this.elements =elements; this.shapes=shapes; this.structures = structures; } - public static class Builder { + public static class Builder { private static final char A='\uA000'; private static final char B='\uB000'; private static final char C='\uC000'; private char d ='\uD000'; private final Map navigates; - private final Map> elements; + private final Map> elements; private final Map shapes; private Builder() { @@ -40,7 +40,7 @@ public class StructureDefinition implements IStructureDefinition { shapes = new HashMap<>(); } - public Map> getElements() { + public Map> getElements() { return elements; } @@ -57,7 +57,7 @@ public class StructureDefinition implements IStructureDefinition { * @return */ @Deprecated - public Builder addShapeOldApi(String name, String[][] structurePiece) { + public Builder addShapeOldApi(String name, String[][] structurePiece) { StringBuilder builder = new StringBuilder(); if (structurePiece.length > 0) { for (String[] strings : structurePiece) { @@ -142,7 +142,7 @@ public class StructureDefinition implements IStructureDefinition { * @param structurePiece generated or written struct - DO NOT STORE IT ANYWHERE, or at least set them to null afterwards * @return this builder */ - public Builder addShape(String name, String[][] structurePiece) { + public Builder addShape(String name, String[][] structurePiece) { StringBuilder builder = new StringBuilder(); if (structurePiece.length > 0) { for (String[] strings : structurePiece) { @@ -199,13 +199,13 @@ public class StructureDefinition implements IStructureDefinition { return this; } - public Builder addElement(Character name, IStructureElement structurePiece) { + public Builder addElement(Character name, IStructureElement structurePiece) { elements.putIfAbsent(name, structurePiece); return this; } - public IStructureDefinition build() { - Map[]> structures = compileStructureMap(); + public IStructureDefinition build() { + Map[]> structures = compileStructureMap(); if(DEBUG_MODE){ return new StructureDefinition<>(new HashMap<>(elements), new HashMap<>(shapes), structures); }else { @@ -214,22 +214,22 @@ public class StructureDefinition implements IStructureDefinition { } @SuppressWarnings("unchecked") - private Map[]> compileElementSetMap() { + private Map[]> compileElementSetMap() { Set missing = new HashSet<>(); shapes.values().stream().map(CharSequence::chars).forEach(intStream -> intStream.forEach(c -> { - IStructureElement iStructureElement = elements.get((char) c); + IStructureElement iStructureElement = elements.get((char) c); if (iStructureElement == null) { missing.add(c); } })); if (missing.isEmpty()) { - Map[]> map = new HashMap<>(); + Map[]> map = new HashMap<>(); shapes.forEach((key, value) -> { Set chars=new HashSet<>(); for (char c : value.toCharArray()) { chars.add(c); } - IStructureElement[] compiled = new IStructureElement[chars.size()]; + IStructureElement[] compiled = new IStructureElement[chars.size()]; int i=0; for (Character aChar : chars) { compiled[i++]=elements.get(aChar); @@ -244,18 +244,18 @@ public class StructureDefinition implements IStructureDefinition { } @SuppressWarnings("unchecked") - private Map[]> compileStructureMap() { + private Map[]> compileStructureMap() { Set mising = new HashSet<>(); shapes.values().stream().map(CharSequence::chars).forEach(intStream -> intStream.forEach(c -> { - IStructureElement iStructureElement = elements.get((char) c); + IStructureElement iStructureElement = elements.get((char) c); if (iStructureElement == null) { mising.add(c); } })); if (mising.isEmpty()) { - Map[]> map = new HashMap<>(); + Map[]> map = new HashMap<>(); shapes.forEach((key, value) -> { - IStructureElement[] compiled = new IStructureElement[value.length()]; + IStructureElement[] compiled = new IStructureElement[value.length()]; for (int i = 0; i < value.length(); i++) { compiled[i] = elements.get(value.charAt(i)); } @@ -269,7 +269,7 @@ public class StructureDefinition implements IStructureDefinition { } } - public Map> getElements(){ + public Map> getElements(){ return elements; } @@ -277,12 +277,12 @@ public class StructureDefinition implements IStructureDefinition { return shapes; } - public Map[]> getStructures() { + public Map[]> getStructures() { return structures; } @Override - public IStructureElement[] getStructureFor(String name) { + public IStructureElement[] getStructureFor(String name) { return structures.get(name); } } \ No newline at end of file diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/adders/IBlockAdder.java b/src/main/java/com/github/technus/tectech/mechanics/structure/adders/IBlockAdder.java index 908c4c4aca..9d223ccd52 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/adders/IBlockAdder.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/adders/IBlockAdder.java @@ -3,12 +3,12 @@ package com.github.technus.tectech.mechanics.structure.adders; import net.minecraft.block.Block; -public interface IBlockAdder { +public interface IBlockAdder { /** * Callback on block added, needs to check if block is valid (and add it) * @param block block attempted to add * @param meta meta of block attempted to add * @return is structure still valid */ - boolean apply(T t,Block block, Integer meta); + boolean apply(MultiBlock multiBlock, Block block, Integer meta); } diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/adders/IHatchAdder.java b/src/main/java/com/github/technus/tectech/mechanics/structure/adders/IHatchAdder.java index a47befc2e8..e7bb5fc459 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/adders/IHatchAdder.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/adders/IHatchAdder.java @@ -3,12 +3,12 @@ package com.github.technus.tectech.mechanics.structure.adders; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -public interface IHatchAdder { +public interface IHatchAdder { /** * Callback to add hatch, needs to check if hatch is valid (and add it) * @param iGregTechTileEntity hatch - * @param aShort requested texture index, or null if not... + * @param textureIndex requested texture index, or null if not... * @return managed to add hatch (structure still valid) */ - boolean apply(T t,IGregTechTileEntity iGregTechTileEntity, Short aShort); + boolean apply(MultiBlock multiBlock, IGregTechTileEntity iGregTechTileEntity, Short textureIndex); } diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/adders/ITileAdder.java b/src/main/java/com/github/technus/tectech/mechanics/structure/adders/ITileAdder.java index cc3c7dbb7a..72d08751b5 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/adders/ITileAdder.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/adders/ITileAdder.java @@ -2,11 +2,11 @@ package com.github.technus.tectech.mechanics.structure.adders; import net.minecraft.tileentity.TileEntity; -public interface ITileAdder { +public interface ITileAdder { /** * Callback to add hatch, needs to check if tile is valid (and add it) * @param tileEntity tile * @return managed to add hatch (structure still valid) */ - boolean apply(T t,TileEntity tileEntity); + boolean apply(MultiBlock multiBlock, TileEntity tileEntity); } diff --git a/src/main/java/com/github/technus/tectech/util/Util.java b/src/main/java/com/github/technus/tectech/util/Util.java index 1843770e3a..8c693620b6 100644 --- a/src/main/java/com/github/technus/tectech/util/Util.java +++ b/src/main/java/com/github/technus/tectech/util/Util.java @@ -40,7 +40,6 @@ public final class Util { private Util() { } - @SuppressWarnings("ComparatorMethodParameterNotUsed") public static > SortedSet> entriesSortedByValues(Map map) { SortedSet> sortedEntries = new TreeSet<>( (e1, e2) -> { -- cgit From f297d6c576675819a801c6f3fdeb4affc1315347 Mon Sep 17 00:00:00 2001 From: Tec Date: Mon, 14 Sep 2020 20:19:54 +0200 Subject: Remove boxing --- .../mechanics/structure/StructureUtility.java | 532 ++++++++++----------- .../mechanics/structure/adders/IBlockAdder.java | 2 +- .../mechanics/structure/adders/IHatchAdder.java | 2 +- 3 files changed, 268 insertions(+), 268 deletions(-) (limited to 'src/main/java/com') 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 131822fa46..14930952c5 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 @@ -39,18 +39,18 @@ public class StructureUtility { @SuppressWarnings("rawtypes") private static final IStructureElement AIR = new IStructureElement() { @Override - public boolean check(Object t, World world, int x, int y, int z) { + public boolean check(Object multiBlock, World world, int x, int y, int z) { return world.getBlock(x, y, z).getMaterial() == Material.air; } @Override - public boolean spawnHint(Object o, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(Object multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, sHintCasingsTT, 13); return true; } @Override - public boolean placeBlock(Object o, World world, int x, int y, int z, ItemStack trigger) { + public boolean placeBlock(Object multiBlock, World world, int x, int y, int z, ItemStack trigger) { world.setBlock(x, y, z, Blocks.air, 0, 2); return false; } @@ -58,18 +58,18 @@ public class StructureUtility { @SuppressWarnings("rawtypes") private static final IStructureElement NOT_AIR = new IStructureElement() { @Override - public boolean check(Object t, World world, int x, int y, int z) { + public boolean check(Object multiBlock, World world, int x, int y, int z) { return world.getBlock(x, y, z).getMaterial() != Material.air; } @Override - public boolean spawnHint(Object o, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(Object multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, sHintCasingsTT, 14); return true; } @Override - public boolean placeBlock(Object o, World world, int x, int y, int z, ItemStack trigger) { + public boolean placeBlock(Object multiBlock, World world, int x, int y, int z, ItemStack trigger) { world.setBlock(x, y, z, sHintCasingsTT, 14, 2); return true; } @@ -77,18 +77,18 @@ public class StructureUtility { @SuppressWarnings("rawtypes") private static final IStructureElement ERROR = new IStructureElement() { @Override - public boolean check(Object t, World world, int x, int y, int z) { + public boolean check(Object multiBlock, World world, int x, int y, int z) { return false; } @Override - public boolean spawnHint(Object o, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(Object multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, sHintCasingsTT, 15); return true; } @Override - public boolean placeBlock(Object o, World world, int x, int y, int z, ItemStack trigger) { + public boolean placeBlock(Object multiBlock, World world, int x, int y, int z, ItemStack trigger) { return true; } }; @@ -98,12 +98,12 @@ public class StructureUtility { } @SuppressWarnings("unchecked") - public static IStructureElement isAir() { + public static IStructureElement isAir() { return AIR; } @SuppressWarnings("unchecked") - public static IStructureElement notAir() { + public static IStructureElement notAir() { return NOT_AIR; } @@ -112,11 +112,11 @@ public class StructureUtility { * Placement is always handled by this and does nothing. * Makes little to no use it in fallback chain. * - * @param + * @param * @return */ @SuppressWarnings("unchecked") - public static IStructureElement error() { + public static IStructureElement error() { return ERROR; } @@ -126,19 +126,19 @@ public class StructureUtility { * Check always returns: true. * * @param dots - * @param + * @param * @return */ - public static IStructureElementNoPlacement ofHint(int dots) { + public static IStructureElementNoPlacement ofHint(int dots) { int meta = dots - 1; - return new IStructureElementNoPlacement() { + return new IStructureElementNoPlacement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { return true; } @Override - public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, sHintCasingsTT, meta); return false; } @@ -149,18 +149,18 @@ public class StructureUtility { * Check always returns: true. * * @param icons - * @param + * @param * @return */ - public static IStructureElementNoPlacement ofHintDeferred(Supplier icons) { - return new IStructureElementNoPlacement() { + public static IStructureElementNoPlacement ofHintDeferred(Supplier icons) { + return new IStructureElementNoPlacement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { return true; } @Override - public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, icons.get()); return false; } @@ -172,18 +172,18 @@ public class StructureUtility { * * @param icons * @param RGBa - * @param + * @param * @return */ - public static IStructureElementNoPlacement ofHintDeferred(Supplier icons, short[] RGBa) { - return new IStructureElementNoPlacement() { + public static IStructureElementNoPlacement ofHintDeferred(Supplier icons, short[] RGBa) { + return new IStructureElementNoPlacement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { return true; } @Override - public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle_tinted(world, x, y, z, icons.get(), RGBa); return false; } @@ -197,19 +197,19 @@ public class StructureUtility { /** * Does not allow Block duplicates (with different meta) */ - public static IStructureElementNoPlacement ofBlocksFlatHint(Map blocsMap, Block hintBlock, int hintMeta) { + public static IStructureElementNoPlacement ofBlocksFlatHint(Map blocsMap, Block hintBlock, int hintMeta) { if (blocsMap == null || blocsMap.isEmpty() || hintBlock == null) { throw new IllegalArgumentException(); } - return new IStructureElementNoPlacement() { + return new IStructureElementNoPlacement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); return blocsMap.getOrDefault(worldBlock, MIN_VALUE) == worldBlock.getDamageValue(world, x, y, z); } @Override - public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, hintBlock, hintMeta); return true; } @@ -219,7 +219,7 @@ public class StructureUtility { /** * Allows block duplicates (with different meta) */ - public static IStructureElementNoPlacement ofBlocksMapHint(Map> blocsMap, Block hintBlock, int hintMeta) { + public static IStructureElementNoPlacement ofBlocksMapHint(Map> blocsMap, Block hintBlock, int hintMeta) { if (blocsMap == null || blocsMap.isEmpty() || hintBlock == null) { throw new IllegalArgumentException(); } @@ -228,57 +228,57 @@ public class StructureUtility { throw new IllegalArgumentException(); } } - return new IStructureElementNoPlacement() { + return new IStructureElementNoPlacement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); return blocsMap.getOrDefault(worldBlock, Collections.emptySet()).contains(worldBlock.getDamageValue(world, x, y, z)); } @Override - public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, hintBlock, hintMeta); return true; } }; } - public static IStructureElementNoPlacement ofBlockHint(Block block, int meta, Block hintBlock, int hintMeta) { + public static IStructureElementNoPlacement ofBlockHint(Block block, int meta, Block hintBlock, int hintMeta) { if (block == null || hintBlock == null) { throw new IllegalArgumentException(); } - return new IStructureElementNoPlacement() { + return new IStructureElementNoPlacement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); return block == worldBlock && meta == worldBlock.getDamageValue(world, x, y, z); } @Override - public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, hintBlock, hintMeta); return true; } }; } - public static IStructureElementNoPlacement ofBlockHint(Block block, int meta) { + public static IStructureElementNoPlacement ofBlockHint(Block block, int meta) { return ofBlockHint(block, meta, block, meta); } - public static IStructureElementNoPlacement ofBlockAdderHint(IBlockAdder iBlockAdder, Block hintBlock, int hintMeta) { + public static IStructureElementNoPlacement ofBlockAdderHint(IBlockAdder iBlockAdder, Block hintBlock, int hintMeta) { if (iBlockAdder == null || hintBlock == null) { throw new IllegalArgumentException(); } - return new IStructureElementNoPlacement() { + return new IStructureElementNoPlacement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); - return iBlockAdder.apply(t, worldBlock, worldBlock.getDamageValue(world, x, y, z)); + return iBlockAdder.apply(multiBlock, worldBlock, worldBlock.getDamageValue(world, x, y, z)); } @Override - public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, hintBlock, hintMeta); return true; } @@ -288,46 +288,46 @@ public class StructureUtility { /** * Does not allow Block duplicates (with different meta) */ - public static IStructureElement ofBlocksFlat(Map blocsMap, Block defaultBlock, int defaultMeta) { + public static IStructureElement ofBlocksFlat(Map blocsMap, Block defaultBlock, int defaultMeta) { if (blocsMap == null || blocsMap.isEmpty() || defaultBlock == null) { throw new IllegalArgumentException(); } if(defaultBlock instanceof ICustomBlockSetting){ - return new IStructureElement() { + return new IStructureElement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); return blocsMap.getOrDefault(worldBlock, MIN_VALUE) == worldBlock.getDamageValue(world, x, y, z); } @Override - public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean placeBlock(MultiBlock multiBlock, 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) { + public boolean spawnHint(MultiBlock multiBlock, 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() { + return new IStructureElement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); return blocsMap.getOrDefault(worldBlock, MIN_VALUE) == worldBlock.getDamageValue(world, x, y, z); } @Override - public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean placeBlock(MultiBlock multiBlock, 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) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, defaultBlock, defaultMeta); return true; } @@ -338,7 +338,7 @@ public class StructureUtility { /** * Allows block duplicates (with different meta) */ - public static IStructureElement ofBlocksMap(Map> blocsMap, Block defaultBlock, int defaultMeta) { + public static IStructureElement ofBlocksMap(Map> blocsMap, Block defaultBlock, int defaultMeta) { if (blocsMap == null || blocsMap.isEmpty() || defaultBlock == null) { throw new IllegalArgumentException(); } @@ -348,41 +348,41 @@ public class StructureUtility { } } if(defaultBlock instanceof ICustomBlockSetting){ - return new IStructureElement() { + return new IStructureElement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); return blocsMap.getOrDefault(worldBlock, Collections.emptySet()).contains(worldBlock.getDamageValue(world, x, y, z)); } @Override - public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean placeBlock(MultiBlock multiBlock, 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) { + public boolean spawnHint(MultiBlock multiBlock, 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() { + return new IStructureElement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); return blocsMap.getOrDefault(worldBlock, Collections.emptySet()).contains(worldBlock.getDamageValue(world, x, y, z)); } @Override - public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean placeBlock(MultiBlock multiBlock, 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) { + public boolean spawnHint(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { TecTech.proxy.hint_particle(world, x, y, z, defaultBlock, defaultMeta); return true; } @@ -390,46 +390,46 @@ public class StructureUtility { } } - public static IStructureElement ofBlock(Block block, int meta, Block defaultBlock, int defaultMeta) { + public static IStructureElement ofBlock(Block block, int meta, Block defaultBlock, int defaultMeta) { if (block == null || defaultBlock == null) { throw new IllegalArgumentException(); } if(block instanceof ICustomBlockSetting){ - return new IStructureElement() { + return new IStructureElement() { @Override - public boolean check(T t, World world, int x, int y, int z) { + public boolean check(MultiBlock multiBlock, World world, int x, int y, int z) { Block worldBlock = world.getBlock(x, y, z); return block == worldBlock && meta == worldBlock.getDamageValue(world, x, y, z); } @Override - public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + public boolean placeBlock(MultiBlock multiBlock, World world, int x, int y, int z, ItemStack trigger) { ((ICustomBlockSetting) defaultBlock).setBlock(world, x, y, z, defaultMeta);