Перейти к содержимому
Mineforgian

TASmod

Tool-Assisted Speedrunning tools for Minecraft. This includes input playback.

Загрузки
12K
Подписчики
5
Обновлён
6 февраля 2026 г.
Лицензия
GPL-3.0-only

Опубликован 21 марта 2023 г.

TASmod

This mod is still in development major issues may arise! Planned to support 1.8.9-1.16+ eventually, but for now it only works for 1.12.2 (Mojang changed how gui screens, like the inventory are handled, the current mod would break in 1.14+)

Info

You might have seen videos, where a robot plays Super Mario Bros by sending controller signals to the console. These videos are called Tool-Assisted Speedruns and are trying to achieve the fastest time possible in the game without modifying the game files... This mod tries to bring TASing to minecraft...

Warning

This is not a client mod, joining a server where the mod is not installed will disconnect you from the server after a short amount of time...

Features

Recording and playing back inputs Slowing down the game / Slowmotion Stop the tickrate and advance one tick (Frame advance, but with ticks, so tickadvance?) Savestates RNG manipulation In the bottom left of your screen are several things. Probably the number 0 and the inputs you are pressing. The white buttons are what the game currently recognises, the green buttons are what you press on the keyboard currently. On lower tickrates you can see that the green one is updated faster than the white inputs

Commands

-/record To start a recording. This records the inputs to RAM. The number should now increase because it detects the inputs.
-/clearinputs: Clears the currently stored inputs. Do this before starting a new recording, since /record only adds inputs and does not clear them.
-/play: Plays back the stored inputs. Before that, it teleports you to the location where you started recording. WARNING Unfortunately the vanilla teleporting takes some time, so the player won't be able to move in the first few ticks, which oftentimes desyncs the TAS immediately. So record like 7 ticks at the start where you not move to account for that. Will be fixed sometime in the future...
/save <filename>: Stores the current inputs under the given filename in .minecraft/saves/tasfiles.
/load <filename>: Replaces the current inputs with the inputs from the file with the given filename.
/folder savestate|tasfiles Opens the savestate or tasfile folder on your disk
/savestate <save|load|delete> <index> Saves, loads or deletes the savestate under the specified index. You can find more infos ingame by using /savestates.

Hotkeys

  • F8 Toggles between tickrate 0 and other tickrates. Pauses the game on both client and server side.
  • F9 You can advance one tick at a time while you are in tickrate 0.
  • J Makes a savestate under .minecraft/saves/savestates. If you are recording, a savestate of the recording will be made under .minecraft/saves/tasfiles/savestates
  • K Loads the savestate. It will also work during recording or playback.
  • F6 Customize the HUD. Leftclick and drag to change the position, Rightclick to add a background
  • F10 Aborts a playback

Bugs

You can post them on the issue tracker linked in problems... Need help? Join our Discord

Центр версий

5 из 7
  • Релиз691 КБ
  • Релиз693 КБ
  • Релиз643 КБ
  • Релиз536 КБ
  • Релиз537 КБ

Ченджлог

Beta2.1Релиз1.12.2 · 6 февраля 2026 г.

Fixes

Beta2.0Релиз1.12.2 · 25 октября 2025 г.

Highlights

  • New savestate system ported from LoTAS-Light
  • Added temporary savestates for /record and /play

New

Savestate Indexing

  • /savestate now displays the savestates better, adding clickable elements into chat
  • Savestates can now be renamed
    • This can be done via /savestate rename <index> <newName>
    • When savestating via hotkey, a gui screen will be displayed for renaming the savestate you just created
  • Savestates now store the time and date, when they were created
    • Can be seen when hovering over the savestate name

Temporary savestates

Using /record and /play would be a bit limiting, since any change to the world, like breaking blocks may desync the TAS.

Now, a temporary savestate is created when starting a new recording with /record (i.e. when the input count is set to 0). Using /play will load that savestate at the beginning.

[!NOTE] This will not impact the savestate 0 used for /fullrecord and /fullplay

Use /record nosave and /play nosave to get the old behaviour

Savestate folder structure

Savestates are now grouped in a subfolder by worldname Whereas before, the .minecraft/saves/savestates folder would look like this:

savestates/ 
├── New-World-Savestate1
├── New-World-Savestate2 
├── New-World--Savestate1 
├── New-World--Savestate2 
├── Worldname-Savestate1 
├── Worldname-Savestate2 
├── Worldname-Savestate3 
├── New-World-info.txt 
├── New-World--info.txt 
└── Worldname-info.txt

which made the savestate folder kind of a mess when using multiple worlds. Now it looks like this

savestates/
├── New-World-Savestates
│   ├── New-World-Savestate1
│   ├── New-World-Savestate2
│   └── New-World-info.txt
├── New-World--Savestates
│   ├── New-World--Savestate1
│   ├── New-World--Savestate2
│   └── New-World--info.txt
└── Worldname-Savestates
    ├── Worldname-Savestate1
    ├── Worldname-Savestate2
    ├── Worldname-Savestate3
    └── Worldname-info.txt

where all savestates are grouped by world.

Savestate data

Before, the savestate data was located in worldname/tasmod/savestateData.txt.
This made savestates incompatible with i.e. LoTAS which would store it in worldname/lotas/savestateData.txt.

To bring everything together, savestate data is now stored in worldname/tas/savestate.json

Tickrate 0 Warn

Added a chat message that will notify you, when the game was automatically set to 0 and what hotkey to press to unpause.

Fixes

  • Fixed /restartandplay straight up not working
Beta1.2Релиз1.12.2 · 30 сентября 2025 г.

Fixes

  • Fix error in console when joining a world

Dependencies

  • Update to Loom 1.11
  • Update Gradle to 8.14
  • Update Fabric Loader
Beta1.1Релиз1.12.2 · 6 августа 2025 г.

Fixes

  • Fix respawning and /tp not moving the camera
  • Fix loadstates failing to move the player in some custom maps
Beta1.0Релиз1.12.2 · 25 июля 2025 г.

This is the first Beta release of TASmod with a lot of reworks, better architecture and a new mod loader.

Highlights

Legacy Fabric

This release switches the modloader from Forge to LegacyFabric. The reason behind this is that forge 1.12.2 is just very old and unsupported. Plus, Legacy Fabric gives us built-in Mixin support and less modifications to the source code. The downside is that forge mods are incompatible with legacy fabric. However, some mods are already backported to legacy fabric.

Input Engine

The input engine or playback engine is the part of the code that hooks into the vanilla input system and redirects the inputs, so that they can be recorded or changed.

In Alpha, I found a flaw in how the inputs are set up. The idea behind it was that inputs can only happen once every tick, except for the mouse that can happen more times a tick, due to GUI-Screens. That idea was flawed and this introduced awkward compromises.

So for Beta, the input engine was extended to allow inputs in between ticks for Keyboard and Camera Angle as well, which I named "Subticks". Now inputs should behave exactly like vanilla.

Interpolation

Storing subticks for mouse and camera also has the added benefit of allowing for better input interpolation.

Normally, cursor location in GUIs and the camera angle are processed at 20 tps, which is very apparent to the player. So for the camera, TASmod-Alpha basically guessed some camera angles to fill in between the ticks, to make it look more watchable.

Now in Beta, all camera interpolation is handled by the subticks, so it should look pretty close to vanilla.

In addition to that, the cursor in GUI screens is also interpolated the same way now, which also fixes some issues with scroll bars

Input saving/loading (Serialisation)

With a new input engine comes the challenge of actually storing the new inputs. This required a new structure of the TASfile to allow for easy editing.

The new structure goes as follows:

1|Keyboard|Mouse|Camera
	1|Keyboard-Subtick|Mouse-Subtick|Camera-Subtick
	2|Keyboard-Subtick|Mouse-Subtick|Camera-Subtick
	3|Keyboard-Subtick|Mouse-Subtick|Camera-Subtick
2|Keyboard|Mouse|Camera
	1|Keyboard-Subtick|Mouse-Subtick|Camera-Subtick
	2|Keyboard-Subtick|Mouse-Subtick|Camera-Subtick
3|Keyboard|Mouse|Camera
4|Keyboard|Mouse|Camera

Ticks are the same as the before, with Mouse inputs having their subtick syntax removed which is now moved to the indented "subtick" part of a tick.

Serialisation APIs

After revisiting the old serialisation code it became clear, that a serious overhaul is needed, as a lot of things were hardcoded.

To get around this I created 3 APIs that modders can use to add their own functionality to the TASfile.

Metadata

Data about the TAS like credits, start position and options at the beginning of the file can now be dynamically added. Modders can also create add-ons for TASmod and you can store custom metadata in the header.

FileCommands

A feature that was prototyped by PancakeTAS during the Alpha was "Control Bytes". With a special $ syntax, you could add a line to the TASfile and when the playback passes that line, the command would've been executed, for something like disabling the HUD or a nameplate in the corner

This feature has been expanded (and renamed) so modders can add their own file commands that TASers can add to their files.

In the future I would like to rewrite LoTAS as a separate Add-On to TASmod so it uses this system. Then we can merge functionalities and have LoTAS functions with TASmod playback

Flavors

By far the greatest effort was modularizing the serialisation itself. Modders can now easily create their own file format for TASmod, maybe to support other file formats from other tools and export them back to it. I named the file syntax "Flavor" as that name exists for the many different Markdown-Flavors that different sites like GitHub or GitLab use

Savestates

Back in Alpha, savestates had tons of issues as well, so this release fixes a lot of the issues described and of course adds the new subtick functionality

Changelog

New

  • New event handling
  • Packet handling
  • Config handling
  • Serialisation APIs
  • Improved packethandling
  • [Commands] /fileCommand for enabling/disabling fCs
  • [Keybinds] , and . for decreasing and increasing the tickrate
  • [Keybinds] Secret keybinds for turning 45° left and right
  • [Flavor] Add Beta1 (File format)
  • [Flavor] Add legacy Alpha flavor for loading and saving TASes from Alpha versions
  • [Playback] Add the ability to play back TASes while being tabbed out of the game (F3 and P to activate)

Changed

  • Switched to legacy fabric
  • Added support for subticks in Keyboard and Camera Angle, improved Mouse subticks
  • Changed TASfile syntax to support subticks
  • Add relative coordinates to TASfile, prepending with a ~ lets you specify a change relative to the previous one: ~45 will turn the player 45 degrees

Fixes

  • [Playback] Fix keyboard keys only being recognized after a tick
  • [Playback] Fix scroll bars sometimes desyncing
  • [Tickrate] Fixed initial tickrate not being sent, when a player joins the server
  • [Savestates] Fixed savestates failing when a player does not have playerdata
  • [Savestates] Fixed player not getting motion applied in multiplayer
  • [Savestates] Fixed loading across dimensions not working on first try
  • [Savestates] Fixed world not being visible after loading a savestate
  • [Savestates] Fixed scoreboards not being loaded after loadstate
  • [Savestates] Fixed boss bars duplicating on load
  • [Savestates] Fixed resources.zip in world folder breaking savestates
  • and so much more, but I lost track of it all...

Known issues

  • RNG is not being recorded. So mobs, loot and blocks will still be random. This will be my next focus
Alpha-9Альфа1.12.2 · 2 мая 2023 г.

New things

  • Deterministic RNG (KillTheRNG is required for that)
  • New Desync Monitoring with Seeds
  • Command /playuntil <ticks>

Changes

  • New networking module by Pancake
  • New ticksync
  • Changed the file extension from .tas to .mctas
  • Merged Monitoring files (.mon) and TASfiles (.mctas).
  • Added tick 0 to the TASfile when recording

Fixes

  • Fixed playing time failing to save
  • Fixed "player moved to quickly" during a savestate
  • Removed "catchup ticks" when the server is lagging

Комментарии

Загружаем…