All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Fzzy Core

Fzzy Core

by fzzyhmstrs • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Main Banner for the Fzzy Core mod

Welcome to Fzzy Core! This is the base API that powers some kotlin mods made by fzzyhmstrs (that's me!). Besides offering some basic utility functions that come in handy for many different types of mods, Fzzy Core includes the basic framework of the Modifier System, a flexible and powerful system for modifying... almost anything!

Fzzy Core has KDoc integrated into the source for guidance on use. I'm also working on creating a wiki!

Bisect Hosting Banner

Fzzy Core is currently for Fabric. No port to Forge is planned at this time.

Fzzy Core is part of my project to split Amethyst Core into more functional component parts. This mod is the base of those parts, other APIs in my catalog build upon this base (like Amethyst Core for magic mods)

Coding Utils

Fzzy core contains several utilities that make coding mods just a bit easier! These utilities include:

  • A base Enchantment Class that can be easily integrated with a configuration system to disable/enable individual enchantments.
  • A wrapper for Text that avoids headaches involved with multi-version mods and having to constantly battle merge conflicts on Text changes
  • A persistent effect system that allows for creation of delayed, repeating (or non-repeating) events that aren't tied to a specific objects tick or other messy implementation.
  • A particle creation system that allows for placing client-side particles at a certain spot in a players POV. This allows for items with particles dripping off them, a torch that emits smoke, etc.

Synced Configuration System

Create an easy-to-manage config system that allows for version control over time, and automatically syncs server configs to joining clients!

  • Takes advantage of some of Kotlin's unique functionality for a simple and clean looking implementation
  • Helper methods for automatic updating of config files to new versions, capturing the information from the old version before replacing it with the update.
  • Simple implementation of auto-syncing functions.

Custom Flavor Items

Add basic or tool items with flavortext!

  • Default implementation is simply some new lines in the lang file
  • Optional methods for more complex text
  • Also adds description text, for explaining what flavortext means, or for describing item functionality

Mana Items

Adds a simple framework for creating items that use mana instead of being damaged in the typical way.

Modifier Framework

The Modifier Framework is a flexible and extensible system designed as a parallel to the vanilla Enchanting system. Modifiers aim to solve two of the biggest problems I found with Enchanting: They are easily removable, and they do not internalize their functionality (besides a couple damage methods). Enchantments are also more boring than they could be, displaying their tier with a simple number. Modifiers aim to fix all of those issues!

  • Modifiers are designed to be permanent, acting more like affixes. Grindstones can't remove them, for example.
  • Modifiers are designed to internalize their functionality, and can be called as one unit rather than piecemeal.
  • Modifiers act via a "family tree" that allow for flavorful tiers. Think of a sword going from "Rusty" to "Shiny" to "Gleaming" etc.

The library comes with builtin helper method for displaying modifiers An example tooltip demonstrating modifiers in gold text

See the wiki link above for more details on these features. Once implemented, a Modifier system can do just about anything. Amethyst Core, for example, has a built-in AugmentModifier that does things from affecting mana cost and cooldown, to changing spell damage or range, to triggering advanced effects like afflicting every mob in a 12 block radius around the caster with Wither upon any successful spell cast.

Modifers can be as simple as a container for passing vanilla AttributeModifiers, or much more complex than the AugmentModifier described above. They could even be used purely for flavor if desired!

Nbt Util

Fzzy Core includes a simple util for performing some useful actions on NBT

  • read and write BlockPos with a single helper method, instead of manually saving X, Y, Z coords or doing Long conversion
  • Several NbtList utilities for reading from, adding to, and removing from NbtLists
  • An ItemStackId system for attaching a unique identifier to certain itemstacks. This allows, for example, an ItemStack keyed to a specific block entity... or much more!
  • A helper method for transferring non-enchantment NBT from one stack to another.

Raycaster Util

A simple set of helper methods for locating objects

  • Server-sided raycasting for detection of game objects without needing to do fancy networking
  • Helper methods for entities, blocks, and locating things in areas around a point (like a player)
  • Ability to check for entities with arbitrarily rotated cuboids. Minecraft's default detection systems all use boxes aligned to the XYZ grid. This is useful for something like checking what enemies a spell hits, even if the player is looking diagonally and up a hill.

Event Registry

Registry for adding and tracking basic ticking objects not related to specific objects like entities.

  • Useful for creating periodic clocks that only fire every X ticks, allowing for creation of tick methods that don't fire every single tick. In fact, the registry comes with a 1 second, 1.5 second, and 2 second interval clock built in.
  • Adds a TickUppable interface and Ticker class for registration of objects to the registry.

Item Model Registry

Want to make a custom trident but can't figure out how in heck to make the in-hand Trident appear like MC's does? This registry is for you!

  • Register custom item models for specific render modes (in hand, on ground, etc)
  • Integrates with the standard Fabric BuiltinItemRendererRegistry.DynamicItemRenderer

EffectQueue

Hate how adding passive status effects sometimes results in statuses "fighting" in the GUI, with statuses rapidly swapping back and forth?

  • This simple utility unifies the additions of all status effects passed into it into a predictable order
  • Uses all the standard status effect information you expect with addStatusEffect

Trinket Utils

Fzzy Core integrates optionally with Trinkets, adding some utility functions that can be used with them

  • getTrinketStacks provides a list of all Tirnkets equipped to the passed living entity
  • the AugmentTasks interface allows for creation of Trinkets that interact with special enchantments call Augments. These augments allow for trinkets with customizable passive and active abilities.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
1.20.1
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.19.4
Fabric Quilt
16h ago 1
1.19.3
Fabric Quilt
16h ago 1
1.19.x
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.19.4
Fabric Quilt
16h ago 1
1.20.x
Fabric Quilt
16h ago 1
1.19.4
Fabric Quilt
16h ago 1
1.19.3
Fabric Quilt
16h ago 1
1.19.x
Fabric Quilt
16h ago 1
1.19.3
Fabric Quilt
16h ago 1
1.19.x
Fabric Quilt
16h ago 1
1.19.3
Fabric Quilt
16h ago 1
1.19.x
Fabric Quilt
16h ago 1
1.19.3
Fabric
16h ago 1
1.19.x
Fabric
16h ago 1
1.19.3
Fabric
16h ago 1
1.19.x
Fabric
16h ago 1
1.19.3
Fabric
16h ago 1
1.19.x
Fabric
16h ago 1
1.19.3
Fabric
16h ago 1
1.19.x
Fabric
16h ago 1
1.18.2
Fabric
16h ago 1
1.19.3
Fabric
16h ago 1
1.19.x
Fabric
16h ago 1
1.18.2
Fabric
16h ago 1
1.19.3
Fabric
16h ago 1
1.19.x
Fabric
16h ago 1
1.18.2
Fabric
16h ago 1
### Additions
  • None

### Changes
  • None

### Fixes
  • Fixed ModifierHelperType registry not loading before registry freeze in certain circumstances.
  • Update FzzyPort methods with some new registries and other new helper methods
  • Add VariantRegistry system, for easy creation of mobs with texture and bahavior variations.
  • Fix modifiers duplicating on player death.
  • Add fzzy_core:advancement Advancement Criterion, allowing advancements to be granted on other advancements being granted.
  • Added new data-driven default modifiers system. Default modifiers for any modifiable item can now be defined via datapack. Automatically synced to clients.
  • New isInTagmethod in FzzyRegistry to handle checking on TagKeys
  • Added several aliases for rotation methods in FzzyRotation`
Added some new helper methods to ModifierRegistry for use in Gearifiers
  • Added BasicCustomTridentItem and BasicCustomTridentEntity to unify custom trident code across fzzy mods.
  • Add FzzyPort, a version wrapper for unifying many commonly changed aspects of MC code across versions
  • Added FzzyDamage to unify DamageSource acquisition
  • Added FzzyRegistry and FzzyDefaultedRegistry, wrappers on vanilla Registries to unify imports
  • Added FzzyRotation to unify quaternion rotations
  • Added XpDroppingBlock to unify OreBlock/ExperienceDroppingBlock
  • Attribute-affecting modifiers now stack (more) properly based on level and slot.
  • Fixed issue with C2ME causing crashes due to particle emission on the network loop, not client thread.
  • Added ManaHelper methods for finding ManaItems and healing them.
Fixed some issues with modifier stacking
  • Added nbt stack deserializer for recipe outputs.
  • Added SlotId system for unifying any and all equipment slot methods (in the eyes of FzzyCore), allowing for correct application of attribute modifiers and other slot-specific things.
### Versions below 1.20 are no longer officially being updated. Version 1.20.2 is todo.

  • Created a JsonReader helper object with some convenience methods for various Json parsing tasks.
  • read a defined Entity Attrbiute object
  • read Identifier
  • read Modifier
  • read Formatting
  • Added AttributeProviding interface for creation of Enchantments that add Entity Attributes.
  • Improved memory usage
  • Re-Implemented Modifiers as a player-based affix, rather than ItemStack based. The raw NBT of modifiers is stored on stacks still, but all of the code management happens in a player container, similar to the EntityAttributeContainer.
  • Improved Java interoperability. Interfaces in FC are now properly JVM Default'd, so implementing them in Java should go smoothly. Binary compatibility should be maintained..
  • Added a FlavorHelper to supersede the poorly implemented Flavorful interface. Flavorful still operable, but deprecated.
  • Improved Java interoperability. Interfaces in FC are now properly JVM Default'd, so implementing them in Java should go smoothly. Binary compatibility should be maintained..
  • Added a FlavorHelper to supersede the poorly implemented Flavorful interface. Flavorful still operable, but deprecated.
  • Improved Java interoperability. Interfaces in FC are now properly JVM Default'd, so implementing them in Java should go smoothly. Binary compatibility should be maintained..
  • Added a FlavorHelper to supersede the poorly implemented Flavorful interface. Flavorful still operable, but deprecated.
  • Improved Java interoperability. Interfaces in FC are now properly JVM Default'd, so implementing them in Java should go smoothly. Binary compatibility should be maintained..
  • Added a FlavorHelper to supersede the poorly implemented Flavorful interface. Flavorful still operable, but deprecated.
Fixed accidental platform declaration clash with Vanilla 1.19.4 Tameable interface
Fixed accidental platform declaration clash with Vanilla 1.19.4 Tameable interface
  • Port to 1.20/1.20.1
  • Add helper method for checking an entire player for enchanted equipment
  • Added helper class for building block settings cross-version more easily.
  • Added optional recipe data system: Put recipes in optional_recipes instead of just recipes that you nly want loaded if the recipe type is loaded (if the mod that adds the recipe type exists etc). This allows users to add mod-dependent recipes without spamming the log with errors or having to do weird in-code recipe adding.
  • Port to 1.19.4
  • Add helper method for checking an entire player for enchanted equipment
  • Added helper class for building block settings cross-version more easily.
  • Added optional recipe data system: Put recipes in optional_recipes instead of just recipes that you nly want loaded if the recipe type is loaded (if the mod that adds the recipe type exists etc). This allows users to add mod-dependent recipes without spamming the log with errors or having to do weird in-code recipe adding.
  • Add helper method for checking an entire player for enchanted equipment
  • Added helper class for building block settings cross-version more easily.
  • Added optional recipe data system: Put recipes in optional_recipes instead of just recipes that you nly want loaded if the recipe type is loaded (if the mod that adds the recipe type exists etc). This allows users to add mod-dependent recipes without spamming the log with errors or having to do weird in-code recipe adding.
  • Add helper method for checking an entire player for enchanted equipment
  • Added helper class for building block settings cross-version more easily.
  • Added optional recipe data system: Put recipes in optional_recipes instead of just recipes that you nly want loaded if the recipe type is loaded (if the mod that adds the recipe type exists etc). This allows users to add mod-dependent recipes without spamming the log with errors or having to do weird in-code recipe adding.
  • Fixed crash caused by me accidentally breaking API on myself... addModifier implementations that call the old method without the optional parameters are now fixed
  • Fixed crash caused by me accidentally breaking API on myself... addModifier implementations that call the old method without the optional parameters are now fixed
  • Implemented a (currently unused by me for the moment) system for storing modifiers directly on Living Entities. This hasn't been tested yet.
  • Improved thread safety of PersistentEffectHelper
  • Added a flush to PersistentEffectHelper that processes all the outstanding persistent effects before game close.
  • Implemented temporary modifiers. This utilizes the PersistentEffectHelper, hence the flush addition. This is also not used by me yet.
  • Heavily cleaned up the AbstractModifierHelper; added some new helper methods like removeAll
  • Added zh_cn lang support.
  • Implemented a (currently unused by me for the moment) system for storing modifiers directly on Living Entities. This hasn't been tested yet.
  • Improved thread safety of PersistentEffectHelper
  • Added a flush to PersistentEffectHelper that processes all the outstanding persistent effects before game close.
  • Implemented temporary modifiers. This utilizes the PersistentEffectHelper, hence the flush addition. This is also not used by me yet.
  • Heavily cleaned up the AbstractModifierHelper; added some new helper methods like removeAll
  • Added zh_cn lang support.
Fixed removal of modifiers in certain ways actually adding copies of them instead
Fixed removal of modifiers in certain ways actually adding copies of them instead
Added some synchronization and try statements to hopefully handle a rare client crash that is very difficult to replicate, but seems to be thread-related with gatherActiveModifiers
Added some synchronization and try statements to hopefully handle a rare client crash that is very difficult to replicate, but seems to be thread-related with gatherActiveModifiers
  • Overhauled ModifierHelpers. They are now registered by a ModifierHelperType, enabling items to utilize multiple types of modifiers simultaneously.
  • Offhand scepters now display their particles in the offhand properly
  • CustomFlavorItems now automagically build their flavor in most cases, ignoring flavor or descriptions that don't exist.
  • ManaItems now properly ignore sending a message and making a noise when passed a blank text.
  • Overhauled ModifierHelpers. They are now registered by a ModifierHelperType, enabling items to utilize multiple types of modifiers simultaneously.
  • Offhand scepters now display their particles in the offhand properly
  • CustomFlavorItems now automagically build their flavor in most cases, ignoring flavor or descriptions that don't exist.
  • ManaItems now properly ignore sending a message and making a noise when passed a blank text.
Fzzy Core Icon
Download Fzzy Core
Select game version
Select platform