Project.xml实例教程
修改世界及生成相关因素
第2行:世界名称(游戏内的名称,如果是中文等符号或太长国际社区无法下载)
3:版本号,存档数据逆旧需要修改它。
4:游戏模式
567891011:创建世界时的设置,如静态动态,天气开关等具体自己翻译
12:世界的真实种子,修改后世界地形生成会发生变化,存档因断电造成损坏后会变成0,种子转换方法详看相关教程。
13:地形生成模式。
14:岛屿大小,岛屿模式下的岛屿范围大小
15:地形高度,默认64,仅超平坦有效。
16:海岸线粗糙程度,修改可以让海岸线变直或变更窄曲
17:地形方块ID,超平坦模式的大陆地形ID
18:海域地形ID,超平坦模式的海地形ID,如果高于地形高度
19:温度偏移。创建世界时的温度条,任意数值,通常改动在±28以内,游戏内只有±16,太大没意义。
20:湿度偏移。同温度偏移,只是调整的是湿度
21:海面高度偏移,在默认世界高度的海面高度64基础上调整海面高度,游戏内±16,实际可以设置更大,如果超平坦是+的,那么大陆区域上会被海域设置的方块所覆盖,如果是负数且低于海底高度,在正常世界中海底地面会露出来,具体海底地形可以去看生存教程的关于世界地形的研究(含图)。
22:生物群落大小,具体自己理解,2.1版本改小会出现沙漠雪地等环境只有一格范围,大的则可以创造出无比巨大的平原山地,沙漠雪地等地形,用于制作生成特殊环境:寒带。在2.2及以上调整效果不如旧版,会增加平原等基面方块厚度。
29:玩家输入的世界种子(假种)
30:总游戏时间(世界时间),单位是秒,游戏内每一天是20分钟。
-<Values Name="GameInfo">
<Value Name="WorldName" Value="Westbell223" Type="string"/>
<Value Name="OriginalSerializationVersion" Value="2.3" Type="string"/>
<Value Name="GameMode" Value="Creative" Type="Game.GameMode"/>
<Value Name="EnvironmentBehaviorMode" Value="Living" Type="Game.EnvironmentBehaviorMode"/>
<Value Name="TimeOfDayMode" Value="Changing" Type="Game.TimeOfDayMode"/>
<Value Name="AreWeatherEffectsEnabled" Value="True" Type="bool"/>
<Value Name="IsAdventureRespawnAllowed" Value="True" Type="bool"/>
<Value Name="AreAdventureSurvivalMechanicsEnabled" Value="True" Type="bool"/>
<Value Name="AreSupernaturalCreaturesEnabled" Value="True" Type="bool"/>
<Value Name="IsFriendlyFireEnabled" Value="True" Type="bool"/>
<Value Name="WorldSeedString" Value="555" Type="string"/>
<Value Name="TerrainGenerationMode" Value="Continent" Type="Game.TerrainGenerationMode"/>
<Value Name="IslandSize" Value="400,400" Type="Vector2"/>
<Value Name="TerrainLevel" Value="64" Type="int"/>
<Value Name="ShoreRoughness" Value="0.5" Type="float"/>
<Value Name="TerrainBlockIndex" Value="8" Type="int"/>
<Value Name="TerrainOceanBlockIndex" Value="18" Type="int"/>
<Value Name="TemperatureOffset" Value="0" Type="float"/>
<Value Name="HumidityOffset" Value="-2" Type="float"/>
<Value Name="SeaLevelOffset" Value="3" Type="int"/>
<Value Name="BiomeSize" Value="4" Type="float"/>
<Value Name="StartingPositionMode" Value="Medium" Type="Game.StartingPositionMode"/>
<Value Name="BlockTextureName" Value="" Type="string"/>
-<Values Name="Palette">
<Value Name="Colors" Value=";;;;;;;;;;;;;;;" Type="string"/>
<Value Name="Names" Value="白色;浅青色;粉红色;浅蓝色;黄色;浅绿色;鲑鱼红色;亮灰色;灰色;青色;紫色;蓝色;棕色;绿色;红色;黑色" Type="string"/>
</Values>
<Value Name="WorldSeed" Value="4770" Type="int"/>
<Value Name="TotalElapsedGameTime" Value="179.21436407137662" Type="double"/>
</Values>
控制视野外动物生成
第1行:区块坐标。X,Z坐标值,与世界坐标方向一致,每16格为1区块坐标值,从0-0世界平面坐标对应的0-0区块坐标开始算。太阳东方升起。
2:是否已出生。填True(是)或False(否)
3:最后访问时间。世界时间(秒),区块最后一次加载时间。
4:生物数据。动物标识名称(详查Database或从存档现有的动物数据提取)和最后消失时的坐标(也是下一次生成的坐标),有多只动物时用;隔开。
<Values Name="129,397">
<Value Name="IsSpawned" Type="bool" Value="True" />
<Value Name="LastVisitedTime" Type="double" Value="6" />
<Value Name="SpawnsData" Type="string" Value="Bass_Sea,2070.7,63.6,6357.1;Ray_Brown,2073.8,58.9,6362.4;Seagull,2072.7,64.6,6364.9;" />
</Values>
掉落物状态修改
闯关可以用来精确控制物品的提供位置和数量,实现关卡时长限制。(或者修改Projectiles投掷物也可以,效果差不多)
第1行:掉落物编号,游戏中第一个掉落物是0,以此类推,如果重复存档会报错。
2:方块ID。物品对应的的代码ID,具体查看ID表。
3:数量。
4:位置。XYZ坐标
5:速率。重进存档重置。修改无意义,如果要使用修改器在游戏内具体修改方法查看上一章教程的解析。
6:创建时间。世界时间(秒)。如果大于当前世界时间,则无法捡起且浮空。
<Values Name="0">
<Value Name="Value" Type="int" Value="8" />
<Value Name="Count" Type="int" Value="1" />
<Value Name="Position" Type="Vector3" Value="4077,68,7270" />
<Value Name="Velocity" Type="Vector3" Value="1,-1,0.5" />
<Value Name="CreationTime" Type="double" Value="60" />
</Values>
无限下雨/精确控制下雨时间
2:天气开始时间(世界时间,单位:秒)
3:天气结束时间(世界时间,单位:秒)
4:闪电密度。修改没什么效果。
2.1版本用于实现永雨寒带生存环境调制
<Values Name="Weather">
<Value Name="WeatherStartTime" Type="double" Value="299" />
<Value Name="WeatherEndTime" Type="double" Value="657" />
<Value Name="LightningIntensity" Type="float" Value="0.3567341" />
</Values>
无限树苗
修改坐标与未来的时间,可以使某位置无限生成指定树苗,当树苗或枯树苗被破坏时则会重新生成一颗树苗。可配合伐木机制作产木机无限获取木头(生存需选址,成功率低,基本无人做,想尝试可以去研究伐木机)可用于精进生存等高难度生存挑战存档进行树苗补充。
<Values Name="SaplingBlockBehavior">
<Values Name="Saplings">
<Value Name="0" Type="string" Value="3440,67,4506;Oak;252.63063414907083" />
</Values>
</Values>
控制火药桶爆炸时间
1:已点燃的爆炸物编号,重复存档报错。
2:坐标
3:倒计时(秒)
<Values Name="0">
<Value Name="Point" Type="Point3" Value="2126,66,6374" />
<Value Name="TimeToExplosion" Type="float" Value="4" />
</Values>
设计修改
家具只是我们用来造家具样式的方块而对其的称呼,实际上是设计方块,每一个制作出来的,就叫做设计,被储存在存档或家具包文件中,并赋予一个临时ID,16进制储存上限
百变家具&变形截止
家具合成后是可以变形的,但原版的合成变形是有限的,通过修改可以让家具有更多的变换可能,满足一些特殊的应用场景(如图形密码门)。
LinkedDesign:下一个链接的设计
修改LinkedDesign(填写下图中每段家具数据上面的0,1,2设计ID编号)。可以将更多的家具链接起来。
如果想让部分形态不能二次变形出来,可以将末尾两个或几个设置为循环,如下修改设计编号。
<Values Name="0">
<Value Name="TerrainUseCount" Type="int" Value="0" />
<Value Name="Resolution" Type="int" Value="2" />
<Value Name="InteractionMode" Type="Game.FurnitureInteractionMode" Value="Multistate" />
<Value Name="LinkedDesign" Type="int" Value="1" />
<Value Name="Values" Type="string" Value="8*1," />
</Values>
<Values Name="1">
<Value Name="TerrainUseCount" Type="int" Value="0" />
<Value Name="Resolution" Type="int" Value="2" />
<Value Name="InteractionMode" Type="Game.FurnitureInteractionMode" Value="Multistate" />
<Value Name="LinkedDesign" Type="int" Value="2" />
<Value Name="Values" Type="string" Value="8*2," />
</Values>
<Values Name="2">
<Value Name="TerrainUseCount" Type="int" Value="0" />
<Value Name="Resolution" Type="int" Value="2" />
<Value Name="InteractionMode" Type="Game.FurnitureInteractionMode" Value="Multistate" />
<Value Name="LinkedDesign" Type="int" Value="1" />
<Value Name="Values" Type="string" Value="8*3," />
</Values>
更多效果家具&分离空隙家具
修改Values后的ID,可以改变家具内设计的方块,8*18,18代表水方块。如果在游戏中造好后再修改,改为0则为空气,可以实现一个家具留出空隙,可以制作出单向门,应用在闯关,或生存闯关使用的动物分类机。
<Values Name="22">
<Value Name="TerrainUseCount" Type="int" Value="0" />
<Value Name="Resolution" Type="int" Value="2" />
<Value Name="InteractionMode" Type="Game.FurnitureInteractionMode" Value="Multistate" />
<Value Name="LinkedDesign" Type="int" Value="21" />
<Value Name="Values" Type="string" Value="8*18," />
</Values>
实体修改
修改攻击力
在2.3的存档中,Miner在存档中被保留了下来,意味着我们可以修改动物和玩家的攻击力。在旧的版本中,要想在存档中修改攻击力,需要将此项加入存档中才行,且不可在二次进入存档时保留。
<Values Name="Miner">
<Value Name="AttackPower" Value="1" Type="float"/>
</Values>
修改生命相关效果
所在行数:
2:血量。为0死亡,1时满血,抗性的倍数。动物为负变为雕像(需要删除实体速率,看下面教程),也就是以前玩家爆炸制造的不灭尸。
3:空气。与呼吸有关的,具体效果未测
4:尸体存在时间。
5:呼吸模式。填Water/Air,可让动物窒息,可能修改无效。
6:攻击抗性。受到攻击时的抗性,平常说的“血量”就是他(血量都是1)。(额外添加重进存档可保留)
7:摔落抗性。收到向上撞击时的抗性,改大不会因为速率大而摔死。
8:燃烧抗性。受到燃烧伤害时的抗性,调大不易烧死。
9:死因。修改后可以抹除残酷复活的作弊行为记录。
<Values Name="Health">
<Value Name="Health" Type="float" Value="0" />
<Value Name="Air" Type="float" Value="1" />
<Value Name="CorpseDuration" Type="float" Value="1" />
<Value Name="BreathingMode" Type="Game.BreathingMode" Value="Air" />
<Value Name="AttackResilience" Type="float" Value="1" />
<Value Name="FallResilience" Type="float" Value="1" />
<Value Name="FireResilience" Type="float" Value="1" />
<Value Name="CauseOfDeath" Type="string" Value="Blasted by explosion" />
</Values>
修改透明隐形效果
SpawnTime是动物的生成时间,如果大于当前世界时间,则会是透明的,在闯关中,能有效限制玩家对不规则方块边缘的掌控。(额外添加重进存档可保留)
如果在其中插入第五行,则可以让狼人白天不变回狼,且在玩家视距外依然能运行活动。
<Values Name="Spawn">
<Value Name="SpawnTime" Value="13.191040797159076" Type="double"/>
</Values>
<Value Name="DespawnTime" Type="double" Value="5312384.8960724706" />
修改燃烧时间
修改剩余燃烧时间,配合生命修改可以让动物具有持续燃烧效果或给闯关的玩家营造刺激感。
(额外添加重进存档可保留)
<Values Name="OnFire">
<Value Name="FireDuration" Type="float" Value="0" />
</Values>
修改材质和模型显示
只能改变陆生动物的模型和材质,鱼和鸟不行,填写材质位置和模型位置,需要提前查看游戏pak包内的文件。添加后动物会变成其他动物的模型或材质,重进存档不保存。
例:Textures/Creatures/动物材质名称
<Values Name="FourLeggedModel">
<Value Name="TextureOverride" Type="string" Value="Textures/Creatures/" />
<Value Name="ModelName" Type="string" Value="Models/" />
</Values>
修改马驴骆驼等坐骑状态
一个是顽固行为概率,一个是顽固行为结束时间,具体效果请自行测试。(额外添加重进存档可保留)
<Values Name="StubbornSteedBehavior">
<Value Name="StubbornProbability" Type="float" Value="0" />
<Value Name="StubbornEndTime" Type="double" Value="0" />
</Values>
修改运动能力
重进存档不保存。
3:在创造模式下是否可飞行,创造主角使用可空中行走(生存无效)。
4:行梯速度
5:飞行速度。加了动物可以飞行,玩家生存无效。
6:走路转向速度。
7:转动速度。玩家转圈打法手撸犀牛的重要利用点。
8:游泳速度。
9:看的速度。加速动物的攻击或逃跑行为产生。
10:行走速度。移动速度
11:加速因度。奔跑情况下的加速度。
12:跳跃速度。高度/距离
13:空中行走因素。空中行走加速度。
14:创造飞行速度。
<Values Name="Locomotion">
<Value Name="IsCreativeFlyEnabled" Type="float" Value="False" />
<Value Name="LadderSpeed" Type="float" Value="0" />
<Value Name="FlySpeed" Type="float" Value="0" />
<Value Name="WalkSpeedWhenTurning" Type="float" Value="0" />
<Value Name="TurnSpeed" Type="float" Value="0" />
<Value Name="SwimSpeed" Type="float" Value="0" />
<Value Name="LookSpeed" Type="float" Value="0" />
<Value Name="WalkSpeed" Type="float" Value="0" />
<Value Name="AccelerationFactor" Type="float" Value="0" />
<Value Name="JumpSpeed" Type="float" Value="0" />
<Value Name="InAirWalkFactor" Type="float" Value="0" />
<Value Name="CreativeFlySpeed" Type="float" Value="0" />
</Values>
修改身体等相关效果
2:坐标。X,Y,Z。实体所在的位置。配合朝向进行修改可以使动物的模型与实际碰撞箱进行分离。
3:朝向。实体在游戏中旋转后的方向,可以修改。
456:骑乘状态,取自人骑马时的数据。组合起来可以制作连体的动物,将下面数值中的★换成存档里的动物临时ID(填ID的动物在下,可多个重叠),并复制这行和其下面两行进行添加。上面的动物无法移动只能头部转动在原地攻击,如果动物是死亡状态的且最下面的在水中,则会使得上面的动物像根棍子一样四面转动。(额外添加重进存档可保留)
7:密度。效果与质量差不多,但受碰撞箱体积影响。
8:质量。质量密度低还可以漂浮于水面,过高直接沉底。还可影响动物撞击等。动物增大不利于击退。
9:动物碰撞箱的大小。长高宽
10:速率。重进存档重置,重进存档玩家不会摔死的原因。制作动物雕像要删掉这行,并将生命数值改为0。
<Values Name="Body">
<Value Name="Position" Type="Vector3" Value="-199.345352,9.297645,-199.711319" />
<Value Name="Rotation" Type="Quaternion" Value="0,0.920407,0,0.390961617" />
<Value Name="ParentBody" Type="Game.EntityReference" Value="id:★:Body" />
<Value Name="ParentBodyPositionOffset" Type="Vector3" Value="0,1,0" />
<Value Name="ParentBodyRotationOffset" Type="Quaternion" Value="0,0,0,1" />
<Value Name="Density" Type="float" Value="0" />
<Value Name="Mass" Type="float" Value="0" />
<Value Name="BoxSize" Type="Vector3" Value="0,0,0" />
<Value Name="Velocity" Type="Vector3" Value="0,-1.3671056,0" />
</Values>
修改背包/箱子熔炉等物品
以下为熔炉的数据
Slot3是槽数编号(固定的),熔炉工具台和玩家合成台等辅助材料物品槽和生成槽也是用的一系列编号,而没有单独区分。
Contents是方块ID
Count是数量
修改熔炉的FireTimeRemaining,可以无限燃烧。HeatLevel为燃料等级,低于物品设定燃料等级时无法燃烧。
如需修改玩家背包则在玩家实体数据下的Inventory处。
<Entity Id="6" Guid="f4a43056-d37d-455f-9a43-803260a915a9" Name="Furnace">
<Values Name="BlockEntity">
<Value Name="Coordinates" Type="Point3" Value="2024,9,4513" />
</Values>
<Values Name="Furnace">
<Values Name="Slots">
<Values Name="">
<Value Name="Contents" Type="int" Value="11" />
<Value Name="Count" Type="int" Value="1" />
</Values>
<Values Name="Slot1">
<Value Name="Contents" Type="int" Value="11" />
<Value Name="Count" Type="int" Value="1" />
</Values>
<Values Name="Slot2">
<Value Name="Contents" Type="int" Value="11" />
<Value Name="Count" Type="int" Value="1" />
</Values>
<Values Name="Slot3">
<Value Name="Contents" Type="int" Value="22" />
<Value Name="Count" Type="int" Value="1" />
</Values>
</Values>
<Value Name="FireTimeRemaining" Type="float" Value="17.1860352" />
<Value Name="HeatLevel" Type="float" Value="1" />
</Values>
</Entity>
添加介绍船
游戏开始动画的幽灵船,复制,注意★的位置的实体编号。
改动位置和朝向可以做到船从各个高度和方向进行开始移动。
可以改变材质和模型使船更花哨。
<Entity Id="★" Guid="35fbeb7a-8401-46a2-b3cb-ae5ee449297c" Name="IntroShip">
<Values Name="Frame">
<Value Name="Position" Type="Vector3" Value="-541.6108,8.5,-202" />
<Value Name="Rotation" Type="Quaternion" Value="-0.00408011256,0.7070949,-0.0175660085,0.706888735" />
</Values>
<Values Name="IntroShip">
<Value Name="Heading" Type="float" Value="1.57079613" />
</Values>
</Entity>
添加纯黑色动物
游戏中为了节省添加动物的工作量,作者将相似的动物写成模板供继承,但这些“动物”是具有动物基本条件的,因此能在游戏中存在,但游戏中没有生成这些动物的相关代码。通过换Guid和名称我们可以将它们复原出来。一共有6种。(在古老的版本中出现过,一直被人们认为是隐藏的神兽)
<Entity Id="2" Guid="b36fa363-d4d4-4287-a3f3-744a813f6bb5" Name="Ray">
</Entity>
<Entity Id="3" Guid="1d117619-4104-4e47-b1a4-431854f94a24" Name="Cow">
</Entity>
<Entity Id="4" Guid="36262183-b7d8-42c1-8e54-775395f3d690" Name="Bull">
</Entity>
<Entity Id="5" Guid="437e6af3-ea9f-4f3c-8b96-d81de6223831" Name="Bear">
</Entity>
<Entity Id="6" Guid="49a9845c-3810-4092-ba53-df213d10d563" Name="Wolf">
</Entity>
<Entity Id="7" Guid="8907cec4-3a39-4d81-953b-82287de4c871" Name="Horse">
</Entity>
修改运动方块
运动方块是游戏中比较特别的存在,它既不是地形方块,也不是物品,更不是掉落物。
而是因为活塞推动而产生的处于运动状态的方块。根据此物我们可以制作出很多惊艳的效果。
首先你需要添加一段活塞数据,写入方块,运动方块就添加成功了。
Position是活塞的位置
TargetPosition是目标位置(活塞头)
Speed是推动速度
Tag是活塞头的位置
Blocks是活塞已经粘连中的方块,由4位组成,两个方块使用;分号隔开,(a,x,y,z;),其中a表示方块ID(空气容易使存档出错,尽量不要使用空气),xyz则表示活塞头(0,0,0)的相对坐标。
活塞及活塞头与目标位置可以不在一条线上。
如果活塞杆和目标在一条线上,则只显示活塞杆和头以及方块而不显示活塞,如都不在一条线上则只显示方块。
第一种情况:正常活塞
当活塞,活塞头,目标位置以及活塞在一条线上,且活塞坐标(与Chunk中方块实际位置)位置同样时,则在游戏中正常显示活塞,做功过程中,会显示活塞杆(活塞杆也是运动方块),做功完成后,方块到达目的地且变成真实方块并存储回Chunk中,随后活塞头归位,活塞恢复正常。
第二种情况:正常活塞与非正常活塞是否遇到阻碍的不同情况
如果活塞相关数据正常,但遇到阻碍则会返回,在有电路持续触发的情况下,活塞会循环操作,但如果活塞相关数据不正常,如不在一条线上,那么遇到阻碍则会穿过真实方块,如果碰到运动方块,那么则会停下并持续做功,变成被动禁止运动状态,移除阻碍才能正常移动,如果到达指定位置,由于没有方块的反馈,所以会停下而不会还原成方块,可以用于制作方块动画或阻碍等。
第3种情况:活塞推力和方向设置
当任意两个运动方块实际坐标相交卡住或已到达指定位置,那么都会陷入禁止运动状态,此时每个面都可以产生6个方向的推力(本身有,但被限制运动时推力依然保持着),推力方向取决于接触面方块能作用到的最大的力。触碰时会被推动,例如玩家踩在上面时,力朝东,则玩家被朝东推动,如果朝上,则会弹跳,可以根据此做出传送带或蹦床。方块卡位:主推力方块设置好后,在主推力方块的实际坐标位置再添加一个不做功的运动方块。已到达指定位置的运动方块制作:目标位置坐标设置与我们要的位置一致,但将活塞头起点位置设置在反方向的位置,那么活塞头朝向目标位置的方向就是推力方向。通常我们采用第二种方法。
第4种情况:触发和控制非正常活塞
由于处于非正常状态的活塞是难以正常显示和控制的,我们需要借助能显示能接受电信号的活塞来间接或直接控制他们。这里有两种方法,一种是保证活塞坐标一致,只改动方块和目标位置,通过电路触发。另一种是在保证活塞可控且在运动状态情况下在前方卡住我们需要控制的运动方块,实现间接控制。控制非正常活塞相对更复杂,具体需要自己研究和理解其中的过程和效果。通过这些我们可以实现可控的方块动画,闯关可控的高级机关,按钮发射火箭汽车等效果。
<Values Name="5">
<Value Name="Position" Value="-190,9,-198" Type="Vector3"/>
<Value Name="TargetPosition" Value="-160,9,-160" Type="Vector3"/>
<Value Name="Speed" Value="1" Type="float"/>
<Value Name="Acceleration" Value="0" Type="float"/>
<Value Name="Drag" Value="0" Type="float"/>
<Value Name="Id" Value="Piston" Type="string"/>
<Value Name="Tag" Value="-191,9,-198" Type="Point3"/>
<Value Name="Blocks" Value="1,0,0,0;71,0,0,1;46,0,0,0;47,0,0,0;104,0,0,0;" Type="string"/>
</Values>
方块动画/机关
如果是一次性的动画,那么直接添加运动方块,设当前位置和目标位置即可。进入存档就生效,设定的方块会从当前位置移动到目标位置并停下。
触发动画请前往研究触发和控制非正常活塞。
(由于无法上传视频,所以我截了两张之前录屏里的图)
126,0,2,0;126,0,8,0;126,0,9,0;126,0,10,0;126,1,1,0;126,1,7,0;126,1,11,0;126,2,0,0;126,2,6,0;126,2,12,0;126,3,0,0;126,3,6,0;126,3,12,0;126,4,0,0;126,4,6,0;126,4,12,0;126,5,1,0;126,5,5,0;126,5,11,0;126,6,2,0;126,6,3,0;126,6,4,0;126,6,10,0;
S
126,0,2,0;126,0,3,0;126,0,4,0;126,0,5,0;126,0,6,0;126,0,7,0;126,1,1,0;126,2,0,0;126,3,0,0;126,4,1,0;126,5,2,0;126,5,3,0;126,5,4,0;126,5,5,0;126,5,6,0;126,5,7,0;126,6,0,0;126,6,1,0;126,7,0,0;126,8,7,0;126,9,0,0;126,9,1,0;126,9,2,0;126,9,3,0;126,9,4,0;126,9,5,0;126,9,6,0;126,10,4,0;126,11,5,0;126,11,6,0;126,12,7,0;
ur
126,0,7,0;126,1,4,0;126,1,5,0;126,1,6,0;126,2,3,0;126,3,2,0;126,3,3,0;126,4,0,0;126,4,1,0;126,5,2,0;126,5,3,0;126,6,3,0;126,7,4,0;126,7,5,0;126,7,6,0;126,8,7,0;126,10,0,0;126,10,1,0;126,10,2,0;126,10,3,0;126,10,4,0;126,10,5,0;126,10,7,0;
vi
126,0,7,0;126,1,4,0;126,1,5,0;126,1,6,0;126,2,3,0;126,3,2,0;126,3,3,0;126,4,0,0;126,4,1,0;126,5,2,0;126,5,3,0;126,6,3,0;126,7,4,0;126,7,5,0;126,7,6,0;126,8,7,0;126,9,2,0;126,9,3,0;126,9,4,0;126,9,5,0;126,10,1,0;126,10,6,0;126,11,0,0;126,11,7,0;126,12,0,0;126,12,7,0;126,13,0,0;126,13,7,0;126,14,1,0;126,14,6,0;126,15,2,0;126,15,3,0;126,15,4,0;126,15,5,0;126,15,6,0;126,15,7,0;126,16,1,0;126,17,0,0;126,18,12,0;126,19,0,0;126,19,1,0;126,19,2,0;126,19,3,0;126,19,4,0;126,19,5,0;126,19,6,0;126,19,7,0;126,19,8,0;126,19,9,0;126,19,10,0;126,19,11,0;126,20,0,0;126,21,1,0;126,21,2,0;
val
126,0,2,0;126,0,3,0;126,0,4,0;126,0,5,0;126,1,1,0;126,1,6,0;126,2,0,0;126,2,7,0;126,3,0,0;126,3,7,0;126,4,0,0;126,4,7,0;126,5,1,0;126,5,6,0;126,7,7,0;126,8,0,0;126,8,1,0;126,8,2,0;126,8,3,0;126,8,4,0;126,8,5,0;126,8,6,0;126,9,4,0;126,10,5,0;126,10,6,0;126,11,7,0;126,12,2,0;126,12,3,0;126,12,4,0;126,12,5,0;126,13,1,0;126,13,6,0;126,14,0,0;126,14,7,0;126,15,0,0;126,15,7,0;126,16,0,0;126,16,7,0;126,17,1,0;126,17,6,0;126,18,2,0;126,18,3,0;126,18,4,0;126,18,5,0;126,18,6,0;126,18,7,0;126,19,1,0;126,20,0,0;
cra
126,0,6,0;126,1,6,0;126,2,0,0;126,2,6,0;126,3,1,0;126,3,2,0;126,3,3,0;126,3,4,0;126,3,5,0;126,3,6,0;126,3,7,0;126,3,8,0;126,3,9,0;126,4,6,0;126,4,10,0;126,5,6,0;126,5,10,0;126,6,6,0;126,6,9,0;126,8,6,0;126,9,6,0;126,10,6,0;126,11,1,0;126,11,2,0;126,11,3,0;126,11,4,0;126,11,5,0;126,11,6,0;126,11,7,0;126,11,8,0;126,11,9,0;126,11,10,0;126,12,0,0;126,12,6,0;126,13,0,0;126,13,6,0;126,14,1,0;126,14,6,0;
ft
蹦床/踩踏陷阱
设置主推方块朝上,参考第三种情况,想弹多高就设置相对的速度,具体效果自测。
运动方块朝上会对玩家和动物造成摔落速度倍数的碰撞伤害,因此也可以当陷阱,加在闯关中玩家无法肉眼辨别,伤害与设定的速度有关。
超级传送带
通过运动方块,我们可以实现人物朝4个方向的横移(通过组合可以衍生出4个角方向的横向运动和不规则路线运动)和4个上斜及4个下斜方向的传送。一共16个方向和不规则路线横向运动。并且你可以设置不同的速度,横向的移动如果速度设置很快,还可以达到瞬移的效果,这样你可以少加一些运动方块。
下面的是9点传送带,人物或动物触碰任意铁方块则会传送到下一个钻石块站点的位置,每两个钻石站点之间的铁块有两条路,分别是两个方向,触碰到顺方向的铁块则传送,触碰到反方向铁块则会弹回来。还可以制作更多的站点,实现数百数千个站点的传送,当然,你甚至可以加入组合让中间点,直接连接四角站点,制作直达路线。
由于向上对玩家有伤害,通过下图的阶梯,运动方向依然是横向,但是实体接触阶梯可以持续触发碰撞箱挤出,从而实现斜向上的运动,如果是斜下则无需阶梯,普通方块也可,只是速度不能太大(容易在站点摔死),我记得运动方块有个方向可以让玩家不会摔死,具体可以自己研究一下,这可以做到直接向下。
接下来我们就可以搭类似下面这样的立体传送带,具体样式和方块颜色以及转站结构细节等你可以自己定,方便自己区分,由于比较耗时,做样本的阶梯是钻石没有换。如果加入电路进行转站点方向控制
2.2及前-Chunk.dat地形文件修改教程
Chunk修改教程
文件结构与存档位置图
2.2及以前的版本,存档地形文件储存方式是一样的。只是在1.29版本因为要储存更细的方块状态翻了一倍,主要表现在单个坐标方块的数据量大小,在2.2版本相较上一版本因为世界高度提升到了256所以又翻了一倍,主要表现在方块数量上。但在2.3为了避免存档的膨胀地形文件的储存方式进行了改进,因此本章教程只适用于2.2及以前的版本,由于大多玩家没有玩2以前的版本,所以这里以2.1的为例子。
游戏内玩家接触的地形是设定的种子和一些基础设置生成出来的,只有当玩家等改变某个区块的任意方块时(空气也是方块,所以放置也算)这个区块的所有数据都会被储存在存档的地形文件里,我们修改地形文件实际就是修改我们破坏过储存下来的区块数据。
存档内的数据主要由区块的数据段,每个区块所对应的方块数据段及该区块的平面顶点温湿度组成。其中,区块段的数据你可以理解为字典或者一本书的目录,大小是固定的,无论你有没有破坏区块。用16进制编辑器打开该文件,从第一个数值开始到下面图中结束的位置就是区块段的数据。所以可以推算出旧几个版本的存档储存大小上限分别是4G,8G和16G左右,一共有65537个区块(从0开始,后面其他的也是)。
下图为区块数据段结尾处
下图是一个存档地形文件开头位置的数据,16进制每2个数值为一个字节,每个区块占用的是12个字节,从0开始,图中0-11是在游戏中破坏的第一个区块,前面8个代表区块的坐标(我们可以根据区块坐标推算出玩家的行踪,甚至通过矿物等量差算出玩家是否有作弊),9-11的第一个值是0,对应着第一个破坏的区块的方块数据段(上图中区块数据段落结束后我选中的部分就是开头)。后面以此类推。
可以看到,这个存档破坏了30个区块(加上第一个0),图中箭头指处。
方块数据与温湿度数据
蓝色框起来的部分是一小段方块数据(实际上面还有很多很多),方块数据每4字节代表一个方块,他们按顺序依次储存,2.1每128组就是区块内一格平面坐标的所有方块(你可以理解为站在一个方块上,你的头上和脚下的那一列方块)从区块的0-0相对位置开始,2.2是256一组。可以看到方块数据中被红圈圈起来的位置,这些都是方块ID,00是空气方块(对应的10进制ID是0)03对应的是花岗岩,43对应的是67也就是玄武岩,01是基岩,也就是最低处的方块,我们可以从基岩这段靠近温湿度段判断出这里是这个区块的最后一列,并且从方块判断出这是个正常世界产生的区块。
下面紫色框起来的是温湿度顶点数据(每4字节第一字节的两个数值代表湿度和温度)也就是无视高度,只表示一个点,这也是为什么沙漠草地下雨有明显分界线的原因0。温湿度的真实值是0-15,而不是游戏中调的那个-16~+16,可以看到正常世界的每一个区块的温湿度都是起伏变化的。
温度修改效果图:
区块同步黑科技
通过区块同步的操作我们可以实现大规模同步建一样的建筑,或者生存刷物品,制作一个特别的生存挑战。
通过修改区块数据段的方块数据段落编号来实现,当几个坐标的区块都指向同一段方块数据段时就能实现几个区块读取共用一个区块的方块(重进存档生效,指向最后破坏的那个区块)。
将类似于行的区块数据123,改为789行那样即可。
通过这个黑科技,我们还能制作出自动刷矿机等奇葩的存在,但是很复杂。
F3 FF FF FF F1 FF FF FF 00 00 00 00
F5 FF FF FF F1 FF FF FF 01 00 00 00
F1 FF FF FF F1 FF FF FF 02 00 00 00
F3 FF FF FF F1 FF FF FF 02 00 00 00
F5 FF FF FF F1 FF FF FF 02 00 00 00
F1 FF FF FF F1 FF FF FF 02 00 00 00
大规模清除/替换方块
事实上创世神也能做到这个效果。不过如果体积过大会很卡而且很慢,并且有些方块无法生成,通过修改替换我们可以做到一次清除或替换整个存档的方块,可能有几百万几千万。
首先打开16进制编辑器,打开搜索替换。
假设我们要将所有玄武岩替换成草方块。首先我们通过进制转换得到玄武岩43,以及草方块08。
接下来搜索43 00 00 00
替换成 08 00 00 00
注意后面是6个0,前面也不要漏了,错了存档会损坏或者出现奇怪的方块柱体。
接下来我们要回改被一同替换的区块指针。
例如我们在操作过程中,将区块内的
FA FF FF FF F5 FF FF FF 43 00 00 00
FA FF FF FF F5 FF FF FF 08 00 00 00
第44个区块给改成了08,这会造成第44个区块的方块全部变成08区块的东西,也就是区块同步,但不是我们要的,所以我们要回去检查,大部分编辑器修改后都会有颜色标记,将我们无意替换的改回去。
精准替换方块
你可以在存档中要替换的方块上面或下面放一个存档中没有的方块,比如当前世界没有破坏沙漠,可以放个硝石矿方块,在存档中搜索对应的值,然后修改上下对应位置的方块,从而实现精准修改。这在闯关中加入一些特殊的构造和物品可以用到,比如浮空的花。
图中是在大面积的花上生成了一层水方块,导致水无法正常显示,所以图中的牛看起来是浮空的。
修改方块状态
方块的状态值。比如方向,放置的角度位置,农作物的生长不同阶段等,比较复杂,有些在游戏中代码可以找到,有些可能是需要自己修改来实现,我只对流体进行了测试,其中有一些有意思的存在。
水流有不同的高度和其他等状态。
有些岩浆没有燃烧效果。
有些岩浆是整方块但可以穿过不会燃烧
……具体效果和数据可以去2.1导入这个存档查看(因为存档里有些东西导致2.2无法读取)在贴吧有这个存档的发布,生存大师群内也有下载。