Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
BottomSuckerBlock.cs
浏览该文件的文档.
1using Engine;
2
3namespace Game {
4 public abstract class BottomSuckerBlock : WaterBlock {
5 public override BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain,
6 ComponentMiner componentMiner,
7 int value,
8 TerrainRaycastResult raycastResult) {
9 Point3 point = raycastResult.CellFace.Point + CellFace.FaceToPoint3(raycastResult.CellFace.Face);
10 int cellValue = subsystemTerrain.Terrain.GetCellValue(point.X, point.Y, point.Z);
11 int num = Terrain.ExtractContents(cellValue);
12 int data = Terrain.ExtractData(cellValue);
13 Block obj = BlocksManager.Blocks[num];
14 int face = Time.FrameIndex % 4;
15 BlockPlacementData result;
16 if (obj is WaterBlock) {
17 result = default;
18 result.CellFace = raycastResult.CellFace;
19 result.Value = Terrain.MakeBlockValue(BlockIndex, 0, SetSubvariant(SetFace(data, raycastResult.CellFace.Face), face));
20 return result;
21 }
22 result = default;
23 return result;
24 }
25
26 public static int GetFace(int data) => (data >> 8) & 7;
27
28 public static int SetFace(int data, int face) => (data & -1793) | ((face & 7) << 8);
29
30 public static int GetSubvariant(int data) => (data >> 11) & 3;
31
32 public static int SetSubvariant(int data, int face) => (data & -6145) | ((face & 3) << 11);
33
34 public override bool IsMovableByPiston(int value, int pistonFace, int y, out bool isEnd) {
35 isEnd = false;
36 return false;
37 }
38 }
39}
static int FrameIndex
定义 Time.cs:26
int BlockIndex
定义 Block.cs:6
override bool IsMovableByPiston(int value, int pistonFace, int y, out bool isEnd)
static int GetSubvariant(int data)
override BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain, ComponentMiner componentMiner, int value, TerrainRaycastResult raycastResult)
方块放置方向
static int SetSubvariant(int data, int face)
static int SetFace(int data, int face)
static int ExtractContents(int value)
virtual int GetCellValue(int x, int y, int z)
static int MakeBlockValue(int contents)
static int ExtractData(int value)
static Point3 FaceToPoint3(int face)