Advancement Portals

Advancement sharing, portal gating, and FTB Team integration !

File Details

advancement_portals-3.1.0-1.20.1

  • R
  • Jul 9, 2026
  • 34.22 KB
  • 15
  • 1.20.1
  • Forge

File Name

advancement_portals-3.1.0-1.20.1.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:advancement-portals-1107136:8397623")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Advancement Portals 3.1.0

Advancement Portals 3.1.0 is a major quality-of-life and multiplayer-focused update. It rebuilds the dimension-gating flow, makes the configuration easier to understand, fixes several portal and notification bugs, and introduces optional FTB Teams advancement sharing.

Highlights

  • Added optional advancement sharing for members of the same FTB Teams party.
  • Added persistent offline sharing so teammates do not need to be online together.
  • Added ALL and ANY gate modes.
  • Added a clearer, more readable dimension requirement format.
  • Preserved compatibility with existing 3.0.x gate entries.
  • Reworked locked-portal messages and dimension unlock notifications.
  • Added safer config parsing and startup validation.
  • Added Creative, Spectator, and configurable operator bypasses.
  • Fixed the portal warning bug that could block travel without explaining why.

Added

FTB Teams advancement sharing

Added optional integration with FTB Teams for cooperative progression.

When enabled:

  • An advancement earned by one player can be granted to the other members of the same FTB Teams party.
  • Online teammates receive eligible advancements immediately.
  • Progress is recorded for offline teammates and applied when they return.
  • Stored team progress can be synchronized when a player logs in.
  • Gate-related progress is synchronized again before dimension travel is evaluated.
  • Existing portal advancement progress can be discovered from online teammates in worlds upgrading from an older version.
  • Newly joined teammates can inherit advancement progress recorded for the current party members.
  • FTB Teams remains optional. Advancement Portals continues to load and gate dimensions normally when FTB Teams is not installed.

New FTB Teams settings:

[ftbTeams]
shareAdvancementsWithTeam = true
shareOnlyPortalAdvancements = false
shareRecipeAdvancements = false
syncTeamAdvancementsOnLogin = true
notifySharedAdvancements = true

ALL and ANY gate modes

Dimension gates can now use one of two matching modes:

  • ALL — every configured advancement must be completed.
  • ANY — completing any one configured advancement unlocks the destination.

Example:

dimensionRequirements = [
  "minecraft:the_nether | ALL | minecraft:story/mine_diamond, minecraft:story/enchant_item",
  "minecraft:the_end | ANY | minecraft:end/kill_dragon, mypack:quests/end_access"
]

New player and administrator options

Added configuration options for:

  • Enabling or disabling all dimension gating.
  • Allowing Creative players to bypass gates.
  • Allowing Spectator players to bypass gates.
  • Allowing operators to bypass gates.
  • Selecting the operator permission level required for bypass.
  • Controlling how often locked-travel warnings may repeat.
  • Setting a short retry delay after blocked portal travel.
  • Showing or hiding advancement descriptions.
  • Showing or hiding dimension unlock notifications.

Startup validation

The server now validates configured gates during startup and reports:

  • Dimensions that are not currently loaded.
  • Advancement IDs that do not exist.
  • Invalid resource locations.
  • Invalid gate modes.
  • Entries containing no valid advancement requirements.
  • Duplicate entries targeting the same destination.

Unknown advancements remain blocking requirements rather than silently opening the destination.

Changed

Friendlier configuration format

The recommended format is now:

dimension | ALL/ANY | advancement, advancement

Example:

"minecraft:the_end | ALL | minecraft:nether/obtain_ancient_debris"

The original 3.0.x format remains supported:

"minecraft:the_end=[minecraft:nether/obtain_ancient_debris]"

Legacy entries are treated as ALL gates.

Centralized gate handling

Gate parsing, validation, evaluation, advancement lookup, and display-name formatting now use one shared gate manager. This keeps portal checks, unlock messages, config validation, and team synchronization consistent.

Improved locked-travel feedback

When a player attempts to enter a locked destination, the mod now shows:

  • The destination that is locked.
  • Whether all requirements or any one requirement must be completed.
  • The readable title of each missing advancement.
  • The advancement description when enabled.
  • A clear warning when a configured advancement cannot be found.
  • A short action-bar reminder that the destination is still locked.

Improved unlock feedback

Dimension unlock notifications now occur when the advancement is actually completed.

For ALL gates, the message appears when the final required advancement is earned.

For ANY gates, the message appears when the first qualifying advancement is earned.

More efficient team synchronization

Portal attempts now synchronize only the advancements required by the destination being entered. The mod no longer needs to rescan a potentially large stored advancement history every time a player remains inside a portal.

Fixed

  • Fixed a logic error that could cancel dimension travel and return before sending the missing-advancement warning.
  • Fixed warning cooldown data persisting incorrectly between player lifecycle changes.
  • Changed warning timing to use the server tick counter, preventing stale cooldown behavior after respawning.
  • Removed an unrelated Fire Resistance effect that was applied when End travel was denied.
  • Replaced unsafe advancement and dimension ID construction with validated parsing.
  • Fixed invalid config entries being able to interrupt gate parsing.
  • Fixed unlock detection using an overly broad advancement event.
  • Removed permanent in-memory unlock-notification tracking that could become stale or grow for the lifetime of the server.
  • Prevented repeated team grants from recursively sharing the same advancement indefinitely.
  • Corrected FTB Teams API reflection so the integration resolves the manager methods from the proper API interface.
  • Added safe fallback behavior when FTB Teams is missing or its API cannot be resolved.
  • Reduced repeated portal processing and chat spam through separate warning and retry cooldown controls.
  • Removed duplicate advancement IDs inside an individual gate.
  • Clarified duplicate destination handling: the final valid entry for a destination replaces earlier entries.

Compatibility

  • Minecraft: 1.20.1
  • Mod loader: Forge 47.x
  • Java: 17
  • FTB Teams: Optional
  • Mod ID: advancement_portals
  • Config: config/advancement_portals-common.toml

Updating from 3.0.x

Existing dimensionRequirements entries remain compatible and do not need to be rewritten immediately.

After updating:

  1. Start the server once to generate the expanded config.
  2. Review the new [dimensionGating] and [ftbTeams] sections.
  3. Confirm the startup log reports the expected number of gates.
  4. Correct any unknown dimension or advancement IDs shown in the log.
  5. Test each gated destination with a normal player.
  6. Test team sharing with at least two FTB Teams members, including one offline login test.

Important advancement-sharing behavior

Shared advancements are granted through Minecraft's normal advancement system. If an advancement awards experience, recipes, loot, or functions, those rewards may also run for the teammate receiving it.

Set the following when only portal progression should be shared:

shareOnlyPortalAdvancements = true

Recipe advancements are excluded by default unless the recipe advancement is explicitly configured as a portal requirement.