All notable changes to Catalyst will be documented in this file.
- Search Functionality: Added comprehensive search bar to settings GUI with real-time filtering
- Search across all settings with keyword matching
- Dynamic UI generation for search results with interactive controls
- Clear search when switching tabs
- UI Components: Created reusable search result templates for checkboxes and sliders
- Field Sync Consistency: Fixed missing field syncs in
Catalyst.syncConfigToInjectedFields()for visual effects and BlockType cache settings - Visual Effects Toggle: Fixed particle and animation toggles not syncing to injected Hytale class fields at runtime
- Bytecode Generation: Fixed
initStaticInt()bug that generated incorrect bytecode for value -1 (now correctly usesICONST_M1) - BlockType Cache: Fixed cache never being populated on miss - now properly stores results before returning
- Search Results Display: Fixed search results list visibility and proper clearing between searches
- Code Quality: Replaced hardcoded magic numbers with constants from
CatalystConfigin reset-to-defaults logic - Documentation: Improved comment clarity in
FloodLightCalculationTransformerfor parameter index calculation - Cleanup: Removed unused
ldcCountfield inChunkGeneratorTransformer - Search Architecture: Refactored search system to use indexed selectors for dynamic UI elements
- README Style: Adopted clean emoji-based headers like create-go-app/cli for better readability
- Installation Instructions: Updated to reflect both early-plugins and mods folder requirements
- Command System: Simplified main command to
/catalystinstead of/catalyst menu
- Chunk Generation Stability: Fixed chunk corruption and disappearing chunks caused by multiple transformers modifying the same class
- Consolidated
ChunkPoolSizeTransformer,ChunkCacheSizeTransformer,TintInterpolationTransformer, andHeightSearchTransformerinto singleChunkGeneratorTransformer - Consolidated
LightPropagationOptTransformer,OpacityLookupCacheTransformer,LightQueueOptTransformer, andLightingDistanceTransformerinto singleFloodLightCalculationTransformer
- Consolidated
- Transformer Class Matching: Fixed transformers not matching target classes due to incorrect class name format (now uses dot notation for matching)
- UI Tooltips: Added descriptive tooltips to all settings UI elements explaining what each optimization does
- Simplified Architecture: Removed
CommandRegistrationTransformerandAssetRegistrationTransformer- command/asset registration now handled by standard JavaPlugin lifecycle - Fixed Visual Effects Transformers:
ParticleToggleTransformerandAnimationToggleTransformernow inject static fields directly into target classes instead of referencing external classes - Code Cleanup: Removed unused reflection-based registration methods from
CatalystEarlyInit
- Transformers now correctly use dot notation (
com.example.Class) forshouldTransform()matching and slash notation (com/example/Class) for bytecode operations
- Lazy Loading Optimizations: Completely removed lazy loading features (Lazy Block Entities, Lazy Block Tick, Lazy Fluid Processing) as they only performed throttling without actual optimization benefits
- Removed
LAZY_BLOCK_ENTITIES_ENABLED,LAZY_BLOCK_TICK_ENABLED,LAZY_FLUID_ENABLEDconfig fields - Removed
BlockModuleMixin,BlockTickPluginMixin,FluidPluginMixinmixin classes - Removed lazy loading UI toggles and event handlers
- Removed lazy loading from metrics and menu displays
- Removed
- Settings UI Improvements:
- Moved Reset to Defaults button outside of tab panels to stay fixed at bottom
- Simplified slider options by removing redundant checkboxes - sliders are now standalone
- Fixed tab button highlighting - selected tab now properly changes background when switching tabs
- Tab buttons now use direct
Backgroundproperty for dynamic styling
- Menu & Metrics: Updated to show Runtime Optimizations instead of removed Lazy Loading options
- New Transformers: Added multiple bytecode transformers for various optimizations:
- Animation and Particle toggle transformers
- Biome/Tint interpolation transformers
- Chunk cache, pool size, and parallel generation transformers
- Lighting optimizations (batch, distance, propagation, queue, flat cache, packed ops)
- Height search and opacity lookup cache transformers
- Visual Effects Toggle: New utility class for particle and animation control
- Config Persistence: Added
CatalystEarlyInitfor config file loading/saving
- Entity Distance Control: Configurable entity view distance multiplier (default: 1.0)
- Adjusts how far entities are visible/processed
- Lower values improve server performance
- Chunk Rate Control: Configurable chunks processed per tick (default: 1)
- Limits chunk loading speed to prevent server lag spikes
- Pathfinding Optimization: Configurable pathfinding timeout reduction (default: 50%)
- Reduces CPU usage from entity pathfinding calculations
- Reset to Defaults Button: One-click reset in settings GUI to restore all defaults
- Optimization Metrics: Track performance impact of enabled optimizations
- UI Redesign: Complete settings UI overhaul following Hytale design patterns
- Organized into logical sections with color-coded headers
- Fixed position elements (reset button at bottom)
- Removed missing texture references that caused red backgrounds
- Improved layout with proper scrolling sections
- Slider Values Fixed: Corrected property type from
.Textto.Valuefor numeric sliders - Improved transformer base class: Better error handling and logging
- Fixed slider value setting error (now uses correct
.Valueproperty) - Fixed red background in UI sections (removed missing texture reference)
- Fixed reset button position (now at fixed bottom position, not scrolling)
- Fixed checkbox value binding in settings UI
- Hyxin Compatibility: Full support for the Hyxin Mixin framework
- Added Mixin classes (
BlockModuleMixin,BlockTickPluginMixin,FluidPluginMixin) - Added
catalyst.mixins.jsonconfiguration - Works seamlessly alongside ASM transformers
- Added Mixin classes (
- Dual-mode operation: Catalyst now works both standalone (ASM) and with Hyxin (Mixin)
- Java 21 target: Downgraded from Java 25 to Java 21 for broader compatibility
- ASM relocation: Bundled ASM classes relocated to
com.criticalrange.asmto prevent classloader conflicts with Hyxin - Build system: Migrated to Shadow plugin for proper dependency shading
- Fixed typo in settings UI ("CATALYT" -> "CATALYST")
- Resolved ASM version conflicts when running alongside Hyxin
- Core bytecode transformation system using ASM
- Lazy Block Entity Loading: Defers
BlockModule.onChunkPreLoadProcessEnsureBlockEntity()calls - Lazy Block Tick Discovery: Defers
BlockTickPlugin.discoverTickingBlocks()calls - Lazy Fluid Processing: Defers
FluidPlugin.onChunkPreProcess()calls - In-game settings GUI for toggling optimizations
/catalystcommand for runtime configuration- Early plugin architecture for Hytale server integration