5 public abstract class Block {
26 [Obsolete(
"overrode \"IsIndexDynamic\" instead.")]
28#pragma warning disable CS0618
30#pragma warning restore CS0618
197 vertex.Tx = (short)(vertex.
Tx * 16f);
198 vertex.Ty = (short)(vertex.
Ty * 16f);
199 vertex.Color =
new Color(b, b, b, (
byte)128);
204 int num2 = Math.Clamp((
int)(digProgress * 8f), 0, 7);
205 return defaultCrackTextures[num2];
235 string bn = $
"{GetType().Name}:{data}";
254 public virtual bool CanWear(
int value) =>
false;
284 string bn = $
"{GetType().Name}:{data}";
320 string[] ingredients,
322 float playerLevel) =>
null;
385 result.Value = value;
386 result.CellFace = raycastResult.
CellFace;
401 result.CellFace = raycastResult.
CellFace;
411 List<BlockDropValue> dropValues,
412 out
bool showDebris) {
423 for (
int i = 0; i < num; i++) {
425 dropValues.Add(item);
432 for (
int j = 0; j < num2; j++) {
434 dropValues.Add(item);
443 num |= Math.Clamp(damage, 0, 4095) << 4;
465 return (dur - dag) / (float)dur;
504 bool useInteractionBoxes,
505 out
int nearestBoxIndex,
507 float? result =
null;
509 nearestBox =
default;
513 for (
int i = 0; i < array.Length; i++) {
516 && (!result.HasValue || num.Value < result.Value)) {
521 nearestBox = array[nearestBoxIndex];
virtual void GetDropValues(SubsystemTerrain subsystemTerrain, int oldValue, int newValue, int toolLevel, List< BlockDropValue > dropValues, out bool showDebris)
virtual string GetCategory(int value)
bool CanBeBuiltIntoFurniture
virtual float GetFirstPersonScale(int value)
virtual BlockDebrisParticleSystem CreateDebrisParticleSystem(SubsystemTerrain subsystemTerrain, Vector3 position, int value, float strength)
virtual void GenerateTerrainVertices(BlockGeometryGenerator generator, TerrainGeometrySubset geometry, int value, int x, int y, int z)
virtual FoodType GetFoodType(int value)
virtual bool CanBlockBeBuiltIntoFurniture(int value)
virtual bool IsTransparent_(int value)
static BoundingBox[] m_defaultCollisionBoxes
virtual bool IsNonAttachable(int value)
virtual float GetDigResilience(int value)
virtual bool GetExplosionIncendiary(int value)
virtual bool IsGatherable_(int value)
virtual Vector3 GetIconBlockOffset(int value, DrawBlockEnvironmentData environmentData)
virtual float GetIconViewScale(int value, DrawBlockEnvironmentData environmentData)
virtual BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain, ComponentMiner componentMiner, int value, TerrainRaycastResult raycastResult)
方块放置方向
virtual float GetProjectileStickProbability(int value)
virtual float GetHackPower(int value)
bool? DefaultIsNonAttachable
virtual BoundingBox[] GetCustomInteractionBoxes(SubsystemTerrain terrain, int value)
float DefaultIconViewScale
virtual int GetTextureSlotCount(int value)
设置材质(正方形)单行格子(分割后每个材质)数,对放置后的方块无效
float ExplosionResilience
virtual string GetSoundMaterialName(SubsystemTerrain subsystemTerrain, int value)
virtual bool HasCollisionBehavior_(int value)
virtual int GetToolLevel(int value)
float ProjectileStickProbability
virtual IEnumerable< CraftingRecipe > GetProceduralCraftingRecipes()
int DefaultEmittedLightAmount
virtual bool IsIndexDynamic
virtual bool IsCollapseSupportBlock(SubsystemTerrain subsystemTerrain, int value)
virtual Vector3 GetInHandOffset(int value)
virtual bool IsInteractive(SubsystemTerrain subsystemTerrain, int value)
virtual float GetDensity(int value)
virtual float GetExplosionResilience(int value)
virtual float GetMeleePower(int value)
virtual int GetPriorityPlace(int value, ComponentMiner componentMiner)
virtual bool ShouldAvoid(int value)
virtual bool GetAlignToVelocity(int value)
Vector3 FirstPersonOffset
virtual float GetQuarryPower(int value)
virtual float GetProjectilePower(int value)
Vector3 DefaultIconViewOffset
float DestructionDebrisScale
virtual bool GenerateFacesForSameNeighbors_(int value)
string DefaultSoundMaterialName
virtual RecipaediaRecipesScreen GetBlockRecipeScreen(int value)
bool IsDiggingTransparent
virtual int SetDamage(int value, int damage)
virtual float GetProjectileSpeed(int value)
virtual float GetExplosionPressure(int value)
void GenerateTerrainVertices(BlockGeometryGenerator generator, TerrainGeometry geometry, int value, int x, int y, int z)
生成地形顶点(用于绘制放置的方块)
virtual void Initialize()
virtual ClothingData GetClothingData(int value)
virtual bool IsFaceTransparent(SubsystemTerrain subsystemTerrain, int face, int value)
virtual string GetDescription(int value)
virtual string GetCraftingId(int value)
virtual bool IsAimable_(int value)
virtual bool IsEditable_(int value)
virtual bool IsNonDuplicable_(int value)
virtual int GetPriorityUse(int value, ComponentMiner componentMiner)
virtual bool IsMovableByPiston(int value, int pistonFace, int y, out bool isEnd)
virtual int GetShadowStrength(int value)
virtual Vector3 GetFirstPersonOffset(int value)
void DrawBlock(PrimitivesRenderer3D primitivesRenderer, int value, Color color, float size, ref Matrix matrix, DrawBlockEnvironmentData environmentData)
绘制方块_用于绘制方块物品形态
string DefaultDescription
virtual bool IsPlacementTransparent_(int value)
virtual bool CanWear(int value)
virtual bool IsStickable_(int value)
float DefaultMeleeHitProbability
virtual int GetDisplayOrder(int value)
virtual bool Eat(ComponentVitalStats vitalStats, int value)
virtual bool IsFaceNonAttachable(SubsystemTerrain subsystemTerrain, int face, int value, int attachBlockValue)
virtual CraftingRecipe GetAdHocCraftingRecipe(SubsystemTerrain subsystemTerrain, string[] ingredients, float heatLevel, float playerLevel)
virtual int GetPlayerLevelRequired(int value)
bool GenerateFacesForSameNeighbors
virtual bool IsSwapAnimationNeeded(int oldValue, int newValue)
virtual Vector3 GetInHandRotation(int value)
virtual bool IsPlaceable_(int value)
virtual BlockPlacementData GetDigValue(SubsystemTerrain subsystemTerrain, ComponentMiner componentMiner, int value, int toolValue, TerrainRaycastResult raycastResult)
virtual int GetDamage(int value)
float DefaultNutritionalValue
virtual bool CanBeFiredByDispenser(int value)
virtual float GetShovelPower(int value)
virtual int GetRotPeriod(int value)
virtual bool ShouldAvoid(int value, ComponentPilot componentPilot)
virtual bool GetIsDiggingTransparent(int value)
virtual Texture2D GetDiggingCrackingTexture(ComponentMiner miner, float digProgress, int value, Texture2D[] defaultCrackTextures)
Vector3 FirstPersonRotation
virtual int GetPriorityInteract(int value, ComponentMiner componentMiner)
string DefaultDisplayName
float DefaultExperienceCount
virtual bool IsFluidBlocker_(int value)
bool ExplosionKeepsPickables
virtual float GetBlockHealth(int value)
virtual float GetRequiredToolLevel(int value)
bool HasCollisionBehavior
float ProjectileTipOffset
virtual bool ShouldGenerateFace(SubsystemTerrain subsystemTerrain, int face, int value, int neighborValue, int x, int y, int z)
bool DefaultExplosionIncendiary
virtual int GetFaceTextureSlot(int face, int value)
virtual float GetInHandScale(int value)
virtual float GetMeleeHitProbability(int value)
virtual int GetMaxStacking(int value)
virtual int GetDurability(int value)
virtual bool IsCollidable_(int value)
bool IsPlacementTransparent
virtual string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
virtual bool IsCollapseDestructibleBlock(int value)
int DefaultShadowStrength
virtual float GetFireDuration(int value)
float ProjectileResilience
virtual RecipaediaDescriptionScreen GetBlockDescriptionScreen(int value)
float DefaultSicknessProbability
virtual ? float Raycast(Ray3 ray, SubsystemTerrain subsystemTerrain, int value, bool useInteractionBoxes, out int nearestBoxIndex, out BoundingBox nearestBox)
virtual bool IsSuitableForPlants(int value, int plantValue)
virtual bool IsHeatBlocker(int value)
float ObjectShadowStrength
virtual bool IsBlockingPiston(int value)
float DefaultProjectilePower
virtual int GetEmittedLightAmount(int value)
virtual IEnumerable< int > GetCreativeValues()
virtual Vector3 GetIconViewOffset(int value, DrawBlockEnvironmentData environmentData)
virtual bool ShouldBeAddedToProject(SubsystemBlocksManager subsystemBlocksManager)
Vector3 DefaultIconBlockOffset
virtual bool MatchCrafingId(string CraftId)
virtual int GetDamageDestructionValue(int value)
virtual Vector3 GetFirstPersonRotation(int value)
virtual TerrainVertex SetDiggingCrackingTextureTransform(TerrainVertex vertex)
virtual float GetHeat(int value)
virtual float GetObjectShadowStrength(int value)
virtual float GetProjectileResilience(int value)
virtual float GetProjectileDamping(int value)
float DefaultExplosionPressure
bool DefaultIsInteractive
virtual bool GetIsCollapsable(int value)
virtual BlockDigMethod GetBlockDigMethod(int value)
virtual float GetFuelFireDuration(int value)
virtual float GetFuelHeatLevel(int value)
virtual BoundingBox[] GetCustomCollisionBoxes(SubsystemTerrain terrain, int value)
virtual float GetNutritionalValue(int value)
virtual float GetSicknessProbability(int value)
SubsystemTerrain m_subsystemTerrain
static bool TryGetBlock(string blockName, string prop, out string result)
static string Get(string className, int key)
获取在当前语言类名键对应的字符串
static RecipaediaDescriptionScreen Default
static RecipaediaRecipesScreen Default
static int ExtractContents(int value)
static int ReplaceData(int value, int data)
static int ReplaceContents(int value, int contents)
方块值的最低10位,替换为目标Content
static int MakeBlockValue(int contents)
static int ExtractData(int value)
float? Intersection(BoundingBox box)
static readonly Vector3 One
static readonly Vector3 Zero
static int OppositeFace(int face)