- Fixed dismount logic where players could not dismount from Pokemon that are perpetually flying.
- Some Pokemon, like Crobat, have behavior where they are always considered to be in a flying state and can never land. This created a problem when "common.canDismountInMidair" was false, however; players riding these Pokemon could never dismount, since the Pokemon's base behavior kept them from being grounded. The dismount logic has been updated such that, as long as the Pokemon's hitbox is within two blocks of height above solid ground, players can always dismount.
- An extra system message has been added, to alert dismounting players when they are not close enough to the ground.
- Fixed issue where dismounting could rarely cause a crash.
- Fixed issue where trying to mount a Pokemon that you're already riding causes a crash.
- Added workaround compat with the Dismount Entity mod. The mod uses the same binding as the interaction wheel for removing entities from one another, so attempts by a second player to climb into a Pokemon resulted in no interaction wheel appearing and no feedback otherwise. This has been fixed by ensuring that Dismount Entity will ignore Ride Pokemon.
- Reworked interaction wheel additions by this mod to make use of events instead of mixins. This should be safer and more in-line with expected implementation standards for the feature.
- As part of the rework, the interaction wheel options for riding will now only appear if the Pokemon has ride support. The "Remove saddle" option will only appear if the Pokemon has a saddle equipped.
- Updated default speed stat values, to help address some concerns related to greater speed post-Update 3. These will not reflect on existing servers, so it's recommended that you play with the config options to achieve the levels of speed you'd like to have.
- Added several debug-level messages for servers. Mounts and dismounts are now logged through the debug logger, to better troubleshoot any issues related to those steps in future incidents.
- Added debug controls for Ride Pokemon seating!
- A new option "client.useDebugKeys" has been added. Enabling this feature adds four new keys to the controls menu intended for seating utility.
- After mounting a Ride Pokemon, debug users can use the Mode Change key (default B) to swap which factors are affected by the Plus and Minus keys.
- The Plus and Minus keys (default Right and Left Arrows) can be used to change between seats in Change Seat mode, or to increase/decrease the X, Y or Z position of the player in all other modes. The player's adjusted offset is then printed to the client system chat for convenience.
- The Reset key (default Numpad 0) resets the debug and seat offsets for the user. These offsets are also automatically reset when the user dismounts the Pokemon.
- Changed backend logic to ignore sneaking state at the moment of mounting.
- Players were having issues mounting their Pokemon while using mods like InvMove or accessibility features that maintain sneaking state. Vanilla Minecraft logic prevents mounting if sneaking is active, so I have changed the method call such that the game now ignores sneaking state when mounting a Pokemon.
The Re-Mounted Update!
- Mounting and Dismounting Rework!
- Moved mounting-related actions to Cobblemon's built-in interaction wheel. Users must now Sneak and Interact with a Pokemon to mount it.
- Added three interaction wheels buttons: "Ride", "Eject passengers", and "Remove saddle".
- Added client messages that display if a player tries using any of the above actions unsuccessfully, e.g. trying to remove passengers from a Pokemon that has no passengers.
- A separate interaction wheel for players trying to mount Pokemon belonging to another player has been added.
- Minor adjustments to base Cobblemon logic, to fix minor issues with the interaction wheel GUI and to block item interactions that may trigger while opening the interaction wheel.
- The above changes also means that all items should work normally moving forward, since mounting will no longer conflict with their use on a Pokemon.
- Added configurable option to require saddles for mounting! This new option can be found in the server-level configuration under Restrictions.
- When enabled, players must first attach a saddle to a Pokemon before they can successfully mount it. Saddles can be easily attached to a Pokemon by right-clicking on it with a saddle. Players can reclaim saddles using the "Remove saddle" interaction wheel option.
- You cannot equip saddles to Pokemon you do not own or ones that do not have ride data.
- As an anti-frustration feature, players can remove saddles from Pokemon to which they have previously attached saddles in the event that datapack changes removes ride support for a Pokemon.
- Added a new "saddled" custom property to Cobblemon-related commands, e.g. "/pokeedit". Users with the right permissions can now set if a Pokemon is equipped with a saddle using these commands!
- Added a small blip to the Summary and PC screens which appears for Pokemon that have a saddle equipped. This is a small QOL to help owners track which of their Pokemon are currently saddled.
- Multi-seat riding!
- An "additionalSeats" attribute has been added to Pokemon data files, which takes a list of offset arrays. Each array added to the list is treated as a new seat, and there is no upper limit to how many seats can be added to a Pokemon.
- Current logic for resolving seating is that players can mount in a first-come, first-serve manner until there are no more empty seats. The Pokemon's owner get priority for the first seat; if there is no room when an owner tries to mount, the owner will take the first seat, all previous passengers will be bumped down a seat, and the last passenger will be ejected.
- Added a small blip to the Summary, PC and Pokedex screens that appears for Pokemon with two or more seats. Mousing over the blip renders a tooltip that reveals the seat capacity of the Pokemon.
- Dismount adjustments!
- The default keybinding for Dismount has been adjusted such that the key pressed in combination with Send Out Pokemon can be configured!
- Users can now set one of "SNEAK", "SPRINT", "ALT" (LAlt) or "NONE" to be held in combination with R for dismounting. This can be set with the new "client.dismountCombinationKey" config option. This was added to give users different options to use for the standard dismount action, especially where Sneak is tied to descending. If an invalid option is provided, it will default to "SNEAK".
- An optional dismount keybind has also been added as an alternative to the above. Binding this key will allow you to instead use the keybind for dismounting, while disabling the default combination option.
- Whichever option above is used, the client message that displays after mounting will update in accordance to the selected option and keybinds.
- Dismount logic has been adjusted such that riders can dismount regardless of whether the mount is their actively selected Pokemon or one belonging to another player. Recalling a Pokemon you are actively mounting is still disabled, but you can still send out and recall other Pokemon in your party without trouble.
- Dismount logic has also been rewritten such that dismounting activates on the positive edge of all keybind interactions. In the case of the default bind, this means dismounting triggers when you first press R while holding Sneak instead of when R is released. This is meant to make dismounting more consistent across all keybind options and aligns it better with how vanilla dismounting feels.
- Ghost sneaking has been fixed. Now when you dismount from a Pokemon, the player's sneaking state should be correctly unset to prevent any further post-dismount Interact problems.
- The default keybinding for Dismount has been adjusted such that the key pressed in combination with Send Out Pokemon can be configured!
- Moved mounting-related actions to Cobblemon's built-in interaction wheel. Users must now Sneak and Interact with a Pokemon to mount it.
- Third person support!
- Added client config options to allow for automatic switching to third-person and first-person cameras when mounting and dismounting respectively (both true by default).
- Added support for Better Third Person when mounted upon a Ride Pokemon.
- Config changes
- Speed scaling with stats has been updated with new options for what factors influence the speed. The factors can be changed by adjusting the value of the new "speedStat.speedSelection" option in the mod's configuration. The available options are listed below:
BASE_SPEED
: Base speed onlyBASE_NATURE
: Base speed and natureBASE_NATURE_VALUES
: Base speed, nature, IVs and EVs (the new default)TOTAL_SPEED
: Base speed, nature, IVs, EVs, and level (the previous default)
- A new Common subsection has been added to the mod's configuration file. This new subsection will include any options that can be set and used by the client, but which the server can override if desired.
- A new option "overrideClientCommonConfig" has been added to Restrictions. Servers can enable this option to override the client's common configuration options with their own.
- Moved "canDismountInMidair" into the Common subsection, so that servers - especially PvP ones - can regulate if players should collectively be allowed to dismount in midair.
- Removed max limits for various config options, such as speed modifiers and server-set speed limits. Please be responsible.
- Speed scaling with stats has been updated with new options for what factors influence the speed. The factors can be changed by adjusting the value of the new "speedStat.speedSelection" option in the mod's configuration. The available options are listed below:
- Pokemon data adjustments
- Added initial multi-ride support for multiple Pokemon.
- 2 seats: Rapidash (Normal and Galarian), Lapras, Wailmer, Metagross, Crustle, Bouffalant, Mudsdale, Corviknight and Cetitan
- 3 seats: Dondozo
- 4 seats: Avalugg
- 15 seats: Wailord
- Added ride support for Crobat and Gholdengo.
- Fixed seating position for Alolan Exeggutor. Riders will no longer find themselves stuck underground and suffocating if they try to mount one.
- Added initial multi-ride support for multiple Pokemon.
- Implicitly doubled flight speed in Ride Pokemon movement speed calculations. This is because flight physics are different from grounded physics, which has been leading to slower speeds in air even when multipliers between mediums have been the same. This implicit multiplier acts as a temporary fix until a better fix can be implemented.
- Removed the
no_mount_items
andno_mount_battle_items
tags, since the above changes remove the need to whitelist items during right clicks. - Removed Pet Your Cobblemon integrations, since the above changes remove the need to check for PYC's Interaction Mode prior to mounting.
- Updated project's Kotlin version to v2.0.21.
- Changed mounting behavior to allow players to mount with a non-empty hand once more, but with whitelisted item tags added to block mounting when specific items are held. This is a compromise to hopefully fix mounting issues introduced with the last patch, as well as to test a new means to allow for item interactions to bypass mounting logic. Items that should always be prioritized over mounting can be added to the
cobbleride:no_mount_items
tag via datapacks. Thecobbleride:no_mount_battle_items
tag has also been added, for items which should only block mounting interactions during battle. - Minor adjustment in server/client-sided logic for mounting, such that the player's rotations should now be set to those of the Pokemon on both sides during the mount.
"Sorry to keep you waiting."
- Fixed bug where loading a Pokedex where a Pokemon with multiple forms is listed - but where none of the currently visible forms are in that dex (e.g. if you had normal Exeggutor but not Alolan and tried to access the Alola dex) - would cause a crash.
- Fixed bug where certain mods would not work well with Ride On! due to improperly-coded network mixins. This primarily affected Mega Showdown. (Thanks to Yakat_Kaul, the dev of Mega Showdown, for helping debug this one.)
- Fixed bug where evolving a Pokemon would not correctly update its move behaviours. This would cause Pokemon that obtained rideability or whose ride behaviours changed post-evolution to not work as intended.
- Reverted behaviour for mounting such that right-clicking while holding an item will no longer trigger a mount. This is intended to resolve issues where some items, particularly those which built atop the Item class in Minecraft (such as Mega Showdown items), would be overridden by the user mounting their Pokemon instead. While this change effectively means you cannot mount Pokemon anymore unless you have an empty hand, I've decided that this will be the better solution for now to ensure that other mods and their items work as intended. This change is a temporary compromise until the next major update, when planned changes will make this issue obsolete.
- Fixed issue where some flying Pokemon were inconsistently faster in air versus others. The cause was due to how ride speeds were calculated using movement speed values defined per medium in the Cobblemon data files. While most Pokemon use default values, some have very different values defined, some approximately twice what the base value is. This often led to some Pokemon much faster than others, in spite of what individual modifiers and speed stats should have allowed for. To resolve this matter and level the field a bit better, the ride speed formula has been reworked to no longer account for walking speeds defined within the Cobblemon base files. As of now, the only values external to the mod that the speed formula uses is the speed stat of the Pokemon and the base movement speed of the entity, which allows it to remain influenced by effects such as speed potions.
- Fixed issue where experience bar and level number were not being properly hidden while the stamina meter is being rendered.
- Fixed issue where compatibility with Pet Your Cobblemon broke after a recent update by the mod.
- Adjusted dismounting such that it should be more responsive. So long as one key isn't released before the other is registered as pressed down, dismounting should work as intended.
- Fixed issue where setting canExhaust to false was disabling sprinting altogether.
- Fixed issue where battles would not end correctly.
Updated controls system!
- Reworked the previous controls system to now anchor onto the keybinds provided by Cobblemon and vanilla Minecraft. This means there are no longer any separate keybinds for the mod itself, but this should allow for better out-of-the-box functionality without a reliance on any mods to resolve keybind conflicts! The updated controls are as follows:
- "Jump" to ascend, fly... and jump! (default Space)
- "Sneak" to descend and dive (default LShift)
- "Sprint" to... sprint! But with STYLE! (default LCtrl)
- "Throw Selected Pokemon" while sneaking to dismount (default LShift + R) if your Ride Pokemon is selected. Kinda like when you want to get a shoulder-mounted Pokemon off your shoulder, only YOU'RE the one on THEIR shoulder! Except that you also have to be sneaking. This is mainly to ensure that dismounting is a very deliberate action, while also freeing up the "Throw Selected Pokemon" key for other actions such as starting battles or interacting with other players while mounted. Note that you also cannot recall your Pokemon unless you are dismounted from it.
- Reduced the number of packets sent between client and server as a result of the changes above. Which SHOULD mean servers have less data to juggle, which should keep TPS healthy. Haven't had any evidence to suggest that this could be a potential issue, but it never hurts to take some preventative measures!
- Adjusted raytracing for Cobblemon such that it will ignore mounts when drawing a line between you and a target for certain interactions. This works for vanilla mounts as well! So now even the largest of Pokemon will not block your ability to start a battle!
- Adjusted Ride Pokemon interaction to now let you mount even while holding an item! This only applies to items that do not have some special effect on the Pokemon when used, such as potions or evolution items.
- Fixed an issue where server configs were not being correctly synced to connecting clients.
- Added new movement-type option for diving and flying, where you will move in the direction your camera is facing in, not unlike creative flight. Ascending and descending via key presses will still work, but this mode allows for vertical movement without needing to use them beyond initializing flying or diving.
- Dimension blacklisting! All dimensions are allowed by default, but if you wish to restrict riding in specific dimensions, just add their resource locations (e.g. "minecraft:the_nether") to the list to prevent riding in those dimensions!
- Added safety check to make sure you can't mount a Ride Pokemon that belongs to an NPC entity.
- Added checks to make sure that Ride Pokemon are not dismounted if swapped out in battle (unless they faint). Ride Pokemon will still be recalled, however, at the start and end of any level adjusted trainer battle. This is for safety reasons, so I have no plans of changing this.
- Added checks to make sure that Ride Pokemon cannot be evolved while mounted, nor can players mount Pokemon while they are evolving.
- Reduced default underwater modifier from 2.0 to 1.0. Underwater Pokemon were a bit TOO fast.
- Increased maximum limit for all speed-related modifiers from 5.0 to 100.0. Because some folks WANT to go too fast.
- Increased maximum limit for ride speed limit from 120.0 to 420.0. Because you'll be blazing at those speeds.
- Added option to toggle off sprinting on land, so that sprinting can be more selectively toggled for each medium.
- Set default state for sprinting in air to true. In hindsight, it's more reasonable to make this consistent across all mediums and allowing servers to decide if any of these need to be selectively disabled.
- Fixed Torterra's offset. Added Rhyhorn. More planned, just wanted to square these two away since they were on my mind.
- Added compatibility with Pet Your Cobblemon. Right-clicking to mount will work normally while the mod's interaction mode is disabled, and will be disabled while interaction mode is enabled.
- Minor adjustments throughout the code, to make things either more readable or a touch more standardized.
Initial release!
- Base feature set for mounting and dismounting!
- Icons in the summary, PC and Pokedex screens mark which Pokemon can be ridden, while the Rideable subset in the Pokedex shows all available mounts!
- Movement speed that scales with Speed, with config options!
- Sprint with your Ride Pokemon, with config options!
- Toggleable shared water breathing and midair dismount!
- Global and individual modifiers for movement speed, whether in general or across specific mediums!
- Config for speed limiting, for server safety!
- Data registry and addon support for adding and updating Ride Pokemon!