You are browsing as a guest. Sign up (or log in) to start making projects!

OffsetMonkey538

@OffsetMonkey538

Joined June 1st, 2026

  • 53Devlogs
  • 5Projects
  • 3Ships
  • 52Votes
Ship ✨ Blessed

Alright finally shipping again, cutting it close to the end.

Not sure if I’m supposed to recap what the project is in a second ship, but a tldr for that: This is a Minecraft mod for mob farming. Item collection, xp collection, entity pushing, etc
For playing the mod, I very highly recommend using the Reliable Recipe Viewer mod as well as I’ve added integration with it. (And i’m totally not biased at all from the fact that I’ve made a few PRs to RRV during the course of making this mod as i found bugs and missing features 😅)

I noticed from the starwrights’ video and some of the ratings that it’s not immediately obvious how things work, so I’ve spent the past little while on making stuff more intuitive in game and I also wrote a bunch of documentation.

The documentation is available here and the code for it lives on the docs/master branch on the repo (don’t question the minecraft assets inside the MIT licensed repo… ok yeah maybe i should add a note somewhere that those are mojang’s property or however this works, but it’s 6am, i’ve been up all night, and I want to get this damn thing shipped and then sleep. It’s not like they’re gonna sue me overnight, right?).

Changes:
Added 26.3 support. This wasn’t actually super bad, not many changes that affected me.

The blocks that can have upgrades inserted into them now display a silhouette of the supported upgrades and a hover tooltip listing supported upgrades.

For the compact mob farm, I added a progress bar that tracks the time until the next attack, this should hopefully immediately show to the user that the block is indeed doing something, instead of just it looking like nothing’s happening for 30 seconds until the health decreases.

Added an RRV recipe showing what mobs can be used in the compact mob farm and their drops.

I also fixed some small bugs (like being able to use an unfilled soul gem in a compact mob farm, very very small bug indeed, I know)

Since the last ship, I’d say the hardest part was probably dealing with CSS and Astro 😅 I haven’t really done much in terms of web development before and for the documentation I added a custom Astro component for displaying crafting recipes. That didn’t go quite perfectly at the start because I don’t understand how css styling works, there should be an image on one of the devlogs with the crafting recipe texture scaled wayyy too high and extending off the screen, the ingredients possibly in the correct places, and then the output just next to the page title for some reason.
I do like how it turned out in the end though, being able to click on ingredients to navigate to their pages and stuff.

  • 11 devlogs
  • 37h
  • 17.08x multiplier
  • 761 Stardust
Try project → See source code →
Open comments for this post

5h 54m 21s logged

Turns out there’s been a bug for a whileeeeee (possibly the entirety of since I ported to 26.1?) where you can put an “empty” soul gem (with one soul inside it), so that was something I had to fix. Just a one line change tho, but still quite an embarrassing change.

Anyway uhh yeah finished the docs, fixed that bug, fixed some more bugs and… oh yeah, made the built-in datapacks enabled by default as that just makes more sense.

0
0
25
Open comments for this post

1h 49m 1s logged

Finally a devlog of the mod itself again (I wanted a break from writing the docs, that’s exhausting 😭)

  • Fixed description of speed and damage upgrade showing “Format error”: I was trying to use the % sign in the text, but item descriptions passes it to String.format which treats % as a formatting character. Using %% escapes it though and becomes a literal % character.
  • My PR to Reliable Recipe Viewer was merged at some point so its RecipeViewMenu#updateByPage method is now public, so I was able to remove the slightly concerning java reflection I used to make it accessible and call it
  • Added an RRV page explaining how to acquire soul essence.
0
0
54
Open comments for this post

4h 27m 15s logged

Finished writing all the item pages and oh god it’s 3:30 AM as I write this i really need to sleep 😭😭😭

Had to add a new SmithingRecipe astro component for the smithing recipe, which was fun. Also made the normal CraftingRecipe a bit smaller as it was wasting too much space

0
0
30
Open comments for this post

2h 8m 4s logged

Wrote a few more pages and figured out how to get embeds on discord (and i guess other sites) working.
Turns out you gotta add some open graph metadata to get the image and title and description to show up

0
0
89
Open comments for this post

1h 35m 41s logged

The docs now show the item slot texture behind the item icons in page titles cause I thought that’d look cool.

Also started with actually writing the docs by doing the page for soul essence. It has a video which is cool I guess

0
0
35
Open comments for this post

5h 11m 31s logged

Set up empty pages for all the blocks and items, fought quite a bit with astro/typescript to get the PageTitle override to correctly display the icons.
Turns out astro’s optimized Image stuff doesn’t support animated images, no matter how much you try to force it to, so I ended up having to use the basic img tag

0
0
25
Open comments for this post

1h 35m 48s logged

Started working on setting up a docs page for the mod. Mainly want it for explaining the data driven configuration, but having full pages to give more detailed explanations of the different features is also probably a nice touch.

Made a new icon for the mod as well, it’s pretty much the same but higher res because the 256x256 one looked weird on the docs page.

The docs are done using Starlight like all my other docs pages (see those here) and lives at https://ultimate-mob-farms.docs.cursedmods.com/ and on the docs/master branch in the repo

Currently it’s just the landing page, but it’ll have more stuff soon enough

0
0
46
Open comments for this post

3h 57m 40s logged

Added an RRV screen showing what items can be acquired from the Compact Mob Farm.

Shows the entity, the items it drops and the required tier upgrade level. Hoping this also helps with confusion on how stuff works

1
0
48
Open comments for this post

2h 9m 24s logged

Added a progress bar to the Compact Mob Farm GUI that hopefully makes it much easier to understand when it’ll damage the entity and it doesn’t look like it’s just doing nothing lol, especially with the 30 second default time

0
0
124
Open comments for this post

6h 31m 35s logged

Waow that’s quite a bit of stardust 😅 Quite happy with this project and the ratings it got on the first ship :D (except the one that accused my devlogs of being written by ai… My writing is not that bad, right? :cryin: )

I noticed in the shipwrights’ review video that how upgrades work is not very obvious, they were trying to put a tier upgrade into a soul fan, which only accepts width, height and depth upgrades. It was mentioned in ratings that stuff is a bit hard to figure out in the beginning as well.

So to fix that, I added some silhouettes of the supported upgrades shown in the slots and also a hover tooltip saying what’s supported.

Oh and i’ve also added 26.3 support now

0
0
73
Ship ✨ Blessed

This is a Minecraft mod for making mob farms, something similar to for example Mob Grinding Utils.

It features item and xp collection, entity movement, spawner relocation and crafting, single block mob farms and some other stuff.

Honestly, I’m quite proud just over the fact that I finally did finish this project (or at least got it to the point of being comfortable releasing it publically) and it’s hard to choose any specific features, but here I go… I do really like how the particle effects for the soul fan turned out, they’re quite satisfying imo.
This is kind of unrelated to the mod, but I’m also proud of having helped out with the development of RRV, the recipe viewer mod I added compat with. While adding support for it in this mod, I noticed some bugs and crashes and stuff, which I PRed fixes for.

It’s a bigger project with many complex things, so coming up with a list of all the things I found hard or took a lot of time and explaining all of them would probably go over whatever character limit this text box has lol.
One thing that was a big PITA was the compact mob farm inventory. The original implementation I wrote was just… completely wrong, so I had to rewrite it. Then later I realized I overlooked like the most important part of the item transfer api (transactions, which are used for rolling back changes and stuff) so I had to rewrite it again, and then after that I rewrote quite a bit of it one more time because, after the last rewrite, I had accidentally made it possible for other blocks to insert into the inventory, which isn’t something I wanted as that seems quite OP.
Another thing that comes to mind is figuring out the code for the soul fan’s range based on upgrades and strength at a given distance. The problem was that the coordinate you have to increase/decrease depends on the orientation of the block, so as an example, the depth upgrade would need to increase the Y pos when the block is placed pointing up and decrease it when pointing down, the X pos when facing north/south and the Z pos when facing east/west. For pushing the entities, I had to find the coordinates of the middle of the face the block is pointing, and add/subtract the correct coordinate to get the range in the depth direction, and then find the distance between each entity currently in range and the fan in just that plane for calculating the strength.

For people testing out the project, I definitely do recommend also installing the Reliable Recipe Viewer (RRV) and Item Description mods

  • 37 devlogs
  • 125h
  • 18.99x multiplier
  • 2678 Stardust
Try project → See source code →
Open comments for this post

7h 28m 19s logged

School starting with september really hit my productivity on this mod like a truck :tw_sweat_smile:
I am realizing the deadline for stardance is getting real close, so I think this is probably the point where I’ll have to ship it. There are still some TODOs in the code and bugs that need to be squashed and porting to 26.3 (which released like this week, thanks mojang :tw_rolling_eyes: ) and so I haven’t been comfortable marking the latest release as 1.0.0 yet or making announcements elsewhere, but the mod is now perfectly usable and I like where it is.

Changes since last devblog:

  • 26.2 support
  • Injecting some items into vanilla loot chests
  • Advancements

26.2 wasn’t actually as painful as I thought it’d be, which was a nice surprise. Adding advancements was a bit more of a pain with 26.2 support though as I needed custom criteria for some of the advancements (one for putting a soul gem in the compact mob farm and another for using a soul gem on a spawner) and Mojang, in their infinite wisdom, decided to move a bunch of advancement stuff around in 26.2.

0
0
101
Open comments for this post

6h 23m 44s logged

Getting closer and closer to the actual release… could this be the last devblog before that?

Still not quite 100% about if the required kills for each mob are balanced, but it’s probably good enough. Definitely better than everything being 10 kills tho. Felt very off-balance when withers, which are hard to spawn and hard to kill, and pigs, which are just everywhere, required the same amount of kills to capture.

Notable changes:

  • Show soul capturing recipe in rrv when checking usages of spawn eggs
  • Show tooltip with entity name when hovering entity in soul capturing rrv recipe
  • Add item descriptions
  • Fix being able to insert items into the compact mob farm inventory
  • Make amount of kills required for capturing an entity different per entity.
  • Update compact mob farm recipe (now uses soul spikes in the middle instead of stone bricks)
  • Store soul gem colors as hex strings in entity tiers config. Much more understandable and easier to manually change the overrides config or whatever
  • Make built-in packs use the mod icon using a mixin instead of copying the icon into the packs. This shaves like 80kb off the final jar which is quite a bit of unnecessary duplicate crap
  • Remove some log spam that was for debugging
0
0
81
Open comments for this post

2h 35m 56s logged

  • checking the recipe for a specific soul gem now only shows that specific entity instead of all soul capturing recipes
  • soul capturing recipe now shows up before the duplication recipe
  • soul gems can now be searched by the name of the entity they contain
  • fix compact mob farm gui not rendering vanilla background overlay
  • allow filling soul gem when held in the main hand
  • fix dedicated server crashing

Running in a dedicated server would crash because there are quite a few places where I referenced client-only classes in places that the jvm will load on the dedicated server as well. Mostly in the different block entity classes, where I had a clientTick method that had ClientLevel as one of it’s parameters. Even though that method would never get called on the dedicated server, java still wants it to exist when loading the class because it’s part of a method’s definition.
My current solution is very very awful… I moved those things into methods in the client initializer and… well… yeah… it just looks and is awful: https://git.offsetmonkey538.top/OffsetMods538/Ultimate-Mob-Farms/src/commit/0.0.7/modded/src/main/java/top/offsetmonkey538/ultimatemobfarms/modded/UltimateMobFarmsModdedClient.java#L65

The real, foolproof solution would be using the split sources feature of loom, which creates a second source set and makes the main source set unable to access client classes. Only problem is that it’d be a bit annoying to fully get set up in my multiloader-version gradle system and would most definitely need many changes on MonkeyLib538 as well and I just am not up for doing that atm.

0
0
78
Open comments for this post

8h 36m 30s logged

Fixed compact mob farm inventory not working correctly and being incompatible with other mods’ item movement stuff. The whole point of the transfer API on both fabric and neoforge is the transaction system, where each change must store a snapshot that can be returned to if needed; Turns out ignoring the TransactionContext and not saving any snapshots is a bad idea 😅 I’ve tested and it’s compatible with create fly (see screenshot where a compact mob farm with a blaze is being used to feed a blaze burner for a steam engine) and most probably other mods as well.

Added Reliable Recipe Viewer integration that explains soul capturing

0
0
158
Open comments for this post

7h 14m 26s logged

Bunch of refactoring, bug fixes, balancing, etc. Release notes can be seen on the forgejo release or on modrinth, I’m not gonna copy paste em here (this is version 0.0.5 right now)

It is now actually reviewed on Modrinth, took two weeks for that to happen (Gosh I remember when review times were like less than 24 hours :feelsbadman: ). I’m still keeping it unlisted until I get a 1.0.0 release out, but if anyone wants to check it out and share feedback or anything, then it’s right over here: https://modrinth.com/mod/ultimate-mob-farms

Before a v1, I still need better rrv and item descriptions integration, some more balancing changes, advancements, quite a few bugfixes and probably some other stuff I’m forgetting at the moment.

0
0
116
Open comments for this post

2h 21m 11s logged

Made soul fans placed at different locations use a different starting frame offset, so they don’t all look the same (see before and after videos).

The way this is implemented is a bit interesting…
There’s no easy “use this model but offset any texture’s animation by 1 frame” as afaik the frame index is global per texture. What Minecraft does allow is each block state variant actually being an array of variants that the game will choose between using afaik a hash derived from the block position. This is used in vanilla for things like stone and deepslate, which have mirrored and rotated variants so caves look less repetitive or whatever.

As each texture has a global frame index, I am duplicating the soul fan texture and just changing the order of the frames in the accompanying animation metadata file and creating separate models which point to the different textures and then those models are used as variants in the blockstate.

What’s even more fun is I am using datagen for duplicating the texture and creating the animation metadata files, which definitely isn’t concerning at all. This also required me to make a pull request to fabric api because the FabricCodecDataProvider assumes all files it generates are .json files, but animation metadata is .mcmeta. (The PR isn’t yet merged so I resorted to…. injecting a mixin into fabric api, definitely not cursed at all I swear)

2
0
148
Open comments for this post

4h 25m 48s logged

Added particle effects for soul fan. Figuring out where to spawn em was quite fun actually, though I did have to add a custom particle (reuses the vanilla “small gust” texture) because turns out most particles won’t obey the velocity you give them and just do their own thing, which was a bit annoying.

0
0
123
Loading more…

Followers

Loading…