Skip to content

Commit

Permalink
Merge pull request #1103 from VolmitDev/fix_jigsaw
Browse files Browse the repository at this point in the history
minor changes to jigsaw placement
  • Loading branch information
CrazyDev05 authored May 25, 2024
2 parents db3bc74 + c9b26eb commit c05fdbd
Showing 1 changed file with 19 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.annotations.ArrayType;
import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.MaxNumber;
import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required;
Expand Down Expand Up @@ -54,17 +55,19 @@ public class IrisJigsawStructurePlacement implements IRare {

@Required
@Desc("The salt to use when generating the structure (to differentiate structures)")
private int salt = 76134;
@MinNumber(Long.MIN_VALUE)
@MaxNumber(Long.MAX_VALUE)
private long salt = 0;

@Required
@MinNumber(0)
@Desc("Average distance in chunks between two neighboring generation attempts")
private int spacing = 32;
private int spacing = -1;

@Required
@MinNumber(0)
@Desc("Minimum distance in chunks between two neighboring generation attempts\nThe maximum distance of two neighboring generation attempts is 2*spacing - separation")
private int separation = 16;
private int separation = -1;

@Desc("The method used to spread the structure")
private SpreadType spreadType = SpreadType.TRIANGULAR;
Expand All @@ -85,8 +88,21 @@ private int toChunks(int blocks) {
return (int) Math.ceil(blocks / 16d);
}

private void calculateMissing(long seed) {
seed = seed + hashCode();
if (salt == 0) {
salt = new RNG(seed).nextLong(Integer.MIN_VALUE, Integer.MAX_VALUE);
}

if (separation == -1 || spacing == -1) {
separation = (int) Math.round(rarity / 20d);
spacing = new RNG(seed).nextInt(separation, separation * 2);
}
}

@ChunkCoordinates
public boolean shouldPlace(long seed, int x, int z) {
calculateMissing(seed);
if (separation > spacing) {
separation = spacing;
Iris.warn("JigsawStructurePlacement: separation must be less than or equal to spacing");
Expand Down

0 comments on commit c05fdbd

Please sign in to comment.