Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SeedsBlock.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
5 public class SeedsBlock : FlatBlock {
16
17 public static int Index = 173;
18
19 public override IEnumerable<int> GetCreativeValues() {
20 List<int> list = new();
21 foreach (int enumValue in EnumUtils.GetEnumValues<SeedType>()) {
22 list.Add(Terrain.MakeBlockValue(173, 0, enumValue));
23 }
24 return list;
25 }
26
27 public override int GetFaceTextureSlot(int face, int value) {
28 int num = Terrain.ExtractData(value);
29 if (num == 5
30 || num == 4) {
31 return 74;
32 }
33 return 75;
34 }
35
36 public override BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain,
37 ComponentMiner componentMiner,
38 int value,
39 TerrainRaycastResult raycastResult) {
40 BlockPlacementData result = default;
41 result.CellFace = raycastResult.CellFace;
42 if (raycastResult.CellFace.Face == 4) {
43 switch ((SeedType)Terrain.ExtractData(value)) {
44 case SeedType.TallGrass: result.Value = Terrain.MakeBlockValue(19, 0, TallGrassBlock.SetIsSmall(0, true)); break;
45 case SeedType.RedFlower: result.Value = Terrain.MakeBlockValue(20, 0, FlowerBlock.SetIsSmall(0, true)); break;
46 case SeedType.PurpleFlower: result.Value = Terrain.MakeBlockValue(24, 0, FlowerBlock.SetIsSmall(0, true)); break;
47 case SeedType.WhiteFlower: result.Value = Terrain.MakeBlockValue(25, 0, FlowerBlock.SetIsSmall(0, true)); break;
48 case SeedType.WildRye: result.Value = Terrain.MakeBlockValue(174, 0, RyeBlock.SetSize(RyeBlock.SetIsWild(0, false), 0)); break;
49 case SeedType.Rye: result.Value = Terrain.MakeBlockValue(174, 0, RyeBlock.SetSize(RyeBlock.SetIsWild(0, false), 0)); break;
50 case SeedType.Cotton: result.Value = Terrain.MakeBlockValue(204, 0, CottonBlock.SetSize(CottonBlock.SetIsWild(0, false), 0)); break;
51 case SeedType.Pumpkin: result.Value = Terrain.MakeBlockValue(131, 0, BasePumpkinBlock.SetSize(BasePumpkinBlock.SetIsDead(0, false), 0)); break;
52 }
53 }
54 return result;
55 }
56
57 public override void DrawBlock(PrimitivesRenderer3D primitivesRenderer,
58 int value,
59 Color color,
60 float size,
61 ref Matrix matrix,
62 DrawBlockEnvironmentData environmentData) {
63 switch ((SeedType)Terrain.ExtractData(value)) {
64 case SeedType.TallGrass: color *= new Color(160, 150, 125); break;
65 case SeedType.RedFlower: color *= new Color(192, 160, 160); break;
66 case SeedType.PurpleFlower: color *= new Color(192, 160, 192); break;
67 case SeedType.WhiteFlower: color *= new Color(192, 192, 192); break;
68 case SeedType.WildRye: color *= new Color(60, 138, 76); break;
69 case SeedType.Rye: color *= new Color(255, 255, 255); break;
70 case SeedType.Pumpkin: color *= new Color(240, 225, 190); break;
71 }
73 primitivesRenderer,
74 value,
75 size,
76 ref matrix,
77 null,
78 color,
79 false,
80 environmentData
81 );
82 }
83 }
84}
Engine.Color Color
static int SetIsDead(int data, bool isDead)
static int SetSize(int data, int size)
static void DrawFlatOrImageExtrusionBlock(PrimitivesRenderer3D primitivesRenderer, int value, float size, ref Matrix matrix, Texture2D texture, Color color, bool isEmissive, DrawBlockEnvironmentData environmentData)
static int SetSize(int data, int size)
static int SetIsWild(int data, bool isWild)
static IList< int > GetEnumValues(Type type)
static int SetIsSmall(int data, bool isSmall)
static int SetIsWild(int data, bool isWild)
static int SetSize(int data, int size)
override IEnumerable< int > GetCreativeValues()
override BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain, ComponentMiner componentMiner, int value, TerrainRaycastResult raycastResult)
方块放置方向
override void DrawBlock(PrimitivesRenderer3D primitivesRenderer, int value, Color color, float size, ref Matrix matrix, DrawBlockEnvironmentData environmentData)
override int GetFaceTextureSlot(int face, int value)
static int SetIsSmall(int data, bool isSmall)
static int MakeBlockValue(int contents)
static int ExtractData(int value)