[JED]维度定制(Just Enough Dimensions)Mod
Just Enough Dimensions允许在游戏内注册新的自定义维度,也能调整现有维度的设置。
例如可以调整开启每个维度单独的世界边界,让地狱的边界是主世界的1/8而不是一样大。或者改变天空/雾/云的颜色或者渲染高度。
在1.6.0版本,也能在世界创建的时候直接改变已有的设置,例如生成器设置的世界类型(例如生成超平坦/虚空世界(虚空世界也是超平坦的一种)),又或是直接设置一些GameRules(虽然1.6.0以前也能实现,但是不是十分有效)
注意:由于维度id在Forge和原版中有处理过程,而且自定义选项需要进行网络数据交换,所以客户端也需要安装该mod
概览:
所有维度的注册和设置都通过一个JSON文件进行。游戏内也有一个命令"dimbuilder"来创建/注册维度,或者修改之前增加过的维度的设置,还能改变大多数config文件存储的项目值(并不是所有值,例如光照表或者群系颜色改变,这些只能通过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
设置选项,最基础的自定义维度注册
mod的cfg文件内有少许设置选项,用来开启现有功能
注意: 为了以防万一,它们都是默认关闭的!
·enableForcedGameModes - 自动转换玩家的gamemode到每个维度各自的设置,如果该维度有设置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设置,空字段也可。即使不被此mod注册的维度同样生效(因为该维度已存在且未被覆写)
·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":,
//维度的ID,整型,必须有
"dimensiontype": {
//包含世界的生成信息,含有若干子项
"id":,
//DimensionType ID,一般用于传送/传送门的代码,决定了传送是否能开启以及如何传送实体
"vanilladimensiontype": "",
//如果该项存在,将会使用设置的(已有的)DimensionType来创建世界而不是新建一个,下面的所有项将被忽略。
"name": "",
//世界的名字,可能会被某些mod的传送相关道具使用
"suffix": "",
//一般用于现有的文件名,因此不要使用空格或者其他什么特殊的字符,最好像示例中写的那样。
"worldprovider": "",
//世界生成器名称,可以使用其他mod的世界生成器但是需要完整的路径名
"unregister":,
//为真时将卸载这个维度,忽略其他所有设置,需要打开enableUnregisteringDimensions
"override":,
//为真时将用此设置覆盖已有维度的设置,需要打开enableReplacingRegisteredDimensions
"disableteleportingfrom":,
//为真时将不能从此世界传送出去
"disableteleportingto":,
//为真时将不能传送进入此世界
"biome": "",
//将会覆盖worldprovider,整个世界将会只有设置的群系
"colors":
//设置染色,类似群系的染色
}
各自独立的世界信息设定
JED可以让不同维度使用不同的levels.dat,以让不同维度拥有不同的seed、leveltype、生成器,例如你可以在主世界是RTG生成的时候建立一个用BOP生成的附属世界,需要开启enableSeparateWorldInfo,并且至少有一个worldinfo的空字段
注意:如果没有各自独立的世界信息设置,tpj命令将会把你传送到危险的地方,因为不同的世界使用的是同一个出生点坐标,所以一般建议开启。
字段解释:很多字段没有解释,但是自己建立一个心仪的世界然后用nbt编辑工具打开levels.dat看往上面抄就行,注意所有项都是大小写区分的
"worldinfo": {
"RandomSeed": "",
//设置生成种子
"generatorName": "",
//生成器名称,例如default(默认),flat(超平摊),amplified,largeBiomes,debug_all_block_states,BIOMESOP(需要安装biomesO'plenty)、RTG(需要安装Realistic Terrain Generation)
"generatorOptions": "",
//生成器设置,可以在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": "",
//当前世界类型可能会分版本(原文如此),生成器是defult这里必须是1,或者直接使用defult_1_1这个生成器名称
"GameType":,
//游戏类型,生存/创造/HC
"GameRules":,
//和generatorOptions不一样这是个JSON对象字段,所有项目都是键值对的形式,举个例子
//{"commandBlocksEnabled":true,"doFireTick":false,"mobGriefing":false,"universalAnger":false}
"MapFeatures": <>,
"SpawnX":,
"SpawnY":,
"SpawnZ":,
"Time":,
//最好不要设置,不然每次载入世界都会覆盖到设定的值
"DayTime":,
"LastPlayed":,
"LevelName": ""
"clearWeatherTime":,
"rainTime":,
"raining":,
"thunderTime":,
"thundering":,
"hardcore":,
"allowCommands": <>,
"Difficulty":,
"DifficultyLocked":;
"BorderCenterX":,
"BorderCenterZ":,
"BorderSize":,
"BorderSizeLerpTime":,
"BorderSizeLerpTarget":,
"BorderSafeZone":,
"BorderDamagePerBlock":,
"BorderWarningBlocks":,
"BorderWarningTime":
}
或者你可以使用"worldinfo_onetime"代替"worldinfo",这样不会每次载入世界都会覆写一遍,而是只有在创建的时候写入
JED特有设置
在"worldinfo"字段下还可以添加JED字段来增加一些独特的设置,必须使用WorldProviderSurfaceJED这个生成器,这些设置无法作用于"worldinfo_onetime"
"JED": {
"ForceGameMode":,
//强制转换模式,需要打开enableForcedGameModes,当玩家进入该维度是强制转换玩家的游戏模式
"CustomDayCycle":,
//是否开启自定义昼夜循环
"DayLength":,
//白天持续的游戏刻
"NightLength":,
//晚上持续的游戏刻
"CloudHeight":,
//云的高度
"SkyColor": "",
"FogColor": "",
"CloudColor": "",
"SkyRenderType":,
//1为普通世界,2为末地
"SkyDisableFlags":,
//可以取消某些星体,1=太阳,2=月亮,3=太阳和月亮,4=星星,5=太阳和星星,6=月亮和星星,7=所有
"CanRespawnHere":,
//是否可以在本维度重生
"RespawnDimension":
//如果上一项为false则在这一项设置重生的维度
}
更多该模组的详细信息请至CurseForge页面。
下载地址 | 点此下载 |
支持的MC版本: 1.12.2 1.11.2 1.11 1.10.2