u/Jhwelsh

14 - Modding Weekly Digest - Upgrading to 1.21, Talking Enchanting systems and reforms, Immersive Enchanting

14 - Modding Weekly Digest - Upgrading to 1.21, Talking Enchanting systems and reforms, Immersive Enchanting

New digest, I think I can have Structures Over Time 1.0 ready this weekend, so lookout for that.

Moving my mods to 1.21 this week (slowly), you can check them out here:

Always looking for artists and other programmers to work with, please reach out. Discord!

1. Upgrading to 1.21 - Thoughts on the changes

I spent the last week upgrading my library mod (Foundations) and then my first content mod (HB's Ore Clusters) to Minecraft Java Version 1.21.1. I was surprised at how difficult it was - I definitely better understand the community's frustrations around version updates. Here are some changes Mojang made between 1.20.1 and 1.21.1 holistically (I don't upgrade by minor version change).

i. Changed syntax for defining Resource Location - Each Block, Item, Enchantment, Structure - anything in the game is stored at a "resource location" in a registry - so modders are using this object quite a lot. It's crazy Mojang decided to change how it is defined. It's better now, but this was such a widely used object, it's incredible they removed the old way so confidently.

ii. Enchantment System Rework - The entire enchantment system at the code level was reworked - most objects altered, new major ones added like "EnchantmentDefinition" and "EnchantmentInstance". There are so many layers of abstraction in enchantments now, it's surprisingly complex. Mojang is moving towards a data driven enchantment system. All these changes make the system as flexible as possible, but raise the barrier to entry for learning the system and making programmatic modifications.

iii. Data Components - Maybe not new, but a newly prevalent system in 1.21 is the presence of Data Component objects which store context data on objects (chunks, entities, enchantments etc.) In the past, you would just store metadata to an NBT tag. Now there is a much more dynamic Data Component object. This is a very fundamental change to writing and reading metadata. The new system is not especially complicated, but it is a fundamental layer of Minecraft architecture to change - and it's interesting they decided to do this when I thought NBT was fine.

Swapping to NeoForge - The last thing I did was exchange Forge support for NeoForge for 1.21.1 and further. The community seems to be moving away from Forge, and I would really like us to all be on as few modloaders as possible going forward. I will continue to support Forge on 1.20.1 of course. Moving to NeoForge was pretty straightforward. Most of the issues came from gradle changes where I had to adopt a couple new scripts. Working with Balm means my API calls don't change very much - I just import the NeoForge version of the Block Registry, EventRegistrar etc. and register everything the same way. NeoForge adopted a Fabric style "Data Attachment" system for attaching to some objects (like Chunks) instead of the Forge style "Capability". NeoForge seems like a smooth operation and I am optimistic on the future of Minecraft modding - especially with 1. Deobfuscation of all future versions, and 2. The most recent update that lets friends join your solo world over the internet with ease as of 26.2 and later.

2. Minecraft's Enchanting System - Vanilla+ Enchanting Table

Enchanting is one of the best features in Minecraft, but it has become outdated. A few issues: the experience grind is too tedious, the table is too purely RNG, it doesn't encourage exploration or progression, powering up your table should be more involved, enchantments are barely part of the early game, and some enchantments are far more valuable than others.

Reducing Experience Grind - Stronger mobs and late game accomplishments need to reward much more experience. Late game ores should give considerably more, quests for villagers could reward experience, and with a better farming system we could reward more here as well.

Reduce Enchanting Pure RNG - Allow players to recycle the available enchantments in the table for a cost. This is a great use for Lapis, which is totally redundant in enchanting currently. Each time you want to refresh the table with new enchantments, spend some Lapis and get a fresh combination.

Encourage Game Progression for the Enchanting Table - We need to do more with the bookshelves. The enchanting table should draw power from bookshelves but also ancient artifacts, mob heads, rare items, and different shelf types. Apotheosis already does this well, but I would take it even further.

Powering Up the Enchanting Table - Allow a diverse set of items to affect the enchanting table (change the enchantments, drastically reduce cost, apply overlevel enchantments to your gear, give more hints as to what the enchantments are). Visually, each unique item can have its own particle effects. I also love the idea of stocking chiseled shelves with enchanted books as a very immersive way to alter the table.

Involve Enchanting in the Early Game - Enchanting is underrepresented in the early game. Getting an Iron pick with Efficiency 1 or 2, or a Sword with Sharpness 2 should be an exciting boost. I would add a Copper Enchanting Table (modded only, not needed in base game) which allows some limited enchanting very early.

Balancing Enchantments - 6. **Balancing Enchantments **- We need to add a few more. Mods have no shortage of ideas, but most of them are gimmicky and unbalanced. A few enchantments I like the idea of are:

From apotheosis

  • Bane of Illagers - Your attacks will do additional damage to illagers
  • Crescendo of Bolts - Your crossbows gain an additional shot per charge
  • Rebounding - Knocks back enemies who hit you
  • Reflective Defenses - A successful block may harm the attacker
  • Icy Thorns - Being attacked will slow the attacker - normal
  • Veinmeiner - Applies ultimine / veinmeiner to blocks
  • Sea Infusion - Your attacks do significantly more damage when wet
  • Stable Footing - The mining speed penalty for not being on the ground is prevented

From Majrusz's Enchantments

  • Sturdy - improves shield cooldown
  • Leech/Lifesteal - steals life and hunger from opponent
  • Misanthropy - more damage to pillagers, witch, other players
  • Dodge - Chance not to take damage
  • Magic Protection - reduces damage from evokers, guardians

Some other enchantment overhaul mods you can check out

3. Immersive Enchanting - Forge/NeoForge 1.20.1 & Newer

Immersive Enchanting is a fairly new mod that makes a good effort at remodeling Minecraft's Enchanting System while keeping it vanilla themed. It uses a linear enchanting system where you explore the world and discover "Ancient Books" which permanently unlock enchantments for you to apply to your weapons and armor - no experience necessary!

Pros: Beautiful GUI for following and unlocking all enchantments. The exploration <-> enchanting game loop is very nice early game. Enchanting is not nearly as grindy. Good for vanilla+.

Cons: The game loop is front-loaded to the early game, but you can get your core enchantments pretty quickly. I like using levels to enchant - it's good visual storytelling. A little bit of randomness would be nice - being able to obtain an enchant you haven't fully unlocked yet as a stroke of luck would be a welcome touch.

u/Jhwelsh — 8 days ago