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

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
70
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
73
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
156
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
115
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
147
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
120
Open comments for this post

3h 44m 32s logged

Added range upgrades for the fan and collector blocks. It was a bit challenging figuring out actually extending the bounding box in the correct directions based on the block is facing, but I did get it working

0
0
13
Open comments for this post

4h 38m 23s logged

Implemented functionality of the soul fan, getting the strength to scale based on distance was a bit of a pain cause i needed to get the position of the center of the face that the fan’s pointing in and only calculate the distance to the entity based on the correct axis cause otherwise giving it a larger range would make the farther to the side entities get pushed less and uhh yeah, took quite a bit of experimenting with stuff to get it to work correctly

0
0
11
Open comments for this post

57m 27s logged

Spent the last hour and a half faffing about with my loader abstraction in monkeylib (stardance only recorded an hour cause that’s technically a separate project) for creative tabs. All that just cause I really wanted the RRV stack group for the filled soul gems to show up next to the empty soul gem, instead of at the end of the list where it did previously

0
0
9
Open comments for this post

3h 5m 34s logged

Spent a bunch of time on cleaning up some code and abstracting some things out of collector block classes to make it easier to add functionality of the soul fan later on, speaking of which! the soul fan is a block that exists in game now

0
0
8
Open comments for this post

17m 17s logged

Spent some time thinking about what I’m gonna do for the block that moves mobs around. I think I’ve decided on going with a basic “fan” type block and now started working on what it could look like. I’m imagining the souls kinda like escaping from the soul sand and also particles spawning and moving in the direction it’s pushing.
As always I’m pretty bad at drawing textures, so the beginning here looks a bit crude, but it’s definitely a start.

It’d be really nice if aseprite had a wakatime plugin…

0
0
13
Open comments for this post

3h 52m 6s logged

Added the experience collector block, which obviously picks up xp orbs and turns em into bottles of enchanting. Kind of got so focused I forgot about making more detailed devlogs 😅

0
0
124
Open comments for this post

3h 41m 42s logged

Made the soul spikes actually deal extra fall damage when fell on. Current fall damage multiplier is at 5, not sure if that is too much or too little. The damage is done by a FakePlayer, so the mob will also drop loot that only drops from player kills, including experience orbs. (Seems like I need to add an XP Collector block in the future to deal with those). Oh and also did some boilerplate-ish things to soul spikes like adding a recipe, translation, etc

Turns out minecraft decides that the block you fall on is the one that’s 0.2 blocks below you…. The model of the soul spikes (which i don’t really wanna change anymore) has the base at 3 pixels high, which makes it… 0.1875 block high 😮‍💨
Nothing that can’t be solved with a mixin to Entity#getOnPosLegacy that changes the BlockPos it returns if the the block above the “correct” block is soul spikes

0
0
52
Open comments for this post

16m 23s logged

Made an okay-ish texture for the soul spikes block (many of em at once looks kinda noisy but oh well, it’ll do. Hopefully it’ll be locked up in a farm killing chamber room anyway).
Had to change the UV mapping again because for whatever reasons, minecraft decides to render a sliver of the neighboring pixel as well which looks super bad with two very contrasty colors next to each other. Solution was to move the blue parts to the bottom of the texture where there was room to have it separated by a row of blank pixels.

1
0
116
Open comments for this post

43m 7s logged

Finished UV mapping the spikes…. this literally took like over an hour haha, sadly time spent in blockbench doesn’t count as it doesn’t have a plugin for wakatime or whatever :/ (the 43min this devlog logs was actually setting up oxipng to automatically run on every commit to optimize the png files)

Next i guess will be to make an actual texture for it, yay. Here’s the super very interesting texture that currently just has all the different mapped sides in different colors

0
0
19
Open comments for this post

1h 43m 5s logged

Been doing some boring things like writing a description and making an icon and some miscellaneous fixes and whatnot as I actually think I want to get this in a state where I could send it in for review on modrinth. Otherwise if I sent it in once I was actually finished with the project, it probably wouldn’t get reviewed before stardance ends and then i’d have to tell people to download the mod from my git releases and that wouldn’t automatically tell em where to get dependencies and whatnot so yeah, want to get it in the queue asap.
Here’s the icon I came up with btw

0
0
17
Open comments for this post

1h 51m 18s logged

Shift-right-clicking an item collector with an empty hand now shows its range. Drawing lines of particles between the correct corners for the outline took a bit of trial and error, also added a screenshot where it doesn’t look quite correct

Also I’m not sure if the video from the previous devlog got uploaded correctly (my browser at least isn’t able to play it) so here it is again

0
0
9
Open comments for this post

2h 54m 15s logged

Made item collector spawn a line of particles when picking up items

Oh and also added compatibility to item collector with container blocks from other mods that use the fabric or neoforge transfer api instead of vanilla containers, more loader specific stuff, yay!

0
0
11
Open comments for this post

3h 40m 32s logged

Started work on adding the item collector, currently just got done with adding the block itself with some boilerplate stuff and a model.
As the name suggests, it’ll be for picking up items in some range of it. Not quite sure if I want it to be a range all around the block, or maybe going outwards from the direction it’s facing? Also not yet quite sure if I want it to just put stuff into an internal inventory and require a hopper or something modded to pull out of it, or if it should act like a hopper pushing things out from the side it’s attached on

0
0
16
Open comments for this post

1h 11m 36s logged

Received new textures and spent some time messing around in the mcmeta file for the animation timing. Looks quite good now. Also made the empty soul gem use the same texture, just with a soul light blue colors.

0
0
9
Open comments for this post

5h 2m 44s logged

Past while has been spent on fighting with gradle to extend my overly complicated setup (monkeylogic, my gradle convention plugin) and make it even more complicated allow adding dependencies from modrinth to projects. After that I could easily add RRV (Reliable Recipe Viewer) as a dependency and now lastly add integration with it.
Currently I’ve got integration to the point of showing the custom duplication recipe, which is great

1
0
11
Open comments for this post

2h 43m 11s logged

Finally fixed the soul gem duplication recipe, which was a bit of a pain to deal with… I initially went down a dumb rabbit hole of overcomplicating the matcher system when turns out having multiple of the same item in the recipe can easily be solved by storing a count for each ingredient instead of having multiple entries for them 😝

0
0
2
Open comments for this post

2h 30m 16s logged

Made spawners craftable, made interacting with spawners using a filled soul gem set the entity in the spawner.

Still not quite sure what to call the “filled” soul gem. One idea i had was to call it just a soul gem and call the not filled one an “Empty Soul Gem”, which is honestly a pretty good idea, but I’m not sure what to do when it’s in the process of being filled. Technically at that point it’s not empty, but maybe it’d be fine to call it that

1
0
6
Open comments for this post

3h 31m 54s logged

Lots of fun stuff between this and the last devlog:

  • Creative tab for filled soul gems now only contains supported ones (had to make creative tabs refresh when data is reloaded cause datapacks can change what’s supported)
  • Removed the old SampleTakerItem and FilledSampleTakerItem classes and moved most logic to custom components or mixins.
  • Soul gems can be filled by holding them in the off hand when killing the target entity ( https://imgur.com/a/Lz6PjZs )
  • Some optimizations
0
0
6
Open comments for this post

1h 55m 13s logged

Optimized the EntityTiers lookup (which I mentioned I messed up last devlog) by using a map instead of a list, and it’s also now storing a reference to the Identifier instead of EntityType, so there’s less work
converting between them for the packet codec (has to be sent as an Identifier (or, well, string) over the network) and also when doing some of the lookups (like from the tint provider, which has just the id by itself)

Not sure what to put as the screenshot it requires me to add…. I guess have some prototypes of the new soul gem texture a person’s working on (the final shape will probably not be a perfectly round pearl)

0
0
3
Open comments for this post

3h 7m 34s logged

Made “filled” soul gems have colors based on the entity they contain!
(and also switched to a different (and probably even worse lmao)
texture) The colors are the same as what spawn eggs used to have, thankfully the minecraft wiki has a list of what they all were before that was removed.

Sadly I can’t steal the entity colors from vanilla anymore as that was removed in 1.21.5, so I had to add color fields to the entity tiers config and that messed with a lot of stuff and is a bit of a hit on performance when it’s not looping over stuff in weird ways as it’s a list of entries when it really should probably be a map… I’ll fix that i guess

Also I know this texture is ass and someone a bit more talented in drawing is cooking up a new one which I’ll probably be able to show off in a few days. Question is… do I want the current one to show up when the vanilla programmer art pack is enabled or is that too embarrassing to show off?

2
0
91
Open comments for this post

56m 44s logged

Added recipes, translations, etc for soul essence and gem, removed spirit bottle, added recipe for spawner, made spawners drop with silk touch.

Thanks to neoforge there have to be separate mixins for fabric and neo for disabling the xp drop when a spawner is broken with silk touch (would lead to infinite xp otherwise lol)…. if only neoforge was just fabric

0
0
9
Open comments for this post

20m 16s logged

So I’ve been doing some brainstorming and writing things down on paper (like a caveman) and have at least redesigned some of the features that already exist.

Instead of a bottle of spirits that you get by right clicking a spawner, there’s going to be Soul Essence that you get by killing a mob while they’re standing on soul sand/soil.
Instead of the Sample taker, there’s gonna be a soul gem crafted from a diamond and 4 soul essence that will be filled by holding it in your offhand while killing x amount of the target mob.
Also thought of some recipes that I’m not gonna explain here rn.

Sadly (or thankfully) I haven’t found a wakatime plugin for Aseprite, so nobody will know just how many hours I spent on the absolute trash textures I made for the soul gem and soul essence (I promise they’ll be better at some point maybe idk if I can do any better 😭 ). Soul essence just looks off somehow, and the soul gem looks like a duck spawn egg 😭 😭 😭 😭

1
0
17
Open comments for this post

6h 30m 39s logged

It is now working on NeoForge as well! Getting the inventory to work with the neoforge transfer api was a bit of a pain, but I managed to get it to work! (Don’t mind the debug upgrades in the screenshot, they make it easier to test but dont have textures)

Next up is uhh… some brainstorming and rethinking how the whole mod works and thinking about what’s in scope for this and what’s not:

One thing I definitely want to add is a crafting recipe for spawners and making the sample takers (which will probably be renamed to something relating to souls and gems) usable as spawn eggs on spawners.
I’m not quite sure if upgradeable spawners should be a part of this though as there’s already apotheosis for neoforge (and a port in the works for fabric) that does that and probably other mods as well.
I also really wanted to add things for moving and killing mobs in the world, for which there are also already mods like Dark Utilities (got quite inspired by that) which afaik also is updated to the latest version and is for both fabric and neoforge…. Though it seems to have more random things unrelated to mob farming, and maybe it’d be fine if I really differentiate from it and other similar mods with the theme of this?
Yeahhh this’ll need quite a bit more thinking.

0
0
11
Open comments for this post

2h 3m 48s logged

Finished getting everything out of :loader:fabric and into :modded that makes sense to move. The fabric subproject now only has 4 files, two of which are just the entrypoints that invoke the common initializer and the other two are using fabric api specific things and can’t be moved out without a lot of headache!

0
0
6
Open comments for this post

15m 11s logged

(the 15m were spent working on getting MenuProvider
stuff out from fabric specific code and into the common modded
subproject, butttt I’m making a post cause I wanna share…)

Some funny screenshots from when I was porting from 1.21.1 to 26.1 (rendering changes here are a pain lol)

0
0
17
Open comments for this post

17h 58m 3s logged

Just realized this is probably something I could submit to stardance as well 😅

Basically the initial idea was to have a mob farm contained in a single block. You craft a sample taker and have to click on 10 separate instances of an entity to get a filled sample of that entity. Then you put that into a Compact Mob Farm, turn it on, maybe give it some upgrades and a sword, and it’ll start farming the drops of the entity you took samples of.

Here are some screenshots of what stuff looks like

0
0
9

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…