DeerFoliaPlus · Troubleshooting
Fix DeerFoliaPlus startup, configuration, protocol, FakePlayer, recipe, and Folia threading problems.
Start with a safe test
Stop the server and back up the current directory. Record the core build identifier, server release, Java runtime, launch arguments, plugins, client components, and complete log. Change one variable at a time. Do not start by deleting worlds, config, or FakePlayer data.
The core will not start
Check these items:
- the actual process uses the Java runtime required by the selected release;
- the launch command loads only one core jar;
applyAllPatchesor the source build completed;- the server user can read and write the core, config, and world directories;
- the first
ERRORin the log, not the final cascade of errors.
For a configuration parsing error, move config/deer-folia-plus.yml to a recoverable backup location. Let the core generate a new file. Migrate old values one group at a time. Do not rename a DeerFolia config to use it as a DeerFoliaPlus config.
Configuration has no effect
deer-folia-plus.yml is loaded at startup. Restart the server after editing. Check kebab-case keys such as resident-bot, amount-per-player, and skip-fabric-on-via-non-native. Do not turn booleans, numbers, or lists into strings.
custom-recipes.yml registers recipes only when custom-recipe.enabled is true. Check parse errors, unknown item IDs, recipe type, and pattern before testing the relevant container.
Client-protocol problems
When only some players cannot see recipes, schematics, overlays, or entity data:
- Check whether the client uses Fabric or NeoForge.
- Check that the client component and server release form a supported pair.
- Check the server
recipe-sync,syncmatica, orservuxswitch. - Keep
skip-fabric-on-via-non-nativeenabled for ViaVersion/ViaBackwards connections while testing. - Disable one protocol group at a time. Reconnect after each change.
Enabling a server protocol does not install a client mod for players.
FakePlayer problems
When a bot cannot be created, check fake-player.enable, bukkit.command.bot, name length, name collisions, and amount-per-player. A bot.amount.N permission overrides the default limit for a non-OP player.
When a bot does not return after restart, confirm that resident-bot is true. Check that fakeplayer.dat and fakeplayerdata/ under the relevant world are readable and writable. This data belongs to the world save. Back it up separately from config.
For action or inventory problems, stop the action. Check the region location and client view. Reduce the bot count before you change more settings. Do not use reload instead of restart.
Posture and chairs
Confirm posture.enabled, chair-interaction, and the relevant permission node. A locked sitting or lying position is intentional. Use sneak, jump, or /get-up to recover. For chair detection, check contiguous stairs or slabs, their orientation, and require-side-signs.
Custom recipes
Check each item:
- The top-level key is
recipes. - Every recipe ID is unique.
typeisshaped,shapeless,smelting,blasting,smoking,campfire_cooking, orstonecutting.ingredient,pattern,ingredients, andresultmatch the selected type.- Item IDs use a valid namespace.
enchantments,custom-id, andnbtuse supported values.- The restart log reports the expected registration count.
Start with one minimal recipe. Add names, enchantments, and NBT in separate steps. For recipe-overlap problems, remove or rename the test recipe. Do not experiment in the production world.
Folia compatibility
DeerFoliaPlus uses a regionized threading model. A plugin or script that forces entity, world, or Bukkit API calls onto a traditional single main thread can produce thread-context errors or incorrect behavior. Reproduce the problem without the suspected plugin in a test directory before you contact its author or open an issue.