28 public Grid2d(
int sizeX,
int sizeY) {
36 public void Set(
int x,
int y,
float value) {
40 public float Sample(
float x,
float y) {
41 int num = (int)MathF.Floor(x);
42 int num2 = (int)MathF.Floor(y);
43 int num3 = (int)MathF.Ceiling(x);
44 int num4 = (int)MathF.Ceiling(y);
74 public Grid3d(
int sizeX,
int sizeY,
int sizeZ) {
106 public void Set(
int x,
int y,
int z,
float value) {
110 public float Sample(
float x,
float y,
float z) {
111 int num = (int)MathF.Floor(x);
112 int num2 = (int)MathF.Ceiling(x);
113 int num3 = (int)MathF.Floor(y);
114 int num4 = (int)MathF.Ceiling(y);
115 int num5 = (int)MathF.Floor(z);
116 int num6 = (int)MathF.Ceiling(z);
286 m_seed = subsystemGameInfo.WorldSeed;
354 "TerrainContentsGenerator23Initialize",
356#pragma warning disable CS0618
357 loader.TerrainContentsGenerator23Initialize(
this, subsystemTerrain);
358#pragma warning restore CS0618
370 float num =
float.MinValue;
371 for (
int i = 0; i < 1000; i += 5) {
372 for (
int j = 0; j <= 12; j += 4) {
373 for (
int k = 0; k < 2; k++) {
377 num2 = m_oceanCorner.Y + i;
381 x = m_oceanCorner.X + i;
395 "FindCoarseSpawnPosition",
397 loader.FindCoarseSpawnPosition(
this, ref ans);
442 return MathUtils.
Min(x - num, z - num2, num3 - x, num4 - z);
487 float num18 = num13 + num14 + num15 + num17 + num16;
489 return Math.Clamp(64f + num19, 10f, 251f);
533 float num7 = num6 - num5;
621 for (
int i = x1; i < x2; i++) {
622 for (
int j = z1; j < z2; j++) {
637 int num3 = chunk.Origin.X + x1;
638 int num4 = chunk.Origin.Y + z1;
639 Grid2d grid2d =
new(num, num2);
640 Grid2d grid2d2 =
new(num, num2);
641 for (
int i = 0; i < num2; i++) {
642 for (
int j = 0; j < num; j++) {
647 Grid3d grid3d =
new(num / 4 + 1, 33, num2 / 4 + 1);
648 for (
int k = 0; k < grid3d.
SizeX; k++) {
649 for (
int l = 0; l < grid3d.
SizeZ; l++) {
650 int num5 = k * 4 + num3;
651 int num6 = l * 4 + num4;
655 for (
int m = 0; m < grid3d.
SizeY; m++) {
671 float num11 = num9 + num10;
672 float num12 = num7 - num11;
674 grid3d.
Set(k, m, l, num12);
679 for (
int n = 0; n < grid3d.SizeX - 1; n++) {
680 for (
int num13 = 0; num13 < grid3d.SizeZ - 1; num13++) {
681 for (
int num14 = 0; num14 < grid3d.SizeY - 1; num14++) {
695 float num15 = (v3 - v2) / 4f;
696 float num16 = (v5 - v4) / 4f;
697 float num17 = (v7 - v6) / 4f;
698 float num18 = (v9 - v8) / 4f;
703 for (
int num23 = 0; num23 < 4; num23++) {
704 float num24 = (num21 - num19) / 4f;
705 float num25 = (num22 - num20) / 4f;
708 for (
int num28 = 0; num28 < 4; num28++) {
709 float num29 = (num27 - num26) / 8f;
711 int num31 = num23 + n * 4;
712 int num32 = num28 + num13 * 4;
715 float x4 = grid2d.
Get(num31, num32);
716 float num33 = grid2d2.
Get(num31, num32);
719 float f = num33 - 0.01f * humidityFast;
722 bool flag = (temperatureFast > 8 && humidityFast < 8 && num33 < 0.97f) || (MathF.Abs(x4) < 16f && num33 < 0.97f);
724 for (
int num37 = 0; num37 < 8; num37++) {
725 int num38 = num37 + num14 * 8;
728 if (num38 <= oceanLevel) {
733 value = !flag ? !(num30 < num35) ? 67 : 3 :
734 !(num30 < num34) ? !(num30 < num35) ? 67 : 3 : 4;
755 for (
int i = 0; i < 16; i++) {
756 for (
int j = 0; j < 16; j++) {
770 num7 = temperature > 4 && temperature < 7 ? 6 : 7;
773 int num8 = temperature / 4;
776 (num4 < 66 || num4 == 84 + num8 || num4 == 103 + num8) && humidity == 9 && temperature % 6 == 1 ? 66 :
777 num9 != 18 || humidity <= 8 || humidity % 2 != 0 || temperature % 3 != 0 ? 2 : 72;
781 num10 = (int)Math.Clamp(1f * -temperature, 1f, 7f);
793 for (
int k = num12 - num10; k < num12; k++) {
814 for (
int i = x - 1; i <= x + 1; i++) {
815 for (
int j = y - 1; j <= y + 1; j++) {
817 int num = random.
Int(0, 10);
818 for (
int k = 0; k < num; k++) {
823 for (
int l = 0; l < num3; l++) {
824 int x2 = i * 16 + random.
Int(0, 15);
825 int y2 = random.
Int(5, 200);
826 int z = j * 16 + random.
Int(0, 15);
830 for (
int m = 0; m < num4; m++) {
831 int x3 = i * 16 + random.
Int(0, 15);
832 int y3 = random.
Int(20, 65);
833 int z2 = j * 16 + random.
Int(0, 15);
837 for (
int n = 0; n < num5; n++) {
838 int x4 = i * 16 + random.
Int(0, 15);
839 int y4 = random.
Int(2, 40);
840 int z3 = j * 16 + random.
Int(0, 15);
844 for (
int num7 = 0; num7 < num6; num7++) {
845 int x5 = i * 16 + random.
Int(0, 15);
846 int y5 = random.
Int(50, 90);
847 int z4 = j * 16 + random.
Int(0, 15);
851 for (
int num9 = 0; num9 < num8; num9++) {
852 int x6 = i * 16 + random.
Int(0, 15);
853 int y6 = random.
Int(2, 40);
854 int z5 = j * 16 + random.
Int(0, 15);
858 for (
int num11 = 0; num11 < num10; num11++) {
859 int x7 = i * 16 + random.
Int(0, 15);
860 int y7 = random.
Int(2, 15);
861 int z6 = j * 16 + random.
Int(0, 15);
865 for (
int num13 = 0; num13 < num12; num13++) {
866 int x8 = i * 16 + random.
Int(0, 15);
867 int y8 = random.
Int(2, 50);
868 int z7 = j * 16 + random.
Int(0, 15);
879 for (
int i = -1; i <= 1; i++) {
880 for (
int j = -1; j <= 1; j++) {
884 int num3 = random.
Int(0, 10);
885 for (
int k = 0; k < num3; k++) {
889 for (
int l = 0; l < 3; l++) {
890 int x = num * 16 + random.
Int(0, 15);
891 int y = random.
Int(50, 100);
892 int z = num2 * 16 + random.
Int(0, 15);
895 for (
int m = 0; m < 10; m++) {
896 int x2 = num * 16 + random.
Int(0, 15);
897 int y2 = random.
Int(20, 80);
898 int z2 = num2 * 16 + random.
Int(0, 15);
901 for (
int n = 0; n < 2; n++) {
902 int x3 = num * 16 + random.
Int(0, 15);
903 int y3 = random.
Int(20, 120);
904 int z3 = num2 * 16 + random.
Int(0, 15);
907 for (
int num5 = 0; num5 < 1; num5++) {
908 int x4 = num * 16 + random.
Int(0, 15);
909 int y4 = random.
Int(50, 70);
910 int z4 = num2 * 16 + random.
Int(0, 15);
913 for (
int num6 = 0; num6 < 6; num6++) {
914 int x5 = num * 16 + random.
Int(0, 15);
915 int y5 = random.
Int(40, 80);
916 int z5 = num2 * 16 + random.
Int(0, 15);
919 for (
int num7 = 0; num7 < 4; num7++) {
920 int x6 = num * 16 + random.
Int(0, 15);
921 int y6 = random.
Int(40, 60);
922 int z6 = num2 * 16 + random.
Int(0, 15);
925 for (
int num8 = 0; num8 < 3; num8++) {
926 int x7 = num * 16 + random.
Int(0, 15);
927 int y7 = random.
Int(20, 40);
928 int z7 = num2 * 16 + random.
Int(0, 15);
931 for (
int num9 = 0; num9 < 6; num9++) {
932 int x8 = num * 16 + random.
Int(0, 15);
933 int y8 = random.
Int(4, 50);
934 int z8 = num2 * 16 + random.
Int(0, 15);
937 if (random.
Bool(0.02f + 0.01f * num4)) {
938 int num10 = num * 16;
939 int num11 = random.
Int(40, 60);
940 int num12 = num2 * 16;
941 int num13 = random.
Int(1, 3);
942 for (
int num14 = 0; num14 < num13; num14++) {
944 int num15 = 8 + (int)MathF.
Round(vector.
X);
946 int num17 = 8 + (int)MathF.
Round(vector.
Y);
948 .PaintFast(chunk, num10 + num15, num11 + num16, num12 + num17);
951 if (random.
Bool(0.06f + 0.05f * num4)) {
952 int num18 = num * 16;
953 int num19 = random.
Int(15, 42);
954 int num20 = num2 * 16;
955 int num21 = random.
Int(1, 2);
956 for (
int num22 = 0; num22 < num21; num22++) {
958 int num23 = 8 + (int)MathF.
Round(vector2.
X);
959 int num24 = random.
Int(0, 1);
960 int num25 = 8 + (int)MathF.Round(vector2.
Y);
962 .PaintFast(chunk, num18 + num23, num19 + num24, num20 + num25);
973 List<CavePoint> list = [];
976 for (
int i = x - 2; i <= x + 2; i++) {
977 for (
int j = y - 2; j <= y + 2; j++) {
980 int num = i * 16 + random.
Int(0, 15);
981 int num2 = j * 16 + random.
Int(0, 15);
982 float probability = 0.5f;
983 if (!random.
Bool(probability)) {
989 Vector3 position =
new(num, num3 - 1, num2);
990 Vector3 v =
new(3f, num4 - num3, 0f);
991 Vector3 v2 =
new(0f, num5 - num3, 3f);
993 if (direction.
Y > -0.6f) {
994 list.Add(
new CavePoint { Position = position, Direction = direction, BrushType = 0, Length = random.
Int(80, 240) });
996 int num6 = i * 16 + 8;
997 int num7 = j * 16 + 8;
999 while (num8 < list.Count) {
1002 list2[random.
Int(0, list2.Count - 1)]
1003 .PaintFastAvoidWater(
1009 cavePoint.Position += 2f * cavePoint.
Direction;
1010 cavePoint.StepsTaken += 2;
1011 float num9 = cavePoint.Position.X - num6;
1012 float num10 = cavePoint.Position.Z - num7;
1013 if (random.
Bool(0.5f)) {
1015 if ((num9 < -25.5f && vector.
X < 0f)
1016 || (num9 > 25.5f && vector.
X > 0f)) {
1017 vector.X = 0f - vector.
X;
1019 if ((num10 < -25.5f && vector.
Z < 0f)
1020 || (num10 > 25.5f && vector.
Z > 0f)) {
1021 vector.Z = 0f - vector.
Z;
1023 if ((cavePoint.
Direction.
Y < -0.5f && vector.
Y < -10f)
1024 || (cavePoint.
Direction.
Y > 0.1f && vector.
Y > 0f)) {
1025 vector.Y = 0f - vector.
Y;
1030 && random.
Bool(0.06f)) {
1034 && random.
Bool(0.05f)) {
1035 cavePoint.Direction.Y = 0f;
1039 && random.
Bool(0.03f)) {
1040 cavePoint.Direction.X = 0f;
1041 cavePoint.Direction.Y = -1f;
1042 cavePoint.Direction.Z = 0f;
1046 && random.
Bool(0.02f)) {
1047 cavePoint.Direction.X = 0f;
1048 cavePoint.Direction.Y = 1f;
1049 cavePoint.Direction.Z = 0f;
1051 if (random.
Bool(0.33f)) {
1054 if (random.
Bool(0.06f)
1063 Length = random.
Int(40, 180)
1068 || MathF.Abs(num9) > 34f
1069 || MathF.Abs(num10) > 34f
1076 if (cavePoint.
Position.
Y > num11 + 1f) {
1096 for (
int i = x2; i <= x2; i++) {
1097 for (
int j = y2; j <= y2; j++) {
1106 num5 = random.
Int(1, 2);
1108 else if (num4 > 0.6f) {
1109 num5 = random.
Int(0, 1);
1112 for (
int k = 0; k < 12; k++) {
1116 int num7 = i * 16 + random.
Int(0, 15);
1117 int num8 = j * 16 + random.
Int(0, 15);
1123 if (cellContentsFast != 2
1124 && cellContentsFast != 8) {
1128 int num10 = random.
Int(3, 7);
1131 && num7 - num10 + 1 < 0) {
1135 && num7 + num10 - 1 > 15) {
1139 && num8 - num10 + 1 < 0) {
1143 && num8 + num10 - 1 > 15) {
1149 for (
int l = 0; l < num10; l++) {
1150 int num11 = num7 + point.X * l;
1151 int num12 = num8 + point.Z * l;
1155 || num12 >= num2 - 1) {
1172 if (!(flag && flag2 && flag3)) {
1183 if (treeType.HasValue) {
1190 for (
int m = 0; m < num10; m++) {
1191 int num13 = num7 + point.X * m;
1192 int num14 = num8 + point.Z * m;
1194 if (m > num10 / 2) {
1195 if (random.
Bool(0.5f)
1200 if (random.
Bool(0.05f)
1205 if (random.
Bool(0.5f)
1210 if (random.
Bool(0.05f)
1215 if (random.
Bool(0.5f)
1237 for (
int i = x; i <= x; i++) {
1238 for (
int j = y; j <= y; j++) {
1245 int num3 = (int)(5f * num2);
1247 for (
int k = 0; k < 32; k++) {
1251 int num5 = i * 16 + random.
Int(2, 13);
1252 int num6 = j * 16 + random.
Int(2, 13);
1258 if (cellContentsFast != 2
1259 && cellContentsFast != 8) {
1273 if (treeType.HasValue) {
1276 terrainBrush.
PaintFast(chunk, num5, num7, num6);
1288 for (
int i = 0; i < 16; i++) {
1289 for (
int j = 0; j < 16; j++) {
1291 int num2 = j + chunk.
Origin.
Y;
1293 for (
int k = 0; k < num3; k++) {
1306 for (
int i = 0; i < 16; i++) {
1307 for (
int j = 0; j < 16; j++) {
1308 for (
int num = 254; num >= 0; num--) {
1335 for (
int i = 0; i < 16; i++) {
1336 for (
int j = 0; j < 16; j++) {
1337 if (!random.
Bool(0.2f)) {
1340 int num = chunk.Origin.X + i;
1341 int num2 = chunk.Origin.Y + j;
1347 for (
int num4 = 254; num4 >= 0; num4--) {
1350 int face = random.
Int(0, 5);
1352 if (i + point.
X >= 0
1354 && num4 + point.
Y >= 0
1355 && num4 + point.
Y < 254
1357 && j + point.
Z < 16) {
1363 if (temperatureFast < 8) {
1380 float num8 = random.
Float(0f, 1f);
1391 int face2 = random.
Int(0, 3);
1414 if (!random.
Bool(0.5f)) {
1418 for (
int i = 0; i < num; i++) {
1419 int num2 = random.
Int(3, 12);
1420 int num3 = random.
Int(3, 12);
1423 if (humidityFast >= 6
1424 || temperatureFast <= 8) {
1427 for (
int j = 0; j < 8; j++) {
1428 int num4 = num2 + random.
Int(-2, 2);
1429 int num5 = num3 + random.
Int(-2, 2);
1430 for (
int num6 = 251; num6 >= 0; num6--) {
1433 for (
int k = num6 + 1;
1459 if (!random.
Bool(0.2f)) {
1463 for (
int i = 0; i < num; i++) {
1464 int num2 = random.
Int(1, 14);
1465 int num3 = random.
Int(1, 14);
1468 if (humidityFast < 10
1469 || temperatureFast <= 6) {
1472 for (
int j = 0; j < 5; j++) {
1473 int x2 = num2 + random.
Int(-1, 1);
1474 int z = num3 + random.
Int(-1, 1);
1475 for (
int num4 = 254; num4 >= 0; num4--) {
1500 for (
int i = 0; i < 9; i++) {
1501 int num2 = i % 3 - 1;
1502 int num3 = i / 3 - 1;
1503 random.
Seed(
m_seed + x + num2 + 850 * (y + num3));
1504 if (random.
Bool(0.2f)) {
1516 for (
int j = 0; j < num4; j++) {
1517 int num5 = random.
Int(2, 13);
1518 int num6 = random.
Int(2, 13);
1519 int num7 = num5 + chunk.
Origin.
X;
1520 int num8 = num6 + chunk.
Origin.
Y;
1521 int num9 = random.
Int(10, 26);
1531 for (
int k = 0; k < num9; k++) {
1532 int x2 = num5 + random.
Int(-2, 2);
1533 int z = num6 + random.
Int(-2, 2);
1535 for (
int num12 = 254; num12 >= 0; num12--) {
1540 if ((num13 == 2 || num13 == 7 || num13 == 72)
1542 int num14 = flag ? random.
Int(num11 - 2, num11 - 1) : random.
Int(num11 - 1, num11);
1543 for (
int l = 0; l < num14; l++) {
1550 if (num11 > num10) {
1566 for (
int i = 0; i < 6; i++) {
1567 int num = random.
Int(1, 14);
1568 int num2 = random.
Int(1, 14);
1569 int num3 = chunk.Origin.X + num;
1570 int num4 = chunk.Origin.Y + num2;
1572 int num5 = random.
Int(1, 3);
1573 for (
int j = 0; j < num5; j++) {
1574 int x2 = num + random.
Int(-1, 1);
1575 int z = num2 + random.
Int(-1, 1);
1577 for (
int num7 = 254; num7 >= 0; num7--) {
1588 && (num8 == 2 || num8 == 7 || num8 == 72 || num8 == 3)) {
1589 int x3 = !random.
Bool(0.1f) ? 1 : 2;
1591 for (
int k = 0; k < x3; k++) {
1610 for (
int i = 0; i < num; i++) {
1611 int num2 = random.
Int(4, 11);
1612 int num3 = random.
Int(4, 11);
1615 if (humidityFast < 10
1616 || temperatureFast < 10) {
1620 for (
int j = 0; j < 100; j++) {
1621 int num5 = num2 + random.
Int(-3, 3);
1622 int num6 = Math.Clamp(num4 + random.
Int(-12, 1), 1, 255);
1623 int num7 = num3 + random.
Int(-3, 3);
1632 int num8 = random.
Int(0, 3);
1633 for (
int k = 0; k < 4; k++) {
1634 int face = (k + num8) % 4;
1639 int num9 = num6 - 1;
1675 if (!random.
Bool(0.15f)
1680 for (
int i = 0; i < num; i++) {
1681 int num2 = random.
Int(2, 5);
1682 int num3 = random.
Int(2, 5);
1683 int num4 = random.
Int(1, 16 - num2 - 2);
1684 int num5 = random.
Int(1, 16 - num3 - 2);
1685 bool flag = random.
Float(0f, 1f) < 0.5f;
1686 int num6 = random.
Int(3, 5);
1688 int num8 = num4 - 1;
1690 if (num8 < num4 + num2 + 1) {
1691 for (
int j = num5 - 1; j < num5 + num3 + 1; j++) {
1694 while (num9 >= num10
1711 || num7 - num6 < 5) {
1714 for (
int k = num4; k < num4 + num2; k++) {
1715 for (
int l = num5; l < num5 + num3; l++) {
1716 for (
int num11 = num7.Value - 1; num11 >= num7 - num6 + 1; num11--) {
1740 if (!(random.
Float(0f, 1f) < 0.033f)
1745 for (
int i = 0; i < num; i++) {
1746 int num2 = random.
Int(6, 9);
1747 int num3 = random.
Int(6, 9);
1748 int num4 = random.
Bool(0.2f) ? random.
Int(6, 20) : random.
Int(1, 5);
1749 bool flag = random.
Bool(0.5f);
1750 for (
int j = 0; j < num4; j++) {
1751 int num5 = num2 + random.
Int(-4, 4);
1752 int num6 = num3 + random.
Int(-4, 4);
1758 int num8 = random.
Int(0, 3);
1759 for (
int k = 0; k < 4; k++) {
1760 int num9 = (k + num8) % 4;
1763 int num10 = p.X < 0 ? num5 - 2 : num5 - 1;
1764 int num11 = p.X > 0 ? num5 + 2 : num5 + 1;
1765 int num12 = p.Z < 0 ? num6 - 2 : num6 - 1;
1766 int num13 = p.Z > 0 ? num6 + 2 : num6 + 1;
1767 for (
int l = num10; l <= num11; l++) {
1768 for (
int m = num7 - 2; m <= num7 + 2; m++) {
1769 for (
int n = num12; n <= num13; n++) {
1788 int num15 = random.
Int(0, 7);
1792 int contents2 = 136;
1796 if (cellContentsFast == 7
1797 || cellContentsFast == 4) {
1802 else if (random.
Float(0f, 1f) < 0.5f) {
1813 bool flag2 = num16.HasValue && random.
Bool(0.33f);
1814 float num17 = random.
Float(0f, 1f);
1815 float num18 = random.
Float(0f, 1f);
1816 int num19 = random.
Int(-1, 0);
1817 int num20 = random.
Int(1, 2);
1818 int num21 = flag2 ? num7 + 2 : num7 + 1;
1820 for (
int num22 = num19; num22 <= num20; num22++) {
1821 int num23 = num5 + p.X * num22;
1822 int num24 = num6 + p.Z * num22;
1826 if (num16.HasValue) {
1833 else if (num18 < 0.3f) {
1836 else if (num18 < 0.4f) {
1839 else if (num18 < 0.5f) {
1842 else if (num18 < 0.6f) {
1876 else if (num17 < 0.4f) {
1886 else if (num17 < 0.6f) {
1920 for (
int i = 0; i < 16; i++) {
1921 for (
int j = 0; j < 16; j++) {
1925 for (
int k = num + 1; k < 256; k++) {
1928 point =
new Point2(i, j);
1945 for (
int i = 0; i < 16; i++) {
1946 for (
int j = 0; j < 16; j++) {
1948 int num2 = j + chunk.
Origin.
Y;
1949 for (
int num3 = 254; num3 >= 0; num3--) {
1959 for (
int k = 0; k < num5; k++) {
1986 for (
int i = 0; i < 16; i++) {
1987 for (
int j = 0; j < 16; j++) {
2008 for (
int i = 0; i < 16; i++) {
2009 for (
int j = 0; j < 16; j++) {
2032 for (
int i = 0; i < 16; i++) {
2034 int num = random.
Int(4, 12);
2035 for (
int j = 0; j < num; j++) {
2037 int num2 = random.
Int(3, 8);
2039 for (
int k = 0; k < num2; k++) {
2041 (
int)MathF.Floor(zero.
X),
2042 (
int)MathF.Floor(zero.
Y),
2043 (
int)MathF.Floor(zero.
Z),
2053 terrainBrush.
AddCell(0, 0, 0, 150);
2058 for (
int l = 0; l < 16; l++) {
2060 int num3 = random.
Int(3, 7);
2061 for (
int m = 0; m < num3; m++) {
2063 int num4 = random.
Int(3, 6);
2065 for (
int n = 0; n < num4; n++) {
2067 (
int)MathF.Floor(zero2.
X),
2068 (
int)MathF.Floor(zero2.
Y),
2069 (
int)MathF.Floor(zero2.
Z),
2081 for (
int num5 = 0; num5 < 16; num5++) {
2083 int num6 = random.
Int(4, 10);
2084 for (
int num7 = 0; num7 < num6; num7++) {
2086 int num8 = random.
Int(3, 6);
2088 for (
int num9 = 0; num9 < num8; num9++) {
2090 (
int)MathF.Floor(zero3.
X),
2091 (
int)MathF.Floor(zero3.
Y),
2092 (
int)MathF.Floor(zero3.
Z),
2104 for (
int num10 = 0; num10 < 16; num10++) {
2106 int num11 = random.
Int(8, 16);
2107 for (
int num12 = 0; num12 < num11; num12++) {
2110 int num13 = random.
Int(4, 8);
2112 for (
int num14 = 0; num14 < num13; num14++) {
2114 (
int)MathF.Floor(zero4.
X),
2115 (
int)MathF.Floor(zero4.
Y),
2116 (
int)MathF.Floor(zero4.
Z),
2128 for (
int num15 = 0; num15 < 16; num15++) {
2130 int num16 = random.
Int(4, 10);
2131 for (
int num17 = 0; num17 < num16; num17++) {
2133 int num18 = random.
Int(3, 6);
2135 for (
int num19 = 0; num19 < num18; num19++) {
2137 (
int)MathF.Floor(zero5.
X),
2138 (
int)MathF.Floor(zero5.
Y),
2139 (
int)MathF.Floor(zero5.
Z),
2151 for (
int num20 = 0; num20 < 16; num20++) {
2153 int num21 = random.
Int(2, 6);
2154 for (
int num22 = 0; num22 < num21; num22++) {
2156 int num23 = random.
Int(3, 6);
2158 for (
int num24 = 0; num24 < num23; num24++) {
2160 (
int)MathF.Floor(zero6.
X),
2161 (
int)MathF.Floor(zero6.
Y),
2162 (
int)MathF.Floor(zero6.
Z),
2174 for (
int num25 = 0; num25 < 16; num25++) {
2176 int num26 = random.
Int(4, 10);
2177 for (
int num27 = 0; num27 < num26; num27++) {
2179 int num28 = random.
Int(3, 6);
2181 for (
int num29 = 0; num29 < num28; num29++) {
2183 (
int)MathF.Floor(zero7.
X),
2184 (
int)MathF.Floor(zero7.
Y),
2185 (
int)MathF.Floor(zero7.
Z),
2197 for (
int num30 = 0; num30 < 16; num30++) {
2199 int num31 = random.
Int(16, 32);
2200 for (
int num32 = 0; num32 < num31; num32++) {
2203 int num33 = random.
Int(6, 12);
2205 for (
int num34 = 0; num34 < num33; num34++) {
2207 (
int)MathF.Floor(zero8.
X),
2208 (
int)MathF.Floor(zero8.
Y),
2209 (
int)MathF.Floor(zero8.
Z),
2221 for (
int num35 = 0; num35 < 16; num35++) {
2223 int num36 = random.
Int(16, 32);
2224 for (
int num37 = 0; num37 < num36; num37++) {
2227 int num38 = random.
Int(6, 12);
2229 for (
int num39 = 0; num39 < num38; num39++) {
2231 (
int)MathF.Floor(zero9.
X),
2232 (
int)MathF.Floor(zero9.
Y),
2233 (
int)MathF.Floor(zero9.
Z),
2245 for (
int num40 = 0; num40 < 16; num40++) {
2247 int num41 = random.
Int(16, 32);
2248 for (
int num42 = 0; num42 < num41; num42++) {
2251 int num43 = random.
Int(6, 12);
2253 for (
int num44 = 0; num44 < num43; num44++) {
2255 (
int)MathF.Floor(zero10.
X),
2256 (
int)MathF.Floor(zero10.
Y),
2257 (
int)MathF.Floor(zero10.
Z),
2269 for (
int num45 = 0; num45 < 16; num45++) {
2271 int num46 = random.
Int(16, 32);
2272 for (
int num47 = 0; num47 < num46; num47++) {
2274 int num48 = random.
Int(6, 12);
2276 for (
int num49 = 0; num49 < num48; num49++) {
2278 (
int)MathF.Floor(zero11.
X),
2279 (
int)MathF.Floor(zero11.
Y),
2280 (
int)MathF.Floor(zero11.
Z),
2292 for (
int num50 = 0; num50 < 16; num50++) {
2294 int num51 = random.
Int(16, 32);
2295 for (
int num52 = 0; num52 < num51; num52++) {
2298 int num53 = random.
Int(6, 12);
2300 for (
int num54 = 0; num54 < num53; num54++) {
2302 (
int)MathF.Floor(zero12.
X),
2303 (
int)MathF.Floor(zero12.
Y),
2304 (
int)MathF.Floor(zero12.
Z),
2316 for (
int num55 = 0; num55 < 16; num55++) {
2318 int num56 = random.
Int(16, 32);
2319 for (
int num57 = 0; num57 < num56; num57++) {
2322 int num58 = random.
Int(6, 12);
2324 for (
int num59 = 0; num59 < num58; num59++) {
2326 (
int)MathF.Floor(zero13.
X),
2327 (
int)MathF.Floor(zero13.
Y),
2328 (
int)MathF.Floor(zero13.
Z),
2340 for (
int num60 = 0; num60 < 16; num60++) {
2342 int num61 = random.
Int(16, 32);
2343 for (
int num62 = 0; num62 < num61; num62++) {
2345 int num63 = random.
Int(5, 10);
2347 for (
int num64 = 0; num64 < num63; num64++) {
2349 (
int)MathF.Floor(zero14.
X),
2350 (
int)MathF.Floor(zero14.
Y),
2351 (
int)MathF.Floor(zero14.
Z),
2363 int[] array = [4, 6, 8];
2364 for (
int num65 = 0; num65 < 4 * array.Length; num65++) {
2366 int num66 = array[num65 / 4];
2367 int num67 = num65 % 2 + 1;
2368 float num68 = num65 % 4 == 2 ? 0.5f : 1f;
2369 int num69 = num65 % 4 == 1 ? num66 * num66 : 2 * num66 * num66;
2370 for (
int num70 = 0; num70 < num69; num70++) {
2372 float num71 = vector15.
Length();
2373 int num72 = random.
Int(3, 4);
2376 (
int)MathF.Floor(vector15.
X),
2378 (
int)MathF.Floor(vector15.
Y),
2385 (
int)MathF.Floor(vector15.
X),
2387 (
int)MathF.Floor(vector15.
Y),
2397 int[] array2 = [8, 12, 14, 16];
2398 for (
int num73 = 0; num73 < 4 * array2.Length; num73++) {
2400 int num74 = array2[num73 / 4];
2401 int num75 = num74 + 2;
2402 float num76 = num73 % 4 == 2 ? 0.5f : 1f;
2403 int num77 = num73 % 4 == 1 ? num74 * num74 : 2 * num74 * num74;
2404 for (
int num78 = 0; num78 < num77; num78++) {
2406 float num79 = vector16.
Length();
2407 int num80 = random.
Int(3, 4);
2409 int num81 = 1 + (int)
MathUtils.
Lerp(num75, 0f, num79 / num74) + random.
Int(0, 1);
2411 (
int)MathF.Floor(vector16.
X),
2413 (
int)MathF.Floor(vector16.
Y),
2420 (
int)MathF.Floor(vector16.
X),
2422 (
int)MathF.Floor(vector16.
Y),
2432 for (
int num82 = 0; num82 < 7; num82++) {
2434 for (
int num83 = 0; num83 < 3; num83++) {
2436 int num84 = 6 + 4 * num82;
2437 int max = 3 + num82 / 3;
2438 int max2 = 9 + num82;
2439 for (
int num85 = 0; num85 < num84; num85++) {
2440 int num86 = random.
Int(2, max);
2441 int num87 = random.
Int(8, max2) - 2 * num86;
2444 for (
int num88 = 0; num88 < num87; num88++) {
2446 (
int)MathF.Floor(zero15.
X) - num86 / 2,
2447 (
int)MathF.Floor(zero15.
Y) - num86 / 2,
2448 (
int)MathF.Floor(zero15.
Z) - num86 / 2,
2462 "OnTerrainBrushesCreated",
2464 loader.OnTerrainBrushesCreated();
static void Information(object message)
static int Min(int x1, int x2)
static float Saturate(float x)
static float PowSign(float x, float n)
static int Max(int x1, int x2)
static float Lerp(float x1, float x2, float f)
static float LinearStep(float zero, float one, float f)
virtual bool IsTransparent_(int value)
static FluidBlock[] FluidBlocks
static int SetSubvariant(int data, int face)
static int SetFace(int data, int face)
Action< TerrainChunk > GenerateAction
static int SetIsTop(int data, bool isTop)
static int SetVariant(int data, int variant)
static int SetRotation(int data, int rotation)
static int SetFace(int data, int face)
static bool IsGrowthStopCell(int x, int y, int z)
static int GenerateRandomPlantValue(Random random, int groundValue, int temperature, int humidity, int y)
static ReadOnlyList< TerrainBrush > GetTreeBrushes(TreeType treeType)
static ? TreeType GenerateRandomTreeType(Random random, int temperature, int humidity, int y, float densityMultiplier=1f)
static int GetTreeTrunkValue(TreeType treeType)
static int GetTreeLeavesValue(TreeType treeType)
static float OctavedNoise(float x, float frequency, int octaves, float frequencyStep, float amplitudeStep, bool ridged=false)
static int SetSpikesState(int data, bool spikesState)
static int SetRotation(int data, int rotation)
static bool CanSupportSnow(int value)
static Func< int, int, bool > ShaftHasSnowOnIce
static Func< int, int > GetTemperatureAdjustmentAtHeight
static Func< int, int, bool > IsPlaceFrozen
void PaintFast(TerrainChunk chunk, int x, int y, int z)
void AddBox(int x, int y, int z, int sizeX, int sizeY, int sizeZ, Brush brush)
void AddCell(int x, int y, int z, Brush brush)
static int CalculateCellIndex(int x, int y, int z)
virtual void AddBrushPaint(int x, int y, int z, TerrainBrush brush)
virtual int GetCellValueFast(int index)
virtual void SetCellValueFast(int x, int y, int z, int value)
virtual int GetTemperatureFast(int x, int z)
virtual void SetHumidityFast(int x, int z, int humidity)
virtual void SetTemperatureFast(int x, int z, int temperature)
virtual int GetCellContentsFast(int x, int y, int z)
virtual int GetHumidityFast(int x, int z)
virtual int CalculateTopmostCellHeight(int x, int z)
void Set(int x, int y, float value)
float Sample(float x, float y)
Grid2d(int sizeX, int sizeY)
void Get8(int x, int y, int z, out float v111, out float v211, out float v121, out float v221, out float v112, out float v212, out float v122, out float v222)
float Get(int x, int y, int z)
void Set(int x, int y, int z, float value)
Grid3d(int sizeX, int sizeY, int sizeZ)
float Sample(float x, float y, float z)
static int TGMountainsDetailOctaves
void PropagateFluidsDownwards(TerrainChunk chunk)
SubsystemTerrain m_subsystemTerrain
SubsystemBottomSuckerBlockBehavior m_subsystemBottomSuckerBlockBehavior
static List< TerrainBrush > m_granitePocketBrushes
List< ChunkGenerationStep > ChunkGenerationStep4
Vector2 m_temperatureOffset
void GenerateSurfaceParameters(TerrainChunk chunk, int x1, int z1, int x2, int z2)
void GenerateTerrain(TerrainChunk chunk, int x1, int z1, int x2, int z2)
static List< TerrainBrush > m_dirtPocketBrushes
void GenerateGrassAndPlants(TerrainChunk chunk)
static List< TerrainBrush > m_limestonePocketBrushes
void GenerateSeagrass(TerrainChunk chunk)
static float Squish(float v, float zero, float one)
float CalculateOceanShoreZ(float x)
TerrainContentsGenerator23(SubsystemTerrain subsystemTerrain)
int CalculateTemperature(float x, float z)
Vector3 FindCoarseSpawnPosition()
static List< TerrainBrush > m_gravelPocketBrushes
void GenerateChunkContentsPass2(TerrainChunk chunk)
float TGMountainsStrength
float TGTurbulencePersistence
static float TGMountainsDetailPersistence
static List< TerrainBrush > m_coalBrushes
static List< TerrainBrush > m_waterPocketBrushes
static float TGSurfaceMultiplier
WorldSettings m_worldSettings
void GenerateIvy(TerrainChunk chunk)
int CalculateHumidity(float x, float z)
static float TGMountainsDetailFreq
float TGShoreFluctuationsScaling
static TerrainContentsGenerator23()
static List< TerrainBrush > m_saltpeterBrushes
void GenerateChunkContentsPass1(TerrainChunk chunk)
void GenerateSnowAndIce(TerrainChunk chunk)
static List< TerrainBrush > m_sandPocketBrushes
static List< TerrainBrush > m_basaltPocketBrushes
void GenerateTrees(TerrainChunk chunk)
List< ChunkGenerationStep > ChunkGenerationStep2
static List< TerrainBrush > m_germaniumBrushes
float TGMountainRangeFreq
float TGOceanSlopeVariation
void GenerateCaves(TerrainChunk chunk)
static List< TerrainBrush > m_magmaPocketBrushes
void GenerateCairns(TerrainChunk chunk)
static List< TerrainBrush > m_diamondBrushes
float CalculateHeight(float x, float z)
List< ChunkGenerationStep > ChunkGenerationStep1
float CalculateOceanShoreDistance(float x, float z)
static List< TerrainBrush > m_ironBrushes
float CalculateOceanShoreX(float z)
void GenerateKelp(TerrainChunk chunk)
float ScoreSpawnPosition(int x, int z)
void GeneratePockets(TerrainChunk chunk)
float CalculateMountainRangeFactor(float x, float z)
void GenerateCacti(TerrainChunk chunk)
void GenerateTraps(TerrainChunk chunk)
void GenerateMinerals(TerrainChunk chunk)
void GenerateGraves(TerrainChunk chunk)
void GenerateChunkContentsPass3(TerrainChunk chunk)
void GenerateChunkContentsPass4(TerrainChunk chunk)
static void CreateBrushes()
static List< TerrainBrush > m_clayPocketBrushes
virtual void UpdateFluidIsTop(TerrainChunk chunk)
void GenerateBottomSuckers(TerrainChunk chunk)
void GenerateSurface(TerrainChunk chunk)
Vector2 m_mountainsOffset
float TGShoreFluctuations
static List< TerrainBrush > m_sulphurBrushes
List< ChunkGenerationStep > ChunkGenerationStep3
void GeneratePumpkins(TerrainChunk chunk)
static List< List< TerrainBrush > > m_caveBrushesByType
float TGTurbulenceStrength
static List< TerrainBrush > m_copperBrushes
void GenerateBedrockAndAir(TerrainChunk chunk)
void GenerateLogs(TerrainChunk chunk)
float TGMountainsPercentage
static int ExtractContents(int value)
static int ReplaceData(int value, int data)
virtual int GetHumidity(int x, int z)
virtual void SetCellValueFast(int x, int y, int z, int value)
static int ToCell(float x)
virtual int GetCellContentsFast(int x, int y, int z)
static int ReplaceContents(int value, int contents)
方块值的最低10位,替换为目标Content
static int MakeBlockValue(int contents)
static int ExtractData(int value)
virtual int CalculateTopmostCellHeight(int x, int z)
virtual int GetTemperature(int x, int z)
static int SetCutFace(int data, int cutFace)
virtual Subsystem FindSubsystem(Type type, string name, bool throwOnError)
static void HookAction(string HookName, Func< ModLoader, bool > action)
执行Hook
static readonly Vector2 Zero
static Vector2 Round(Vector2 v)
static Vector3 Cross(Vector3 v1, Vector3 v2)
static Vector3 Normalize(Vector3 v)
static readonly Vector3 Zero
static int OppositeFace(int face)
static Point3 FaceToPoint3(int face)
static int Point3ToFace(Point3 p, int maxFace=5)