CloudburstMC / Nukkit

Cloudburst Nukkit - Nuclear-Powered Minecraft: Bedrock Edition Server Software
https://cloudburstmc.org
GNU General Public License v3.0
1.21k stars 420 forks source link

右键直接合成后过几秒钟会撤回操作 #566

Closed Andersonfeng closed 5 years ago

Andersonfeng commented 5 years ago

Expected Behavior

右键合成表的物品会直接合成材料并存放于物品栏中

Actual Behavior

右键合成表的物品后, 合成材料存放到物品栏后几秒钟后合成的物品消失, 材料会回退

Steps to Reproduce

  1. 将材料放到物品栏中
  2. 打开合成箱
  3. 在合成表中右键点击将要合成的物品
  4. 合成后的物品出现在物品栏中
  5. 几秒钟后合成物品在物品栏中消失,消耗材料退回

Debug information

Crashdump, Backtrace or Other Files

Checklist:

PetteriM1 commented 5 years ago

Could we get this in english please?

Andersonfeng commented 5 years ago

Expected Behavior

右键合成表的物品会直接合成材料并存放于物品栏中 When I right click the recipe in Recipe Book, the recipe appear in my inventory and I can use it.

Actual Behavior

右键合成表的物品后, 合成材料存放到物品栏后几秒钟后合成的物品消失, 材料会回退 When I right click the recipe in Recipe Book, the recipe appear in my inventory, but a few seconds later, the recipe disappear and the material returns

Steps to Reproduce

  1. 将材料放到物品栏中

  2. 打开合成箱

  3. 在合成表中右键点击将要合成的物品

  4. 合成后的物品出现在物品栏中

  5. 几秒钟后合成物品在物品栏中消失,消耗材料退回

  6. put the material in my inventory

  7. open the crafting table

  8. right click the recipe in Recipe Book,

  9. the recipe appear in my inventory

  10. a few seconds later , the recipe I craft before disappear and the material returns

Debug information

when I right click the recipe in Recipe Book, the error log:

java.lang.ArrayIndexOutOfBoundsException: 1 at cn.nukkit.inventory.ShapedRecipe.matchInputMap(ShapedRecipe.java:214) at cn.nukkit.inventory.ShapedRecipe.matchItems(ShapedRecipe.java:169) at cn.nukkit.inventory.CraftingManager.matchRecipe(CraftingManager.java:303) at cn.nukkit.inventory.transaction.CraftingTransaction.canExecute(CraftingTransaction.java:133) at cn.nukkit.inventory.transaction.InventoryTransaction.execute(InventoryTransaction.java:276) at cn.nukkit.inventory.transaction.CraftingTransaction.execute(CraftingTransaction.java:167) at cn.nukkit.Player.handleDataPacket(Player.java:2847) at java.util.ArrayList.forEach(ArrayList.java:1257) at cn.nukkit.network.Network.processPackets(Network.java:179) at cn.nukkit.network.Network.processBatch(Network.java:161) at cn.nukkit.Player.handleDataPacket(Player.java:2043) at cn.nukkit.network.RakNetInterface.handleEncapsulated(RakNetInterface.java:157) at cn.nukkit.raknet.server.ServerHandler.handlePacket(ServerHandler.java:132) at cn.nukkit.network.RakNetInterface.process(RakNetInterface.java:66) at cn.nukkit.network.Network.processInterfaces(Network.java:76) at cn.nukkit.Server.tick(Server.java:1075) at cn.nukkit.Server.tickProcessor(Server.java:852) at cn.nukkit.Server.start(Server.java:829) at cn.nukkit.Server.(Server.java:518) at cn.nukkit.Nukkit.main(Nukkit.java:109)

Crashdump, Backtrace or Other Files

Checklist:

wode490390 commented 5 years ago

目前还未实现合成书快速合成

Andersonfeng commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

wode490390 commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

试了下,合成是没有成功,不过后台并未报错。请问你尝试合成哪个物品时报错了?

Andersonfeng commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

试了下,合成是没有成功,不过后台并未报错。请问你尝试合成哪个物品时报错了?

我是快速合成任何物品都报错

maxxie114 commented 5 years ago

有些物品在Nukkitx里无法被合成。不过你如果任何物品都不能合成,这个问题我没碰到过。你先把所有插件都删除掉再试一试。

Andersonfeng commented 5 years ago

有些物品在Nukkitx里无法被合成。不过你如果任何物品都不能合成,这个问题我没碰到过。你先把所有插件都删除掉再试一试。 并不是不能合成, 只是快速合成会失败, 拖拽合成没问题

wode490390 commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

试了下,合成是没有成功,不过后台并未报错。请问你尝试合成哪个物品时报错了?

我是快速合成任何物品都报错

你使用的是最新版本的核心吗?

Andersonfeng commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

试了下,合成是没有成功,不过后台并未报错。请问你尝试合成哪个物品时报错了?

我是快速合成任何物品都报错

你使用的是最新版本的核心吗?

是呀,不然1.9没办法进入游戏,我使用win10 的minecraft

maxxie114 commented 5 years ago

我刚刚试过了,这个问题在我服务器里没有。 请确认你是不是用最新版本,1.9.0 的API。

再不行,请把你的视频模式改成经典模式再试试。

设置 -> 视频 -> 拉到最下面 -> 把Pocket 改成经典

maxxie114 commented 5 years ago

如果你手机无法进入游戏,那你就不是最新版。那个问题昨天已经被修复,请在https://ci.nukkitx.com/job/NukkitX/job/Nukkit/job/master/253/ 下载最新版

wode490390 commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

试了下,合成是没有成功,不过后台并未报错。请问你尝试合成哪个物品时报错了?

我是快速合成任何物品都报错

你使用的是最新版本的核心吗?

是呀,不然1.9没办法进入游戏,我使用win10 的minecraft

将服务端根目录下的recipes.json删除,然后重启服务端再试试

Andersonfeng commented 5 years ago

我刚刚试过了,这个问题在我服务器里没有。 请确认你是不是用最新版本,1.9.0 的API。

再不行,请把你的视频模式改成经典模式再试试。

设置 -> 视频 -> 拉到最下面 -> 把Pocket 改成经典

确认是1.9.0,不然1.9的客户端无法进入游戏 目前就是经典模式, 刚刚wode490390不是说快速合成还没实现么

兄弟,你好像没理解我意思... 我说服务器已经是最新版本的核心了, 不然我1.9的客户端是无法进入服务器的

Andersonfeng commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

试了下,合成是没有成功,不过后台并未报错。请问你尝试合成哪个物品时报错了?

我是快速合成任何物品都报错

你使用的是最新版本的核心吗?

是呀,不然1.9没办法进入游戏,我使用win10 的minecraft

将服务端根目录下的recipes.json删除,然后重启服务端再试试

按照你说的试了, 快速合成还是不成功,后台拍错依旧, 拖拽合成没问题

maxxie114 commented 5 years ago

请在你后台打/version

然后把输出发过来。

这是最新版的输出结果 This server is running Nukkit git-f18d4d1 「」 implementing API version 1.0.7 for Minecraft: PE v1.9.0 (protocol version 332)

Andersonfeng commented 5 years ago

请在你后台打/version

然后把输出发过来。

这是最新版的输出结果 This server is running Nukkit git-f18d4d1 「」 implementing API version 1.0.7 for Minecraft: PE v1.9.0 (protocol version 332)

00:31:24 [INFO] 此服务器正在运行 Nukkit git-f18d4d1 「」API 版本 1.0.7 的 Minecraft: PE v1.9.0 (协议版本 332)

SupremeMortal commented 5 years ago

@Andersonfeng Do you have any plugins installed?

Andersonfeng commented 5 years ago

@Andersonfeng Do you have any plugins installed?

no, just original

wode490390 commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

试了下,合成是没有成功,不过后台并未报错。请问你尝试合成哪个物品时报错了?

我是快速合成任何物品都报错

你使用的是最新版本的核心吗?

是呀,不然1.9没办法进入游戏,我使用win10 的minecraft

将服务端根目录下的recipes.json删除,然后重启服务端再试试

按照你说的试了, 快速合成还是不成功,后台拍错依旧, 拖拽合成没问题

找到问题了,请将nukkit.yml中的debug等级设为0

Andersonfeng commented 5 years ago

目前还未实现合成书快速合成

哦,原来如此,第一次使用NukkitX,还以为是新bug,谢谢, 请问什么时候能实现快速合成功能呀?

试了下,合成是没有成功,不过后台并未报错。请问你尝试合成哪个物品时报错了?

我是快速合成任何物品都报错

你使用的是最新版本的核心吗?

是呀,不然1.9没办法进入游戏,我使用win10 的minecraft

将服务端根目录下的recipes.json删除,然后重启服务端再试试

按照你说的试了, 快速合成还是不成功,后台拍错依旧, 拖拽合成没问题

找到问题了,请将nukkit.yml中的debug等级设为0

额。。。设为0不就是不把错误输出到console而已么,实际上快速合成还是不成功的嘛

wode490390 commented 5 years ago

完整的日志应该是这样的对吧

2019-2-8 00:48:46 [DEBUG] Tried to equip Item Chest (130:0)x2 but have Item Air (0:?)x0 in target slot
2019-2-8 00:48:46 [DEBUG] BatchPacket 0x78DA93966360626060556AE2600081F9BD6C9C0C0C509E8C2903530AF38F90ECD6A6296936FA72872E2FBCC8C0C8D5019694066A04AA666780F2818005C6E657646140063CF2305D2C2C0C001FF30F1F
2019-2-8 00:48:46 [ALERT] java.lang.RuntimeException: Input 0 has already been set and does not match the current item (expected Item Birch Wood Planks (5:2)x1, got Item Birch Wood (17:2)x1)
    at cn.nukkit.inventory.transaction.CraftingTransaction.setInput(CraftingTransaction.java:56)
    at cn.nukkit.inventory.transaction.action.CraftingTransferMaterialAction.onAddToTransaction(CraftingTransferMaterialAction.java:25)
    at cn.nukkit.inventory.transaction.InventoryTransaction.addAction(InventoryTransaction.java:68)
    at cn.nukkit.Player.handleDataPacket(Player.java:2840)
    at java.util.ArrayList.forEach(Unknown Source)
    at cn.nukkit.network.Network.processPackets(Network.java:179)
    at cn.nukkit.network.Network.processBatch(Network.java:161)
    at cn.nukkit.Player.handleDataPacket(Player.java:2043)
    at cn.nukkit.network.RakNetInterface.handleEncapsulated(RakNetInterface.java:157)
    at cn.nukkit.raknet.server.ServerHandler.handlePacket(ServerHandler.java:132)
    at cn.nukkit.network.RakNetInterface.process(RakNetInterface.java:66)
    at cn.nukkit.network.Network.processInterfaces(Network.java:76)
    at cn.nukkit.Server.tick(Server.java:1075)
    at cn.nukkit.Server.tickProcessor(Server.java:852)
    at cn.nukkit.Server.start(Server.java:829)
    at cn.nukkit.Server.<init>(Server.java:518)
    at cn.nukkit.Nukkit.main(Nukkit.java:109)

2019-2-8 00:48:47 [DEBUG] BatchPacket 0x78DA53946360626060E1EAE0600002AE363035BF978D13C869027314A12A20525C2DB85540A4A082282A644D19988A8F1D6F12F4E1E9BC6CA87372CFD1C3FC0C8C7B987A20B240FD40E5EC0C30012060857378E419A1A6B0B0300000781B1815
2019-2-8 00:48:47 [ALERT] java.lang.ArrayIndexOutOfBoundsException: 1
    at cn.nukkit.inventory.ShapedRecipe.matchInputMap(ShapedRecipe.java:214)
    at cn.nukkit.inventory.ShapedRecipe.matchItems(ShapedRecipe.java:169)
    at cn.nukkit.inventory.CraftingManager.matchRecipe(CraftingManager.java:303)
    at cn.nukkit.inventory.transaction.CraftingTransaction.canExecute(CraftingTransaction.java:133)
    at cn.nukkit.inventory.transaction.InventoryTransaction.execute(InventoryTransaction.java:276)
    at cn.nukkit.inventory.transaction.CraftingTransaction.execute(CraftingTransaction.java:167)
    at cn.nukkit.Player.handleDataPacket(Player.java:2847)
    at java.util.ArrayList.forEach(Unknown Source)
    at cn.nukkit.network.Network.processPackets(Network.java:179)
    at cn.nukkit.network.Network.processBatch(Network.java:161)
    at cn.nukkit.Player.handleDataPacket(Player.java:2043)
    at cn.nukkit.network.RakNetInterface.handleEncapsulated(RakNetInterface.java:157)
    at cn.nukkit.raknet.server.ServerHandler.handlePacket(ServerHandler.java:132)
    at cn.nukkit.network.RakNetInterface.process(RakNetInterface.java:66)
    at cn.nukkit.network.Network.processInterfaces(Network.java:76)
    at cn.nukkit.Server.tick(Server.java:1075)
    at cn.nukkit.Server.tickProcessor(Server.java:852)
    at cn.nukkit.Server.start(Server.java:829)
    at cn.nukkit.Server.<init>(Server.java:518)
    at cn.nukkit.Nukkit.main(Nukkit.java:109)
Andersonfeng commented 5 years ago

完整的日志应该是这样的对吧

2019-2-8 00:48:46 [DEBUG] Tried to equip Item Chest (130:0)x2 but have Item Air (0:?)x0 in target slot
2019-2-8 00:48:46 [DEBUG] BatchPacket 0x78DA93966360626060556AE2600081F9BD6C9C0C0C509E8C2903530AF38F90ECD6A6296936FA72872E2FBCC8C0C8D5019694066A04AA666780F2818005C6E657646140063CF2305D2C2C0C001FF30F1F
2019-2-8 00:48:46 [ALERT] java.lang.RuntimeException: Input 0 has already been set and does not match the current item (expected Item Birch Wood Planks (5:2)x1, got Item Birch Wood (17:2)x1)
  at cn.nukkit.inventory.transaction.CraftingTransaction.setInput(CraftingTransaction.java:56)
  at cn.nukkit.inventory.transaction.action.CraftingTransferMaterialAction.onAddToTransaction(CraftingTransferMaterialAction.java:25)
  at cn.nukkit.inventory.transaction.InventoryTransaction.addAction(InventoryTransaction.java:68)
  at cn.nukkit.Player.handleDataPacket(Player.java:2840)
  at java.util.ArrayList.forEach(Unknown Source)
  at cn.nukkit.network.Network.processPackets(Network.java:179)
  at cn.nukkit.network.Network.processBatch(Network.java:161)
  at cn.nukkit.Player.handleDataPacket(Player.java:2043)
  at cn.nukkit.network.RakNetInterface.handleEncapsulated(RakNetInterface.java:157)
  at cn.nukkit.raknet.server.ServerHandler.handlePacket(ServerHandler.java:132)
  at cn.nukkit.network.RakNetInterface.process(RakNetInterface.java:66)
  at cn.nukkit.network.Network.processInterfaces(Network.java:76)
  at cn.nukkit.Server.tick(Server.java:1075)
  at cn.nukkit.Server.tickProcessor(Server.java:852)
  at cn.nukkit.Server.start(Server.java:829)
  at cn.nukkit.Server.<init>(Server.java:518)
  at cn.nukkit.Nukkit.main(Nukkit.java:109)

2019-2-8 00:48:47 [DEBUG] BatchPacket 0x78DA53946360626060E1EAE0600002AE363035BF978D13C869027314A12A20525C2DB85540A4A082282A644D19988A8F1D6F12F4E1E9BC6CA87372CFD1C3FC0C8C7B987A20B240FD40E5EC0C30012060857378E419A1A6B0B0300000781B1815
2019-2-8 00:48:47 [ALERT] java.lang.ArrayIndexOutOfBoundsException: 1
  at cn.nukkit.inventory.ShapedRecipe.matchInputMap(ShapedRecipe.java:214)
  at cn.nukkit.inventory.ShapedRecipe.matchItems(ShapedRecipe.java:169)
  at cn.nukkit.inventory.CraftingManager.matchRecipe(CraftingManager.java:303)
  at cn.nukkit.inventory.transaction.CraftingTransaction.canExecute(CraftingTransaction.java:133)
  at cn.nukkit.inventory.transaction.InventoryTransaction.execute(InventoryTransaction.java:276)
  at cn.nukkit.inventory.transaction.CraftingTransaction.execute(CraftingTransaction.java:167)
  at cn.nukkit.Player.handleDataPacket(Player.java:2847)
  at java.util.ArrayList.forEach(Unknown Source)
  at cn.nukkit.network.Network.processPackets(Network.java:179)
  at cn.nukkit.network.Network.processBatch(Network.java:161)
  at cn.nukkit.Player.handleDataPacket(Player.java:2043)
  at cn.nukkit.network.RakNetInterface.handleEncapsulated(RakNetInterface.java:157)
  at cn.nukkit.raknet.server.ServerHandler.handlePacket(ServerHandler.java:132)
  at cn.nukkit.network.RakNetInterface.process(RakNetInterface.java:66)
  at cn.nukkit.network.Network.processInterfaces(Network.java:76)
  at cn.nukkit.Server.tick(Server.java:1075)
  at cn.nukkit.Server.tickProcessor(Server.java:852)
  at cn.nukkit.Server.start(Server.java:829)
  at cn.nukkit.Server.<init>(Server.java:518)
  at cn.nukkit.Nukkit.main(Nukkit.java:109)

我的完整日志就下面那一段01:03:27 [ALERT] java.lang.ArrayIndexOutOfBoundsException: 1 at cn.nukkit.inventory.ShapedRecipe.matchInputMap(ShapedRecipe.java:214) at cn.nukkit.inventory.ShapedRecipe.matchItems(ShapedRecipe.java:169) at cn.nukkit.inventory.CraftingManager.matchRecipe(CraftingManager.java:303) at cn.nukkit.inventory.transaction.CraftingTransaction.canExecute(CraftingTransaction.java:133) at cn.nukkit.inventory.transaction.InventoryTransaction.execute(InventoryTransaction.java:276) at cn.nukkit.inventory.transaction.CraftingTransaction.execute(CraftingTransaction.java:167) at cn.nukkit.Player.handleDataPacket(Player.java:2847) at java.util.ArrayList.forEach(ArrayList.java:1257) at cn.nukkit.network.Network.processPackets(Network.java:179) at cn.nukkit.network.Network.processBatch(Network.java:161) at cn.nukkit.Player.handleDataPacket(Player.java:2043) at cn.nukkit.network.RakNetInterface.handleEncapsulated(RakNetInterface.java:157) at cn.nukkit.raknet.server.ServerHandler.handlePacket(ServerHandler.java:132) at cn.nukkit.network.RakNetInterface.process(RakNetInterface.java:66) at cn.nukkit.network.Network.processInterfaces(Network.java:76) at cn.nukkit.Server.tick(Server.java:1075) at cn.nukkit.Server.tickProcessor(Server.java:852) at cn.nukkit.Server.start(Server.java:829) at cn.nukkit.Server.(Server.java:518) at cn.nukkit.Nukkit.main(Nukkit.java:109)

wode490390 commented 5 years ago

因为合成书快速合成目前还未实现,所以服务端在判断输入物品时出现异常,当然这仅在开启调试模式的情况下会输出

maxxie114 commented 5 years ago

不对啊?这个问题在我服务器里面没有。。。 我刚刚试过了,我可以快速合成而且系统没有报错

maxxie114 commented 5 years ago

这样,你把Nukkit.yml 和 server.properties删掉, 把所有插件删掉,把EULA 删掉,把Jar 删掉。 让整个Nukkitx 系统重装一次,再试一下。

wode490390 commented 5 years ago

不对啊?这个问题在我服务器里面没有。。。 我刚刚试过了,我可以快速合成而且系统没有报错

他指的是玩家通过合成书快速合成,且服务端启用了调试模式的情况下会输出异常

Andersonfeng commented 5 years ago

这样,你把Nukkit.yml 和 server.properties删掉, 把所有插件删掉,把EULA 删掉,把Jar 删掉。 让整个Nukkitx 系统重装一次,再试一下。

我整个nukkit重新开过也试过了, 问题依旧, 但是如果你的服务器能通过合成书快速合成我挺纳闷的, 是我们说的不是同一件事还是你理解错我提的bug了, 我遇到的错误应该是代码的问题, 不太相信咱们用同样的服务器代码但是你却能成功快速合成, 能否让我进你的服务器试试能否快速合成呀?

maxxie114 commented 5 years ago

你可以在我的测试服务器上试一下。 build.2b2tmcpe.org:19132

maxxie114 commented 5 years ago

我用的是一个自己写的自动更新脚本

https://github.com/2B2TMCBE/updateScriptForNukkit?files=1

Andersonfeng commented 5 years ago

你可以在我的测试服务器上试一下。 build.2b2tmcpe.org:19132

你好,刚刚试过了,和我是一样的问题,通过合成书快速合成会回退

maxxie114 commented 5 years ago

这。。。很有趣。 不过不是每一次都这样。 如果你快速的点超过一次,物品就不会消失。 我会看看能不能从程序里找到问题。

wode490390 commented 5 years ago

Premature Optimization https://github.com/NukkitX/Nukkit/blob/9d96bc68cdf8e36aea28598407785470bee2995a/src/main/java/cn/nukkit/inventory/ShapedRecipe.java#L214 这里未对数组长度进行判断,导致下标越界

Creeperface01 commented 5 years ago

Ano rozumím vám, a plně s vámi souhlasím

wode490390 commented 5 years ago

@SupremeMortal Duplicate of #231

ZhaoPhoenix commented 5 years ago

La Verdad No Entiendo Este Lenguaje Jeje

Focusvity commented 5 years ago

Please don't comment on old issues if it doesn't relate to it.