Minetunes Changelog, Updated March 21, 2013 Version 3.1 - Added MIDI Files to BookTunes - Added "Import MIDI to Book" Gui - To play a midi from a book, either - Hold it and press Ctrl+B - Play it with the SignTune "Book" keyword - Fixed MIDI files not playing with the custom SoundFont Version 3.0 - Updated to Minecraft 1.5 - Skipped 1.0 & 2.0 to avoid confusion with Minecraft versions 3.0.01: - Made with Non-Preview MCP - Fixed PlayLast songs not playing if >1 song queued up 3.0.02: - Fixed PlayMIDI - Added support for .midi extension, as well as .mid March 10, 2013: 0.9.12.00 - Added sign-shovelling particle effect - Added keyword: Book - Plays any books in adjacent item frames - Fixed auto-update null pointer if you have no /.minecraft/mods/ folder - Fixed booktunes giving errors whenever played March 7, 2013: 0.9.11.00 - New BUG: PlayMIDI doesn't work. :( - We're full disclosure on this here changelog, yessir - Repeat and Pattern are now identical - Can be on any line - Handle keywords - Added button icons - Cleaned up Sign Editors - Fixed SFXInst not affecting first note of a SignTune - Fixed Sign Editor framerates - Fixed proximity signs playing when SignTunes are turned off March 1, 2013: 0.9.10.07 - Updated various GUIs - Main menu, settings - Added Help slideshows - BlockTunes: - Added Jungle instrument set - Added "Minetunes" button to Minecraft's Options menu - Added "Signs" button to Minecraft's Graphics menu - These now appear any time the menus are opened - New Keyword: [SignTune] - Duplicates [Ditty]: Put on a sign attached to a noteblock to make the noteblock play the sign - Tweaked faces February 24, 2013: 0.9.10.06 - Renamed MCDitty to MineTunes - Default MineTunes menu key is Ctrl+I - Won't change if you're updating from MCDitty - Added Forge compatability - Place MineTunes zip into /mods/ folder - Added sign counter to MineTunes Graphics menu - Added creepy faces (see demos) - Fixed black signs having black text - Fixed backwards Ctrl+S chat messages (said on; errors were turned off) - Fixed MineTunes not working on second or third world opening - Fixed occasional exception in NullItemEntityRemover February 18, 2013: Version 0.9.9.06 - Added notice that MCDitty will be renamed for version 1.0 February 16, 2013: Version 0.9.9.05 - Added BlockTunes - A rectangle with 3 noteblocks and 1 jukebox as corners - Attach an on/off lever to the jukebox - Attach a sign to the jukebox for some stats - Place certain blocks inside to add notes - Notes are on the Pentatonic Scale - Default Instruments are Marimba, Bass, Saxophone, and Piano - Fixed singleplayer Netherrack and Endstone noteblocks - "SFXInst" now autocorrects to "SFXInst2" in sign gui - Bug fixes - Fixed Vanilla Minecraft bug MC-2711 (empty jukeboxes ejecting null item) January 20, 2013: Version 0.9.9.04 - Added high and low noteblocks - Put netherrack or endstone next to the block under a noteblock - Each block adjusts the pitch one octave - Noteblocks now have a range of 6 octaves - Found correct pitches of percussion noteblocks - NOTE: REVERT TO 0.9.9.02 IF YOU HAVE LAGGING ISSUES. January 16, 2013: Version 0.9.9.02 - Added Keywords: MaxPlays, PlayLast, Firework - Ctrl+O (Turn off MCDitty) can now additionally turn off noteblock signs and noteblocks - If there are only a few signs around, they always render at full quality - Fixed keywords in patterns only happening on the last repetition - Fixed null pointers from "TileEntitySkullRenderer2" (an unused test left in) - Updated keyword help - Fixed Proximity sign crash January 12, 2013: Version 0.9.9.01 - Sign ditties now start more instantly; long ones don't stall out game - Tuning noteblocks no longer activates attached signs repeatedly - Fixed myriad 0.9.9 bugs January 11, 2013: Version 0.9.9 - Added Noteblock Tuner screen - Open by looking at noteblock and pressing Shift+W - Added Noteblock Lyrics - Put a sign on a noteblock; color codes use &f, etc. - Added Noteblock-Triggered Sign Ditties - Start a sign with [Ditty]; attach to a noteblock - Replaces redstone-activated signs in single player - Noteblock Tooltips now appear when you look at noteblock - Can be seen from farther - Adjusted SFXInst pitches for notebass and notehihat - Also adjusted noteblock tooltips - Faster sign ditty playing January 8, 2013: Version 0.9.8.03 - Noteblocks show what note they're set to - Can break signs while crouching without starting music - Fixed SFXInst2 noteblock pitches (they were an octave too low) - Fixed mute keyword muting its own ditty - Changed Emitter particle "mad" to "face" (It's a grumpy villager face) December 20, 2012: Version 0.9.8.02 for Minecraft 1.4.6 THANKS to Gsiz for inspiring this version! - "Turn Off MCDitty" key (Ctrl+O) - MCDitty will not start ditties while off - New Tool: Axe - Breaks signs without starting ditties December 6, 2012: Version 0.9.8.01 - Added Keywords: Octaves, Accel, Tran - Plays melodys at octaves, accelerates tempo, and transposes, respectively. - Added Keyword: Patt - One-line Patterns - Added Keyword: PreLyric - Puts a prefix on lyrics (ex. ) November 21, 2012: Version 0.9.7.05 - Added 17 New Particles to Emitters - Added Minecraft 1.4 SFX - Added Keyword: SFXInst2 - Uses 1.4 sound effects - SFXInst still uses the old SFX - The tag in books now has a "source=0" or "source=1" attribute. - 0 is the Alpha to 1.3 SFX - 1 is the 1.4 SFX - SFX Keyword uses 1.4 Minecraft sound effects - Fixed all "out-of-order" SFX - Improved many SFXInst2 default tunings November 13, 2012: Version 0.9.7.03 / 04 for Minecraft 1.4.4 - Updated to Minecraft 1.4.4 - New Keywords: Staccato / StaccatoOff - Applies a staccato effect to the current voice - Bug fixes in single player October 29, 2012: Version 0.9.7.02 for Minecraft 1.4.2 - Fixed signs blinking and erasing after editing in SSP - Again - Fixed a spelling error in the SoundFont Menu - Clarified button names in the MCDitty Menu October 26, 2012: Version 0.9.7.01 for Minecraft 1.4.2 - Fixed tuplet notes - Were too short, caused sync issues - Written in sheet music as notes with a little "3" or other number over them - Written in MusicStrings as either Ci* (for a triplet) or explicitly as Ci*2:3 (also a triplet in this case) - Tinted signs - Tint signs any of 15 colors. - Puts a color code (%6 etc.) on the 3rd line of the sign - Emitters - Added "stream" option - Emits particles for entire lengths of notes October 23-24, 2012: Version 0.9.7.00 for Minecraft 1.4.0, 1.4.2 - Added custom SoundFont instrument support - Files ending in .sf2 are supported - Can toggle between SoundFont instruments and the default - Added Ditty Books - Music is stored in one or more writable books, in XML. - Supports ditties spread over multiple held books. - See MCDittyLand 0.9.7 for a tutorial book on all the features implemented so far. - Press "Ctrl+B" while holding a book to play it - Added import and export to file buttons to book editor. - Fixed Ctrl key shortcuts not working with Mac OSX Metakeys. - Fixed menus not appearing and the MCDitty button disappearing from the options menu in worlds with no signs. Sad worlds. - Fixed the letters "ad" being output to the console every time a ditty has an error (debug feature left in) - Also got rid of disco floor messages - Fixed crash when opening the Sound Test (ironically) with no saved MIDI files - Fixed autoupdater copying MCDitty source files and licenses into minecraft.jar - Put all source files into a .zip file inside the mod's .zip October 10, 2012: Version 0.9.6.03 - Fixed Java 6 compatibility issue introduced in 0.9.6.02 October 9, 2012: Version 0.9.6.02 NOTICE: THIS UPDATE ONLY WORKS WITH JAVA 7. DO NOT UPDATE IF YOU HAVE JAVA 6 or below! Fix is in progress... - You can undo an auto-update by replacing "minecraft.jar" with "minecraft.mcdittybackup.jar" in your ".minecraft" folder. - Reduced mod loading time at game load/login significantly (by over 8 sec on my 2.5Ghz laptop w/4GB RAM) - Added "Silent Mode" (Ctrl+S): clicking a sign (such as a sign shop on a server) never shows errors in chat or by blinking the sign - Added particles when you start a ditty and smoke when there is an error - Made the "Ctrl" parts of key commands customizable in the Keyboard Settings - Cleaned up the Settings Menu and the Keyboard Menu - Fixed the sign highlight color slider in the settings menu to remember its position - Fixed signs blinking or disappearing in the sign editor - Fixed the contextual help for SFXInst in the sign editor displaying incorrect default tunings for multiples of a SFX October 5, 2012: Version 0.9.6.01 - Added Keyword: SFXInst - Replaces an instrument's normal sound with a Minecraft sound effect. - Example sign: SFXInst 100 NotePiano F#3 Cmaj I100 Cmaj - Plays a chord on the midi piano, then with the note block piano effect - 100 is the instrument that will be replaced by the sound effect TODO: (Defaults to the current) - NotePiano is the name of the Minecraft SFX to use - If sound effect does not exist, silence is used instead - If using a SFX like "skeleton", you add a number to the end to specify a particular "skeleton" sound of the random clatters that Minecraft chooses from (e.g. skeleton1, skeleton2, skeleton3). - If a number is not added to the end of the name, the first sound effect is used (e.g. 'meow' results in meow1.ogg being used). - If a number is added, and the sound effect does not exist, the 1st sound effect is used. (e.g. bark9 results in bark1 being used anyway) - F#3 is the "original pitch" of the sound effect: the sound will be played higher on higher notes, and lower on lower. - Optional; a default tuning is provided for some SFX. - The tuning note is unaffected by key signature tokens that came before - Numbers also work: in semitones; C5 = 60. - Added Keyword: SFXInstOff - Turns off an SFX instrument - Added new SFX from noteblocks: bass, hihat, drum, snare, piano, pling - Also: notebass, notehihat, notedrum, notesnare, notepiano, notepling - "pling" is never used in the game; it is a clearer, louder version of "piano". - Removed SFX: - piston1, piston2 (pistonIn and pistonOut already exist) - magma1, magma2 - Replaced SFX: - MagmaSmall ---> MagmaTiny (Fewer letters) - Added option to always play MCDitty music at full volume - Added PlayMidi context help to sign editor (with a list of matching midi files) - Fixed lyrics and particles "building up" when you are in a GUI and all being "released" at once when the gui is closed. - Hopefully fixed multiple MCDittyUpdateTickHookEntities existing after one or more becomes inactive. - Fixed a potential crash bug where an error downloading MCDittyLand's version in the MCDittyLand GUI feeds the error message into CompareVersions - Fixed SFX effects zombieDie and skeleDie. September 18, 2012: Version 0.9.6 for Minecraft 1.3.2 - Added MCDittyLand, an example world with a tiny floating castle - Has a screen in the MCDitty Menu - Can be downloaded, updated, and reset if you enjoy burning all the wool. (Like me). - Added Keyword: "Emitter" - Usage: Emitter [Particle Type] - Following lines contain options - Shoots particles on each note played. Can be limited by voice, shoot differnt types of particles, etc. - Will be expanded greatly in the future: stay tuned for fireworks. - Added Keyword: "GoTo" - Usage: GoTo [Label] - Label is the text of a comment on the sign you want to jump to - Easier than using "In 6, Left 4, Up 5" - Example: - 1st sign: "#Badger / E Ri G Ri A" - 2nd sign, far away: "Pattern 6 / GoTo #Badger" - Added Keyword: "SaveMidi" - Replaces "Midi" - Added Keyword: "PlayMidi" - Plays a midi file in the MCDitty midi folder - No guarantee it will sync properly with the rest of the ditty - BUG: Does not respect Minecraft volume like ditties do - Tweaked how ends of lines of signs are handled: - OLD: Ditty flowed to the sign below the FIRST sign in a line. - NEW: Ditty flows to the FIRST SIGN IN THE LEFTMOST LINE BELOW THE CURRENT LINE. - Specificly, the leftmost sign in the leftmost row of signs facing the same way below and adjacent to the current row. - This may break some old ditties which rely on the old, stricter newline system. - Added a Sound Test screen - Accessible from MCDitty menu - Tests all SFX keyword sound effects - Plays a short MusicString sample - Plays midis from the /.minecraft/mcditty/midi/ folder - Added "picking" signs for testing with a pickaxe - Lets you test individual signs in the middle of a song without playing others. - To use: - Right click a sign to pick or unpick it - Click a picked sign with something else to play it - Click any other block holding a pick to clear your picked signs. - Sign editor no longer treats the second lines of the following keywords as MusicStrings: - PlayMIDI, MIDI, SaveMIDI, Emitter, and Lyric - Sign editor warns you if put a 'pattern', 'midi', 'emitter', 'playmidi', or 'savemidi' keyword after the first line of a sign - Sign editor warns you if you put a keyword beneath a Repeat keyword - Fixed sign editor highlighting a perfectly good line of tokens red if there was a double-space between tokens. - Fixed the sign editor "remembering" things like key changes and constants, causing weird readouts in the "Equivalant to:" note token help display. - Moved the keyword error message at the bottom of the sign editor from underneath the help mode button. - Ctrl+Left and Ctrl+Right now also move by notes in a chord, as well as by words - The "Open MIDI Folder" button in the MCDitty menu works under Mac OSX. - Added "Fast Signs" rendering: limits sign rendering, speeding up the game if there are a large number of signs around. - SFX Keyword sounds now respect Volume keyword - Wall signs appear to shrink when damaged by the player, like signposts - Fixed warped background on text displays in the Sign Editor, its guide, the changelog, and other screens. - Added EXPERIMENTAL keyword: Disco - Follow with voices to pulse to - Place on any flat, horizontal wool surface. - May cause light lag. - WILL CHANGE DRASTICALLY IN FUTURE VERSIONS!!! September 6, 2012: Version 0.9.5.11, 12, and 13 - Added a show no errors option - Added a list of tokens that disqualify a ditty as a valid ditty (for sign shops, iConomy, etc.) - MCDitty version numbers in the upper left corner of MCDitty GUIs are clickable and show if version is outdated - Changelog is now shown in-game, instead of in a text editor - Shifted locations of buttons in settings menu 0.9.5.12 fixes not detecting no play tokens if there is a color code in front 0.9.5.13 fixes auto-update not working due to closing a zip file too early August 23, 2012: Version 0.9.5.10 - Fixed an occasional ConcurrentModification crash when loading a new part of a world with many signs. (Especially after using /tp or /warp on a server) - Added basic sign breaking visual effects August 20 2012: Version 0.9.5.09 for Minecraft 1.3.2 - Fixed the Sinister SSP Blank Sign Switcheroo that was introduced in MC 1.3. - Thanks to rennan24 for pointing out the solution. August 16 2012: Version 0.9.5.08 for Minecraft 1.3.2 - Updated to 1.3.2 August 9 2012: Version 0.9.5.07 - Fixed all Areas / ProxPads / Proximity signs pointing north and west being off by one block in front of or behind the sign - Added rudimentary contextual help for MusicStrings - Added error highlighting in sign editor for MusicStrings - Added sign recall button to sign editor - Added clear text button to sign editor - Added an assortment of other functionality to sign editor - Changed the key command of "recall a previous sign from the same location" in the sign editor from Ctrl+E to Ctrl+R - Made MCDitty's "Not-A-Ditty" detector very slightly more sensitive (still pretty awful) - Added scrollwheel support to the sign editor help area - Possible tiny performance increases when starting a ditty. August 8 2012: Version 0.9.5.06 - Fixed clicking out of a menu that isn't the sign editor activating the sign you were looking at when the menu was opened - Fixed Sign Editor showing help for "area" when you type "proximity" - Fixed areas activating on both entry and exit - Fixed crash in sign editor: using Ctrl+E on a block with no previous sign - Bug: Proximity signs still don't work reliably. 0.9.5.05 for Minecraft 1.3.1 - Added a test sign button to the sign editor - Added a graphical background to text areas in sign editor - Added an optional message when you save a midi (enable in the settings menu) - New Keyword: Area - Same as ProxPad, but more intuitively named - Changed Keyword: Lyric - Trims extra spaces off of the end of a line, and ignores lines consisting entirely of spaces. - Still leaves excess spaces at the beginning of text (in case you want to indent, for example) - Hid keyword ProxPad (it still works, however). - Area is the exact same as proxpad, just with a shorter and clearer name. - Fixed midi saving... they now REALLY save to .minecraft/MCDitty/midi/ instead of .minecraft/midi/ - Fixed goto errors dropping a letter at the end of their description of the offending sign. 0.9.5.04 is a bugfix update, with one major change: - Lyrics now "cycle" after you play the last defined lyric - Example: You write the following signs: "Lyric A 1 / Hello!" "Lyric A 2 / I'm Billy!" "Repeat 5 / Ya" - Running this results in: "Hello!" "I'm Billy!" "Hello!" "I'm Billy!" "Hello!" - This makes repeating choruses using one lyric label much easier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0.9.5 is a quick port to Minecraft 1.3.1. I'm still finding and stomping bugs as fast as I can, but I've snuck in some fun changes too: - MCDitty now obeys the Minecraft Sounds volume - New Keyword: Volume [0 to 100]: Sets the current voice to the given percent volume. - There's a MCDitty button in the Minecraft Options Menu - Midis are now saved to .minecraft/MCDitty/midi - In the sign editor, Ctrl+E recalls the text of any signs that used to be in the block before this one. - The sign editor now tells you whether your gotos point at a sign, a block, or thin air. - Among others Minecraft 1.3.1 gives me the opportunity to add more fun to MCDitty: dancers, actors, disco floors, and sheet music in writable books. Get ready! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0.9.3 is several things: a marked performance increase (multithreading and better tile entity interaction), an overhaul to the sign editor (including help and a keyword guide), and a visual breakthrough (particles and live sign highlighting). It is also some smaller things: Minecraft sounds with the SFX keyword, better proximity activation with the ProxPad keyword, and the addition of inline color codes in lyrics. MCDitty is at a point where it might begin to work well in adventure maps... In the end, I hope it makes the mod more fun! 0.9.3.01 Fixes a single bug in the sign editor, where opening the guide sent the SMP "change text" signal pre-emtively. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0.9.2 adds a few minor keywords and overhauls how resets work: resets now do not cause a pause in the music. Also, Ctrl+ Place Sign places a blank sign in one click: very handy in any sitution. In 0.9.2.01, Lyrics have finally come into their own at last, in perfect sync with music of any complexity. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MCDitty 0.9 is here at last! One step away from 1.0, the features and polish are piling on. Highlights include the ability to add karaoke style lyrics to your ditties, a GUI (press Ctrl+D) to change settings in-game, better sign editing and copying (try clicking a sign with a shovel), and best of all, a fast and reliable mute key (Ctrl+M). Have fun! P.S: 0.9.1 Features auto-updating; the coolest thing since noteblocks in my opinion. And a little polish on the side. 0.9.1.1 Fixes a bug with pattern keywords on the first sign of a song, and adds lyric colors. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Changelog: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ June 27 - July 3 2012: Version 0.9.3.00 - Improved sign particles - Now display as notes play - Added live sign highlighting - Custom color in settings - Made sign reader multithreaded - Removed all concept of a TileEntityMCDittySign -- modified base class TileEntitySign to have all functions. - Large performance improvements ensued due to not tampering with TileEntities in the world. - Fixed crash caused by quickly moving away from and back towards (as by /warp or /tp - ing in SMP) signs activated in MCDitty. - SUGGESTION by a FRIEND: New Keyword: SFX [name] plays a given Minecraft sound effect - Like a note, but it has no "length" like a normal note. - Really cool when combined with lyrics. - New Keyword: ProxPad [width] [depth] [optional height]: If a player walks into the area of a ProxPad sign, the sign starts. Like proximity, but less clumsy. - Keyword Tweak: Lyric - Put color codes in the text like this: "&eEponine:&r One more day all on my own..." - (The word Eponine is yellow) - Sign Editor Overhaul: - Changed sign editor end of line sound to a MC sound effect - Added a caret/cursor to the sign editor - Move with the left and right arrow keys - Added delete, home, end, and insert key commands - Works (almost) like a normal text field - Included lots of standard Windows tricks: - Ctrl + L/R Arrow moves by whole words - Ctrl + Home/End warps to top and bottom corners of sign - Ctrl + Backspace removes whole words - Shift Up and Down rearrange lines - Temporarily removed sign import, sign export, open sign folder, and clear sign buffer buttons - Will be moved into a new gui of their own - Added context-sensitive help for keywords to sign editor - Added keyword and comment highlighting to the sign editor - Added sign editor guide - Added a mode button - MCDitty Mode: Shows the keyword help area, highlights keywords, and displays any keyword notes at the bottom of the screen. - Normal Mode: Like a normal MC sign editor, but with better text editing left in place. - InvisiMode: Peek at the world or other signs, then go back to another mode and continue writing. - Bug: Sometimes signs do not become un-highlighted, or de-highlight early - Associated with voice and layer changes on a sign, especially with the "syncwith" keyword on it - Cause: Highlight on and highlight off cues get mixed up - Solution: ID sign hightlight calls - Bug: Opening the sign editor guide for a few seconds and returning to the sign editor causes the multiplayer "text updated" packet to be sent prematurely: anything you write after closing the guide will not be put on the sign. - Easy to fix. June 26 2012: Updated to Version 0.9.2.01 - Fixed, once and for all, all lyric sync issues. (Hopefully ;) ) - Removed Alt+Place Sign placing a "Rw" sign. - Fixed the ultra-fast cutoff at the end of a song June 25 2012: Updated to Version 0.9.2.00 - Removed the custom end of line ding; replaced with a Windows (or default OS) beep - Custom beep had terrible, terrible performance! - Removed corresponding setting in settings gui - Relabeled all buttons in settings gui to be clearer - Recolored buttons in keyboard gui to be more legible - Keyword RESET improved: - No longer plays multiple musicstrings in sequence; rather, simulates the effects of doing such within the musicstring - Uses SyncVoices - Fixed performance issue: used to print all particle locations in a song to stdout. - New Keyword: SyncVoices - Aligns all voices and layers so that their next notes are all played in unison again next note, like at the start of a ditty. - New Keyword: SyncWith - Aligns the current voice and layer's current time with the given voice and layer's - Like SyncVoices, but more specific - Usage: SyncWith (Voice #) (Optional Layer #) - Examples: SyncWith 0, SyncWith 2 3 - Sign editor shows number of letters left on current line - Placing a sign while holding Ctrl places a blank sign - Placing a sign while cholding Alt places a "Rw" sign. - NEW BUG: Lyrics lag after a number of tempo changes (even 3 or 4). June 22 2012: Updated to Version 0.9.1.01 NEW FEATURES: - Colors with the LYRIC keyword now added: See new features in 0.9.0 for the details. - Note: Repetition and the color code can be in any order: LYRIC Name 3 &f and LYRIC Name &f 3 are both valid. FIXES: - If you put a pattern sign in the first sign of a ditty now, it will work properly. Before the keyword was completely ignored. June 19-21 2012: Updated to Version 0.9.1 NEW FEATURES - Auto updating: how much cooler does it get than that? - The sign editor dings to tell you you've hit the end of a line. - You can change the ding tune in the settings. 06-11-2012 - 06-18-2012: UPDATED TO 0.9.0 NEW FEATURES - MCDitty Now Requires ModLoader - Added a Mute Key (Ctrl+M by default) - Added a Settings Menu (Ctrl+D by default) - Can change settings, keys, and check for updates - New Keyword: OneAtATime: The Ditty must end before it can be started again. - New Keyword: IsDitty: Forces MCDitty to read a sign even if there are so many errors that MCDitty thinks a sign isn't a ditty. - New Keyword: LYRIC: Creates a new lyric = Arguments: LYRIC [lyric label] [repetition] [an '&' followed by a color code (&2, for example)] Example Sign: (The fourth time "YJavert" is hit in a song, show "Men like you can never change." --------------- LYRIC javert 4 Men like you can never ch- ange. --------------- - Colors don't currently work - To make longer lyrics, add another lyrics sign with the same label and repetition Example Signs: Long lyric --------------- LYRIC Valjean 4 You now have the dowry of the elect. It --------------- LYRIC Valjean 4 is thus that men are made angels. --------------- - Added a new MusicString token: Y[lyric label] - Example signs: --------------- Repeat 4 YMark C E G --------------- LYRIC Mark 2 Anything but that! --------------- LYRIC Mark 3 This is weird; very weird. --------------- - Merged Improved Sign Editor into MCDitty - All the old features are there, and several new ones - Use a shovel to save text on a sign ("scoop" it off) - ESC exits the sign editing screen (By popular demand) - Added a rudimentary way to Import and Export signs with text files - Keyword Tweak: Goto keywords (Up, Down, ect.) show an error if they point into the middle of nowhere. - Keyword Tweak: Proximity: Ditties started by proximity are automatically "OneAtATime" - JFugue Update: Added something called "Collected" notes - Example: (C+E+G)q instead of Cq+Eq+Gq - JFugue Update: Tuplets fixed (numerator and denominator had been swapped) - Lots of performance tweaks - Added a welcome message & achievements BUG FIXES: - Clicking and holding a sign no longer repeats the ditty - Especially affected slow computers - Fixed signs looking "sparkly" when they blink - "ParticlesEnabled" in the config file works again - Added hidden "debug" settings (in settings menu: type "debug") NEW BUGS: - Starting your first ditty is laggy (no clue why) - Lyrics don't all reset on "reset" keywords ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ OLD VERSIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 05-25-2012 - 06-02-2012: - Updating to version 0.8.6 New Features / Changes: - Improved error highlighting - Added infinite loop highlighting - Improved token error messages (added token in blue before the error text) - Added range check to tempo tokens; before they failed silently - Added some keyword and comment highlighting - Off by default: Turn it on in the config file - Now saves midis in a folder (.minecraft\midi\) - Clears old midi files of the same song if they exist Technical: - Updated JFugue to the latest as of the current date (A 4.1 SVN capture on May 25, 2012: SVN Revision 199). - Copied in files, replacing old ones from 0.8.5 - Added library to build: log4j - Removed MusicXML classes - Re-adding MCDitty's changes to library - Method (parseTokenStrict()) in MusicStringParser - It turns out that the range checks + exception throws I added in this class manually were added in the JFugue update, so I did not change any other methods. - Messages ect. in JFugueException - JFUGUE BUG (Fixed): In JFugueException (String, String, String), replaced all instances of '*' with "%s". - Replaced various "*"s lying around in messages with proper %s - Fixed messages to match old messages where applicable - Did the same in the new file, messages.properties - This did not fix Bug 11 - Refactored ridiculously overgrown code in playTune method. - Moved lots of code from main method to smaller methods - Changed carraige return code from top of sign read loop in single step increments - Put next to other "natural sign flow" methods, and made it work all at once, instead of running the sign read loop over and over. - Gave up refactoring playTune: removed, and rewrote the method into "PlayDittyFromSigns" and "ReadPattern" - Error checking, infinite loop detection, and patterns are built into the new code from the start - The new code has fewer ambiguous variables and statements - Created an official testing area in MC - Contains numbered, immutable tests that for the first time let me impartially test MCDitty's capabilities - Removed a "println" statement that added perceptibly to ditty processing time - Fixed bug in sign rendering: colored text is shifted as though the color codes are part of a string's length - Keyword Reset was changed, so that internally the word "reset" is added to the MusicString as a private token (~RESET : this doesn't confuse JFugue like "RESET" did). - Infinite loop timeout setting removed from config file (loop detection is now instant) - Changed midi saving to fix how it ignored resets: saves multiple midi files - Added mutex to midi saving, preventing most crashes related to saving midis 04-30-2012 to 05-03-2012: - Updating to Version 0.8.5: New Features/Changes: - Error checking and help: - Signs blink any lines of text MCDitty can't understand - Optionally (in the config file), the whole signs themselves can blink multi-colors for more visibility - Shows messages to player if a song being played has mistakes - Removed infinite loop dialog. Replaced it with a chat message. - Non-musical sign detection - Note particles do not appear & song isn't started if song is 0 notes long - Does not play song / emit particles if OVER HALF of a song is invalid tokens - Note: Counts repeated notes multiple times towards this figure. Bug? - Note: If a short song is too error-ridden, it look like a non-musical sign too. - Config file - Added new options (default setting in parenthesis) - OnlyOneParticleEmitted (false): only the first sign in a song shoots a note when it is clicked. - BlinkSignsTextureEnabled (false): if a sign has errors on it, blink the whole sign for a bit instead of just blinking the text - OnlyFirstErrorShown (true): if false, every single error in a song is shown on the chat at once. - SignBlinkMS (6000): time to blink signs (1000 = 1 second) - Will update an old version's config file automatically - Keyword Tweak: end and endline - No music or keywords after these keywords, on the same sign, will be played. - Ex: [A B C / end / Cmaj] will only play the notes at the beginning. - Keyword Tweak: pattern: - Anything can put on a pattern sign to be repeated. - Bug fixed: Empty pattern signs do not cause an infinite loop anymore. - Bug Fixed: Pattern keywords not on first line of sign now do not cause error - Keyword is simply ignored, and a message is shown on chat Technical: - Modified MusicStringParser and JFugueException extensively - Exception messages are more helpful and useful for MCDitty - Parser now tries to catch more errors more exactly (such as layer and voice tokens being out of range) - Added MusicString token parsing as song is processed - We are now basically aware what music is being read, as it's read - Added blink code to TileEntitySignRenderer - Signs with errors can blink - Lines of text with errors can blink - Lessened reliance on lineBeingEdited in the game's TileEntitySign (by making a new tile entity): - lineBeingEdited in a regular TileEntitySign is set to -100 if it has a TileEntityMCDittySign equivalent somewhere - Data that used to be stored here is now stored in a TileEntityMCDittySign - Regular TileEntitySigns can be replaced with this alternative as needed - Acts like a normal TileEntitySign - TODO: Break up playTuneFromSigns() into smaller methods that each do one thing. (I.E. Reorganize a bit) Known Bugs: - BUG 10: An empty "param" given to a JFugueException will result in a confusing error message, with a space where a word should be. - BUG 11: Starting a song with or without errors repeatedly over a short time causes any song played later, to make no sound - Fix: restart game. 04-15-2012: - Updating to Version 0.8: - Added Keyword: reset - Resets the JFugue player before playing anything after the keyword - Can be put anywhere in a line -- technically this treated as a musical token in MCDitty - BUG: CRASH: Muting a song with the reset keyword in it causes JVM crash - CHECK: Fixed? - Causes short pause on my computer -- on another computer it might cause a longer pause. - Added Keyword: oneline - Mashes all lines below this keyword into one unbroken line. - Preserves any spaces at the beginnings and ends of lines - Code Improvement: More try/catch blocks around calls to JFugue player (which threw exceptions that crashed the game) - Fixed Bug: Too many JFugue players beginning or muting ect. conflict and crash JVM - Added proper multithreading accommodations to JFuguePlayerThread (JFugue is not multithreaded naturally) - Especially in songs that have a reset, this bug may still exist; don't start a gazillion songs at once. - Added redstone activation; identical to noteblock's - Does not modify class: TileEntitySign (squeezed the redstone state flag into the preexisting field lineBeingEdited) - Only works in SSP - Visual Effect: Particles - Added Keyword: repeat - Repeats all MUSIC (music only) on lines below a default of 2 times - Argument: a number; number of repetitions - New object that does not activate tune on signs: wooden axe (for convenience with WorldEdit) - Added config file in the .minecraft folder: - Can turn off note particles with it, as well as change the infinite loop timeout settings - Fixed non right-angled signposts 04-09-2012: - Updating to Version 0.7.1: - Added a feature to make working with the SignEdit mod easier: - Clicking a sign while holding a shovel will not start a song - No other changes: all songs play the same as in 0.7 04-06-2012: - Updating to Version 0.7: - Removed loud sign receiver code (NetPacketHandler class now unnecessary once again for mod) - Changed keyword: loud: Keyword does nothing - Removed all code for chatting and receiving chats from loud signs and songs - Maintained backwards compatibility to 0.6; a loud keyword is ignored, but does not cause error - However, MCDitty 0.6 "McDiTtY:xx:xx:xx:" chats sent by other players will now show up as normal chats. - Removed undocumented keyword: halt (synonym for "end") - No backwards compatiblity maintained - Cleaned code, removing commented out functions - Changed keyword: pattern: - MUST CHECK: Any keywords and music are allowed on a pattern sign. Every line of the sign will be read on each repetition. - Keyword still must be on first line - NEW GLITCH: Pattern signs without gotos, only music, cause infinite loop - Changed keywords: left right up down in out: - Music & other keywords are allowed on sign - Changed keywords: "end" and "end line": - Music & other keywords are allowed on sign - Changed keyword: "mute" - Music & other keywords are allowed on sign - Note: Mute stops music immediately when read; not when music starts playing. - For ex. If placed in an infinite loop, music will stop as the infinite loop is read - UNchanged keyword: "proximity" - Turns out it always allowed music & other keywords on sign. Fixed comments in code stating otherwise. - Changed keyword: "midi" - Still must use first and second lines - Music and other keywords allowed on other lines 03-24-2012: - In a MCP Prelease #3: (Later made final) - Updated to MC 1.2.4 04-05-2012: - Updated to MC 1.2.5: again, no changes. 03-21-2012 - 3-23-2012: Version 0.6 Released (Minecraft 1.2.3) - Fixed memory leak: didn't close org.jfugue.player object after song is done playing - Trimmed excess spaces from read-in music - Removed glitch with signposts where if they weren't at a cardinal angle, they created infinite loop - NEW GLITCH: Signs at non-cardinal angles act as though they face north. - Added keyword: end line: instead of ending song or pattern, causes a "rewind" to beginning of line of signs and look down for the next line, in effect forcing the end of a line - Added keyword: mute: stops all playing music. If part of a larger song, makes other songs quiet before the new one plays. - Other keywords can be on sign BEFORE this keyword, but not after - Added keyword: proximity: if this sign's block is entered by the player, it starts the song the same way clicking on it does. Allows for gotos (Example text: proximity/up 6/right/in 16) and some other keywords (mute, end, and others), OR music on the sign. - Sign will only activate once -- to reset, enter another sign's block. - Added keyword: midi: (must be on first line) saves a midi file of this song with the filename specified on the second line into the .minecraft folder on your computer. - Only letters and numbers are allowed in the filename (prevents hacking). No spaces. Maximum length is 15 characters. A ".mid" is automatically added to the end. - Only the first midi sign in a song will be obeyed (prevents spamming). - No music or other keywords on the sign will be read - Overwrites any existing .mid file of the same name automatically. - Added keyword: loud: Broadcasts a chat to other players in SMP, which will cause them to hear the tune as well if they are nearby. - A tune with an infinite loop will not be chatted. - Music and other keywords can be on other lines of the sign with "loud" on it. - Fixed bug: "min" minor chords are seen as "in" goto keywords - Now using "startsWith" in leiu of "contains" to check a line for keywords - Fixed proximity signs: - Sign will now activate whenever a player enters its block - NEW GLITCH: The player being two blocks high, only the lower proximity sign will activate if two are entered at once 03-20-2012: Version 0.5 Released (Minecraft 1.2.3)