From 73b00f55e887f75cc386c7035ad2c74e5a1ada43 Mon Sep 17 00:00:00 2001 From: Unease Date: Thu, 26 Mar 2026 18:48:41 -0700 Subject: [PATCH 1/3] Fully ported to 1.11.2 by renaming variables and commenting code that deals with non existent fields as well as mixins. Can't wait for everything to break! --- .../mctcommon/KeybindManager.java | 6 +- .../mctcommon/mixin/AccessorKeyBinding.java | 10 +- .../mixin/MixinNetHandlerPlayClient.java | 4 +- .../com/minecrafttas/tasmod/TASmodClient.java | 6 +- .../tasmod/commands/CommandFileCommand.java | 3 +- .../commands/CommandRestartAndPlay.java | 2 +- .../client/ClientCommandRegistry.java | 3 +- .../tasmod/commands/client/CommandFolder.java | 3 +- .../com/minecrafttas/tasmod/gui/InfoHud.java | 4 +- .../tasmod/mixin/MixinMinecraft.java | 6 +- .../playbackhooks/MixinEntityRenderer.java | 2 +- ...cements.java => MixinGuiAchievements.java} | 6 +- .../playbackhooks/MixinGuiContainer.java | 2 +- .../savestates/AccessorAnvilChunkLoader.java | 2 +- .../savestates/MixinChunkProviderClient.java | 6 +- .../savestates/MixinChunkProviderServer.java | 6 +- .../MixinTileEntityItemStackRenderer.java | 2 +- .../tasmod/mixin/tickrate/MixinGuiToast.java | 122 +++++++----------- .../networking/TASmodBufferBuilder.java | 2 +- .../tasmod/registries/TASmodPackets.java | 3 +- .../savestates/SavestateHandlerClient.java | 2 +- .../savestates/SavestateHandlerServer.java | 2 +- .../SavestatePlayerHandlerClient.java | 4 +- .../handlers/SavestateWorldHandler.java | 2 +- .../storage/builtin/ClientMotionStorage.java | 10 +- .../TickrateChangerClient.java | 6 +- .../tasmod/util/ShieldDownloader.java | 2 +- .../tasmod/util/TabCompletionUtils.java | 2 +- src/main/resources/fabric.mod.json | 4 +- src/main/resources/tasmod.accesswidener | 4 +- src/main/resources/tasmod.mixin.json | 2 +- 31 files changed, 103 insertions(+), 137 deletions(-) rename src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/{MixinGuiScreenAdvancements.java => MixinGuiAchievements.java} (76%) diff --git a/src/main/java/com/minecrafttas/mctcommon/KeybindManager.java b/src/main/java/com/minecrafttas/mctcommon/KeybindManager.java index dacd0bb1..faa7c7b6 100644 --- a/src/main/java/com/minecrafttas/mctcommon/KeybindManager.java +++ b/src/main/java/com/minecrafttas/mctcommon/KeybindManager.java @@ -69,10 +69,10 @@ public void registerKeybind(GameSettings options, KeybindID keybindID, Keybind k this.keybindings.put(keybindID, keybind); KeyBinding keyBinding = keybind.vanillaKeyBinding; - Map categoryOrder = AccessorKeyBinding.getCategoryOrder(); + //Map categoryOrder = AccessorKeyBinding.getCategoryOrder(); - if (!categoryOrder.containsKey(keybind.category)) - categoryOrder.put(keybind.category, categoryOrder.size() + 1); +// if (!categoryOrder.containsKey(keybind.category)) +// categoryOrder.put(keybind.category, categoryOrder.size() + 1); // add keybinding options.keyBindings = ArrayUtils.add(options.keyBindings, keyBinding); diff --git a/src/main/java/com/minecrafttas/mctcommon/mixin/AccessorKeyBinding.java b/src/main/java/com/minecrafttas/mctcommon/mixin/AccessorKeyBinding.java index 5a20501b..de5b1e83 100644 --- a/src/main/java/com/minecrafttas/mctcommon/mixin/AccessorKeyBinding.java +++ b/src/main/java/com/minecrafttas/mctcommon/mixin/AccessorKeyBinding.java @@ -10,9 +10,9 @@ @Mixin(KeyBinding.class) public interface AccessorKeyBinding { - - @Accessor("CATEGORY_ORDER") - public static Map getCategoryOrder() { - throw new NotImplementedException("WEE WOO"); - } +// +// @Accessor("CATEGORY_ORDER") +// public static Map getCategoryOrder() { +// throw new NotImplementedException("WEE WOO"); +// } } diff --git a/src/main/java/com/minecrafttas/mctcommon/mixin/MixinNetHandlerPlayClient.java b/src/main/java/com/minecrafttas/mctcommon/mixin/MixinNetHandlerPlayClient.java index ef700e40..84b5d226 100644 --- a/src/main/java/com/minecrafttas/mctcommon/mixin/MixinNetHandlerPlayClient.java +++ b/src/main/java/com/minecrafttas/mctcommon/mixin/MixinNetHandlerPlayClient.java @@ -20,11 +20,11 @@ @Mixin(NetHandlerPlayClient.class) public class MixinNetHandlerPlayClient { @Shadow - private Minecraft client; + private Minecraft gameController; @Inject(method = "handleJoinGame", at = @At(value = "RETURN")) public void clientJoinServerEvent(CallbackInfo ci) throws ConnectException { - EventListenerRegistry.fireEvent(EventPlayerJoinedClientSide.class, client.player); + EventListenerRegistry.fireEvent(EventPlayerJoinedClientSide.class, gameController.player); } @Inject(method = "handlePlayerListItem", at = @At(value = "HEAD")) diff --git a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java index 8dc8ec4c..7cde223f 100644 --- a/src/main/java/com/minecrafttas/tasmod/TASmodClient.java +++ b/src/main/java/com/minecrafttas/tasmod/TASmodClient.java @@ -66,9 +66,9 @@ public class TASmodClient implements ClientModInitializer, EventClientInit, Even public static TickSyncClient ticksyncClient; - public final static Path tasfiledirectory = Minecraft.getMinecraft().gameDir.toPath().resolve("saves").resolve("tasfiles"); + public final static Path tasfiledirectory = Minecraft.getMinecraft().mcDataDir.toPath().resolve("saves").resolve("tasfiles"); - public final static Path savestatedirectory = Minecraft.getMinecraft().gameDir.toPath().resolve("saves").resolve("savestates"); + public final static Path savestatedirectory = Minecraft.getMinecraft().mcDataDir.toPath().resolve("saves").resolve("savestates"); public static InfoHud hud; @@ -354,7 +354,7 @@ private void registerConfigValues() { } private void loadConfig(Minecraft mc) { - Path configDir = mc.gameDir.toPath().resolve("config"); + Path configDir = mc.mcDataDir.toPath().resolve("config"); if (!Files.exists(configDir)) { try { Files.createDirectory(configDir); diff --git a/src/main/java/com/minecrafttas/tasmod/commands/CommandFileCommand.java b/src/main/java/com/minecrafttas/tasmod/commands/CommandFileCommand.java index 7b0bbff2..82de1e79 100644 --- a/src/main/java/com/minecrafttas/tasmod/commands/CommandFileCommand.java +++ b/src/main/java/com/minecrafttas/tasmod/commands/CommandFileCommand.java @@ -37,7 +37,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.server.MinecraftServer; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ChatType; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextFormatting; @@ -186,7 +185,7 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws boolean success = TASmodAPIRegistry.PLAYBACK_FILE_COMMAND.setEnabled(filecommand, enable); String msg = success ? String.format("%s%s file command: %s", TextFormatting.GREEN, enable ? "Enabled" : "Disabled", filecommand) : String.format("%sFailed to %s file command: %s", TextFormatting.RED, enable ? "enable" : "disable", filecommand); - Minecraft.getMinecraft().ingameGUI.addChatMessage(ChatType.CHAT, new TextComponentString(msg)); + Minecraft.getMinecraft().ingameGUI.getChatGUI().addToSentMessages(new TextComponentString(msg).getFormattedText()); break; default: break; diff --git a/src/main/java/com/minecrafttas/tasmod/commands/CommandRestartAndPlay.java b/src/main/java/com/minecrafttas/tasmod/commands/CommandRestartAndPlay.java index 382cd872..accfd551 100644 --- a/src/main/java/com/minecrafttas/tasmod/commands/CommandRestartAndPlay.java +++ b/src/main/java/com/minecrafttas/tasmod/commands/CommandRestartAndPlay.java @@ -57,7 +57,7 @@ public List getTabCompletions(MinecraftServer server, ICommandSender sen public List getFilenames() { List tab = new ArrayList(); - File folder = new File(Minecraft.getMinecraft().gameDir, "saves" + File.separator + "tasfiles"); + File folder = new File(Minecraft.getMinecraft().mcDataDir, "saves" + File.separator + "tasfiles"); File[] listOfFiles = folder.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { diff --git a/src/main/java/com/minecrafttas/tasmod/commands/client/ClientCommandRegistry.java b/src/main/java/com/minecrafttas/tasmod/commands/client/ClientCommandRegistry.java index f5c32951..8d6ca2a0 100644 --- a/src/main/java/com/minecrafttas/tasmod/commands/client/ClientCommandRegistry.java +++ b/src/main/java/com/minecrafttas/tasmod/commands/client/ClientCommandRegistry.java @@ -8,7 +8,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.command.CommandBase; -import net.minecraft.util.text.ChatType; import net.minecraft.util.text.TextComponentString; public class ClientCommandRegistry extends AbstractRegistry { @@ -38,7 +37,7 @@ public boolean runClientCommands(String chatMessage) { try { command.execute(null, player, args); } catch (Exception e) { - mc.ingameGUI.addChatMessage(ChatType.CHAT, new TextComponentString(e.getMessage())); + mc.ingameGUI.getChatGUI().addToSentMessages(new TextComponentString(e.getMessage()).getFormattedText()); } return true; } diff --git a/src/main/java/com/minecrafttas/tasmod/commands/client/CommandFolder.java b/src/main/java/com/minecrafttas/tasmod/commands/client/CommandFolder.java index 1ccdcf82..b6f35734 100644 --- a/src/main/java/com/minecrafttas/tasmod/commands/client/CommandFolder.java +++ b/src/main/java/com/minecrafttas/tasmod/commands/client/CommandFolder.java @@ -17,7 +17,6 @@ import net.minecraft.command.ICommandSender; import net.minecraft.server.MinecraftServer; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ChatType; import net.minecraft.util.text.Style; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextFormatting; @@ -79,7 +78,7 @@ private void openSavestates() { } if (!Files.exists(file)) { - Minecraft.getMinecraft().ingameGUI.addChatMessage(ChatType.CHAT, new TextComponentString("Can't open savestates, as the directory doesn't exist").setStyle(new Style().setColor(TextFormatting.RED))); + Minecraft.getMinecraft().ingameGUI.getChatGUI().addToSentMessages(new TextComponentString("Can't open savestates, as the directory doesn't exist").setStyle(new Style().setColor(TextFormatting.RED)).getFormattedText()); return; } diff --git a/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java b/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java index 99887c80..23753983 100644 --- a/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java +++ b/src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java @@ -198,7 +198,7 @@ private void saveConfig() { return; } try { - File tasmodDir = new File(Minecraft.getMinecraft().gameDir, "tasmod"); + File tasmodDir = new File(Minecraft.getMinecraft().mcDataDir, "tasmod"); tasmodDir.mkdir(); File configFile = new File(tasmodDir, "infogui2.cfg"); if (!configFile.exists()) @@ -227,7 +227,7 @@ public boolean checkInit() { try { configuration = new Properties(); if (!resetLayout) { - File tasmodDir = new File(Minecraft.getMinecraft().gameDir, "tasmod"); + File tasmodDir = new File(Minecraft.getMinecraft().mcDataDir, "tasmod"); tasmodDir.mkdir(); File configFile = new File(tasmodDir, "infogui2.cfg"); if (!configFile.exists()) diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/MixinMinecraft.java b/src/main/java/com/minecrafttas/tasmod/mixin/MixinMinecraft.java index 450efdc7..217f4803 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/MixinMinecraft.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/MixinMinecraft.java @@ -38,15 +38,15 @@ public void injectRunGameLoop(CallbackInfo ci) { private EntityRenderer entityRenderer; @Shadow private boolean isGamePaused; - @Shadow - private float renderPartialTicksPaused; + //@Shadow + //private float renderPartialTicksPaused; @Shadow private Timer timer; @Redirect(method = "runGameLoop", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;runTick()V")) public void redirectRunTick(Minecraft mc) { if (TASmodClient.tickratechanger.ticksPerSecond != 0) { - ((SubtickDuck) this.entityRenderer).runUpdate(this.isGamePaused ? this.renderPartialTicksPaused : this.timer.renderPartialTicks); + ((SubtickDuck) this.entityRenderer).runUpdate(this.timer.renderPartialTicks); } this.runTick(); TASmodClient.tickSchedulerClient.runAllTasks(); diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinEntityRenderer.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinEntityRenderer.java index 8af79e42..f6003245 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinEntityRenderer.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinEntityRenderer.java @@ -87,7 +87,7 @@ public void playback_injectAtStartSection(float partialTicks, long nanoTime, Cal this.smoothCamPitch = 0.0F; } - mc.getTutorial().handleMouse(mc.mouseHelper); + //mc.getTutorial().handleMouse(mc.mouseHelper); TASmodClient.virtual.CAMERA_ANGLE.updateNextCameraAngle((float) -((double) deltaPitch * 0.15D * invertMouse), (float) ((double) deltaYaw * 0.15D), TASmodClient.tickratechanger.ticksPerSecond != 0); } } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiScreenAdvancements.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiAchievements.java similarity index 76% rename from src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiScreenAdvancements.java rename to src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiAchievements.java index 4fb12666..30e65d9b 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiScreenAdvancements.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiAchievements.java @@ -6,10 +6,10 @@ import com.minecrafttas.tasmod.TASmodClient; -import net.minecraft.client.gui.advancements.GuiScreenAdvancements; +import net.minecraft.client.gui.achievement.GuiAchievements; -@Mixin(GuiScreenAdvancements.class) -public class MixinGuiScreenAdvancements { +@Mixin(GuiAchievements.class) +public class MixinGuiAchievements { @Redirect(method = "drawScreen", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;isButtonDown(I)Z", remap = false)) public boolean redirectIsButtonDown(int i) { return TASmodClient.virtual.isKeyDown(-100); diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiContainer.java b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiContainer.java index 8602da33..e1c67df3 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiContainer.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinGuiContainer.java @@ -41,7 +41,7 @@ private boolean redirectIsKeyDown2(int i) { @Redirect(method = "keyTyped", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/entity/EntityPlayerSP;closeScreen()V")) public void redirectCloseScreen(EntityPlayerSP player) { Minecraft mc = Minecraft.getMinecraft(); - if (TASmodClient.virtual.isKeyDown(mc.gameSettings.keyBindInventory.getKeyCode()) && ((GuiContainer) (Object) this).isFocused()) { + if (TASmodClient.virtual.isKeyDown(mc.gameSettings.keyBindInventory.getKeyCode()) && mc.inGameHasFocus) { //((GuiContainer) (Object) this).isFocused() return; } player.closeScreen(); diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/savestates/AccessorAnvilChunkLoader.java b/src/main/java/com/minecrafttas/tasmod/mixin/savestates/AccessorAnvilChunkLoader.java index 0f177c6a..96bc791f 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/savestates/AccessorAnvilChunkLoader.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/savestates/AccessorAnvilChunkLoader.java @@ -13,5 +13,5 @@ public interface AccessorAnvilChunkLoader { @Accessor - public Map getChunksToSave(); + public Map getChunksToRemove(); } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/savestates/MixinChunkProviderClient.java b/src/main/java/com/minecrafttas/tasmod/mixin/savestates/MixinChunkProviderClient.java index a9949b50..7859b968 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/savestates/MixinChunkProviderClient.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/savestates/MixinChunkProviderClient.java @@ -20,7 +20,7 @@ public class MixinChunkProviderClient implements ChunkProviderDuck { @Shadow @Final - private Long2ObjectMap loadedChunks; + private Long2ObjectMap chunkMapping; /** *

Unloads chunk data on the client. @@ -28,13 +28,13 @@ public class MixinChunkProviderClient implements ChunkProviderDuck { */ @Override public void unloadAllChunks() { - ObjectIterator objectiterator = this.loadedChunks.values().iterator(); + ObjectIterator objectiterator = this.chunkMapping.values().iterator(); while (objectiterator.hasNext()) { Chunk chunk = (Chunk) objectiterator.next(); chunk.onUnload(); } - loadedChunks.clear(); + chunkMapping.clear(); } } diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/savestates/MixinChunkProviderServer.java b/src/main/java/com/minecrafttas/tasmod/mixin/savestates/MixinChunkProviderServer.java index 5ff18e87..b0e829dc 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/savestates/MixinChunkProviderServer.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/savestates/MixinChunkProviderServer.java @@ -24,7 +24,7 @@ public abstract class MixinChunkProviderServer implements ChunkProviderDuck { */ @Shadow @Final - private Long2ObjectMap loadedChunks; + private Long2ObjectMap id2ChunkMap; /** *

Saves and unloads chunk data. @@ -34,7 +34,7 @@ public abstract class MixinChunkProviderServer implements ChunkProviderDuck { */ @Override public void unloadAllChunks() { - ObjectIterator objectiterator = this.loadedChunks.values().iterator(); + ObjectIterator objectiterator = this.id2ChunkMap.values().iterator(); while (objectiterator.hasNext()) { Chunk chunk = (Chunk) objectiterator.next(); @@ -42,7 +42,7 @@ public void unloadAllChunks() { this.saveChunkExtraData(chunk); chunk.onUnload(); } - loadedChunks.clear(); + id2ChunkMap.clear(); } @Shadow diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java b/src/main/java/com/minecrafttas/tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java index 6ce75492..7e5a1e8a 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java @@ -17,7 +17,7 @@ public class MixinTileEntityItemStackRenderer { @Redirect(method = "Lnet/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer;renderByItem(Lnet/minecraft/item/ItemStack;F)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/texture/TextureManager;bindTexture(Lnet/minecraft/util/ResourceLocation;)V", ordinal = 1)) - public void inject_renderByItem(TextureManager manager, ResourceLocation original, ItemStack shield, float partialTicks) { + public void inject_renderByItem(TextureManager manager, ResourceLocation original, ItemStack shield) { EntityLivingBase entity = ShieldDownloader.renderedEntity; if (entity != null && shield != null) { // Dev Texture diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/tickrate/MixinGuiToast.java b/src/main/java/com/minecrafttas/tasmod/mixin/tickrate/MixinGuiToast.java index a9d69a97..7f839d48 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/tickrate/MixinGuiToast.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/tickrate/MixinGuiToast.java @@ -1,104 +1,74 @@ package com.minecrafttas.tasmod.mixin.tickrate; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.Redirect; import com.minecrafttas.tasmod.TASmodClient; -import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.achievement.GuiAchievement; +import net.minecraft.stats.Achievement; /** - * This mixin tries to make the animation of the advancement toasts dependent on the tickrate while keeping the code as vanilla as possible
+ * This mixin tries to make the animation of the advancement toasts dependent on + * the tickrate while keeping the code as vanilla as possible
*
- * While I spent a long amount of time watching this code, I still don't quite fully understand the math behind this...
+ * While I spent a long amount of time watching this code, I still don't quite + * fully understand the math behind this...
*
- * Here's what I could find out: Toasts have 2 different states represented in visibility in the ToastInstance.
- * And if it's set to SHOW the fly in animation and sound will play, the same goes with HIDE where it flies out after a certain amount of time
- * After a lot of trial and error I found out that animationTimer, which was originally "i", is the way to go...
+ * Here's what I could find out: Toasts have 2 different states represented in + * visibility in the ToastInstance.
+ * And if it's set to SHOW the fly in animation and sound will play, the same + * goes with HIDE where it flies out after a certain amount of time
+ * After a lot of trial and error I found out that animationTimer, which was + * originally "i", is the way to go...
*
- * So just as RenderItem and GuiSubtitleOverlay, things are done with an offset for tickrate 0 and simple multiplication
- * Also I used a copy of the vanilla ToastInstance-class to make it work for every subtitle on screen... If you seek to make it work for only 1, at the end is a commented code that shows you how to use @ModyfyVarable
+ * So just as RenderItem and GuiSubtitleOverlay, things are done with an offset + * for tickrate 0 and simple multiplication
+ * Also I used a copy of the vanilla ToastInstance-class to make it work for + * every subtitle on screen... If you seek to make it work for only 1, at the + * end is a commented code that shows you how to use @ModyfyVarable
*
- * There is one compromise I had to make... When you change the tickrate while a toast is showing, it will stay at the old tickrate until it's done...
- * Maybe I still fix this and get into this mess once more, but for now this will do and don't make the subtitles stuck in a loop until you change to the old tickrate
+ * There is one compromise I had to make... When you change the tickrate while a + * toast is showing, it will stay at the old tickrate until it's done...
+ * Maybe I still fix this and get into this mess once more, but for now this + * will do and don't make the subtitles stuck in a loop until you change to the + * old tickrate
* Am I doing this right with commenting code? I hope so...
*
* Update 02.03.21:
- * Well, it's been roughly a year since I have touched this code and I am finally back with updating this. And while I am at it, I removed that compromise mentioned earlier.
+ * Well, it's been roughly a year since I have touched this code and I am + * finally back with updating this. And while I am at it, I removed that + * compromise mentioned earlier.
+ *
* - * Update 26.03.26 Unease
+ * Update 26.03.26 Unease
* Reusing 5 year old code for legacy... how fitting + *
+ * + * For versions below 1.12 these are no longer advancements but rather achievements
+ * and so work differently. The breakdown above can be ignored since it's not relevant
+ * to this implementation thats reused from LoTAS * * @author Scribble * @author Unease */ -@Mixin(targets = "net/minecraft/client/gui/toasts/GuiToast$ToastInstance") +@Mixin(GuiAchievement.class) public abstract class MixinGuiToast { - /** - * Vanilla, current time in ms when the animationBegan. The delta between animationTimer and animation time shows the progress - */ - @Shadow - private long animationTime; - /** - * Vanilla, the time the animation is visible. Used in the toast instances (e.g. AdvancementToast) to time their animation. Also used to set the visibility to HIDE and make the toast go away - */ - @Shadow - private long visibleTime; - - /** - * When entering tickrate 0, store is the (ms) time when tickrate 0 was activated. This time replaces the "animationTimer" during tickrate 0 - */ - private long store = 0L; - /** - * Makes sure the code runs only once when switching between tickrate 0 and not tickrate 0... I have yet to find a more elegant solution... - */ - private boolean once = false; - /** - * The offset of the ms time when using tickrate 0. This is used to "resume" the animation without any jumps, after exiting tickrate 0 - */ - private long offset = 0L; - /** - * When changing the tickrate while a toast is on screen, the {@link #animationTime} is not correct. The correct animationTime can be optained by subtracting the current time from this delta
- */ - private long animationDelta = 0L; - /** - * When changing the tickrate while a toast is on screen, the {@link #visibleTime} is not correct. The correct visibleTime can be optained by subtracting the current time from this delta
- */ - private long visibleDelta = 0L; - /** - * Used to detect a change in the tickrate and to run the code on. - */ - private float ticksave = TASmodClient.tickratechanger.ticksPerSecond; - - @ModifyVariable(method = "render(II)Z", at = @At(value = "STORE", ordinal = 0)) - public long modifyAnimationTime(long animationTimer) { - //===========TICKRATE OTHER THAN 0=========== - if (TASmodClient.tickratechanger.ticksPerSecond != 0) { - if (once) { - once = false; - offset = Minecraft.getSystemTime() - store; - } + @Redirect(method = "displayAchievement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) + public long redirectIt(Achievement ach) { + return TASmodClient.tickratechanger.getMilliseconds(); + } - animationTimer = (long) ((Minecraft.getSystemTime() - offset) * (TASmodClient.tickratechanger.ticksPerSecond / 20)); + @Redirect(method = "displayUnformattedAchievement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) + public long redirectIt2(Achievement achievementIn) { + return TASmodClient.tickratechanger.getMilliseconds(); + } - if (ticksave != TASmodClient.tickratechanger.ticksPerSecond) { - ticksave = TASmodClient.tickratechanger.ticksPerSecond; - animationTime = animationTimer - animationDelta; - visibleTime = animationTimer - visibleDelta; - } - animationDelta = animationTimer - animationTime; - visibleDelta = animationTimer - visibleTime; - //===========TICKRATE 0=========== - } else { - if (!once) { - once = true; - store = (long) ((Minecraft.getSystemTime() - offset)); - } - animationTimer = (long) (store * (TASmodClient.tickratechanger.tickrateSaved / 20)); - } - return animationTimer; + @Redirect(method = "updateAchievementWindow", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J")) + public long redirectIt3() { + return TASmodClient.tickratechanger.getMilliseconds(); } + } diff --git a/src/main/java/com/minecrafttas/tasmod/networking/TASmodBufferBuilder.java b/src/main/java/com/minecrafttas/tasmod/networking/TASmodBufferBuilder.java index 42eb6207..e4883791 100644 --- a/src/main/java/com/minecrafttas/tasmod/networking/TASmodBufferBuilder.java +++ b/src/main/java/com/minecrafttas/tasmod/networking/TASmodBufferBuilder.java @@ -87,7 +87,7 @@ public static MotionData readMotionData(ByteBuffer buf) { float jumpMovementVector = TASmodBufferBuilder.readFloat(buf); boolean sprinting = TASmodBufferBuilder.readBoolean(buf); - return new MotionData(x, y, z, rx, ry, rz, sprinting, jumpMovementVector); + return new MotionData(x, y, z, rx, rz, sprinting, jumpMovementVector); } } diff --git a/src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java b/src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java index 2d23df98..b8a699af 100644 --- a/src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java +++ b/src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java @@ -23,7 +23,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiDownloadTerrain; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.text.ChatType; import net.minecraft.util.text.TextFormatting; /** @@ -68,7 +67,7 @@ public enum TASmodPackets implements PacketID { String keyName = VirtualKey.getName(tickrate0Kbd.vanillaKeyBinding.getKeyCode()); if (TASmodClient.config.getBoolean(TASmodConfig.UnpauseWarn)) - mc.ingameGUI.addChatMessage(ChatType.CHAT, Component.translatable("msg.tasmod.tickrate.tr0warn", Component.literal(keyName).withStyle(TextFormatting.GOLD)).withStyle(TextFormatting.GREEN).build()); + mc.ingameGUI.getChatGUI().addToSentMessages(Component.translatable("msg.tasmod.tickrate.tr0warn", Component.literal(keyName).withStyle(TextFormatting.GOLD)).withStyle(TextFormatting.GREEN).build().getFormattedText()); }), /** *

Creates a savestate diff --git a/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerClient.java b/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerClient.java index 24e23965..3f9cbadb 100644 --- a/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerClient.java @@ -93,7 +93,7 @@ public void onClientLoadstateComplete() { LOGGER.trace(LoggerMarkers.Savestate, "Add player {} to loaded entity list", player.getName()); int i = MathHelper.floor(player.posX / 16.0D); int j = MathHelper.floor(player.posZ / 16.0D); - Chunk chunk = Minecraft.getMinecraft().world.getChunk(i, j); + Chunk chunk = Minecraft.getMinecraft().world.getChunkFromChunkCoords(i, j); for (int k = 0; k < chunk.getEntityLists().length; k++) { if (chunk.getEntityLists()[k].contains(player)) { return; diff --git a/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java b/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java index 150b67d5..51e91298 100644 --- a/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java +++ b/src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java @@ -258,7 +258,7 @@ private void savestateInner(SavestatePaths paths, SavestateCallback cb, Savestat for (WorldServer world : server.worlds) { AnvilChunkLoader chunkloader = (AnvilChunkLoader) ((AccessorChunkLoader) world.getChunkProvider()).getChunkLoader(); - while (((AccessorAnvilChunkLoader) chunkloader).getChunksToSave().size() > 0) { + while (((AccessorAnvilChunkLoader) chunkloader).getChunksToRemove().size() > 0) { } } diff --git a/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestatePlayerHandlerClient.java b/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestatePlayerHandlerClient.java index 878ec01f..3dfc009d 100644 --- a/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestatePlayerHandlerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestatePlayerHandlerClient.java @@ -56,7 +56,7 @@ public void loadPlayer(NBTTagCompound compound) { double z = player.motionZ; float rx = player.moveForward; - float ry = player.moveVertical; + //float ry = player.moveVertical; float rz = player.moveStrafing; boolean sprinting = player.isSprinting(); @@ -69,7 +69,7 @@ public void loadPlayer(NBTTagCompound compound) { player.motionZ = z; player.moveForward = rx; - player.moveVertical = ry; + //player.moveVertical = ry; player.moveStrafing = rz; player.setSprinting(sprinting); diff --git a/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateWorldHandler.java b/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateWorldHandler.java index acb87ed8..fc5fd636 100644 --- a/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateWorldHandler.java +++ b/src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateWorldHandler.java @@ -74,7 +74,7 @@ public void addPlayerToServerChunk(EntityPlayerMP player) { int i = MathHelper.floor(player.posX / 16.0D); int j = MathHelper.floor(player.posZ / 16.0D); WorldServer world = player.getServerWorld(); - Chunk chunk = world.getChunk(i, j); + Chunk chunk = world.getChunkFromChunkCoords(i, j); for (int k = 0; k < chunk.getEntityLists().length; k++) { if (chunk.getEntityLists()[k].contains(player)) { return; diff --git a/src/main/java/com/minecrafttas/tasmod/savestates/storage/builtin/ClientMotionStorage.java b/src/main/java/com/minecrafttas/tasmod/savestates/storage/builtin/ClientMotionStorage.java index 26b7151b..d97eba48 100644 --- a/src/main/java/com/minecrafttas/tasmod/savestates/storage/builtin/ClientMotionStorage.java +++ b/src/main/java/com/minecrafttas/tasmod/savestates/storage/builtin/ClientMotionStorage.java @@ -139,7 +139,7 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws player.motionY, player.motionZ, player.moveForward, - player.moveVertical, + //player.moveVertical, player.moveStrafing, player.isSprinting(), player.jumpMovementFactor @@ -157,7 +157,7 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws player.motionZ = data.motionZ; player.moveForward = data.deltaX; - player.moveVertical = data.deltaY; + //player.moveVertical = data.deltaY; player.moveStrafing = data.deltaZ; player.setSprinting(data.sprinting); @@ -197,19 +197,19 @@ public static class MotionData { private boolean sprinting; private float jumpMovementFactor; - public MotionData(double x, double y, double z, float rx, float ry, float rz, boolean sprinting, float jumpMovementVector) { + public MotionData(double x, double y, double z, float rx, float rz, boolean sprinting, float jumpMovementVector) { motionX = x; motionY = y; motionZ = z; deltaX = rx; - deltaY = ry; + //deltaY = ry; deltaZ = rz; this.sprinting = sprinting; this.jumpMovementFactor = jumpMovementVector; } public MotionData() { - this(0D, 0D, 0D, 0f, 0f, 0f, false, 0f); + this(0D, 0D, 0D, 0f, 0f, false, 0f); } public double getClientX() { diff --git a/src/main/java/com/minecrafttas/tasmod/tickratechanger/TickrateChangerClient.java b/src/main/java/com/minecrafttas/tasmod/tickratechanger/TickrateChangerClient.java index 2c65f96f..6e7e0ef8 100644 --- a/src/main/java/com/minecrafttas/tasmod/tickratechanger/TickrateChangerClient.java +++ b/src/main/java/com/minecrafttas/tasmod/tickratechanger/TickrateChangerClient.java @@ -12,7 +12,6 @@ import com.minecrafttas.mctcommon.networking.interfaces.ClientPacketHandler; import com.minecrafttas.mctcommon.networking.interfaces.PacketID; import com.minecrafttas.tasmod.TASmodClient; -import com.minecrafttas.tasmod.events.EventClient.EventClientTickPost; import com.minecrafttas.tasmod.events.EventTickratechanger; import com.minecrafttas.tasmod.networking.TASmodBufferBuilder; import com.minecrafttas.tasmod.registries.TASmodPackets; @@ -20,6 +19,7 @@ import com.minecrafttas.tasmod.util.LoggerMarkers; import net.minecraft.client.Minecraft; +import net.minecraft.util.Timer; /** * Changes the {@link Minecraft#timer} variable @@ -131,13 +131,13 @@ public void changeClientTickrate(float tickrate, boolean log) { Minecraft mc = Minecraft.getMinecraft(); if (tickrate > 0) { millisecondsPerTick = (long) (1000F / tickrate); - mc.timer.tickLength = millisecondsPerTick; + mc.timer.ticksPerSecond = millisecondsPerTick; } else if (tickrate == 0F) { if (ticksPerSecond != 0) { tickrateSaved = ticksPerSecond; } - mc.timer.tickLength = Float.MAX_VALUE; + mc.timer.ticksPerSecond = Float.MAX_VALUE; } ticksPerSecond = tickrate; EventListenerRegistry.fireEvent(EventTickratechanger.EventClientTickrateChange.class, tickrate); diff --git a/src/main/java/com/minecrafttas/tasmod/util/ShieldDownloader.java b/src/main/java/com/minecrafttas/tasmod/util/ShieldDownloader.java index 8c2aebcd..ab61d305 100644 --- a/src/main/java/com/minecrafttas/tasmod/util/ShieldDownloader.java +++ b/src/main/java/com/minecrafttas/tasmod/util/ShieldDownloader.java @@ -166,7 +166,7 @@ private String getShieldName(String uuid) { @Deprecated private Map downloadNames() { - File feil = new File(Minecraft.getMinecraft().gameDir + File.separator + "playerstt.txt"); + File feil = new File(Minecraft.getMinecraft().mcDataDir + File.separator + "playerstt.txt"); URL url; Map uuids = Maps.newHashMap(); diff --git a/src/main/java/com/minecrafttas/tasmod/util/TabCompletionUtils.java b/src/main/java/com/minecrafttas/tasmod/util/TabCompletionUtils.java index e4238cd4..c820aa5e 100644 --- a/src/main/java/com/minecrafttas/tasmod/util/TabCompletionUtils.java +++ b/src/main/java/com/minecrafttas/tasmod/util/TabCompletionUtils.java @@ -99,7 +99,7 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws private List getFilenames() { List tab = new ArrayList(); - File folder = new File(Minecraft.getMinecraft().gameDir, "saves" + File.separator + "tasfiles"); + File folder = new File(Minecraft.getMinecraft().mcDataDir, "saves" + File.separator + "tasfiles"); File[] listOfFiles = folder.listFiles(new FileFilter() { @Override diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2a4bea59..e0cedcc1 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -5,7 +5,7 @@ "name": "${name}", "description": "${mod_description}", "authors": ["Scribble", "Pancake"], - "contributors": ["tr7zw", "cittyinthecloud", "forester302"], + "contributors": ["tr7zw", "cittyinthecloud", "forester302", "Unease"], "contact": { "homepage": "${mod_url}", "sources": "${mod_sources}", @@ -31,7 +31,7 @@ ], "depends": { "fabricloader": ">=0.14.19", - "minecraft": "1.12.2", + "minecraft": "1.11.2", "java": ">=8" }, "custom": { diff --git a/src/main/resources/tasmod.accesswidener b/src/main/resources/tasmod.accesswidener index 26ac94a2..9ecbc55e 100644 --- a/src/main/resources/tasmod.accesswidener +++ b/src/main/resources/tasmod.accesswidener @@ -4,14 +4,14 @@ accessible field net/minecraft/client/Minecraft timer Lnet/minecraft/util/Timer; accessible method net/minecraft/client/Minecraft runTickKeyboard ()V accessible method net/minecraft/client/Minecraft runTickMouse ()V -accessible field net/minecraft/util/Timer tickLength F +accessible field net/minecraft/util/Timer ticksPerSecond F accessible field net/minecraft/world/World unloadedEntityList Ljava/util/List; accessible field net/minecraft/world/World worldInfo Lnet/minecraft/world/storage/WorldInfo; accessible method net/minecraft/world/storage/SaveHandler setSessionLock ()V -accessible field net/minecraft/client/settings/KeyBinding CATEGORY_ORDER Ljava/util/Map; +#accessible field net/minecraft/client/settings/KeyBinding CATEGORY_ORDER Ljava/util/Map; accessible method net/minecraft/server/MinecraftServer saveAllWorlds (Z)V accessible method net/minecraft/server/MinecraftServer convertMapIfNeeded (Ljava/lang/String;)V diff --git a/src/main/resources/tasmod.mixin.json b/src/main/resources/tasmod.mixin.json index 284f5019..a9203535 100644 --- a/src/main/resources/tasmod.mixin.json +++ b/src/main/resources/tasmod.mixin.json @@ -56,7 +56,7 @@ "playbackhooks.MixinGuiClickableScrolledSelectionListProxy", "playbackhooks.MixinGuiContainer", "playbackhooks.MixinGuiContainerCreative", - "playbackhooks.MixinGuiScreenAdvancements", + "playbackhooks.MixinGuiAchievements", "playbackhooks.MixinGuiSlot", "playbackhooks.MixinGuiStats", "playbackhooks.MixinKeyBinding", From f1009f043e6c756697cddfb865f258ef609957c7 Mon Sep 17 00:00:00 2001 From: Scribble Date: Fri, 27 Mar 2026 09:00:44 +0100 Subject: [PATCH 2/3] Fix crash when opening an inventory --- .../tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/minecrafttas/tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java b/src/main/java/com/minecrafttas/tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java index 7e5a1e8a..6acbc23c 100644 --- a/src/main/java/com/minecrafttas/tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java +++ b/src/main/java/com/minecrafttas/tasmod/mixin/shields/MixinTileEntityItemStackRenderer.java @@ -16,7 +16,7 @@ @Mixin(TileEntityItemStackRenderer.class) public class MixinTileEntityItemStackRenderer { - @Redirect(method = "Lnet/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer;renderByItem(Lnet/minecraft/item/ItemStack;F)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/texture/TextureManager;bindTexture(Lnet/minecraft/util/ResourceLocation;)V", ordinal = 1)) + @Redirect(method = "renderByItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/texture/TextureManager;bindTexture(Lnet/minecraft/util/ResourceLocation;)V", ordinal = 1)) public void inject_renderByItem(TextureManager manager, ResourceLocation original, ItemStack shield) { EntityLivingBase entity = ShieldDownloader.renderedEntity; if (entity != null && shield != null) { From 1451013a395b54d2f1ded2acfc1f5fc64cd73451 Mon Sep 17 00:00:00 2001 From: Unease Date: Fri, 27 Mar 2026 23:27:12 -0700 Subject: [PATCH 3/3] Fixed chat messages --- .../com/minecrafttas/tasmod/commands/CommandFileCommand.java | 2 +- .../tasmod/commands/client/ClientCommandRegistry.java | 2 +- .../com/minecrafttas/tasmod/commands/client/CommandFolder.java | 2 +- .../java/com/minecrafttas/tasmod/registries/TASmodPackets.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/minecrafttas/tasmod/commands/CommandFileCommand.java b/src/main/java/com/minecrafttas/tasmod/commands/CommandFileCommand.java index 82de1e79..dfc0d023 100644 --- a/src/main/java/com/minecrafttas/tasmod/commands/CommandFileCommand.java +++ b/src/main/java/com/minecrafttas/tasmod/commands/CommandFileCommand.java @@ -185,7 +185,7 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws boolean success = TASmodAPIRegistry.PLAYBACK_FILE_COMMAND.setEnabled(filecommand, enable); String msg = success ? String.format("%s%s file command: %s", TextFormatting.GREEN, enable ? "Enabled" : "Disabled", filecommand) : String.format("%sFailed to %s file command: %s", TextFormatting.RED, enable ? "enable" : "disable", filecommand); - Minecraft.getMinecraft().ingameGUI.getChatGUI().addToSentMessages(new TextComponentString(msg).getFormattedText()); + Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new TextComponentString(msg)); break; default: break; diff --git a/src/main/java/com/minecrafttas/tasmod/commands/client/ClientCommandRegistry.java b/src/main/java/com/minecrafttas/tasmod/commands/client/ClientCommandRegistry.java index 8d6ca2a0..1a0ef01b 100644 --- a/src/main/java/com/minecrafttas/tasmod/commands/client/ClientCommandRegistry.java +++ b/src/main/java/com/minecrafttas/tasmod/commands/client/ClientCommandRegistry.java @@ -37,7 +37,7 @@ public boolean runClientCommands(String chatMessage) { try { command.execute(null, player, args); } catch (Exception e) { - mc.ingameGUI.getChatGUI().addToSentMessages(new TextComponentString(e.getMessage()).getFormattedText()); + mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(e.getMessage())); } return true; } diff --git a/src/main/java/com/minecrafttas/tasmod/commands/client/CommandFolder.java b/src/main/java/com/minecrafttas/tasmod/commands/client/CommandFolder.java index b6f35734..edacfd67 100644 --- a/src/main/java/com/minecrafttas/tasmod/commands/client/CommandFolder.java +++ b/src/main/java/com/minecrafttas/tasmod/commands/client/CommandFolder.java @@ -78,7 +78,7 @@ private void openSavestates() { } if (!Files.exists(file)) { - Minecraft.getMinecraft().ingameGUI.getChatGUI().addToSentMessages(new TextComponentString("Can't open savestates, as the directory doesn't exist").setStyle(new Style().setColor(TextFormatting.RED)).getFormattedText()); + Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new TextComponentString("Can't open savestates, as the directory doesn't exist").setStyle(new Style().setColor(TextFormatting.RED))); return; } diff --git a/src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java b/src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java index b8a699af..f115d087 100644 --- a/src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java +++ b/src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java @@ -67,7 +67,7 @@ public enum TASmodPackets implements PacketID { String keyName = VirtualKey.getName(tickrate0Kbd.vanillaKeyBinding.getKeyCode()); if (TASmodClient.config.getBoolean(TASmodConfig.UnpauseWarn)) - mc.ingameGUI.getChatGUI().addToSentMessages(Component.translatable("msg.tasmod.tickrate.tr0warn", Component.literal(keyName).withStyle(TextFormatting.GOLD)).withStyle(TextFormatting.GREEN).build().getFormattedText()); + mc.ingameGUI.getChatGUI().printChatMessage(Component.translatable("msg.tasmod.tickrate.tr0warn", Component.literal(keyName).withStyle(TextFormatting.GOLD)).withStyle(TextFormatting.GREEN).build()); }), /** *

Creates a savestate