Anvil-Dev / AnvilCraft

Other
61 stars 22 forks source link

[Bug] #ores/的部分标签加入空物品导致原版矿物高炉倍产失效,更改相关后标签倍产配方游戏内只有首次会更新 #986

Open fnshwj opened 2 days ago

fnshwj commented 2 days ago

OS Version - 操作系统

Windows

Minecraft Version Details - Minecraft 版本信息

1.20.1

Mod Loader - 模组加载器

Forge

Version Details - 版本信息

1.4.0+pre-release.4

Existing behavior - 现有行为

1.在(只)使用数据包更改#forge:ores/的copper,diamond,emerald,gold,iron,lapis,redstone其中任一标签时,若添加未注册的物品会使所有原版矿物的高炉倍产失效,不会对模组添加的矿物有影响(比如本模组)。但是在更改#forge:ores/coal和其他额外添加的标签#forge:ores/zinc如不会影响。 2.使用/reload重载,只有进入游戏后第一次重载会发生在1.中提到的倍产失效,之后改变相应标签再重载不会再导致倍产变化。重启游戏后会按照标签问题发生倍产失效或生效。但是如果是用kubejs的ServerEvents.tags修改并重载,基本能成功

Expected behavior - 预期行为

高炉的倍产只收到#c:ores,#forge:ores,#c:raw_ores,#forge:raw_ores影响 在此之上不会因为#c:ores/和#forge:ores之下的内容物被有在高炉作为输入的标签所影响,不会出现只有#forge:ores/coal添加未注册物品后不会影响倍产,而其他标签被错误添加就影响倍产功能

To Reproduce - 复现问题

pcl_2.7.4 minecraft_1.20.1 forge_47.3.1 anvilcraft_1.4.0 世界存档文件夹下的数据包文件夹中对添加数据包,其中data/forge/tags/items/ores/zinc.json和data/forge/tags/items/ores/coal.json { "replace": false, "values": [ "anvilcraft:deepslate_zinc_ore", "spelunkery:tuff_zinc_ore" ] } { "replace": false, "values": [ "spelunkery:granite_coal_ore", "spelunkery:diorite_coal_ore", "spelunkery:andesite_coal_ore" ] } (spelunkery从来没有加入过测试仪版本) 不会影响倍产, data/forge/tags/items/ores/copper.json { "replace": false, "values": [ "spelunkery:granite_coal_ore", "spelunkery:diorite_coal_ore", "spelunkery:andesite_coal_ore" ] } 以及其他原版矿物的标签diamond,emerald,gold,iron,lapis,redstone都会使倍产失效。 且使用/reload通常只会在第一次重载因标签的重新修改让倍产配方变为相应情况,如果加入kubejs使用ServerEvents.tags修改对应标签,重载通常都会对倍产配方的更新起效

This issue is unique - 这个issue是唯一的

fnshwj commented 2 days ago

上述情况导致倍产失效只会导致原版矿物的矿石倍产失效,原版的原矿和铁砧工艺添加的矿物高炉配方依旧二倍产出 用数据包修改zinc_ingot_from_deepslate_zinc_ore_blasting.json的输入"tag":"forge:zinc"并给data/forge/tags/items/ores/zinc.json添加未注册物品好像导致了原版和铁砧工艺所有的矿石高炉配方倍产都失效,且在将修改过的部分回退后重启程序倍产依旧失效,所以新建了相同版本进行测试

Gu-ZT commented 2 days ago

此问题可能由于Forge会将分层次的标签自动合并,我们并未检测除#c:ores,#forge:ores,#c:raw_ores,#forge:raw_ores的其余标签