-
Instrument and MusicalStorage use spam causes crash with the holder being null because the tick check doesn't get there in time.
-
Rewrite LidAnimator step() through interface injection using renderStep() + let it be clientside.
-
Test and implement midi direct online stream use case.
-
Bring back sound null check.
-
Don't spam direct stream status message on midi stream.
-
Fix particles not being enabled when switching states while listening MIDI.
-
Update gradle files and configs using a template.
-
Stop using kts gradle files.
-
Rename mixins package to mixin.
-
Fix server commands not being enabled as entrypoints.
-
Isolate particles varible of Instrument.Companion.ActionParticles whenever is needed as private instead of public anywhere.
-
Use LoggerFactory instead of LogManager for the mod's logger.
-
Fix missing translations in Spanish due to transition.
-
Set mixins to Java 17.
-
Change ClientWorldMixin to client mixin.
I'm adding a 1 to the version tags because it just doesn't look right to me. v4 is already a lot.
-
Learnt and removed that you can check the source code and remove nullable parameters when you override methods.
-
MusicPlayerBlock rewrite to not depend on clientside block because it unloads. Now everything relies on the MusicPlayer class and it connects between the block and the block entity.
-
Fix for proper redstone behaviour (AwfulRanger).
-
Add repeat mode behaviour to use short sounds to link using redstone on your own custom machines!
-
Add all blocks to be compatible with the block entity ticker to test behaviour on mods that move blocks. Only tested using carpet mod + pistons.
-
Rename sync functions and names to listen / listening.
-
Remove CanBeMuted interface from the music player block and use the listen button as a single interaction for that.
-
Link block entity and music player objects using a hash.
-
Remove music players on block entity markRemoved()
-
Use the block state in isPlaying() / setPlaying() to get / set the playing state. Remove isPlaying variable.
-
MusicPlayerEntity spawning checks and fixes.
-
Fix some missing translations.
-
Add MusicPlayerEntity setPos() to offset on the center of the block.
-
Add ExternalSound check if it's a valid sound source.
-
Add statusMessage() to MusicPlayer to know the state of the music player in console.
-
Add sendPause() to network pausing from client to clients.
-
Add sendAction() to MusicPlayerBlockEntity to network actions from server to clients.
-
Remove music players when the server markRemoves the block entity.
-
MusicPlayerReceiver now relies on the music player instead of the block entity.
-
Players interacting with the music player block will be forced to listen.
-
Add repeat mode button to the music player screen.
-
Hide slider on midi when the player is not the former floppy owner.
-
isMuted now checks special case on MusicPlayerEntity and if the user is listening to the block entity.
-
Add checkHolder() to GenericReceiver to check if the stack holder changed related to the receiver entity.
-
Fix midi channel recording starting at index 1 instead of 0.
-
Reset floppy rate and volume on write.
-
Set bow use action animation to instruments.
-
Add shouldUse() method to handle if there's two instruments in both hands.
-
Fix on clean electric guitar ability using shouldUse().
-
Don't fade out external sound if music player is on repeat mode.
-
Register separate networking receivers for the music player instruments.
-
Fix music player not working if midi host player playing was out of range of the block.
-
Fix timers concurrent exception by setting a state and removing them later.
-
Add ClientWorldMixin to fix midi player playing not pausing when disconnecting.
-
Set Fuel registry apart.
-
Rewrite tips.
-
Fix music player having wrong redstone interaction.
-
Set the music player entity position to the block pos if it's different. Better test this with mods.
-
Fix music player playing state not being off on initial world load.
-
Fix timers being duplicated on threads having weird effects on singleplayer.
-
Add world nullity handlers again to the music player particles functions because of the timers.
-
world() to return ClientWorld? to do elvis operator easy.
-
New instruments, textures, sounds and recipes.
-
Change the sound files namings to use a common file pattern.
-
Recipes checked and changed.
-
Fix issue when tracking stack block pos on music player getting the wrong stack and networking null nbt.
-
Temporal fix for the digital console having sounds cut off. Fix based on what it was on older updates.
-
Add PlayCompletely and NoFading interfaces for different sound results.
-
Force the instruments screen sequence field always be uppercase.
-
Fix for classes all on uppercase on ModID interface.
-
Format JSONs.
-
Sort sounds and textures folders and it's json identifiers according to the instrument types.
-
Replace many old instrument textures.
-
Floppy focusing was annoying.
-
Add inventoryAsList method.
-
NBT can now be looked up by ID too, if there's no hand or slot tracker.
-
Floppy will only close non-pausing screen handlers when reading the title.
-
Add NBT.id() to shortcut getting the id.
-
Fix MusicPlayerBlockEntity inventory not saving stacks.
-
Remove debug_mode because it wasn't really being used.
-
Add velocity modifier to SimpleNoteParticle.
-
Fix audio_quality 0 being invalid.
-
Music particles command and config.
-
Tick timer implementation to schedule using tick events. java.util.Timer can cause crashes.
-
Move the projectile if the stack is off hand.
v1.3.0.5
- Add OkHttp and MP3SPI dependencies.
- Sort project into more modules because it evolves.
- Remove FabricSoundInstance and interface injection since it has been merged to Fabric.
- Use getPossibleEntries vanilla method on EnchantmentHelperMixin, trying to keep it as default as possible.
- Check names and comments.
- Learnt how to properly create entities and spawn them.
- Optimization of the instruments sounds built into a new system.
- Redefine youtube-dl wrapper classes to fix bugs on queries.
- Fix MIDI in-game recording creation. It's not perfect but it works.
- Lots of bug fixes.
- Use sound events for simple sounds and only use SoundInstances stuff for more complex inputs like InstrumentSound.
- Add music player particles system.
- Add music player funny interaction.
- Properly create and initialize MusicPlayerBlockEntity and it's entity.
- Add feature to stream direct audio sources. Not all of them work tho.
- Add music player playing state.
- Change textures to fit 16x16 default.
- Add music player state messages.
- Check warnings and user messages.
- Thinking with hoppers / insert / extract actions is still experimental.
- Rewrite MIDI receivers.
- Check and rewrite slot click action code on every screen.
- Rewrite mod tips command.
- Use ModID interface to apply easy mod identification everywhere using class names.
- Implement Trackable interface to track data into the stack's nbt.
- Disable NBT update animation for all modded items.
- Rewrite DigitalConsoleScreen system. It was too messy.
- All modded items that have menus can only open the menu if there is no item in the other hand. In the case of the instrument, it will open if the player doesn't have instruments on both hands.
- Add server network receiver to close the player current screen handler.
- Sort the instruments screen elements and add a copy to clipboard button.
- Move Ranged enchantment to uncommon instead of rare.
- Fix instruments actions while on both hands at the same time.
- Rework the mod's particles system.
- Add new impact particles.
- Sort keybindings system.
- Sort music theory data.
- Start writing objects a little more to avoid clogging.
- Rewrite a special server receiver.
- Rework projectile movement.
Happy 1st anniversary -🎺
-
Networking reworked
-
Implemented ffmpeg and yt-dlp functionality
-
Added MusicPlayer to read short streams and midi files
-
Implemented sound system mixin for streams, tweaked the former sound structure and added a class for streams
-
Changed networking identifiers
-
Players and blocks can be muted
-
Implemented configuration and commands system
-
Added FloppyDisk item that contains stream / midi data
-
Implemented functionality with redstone and hoppers for MusicPlayer
-
Added music streams range
-
Added screens for FloppyDisk and MusicPlayer, and many sliders or buttons for user.
-
Added vanilla enchantments and 1 enchantment for Instruments
-
Experimental redstone trace
-
Renamed mixins classes and methods for debugging
-
Added MusicalStorage to store the mod stacks
-
MusicalStorage reads midi input too
-
MusicalStorage networking and rendering
-
Write config when crashing or exitting through CrashReportMixin
-
Players can now force attacks while sneaking using instruments
-
Do media queries through coroutines
-
Keep track of unnamed floppies to update their query (when dropped, put in another inventory) - Player and FloppyInterrupt mixin classes
-
Stop instruments from playing sounds through ClientPlayer mixin class
-
Created new classes based off the implementation of a youtubedl-java wrapper
-
Created musical projectiles
-
Screwdriver?
-
Implemented MusicPlayerReceiver that can play midi for MusicPlayer
-
File restriction implementation
-
Custom inventories implementation
-
Digital Console and it's screens that can play using game inputs and also record simple midi
-
Reworked the stacks damage logic and quantity
-
Implemented particles and their events
-
Added recipes for the new stuff
-
Registered inputs for Digital Console
-
Added resources and images for the new stuff
-
Screen handlers not being registered on server due to kotlin companion object behaviour
-
New files structure / architecture
-
Many bug fixes!
-
Limit to short messages for midi
-
MusicPlayerBlock world.getEntityBlock() fix
-
Remove BlockEntityProvider
-
Fixed issue trying to create config and files due to not creating directories with mkdirs() instead of mkdir()
-
Instrument static method to handle mob sounds and register a new handler for that - Fix for MobTick.java and MobInstrumentAttack.java mixins
-
Added max radius and ticks ahead values for the handler on server and to not clog the network
-
Configs getting separated for real (server / client) - server config will always be there
-
Fix configs not being overwritten by user
-
Use in-game input path instead of internal path that can cause problems in different OS - FileImpl.kt
-
Non mod dependencies were not being put in the build, they had to be set as include( implementation(...) )
-
Add max download length client config setting for streams
-
Error handling for the OS not having a default sequencer on the system and deny features in that case.
-
Verify max_length if modified externally
-
Check with containsKey for missing properties
-
Add OS env variables to be compatible with the config paths
-
Linux is my friend
-
Add Enviroment annotations
-
Adding spaces, names and ordering stuff to be more readable (?)
-
forceAttack doesn't need the hand parameter anymore
-
Add verify annotations with reasons to check
-
More comments and descriptions
-
Use the JvmField annotations for the config maps
-
More MIDI sequencer error handling
-
Add spanish translation and translatable texts
-
Split receivers into two different classes inherit from a main receiver
-
Create more kotlin files to separate Utility.kt - Entity.kt, Item.kt, Screen.kt, etc...
-
Mute music player fix
-
ffmpeg args not being reset (fixed by creating a new builder instead)
-
Change mute particle offset vector
-
Configs on the minecraft config folder
-
Buttons wrong scaling
-
MIDI Device playing particles adjusted