added woodland mansion

This commit is contained in:
Unknown
2019-11-15 07:29:33 -05:00
parent 1f219ef92d
commit ef5b75608d
@@ -36,6 +36,10 @@ public class StructureData {
return this.feature.salt; return this.feature.salt;
} }
public Feature getFeature() {
return this.feature;
}
public boolean test(ChunkRandom rand) { public boolean test(ChunkRandom rand) {
return this.feature.test(rand, this.offsetX, this.offsetZ); return this.feature.test(rand, this.offsetX, this.offsetZ);
} }
@@ -45,7 +49,8 @@ public class StructureData {
if(obj == this)return true; if(obj == this)return true;
if(obj instanceof StructureData) { if(obj instanceof StructureData) {
return ((StructureData)obj).regionX == this.regionX && ((StructureData)obj).regionZ == this.regionZ; StructureData structureData = ((StructureData)obj);
return structureData.regionX == this.regionX && structureData.regionZ == this.regionZ && structureData.feature == this.feature;
} }
return false; return false;
@@ -53,29 +58,29 @@ public class StructureData {
public abstract static class Feature { public abstract static class Feature {
public final int salt; public final int salt;
public final int templeDistance; public final int distance;
public Feature(int salt, int templeDistance) { public Feature(int salt, int distance) {
this.salt = salt; this.salt = salt;
this.templeDistance = templeDistance; this.distance = distance;
} }
public void build(StructureData data, ChunkPos chunkPos) { public void build(StructureData data, ChunkPos chunkPos) {
int chunkX = chunkPos.x; int chunkX = chunkPos.x;
int chunkZ = chunkPos.z; int chunkZ = chunkPos.z;
chunkX = chunkX < 0 ? chunkX - this.templeDistance + 1 : chunkX; chunkX = chunkX < 0 ? chunkX - this.distance + 1 : chunkX;
chunkZ = chunkZ < 0 ? chunkZ - this.templeDistance + 1 : chunkZ; chunkZ = chunkZ < 0 ? chunkZ - this.distance + 1 : chunkZ;
//Pick out in which region the chunk is. //Pick out in which region the chunk is.
int regionX = (chunkX / this.templeDistance); int regionX = (chunkX / this.distance);
int regionZ = (chunkZ / this.templeDistance); int regionZ = (chunkZ / this.distance);
data.regionX = regionX; data.regionX = regionX;
data.regionZ = regionZ; data.regionZ = regionZ;
regionX *= this.templeDistance; regionX *= this.distance;
regionZ *= this.templeDistance; regionZ *= this.distance;
data.offsetX = chunkPos.x - regionX; data.offsetX = chunkPos.x - regionX;
data.offsetZ = chunkPos.z - regionZ; data.offsetZ = chunkPos.z - regionZ;
@@ -156,4 +161,12 @@ public class StructureData {
} }
}; };
public static final Feature WOODLAND_MANSION = new Feature(10387319, 80) {
@Override
public boolean test(ChunkRandom rand, int x, int z) {
return (rand.nextInt(60) + rand.nextInt(60)) / 2 == x
&& (rand.nextInt(60) + rand.nextInt(60)) / 2 == z;
}
};
} }