diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureDefinition.java b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureDefinition.java index c95f8172..4cafa677 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureDefinition.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureDefinition.java @@ -67,7 +67,7 @@ public interface IStructureDefinition { * @throws java.util.NoSuchElementException if the given structure piece is not found and the moon phase perfectly * matches */ - IStructureElement[] getStructureFor(String name); + IStructureElement[] getStructureFor(String name); boolean isContainedInStructure(String name, int offsetA, int offsetB, int offsetC); @@ -356,7 +356,7 @@ public interface IStructureDefinition { * @return true if iteration completed successfully. * @param type of context object. */ - static boolean iterate(T object, ItemStack trigger, IStructureElement[] elements, World world, + 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) { diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElement.java b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElement.java index f3486a44..6c3d9287 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElement.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElement.java @@ -28,6 +28,9 @@ import com.gtnewhorizon.structurelib.util.ItemStackPredicate.NBTMode; /** * Use StructureUtility to instantiate. These are the building blocks for your {@link IStructureDefinition}. It * represents what a particular element can be and how this particular element should be autoplaced. + * + * @param Type of the context object. {@link IStructureElement} is contravariant over T, so parameters and fields of + * type {@link IStructureElement} should be declared as {@code IStructureElement} */ public interface IStructureElement { @@ -213,7 +216,7 @@ public interface IStructureElement { * Forget the messed up class dependency graph for now. this is just so convenient. */ default IStructureElementNoPlacement noPlacement() { - return new IStructureElementNoPlacement() { + return new IStructureElementNoPlacement<>() { @Override public boolean check(T t, World world, int x, int y, int z) { diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureWalker.java b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureWalker.java index d0856684..ac958e91 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureWalker.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureWalker.java @@ -21,23 +21,23 @@ public interface IStructureWalker { * @param c The relative C position of the element in structure-local coordinates (pre transform) * @return False to stop iterating, true to continue. */ - boolean visit(IStructureElement element, World world, int x, int y, int z, int a, int b, int c); + boolean visit(IStructureElement element, World world, int x, int y, int z, int a, int b, int c); - default boolean blockNotLoaded(IStructureElement element, World world, int x, int y, int z, int a, int b, + default boolean blockNotLoaded(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { return false; } static IStructureWalker ignoreBlockUnloaded(IStructureWalker walker) { - return new IStructureWalker() { + return new IStructureWalker<>() { @Override - public boolean visit(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { + public boolean visit(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { return walker.visit(element, world, x, y, z, a, b, c); } @Override - public boolean blockNotLoaded(IStructureElement element, World world, int x, int y, int z, int a, int b, + public boolean blockNotLoaded(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { return walker.visit(element, world, x, y, z, a, b, c); } @@ -45,15 +45,15 @@ public interface IStructureWalker { } static IStructureWalker skipBlockUnloaded(IStructureWalker walker) { - return new IStructureWalker() { + return new IStructureWalker<>() { @Override - public boolean visit(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { + public boolean visit(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { return walker.visit(element, world, x, y, z, a, b, c); } @Override - public boolean blockNotLoaded(IStructureElement element, World world, int x, int y, int z, int a, int b, + public boolean blockNotLoaded(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { return true; } diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureDefinition.java b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureDefinition.java index 6b97a344..c4e9ac02 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureDefinition.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureDefinition.java @@ -16,17 +16,17 @@ import com.gtnewhorizon.structurelib.util.Vec3Impl; public class StructureDefinition implements IStructureDefinition { - private final Map> elements; + private final Map> elements; private final Map shapes; - private final Map[]> structures; + private final Map[]> structures; private final Map> occupiedSpaces; public static Builder builder() { return new Builder<>(); } - private StructureDefinition(Map> elements, Map shapes, - Map[]> structures, Map> occupiedSpaces) { + private StructureDefinition(Map> elements, Map shapes, + Map[]> structures, Map> occupiedSpaces) { this.elements = elements; this.shapes = shapes; this.structures = structures; @@ -40,7 +40,7 @@ public class StructureDefinition implements IStructureDefinition { 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 final Map> occupiedSpaces; @@ -51,7 +51,7 @@ public class StructureDefinition implements IStructureDefinition { occupiedSpaces = new HashMap<>(); } - public Map> getElements() { + public Map> getElements() { return elements; } @@ -181,18 +181,18 @@ public class StructureDefinition implements IStructureDefinition { * @deprecated use the unboxed version */ @Deprecated - public Builder addElement(Character name, IStructureElement structurePiece) { + public Builder addElement(Character name, IStructureElement structurePiece) { elements.putIfAbsent(name, structurePiece); return this; } - public Builder addElement(char name, IStructureElement structurePiece) { + public Builder addElement(char name, IStructureElement structurePiece) { elements.putIfAbsent(name, structurePiece); return this; } public IStructureDefinition build() { - Map[]> structures = compileStructureMap(); + Map[]> structures = compileStructureMap(); return new StructureDefinition<>( new HashMap<>(elements), new HashMap<>(shapes), @@ -201,7 +201,7 @@ public class StructureDefinition implements IStructureDefinition { } @SuppressWarnings("unchecked") - private Map[]> compileElementSetMap() { + private Map[]> compileElementSetMap() { Set missing = findMissing(); if (missing.isEmpty()) { return shapes.entrySet().stream().collect( @@ -217,7 +217,7 @@ public class StructureDefinition implements IStructureDefinition { } @SuppressWarnings("unchecked") - private Map[]> compileStructureMap() { + private Map[]> compileStructureMap() { Set missing = findMissing(); if (missing.isEmpty()) { return shapes.entrySet().stream().collect( @@ -238,7 +238,7 @@ public class StructureDefinition implements IStructureDefinition { } } - public Map> getElements() { + public Map> getElements() { return elements; } @@ -246,13 +246,13 @@ public class StructureDefinition implements IStructureDefinition { return shapes; } - public Map[]> getStructures() { + public Map[]> getStructures() { return structures; } @Override - public IStructureElement[] getStructureFor(String name) { - IStructureElement[] elements = structures.get(name); + public IStructureElement[] getStructureFor(String name) { + IStructureElement[] elements = structures.get(name); if (elements == null) throw new NoSuchElementException(name); return elements; } diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java index 8abde125..7e1d62d3 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java @@ -3325,7 +3325,7 @@ public class StructureUtility { return (builder.toString().replaceAll("\"\"", "E")); } - static boolean iterateV2(IStructureElement[] elements, World world, ExtendedFacing extendedFacing, + static boolean iterateV2(IStructureElement[] elements, World world, ExtendedFacing extendedFacing, int basePositionX, int basePositionY, int basePositionZ, int basePositionA, int basePositionB, int basePositionC, IStructureWalker predicate, String iterateType) { // change base position to base offset @@ -3336,7 +3336,7 @@ public class StructureUtility { int[] abc = new int[] { basePositionA, basePositionB, basePositionC }; int[] xyz = new int[3]; - for (IStructureElement element : elements) { + 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(); diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/SurvivalBuildStructureWalker.java b/src/main/java/com/gtnewhorizon/structurelib/structure/SurvivalBuildStructureWalker.java index 79f06f5c..c1d83385 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/SurvivalBuildStructureWalker.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/SurvivalBuildStructureWalker.java @@ -37,7 +37,7 @@ class SurvivalBuildStructureWalker implements IStructureWalker { } @Override - public boolean visit(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { + public boolean visit(IStructureElement element, World world, int x, int y, int z, int a, int b, int c) { env.offsetABC[0] = a; env.offsetABC[1] = b; env.offsetABC[2] = c;