CurseForge · Minecraft mod
MesdagPortLib
To port mod from a version to another version
Quick answer
Which MesdagPortLib release should I use?
MesdagPortLib neoforge1.21.1 to forge1.20.1-1.3.1 targets 1.20.1 with Forge. The project page does not say whether this file belongs on the client, dedicated server, or both. No extra mods listed for this file.
Where it goes
Is MesdagPortLib required on the client, server, or both?
The project page does not say whether this file belongs on the client, dedicated server, or both.
The source does not explicitly classify this release as client-only or server-only.
What else does MesdagPortLib neoforge1.21.1 to forge1.20.1-1.3.1 need?
neoforge1.21.1 to forge1.20.1-1.3.1. Change the file and its required mods may change too.
This file does not list any required mods. Do not add a library just because a different file uses it.
This file does not list any required or optional mods.
Before you install it
Add MesdagPortLib without breaking your instance.
Built for MesdagPortLib neoforge1.21.1 to forge1.20.1-1.3.1. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use neoforge1.21.1 to forge1.20.1-1.3.1. It targets 1.20.1 with Forge; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
This file does not list any required mods. Do not add a library just because a different file uses it.
- 03
Put it on the correct side
The project page does not say whether this file belongs on the client, dedicated server, or both.
- 04
Pick the file you checked
Use the “Get this file” button beside neoforge1.21.1 to forge1.20.1-1.3.1. It opens that exact file at the source.
About this project
What does MesdagPortLib add?
MesdagPortLib
A forward-porting library that brings modern Minecraft (1.21+) API features back to Forge 1.20.1. Think of it as a bridge that lets mod developers use NeoForge-style APIs while targeting the stable 1.20.1 Forge ecosystem.
✨ Key Features
♜ 17 New Player & Entity Attributes
All networked and synced automatically. Each attribute has a sentiment indicator ( positive/neutral/negative) with colored tooltips:
| Attribute | Default | Description |
|---|---|---|
player.block_break_speed |
1.0 | Block breaking speed multiplier |
generic.burning_time |
1.0 | Burning time multiplier |
generic.explosion_knockback_resistance |
0.0 | Explosion knockback resistance |
generic.fall_damage_multiplier |
1.0 | Fall damage multiplier |
generic.flying_speed |
0.4 | Creative flight speed |
generic.jump_strength |
0.42 | Jump height |
generic.max_absorption |
0.0 | Maximum absorption health |
player.mining_efficiency |
0.0 | Mining speed modifier |
generic.movement_efficiency |
0.0 | Movement efficiency |
generic.oxygen_bonus |
0.0 | Underwater breathing bonus |
generic.safe_fall_distance |
3.0 | Safe fall distance |
generic.scale |
1.0 | Entity scale (0.0625 ~ 16.0) |
player.sneaking_speed |
0.3 | Sneaking movement speed |
player.submerged_mining_speed |
0.2 | Underwater mining speed |
player.sweeping_damage_ratio |
0.0 | Sweeping edge damage ratio |
generic.water_movement_efficiency |
0.0 | Water movement efficiency |
player.creative_flight |
false | Boolean: enable creative flight |
Attributes are automatically added to all living entities via PortEntityAttributeModificationEvent.
📊 Data Map System
A JSON-driven data system ported from 1.21 — attach typed, codec-backed values to any registry entry:
- Data-driven — define values in
data/<namespace>/data_maps/JSON files - Tag & conditional support — apply to tags, use conditional predicates
- Merge & remove — multi-source merging with removal strategies
- Network sync — automatic client-server negotiation and sync
Built-in data maps:
- Compostables (
portlib:compostables) — override compost chances and villager behavior - Furnace Fuels (
portlib:furnace_fuels) — define custom fuel burn times
📦 Data Component System
Type-safe persistent data on ItemStacks, modeled after 1.21's data components:
Codec-based persistence +StreamCodec-based network sync- Patch-based partial updates
PortModifyDefaultComponentsEventfor setting default components
🔗 Attachment System
NeoForge-style data attachments for entities, block entities, and levels:
- Serializable attachments with copy-on-death support
- Per-player sync with
StreamCodec - Level attachments persisted to save data
🎯 220+ Ported Events
A comprehensive event system wrapping Forge events into a clean, caller-isolated API:
- Player (34):
PortPlayerHeartTypeEvent,PortSweepAttackEvent,PortCriticalHitEvent,PortArrowLooseEvent,PortItemTooltipEvent,PortAnvilRepairEvent,PortTradeWithVillagerEvent, etc. - Living Entity (33):
PortLivingShieldBlockEvent,PortLivingIncomingDamageEvent,PortLivingDrownEvent,PortLivingUseTotemEvent,PortMobDespawnEvent,PortBabyEntitySpawnEvent, etc. - Client (60+):
PortRenderLevelStageEvent,PortRenderTooltipEvent,PortRenderHandEvent,PortRenderArmEvent,PortRegisterGuiLayersEvent,PortRegisterKeyMappingsEvent,PortComputeFovModifierEvent,PortSelectMusicEvent, etc. - World/Block/Item:
PortBlockDropsEvent,PortExplosionKnockbackEvent,PortPistonEvent,PortItemExpireEvent,PortChunkWatchEvent, etc. - Brewing/Enchanting:
PortPotionBrewEvent,PortEnchantmentLevelSetEvent - Village:
PortVillagerTradesEvent,PortWandererTradesEvent
Events are dispatched on the caller mod's own event bus, keeping mod isolation clean.
🌐 Network System
- Bundled packets — multiple logical packets in one physical message
- Rich send targets (tracking entity, tracking chunk, dimension, near players)
- Registry-aware
FriendlyByteBufextensions - VarInt/VarLong/UTF-8 codec utilities
🧩 Interface Injection
45+ vanilla classes gain new methods through interface injection + coremods:
Holder<T>→is(),getKey(),getRegisteredName(),getData()ItemStack→setData(),getData(), data component manipulationLivingEntity→getAttribute(Holder<Attribute>),removeEffectsCuredBy()Registry/IForgeRegistry→ extended lookup methodsEntity/Player/Block/Item→ various extension methods
🏷 Common Tag Generation
c: namespace tags (chests, cobblestones, ores, sands, storage_blocks, etc.) for cross-mod compatibility.
🎮 For Players
PortLib itself adds no gameplay content — it is a library mod. Install it if another mod requires it. You will see 17 new attributes on your player and entities, but they only take effect when modified by other mods.
Project description from CurseForge.
Pick your setup
MesdagPortLib by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
Check the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
MesdagPortLib versions and loaders
neoforge1.21.1 to forge1.20.1-1.3.1
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.3.1.jar
26 Oct 2026
neoforge1.21.1 to forge1.20.1-1.3.0
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.3.0.jar
24 Oct 2026
neoforge1.21.1 to forge1.20.1-1.2.9
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.9.jar
14 Oct 2026
neoforge1.21.1 to forge1.20.1-1.2.8
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.8.jar
12 Oct 2026
neoforge1.21.1 to forge1.20.1-1.2.7
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.7.jar
8 Oct 2026
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.6
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.6.jar
25 Sept 2026
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.5
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.5.jar
21 Sept 2026
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.4
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.4.jar
17 Sept 2026
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.3
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.3.jar
15 Sept 2026
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.2
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.2.jar
12 Sept 2026
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.1
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.1.jar
10 Sept 2026
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.0
MesdagPortLib+neoforge1.21.1 to forge1.20.1-1.2.0.jar
10 Sept 2026
Looking for an older file? The official CurseForge project page is in Resources.