DeerFoliaPlus · Troubleshooting
Docs/deerfoliaplus/DeerFoliaPlus · Troubleshooting

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:

  1. the actual process uses the Java runtime required by the selected release;
  2. the launch command loads only one core jar;
  3. applyAllPatches or the source build completed;
  4. the server user can read and write the core, config, and world directories;
  5. the first ERROR in 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, or servux switch.
  • Keep skip-fabric-on-via-non-native enabled 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.
  • type is shaped, shapeless, smelting, blasting, smoking, campfire_cooking, or stonecutting.
  • ingredient, pattern, ingredients, and result match the selected type.
  • Item IDs use a valid namespace.
  • enchantments, custom-id, and nbt use 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.