距离显示结果还剩5票~
暂无日志..
暂无管理组..
暂无编辑组..
暂无开发组..
介绍
Just Enough Dimensions 允许在游戏内注册新的自定义维度,也能调整现有维度的设置。
例如可以调整开启每个维度单独的世界边界,让地狱的边界是主世界的 1/8 而不是一样大。或者改变天空/雾/云的颜色或者渲染高度。
在 1.6.0 版本,也能在世界创建的时候直接改变已有的设置,例如生成器设置的世界类型(例如生成超平坦/虚空世界(虚空世界也是超平坦的一种)),又或是直接设置一些游戏规则(虽然 1.6.0 以前也能实现,但是不是十分有效)。
注意:由于维度 id 在 Forge 和原版中有处理过程,而且自定义选项需要进行网络数据交换,所以客户端也需要安装该模组。
概览
所有维度的注册和设置都通过一个 JSON 文件进行。游戏内也有一个命令"dimbuilder"来创建/注册维度,或者修改之前增加过的维度的设置,还能改变大多数配置文件存储的项目值(并不是所有值,例如光照表或者群系颜色改变,这些只能通过 dimensions.json 文件来设置)。
维度的注册和已有维度的设置都是通过"config/justenoughdimensions/dimensions.json"进行修改;
或者是 "worlddirectory/justenoughdimensions/dimensions.json",后者具有优先性。
关于 JSON 格式
如果你只是了解 JSON 格式,或者只想检查格式正确性,可以通过一些网站来检查内容的合法性,比如:https://www.bejson.com/explore/index_new/
当然某些文本编辑软件的插件也是有效的,比如 Notepad++ 的 JSONViewer。
JED 1.6.0 的设置改变
如果你是用的 1.6.0 的开发版本,它和之前的版本的 dimension.json 在设置上有些不同。
有些 JED 设置的标签被移除或者改名了,有些其他的设置项也改名了
过去内置于 worldinfo 标签内的被叫做 JED 的标签,现在更名为小写的 jed,而且移出了 worldinfo 标签,直接隶属于 per-dimension 对象。
1.6.0 开发版的所有更改:https://pastebin.com/raw/28jeWZyv;
大量不同设置示范案例:https://pastebin.com/u/masa-;
不同特性的示范案例: https://pastebin.com/m9xYSHZd;
配置选项和基础自定义维度注册
模组的 cfg 文件内有少许设置选项,用来开启现有功能。
注意:为了以防万一,它们都是默认关闭的!
enableForcedGameModes
自动转换玩家的游戏模式到每个维度各自的设置,如果该维度有设置ForcedGameMode选项。
enableInitialSpawnDimensionOverride
开启初始世界在其他维度(在 initialSpawnDimensionId一项设定)的设置。
enableLoggingInfo
开启记录信息。会产出大量运行信息,需要查问题的时候可以打开寻找问题。
enableOverrideBiomeProvider
如果开启了,维度设置中的"biome" : "name"的键值对会使用 BiomeProviderSingle 覆盖该维度的 BiomeProvider,直接使用给定的群系,"name 字段" 必须是 ResourceLocation 里面注册过的群系字段,例如 "minecraft:plains"(或者直接用"plains"一样可以调用原版的群系)。
enableReplacingRegisteredDimensions
如果开启,dimensions.json中维度设置内的override": true键值将会用于覆盖已有的维度。注意:若果想有效覆盖,当JED执行注册和覆盖操作的时候该维度不能被加载。
enableUnregisteringDimensions
如果开启,dimensions.json 中维度设置内的 "unregister": true 键值生效,用于卸载已有的维度,比如禁用地狱和末地。
enableSeparateWorldBorders
如果开启,可以增加自定义的世界边界,取消其他维度和主世界的边界同步(注意:如果想使用各自独立的世界边界,你还需要在维度设置中增加 "worldinfo" 字段,至少是一个空字段以开启独立设置)。
enableSeparateWorldInfo
如果开启,所有存在于 dimensions.json 中有 "worldinfo" 字段的维度将使用各自独立的 WorldInfo 设置,空字段也可。即使不被此模组注册的维度同样生效(因为该维度已存在且未被覆写)。
initialSpawnDimensionId
设置玩家首次加入服务器/进入世界时出生的维度。
维度的注册和已有维度的设置都是通过 "config/justenoughdimensions/dimensions.json"进行改变;
或者是 "worlddirectory/justenoughdimensions/dimensions.json",后者具有优先性。
示例
以下是一个简单的例子用来注册一些自定义维度(换行符和间隔符不是必须的)
{
"dimensions": [
{
"dim": 9,
"dimensiontype": {
"id": 9,
"name": "Test dim 9",
"suffix": "_dim9",
"keeploaded": false,
"worldprovider": "WorldProviderSurface"
}
},
{
"dim": 10,
"dimensiontype": {
"id": 10,
"name": "Test dim 10",
"suffix": "_dim10",
"keeploaded": false,
"worldprovider": "WorldProviderHellJED"
}
},
{
"dim": 11,
"dimensiontype": {
"id": 11,
"name": "Test dim 11",
"suffix": "_dim11",
"keeploaded": false,
"worldprovider": "WorldProviderEndJED"
}
},
{
"dim": 15,
"dimensiontype": {
"id": 15,
"name": "Test dim 15",
"suffix": "_dim15",
"keeploaded": false,
"worldprovider": "biomesoplenty.common.world.WorldProviderHellBOP"
}
}
]
}
字段解释
"dim": <int>,
//维度的 ID,整型,必须有。
"dimensiontype": {
//包含世界的生成信息,含有若干子项。
"id": <int>,
//DimensionType ID,一般用于传送/传送门的代码,决定了传送是否能开启以及如何传送实体。
"vanilladimensiontype": "<DimensionType>",
//如果该项存在,将会使用设置的(已有的)DimensionType 来创建世界而不是新建一个,下面的所有项将被忽略。
"name": "<WorldName>",
//世界的名字,可能会被某些 Mod 的传送相关道具使用。
"suffix": "<suffix>",
//一般用于现有的文件名,因此不要使用空格或者其他什么特殊的字符,最好像示例中写的那样。
"worldprovider": "<WorldProvider>",
//世界生成器名称,可以使用其他 Mod 的世界生成器但是需要完整的路径名。
}
"unregister": <bool>,
//为真时将卸载这个维度,忽略其他所有设置,需要打开 enableUnregisteringDimensions。
"override": <bool>,
//为真时将用此设置覆盖已有维度的设置,需要打开 enableReplacingRegisteredDimensions。
"disableteleportingfrom": <bool>,
//为真时将不能从此世界传送出去。
"disableteleportingto": <bool>,
//为真时将不能传送进入此世界。
"biome": "<BiomeName>",
//将会覆盖 worldprovider,整个世界将会只有设置的群系。
"colors":<object>
//设置染色,类似群系的染色
各自独立的世界信息设定
JED 可以让不同维度使用不同的 levels.dat,以让不同维度拥有不同的种子、世界类型、生成器,例如你可以在主世界是 RTG 生成的时候建立一个用 BOP 生成的附属世界,需要开启 enableSeparateWorldInfo,并且至少有一个 worldinfo 的空字段。
注意:如果没有各自独立的世界信息设置,tpj 命令将会把你传送到危险的地方,因为不同的世界使用的是同一个出生点坐标,所以建议开启。
字段解释:很多字段没有解释,但是自己建立一个心仪的世界,然后用 nbt 编辑工具打开 levels.dat 看往上面抄就行,注意所有项都是大小写区分的。
"worldinfo": {
"RandomSeed": "<seed>",
//设置生成种子
"generatorName": "<GeneratorName>",
//生成器名称,例如default(默认),flat(超平坦),amplified,largeBiomes,debug_all_block_states,BIOMESOP(需要安装biomesO'plenty)、RTG(需要安装Realistic Terrain Generation)
"generatorOptions": "<option>",
//生成器设置,可以在levels.dat里面找到,BOP也提供了一键导出,注意这是一个字符串字段,里面的所有引号之前需要加转义符"\",例如下面这个RTG的设置
//"{\"villageSize\":5,\"mineShaftChance\":0.01,\"dungeonChance\":20,\"templeDistance\":16,\"monumentSpacing\":16,\"monumentSeparation\":3,\"mansionSpacing\":40,\"mansionSeparation\":10,\"strongholdCount\":256,\"strongholdDistance\":16,\"strongholdSpread\":4}"
"generatorVersion": "<version>",
//当前世界类型可能会分版本(原文如此),生成器是defult这里必须是1,或者直接使用defult_1_1这个生成器名称
"GameType": <int>,
//游戏类型,生存/创造/HC
"GameRules": <RulesObject>,
//和generatorOptions不一样这是个JSON对象字段,所有项目都是键值对的形式,举个例子
//{"commandBlocksEnabled":true,"doFireTick":false,"mobGriefing":false,"universalAnger":false}
"MapFeatures": <>,
"SpawnX": <int>,
"SpawnY": <int>,
"SpawnZ": <int>,
"Time": <int>,
//最好不要设置,不然每次载入世界都会覆盖到设定的值
"DayTime": <int>,
"LastPlayed": <int>,
"LevelName": "<LevelName>"
"clearWeatherTime": <int>,
"rainTime": <int>,
"raining": <bool>,
"thunderTime": <int>,
"thundering": <bool>,
"hardcore": <bool>,
"allowCommands": <>,
"Difficulty": <int>,
"DifficultyLocked": <bool>;
"BorderCenterX": <int>,
"BorderCenterZ": <int>,
"BorderSize": <int>,
"BorderSizeLerpTime": <int>,
"BorderSizeLerpTarget": <int>,
"BorderSafeZone": <int>,
"BorderDamagePerBlock": <int>,
"BorderWarningBlocks": <int>,
"BorderWarningTime": <int>
}
或者你可以使用 "worldinfo_onetime" 代替 "worldinfo",这样不会每次载入世界都会覆写一遍,而是只有在创建的时候写入
JED 特有设置
在 "worldinfo" 字段下还可以添加 JED 字段来增加一些独特的设置,必须使用 WorldProviderSurfaceJED 这个生成器,这些设置无法作用于 "worldinfo_onetime"。
"JED": {
"ForceGameMode": <bool>,
//强制转换模式,需要打开enableForcedGameModes,当玩家进入该维度是强制转换玩家的游戏模式
"CustomDayCycle": <bool>,
//是否开启自定义昼夜循环
"DayLength": <int>,
//白天持续的游戏刻
"NightLength": <int>,
//晚上持续的游戏刻
"CloudHeight": <int>,
//云的高度
"SkyColor": "<HEXRGB>",
"FogColor": "<HEXRGB>",
"CloudColor": "<HEXRGB>",
"SkyRenderType": <int>,
//1为普通世界,2为末地
"SkyDisableFlags": <int>,
//可以取消某些星体,1=太阳,2=月亮,3=太阳和月亮,4=星星,5=太阳和星星,6=月亮和星星,7=所有
"CanRespawnHere": <bool>,
//是否可以在本维度重生
"RespawnDimension": <int>
//如果上一项为false则在这一项设置重生的维度
}