Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemFenceBlockBehavior.cs
浏览该文件的文档.
1namespace Game {
3 public override int[] HandledBlocks => [];
4
5 public override void OnNeighborBlockChanged(int x, int y, int z, int neighborX, int neighborY, int neighborZ) {
6 int cellValue = SubsystemTerrain.Terrain.GetCellValue(x, y, z);
7 UpdateVariant(cellValue, x, y, z);
8 }
9
10 public override void OnBlockAdded(int value, int oldValue, int x, int y, int z) {
11 UpdateVariant(value, x, y, z);
12 }
13
14 public virtual void UpdateVariant(int value, int x, int y, int z) {
15 int num = Terrain.ExtractContents(value);
16 if (BlocksManager.Blocks[num] is FenceBlock fenceBlock) {
17 int cellValue = SubsystemTerrain.Terrain.GetCellValue(x + 1, y, z);
18 int cellValue2 = SubsystemTerrain.Terrain.GetCellValue(x - 1, y, z);
19 int cellValue3 = SubsystemTerrain.Terrain.GetCellValue(x, y, z + 1);
20 int cellValue4 = SubsystemTerrain.Terrain.GetCellValue(x, y, z - 1);
21 int num2 = 0;
22 if (fenceBlock.ShouldConnectTo(cellValue)) {
23 num2++;
24 }
25 if (fenceBlock.ShouldConnectTo(cellValue2)) {
26 num2 += 2;
27 }
28 if (fenceBlock.ShouldConnectTo(cellValue3)) {
29 num2 += 4;
30 }
31 if (fenceBlock.ShouldConnectTo(cellValue4)) {
32 num2 += 8;
33 }
34 int data = Terrain.ExtractData(value);
35 int value2 = Terrain.ReplaceData(value, FenceBlock.SetVariant(data, num2));
36 SubsystemTerrain.ChangeCell(x, y, z, value2);
37 }
38 }
39 }
40}
static int SetVariant(int data, int variant)
virtual void UpdateVariant(int value, int x, int y, int z)
override void OnBlockAdded(int value, int oldValue, int x, int y, int z)
override void OnNeighborBlockChanged(int x, int y, int z, int neighborX, int neighborY, int neighborZ)
static int ExtractContents(int value)
static int ReplaceData(int value, int data)
static int ExtractData(int value)