登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情
代码拉取完成,页面将自动刷新
开源项目
>
游戏/娱乐
>
游戏
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
24
Star
83
Fork
13
把红色赋予黑海
/
SurvivalcraftVRTAPI
代码
Issues
24
Wiki
统计
流水线
服务
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
标签
标签名
描述
提交信息
操作
1.8.2.3
解决了主线不支持arm64指令集的问题
a866582
2025-04-20 23:17
下载
查看发行版
NewRepositoryNotice
**本仓库已迁移至 This repository has been moved to** [https://gitee.com/SC-SPM/SurvivalcraftApi](https://gitee.com/SC-SPM/SurvivalcraftApi)
a866582
2025-04-20 23:17
下载
查看发行版
BeforeSilkNet
Abandon OpenTK, Toward Silk.Net
aa02dd6
2025-01-22 23:01
下载
API1.801
跟进原版2.4并修复大量bug
ba31601
2025-01-18 02:30
下载
查看发行版
API1.80
跟进原版2.4并修复大量bug
a1732f6
2025-01-16 17:57
下载
API1.72
# API1.72更新内容 - MOD接口方面 ## ModInfo结构 模组增加LoadOrder字段 建议: 主题模组的LoadOrder在-100000~-10000的范围 辅助模组的LoadOrder在10000~100000的范围 示例: modinfo.json { "Name": "Gigavolt 十亿伏特", "Version": "1.0", "ApiVersion": "1.72", "Description": "这是一个为生存战争游戏带来十亿伏特电力系统的mod,将原版的16个电压级别(0~1.5V)扩展到2^32个(0~2^32-1V)", "ScVersion": "2.3.0.0", "Link": "https://github.com/XiaofengdiZhu/Gigavolt", "Author": "销锋镝铸", "PackageName": "xfdz.Gigavolt", "Dependencies": [], "LoadOrder": 10000 } ## 动态方块ID 为提高模组之间的兼容性,减少方块ID冲突,API1.72采用 **动态方块ID**,方块Index在300及以上的方块会被采用动态方块ID分配,方块定义的Index不再是正确的方块ID。 使用方块的正确Index需要采用 * ```BlocksManager.GetBlockIndex(string BlockName)``` * ```BlocksManager.GetBlock(string BlockName)``` * ```block.BlockIndex``` Block.Index由常量改为静态变量,会随着动态方块ID的分配而改变。建议模组将```Block.Index```修饰类型由const改为static,这样可以通过```Block.Index```来引用方块 ## 常用组件调整 为了保证模组之间的兼容性,不同模组共同发展。API1.72对组件覆盖的行为进行了限制。 当有模组覆盖了常用组件,或者不同的模组对同一个Guid进行了new-覆盖操作时,会在加载屏幕进行报错。玩家将会选择是否禁用覆盖操作。因此不再建议模组作者对数据库**尤其是常用组件**进行覆盖 覆盖警告的常用组件包含以下组件和guid: ModifiedElement["7347a83f-2d46-4fdf-bce2-52677de0b568"] = "Game.ComponentBody"; ModifiedElement["4e14ce27-fdef-46ca-8ea0-26af43c215e5"] = "Game.ComponentHealth"; ModifiedElement["7ecfafc4-4603-424c-87dd-1df59e7ef413"] = "Game.ComponentPlayer"; ModifiedElement["9dc356e5-7dc8-45f6-8779-827ddee9966c"] = "Game.ComponentMiner"; ModifiedElement["6f538db3-f1fe-4e91-8ef5-627c0b1a74ba"] = "Game.ComponentRunAwayBehavior"; ModifiedElement["8b3d07dc-6498-4691-9686-cf4edabb8f3f"] = "Game.ComponentGui"; ModifiedElement["e2636c38-f179-4aa1-b087-ed6920d66e8e"] = "Game.SubsystemTerrain"; ModifiedElement["1c95cd40-26be-44cf-938a-157b318ff086"] = "Game.SubsystemPlantBlockBehavior"; ModifiedElement["937999c9-9570-4cbd-8390-23f1e4609cdd"] = "Game.SubsystemPistonBlockBehavior"; ModifiedElement["96e79f99-a082-4190-9ab6-835dc49ebbdd"] = "Game.SubsystemExplosions"; ModifiedElement["dafb8e14-11b9-44b7-a208-424b770aeaa9"] = "Game.SubsystemProjectiles"; ModifiedElement["32d392de-69c1-4d04-9e0b-5c7463201892"] = "Game.SubsystemPickables"; ModifiedElement["54a4f6d5-98dd-4dc3-bf6d-04dfd972c6b7"] = "Game.SubsystemTime"; ### ComponentPlayer 调整 #### 当Interact生效(玩家点击屏幕,或鼠标右键)时,逻辑会进行改变: 首先通过方块的新增属性```GetPriorityUse, GetPriorityInteract, GetPriorityPlace```和```ModLoader.OnPlayerInputInteract```来确定<使用手中方块><交互面前方块><放置手中方块>这三个行为的优先级。 之后根据三者优先级,选择优先级最高且大于0的行为执行。 例如: > 口哨方块放置优先级为0,箱子方块交互优先级为2000,口哨方块使用优先级为3000。那么手持口哨点击箱子时,由于口哨方块使用优先级最高,则会执行“使用口哨”,即吹响口哨。 #### 对玩家的输入行为增加了大量的ModLoader接口 详见下方的ModLoader接口介绍。 ### ComponentLevel 调整 增加了一个ComponentFactors,用于控制生物的力量乘数、防御乘数、移速乘数。而ComponentLevel被改为只和经验值相关的组件。 所有非玩家生物都拥有了ComponentFactors,玩家的ComponentLevel继承ComponentFactors。 ComponentLocomotion, ComponentMiner, ComponentHealth中引用到的力量、防御、移速乘数被改为引用ComponentFactors。 #### 增加了以下ModLoader接口: ComponentFactors.OnFactorsUpdate: 用于更新非玩家生物的力量、防御、移速倍率。 ### SubsystemProjectiles调整 Update进行了重大调整。射弹的更新逻辑被放到Projectile.Update()中执行。 这意味着你可以在```SubsystemProjectiles.m_projectiles```容纳各种各样的Projectile。它们有不同的更新行为。 #### Projectile增加了以下字段和方法: public bool IsFireProof = false;//该弹射物和掉落物防火,不会被火焰或熔岩烧毁 public float? MaxTimeExist; public float ExplosionMass = 20f;//处于爆炸中时,进行爆炸计算的质量 public GameEntitySystem.Entity OwnerEntity; //以Entity的形式指明弹射物来源(比如发射器) public float Damping = -1f;//射弹的速度衰减 public float DampingInFluid = 0.001f; public float Gravity = 10f; public float TerrainKnockBack = 0.3f; public bool StopTrailParticleInFluid = true; public int DamageToPickable = 1;//弹射物结算时掉的耐久 public bool TerrainCollidable = true; public bool BodyCollidable = true; public List<ComponentBody> BodiesToIgnore = new List<ComponentBody>();//弹射物飞行的时候会忽略List中的ComponentBody public virtual void Update(float dt) //执行弹射物的更新操作 public virtual void OnProjectileFlyOutOfLoadedChunks() //弹射物飞离加载区块时执行的操作 public override void UnderExplosion(Vector3 impulse, float damage)//弹射物受到爆炸时执行的操作 #### SubsystemProjectiles增加了以下ModLoader接口 OnProjectileAdded:弹射物在创建世界时,或者发射时执行。可以在此时更改弹射物的属性,甚至类别。 OnProjectileDraw: 控制弹射物的绘制 SaveProjectile: 存储弹射物 #### Projectile增加了以下ModLoader接口 OnProjectileHitBody: 弹射物在命中生物时执行。可以控制攻击力、命中后改变弹射物的移速。还可以设置ignoreBody = true来跳过弹射物判定当前Body。模组可以在此接口中增加其他行为。 OnProjectileHitTerrain: 弹射物在命中方块时执行。可以控制是否摧毁方块,弹射物命中后移速等行为。模组可以在此接口中增加其他行为。 SavePickable: 存储掉落物 ### SubsystemPickables调整 掉落物系统进行了重大调整。掉落物的更新逻辑被放到Pickable.Update()中执行。 这意味着你可以在```SubsystemPickables.m_pickables```容纳各种各样的Pickable。它们有不同的更新行为。 掉落物被玩家吸取的逻辑被转移到ComponentPickableGatherer中,拥有此组件并进行合理配置的实体(如玩家)可以收集掉落物。 如方块在吸取时并不是直接进入物品栏,而是进行其他操作(如经验球),特殊操作在SubsystemBlockBehavior.OnPickableGathered()中执行。 模组作者建议参考ComponentPickableGatherer, ComponentPickableGathererPlayer, SubsystemExperienceBlockBehavior仿照经验球来定义掉落物在拾起的特殊行为。 #### Pickable增加了以下字段和方法: public bool IsFireProof = false;//该弹射物和掉落物防火,不会被火焰或熔岩烧毁 public float? MaxTimeExist; public float ExplosionMass = 20f;//处于爆炸中时,进行爆炸计算的质量 public virtual double TimeWaitToAutoPick => m_timeWaitToAutoPick;//掉落物只有在存在时长超过这个时间(初始值为0.5秒)后才能被捡起。 public virtual float DistanceToPick => m_distanceToPick;//掉落物在距离目标这个范围(初始值为1格)内时,会立即进入玩家背包。 public virtual float DistanceToFlyToTarget => m_distanceToFlyToTarget;//掉落物在距离目标这个单位(初始值为1.75格)内时,会飞向玩家。 public override void UnderExplosion(Vector3 impulse, float damage)//处于爆炸状态下执行的操作 #### SubsystemPickables增加了以下ModLoader接口: OnPickableAdded:掉落物在创建世界时,或者生成时执行。可以在此时更改掉落物的属性,甚至类别。 OnPickableDraw: 控制掉落物的绘制 ## 组件接口 #### 在SubsystemBodies增加BodyCountInRaycast接口 可以决断是否将一个ComponentBody纳入Raycast结果当中 #### 在SubsystemProjectile中、新增了OnProjectileAdded、SaveProjectile、OnProjectileUpdate接口 用于控制弹射物的行动规律 #### 在SubsystemPickable中、新增了OnPickableAdded、SavePickable、OnPickableUpdate接口 用于控制掉落物的行动规律 #### SubsystemTime新增ChangeGameTimeDelta接口 用于控制每帧的时间 #### SubsystemUpdate增加OnIUpdateableAddOrRemove接口 用于控制更新队列 #### SubsystemDrawing增加OnIDrawableAdded接口 用于控制绘制更新队列 #### 增加Entity.RemoveComponent、Entity.ReplaceComponent 控制实体的组件 #### SubsystemFurnitureBlockBehavior增加OnFurnitureDesigned接口: 能够控制创建家具时,产生的家具个数、是否摧毁原有模型,以及家具锤掉落的耐久。如果家具锤耐久不足,则创建家具失败。Mod可以通过该接口修复“家具锤敲已有家具后,能够复制家具”的bug #### DamageItem提供接口 控制物品掉耐久时执行的操作 #### ComponentFactors增加OnFactorsUpdate接口 用于更新非玩家生物的力量、防御、移速倍率。 #### SubsystemExplosions增加CalculateExplosionPower接口 用于控制爆炸的爆炸强度 #### SubsystemSky增加OnLightningStrike接口 用于控制雷电劈下时的爆炸强度,距离上一次闪电的时间间隔等属性,模组也可以在这个接口里面添加其他行为。 #### TerrainContentsGenerator23增加OnTerrainBrushesGenerated接口 用于调整原版已有矿物、水域、植物等地形地貌的生成,例如减少原版矿物生成量。 模组自身的建筑等生成建议调用OnTerrainContentsGenerated接口 ### ComponentBody增加以下接口: > OnComponentBodyExploded: 于控制动物在受到爆炸时的伤害、击退等属性UpdateComponentBody: 进行实体的更新。建议只对自己mod的实体进行更新,不要插手其他mod的实体。 ### ComponentHealth有以下接口变化: #### 弃用ComponentHealth中OnCreatureInjure接口,改为使用以下接口: > CalculateCreatureInjuryAmount:用于控制受到伤害的数量 > > OnCreatureDying:在生物生命值低于0濒死时触发,如果将生命值改为大于0的数则取消死亡判定。用于mod生物的免死机制 > > OnCreatureDied:在生物死亡判定时触发,可以控制是否计入击杀、以及经验球的掉落数量 #### 增加接口: > ChangeVisualEffectOnInjury: 用于控制玩家在受伤后的红屏效果、是否会叫 > > OnCreatureSpiked: 动物被仙人掌、海胆、钉板扎的时候执行,可以控制相关伤害。控制该伤害是否被护甲结算等操作。 ### ComponentMiner有以下接口变化: #### ComponentMiner.AddHitValueParticleSystem允许非玩家攻击: 当攻击来源并非玩家时,仍然会创建一个透明的伤害显示粒子。Mod可以调整这个粒子的颜色来令其显现。 #### ComponentMiner.AttackBody 变量attacker的类型由ComponentCreature改为Entity #### ComponentMiner.Raycast方法调整: 可以忽略动物、方块或移动方块,达到更灵活的投影 #### 增加接口: > OnBlockDug: 用于控制在方块被挖掘完毕后触发的行为,也可以控制挖掘方块后损失的耐久数量 ### ComponentPlayer增加以下接口: > #### ComponentPlayer增加OnPlayerControlSteed, OnPlayerControlBoat, OnPlayerControlWalk接口: > > 用于控制玩家的移动 > > #### ComponentPlayer增加OnPlayerInputInteract接口 > > 能够控制玩家通过点击屏幕、鼠标右键执行Interact操作的时间间隔,以及改变放置方块、使用手中方块、交互面前方块三个操作的优先级,以及模组在其中执行其他操作。 > > #### ComponentPlayer增加UpdatePlayerInputAim接口 > > 每帧都进行更新,可以控制玩家执行瞄准操作的时间间隔。(可以简单理解为投掷攻速),以及模组在其中执行其他操作。 > > #### ComponentPlayer增加OnPlayerInputHit接口 > > 控制玩家在执行攻击输入后,执行的操作。可以控制距离上一次的输入间隔(注意不是玩家攻击间隔)、近战攻击距离。当近战攻击距离≤0时,玩家无法再该情况下执行近战攻击。通常用于枪械等远程武器使用左键攻击。 > > #### ComponentPlayer增加UpdatePlayerInputDig接口 > > 每帧都进行更新,可以控制玩家挖掘方块之间的时间间隔,以及模组在其中执行其他操作。 > > #### ComponentPlayer增加OnPlayerInputDrop接口 > > 控制玩家在按下Q进行丢弃后,执行的操作 ### InventorySlotWidget增加以下接口: > #### OnInventorySlotWidgetDefined: > > 在InventorySlotWidget中添加模组自定义的元素 > > #### InventorySlotWidgetMeasureOverride: > > 控制物品格子的绘制,绘制耐久度、腐烂图标、物品数量等信息。模组可以在其中绘制模组自带的内容 > > #### HandleMoveInventoryItem: > > 控制物品栏移动物品执行的操作 > > #### HandleInventoryDragProcess: > > 控制物品栏拖动物品执行的操作(比如火药上枪) > > #### HandleInventoryDragMove: > > 控制物品栏拖动物品,且Process不执行时进行的操作 ## 变量控制 ### ComponentPlayer增加了以下变量: m_aimStartTime:瞄准操作开始的时间 ### ComponentHealth增加了以下变量: m_regenerateLifeEnabled: 是否允许回血 HealFactor: 在Heal中,回血的倍数 VoidDamageFactor: y轴过高或者过低造成的伤害系数。该值为0时,不会显示"Come Back!" AirLackResilience: 溺水/搁浅伤害抗性,初始值为8.33 MagmaResilience: 熔岩伤害抗性,初始值为0.5。当该值为Infinity时,生物寻路不再视熔岩为危险方块。 CrushResilience: 挤压伤害抗性,初始值为6.67 SpikeResilience: 尖刺伤害抗性,初始值为10 ExplosionResilience: 爆炸伤害抗性,初始值为1 StackExperienceOnKill: 生物在死亡时掉落的经验球的掉落物个数不超过100,超出部分进行堆叠。能够降低卡顿。 ### ComponentBody增加了以下变量: TerrainCollidable: 该ComponentBody是否能与地形碰撞。关闭状态意味着该生物能穿墙。 BodyCollidable: 该ComponentBody是否能与其他动物碰撞 FluidCollidable: 该ComponentBody是否能受到流体影响 IsRaycastTransparent: 该生物不能被Raycast选中 * ComponentOnFire增加了以下变量:```m_hideFireParticle```: 为true时,该生物会隐藏火焰音效和粒子 * ComponentRunAwayBehavior:增加变量```LowHealthToEscape```,用于调整动物在生命值低于多少时才触发逃跑行为 * ComponentMiner: 增加变量```HitInterval```,用于控制玩家和一般生物的攻击间隔 * SubsystemTime:将```MaxGameTimeDelta、MaxFixedGameTimeDelta、DefaultFixedTimeStep、DefaultFixedUpdateStep、GameMenuDialogTimeFactor```由常量改为可修改的变量 * SubsystemUpdate增加```UpdateTimeDebug```字段,用于控制是否在日志中输出各组件更新性能,便于mod对卡顿进行调试 * ComponentHealth部分字段改为virtual * 在存档中增加了APIVersion字段 * SubsystemBlockBehavior不需要再声明HandledBlocks,默认值为空表 * Entity.Components、Project.Subsystems权限改为可写。 ## 方块调整 ### Block新增以下方法 #### IsCollapseSupportBlock、IsCollapseDestructibleBlock 用于控制方块是否能够承受沙子等重力方块 #### IsMovableByPiston、IsBlockingPiston 用于控制方块能否被活塞推动 #### IsSuitableForPlants 用于控制方块能否种植植物(如扩展mod的黑土) #### IsFaceSuitableForElectricElements 用于控制方块是否能够放置电路元件(比如允许玻璃上面放置电路元件) #### ShouldBeAddedToProject 是否进入游戏文件动态ID列表 #### CanBlockBeBuiltIntoFurniture 方块是否能被计入家具 #### ShouldAvoid(int value, ComponentPilot componentPilot) 可以根据ComponentPilot不同来决定是否调整 #### IsNonAttachable(int value) 方块能否附着其他方块。该方法是旧版本IsTransparent_的变体。设置为true时,该方块即使是透明方块,也能够放置门、火堆等以前不能放置在透明方块上的物体。 #### GetPriorityUse(int value, ComponentMiner componentMiner) #### GetPriorityInteract(int value, ComponentMiner componentMiner) #### GetPriorityPlace(int value, ComponentMiner componentMiner) 用于控制在ComponentPlayer中,使用手中方块、交互面前的方块、放置手中方块这三个行为的优先级。 ### 方块数据调整 空气方块在Content不为0时,显示为白色铁栅栏,名为“错误方块+方块完整值”,便于Mod作者进行调试 玩家穿着的衣物方块不必是ClothingBlock或者203号方块,模组可以控制玩家穿戴其他方块 ## 其他调整 * 生物图鉴中,战利品数量为0的占位掉落物不显示 * ComponentHealth.Attacked,从受到伤害触发改为受到AttackBody时触发。部分ComponentBehavior也据此改为由ComponentHealth.Injured触发 * PlayerData中SpawnPlayer()执行出现异常时,会返回世界选择界面并记录游戏日志 * 桶堆叠使用bug修复:使用堆叠状态下的桶时,桶的数量正常变化,而不是强制让手上桶的个数减少为1。 * 游戏运行出现错误时,会直接弹出日志窗口,更方便协助定位错误。 * ComponentCraftingTable只在物品栏改变并进行更新后,才执行配方更新操作,降低卡顿。 * 在超平坦世界中,如果地表高度<0,那么会移除最底部的基岩层,达到类似空岛的效果 ## 设置调整 设置选项增加: * 水平创造飞行:开启时飞行方式和MC相同,关闭时飞行方式和移动版相同 * 创造模式拖动整组方块:在创造模式下拖动方块时,会一次拖动一组方块 * Split状态下拖动一半方块:在物品栏中长按一个格子进入Split状态时,拖动该格子的方块会转移该格子的一半数量的方块。 * 删除世界输入"yes"确认:在删除世界时,需要输入yes来确认删除。关闭后和旧版删除方式相同。
94777ca
2024-11-06 05:21
下载
查看发行版
API1.71A
api1.7正式版
333fc4b
2024-08-08 10:42
下载
查看发行版
API1.63
API已经更新到1.63,以下为更新报告 1.使用了ImageSharp库,支持Webp、Gif、Pbm、Qoi、Tiff、Tga格式,Jpg不偏色。Webp比Png小50%,加载快20%,Content.zip中Png已换为Webp。Png加载提速50%。使用Nuget包SixLabors.ImageSharp进行图片处理,如裁剪、缩放、滤镜等,注意不将此dll打包进mod。 2.Image.Pixels变为只读属性,新增m_trueImage字段和ProcessPixels、ProcessPixelRows方法,用于处理像素。示例:将透明度设为128或复制像素到Color数组。 支持Flac、Mp3音频格式,Flac须为16位深。Content.zip中Wav已换为Flac,体积小且解码快。使用NAudio库加载更多小众格式音频。 Json加载库更换为System.Text.Json,更严格,如有多余逗号会报错。请规范Json文件。 大部分模组仍然兼容,少部分模组需要更换引用
8fcfd0f
2024-04-24 22:22
下载
查看发行版
1.61X_
安卓显示版本为1.61Q,不影响使用
293acbe
2024-04-14 00:20
下载
1.61Q
1.61Q 以后版本不分PN 由A递增至Z
bc60421
2024-03-18 13:29
下载
API1.61N
玩家再也不用下载sdk了,运行时即可运行
d44aa22
2024-02-08 22:43
下载
Api1.60P
1.60P
a81b28d
2024-02-02 11:52
下载
api1.53P
662b8e2
2023-10-20 20:19
下载
查看发行版
api1.52
38e7cdf
2023-08-07 16:42
下载
version
3d37814
2023-07-20 11:27
下载
api1.44
ed45c88
2022-07-31 21:51
下载
查看发行版
api1.33
aef756e
2021-03-20 18:28
下载
下载
请输入验证码,防止盗链导致资源被占用
取消
下载
C#
1
https://gitee.com/THPRC/survivalcraft-api.git
git@gitee.com:THPRC/survivalcraft-api.git
THPRC
survivalcraft-api
SurvivalcraftVRTAPI
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册