ChestShop-authors / ChestShop-3

ChestShop - the chest & sign shop plugin for Minecraft Servers running Bukkit/Spigot/Paper
https://dev.bukkit.org/projects/chestshop
GNU Lesser General Public License v2.1
269 stars 175 forks source link

NPE on start-up #560

Open cobrex1 opened 11 months ago

cobrex1 commented 11 months ago

What is happening?

The plugin disables on start-up with the following error: Error occurred while enabling ChestShop v3.12.3-SNAPSHOT (build 389) (Is it up to date?) java.lang.NullPointerException: Cannot read the array length because the return value of "com.mojang.authlib.yggdrasil.response.ProfileSearchResultsResponse.getProfiles()" is null

What did you expect to happen?

The plugin to start as normal. I have not changed any values in the config files.

Plugin Version

3.12.3-SNAPSHOT (build 389)

Plugin Config

Config ```yaml # Should the plugin log some messages that are useful for debugging? DEBUG: false # Do you want to turn off the automatic updates of ChestShop? TURN_OFF_UPDATES: true # Do you want to turn off the automatic notifications for new development builds? TURN_OFF_DEV_UPDATE_NOTIFIER: false # Do you want to include some values of this config in the metrics? (This will not submit any sensitive data and helps in the development process) INCLUDE_SETTINGS_IN_METRICS: true # How large should the internal caches be? CACHE_SIZE: 1000 # The default language when the client's language can't be found. DEFAULT_LANGUAGE: "en" # Should the plugin try to use a language file that matches the client's locale setting? USE_CLIENT_LOCALE: true # Should the plugin strip the colors from formatted price? STRIP_PRICE_COLORS: false # What containers are allowed to hold a shop? (Only blocks with inventories work!) SHOP_CONTAINERS: - "CHEST" - "TRAPPED_CHEST" # (In 1/1000th of a second) How often can a player use the shop sign? SHOP_INTERACTION_INTERVAL: 250 # Do you want to block people in creative mode from using shops? IGNORE_CREATIVE_MODE: true # Do you want to block people who have access to a shop due to their permissions from using it? (owners are always ignored) IGNORE_ACCESS_PERMS: false # If true, people will buy with left-click and sell with right-click. REVERSE_BUTTONS: false # If true, people will be able to buy/sell in 64 stacks while holding the crouch button. SHIFT_SELLS_IN_STACKS: false # If true, people will be able to sell/buy everything available of the same type. SHIFT_SELLS_EVERYTHING: false # What can you do by clicking shift with SHIFT_SELLS_IN_STACKS turned on? (ALL/BUY/SELL) SHIFT_ALLOWS: "ALL" # Can shop's chest be opened by owner with right-clicking a shop's sign? ALLOW_SIGN_CHEST_OPEN: false # If true and in 1.14+, the owner of a chest shop can click with a dye / ink sac to dye the sign. SIGN_DYING: true # If true, when you left-click your own shop sign you won't open chest's inventory, but instead you will start destroying the sign. ALLOW_LEFT_CLICK_DESTROYING: true # If true, if the shop is empty, the sign is destroyed and put into the chest, so the shop isn't usable anymore. REMOVE_EMPTY_SHOPS: false # If true, if the REMOVE_EMPTY_SHOPS option is turned on, the chest is also destroyed. REMOVE_EMPTY_CHESTS: false # A list of worlds in which to remove empty shops with the previous config. Case sensitive. An empty list means all worlds. REMOVE_EMPTY_WORLDS: - "world1" - "world2" # First line of your Admin Shop's sign should look like this: ADMIN_SHOP_NAME: "Admin Shop" # Make all admin shops be unlimited even if they have a shop container at the sign FORCE_UNLIMITED_ADMIN_SHOP: false # The name of the economy account which Admin Shops should use and to which all taxes will go SERVER_ECONOMY_ACCOUNT: "" # The uuid of the economy account for the Admin Shop. Useful for fake accounts as normally only accounts of players work SERVER_ECONOMY_ACCOUNT_UUID: 00000000-0000-0000-0000-000000000000 # Percent of the price that should go to the server's account. (100 = 100 percent) TAX_AMOUNT: 0 # Percent of the price that should go to the server's account when buying from an Admin Shop. SERVER_TAX_AMOUNT: 0 # Amount of money player must pay to create a shop SHOP_CREATION_PRICE: 0 # How much money do you get back when destroying a sign? SHOP_REFUND_PRICE: 0 # How many decimal places are allowed at a maximum for prices? PRICE_PRECISION: 2 # This makes sure that the UUIDs of player shop accounts match the server's online-mode setting. Disabling this might lead to issues with offline players and is therefore unsupported! ENSURE_CORRECT_PLAYERID: true # This regexp validates the name of the player. If the name doesn't match, the player will neither be able to create a valid shop sign, nor buy/sell from a shop. # Note for Bedrock support: If you have Floodgate on your server, you should set this regexp to ^\\.?\\w+$ and ENSURE_CORRECT_PLAYERID to false # If your Floodgate prefix is not a dot, then change the first . in the regexp (the one before the question mark) to whatever your prefix is. VALID_PLAYERNAME_REGEXP: "^\\w+$" # Should we block shops that sell things for more than they buy? (This prevents newbies from creating shops that would be exploited) BLOCK_SHOPS_WITH_SELL_PRICE_HIGHER_THAN_BUY_PRICE: true # Maximum amount of items that can be bought/sold at a shop. Default 3456 is a double chest of 64 stacks. MAX_SHOP_AMOUNT: 3456 # Do you want to allow other players to build a shop on a block where there's one already? ALLOW_MULTIPLE_SHOPS_AT_ONE_BLOCK: false # Can shops be used even when the buyer/seller doesn't have enough items, space or money? (The price will be scaled adequately to the item amount) ALLOW_PARTIAL_TRANSACTIONS: true # Can '?' be put in place of item name in order for the sign to be auto-filled? ALLOW_AUTO_ITEM_FILL: true # Enable this if you use BungeeCord and want players to receive shop notifications on other servers BUNGEECORD_MESSAGES: false # Do you want to show "Out of stock" messages? SHOW_MESSAGE_OUT_OF_STOCK: true # Do you want to show "Full shop" messages? SHOW_MESSAGE_FULL_SHOP: true # How many seconds do you want to wait before showing notifications for the same shop to the owner again? NOTIFICATION_MESSAGE_COOLDOWN: 10 # Can players hide the "Out of stock" messages with /cstoggle? CSTOGGLE_TOGGLES_OUT_OF_STOCK: false # Can players hide the "Full shop" messages with /cstoggle? CSTOGGLE_TOGGLES_FULL_SHOP: false # Do you want to show "You bought/sold... " messages? SHOW_TRANSACTION_INFORMATION_CLIENT: true # Do you want to show "Somebody bought/sold... " messages? SHOW_TRANSACTION_INFORMATION_OWNER: true # If true, plugin will log transactions in its own file LOG_TO_FILE: false # Do you want ChestShop's transaction messages to show up in console? LOG_TO_CONSOLE: true # Should all shop removals be logged? LOG_ALL_SHOP_REMOVALS: true # Do you want to stack all items up to 64 item stacks? STACK_TO_64: false # Do you want to use built-in protection against chest destruction? USE_BUILT_IN_PROTECTION: true # Do you want to have shop signs "stick" to chests? STICK_SIGNS_TO_CHESTS: false # EXPERIMENTAL: Do you want to turn off the default protection when another plugin is protecting the block? (Will leave the chest visually open - CraftBukkit bug!) TURN_OFF_DEFAULT_PROTECTION_WHEN_PROTECTED_EXTERNALLY: false # Do you want to turn off the default sign protection? Warning! Other players will be able to destroy other people's shops! TURN_OFF_SIGN_PROTECTION: false # Do you want to disable the hopper protection, which prevents Hopper-Minecarts from taking items out of shops? TURN_OFF_HOPPER_PROTECTION: false # Only allow users to buy/sell that have access to the sign's protection? (E.g. LWC protection) CHECK_ACCESS_FOR_SHOP_USE: false # Do you want to protect shop chests with LWC? PROTECT_CHEST_WITH_LWC: false # Of which type should the container protection be? Possible type: public, private, donate and on some LWC versions display LWC_CHEST_PROTECTION_TYPE: "PRIVATE" # Do you want to protect shop signs with LWC? PROTECT_SIGN_WITH_LWC: false # Of which type should the sign protection be? Possible type: public, private, donate and on some LWC versions display LWC_SIGN_PROTECTION_TYPE: "PRIVATE" # Should the chest's LWC protection be removed once the shop sign is destroyed? REMOVE_LWC_PROTECTION_AUTOMATICALLY: true # Should LWC limits block shop creations? LWC_LIMITS_BLOCK_CREATION: true # Do you want to only let people build inside WorldGuard regions? WORLDGUARD_INTEGRATION: true # Do you want to only let people build inside region flagged by doing /region regionName flag allow-shop allow? WORLDGUARD_USE_FLAG: true # Do you want ChestShop to respect WorldGuard's chest protection? WORLDGUARD_USE_PROTECTION: false # Do you want to only let people build inside GriefPrevention claims? GRIEFPREVENTION_INTEGRATION: false # Do you want to only let people build inside RedProtect regions? REDPROTECT_INTEGRATION: false # Do you want to deny shop access to unlogged users? AUTHME_HOOK: true # Do you want to allow shop access to unregistered users? (Example: registration is optional) AUTHME_ALLOW_UNREGISTERED: false # How much Heroes exp should people get for creating a ChestShop? HEROES_EXP: 100.0 # Add icons and make item names hoverable in transaction messages when ShowItem is installed? SHOWITEM_MESSAGE: true # Add stock counter to quantity line? USE_STOCK_COUNTER: false ```

Server Version

Paper 1.20.1 build 116

Server Log

Log ``` [01:51:43] [Server thread/INFO]: [ChestShop] Enabling ChestShop v3.12.3-SNAPSHOT (build 389) [01:51:43] [Server thread/INFO]: [ChestShop] Found locales hu, es_mx, sv, en, ro, zh_tw, fi, tr, af, ca, da, it, ru, nl, cs, vi, pt_br, he, zh, es, ko, no, fr, el, ja, uk, de, pl, ar, sr [01:51:43] [Server thread/ERROR]: Error occurred while enabling ChestShop v3.12.3-SNAPSHOT (build 389) (Is it up to date?) java.lang.NullPointerException: Cannot read the array length because the return value of "com.mojang.authlib.yggdrasil.response.ProfileSearchResultsResponse.getProfiles()" is null at com.mojang.authlib.yggdrasil.YggdrasilGameProfileRepository.findProfilesByNames(YggdrasilGameProfileRepository.java:59) ~[paper-1.20.1.jar:?] at com.destroystokyo.paper.profile.PaperGameProfileRepository.findProfilesByNames(PaperGameProfileRepository.java:44) ~[paper-1.20.1.jar:git-Paper-116] at net.minecraft.server.players.GameProfileCache.lookupGameProfile(GameProfileCache.java:110) ~[?:?] at net.minecraft.server.players.GameProfileCache.get(GameProfileCache.java:181) ~[?:?] at org.bukkit.craftbukkit.v1_20_R1.CraftServer.getOfflinePlayer(CraftServer.java:1961) ~[paper-1.20.1.jar:git-Paper-116] at org.bukkit.Bukkit.getOfflinePlayer(Bukkit.java:1335) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?] at com.Acrobot.ChestShop.UUIDs.NameManager.load(NameManager.java:347) ~[ChestShop.389.jar:?] at com.Acrobot.ChestShop.ChestShop.loadConfig(ChestShop.java:190) ~[ChestShop.389.jar:?] at com.Acrobot.ChestShop.ChestShop.onEnable(ChestShop.java:158) ~[ChestShop.389.jar:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:281) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:189) ~[paper-1.20.1.jar:git-Paper-116] at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[paper-1.20.1.jar:git-Paper-116] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?] at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugin(CraftServer.java:640) ~[paper-1.20.1.jar:git-Paper-116] at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugins(CraftServer.java:551) ~[paper-1.20.1.jar:git-Paper-116] at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:636) ~[paper-1.20.1.jar:git-Paper-116] at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:435) ~[paper-1.20.1.jar:git-Paper-116] at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:308) ~[paper-1.20.1.jar:git-Paper-116] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1101) ~[paper-1.20.1.jar:git-Paper-116] at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:318) ~[paper-1.20.1.jar:git-Paper-116] at java.lang.Thread.run(Thread.java:833) ~[?:?] [01:51:43] [Server thread/INFO]: [ChestShop] Disabling ChestShop v3.12.3-SNAPSHOT (build 389) ```

What other plugins are you running?

I am running this on three different servers and all three fail with the same reason and server version.

Agreements

Additional context

I cannot replicate the issue on my localhost version. All the main game servers are in off-line mode as they run behind the Bungee (Waterfall) proxy.

I am at a loss as to what could be causing this, your help would be appreciated

Phoenix616 commented 11 months ago

This kinda looks like the error is in the Minecraft/Paper server itself, not in the plugin. Not sure how muwh is doable there from the plugin's side.

cobrex1 commented 11 months ago

OK, I will try an update to paper and see if that makes a difference. I had a feeling it might be there, but all searches didn't really help. Thanks for the response.

cobrex1 commented 11 months ago

Hmmm, that didn't help using 118, still disabled. I will continue to search and see if I can find a solution. Frustrating.

Phoenix616 commented 11 months ago

You could try older builds/versions and see when it works again. Or just report to Paper.

cobrex1 commented 11 months ago

Yeh I think it is the number of checks being done by multiple plugins for offline players via the new auth process. I disabled combinations of plugins and it works with some and not with others. Spartan appears to take the biggest load but not sure why. I have Chestshop working now by disabling different plugins on different servers to ensure Chestshop is working. Very strange and I don't fully understand it. AJLeaderboards and Citizens were possible culprits also - lol Feel free to close this now but a useful reference for others

cobrex1 commented 11 months ago

Thanks for the update with Mojang API, been through several re-boots now with all plugins enabled and appears to be working perfect, thank you.