Minecraft-AMS / Carpet-AMS-Addition

A fabric-carpet extension mod. It offers some interesting and useful features.
https://minecraft-ams.github.io/carpetamsaddition/
GNU Lesser General Public License v3.0
57 stars 7 forks source link

[已解决]音符盒和钟进行区块加载产生错误 #34

Closed wj-lxax closed 11 months ago

wj-lxax commented 1 year ago

Bug description

1.19.2/1.20.1服务器 全物品使用音符盒上有凋零骷髅头加载。发现退出服务器前(单人服务器),使用了全物品进行分类。重进服务器,物品还是在整流的地方。没有去大宗和分类单片。 然后我就经过测试,在一个区块里放置音符盒加载器并激活。用/log ticket进行监视。发现此区块确实加载。 然后在此区块里放置漏斗和箱子,漏斗往箱子里面漏东西,并退出服务器。 过五分钟之后,再次重新进服务器,发现箱子里面才有不到一组的物品。 使用钟区块加载器也是如此。 然后我把服务器升级到了1.20.1,也遇到了这种情况。 客户端和服务端均加了AMS,最新版。 希望能解答一下,然后我想问一下AMS的加载器目前和哪个模组有冲突吗?如果有模组冲突的话,请大佬们告知一下 感谢!!!

Steps to reproduce

1.丢东西进全物品 - 传递红石信号音符盒加载器开始加载 2.退出服务器 3.重进服务器 4.物品还在整流,并没有进行分类

Expected behavior

No response

Actual behavior

No response

Relevant logs

No response

Minecraft version

1.20.1 1.19.2

TemplateMod version

2.5.1和1.5.3

Other information

No response

Check list

1024-byteeeee commented 1 year ago

之前在我们服务器群里看见有人说过类似情况,好像是需要主世界有玩家(假人),当时服务器内只有你一个人吗?

wj-lxax commented 1 year ago

之前在我们服务器群里看见有人说过类似情况,好像是需要主世界有玩家(假人),当时服务器内只有你一个人吗?

是的,这是我自己开的单人服务器。所以主世界一定要有玩家或者假人吗?

1024-byteeeee commented 1 year ago

是的,这是我自己开的单人服务器。所以主世界一定要有玩家或者假人吗?

可以试试,我自己也没具体测过....

wj-lxax commented 1 year ago

是的,这是我自己开的单人服务器。所以主世界一定要有玩家或者假人吗?

可以试试,我自己也没具体测过....

好的,我今天去试试,感谢解答

wj-lxax commented 1 year ago

之前在我们服务器群里看见有人说过类似情况,好像是需要主世界有玩家(假人),当时服务器内只有你一个人吗?

这个方法确实管用,感谢

memorydream commented 1 year ago

image

问题来自于 ServerWorld.tick() 的此处
只有满足 resetIdleTimeout() 时 或者 服务器内无玩家 300 tick 以内才会进行 entities tick
一个暴力的修复方式是在加载的时候调用 ServerWorld.resetIdleTimeout(),不过我个人建议在这里遵循原版,通过在服务器内挂假人,或者找个区块 forceload 的方式解决

补充:我们目前自用的版本支持调节音符盒的加载时长,如果固定加载时间为 300,那 resetIdleTimeout 是个很合适的解决方案

1024-byteeeee commented 1 year ago

图像

问题来自于 的此处 只有满足 时 或者 服务器内无玩家 300 tick 以内才会进行 entities tick 一个暴力的修复方式是在加载的时候调用 ,不过我个人建议在这里遵循原版,通过在服务器内挂假人,或者找个区块 forceload 的方式解决ServerWorld.tick()``resetIdleTimeout()``ServerWorld.resetIdleTimeout()

补充:我们目前自用的版本支持调节音符盒的加载时长,如果固定加载时间为 300,那 resetIdleTimeout 是个很合适的解决方案

十分感谢^.^