Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

合成机有可能不正常输出蓝图所写的输出物品 #116

Open
4 tasks done
balugaq opened this issue Jun 12, 2024 · 0 comments
Open
4 tasks done

合成机有可能不正常输出蓝图所写的输出物品 #116

balugaq opened this issue Jun 12, 2024 · 0 comments
Assignees
Labels
bug Something isn't working

Comments

@balugaq
Copy link

balugaq commented Jun 12, 2024

检查项目

  • 你使用的是从构建站下载的版本
  • 你已经检验过下载的文件的校验和,确认已完整下载文件
  • 你没有对下载的文件内容进行任何更改
  • 你已经寻找过已知问题列表,且没有找到相同的问题

问题描述

如题

复现步骤

服务器存在两个相似的配方(去除某些位置的材料后仍能合成其他物品)
比如:
8885dfdbfd8af6c05c00bfa40dbe6d1b
a25bb982396f1037b767a3f84155d5b6

当合成机无法获取到第一个配方中间的物品时,就会合成出第二个配方所制作的物品

预期行为

合成机无法合成物品

服务器日志

错误报告

服务端软件

Purpur

Minecraft 版本

1.20.1

Slimefun版本

226af9b-Beta

插件版本

93

@balugaq balugaq added the bug Something isn't working label Jun 12, 2024
@m1919810
Copy link

m1919810 commented Jun 12, 2024

实际上这个issue和#115说的是一个bug
#115所发生的返还材料在一般情况下都是要经过此bug才能触发的
我翻阅了你提供的代码(其实应该和这边的是一样的)
网络合成机合成之前会进行材料判断
在这里
1
if (!root.contains(new ItemRequest(entry.getKey(), entry.getValue())))
其调用的NetworkRoot.contains()方法中 对存储的检测
2
获得的数据有问题,
final ItemStack itemStack = barrelIdentity.getItemStack();
他并不和真正cache中的数据同步
在后面getItemStack的时候也用到了这个方法 但是最终fetch使用的是
final ItemStack fetched = barrelIdentity.requestItem(request);
#116所说的情况下 这个方法返回了Amount为0的ItemStack
3
(此为我自己加的测试输出显示的
然后导致配方出现差错
而正如#115所说 没有针对预留的返回材料举措,所以可能造成大量材料被吞。
这个不同步的情况或许会引发其他问题

@m1919810
Copy link

m1919810 commented Jun 12, 2024

终于,我刚才找到问题所在了
NetworkRoot每sft重建一次,在其生命周期内
上面for循环的时候调用的getBarrels() 只会初始化一次,其余情况都是直接返回现成的值
而在当前sft内对量子存储的修改并不会修改Barrels列表的数据,从而导致问题
其他元件都是直接遍历blockMenu对象所以并不会出问题

求一个大佬把这玩意修理了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants