标题: 本人的版式调整和润色修改稿
本帖最后由 henry5041 于 2016-3-9 20:55 编辑
TerrainControl
1 概述
Terrain Control 是一款高级的地形生成器。通过多种配置文件,它使用户可以在不了解Java的情况下,对Minecraft地形生成机制的大多数方面进行控制。它可以运行在Bukkit/Forge服务端或带有Forge的单人游戏上。Terrain Control 继承自旧版的PhoenixTerrainMod,而其又是基于著名的 BiomeTerrainMod。TerrainControl 由Khoorn维护 (在Github上名为 Wickth )。
· 控制水平与垂直方向的地形生成噪声函数
· 控制每个生态群系的地形生成高度以及波动性
· 由图像生成生态群系图
· 控制生态群系,岛屿和大陆的规模
· 自定义生态群系
· 众多关于洞穴与峡谷的设置项
· 控制自然结构的生成,诸如天然矿井、要塞和村庄
· 对矿物、植物、地牢、池塘和其他生成物的完全控制
· 自定义树木和其他对象(BO2 以及 BO3)
· 替换方块
· 支持视觉设置,如设置树叶的颜色(需要客户端也安装TerrainControl)
想了解更多,请继续阅读。
2 向导
2.1 准备工作
2.1.1 安装向导
Terrain Control 插件支持CraftBukkit,Spigot,Cauldron和Forge (甚至单人游戏),jar文件可以在所有这些平台上面运行。
2.1.1.1 Forge(单人游戏)
首先,下载并且安装Forge,运行一次Minecraft以确保所有文件正常运行。然后通过
Terrain Control百科主页面上的下载链接下载插件,确保和Minecraft本体的版本对应。把文件放进.minecraft文件夹下的mods文件夹。
你现在可以创建一个Terrain Control所定义的世界类型。这个Mod 只会影响到这一个世界与这个世界的类型。如果你没有更改在 .minecraft/mods/TerrainControl/worlds/YOUR_WORLD_NAME/里面的配置文件,这个世界只会成为一个默认的Minecraft世界。每当你改变了配置,你必须删除.minecraft/saves/YOUR_WORLD_NAME/region 文件夹来重新生成世界,被更改的设置不会影响到已经生成的区块。向导会教给你如何自定义一个世界类型。
2.1.1.2 CraftBukkit,Spigot 和 Cauldron 服务器
只需要把jar文件放入plugins文件夹,就像其他的Bukkit插件一样。此时并不需要在玩家的客户端上安装相应的单人游戏版本的TerrainControl,但是如果安装了可以体验到更多的特性。
在你安装完成之后,你必须为你新的世界激活这个插件。如果你没有一个类似于Multiverse的多世界管理插件,可以通过如下修改bukkit.yml来允许插件操作这个世界(请在yml文件里使用空格,不要使用tabs!):
worlds:
你的世界名称:
generator: TerrainControl
如果你使用了 Multiverse,你可以创建一个TerrainControl 类型的时间通过使用命令:
/mv create 世界名称 normal -gTerrainControl
如果你通过配置多世界插件来使用Terrain Control 更改你的一个默认类型的世界,也需要把Terrain Control 添加到bukkit.yml (操作如上),TerrainControl 需要这个来正确地为默认世界进行初始化。如果你使用其他的多世界管理插件,请自行查看其介绍文档进行配置。请使用 TerrainControl (在Terrain 和 Control之间没有空格)作为generator名称(即generator 后面填的),区分大小写。
如果你没有更改在 plugins/TerrainControl/worlds/YOUR_WORLD_NAME/目录下的配置,这个世界只会成为一个默认的Minecraft世界。每当你改变了配置,你必须删除 .minecraft/saves/YOUR_WORLD_NAME/region文件夹来重新生成世界。被更改的设置不会影响到已经生成的区块。向导会教给你如何自定义一个世界类型。
2.1.1.3 Forge服务器(也就是官服)
确保Forge安装到了服务器。把插件放进mods文件夹。去 server.properties 文件然后设置level-type 到 TerrainControl (没有一个空格在 Terrain 和 Control之间)。删除主世界的 level.dat来得到一个正确的世界类型。
如果你没有更改在 .minecraft/mods/TerrainControl/worlds/YOUR_WORLD_NAME/里面的配置文件,世界只会成为一个默认的Minecraft世界。每当你改变了配置,你必须删除.minecraft/saves/YOUR_WORLD_NAME/region 文件夹来重新生成世界。被更改的设置不会影响到已经生成的区块。下面的向导会教你如何自定义一个世界类型。
2.1.2 准备工作向导
欢迎使用Terrain Control。
在你成功的安装Terrain Control之后,你可以开始创建你的新世界。我们先创建一个种子为”12”的创造模式的世界(TerrainControl作为generator),使用这个特定的种子是为了使你的世界与教程所介绍的相同。如果你需要创建一个不同的世界,只需要跳过这个列表。
· 如果你是单人游戏,点击创建新的世界按钮,选择创造模式作为游戏模式然后填写一个名称。点击更多世界选项按钮,把种子改成12然后选择 TerrainControl作为世界类型。确保打开了允许作弊(你需要使用 /tp 命令)。
· 如果你在 Bukkit 服务器上然后你有Multiverse 多世界插件,你可以使用 /mv create world_name NORMAL -s 12 -g TerrainControl 来创建世界然后使用 /mv tp world_name 来传送到这个世界。
· 如果使用的是其他的多世界管理插件且使用的是Bukkit服务器,请查询该多世界插件的帮助文档。创建一个新世界(记得把12作为世界的种子),然后将TerrainControl作为世界类型。
· 如果你在使用Bukkit服务器,但是没有任何多世界管理插件,请前往 bukkit.yml 增加下列内容:
worlds:
你的世界名称:
generator: TerrainControl
记得把 “你的世界名称”改为你所习惯的世界名称。而且,在文件里面不要使用tab键,只能使用空格键。前往 server.properties文件然后将 level-seed 设置为12。之后删除整个世界文件夹来得到一个全新的含有正确地图种子的 level.dat 文件。
· 如果你使用的是Forge服务器(官服),前往server.properties ,把level-type 设置为TerrainControl , level-seed 设置为12。删除整个世界文件夹来得到一个全新的含有正确的种子的 level.dat 文件。
此时可以登陆一次你的世界让 Terrain Control 生成新的配置。但你会注意到这个世界和默认的Minecraft世界没有任何区别,因为你还没有更改配置文件。
找到你的Terrain Control 设置文件夹(如果不知道在哪儿可以参考安装说明),你应该可以看到一些类似于这样的东西:

打开 WorldConfig.ini(推荐使用Notepad,但是不要使用含有字体样式的编辑器,比如说Word)
带有 # 开头的行是注释,是对每一个变量进行的解释。在Wiki的WorldConfig页面上,你还可以找到更多的信息。
为了验证所有的东西都正常工作,我们来更改一个数值试试。GenerationDepth是一个非常有用的变量,如果你把它设置成9,所有的生物群系大小将减半(仅仅是x和z两个方向,就是说高度还是原来的)。如果你设定为了11,所有的生物群系大小翻倍(同时也只是在x和z两个方向)。如果你设置为12,那么生物群系的大小将会变得和”巨型生物群系”世界类型的生物群系大小一样大。让我们试试把它改成12,然后保存。
如果此时(重新)打开游戏/服务器,你并不能看到任何变化,必须探索新的区块来查看新的地形,这和其他的编辑器(如WorldEdit)一样。你可以删除region文件夹来重新生成地图,但是如果你删除世界文件夹里面的region文件夹,仅仅是删除了地形,而保存了玩家的位置信息和地图种子。
注意!不要在服务器/游戏运行时这么做!
在你成功删除了region文件夹之后,打开服务器/游戏来测试你的更改。你应该能看到含有一个大型生物群系的世界。
现在可以浏览一下WorldBiomes文件夹。
再次强调:不要忘记关掉服务器/游戏。你会发现里面有很多代表生物群系配置(BiomesConfig)的 .bc 文件。有些文件看起来难以理解 (比如Sky.bc文件),还有一些根本不是生物群系 (比如沙滩和河流生物群系并不存在),还有一些有非常奇怪的名称(如Mesa Plateau F M)。然而这些名称都是Mojang确定的。

你可以先忽略这些奇怪的生物群系名称,打开 Desert.bc 文件。如果你往下翻这个文件,你可以发现BiomeHeight和 BiomeVolatility变量(就是在TerrainGenerator Variables下面的东西)。我们先在沙漠上面加点山丘,设置 BiomeHeight 为 0.2(让地形更高一点,而不是多加点山丘)还有BiomeVolatility 设置为 0.4 (让这里多加点山丘)。现在保存文件,删除region文件夹。如果你确定使用的是12地图种子,可以使用/tp -19 80 -306来传送到一块沙漠里面。

也许悬崖边的石头显得有些突兀,沙石看起来会更棒。请关闭游戏/服务器,然后打开 Desert.bc 然后设置 StoneBlock (在“Block”部分) 为 SANDSTONE。这把所有的石头改成了沙石。关闭游戏/服务器,删除region文件夹然后打开服务器/游戏。

现在也许你已经体验到了Terrain Control的力量。如果你想知道其他的设置会产生什么效果,可以好好看一下WorldConfig 和 BiomeConfigs文件里面的设置。如果需要创建自定义的生物群系,你应该继续读下去直到向导结束。在
主页面你还可以发现大量其他的向导,
示例页面也会对你很有用处。
2.1.3 你的第一个自定义生物群系
在这个向导里面我们来创建第一个自定义生物群系。在前面的教程中我们把默认的沙漠多加入了一些丘陵,把石头替换为沙石。我们现在将创建一个有很多花和一些树的山地。
你可以使用之前的世界继续工作。或者,您可以创建一个种子为12的新的世界。请确保GenerationDepth也设置为了 12 (在 WorldConfig.ini 中找到),使生物群落变得更大。如果你已经这么做了,可以使用本教程中的坐标。如果不是,在给定的坐标里会找到其他的生物群系,必须自己寻找需要的群系。
我们需要先向生物群系列表添加自定义的生物群系。需要修改的第一个选项是 CustomBiomes。打开 WorldConfig.ini文件,并搜索该选项。需要如此编辑CustomBiomes的一行:
CustomBiomes:Flowerfield:40
这样Terrain Control的控制器就能读取叫做Flowerfield的生物群系了。生物群系的ID将设置为40。生物群系ID就像方块ID一样,但是这有专门的列表记录以及最高的生物群系ID只能是254,两个生物群系不能出现相同的ID。
如果你重启了你的游戏/服务器,你会在BiomeConfigs 目录下发现一个新文件: FlowerfieldBiomeConfig.ini。然而,你的世界看起来没什么变化。我们需要将我们生物群落系添加到生物群系列表。通过在NormalBiomes(位于WorldConfig.ini)里加入项,我们可以让它成为正常生成的生物群系,就和大多数生物群系一样。下面来把你的生物群系添加到NormalBiomes列表:
NormalBiomes:Desert,Forest,ExtremeHills,Swampland,Plains,Taiga,Jungle,Flowerfield
确保服务器关闭/游戏地图未开启后,删除世界文件夹里的region文件夹然后重新打开服务器/地图。使用/tp -1010 78 -11来传送到这个位置后,你可以看见你自定义的生物群系。虽然它看起来还不令人满意,但别忘记,你还没有改变任何设置呢:

如果你没有使用单人游戏Mod的Terrain Control,颜色会出现一点点差别。
首先,我们来绿化一下生物群系。打开 FlowerfieldBiomeConfig.ini,向下滚动直到你看见Visuals 和 weather section(视觉效果&天气部分)。在这里你可以更改生物群系的颜色。但是,如果在客户端上没有TerrainControl的Mod,则不会有任何效果。如果你把地图应用在单人游戏上面,这当然没有任何问题;但是如果你使用在Bukkit服务器上面,你的玩家只能看见Minecraft标准颜色模式。颜色都是十六进制的,为了找到想要的颜色,你可以搜索一下“拾色器(Color picker)”,
请注意一下大多数拾色器使用的是带有前缀#的颜色编号,这在网页设计中是常见的。但是,TerrainControl要求使用0x来代替#,这在Java中是常见的。
在本教程中,我们并不会启用颜色设置。TerrainControl有一个很有用的选项,可以使用别的生物群系的ID来保存我们自己的生物群系。这将会使颜色,天气和生物都和另外一个生物群系相类似。然而,地形的形状和特性仍然看起来一样。我们打算使用蘑菇岛生物群系,因为它有很好看的绿色草地(通常不常见,因为那里覆盖满了菌丝,但试着在那里种一块草你就能发现了)。另外,没有敌对生物会生成在上面。向上滚动找到ReplaceToBiomeName ,并将其设置为 MushroomIsland。
请确保服务器关掉/地图没有打开,删除世界文件夹内的region文件夹并重新启动服务器/打开地图。使用命令 /tp-1010 78-11 传送到该位置,您现在可以看到生物群落绿了很多:

现在,我们要让生物群落多一点山丘。再次打开 FlowerfieldBiomeConfig.ini,将BiomeVolatility 设置为 0.5。如果你现在再测试地图,你会看到,在一些地方土地低于海平面。为了解决这个问题,我们需要把生物群系的海拔提高一下,而不是增加山丘的数量。将BiomeHeight 设置为 0.5,使生物群落高一点。
关闭服务器/世界,删除region文件夹并重新打开服务器/世界。现在,您应该看到一些小山:

现在我们要将一些资源添加到生物群系。TerrainControl拥有强大的资源控制体系,由一长串的列表来控制,资源可以是矿、植物、树或者小湖等。几乎所有资源都有其生成频率选项,该数据选项设置其生成频率是默认的多少倍。几乎所有的资源都有稀有程度设置,来确定资源生成的概率。通常的地形还有另一个限制因素:比如如果没有足够的空间来生成一棵树,它就不会生成,即使概率是100。
资源系统所使用的函数语法也用于其他地方的一些配置,它是这样使用的:
NameOfFunction(parameter,parameter,parameter,…)
函数名(参数,参数,参数,……)
如果你有 Microsoft Excel 电子表格的使用经验,应该对这种语法熟悉:每个参数所做改变都会影响在资源中的一些东西。
所有的资源同时摆放在一个列表中,叫做资源队列(Resources queue)。这已经超出了本向导所能够介绍到的范围,然而一些关于我们的植物生物群系的有趣的资源也许会被描述到。
一方块高的花在Minecraft中是单一的方块资源。在资源队列中,有两个资源设计是为了单一方块。草的工作(即草在TerrainControl的生成时做的运算)比其他植物更容易一些,但它只可以在地形的顶端生成。而植物在会在最小和最大高度之间选择一个随机值,然后检查这个位置是否合适。而草只是简单的把自己生成在最高的方块上面,关于这个你可以查看一下高度图。
出于某种原因Mojang在Minecraft游戏中使用植物的资源方式来生成花,我们没有理由也这样做,于是将使用草的资源生成方式来生成。草的资源生成方式的语法如下所示:
Grass(Block,BlockData,Frequency,Rarity,BlockSource[,BlockSource2,BlockSource3.....])
草(方块,方块数据,生成频率,稀有度,方块源[,方块源2,方块源3…])
Block是方块的ID或者方块的名称。BlockData是方块的数据,取值氛围为0到15。Frequency 和 Rarity在之前已经讲解过。BlockSource是可以在此方块上生成的所指定的方块。
首先,我们删除掉标准的控制花生成的两行代码,因为我们并不打算使用植物的资源生成方式。从资源队列中删除这两行:
Plant(RED_ROSE,2,100.0,0,128,GRASS,DIRT,SOIL) Plant(YELLOW_FLOWER,2,100.0,0,128,GRASS,DIRT,SOIL)
然后我们在资源队列的末尾添加如下的草地资源生成方式:
Grass(RED_ROSE,0,40,100,GRASS)Grass(YELLOW_FLOWER,0,80,100,GRASS)
这理论上会在每个区块上面多生成40个红玫瑰和80朵黄花(1.7.2后为罂粟和蒲公英)。当然,地形并不总是适合花的生成,所以我们不会看到那么多的花。另外一件事情是每次生成位置的选择是随机的,这意味着它可能替换一朵已经生成了的花!
像之前一样,如果你关掉了服务器/游戏,删除region文件夹然后重新打开,你会看到这样的景象:

让我们再添加一些高大的草,来让我们的生物群系变得更加美观。在资源队列里面已经有关于高大的草的代码,所以只是需要更改一下资源生成的概率。请找到这一行:
Grass(LONG_GRASS,1,10,100.0,GRASS,DIRT)
把10替换成80:
Grass(LONG_GRASS,1,80,100.0,GRASS,DIRT)
关掉服务器/游戏,删除region文件夹然后重新打开游戏/服务器。看起来好多了,不是么?

本部分教程已经快结束了,但是我们还需要添加一些树。如果没有树,那么在这个生物群系中将很难生存下去。树的资源的语法如下所示:
Tree(Frequency,TreeType,TreeType_Chance[,Additional_TreeType,Additional_TreeType_Chance…])
Tree(生成概率,树的类型,树的类型的概率[,附加的树的类型,附加的树的类型的概率…])
它有一个很巧妙的语法来生成你想要的类型的树。每次尝试(有概率的尝试),它会首先选择第一个TreeType。如果这个TreeType没有成功的生成,则是因为TreeType_Chance(这是一个控制成功生成的概率)或者因为地形不合适。然后它继续选择下一个Additional_TreeType。如果那棵树还是不能生成,将会继续,直到列表中的所有树都被处理。
有些树的名称并不好记,比如说Forest其实是白桦木,而Tree却只是橡树。
把这一行加入到资源队列的末尾:
Tree(1,Forest,4,Tree,4)
这意味着每个区块中只进行一次生成树的尝试。这种尝试,只有4%的概率(在地形合适的情况下)能成功生成白桦树。如果白桦树没有成功的生成,则有4%的概率会生成一棵普通的橡树。
关掉服务器/游戏,删除region文件夹然后重新打开服务器/游戏。我们的生物群系从技术上讲已经完成了:

然而,如果你使用Bukkit服务器,且使用了/tc map命令,这个生物群系则会显示为方块生物群系。你可以通过改变BiomeColor来改变它,我们这次使用0xb8e65c颜色。关掉服务器/游戏,删除region文件夹然后重新打开服务器/游戏。执行命令/tc map,你会得到一张像这样的地图:

如果关于这个世界你有任何问题,你可以在这里下载已经完成的地图版本。
恭喜,你已经完成了你的自定义生物群系!现在你可以创建如你所愿的生物群系了。你已经知道如何创建山丘、森林、草地、鲜花等等。下面是一些额外的贴士:
· BiomeTemperature:0 将会导致生物群系被雪覆盖。但是如果在客户端没有安装本Mod,将会在地上看到雪,但天气却是下雨。解决这个问题你可以使用ReplaceToBiomeName:Taiga。
· 水将会在海平面以下的地形尝试产生。使用 BiomeVolatility 以及 BiomeHeight 设置你可以更好的控制陆地生成的形状。
· 你可以通过查看默认的配置文件来寻找如何让你的生物群系取得某一个效果。
TC论坛帖子中的下载资源同样也十分有用。
祝你好运!
2.1.4 常见问题
TerrainControl并不一定总能把地形制作的如你所愿。此页面将把初学者经常遇见的一些问题罗列出来。如果你仍然困惑,你可以创建一个论坛话题来描述你的问题。问题应当描述的尽可能详细,并且把你的日志也发送出来(最好是 pastebin.com 上的这种或者类似的) 或者把你的日志放进ZIP压缩文件当中。
2.1.4.1 我的world文件夹没有被创建,只有GlobalObjects存在。
TerrainControl不会在你安装时接管你的世界。你需要为一个世界打开TerrainControl,按照安装说明来安装。如果你仍然感到困惑,可以在论坛发布一个话题并且附上启动日志。
2.1.4.2 我的设置没有对地形产生任何影响。
你试过再生地形(即删除region文件夹)么?如果是,把你的TerrainControl文件夹放到另外一个地方并且重新打开服务器/游戏然后看看TerrainControl是否已经重新生成了配置文件。如果没有,那么TerrainControl甚至没有读取它们。参阅上述有关问题来寻找这个插件的解决方案。如果是,请看看BiomeMode和 TerrainMode ,确保它们没有设置为默认(Default)(这使得TerrainControl忽略你的配置来使用香草来代替)。
2.1.4.3 我出生在一片海洋中而没有任何陆地。
别担心,陆地是存在的。你可以前往比较远的地方寻找陆地,或者改变地图的种子(对于服务器,你需要新的level.dat,仅仅改变server.properies 是不行的)。地图种子“11”会把你生成在陆地上面。你也可以关闭海洋生成或调整海洋面积(改变WorldConfig中LandRarity 设置):
2.1.4.4 特定的设置并不起作用(但是其他的设置正常工作)。
大多数设置是区分大小写和空格的,这是为了使他们更加准确。某些设置需要较高的数值来使其具有明显效果,有些设置需要在客户端上面有对应的Mod(见文件/此wiki中的注释),有些设置并不依赖于其他的设置(同上,见文件/此wiki中的解释)。
如果你不熟悉TerrainControl,请将SettingsMode设置为 WriteAll。这会使插件重设或移除其无法读取的变量,这样你可以立刻注意到文件中的错误。