Skip to content

Commit 0f9d059

Browse files
committed
[Savestates] Turn off rename gui
1 parent f639d88 commit 0f9d059

File tree

7 files changed

+55
-12
lines changed

7 files changed

+55
-12
lines changed

src/main/java/com/minecrafttas/tasmod/mixin/playbackhooks/MixinMinecraft.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.minecrafttas.tasmod.mixin.playbackhooks;
22

3+
import org.lwjgl.input.Keyboard;
4+
import org.lwjgl.input.Mouse;
35
import org.spongepowered.asm.mixin.Mixin;
46
import org.spongepowered.asm.mixin.Shadow;
57
import org.spongepowered.asm.mixin.injection.At;
@@ -8,6 +10,7 @@
810
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
911

1012
import com.minecrafttas.tasmod.TASmodClient;
13+
import com.minecrafttas.tasmod.virtual.SubtickGuiScreen;
1114
import com.minecrafttas.tasmod.virtual.VirtualInput;
1215
import com.minecrafttas.tasmod.virtual.VirtualInput.VirtualKeyboardInput;
1316
import com.minecrafttas.tasmod.virtual.VirtualInput.VirtualMouseInput;
@@ -16,6 +19,7 @@
1619

1720
import net.minecraft.client.Minecraft;
1821
import net.minecraft.client.gui.GuiScreen;
22+
import net.minecraft.client.settings.KeyBinding;
1923

2024
@Mixin(Minecraft.class)
2125
public class MixinMinecraft {
@@ -158,4 +162,29 @@ public int playback_redirectGetEventDWheel() {
158162
return TASmodClient.virtual.MOUSE.getEventMouseScrollWheel();
159163
}
160164

165+
// ============================ DisplayGui
166+
167+
@Redirect(method = "displayGuiScreen", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/settings/KeyBinding;unPressAllKeys()V"))
168+
private static void playback_unpressAllKeys(GuiScreen guiScreen) {
169+
if (guiScreen instanceof SubtickGuiScreen) {
170+
return;
171+
}
172+
KeyBinding.unPressAllKeys();
173+
}
174+
175+
@Redirect(method = "displayGuiScreen", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;next()Z"))
176+
private static boolean playback_mouseNext(GuiScreen guiScreen) {
177+
if (guiScreen instanceof SubtickGuiScreen) {
178+
return false;
179+
}
180+
return Mouse.next();
181+
}
182+
183+
@Redirect(method = "displayGuiScreen", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Keyboard;next()Z"))
184+
private static boolean playback_keyboardNext(GuiScreen guiScreen) {
185+
if (guiScreen instanceof SubtickGuiScreen) {
186+
return false;
187+
}
188+
return Keyboard.next();
189+
}
161190
}

src/main/java/com/minecrafttas/tasmod/registries/TASmodKeybinds.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public enum TASmodKeybinds implements KeybindID {
4646
TASmodClient.virtual.CAMERA_ANGLE.updateNextCameraAngle(0, 45);
4747
}),
4848
TEST1("Various Testing", "TASmod", Keyboard.KEY_F12, () -> {
49+
Minecraft.getMinecraft().displayGuiScreen(null);
4950
}, VirtualKeybindings::isKeyDown),
5051
TEST2("Various Testing2", "TASmod", Keyboard.KEY_F7, () -> {
5152
}, VirtualKeybindings::isKeyDown);

src/main/java/com/minecrafttas/tasmod/registries/TASmodPackets.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.minecrafttas.mctcommon.networking.Client.Side;
55
import com.minecrafttas.mctcommon.networking.CompactPacketHandler;
66
import com.minecrafttas.mctcommon.networking.interfaces.PacketID;
7+
import com.minecrafttas.tasmod.TASmod;
78
import com.minecrafttas.tasmod.TASmodClient;
89
import com.minecrafttas.tasmod.playback.PlaybackControllerClient;
910
import com.minecrafttas.tasmod.playback.PlaybackControllerClient.TASstate;
@@ -106,7 +107,7 @@ public enum TASmodPackets implements PacketID {
106107
SAVESTATE_CLEAR_SCREEN(Side.CLIENT, (buf, clientID) -> {
107108
Minecraft mc = Minecraft.getMinecraft();
108109
if (mc.currentScreen instanceof GuiSavestate || mc.currentScreen instanceof GuiDownloadTerrain) {
109-
mc.addScheduledTask(() -> {
110+
TASmod.gameLoopSchedulerServer.add(() -> {
110111
mc.displayGuiScreen(null);
111112
});
112113
}

src/main/java/com/minecrafttas/tasmod/savestates/SavestateHandlerServer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,8 @@ public void onServerPacket(PacketID id, ByteBuffer buf, String username) throws
457457
* Once the player is done renaming the savestate, the screens are cleared for all players.
458458
*/
459459
try {
460-
TASmod.server.sendTo(player, new TASmodBufferBuilder(TASmodPackets.SAVESTATE_RENAME_SCREEN).writeInt(paths.getSavestate().index));
460+
// TODO Currently desyncs the savestates... Bigger investigation necessary
461+
// TASmod.server.sendTo(player, new TASmodBufferBuilder(TASmodPackets.SAVESTATE_RENAME_SCREEN).writeInt(paths.getSavestate().index));
461462
} catch (Exception e) {
462463
LOGGER.catching(e);
463464
}

src/main/java/com/minecrafttas/tasmod/savestates/gui/GuiSavestateRename.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ private void renameAndExit() {
7575
} catch (Exception e) {
7676
TASmod.LOGGER.catching(e);
7777
}
78-
mc.displayGuiScreen(null);
7978
}
8079

8180
@Override
@@ -85,6 +84,12 @@ public void updateScreen() {
8584

8685
@Override
8786
public void onGuiClosed() {
87+
TASmodClient.virtual.clearNext();
8888
Keyboard.enableRepeatEvents(false);
8989
}
90+
91+
@Override
92+
public boolean doesGuiPauseGame() {
93+
return false;
94+
}
9095
}

src/main/java/com/minecrafttas/tasmod/savestates/handlers/SavestateGuiHandlerClient.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.minecrafttas.mctcommon.networking.exception.WrongSideException;
1111
import com.minecrafttas.mctcommon.networking.interfaces.ClientPacketHandler;
1212
import com.minecrafttas.mctcommon.networking.interfaces.PacketID;
13+
import com.minecrafttas.tasmod.TASmodClient;
1314
import com.minecrafttas.tasmod.networking.TASmodBufferBuilder;
1415
import com.minecrafttas.tasmod.registries.TASmodPackets;
1516
import com.minecrafttas.tasmod.savestates.SavestateHandlerServer.SavestateState;
@@ -44,20 +45,18 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws
4445
case SAVESTATE_LOADING_SCREEN:
4546
// Open Savestate screen
4647
SavestateState state = TASmodBufferBuilder.readEnum(SavestateState.class, buf);
47-
mc.addScheduledTask(() -> {
4848

49-
String msg = "";
50-
if (state == SavestateState.SAVING)
51-
msg = "gui.tasmod.savestate.save.start";
52-
else if (state == SavestateState.LOADING)
53-
msg = "gui.tasmod.savestate.load.start";
49+
String msg = "";
50+
if (state == SavestateState.SAVING)
51+
msg = "gui.tasmod.savestate.save.start";
52+
else if (state == SavestateState.LOADING)
53+
msg = "gui.tasmod.savestate.load.start";
5454

55-
mc.displayGuiScreen(new GuiSavestate(Component.translatable(msg).withStyle(TextFormatting.YELLOW).build()));
56-
});
55+
mc.displayGuiScreen(new GuiSavestate(Component.translatable(msg).withStyle(TextFormatting.YELLOW).build()));
5756
break;
5857
case SAVESTATE_RENAME_SCREEN:
5958
int index = TASmodBufferBuilder.readInt(buf);
60-
mc.addScheduledTask(() -> {
59+
TASmodClient.tickSchedulerClient.add(() -> {
6160
displayGuiRename(index);
6261
});
6362
break;

src/main/java/com/minecrafttas/tasmod/virtual/SubtickGuiScreen.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.minecrafttas.tasmod.virtual;
22

3+
import org.lwjgl.input.Keyboard;
4+
35
import net.minecraft.client.gui.GuiScreen;
46

57
/**
@@ -28,4 +30,9 @@ public void keyTyped(char c, int i) {
2830
public void mouseClicked(int i, int j, int k) {
2931
super.mouseClicked(i, j, k);
3032
}
33+
34+
@Override
35+
public void onGuiClosed() {
36+
Keyboard.enableRepeatEvents(false);
37+
}
3138
}

0 commit comments

Comments
 (0)