Shopkeepers

Shopkeepers

2M Downloads

Empty Trade Dialogue Breaks GeyserMC Users, Potential Solution

huntingtiger1004 opened this issue ยท 3 comments

commented

Preliminaries:

  • Shopkeepers version: 2.13.1
  • Spigot version: This server is running Paper version git-Paper-71 (MC: 1.17) (Implementing API version 1.17-R0.1-SNAPSHOT) (Git: 0ae6dd2) You are running the latest version Previous version: git-Paper-69 (MC: 1.17)

  • I have checked that my issue/question does not get answered by:
  • I have checked all open and closed issues, but none seems to fit my issue/question.

Reproduction on a fresh and up-to-date Spigot server:

I was able to reproduce my issue on a freshly setup and up-to-date Spigot server (currently This server is running Paper version git-Paper-71 (MC: 1.17) (Implementing API version 1.17-R0.1-SNAPSHOT) (Git: 0ae6dd2) You are running the latest version Previous version: git-Paper-69 (MC: 1.17)) with the latest version of Shopkeepers (currently 2.13.1), with no other plugins and with no kinds of other server or client mods.

The issue:

Provide a detailed description of your problem and add as much information as possible which could help reproducing the issue.

So, I just want to say I'm only writing this to potentially provide a solution, as I have seen previous issues in reference to Geyser where you mentioned that you'd rather not troubleshoot. This solution may serve to help the intended userbase of Java players as well though, so I still ask that you bare with me.

The plugin works amazing all the time in any other situation I've tried and handles it fine. However, if a player tries to open an empty trade dialogue on Bedrock, it prevents them from opening any menus or interacting with any doors or other objects. I understand if you don't see it necessary to try and tackle this, because this is an interaction with another plugin that you are in no way required to fix. However, I was hoping to suggest that if there was some way to set it up where it wouldn't open a trading dialogue if there were no trade options. (Also, possibly prompt the player to shift+right click to open the editing dialogue when attempted? If anything it would help direct a player using the plugin on Java some more if they got confused when they first made the shop.)

I've tested every part of the process and option on both versions of the game, and they work great. The only exception is the empty shop dialogue on bedrock.

Again though, I totally understand if you don't deem it necessary to fix this, and instead, I'll just make sure to warn players about it.

How to reproduce:

  • Connect to a server running Shopkeepers, and make a shopkeeper, but don't do any additional configuration in the menu. Don't add any items to the chest. You can either do this on bedrock or java, this part of the process encounters no issues regardless of platform.
  • Connect to this server using GeyserMC to play on Bedrock
  • Interact with the shopkeeper that's been completely not configured

Observed behaviour:
Player can:

  • move in any way they are able, creative or survival.
  • take damage
  • damage mobs and other
  • players

Player cannot:

  • Use doors, buttons, or other interactables
  • eat
  • break blocks
  • place blocks
  • open any game related UI (Chat and pause and etc. still work, but none of the normal java stuff like chests and inventory)

Expected behaviour:
Opening an empty trading dialogue.

Server logs:
Upon inspecting logs, no unexpected behaviour was documented, even in debug. I can't say I'm surprised, given the fact that it is simulating a Java client interaction, which would cause no issues. I believe this is entirely an issue with Bedrock possibly being incapable of opening an empty trade dialogue, and not being able to handle it.

Final thoughts:
Once again, I tested all functions of the plugin on both Java and Bedrock, and so far the only thing I've observed creating issues is the empty trade dialogue. I have taken note of the warnings mentioned in the FAQ with GriefPrevention, and have been following them to a tee. Once again, I believe prompting the player to configure the villager in the event of an empty trading dialogue, as opposed to opening it, would prove beneficial to not only this situation, but also intended use function of the plugin on a normal Spigot server. If you need any additional information, I would be happy to comply and assist in any way I can.

I will say, I tried to look through the documentation and other resources to look through to the best of my abilities, and I didn't see this specific issue mentioned anywhere as far as I could tell. I apologize if I am making a redundant error report.

commented

I have taken note of the warnings mentioned in the FAQ with GriefPrevention

Another user reported that this behavior of other inventories suddenly no longer working was somehow related to GriefPrevention.

GriefPrevention + GeyserMC: A user reported that Bedrock players were not able to edit their player shopkeepers. But trading with the shopkeeper still worked fine. Additionally, once a player tried to open the shopkeeper editor, they were not able to open any other inventory anymore either (such as the inventory of chests), until the player rejoined the server. It turned out that this issue only affects player shops in regions protected by GriefPrevention to which the shop owner is only 'trusted'. Additionally executing /permissiontrust {player} for the shop owner somehow resolves the issue. The used server version was 1.17 and the Shopkeepers version was v2.13.0.

So, is this explanation of the issue incorrect and this is actually caused by attempts to open an empty trading interface instead?

I currently see no issue on my side to skip opening the trading interface if it has no trades.

commented

I made the suggested changes. Can you test these and let me know if they resolve the GeyserMC compatibility issue? You can find a current snapshot build with these changes here: https://nexus.lichtspiele.org/repository/snapshots/com/nisovin/shopkeepers/Shopkeepers/2.13.2-SNAPSHOT/Shopkeepers-2.13.2-20210705.152133-1.jar

If this resolves the issue, thank you for tracking this down and letting me know about it!

commented

Sorry, I got caught up trying to configure Waterfall yesterday, but I can say this absolutely worked! Bedrock no longer breaks now that there's the prompt to go ahead and setup the trader. I can access inventory, open doors, use buttons, and all of the sorts. Thank you very much for that!

I'm happy to have been able to help track that down. Plus, I'm sure it'll help along the Java players who got a bit confused during setup. Once again, thank you very much.