Familiar Weapons release and commentary

Modrinth Link, CurseForge link

I made another small Minecraft mod. This time, I wanted some experience with the Architectury workflow, which allows me to simultaneously develop for both modloaders (Fabric and Forge). It’s more of a “let’s see what I can do with this”/learning project, but I thought it was interesting enough to release and possibly add to over time. I’m also not an artist or modeller, so the art in the mod isn’t great, but I’m moreso trying to get better at modding the game and learning how it works.

Let’s walk through the features:

  • Ankh Shield: Based on Ankh Shield from Terraria. Cures negative potion effects while in hand. This was pretty easy, just a foreach loop in inventoryTick that checks which slot the item is in and what negative effects you have. This… might have some performance implications, but I didn’t immediately notice anything…
  • Elegant Reaper’s Scythe: Based on Testament’s scythe from Guilty Gear -Strive-. It’s a scythe that can summon wither skulls (supposed to be like the Grave Reaper special in the game). This item was interesting because I wanted the weapon to be able to break the same blocks that a Hoe can in recent versions (it extends HoeItem), but to also be able to accept enchantments as if it was a sword. This took some mixins (Java bytecode manipulation). I also wanted it to have Dispenser functionality, which had to be registered on Forge at a different time than on Fabric, seemingly because the item is registered later on Forge (Architectury’s DeferredRegister).
  • Light Arrow: Based on Light Arrow from Legend of Zelda. An upgraded Spectral Arrow that has a Piercing IV by default and can pierce single-block walls. This was my first real entity. I was not able to find a solution to the jankiness that occurs when it is fired into the corner of the block. It seems to me like the client and server were not able to agree on where the arrow was (even in singleplayer – singleplayer Minecraft still uses a client-server infrastructure). I have never done any kind of special networking behavior with Minecraft code before. I need to chat with modders and see if there’s something simple I need to do to fix it.
  • Plasma Sword: Based on the Energy Sword from Halo. A sword that ignores armor but deals no knockback. I learned what I used about Enchantment mixins from the Scythe to prevent the Knockback enchantment, and just used Minecraft’s “generic” damage type on Architectury’s onLivingHurt event with the sword to allow it to ignore armor (it would typically be the “player attack” damage type). This has the (intended) side effect of not dealing knockback
  • Glove(s) of Urgency: Based on Gloves of Running Urgently from TF2. They are just gloves that make you run faster while in either hand, which is an attribute (something I’ve done with items before). It’s technically one item, since default Minecraft doesn’t have two-handed weapons, but a different mod allows you to use both hands to attack. I wanted the model to be mirrored on the other hand, but apparently that Minecraft feature hasn’t worked since 1.14, so I just made the pixel art a very simple representation of the source item.
All weapons in version 1.0