本帖最后由 逗比的幻影 于 2019-8-28 12:12 编辑
LostCities
介绍 About

  • LostCities(失落国度)在站内搬运贴中译名为失落的城市,失落国度为个人翻译。
  • LostCities(失落国度)是一款在在原版的基础上添加了一个新的世界类型的MOD,而在这个世界里,城市/建筑都是荒废的,因此得名失落国度。


特点 Features

  • 在这个新的世界里有着大量的建筑如,桥梁/街道/公路/地铁/高铁/各类城市建筑。
  • 这个mod不能依赖任何特定的块生成顺序,在生成块?时,它不能依赖于已经生成的相邻块,因此它必须能够自行计算事物。尽管如此,这个mod维护了几个世界范围的数据结构,并且能够查询关于附近块的信息,而不必实际生成块。
1:块的意思是区块,在接下来的Wiki当中有专版介绍各类的区块。


基本构造 BasicStructure
高地
城市发电机的高度是6的倍数。建筑物的每层楼高6层,地铁和高速公路也是这个高度的倍数。这使得建筑物之间的连接更容易,并且更适合高速公路和火车站。建筑物总是在0到4的城市级别生成,地铁系统在3级。默认级别0对应于高度71。
大块
在块生成期间,从生成算法看来,目前有三种类型的块:
一个正常的世界大块:在这里你得到正常的世界。
  • 然而,即使在正常的块中仍然会出现一些修改:
  • 铁路和公路产生覆盖在正常块上
  • 附近城市大块的爆炸也会对正常的世界造成伤害
  • 正常块的边缘有时会降低或升高以适应城市块
  • 包含建筑物的城市大块。
  • 城市大块不包含建筑物。这被称为“街道”组块
生成一个正常的块
这里所有的步骤都是为了构建一个正常的块而解释的:
首先定期组块生成器完成。这会生成景观的基本形状(不含树叶,污垢等)
如果需要的话,这个块的边界被平坦化以适应相邻城市块。这可能意味着降低或提高它们
如果适用,将生成普通网桥
如果适用,将生成公路
如果适用,则会生成地铁
如果适用,则会生成地铁地下城
如果这个块受爆炸影响,则计算完成
如果附近的一块大楼的建筑物因爆炸而损坏,则该建筑物的碎片散落在该大块上
生成一个街区块
在建造街区时,完成以下步骤:
  • 首先,大块石块填满了当前的城市级别(6的倍数)
  • 生成街道,公园和喷泉部分
  • 如果需要的话,会产生走廊(走廊下摆并将建筑物连接到地下)
  • 如果有相邻建筑物,则可能会生成“建筑物装饰”部分
  • 生成“边框”。这是一个石墙,您可以在城市的边缘或街道边缘看到高于相邻街区的边缘
  • 如果启用,将使用破坏发生器
  • 生成楼梯
高速公路生成
  • 如果启用,则会生成“瓦砾”图层。这在街道上添加了一层石头(后来的污垢/沙子),并且可选地还有一层离开块
  • 如果适用,则会生成地铁
  • 如果适用,则会生成地铁地下城
  • 如果这个块受爆炸影响,则计算完成
  • 如果附近的一块大楼的建筑物因爆炸而损坏,则该建筑物的碎片散落在该大块上
生成建筑物块
建筑大厦时,完成以下步骤:
  • 首先,石块被石头填满,直到当前的城市水平(6的倍数)减去最低的地窖水平
  • 然后生成建筑物的每一层
  • 门口通往相邻的建筑物或街道。如果门外放置了实际的门,否则只是空气
  • 地下建筑地板的外墙将转化为建筑物的“石块”(即更换那里的玻璃)
  • 如果有相邻的走廊进行连接
  • 如果启用,将使用破坏发生器
  • 高速公路产生了(即使有建筑物,隧道内的建筑物下面也有高速公路)
  • 如果启用,则会生成“瓦砾”图层。这在街道上添加了一层石头(后来的污垢/沙子),并且可选地还有一层离开块
  • 如果适用,则会生成地铁
  • 如果适用,则会生成地铁地下城
  • 如果这个块受爆炸影响,则计算完成
  • 如果附近的一块大楼的建筑物因爆炸而损坏,则该建筑物的碎片散落在该大块上
公路区块
有两种高速公路:水平(沿X轴)和垂直(沿Z轴)。对于两个方向,高速公路只能在八倍的坐标上生成。这既是为了提高效率,也是为了避免高速公路彼此靠近。
那么,模块如何决定在某个块中是否存在高速公路(对于任何一个方向),以及它如何决定高速公路的高度?以下是使用的步骤。此解释适用于水平高速公路,但垂直高速公路采用相同的算法:

  • 首先检查块坐标以查看它是否是八的倍数。如果没有,那么它不能包含一条公路(对于那个方向)
  • 使用二维柏林噪声函数,垂直方向采用较大比例的样本(因此附近相邻高速公路的可能性较小)。如果噪声函数的值(给定块的x,z坐标)高于某个thresshold,则该块是高速公路的候选者(尚不确定)。否则它不能包含高速公路。上面的图像显示了这样一个按比例缩放的柏林噪声函数的外观,以及我们发现公路区域足够暗(假设黑暗更高)的位置。
  • 鉴于该块是高速公路的候选者,我们扫描该块的所有块,以找到仍然属于该高速公路的一部分的水平行块的第一块(即,对于该块,珀林噪声功能仍然很高)
  • 然后我们在右侧做同样的事情来找到最后一个块
  • 这两个块现在形成了整个高速公路的理论边界
  • 根据设置,我们现在检查两边是否有城市或至少有一边。如果没有足够的城市,那么整个高速公路都会被丢弃,并且不会产生高速公路
  • 如果条件有效,我们仍然检查高速公路是否至少有5个组块。如果不是,我们也不会生成高速公路
  • 在这一点上,我们确信有一条高速公路。我们现在必须检查它有多高。根据配置,我们使用一个或两个城市的高度(在开始和结束块)来计算总高度
地铁区块
地铁是基于每10个街区出现的电台网格。选择原因10而不是8(就像高速公路一样)就是这样,地铁与公路并不总是相同的距离。地铁比高速公路更规则,并且总是形成如下的全球重复电网:
  • 每个红场都是一个电台的候选人
  • 只有当该地点有城市时,才能形成一个电台
  • 如果没有城市,那么车站将被替换为水平铁路部分,以便地铁在那里继续电网中的电台可以有一个,两个或三个电台,但它们都使用资产中的相同部分
  • 未使用的轨道(在运行时)替换为地铁构建模块
  • 请注意,如果附近没有车站,可以选择关闭/移除地铁路段
  • 这用于'rarecities'配置文件
  • 如果启用该选项,则如上图所示的网格将存在间隙并删除部分

整个地铁电网处于-3级(请记住,建筑物的最低城市级别为0)。站台可以是地下的,在这种情况下,站台也可以位于-3层或地面(城市层面)。只有在城市不太高的情况下才能在地面上建站,因为靠近火车站的大块需要降到-3级,而每块可以降到两级。
地铁系统中每个组块的整体形**基于关键站块。所有的地铁块都是根据最近的地块生成的。例如,如果一个电台有三个轨道,那么相邻的水平组块也将有三个轨道。如果电台组块处于第0级,则与该电台相邻的第一个组块将使音轨下降一级,下一个组块将使其下降两级,以便再次结束为-3。



区块图片 Picture

城市景观
高速公路
高桥


隧道
丛林隧道
废墟
海上大桥


资产系统 AssetSystem

介绍
支持以下资产:
  • 条件:条件基本上是随机化的字符串值,可以根据各种标准进行选择。目前用于控制Mobs生成拥有的什么类型的Mobs以及Chest的战利品表。
  • 世界风格:从世界风格来看,城市风格是基于生物群落选择的
  • 城市风格:城市风格代表城市如何生成。它控制建筑物,喷泉,公园,楼梯以及街道的宽度,限制建筑高度和深度以及世界发电机使用的各种模块。城市风格也控制着调色板风格
  • 风格:这是一种调色板风格。它基本上结合了各种调色板,并且还具有随机调色板的功能,以便不同的块(共享相同的样式)可能看起来不同
  • 调色板:调色板是用于零件(结构)和世界上实际块的字符之间的映射。使用样式可以组合不同的调色板。例如,与失落的城市一起分发的标准资产包含建筑物砖块(这是随机的)的调色板以及用于建筑物玻璃的独立调色板
  • 部分:世界上的每个结构都是由一个或多个部分组成的。对于建筑物来说,每个部分都代表建筑物的地面(6高),但部分也用于喷泉,地铁结构,楼梯等。零件是使用调色板中的字符定义的,因此在生成过程中使用的实际构建基块取决于对该块有效的样式的组合调色板。
  • 建筑物:建筑物由选择的部分产生。选择哪个部分取决于一组条件。例如,某些部件可能只适合放置在建筑物的顶部(屋顶部件),因此它们只能在顶部生成。您也可以使用地下或一楼等部件。
  • 多建筑:多建筑物是跨越多个组块的建筑物。在目前的实施中,多栋建筑物被限制在2×2块。多栋建筑物的每个部分都被视为一栋建筑物,但通过使用多层建筑物,您可以确保这些建筑物部件始终一起生成。
  • 预定义城市:预定义城市(和建筑物)对于希望在世界特定地点拥有特定城市和建筑物的包装制造商很有用。如果您将这与禁用城市结合起来,您可以确保您的世界只有您想要的城市而不再有更多
条件目前用于生产者的Mobs选择和Chest物品的选择。此外,由条件(但不是条件本身)使用的评估系统被建筑物用于选择哪些部件可用于哪些楼层。以下是指定的条件示例:
  1. [
  2.   {
  3.     "type": "condition",
  4.     "name": "chestloot",
  5.     "values": [
  6.       {
  7.         "factor": 8,
  8.         "value": "lostcities:chests/lostcitychest",
  9.         "range": "4,100"
  10.       },
  11.       {
  12.         "factor": 8,
  13.         "value": "lostcities:chests/lostcitychest",
  14.         "range": "-100,-3"
  15.       },
  16.       {
  17.         "factor": 20,
  18.         "value": "lostcities:chests/raildungeonchest",
  19.         "inpart": "rail_dungeon1"
  20.       },
  21.       {
  22.         "factor": 20,
  23.         "value": "lostcities:chests/raildungeonchest",
  24.         "inpart": "rail_dungeon2"
  25.       },
  26.       {
  27.         "factor": 2,
  28.         "value": "minecraft:chests/nether_bridge"
  29.       },
  30.       {
  31.         "factor": 2,
  32.         "value": "minecraft:chests/abandoned_mineshaft"
  33.       },
  34.       {
  35.         "factor": 2,
  36.         "value": "minecraft:chests/village_blacksmith"
  37.       },
  38.       {
  39.         "factor": 2,
  40.         "value": "minecraft:chests/desert_pyramid"
  41.       },
  42.       {
  43.         "factor": 2,
  44.         "value": "minecraft:chests/jungle_temple"
  45.       },
  46.       {
  47.         "factor": 20,
  48.         "value": "minecraft:chests/simple_dungeon"
  49.       }
  50.     ]
  51.   }
  52. ]
复制代码
要使用这种情况,你可以将它调到一个调色板的chest。当发生器在调色板中遇到这种情况时,它会评估它并使用返回的东西。为了评估这种情况,给出了一个上下文对象,其中包含有关正在生成的块/建筑物的信息。在这个例子中,'chestloot'状态下的第一个条目告诉系统'lostcitychest'战利品表可以在4到100之间的楼层生成,第二个条目也允许生成低于-3级(在cellars中)。
第三和第四个条目用于在代表铁路地下城的'rail_dungeon1'和'rail_dungeon2'部分生成'raildungeonchest'
当决定要使用系统的物品表时,将会找到有效条件下的所有条目,然后根据给定的“factor”选择一个随机的条目。较高的因素意味着这个特定的条目被选择的可能性较高(如果条件为true)。
存在一个类似的例子来控制Mobs:
  1. [
  2.   {
  3.     "type": "condition",
  4.     "name": "easymobs",
  5.     "values": [
  6.       {
  7.         "factor": 1,
  8.         "value": "Zombie"
  9.       },
  10.       {
  11.         "factor": 1,
  12.         "value": "Skeleton"
  13.       },
  14.       {
  15.         "factor": 1,
  16.         "value": "Spider"
  17.       }
  18.     ]
  19.   }
  20. ]
复制代码
支持条件:
top (boolean):在建筑物顶部为true(顶部代表最高楼层上方的部分)
ground (boolean):在建筑物的地面上为true,这与建筑物左上角的城市级别相关(如果这是一座多层建筑,其中一些大块可能位于城市级别不同的部分城市)
range (string):表示法:'from,to'。如果当前楼层位于这两个数字之间(包括两端),则此条件成立。请注意,底层编号为0。
cellar (boolean):如果地板在地下,则为true
floor (integer):在指定楼层上为true
chunkx(integer):在特定块x位置处为true。如果你在特定地点有预定义的建筑物,并且你想要非常特殊的Mobs或者Chest,这会很有用
chunkz(integer):在特定的块z位置为true
inpart(string):如果Spawner/Chest是给定“部分”的一部分,则为true,
isbuilding(boolean):如果Spawner/Chest在建筑物内,则为true
inbuilding(string):如果Spawner/Chest位于特定建筑物内,则为true
issphere(boolean):如果Spawner/Chest位于城市球体中,则为true
inbiome(string):如果Spawner/Chest在生物群落中,则为true
城市风格:
  1.   {
  2.     "type": "citystyle",
  3.     "name": "citystyle_common",
  4.     "inherit": "citystyle_config",
  5.     "streetblocks": {
  6.       "border": "y",
  7.       "wall": "w",
  8.       "street": "S",
  9.       "streetbase": "b",
  10.       "streetvariant": "B"
  11.     },
  12.     "parkblocks": {
  13.       "elevation": "x"
  14.     },
  15.     "corridorblocks": {
  16.       "roof": "x",
  17.       "glass": "+"
  18.     },
  19.     "railblocks": {
  20.       "railmain": "y"
  21.     },
  22.     "buildings": [
  23.       {
  24.         "factor": 0.4,
  25.         "building": "building1"
  26.       },
  27.       {
  28.         "factor": 0.4,
  29.         "building": "building2"
  30.       },
  31.       {
  32.         "factor": 0.2,
  33.         "building": "building3"
  34.       },
  35.       {
  36.         "factor": 0.2,
  37.         "building": "building4"
  38.       },
  39.       {
  40.         "factor": 0.3,
  41.         "building": "building5"
  42.       }
  43.     ]
复制代码
请注意'citystyle_config'。城市风格可以继承其他城市风格。在这种情况下,有一个非常简单的citystyle_config,
在其中配置道路宽度:
  1.   {
  2.     “type” : “citystyle” ,
  3.     “name” : “citystyle_config” ,
  4.     “ streetblocks ” : {
  5.       “width” : 8
  6.     }
  7.   }
复制代码
当你想改变道路宽度时,你只需要修改这个资产,所有其他城市风格都会自动使用它。
世界风格
  1.   {
  2.     "type": "worldstyle",
  3.     "name": "standard",
  4.     "outsidestyle": "outside",
  5.     "citystyles": [
  6.       {
  7.         "factor": 0.5,
  8.         "citystyle": "citystyle_standard"
  9.       },
  10.       {
  11.         "factor": 9.0,
  12.         "biomes": [
  13.           "desert",
  14.           "desert_hills",
  15.           "mesa",
  16.           "mesa_rock",
  17.           "mesa_clear_rock"
  18.         ],
  19.         "citystyle": "citystyle_desert"
  20.       }
  21.     ]
  22.   }
复制代码
预设风格
  1.   {
  2.     "type": "city",
  3.     "name": "Big City",
  4.     "dimension": 0,
  5.     "chunkx": 100,
  6.     "chunkz": 100,
  7.     "radius": 200,
  8.     "buildings": [
  9.       {
  10.         "multibuilding": "center",
  11.         "chunkx": 0,
  12.         "chunkz": 0
  13.       }
  14.     ]
  15.   }
复制代码
将此作为资产将确保有一个城市位于大块位置100,100(乘以16以获得实际坐标),其半径为200.它还将多建筑物(“Center”)放置在0,0位置(相对于城市的中心)。您还可以使用“Building”关键字而不是“multibuilding”来放置各个建筑物。
在支持城市球体的景观类型中,您还可以定义预定义的城市球体(并可选择禁用随机球体生成)。
这样做如下:
  1.   {
  2.     "type": "sphere",
  3.     "name": "Big Spheres",
  4.     "dimension": 0,
  5.     "chunkx": 100,
  6.     "chunkz": 100,
  7.     "centerx": 1608,
  8.     "centerz": 1608,
  9.     "radius": 200,
  10.     "biome": "jungle"
  11.   }
复制代码


后言 Finally

总计:3792汉字 12090字符
统计程序:http://www.eteste.com/

[groupid=1536]Firefly Studio[/groupid]