Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemBlockBehavior.cs
浏览该文件的文档.
1using Engine;
4
5namespace Game {
6 public abstract class SubsystemBlockBehavior : Subsystem {
7 public virtual int[] HandledBlocks => [];
8
9 public SubsystemTerrain SubsystemTerrain { get; set; }
10
11 public virtual void OnChunkInitialized(TerrainChunk chunk) { }
12
13 public virtual void OnChunkDiscarding(TerrainChunk chunk) { }
14
15 public virtual void OnBlockGenerated(int value, int x, int y, int z, bool isLoaded) { }
16
17 public virtual void OnBlockAdded(int value, int oldValue, int x, int y, int z) { }
18
19 public virtual void OnBlockRemoved(int value, int newValue, int x, int y, int z) { }
20
21 public virtual void OnBlockModified(int value, int oldValue, int x, int y, int z) { }
22
23 public virtual void OnBlockStartMoving(int value, int newValue, int x, int y, int z, MovingBlock movingBlock) {
24 OnBlockRemoved(value, newValue, x, y, z);
25 }
26
27 public virtual void OnBlockStopMoving(int value, int oldValue, int x, int y, int z, MovingBlock movingBlock) {
28 OnBlockAdded(value, oldValue, x, y, z);
29 }
30
31 public virtual void OnNeighborBlockChanged(int x, int y, int z, int neighborX, int neighborY, int neighborZ) { }
32
33 public virtual bool OnUse(Ray3 ray, ComponentMiner componentMiner) => false;
34
35 public virtual bool OnInteract(TerrainRaycastResult raycastResult, ComponentMiner componentMiner) => false;
36
37 public virtual bool OnInteract(MovingBlocksRaycastResult movingBlocksRaycastResult, ComponentMiner componentMiner) => false;
38
39 public virtual bool OnAim(Ray3 aim, ComponentMiner componentMiner, AimState state) => false;
40
41 public virtual bool OnEditBlock(int x, int y, int z, int value, ComponentPlayer componentPlayer) => false;
42
43 public virtual bool OnEditInventoryItem(IInventory inventory, int slotIndex, ComponentPlayer componentPlayer) => false;
44
45 public virtual void OnItemPlaced(int x, int y, int z, ref BlockPlacementData placementData, int itemValue) { }
46
47 public virtual void OnItemHarvested(int x, int y, int z, int blockValue, ref BlockDropValue dropValue, ref int newBlockValue) { }
48
49 public virtual void OnCollide(CellFace cellFace, float velocity, ComponentBody componentBody) { }
50
51 public virtual void OnExplosion(int value, int x, int y, int z, float damage) { }
52
53 public virtual void OnFiredAsProjectile(Projectile projectile) { }
54
55 public virtual bool OnHitAsProjectile(CellFace? cellFace, ComponentBody componentBody, WorldItem worldItem) => false;
56
57 public virtual void OnHitByProjectile(CellFace cellFace, WorldItem worldItem) { }
58 public virtual void OnHitByProjectile(MovingBlock movingBlock, WorldItem worldItem) { }
59
60 public virtual int GetProcessInventoryItemCapacity(IInventory inventory, int slotIndex, int value) => 0;
61
62 public virtual void ProcessInventoryItem(IInventory inventory,
63 int slotIndex,
64 int value,
65 int count,
66 int processCount,
67 out int processedValue,
68 out int processedCount) {
69 throw new InvalidOperationException("Cannot process items.");
70 }
71
72 public override void Load(ValuesDictionary valuesDictionary) {
73 SubsystemTerrain = Project.FindSubsystem<SubsystemTerrain>(true);
74 }
75
76 public virtual void OnPickableGathered(Pickable pickable, ComponentPickableGatherer target, Vector3 distanceToTarget) { }
77 }
78}
virtual bool OnEditBlock(int x, int y, int z, int value, ComponentPlayer componentPlayer)
virtual void OnItemHarvested(int x, int y, int z, int blockValue, ref BlockDropValue dropValue, ref int newBlockValue)
virtual void OnBlockStopMoving(int value, int oldValue, int x, int y, int z, MovingBlock movingBlock)
virtual void OnCollide(CellFace cellFace, float velocity, ComponentBody componentBody)
virtual void OnChunkInitialized(TerrainChunk chunk)
virtual void OnBlockGenerated(int value, int x, int y, int z, bool isLoaded)
virtual bool OnInteract(TerrainRaycastResult raycastResult, ComponentMiner componentMiner)
virtual bool OnHitAsProjectile(CellFace? cellFace, ComponentBody componentBody, WorldItem worldItem)
virtual void OnNeighborBlockChanged(int x, int y, int z, int neighborX, int neighborY, int neighborZ)
override void Load(ValuesDictionary valuesDictionary)
virtual void OnExplosion(int value, int x, int y, int z, float damage)
virtual void OnBlockAdded(int value, int oldValue, int x, int y, int z)
virtual void OnBlockModified(int value, int oldValue, int x, int y, int z)
virtual void OnHitByProjectile(CellFace cellFace, WorldItem worldItem)
virtual void ProcessInventoryItem(IInventory inventory, int slotIndex, int value, int count, int processCount, out int processedValue, out int processedCount)
virtual bool OnUse(Ray3 ray, ComponentMiner componentMiner)
virtual bool OnEditInventoryItem(IInventory inventory, int slotIndex, ComponentPlayer componentPlayer)
virtual bool OnInteract(MovingBlocksRaycastResult movingBlocksRaycastResult, ComponentMiner componentMiner)
virtual void OnFiredAsProjectile(Projectile projectile)
virtual bool OnAim(Ray3 aim, ComponentMiner componentMiner, AimState state)
virtual void OnChunkDiscarding(TerrainChunk chunk)
virtual void OnBlockRemoved(int value, int newValue, int x, int y, int z)
virtual void OnPickableGathered(Pickable pickable, ComponentPickableGatherer target, Vector3 distanceToTarget)
virtual int GetProcessInventoryItemCapacity(IInventory inventory, int slotIndex, int value)
virtual void OnHitByProjectile(MovingBlock movingBlock, WorldItem worldItem)
virtual void OnBlockStartMoving(int value, int newValue, int x, int y, int z, MovingBlock movingBlock)
virtual void OnItemPlaced(int x, int y, int z, ref BlockPlacementData placementData, int itemValue)
ValuesDictionary ValuesDictionary