POLY-COMPAT-001 | Mod from a loader with no bridge (blocked) |
POLY-COMPAT-002 | The bridge failed while reading metadata (only that jar is blocked) |
POLY-COMPAT-003 | The bridge failed to prepare the launch (prepareLaunch, for example building the Fabric Loader API) (stops startup before the entry points) |
POLY-COMPAT-100 | Fabric: metadata (including format errors and unreadable version conditions, and a mixins list that cannot be read) |
POLY-COMPAT-101 | Retired (2026-10-22). Mixin no longer blocks a mod by itself. Mixin configurations are judged with 131, 132, and 136 |
POLY-COMPAT-102 | Retired (2026-10-21). A class tweaker no longer blocks a mod by itself. Its access lines are applied as access widenings (125 to 130) |
POLY-COMPAT-103 | Retired (2026-10-21). A nested jar is no longer blocked by itself. It is unpacked and judged (120 to 124) |
POLY-COMPAT-104 | Retired (2026-10-21). A dependency on another mod is no longer blocked by itself. It is judged with 114 |
POLY-COMPAT-105, 106 | Retired (2026-10-22). preLaunch and :: entrypoint values run as in Fabric Loader |
POLY-COMPAT-107, 108 | Fabric: other entrypoints (warning, other mods can receive them with FabricLoader.getEntrypoints), runtime environment |
POLY-COMPAT-110 | A Fabric entrypoint threw an exception (stops startup) |
POLY-COMPAT-111 | Link check: uses a loader runtime class or method that Poly Mod Loader does not provide (for example, Fabric Loader internal classes such as FabricLauncherBase) |
POLY-COMPAT-112 | Link check: references a Minecraft class, method, or field that does not exist in this game version |
POLY-COMPAT-113 | Link check (warning): a class of a mod that is not installed, a client class or a class of a client-only mod referenced on a dedicated server, a JDK incubator class, or a game member whose types no installed jar has |
POLY-COMPAT-114 | A required dependency is missing, blocked, or has the wrong version (including minecraft and java). For a blocked dependency, the reason is included. Quilt mods' depends follow Quilt Loader's rules: a bare version such as 1.0.0 means ^1.0.0, optional dependencies are checked only when that mod is installed, and a list of IDs means any of them |
POLY-COMPAT-115 | A mod declared in breaks is installed |
POLY-COMPAT-116 | A mod declared in conflicts is installed (warning) |
POLY-COMPAT-117 | Same ID (including aliases) as another installed mod |
POLY-COMPAT-118 | Link check: a class file this Java cannot read, or a JDK class that does not exist |
POLY-COMPAT-119 | Link check: the declared entrypoint class is in no jar |
POLY-COMPAT-120 | (Warning) A mod that came from a nested jar: the jar that held it, and the path |
POLY-COMPAT-121 | The outer jar that holds a nested mod is not loaded |
POLY-COMPAT-122 | Another copy of the same mod is used (Poly Mod > directly installed mod > nested copy with the highest version) |
POLY-COMPAT-123 | A nested jar listed in jars is missing or unreadable, or nesting is deeper than 8 levels (blocks the outer mod) |
POLY-COMPAT-124 | (Warning) Loaded, but some nested mods inside it are not loaded, so it works only in part. Nested mods left out only because they are for the other side (108, 305, such as Fabric API's client modules on a server) do not count: Fabric Loader and Quilt Loader leave them out there too |
POLY-COMPAT-125 | Fabric class tweaker: the file named by accessWidener is missing or unreadable, or has lines Fabric Loader would refuse. Each bad line is listed as file:line message |
POLY-COMPAT-126 | Fabric class tweaker: the namespace is not official (for example intermediary, which would need mappings that this game version does not have) |
POLY-COMPAT-127 | Retired (2026-10-22). Class tweaker inject-interface and extend-enum lines are applied as in Fabric Loader |
POLY-COMPAT-128 | Link check: a class tweaker target that is a class outside the game jar. Blocks the mod and, in turn, its dependents (with file:line) |
POLY-COMPAT-129 | (Informational) What a class tweaker widens |
POLY-COMPAT-130 | Link check (warning): on a dedicated server, class tweaker lines for client classes are left out |
POLY-COMPAT-131 | (Informational) The mod's Mixin configurations and which of them apply on this side |
POLY-COMPAT-132 | A Mixin configuration marked required needs a newer Mixin. Mixin would stop the game, so the mod is left out |
POLY-COMPAT-133 | A loader bridge's transformer (Fabric: environment stripping, interface injection, Mixin) failed on a class. The class does not load; the error names the class and, for Mixin, the mixin and its mod |
POLY-COMPAT-134 | Mixin could not start: a configuration cannot be used, two mods use the same configuration (Fabric Loader refuses this too), or Mixin failed to enter a phase. Stops startup |
POLY-COMPAT-135 | Link check: a class tweaker inject-interface line names an interface that no installed jar has. Blocks the mod |
POLY-COMPAT-136 | (Warning) A Mixin configuration that is missing, is not a JSON object, or is not required and needs a newer Mixin. Mixin logs an error and skips it, as under Fabric Loader |
POLY-COMPAT-137 | Link check (warning): a class tweaker line (access widening or interface injection) whose class or exact member this game version does not have. It is left out, as Fabric Loader applies such a line to nothing |
POLY-COMPAT-138 | Retired (2026-10-25, ADR-0030). A Fabric mixin that does not fit the host loader's patch is no longer left out while the rest of the mod runs. The mod is not loaded (224); a mixin Poly Mod Loader moves to the patch and that works as written is 226 |
POLY-COMPAT-139 | A Fabric or Quilt mod that MinecraftForge or NeoForge also loads as its own mod (the same mod built for both loaders: the same mod ID, the ID as FML spells it, a provided ID, or most of its classes) is not loaded; the Forge or NeoForge build runs. When the two builds are mostly the same classes, it meets the mods that need the left-out build; otherwise they are left out by the dependency check |
POLY-COMPAT-140 | A Fabric or Quilt mod's mixin has an injection point whose target Mixin itself refuses (for example "Lpkg/Type;name:()V", a colon before the descriptor). In a required Mixin configuration the target class would not load, so the mod is left out before the game starts (blocking); in an optional one Mixin skips that mixin (warning). Fabric Loader and Quilt Loader use the same Mixin |
POLY-COMPAT-141 | Link check: next to a host loader, a mod carries its own copy of a class in the host loader's packages (for example FML's config classes) and uses a class or member that the host's class of that name lacks. The host's class is the one that runs, so the mod is left out before the game starts (blocking) |
POLY-COMPAT-200–204 | NeoForge (neoforge.mods.toml) and Forge (mods.toml), each reported by its own bridge: metadata, FML language provider, Mixin, Access Transformer, dependencies (warning) |
POLY-COMPAT-205 | NeoForge and Forge library jar (FMLModType manifest, blocked) |
POLY-COMPAT-206 | MinecraftForge's files (installer, libraries, patched game jar) could not be prepared, or Poly Mod Loader's class path lacks Forge's file systems; the Forge mods are not loaded |
POLY-COMPAT-207 | Retired in 0.1.0-alpha.14: Forge mods and Fabric mods now run together. Not reused |
POLY-COMPAT-208 | FML failed while starting (launch stops; the log has FML's own error) |
POLY-COMPAT-209 | A Forge mod FML would refuse is left out before FML starts, so the others still run: its language loader or forge/minecraft version range does not match, a required mod is missing or left out, an installed dependency's version is outside its range, or it is a client-only mod on a server (@OnlyIn(Dist.CLIENT) @Mod class, or minecraft needed on the client side only). Mods that need it are left out too |
POLY-COMPAT-210 | With MinecraftForge on the client, Poly Mod Loader cannot reach Forge's BrandingControl.forEachLine, which it calls to draw Forge's title screen branding with the mod counts per loader above it. The title screen fails to draw; the message names the method. Forge's patched title screen calls the same method, so this means a damaged Forge installation |
POLY-COMPAT-211 | Forge's ModList.getModFileById or ModList.isLoaded is not the code Poly Mod Loader checked, so it is left unchanged: Forge mods do not see the Fabric mods and Poly Mods in the same game through it. The launch goes on (ADR-0025) |
POLY-COMPAT-212 | (information) With MinecraftForge in the same game, a Fabric mod's mixin is adjusted to a class Forge patched and works as written: an accessor or invoker, or a method the mixin adds, that Forge's patch added with the same code is left to Forge's method; or a local an injection captures by name, which Forge's patch renamed, is captured under its new name |
POLY-COMPAT-213 | Retired (2026-10-25, ADR-0030). A mixin method that the host's patch also adds with other code is no longer renamed or allowed to replace the host's method. The mod is not loaded (224) |
POLY-COMPAT-214 | Retired (2026-10-25, ADR-0030). An accessor of a field whose type the host's patch changed no longer throws when called. The mod is not loaded (224) |
POLY-COMPAT-215 | (NeoForge) NeoForge's FMLLoader is not the code Poly Mod Loader checked, so Poly Mod Loader cannot make its game class loader define NeoForge's game layer; the launch stops instead of letting FML's own class loader own the game. The message names what was not found. It means a NeoForge release Poly Mod Loader has not checked. |
POLY-COMPAT-216 | (NeoForge) NeoForge cannot run in this launch, so its mods are left out and the rest of the game starts: Poly Mod Loader has no NeoForge release for this Minecraft version, NeoForge's files cannot be downloaded or checked, Fabric or Quilt mods are in the same game and NeoForge's Mixin start is not the code Poly Mod Loader checked (with the checked NeoForge versions, NeoForge mods run together with Fabric and Quilt mods), or Poly Mod Loader was started without its Java agent, which NeoForge needs (the installed launcher profile and server start it). The message names the reason. |
POLY-COMPAT-217 | (NeoForge) A NeoForge mod that NeoForge's FML would refuse is left out before FML starts, so the other mods still run (FML would stop the whole launch). The reasons are those FML 11 checks in neoforge.mods.toml: the javafml loader version, a required mod that is missing or left out, a neoforge, minecraft or other mod version outside the declared range, or an incompatible mod that is installed. Mods that need the left-out mod are left out too. |
POLY-COMPAT-218 | (NeoForge) NeoForge's ModList.getModFileById or ModList.isLoaded is not the code Poly Mod Loader checked, so it is left unchanged: NeoForge mods do not see the Poly Mods in the same game through it. The launch goes on (ADR-0025, ADR-0026) |
POLY-COMPAT-220 | (NeoForge, with Fabric or Quilt mods) A NeoForge mod's mixin is skipped because its target class was loaded before Mixin selected the mod's configuration: another mod's Mixin plugin loaded it while Mixin was selecting configurations. Only the mixins into that class are skipped; the rest of the configuration applies. The rest of the game runs; that part of the mod does not (ADR-0026 30, 43) |
POLY-COMPAT-221 | (NeoForge) MinecraftForge mods are in the same game, so NeoForge does not run and its mods are not loaded: Forge and NeoForge each patch the game's classes their own way, and one game can hold only one of them. Each NeoForge mod is then diagnosed as without NeoForge. Remove the Forge mods or the NeoForge mods (ADR-0026 34) |
POLY-COMPAT-222 | (information) A Fabric mod's mixin injects into a method that the host loader's patch makes a subclass's override call through super, where vanilla's override does not (NeoForge's play listener passes custom payloads on to its parent class; Fabric API's handler there expects only the configuration listener). The injection keeps to the receivers it has in vanilla: it does not run for that subclass, whose own code runs as the host intends. Nothing to do (ADR-0026 41) |
POLY-COMPAT-223 | (NeoForge or Forge, with Fabric or Quilt mods) A game interface gets a default method of the same name and descriptor from the host loader's patch and from a Fabric mod's interface (class tweaker or mixin); the JVM would refuse every call of it (Conflicting default methods). The interface keeps the host's default and overrides still win. Shown as information when both defaults have the same code; as limited when the code differs, because a call through the mod's interface then runs the host's default (ADR-0026 42) |
POLY-COMPAT-224 | (NeoForge or Forge, with Fabric or Quilt mods) The mod is not loaded, because some of its mixins cannot work as written on the game the host loader patched: a member a mixin uses is gone, an injection point is gone with no replacement, a handler cannot match the patched method, an injection would replace a value the host computes, an injection depends on one that cannot work, or a member or default method collides with the host's. The message lists each mixin and why. This is a limitation of Poly Mod Loader, not a bug in the mod: report it to Poly Mod Loader, not to the mod's author. Mods that need it are not loaded either (114). The title screen counts these mods (ADR-0030) |
POLY-COMPAT-225 | (NeoForge or Forge, with Fabric or Quilt mods) A Fabric or Quilt mod's mixin failed on the host loader's patched game in a way Poly Mod Loader's check before the launch did not foresee. The game stops, as it would under Fabric Loader (before the game starts when the second check finds it, else at Mixin's error). The message names the mod to remove. A limitation of Poly Mod Loader, not a bug in the mod: report it to Poly Mod Loader (ADR-0030) |
POLY-COMPAT-226 | (information) With NeoForge or Forge in the same game, a Fabric mod's mixin is moved to where the host loader's patch put the same thing, and works as written: an injection point the host moved, a method whose parameters the patch only added to or reordered, a call that gained trailing arguments, a call moved into a helper (ADR-0030) |
POLY-COMPAT-227 | (Forge, with Fabric or Quilt mods) MinecraftForge's registries are not the code Poly Mod Loader checked (a member it uses is missing, or a registry's write check reads a flag it does not open), so it cannot open them for Fabric and Quilt mods to register into. Stops the launch before those mods run; Forge mods run alone |
POLY-COMPAT-219 | Retired (2026-10-24, before any release used it). Poly Mod Loader no longer calls NeoForge's BrandingControl itself: it adds the mod counts per loader to the list NeoForge's branding is drawn from, so there is nothing to reach. If NeoForge builds its branding differently, the mod counts are left out and the rule is reported as off |
POLY-COMPAT-300 | Quilt: quilt.mod.json is metadata Quilt Loader would refuse (not a JSON object, a schema_version other than 1, a missing or invalid id, group or version, a malformed entrypoints, jars, depends, breaks, provides, mixin or access_widener, an unreadable version range, an unknown intermediate_mappings or required_features). Blocks the mod; nothing else is reported for it |
POLY-COMPAT-301 | Quilt: the mod declares a loader plugin (experimental_quilt_loader_plugin). Poly Mod Loader does not provide Quilt Loader's plugin API. Blocks the mod |
POLY-COMPAT-302 | Quilt: the mod uses a language adapter (language_adapters, or an entrypoint whose adapter is not default). No Quilt language adapter exists for Minecraft 26.x. Blocks the mod |
POLY-COMPAT-303 | Quilt (warning): QSL entrypoints (init, client_init, server_init) are not run. Quilt Loader does not run them either without QSL, which has no release for Minecraft 26.x |
POLY-COMPAT-304 | Quilt (warning): another entrypoint key (for example modmenu) that Poly Mod Loader does not run; other mods can receive it with QuiltLoader.getEntrypoints or FabricLoader.getEntrypoints (like Fabric 107) |
POLY-COMPAT-305 | Quilt: minecraft.environment is for the other side (a client mod on a dedicated server, a dedicated_server mod on the client). Not loaded (like Fabric 108) |
POLY-COMPAT-306 | Quilt: required_features asks for the modifiable file system overlay (modifiable_filesystem_overlay), which Poly Mod Loader does not provide. Blocks the mod |
POLY-COMPAT-307 | Quilt (not an error): a nested Quilt mod that loads only when required (load_type if_required, the default) and that no loaded mod requires. Not loaded, as under Quilt Loader; not counted in the outer mod's 124 |
POLY-COMPAT-308 | Quilt: the mod depends on a QSL or Quilted Fabric API module (for example quilt_base, quilt_resource_loader, quilted_fabric_api). Neither has a release for Minecraft 26.x, so the dependency cannot be met under Quilt Loader either. The mod is left out with 114; this code gives the reason |
POLY-COMPAT-309 | Quilt (information): values Quilt Loader reads that have no effect in this launch: repositories, intermediate_mappings (26.x is not remapped), unknown quilt_loader keys, a top-level environment |
POLY-COMPAT-310 | (Warning) The jar has both fabric.mod.json and quilt.mod.json. Poly Mod Loader runs it as a Fabric mod, so jars that already run as Fabric mods keep doing so; Quilt Loader would read quilt.mod.json instead |