1.19 Complete Rewrite
This rewrite includes a couple of major changes:
Removed Features:
- All Enchantments: Chopdown somewhat removes the need for Lumbering and I always hated the Imperishable implementation
- Bonemeal Tweaks: Bonemealing non-bonemealable blocks
- Drop Tweaks: Configurable despawn timers, egg hatching, sapling planting - these were all bad.
- Pet Armory: Throw gear at tamed pets - this was poorly implemented and was never worth the time to learn rendering
- Death Point: This really isn't necessary now with the new echo compass thing in 1.19
- Low Health Sound: Not really fitting for this mod, and its implementation was very data-modification heavy
- Maybe some others? Will update if I remember some more..
Added Features
- Corpse Drops Tweak - Items dropped by the player upon death will no longer despawn like other items.
Overhauls
- The Tweak system has been introduced. Create a new tweak by extending
VTweak
and using the@Tweak
annotation. The config system will automatically grab onto what configs you need based on this annotation, and the Tweak Registry will automatically grab and fire all custom tweaks' events - Fluid Conversion Recipes - this used to be the Concrete Tweak, but now they're Datapack based and you can modify the defaults (currently they just include all concrete powder -> concrete conversions)! You can specify the fluid, input and output and the recipe will automatically propagate in JEI with the custom plugin I made.
- Falling blocks caused by the Chop Down tweak will no longer drop leaves, but instead drop the block's corresponding drops
- Config System has been overhauled, allowing each tweak to house its own configs rather than making them static members of some conglomerate config class. The
category
param in the@Tweak
annotation tells the config system what category to put the tweak's configs in - if it's not one of the ones listed inCommonConfig.java
orClientConfig.java
, then it will be skipped.
Coding Practices
As mentioned, the code in V-Tweaks is now much more modular by employing the new @Tweak
Class Annotation. This means that you may have to override the isForEvent
method if your event is not the lowest subclass (e.g. EntityEvent
instead of EntityEvent.OtherEvent
). I suggest finding the best subclass to use and use it instead of using a generic, but that's just my opinion.
On top of that, with Java 16 the var
keyword is now available and employed wherever possible. This is primarily because my job has my using Kotlin a lot which uses var
and val
religiously.