Skip to main content
Version: 1.21.4

内置数据映射(Built-In Data Maps)

NeoForge 提供了多种内置的 数据映射,用于常见场景,取代了原版中硬编码的字段。原版的相关数值现在通过 NeoForge 中的数据映射文件进行分发,因此对玩家来说没有任何功能上的区别。

neoforge:compostables

允许配置堆肥桶的物品值,用于替代 ComposterBlock.COMPOSTABLES(该字段现已被忽略)。此数据映射位于 neoforge/data_maps/item/compostables.json,其对象结构如下:

{
// 一个 0 到 1(包含 0 和 1)之间的浮点数,表示该物品提升堆肥桶等级的概率
"chance": 1,
// 可选,默认为 false —— 表示农民村民是否可以堆肥此物品
"can_villager_compost": false
}

示例:

{
"values": {
// 赋予相思木原木 50% 的概率可以填充堆肥桶
"minecraft:acacia_log": {
"chance": 0.5
}
}
}

neoforge:furnace_fuels

允许配置物品的燃烧时间。此数据映射位于 neoforge/data_maps/item/furnace_fuels.json,其对象结构如下:

{
// 一个正整数,表示该物品的燃烧时间(单位为 tick)
"burn_time": 1000
}

示例:

{
"values": {
// 赋予铁砧 2 秒的燃烧时间
"minecraft:anvil": {
"burn_time": 40
}
}
}
info

NeoForge 另外为自定义物品提供了可重写的 IItemExtension#getBurnTime 方法,该方法的返回值会覆盖此数据映射。只有在数据映射无法满足需求时(例如燃烧时间依赖于 数据组件),才建议使用 #getBurnTime 方法。

warning

原版为 #minecraft:logs#minecraft:planks 隐式添加了 300 tick(15 秒)的燃烧时间,并且硬编码移除了猩红和诡异系列的物品。这意味着如果你添加了另一种不可燃的木材,你应该在此映射中添加对该木材类型物品的移除操作,如下所示:

{
"replace": false,
"values": [
// 此处填写要添加的值
],
"remove": [
"examplemod:example_nether_wood_planks",
"#examplemod:example_nether_wood_stems",
"examplemod:example_nether_wood_door",
// 等等
// 其他需要移除的项
]
}

neoforge:monster_room_mobs

允许配置怪物房刷怪笼中可能刷出的生物,用于替代 MonsterRoomFeature#MOBS(该字段现已被忽略)。此数据映射位于 neoforge/data_maps/entity_type/monster_room_mobs.json,其对象结构如下:

{
// 该生物在数据映射内的权重,相对于其他生物
"weight": 100
}

示例:

{
"values": {
// 让鱿鱼以权重 100 出现在怪物房刷怪笼中
"minecraft:squid": {
"weight": 100
}
}
}

neoforge:oxidizables

允许配置氧化阶段,用于替代 WeatheringCopper#NEXT_BY_BLOCK。该数据映射(data map)同样用于构建一个反向去氧化映射(用于斧头刮除)。其位置为 neoforge/data_maps/block/oxidizables.json,每个对象结构如下:

{
// 该方块氧化后会变成的方块
"next_oxidized_stage": "examplemod:oxidized_block"
}
note

自定义方块必须实现 WeatheringCopperFullBlockWeatheringCopper,并在 randomTick 方法中调用 changeOverTime,以实现自然氧化。

示例:

{
"values": {
"mymod:custom_copper": {
// 让自定义铜方块氧化为自定义氧化铜
"next_oxidized_stage": "mymod:custom_oxidized_copper"
}
}
}

neoforge:parrot_imitations

允许配置鹦鹉在模仿生物时发出的声音,用于替代 Parrot#MOB_SOUND_MAP(现在已被忽略)。该数据映射位于 neoforge/data_maps/entity_type/parrot_imitations.json,每个对象结构如下:

{
// 鹦鹉在模仿该生物时会发出的声音 ID
"sound": "minecraft:entity.parrot.imitate.creeper"
}

示例:

{
"values": {
// 让鹦鹉在模仿悦灵时发出洞穴环境音
"minecraft:allay": {
"sound": "minecraft:ambient.cave"
}
}
}

neoforge:raid_hero_gifts

允许配置村民在你阻止袭击后,特定 VillagerProfession(村民职业)可能赠送给你的礼物,用于替代 GiveGiftToHero#GIFTS(现在已被忽略)。该数据映射位于 neoforge/data_maps/villager_profession/raid_hero_gifts.json,每个对象结构如下:

{
// 村民职业在袭击后赠送的战利品表 ID
"loot_table": "minecraft:gameplay/hero_of_the_village/armorer_gift"
}

示例:

{
"values": {
"minecraft:armorer": {
// 让盔甲匠在袭击后给英雄分发盔甲匠礼物战利品表
"loot_table": "minecraft:gameplay/hero_of_the_village/armorer_gift"
}
}
}

neoforge:vibration_frequencies

允许配置游戏事件发出的幽匿(sculk)震动频率,用于替代 VibrationSystem#VIBRATION_FREQUENCY_FOR_EVENT(现在已被忽略)。该数据映射位于 neoforge/data_maps/game_event/vibration_frequencies.json,每个对象结构如下:

{
// 表示事件震动频率的整数,范围为 1 到 15(包含)
"frequency": 2
}

示例:

{
"values": {
// 让水花溅落事件产生第二频率的震动
"minecraft:splash": {
"frequency": 2
}
}
}

neoforge:villager_types

允许你根据生物群系(biome)配置生成村民类型(villager type),用于替代 VillagerType#BY_BIOME(在 1.22 版本中将被忽略)。该文件位于 neoforge/data_maps/worldgen/biome/villager_types.json,其对象结构如下:

{
// 在该生物群系中生成的村民类型
// 如果某个生物群系没有指定村民类型,则会使用 `minecraft:plains`
"villager_type": "minecraft:desert"
}

示例:

{
"values": {
// 让丛林生物群系(jungle)中的村民成为沙漠类型(desert)
"minecraft:jungle": {
"villager_type": "minecraft:desert"
}
}
}

neoforge:waxables

允许你配置某个方块(block)在被打蜡(用蜂巢右键)后会变成哪种方块,用于替代 HoneycombItem#WAXABLES。该数据映射(data map)同时用于构建反向去蜡映射(用斧头刮除蜡)。文件位置为 neoforge/data_maps/block/waxables.json,其对象结构如下:

{
// 该方块被打蜡后的变体
"waxed": "minecraft:iron_block"
}

示例:

{
"values": {
// 让金块在被打蜡后变为铁块
"minecraft:gold_block": {
"waxed": "minecraft:iron_block"
}
}
}

数据组件
数据映射