Skip to content

Commit d589cf5

Browse files
ScribblePancakeTAS
Scribble
authored andcommitted
Removed ticksync command and added warnings
Closes #20
1 parent 774d02f commit d589cf5

File tree

9 files changed

+122
-66
lines changed

9 files changed

+122
-66
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ apply plugin: 'org.spongepowered.mixin'
1919
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
2020

2121

22-
version = "Alpha2"
22+
version = "Alpha3"
2323
group = "de.scribble.lp.tastools" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
2424
archivesBaseName = "TASmod-1.12.2"
2525

src/main/java/de/scribble/lp/tasmod/ModLoader.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import de.scribble.lp.tasmod.playback.CommandPlay;
77
import de.scribble.lp.tasmod.recording.CommandRecord;
88
import de.scribble.lp.tasmod.tickratechanger.CommandTickrate;
9-
import de.scribble.lp.tasmod.ticksync.CommandTickSync;
109
import de.scribble.lp.tasmod.tutorial.CommandPlaybacktutorial;
1110
import net.minecraft.server.MinecraftServer;
1211
import net.minecraftforge.fml.common.Mod;
@@ -58,7 +57,6 @@ public void serverStart(FMLServerStartingEvent ev) {
5857

5958
//Command handling
6059
ev.registerServerCommand(new CommandTickrate());
61-
ev.registerServerCommand(new CommandTickSync());
6260
ev.registerServerCommand(new CommandRecord());
6361
ev.registerServerCommand(new CommandPlay());
6462
ev.registerServerCommand(new CommandPlaybacktutorial());
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package de.scribble.lp.tasmod.gui;
2+
3+
import java.io.IOException;
4+
5+
import net.minecraft.client.Minecraft;
6+
import net.minecraft.client.gui.GuiButton;
7+
import net.minecraft.client.gui.GuiMainMenu;
8+
import net.minecraft.client.gui.GuiMultiplayer;
9+
import net.minecraft.client.gui.GuiScreen;
10+
import net.minecraft.client.gui.ScaledResolution;
11+
import net.minecraft.client.resources.I18n;
12+
13+
public class GuiMultiplayerTimeOut extends GuiScreen{
14+
private GuiScreen previous;
15+
16+
public GuiMultiplayerTimeOut() {
17+
previous=new GuiMainMenu();
18+
}
19+
@Override
20+
public void initGui() {
21+
this.buttonList.add(new GuiButton(0, width / 2 -100, height / 2 + 70, "Continue"));
22+
super.initGui();
23+
}
24+
@Override
25+
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
26+
this.drawDefaultBackground();
27+
28+
ScaledResolution scaled = new ScaledResolution(Minecraft.getMinecraft());
29+
int width = scaled.getScaledWidth();
30+
int height = scaled.getScaledHeight();
31+
32+
drawCenteredString(fontRenderer,I18n.format("TASmod: Timed out"), width / 2, height / 4 + 50 + -16, 0xFFFFFF);
33+
drawCenteredString(fontRenderer,I18n.format("Lost or could not make a connection to the TASmod on the server side"), width / 2, height / 4 + 50 + -6, 0xFFFFFF);
34+
drawCenteredString(fontRenderer,I18n.format("Possible Cause:"), width / 2, height / 4 + 50 + 14, 0xFFFFFF);
35+
drawCenteredString(fontRenderer,I18n.format("The server has no TASmod installed or the server lagged too much."), width / 2, height / 4 + 50 + 24, 0xFFFFFF);
36+
drawCenteredString(fontRenderer,I18n.format("It's also possible to get this message in singleplayer if the integrated server stopped responding."), width / 2, height / 4 + 50 + 34, 0xFFFFFF);
37+
super.drawScreen(mouseX, mouseY, partialTicks);
38+
}
39+
@Override
40+
protected void actionPerformed(GuiButton button) throws IOException {
41+
if(button.id==0) {
42+
Minecraft.getMinecraft().displayGuiScreen(new GuiMultiplayer(previous));
43+
}
44+
}
45+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package de.scribble.lp.tasmod.gui;
2+
3+
import java.io.IOException;
4+
5+
import net.minecraft.client.Minecraft;
6+
import net.minecraft.client.gui.GuiButton;
7+
import net.minecraft.client.gui.GuiMultiplayer;
8+
import net.minecraft.client.gui.GuiScreen;
9+
import net.minecraft.client.gui.ScaledResolution;
10+
import net.minecraft.client.resources.I18n;
11+
12+
public class GuiMultiplayerWarn extends GuiScreen{
13+
private GuiScreen previous;
14+
public GuiMultiplayerWarn(GuiScreen screen) {
15+
previous=screen;
16+
}
17+
@Override
18+
public void initGui() {
19+
this.buttonList.add(new GuiButton(0, width / 2 -100, height / 2 + 70, "Continue"));
20+
super.initGui();
21+
}
22+
@Override
23+
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
24+
this.drawDefaultBackground();
25+
26+
ScaledResolution scaled = new ScaledResolution(Minecraft.getMinecraft());
27+
int width = scaled.getScaledWidth();
28+
int height = scaled.getScaledHeight();
29+
30+
drawCenteredString(fontRenderer,I18n.format("WARNING"), width / 2, height / 4 + 50 + -16, 0xCE0000);
31+
drawCenteredString(fontRenderer,I18n.format("Do NOT join a server that has not installed the TASmod (e.g. Hypixel)."), width / 2, height / 4 + 50 + -6, 0xFFFFFF);
32+
drawCenteredString(fontRenderer,I18n.format("You will softlock your game for a few seconds then disconnect!"), width / 2, height / 4 + 50 + 4, 0xFFFFFF);
33+
drawCenteredString(fontRenderer,I18n.format("This mod only works together with a server."), width / 2, height / 4 + 50 + 14, 0xFFFFFF);
34+
35+
super.drawScreen(mouseX, mouseY, partialTicks);
36+
}
37+
@Override
38+
protected void actionPerformed(GuiButton button) throws IOException {
39+
if(button.id==0) {
40+
Minecraft.getMinecraft().displayGuiScreen(new GuiMultiplayer(previous));
41+
}
42+
}
43+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package de.scribble.lp.tasmod.mixin;
2+
3+
import org.spongepowered.asm.mixin.Mixin;
4+
import org.spongepowered.asm.mixin.injection.At;
5+
import org.spongepowered.asm.mixin.injection.Redirect;
6+
7+
import de.scribble.lp.tasmod.gui.GuiMultiplayerWarn;
8+
import net.minecraft.client.Minecraft;
9+
import net.minecraft.client.gui.GuiMainMenu;
10+
import net.minecraft.client.gui.GuiScreen;
11+
12+
@Mixin(GuiMainMenu.class)
13+
public class MixinGuiMainMenu {
14+
@Redirect(method = "actionPerformed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;displayGuiScreen(Lnet/minecraft/client/gui/GuiScreen;)V", ordinal = 3))
15+
public void redirectOpenGuiMultiplayer(Minecraft mc) {
16+
mc.displayGuiScreen(new GuiMultiplayerWarn((GuiMainMenu)(Object)this));
17+
}
18+
}

src/main/java/de/scribble/lp/tasmod/mixin/MixinMinecraft.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
import de.scribble.lp.tasmod.ModLoader;
1717
import de.scribble.lp.tasmod.duck.SubtickDuck;
18+
import de.scribble.lp.tasmod.gui.GuiMultiplayerTimeOut;
19+
import de.scribble.lp.tasmod.gui.GuiMultiplayerWarn;
1820
import de.scribble.lp.tasmod.playback.InputPlayback;
1921
import de.scribble.lp.tasmod.recording.InputRecorder;
2022
import de.scribble.lp.tasmod.tickratechanger.TickrateChangerClient;
@@ -178,6 +180,8 @@ public abstract class MixinMinecraft {
178180
protected abstract int getLimitFramerate();
179181
@Shadow
180182
protected abstract boolean isFramerateLimitBelowMax();
183+
184+
public int softLockTimer;
181185
/**
182186
* Rewrites
183187
*
@@ -224,6 +228,12 @@ public void redoentireRunGameLoop(CallbackInfo ci) throws IOException {
224228
}
225229
this.runTick();
226230
}else if(TickSync.getClienttickcounter()>TickSync.getServertickcounter()) { //If it's too fast
231+
softLockTimer++;
232+
if(softLockTimer==100) {
233+
this.world.sendQuittingDisconnectingPacket();
234+
this.loadWorld((WorldClient)null);
235+
this.displayGuiScreen(new GuiMultiplayerTimeOut());
236+
}
227237
continue;
228238
}else if(TickSync.getClienttickcounter()<TickSync.getServertickcounter()) {
229239
for(int h=0;h<TickSync.getServertickcounter()-TickSync.getClienttickcounter();h++) { //If it's too slow
@@ -239,12 +249,6 @@ public void redoentireRunGameLoop(CallbackInfo ci) throws IOException {
239249
((SubtickDuck)this.entityRenderer).runSubtick(this.isGamePaused ? this.renderPartialTicksPaused : this.timer.renderPartialTicks);
240250
}
241251
this.runTick();
242-
}else { //If Ticksync is disabled
243-
TickSync.incrementClienttickcounter();
244-
if(TickrateChangerClient.TICKS_PER_SECOND!=0) {
245-
((SubtickDuck)this.entityRenderer).runSubtick(this.isGamePaused ? this.renderPartialTicksPaused : this.timer.renderPartialTicks);
246-
}
247-
this.runTick();
248252
}
249253
if(TickrateChangerClient.ADVANCE_TICK) {
250254
TickrateChangerClient.ADVANCE_TICK=false;
@@ -352,6 +356,8 @@ public void redoentireRunGameLoop(CallbackInfo ci) throws IOException {
352356
this.mcProfiler.endSection();
353357
ci.cancel();
354358
}
359+
@Shadow
360+
protected abstract void loadWorld(WorldClient worldClient);
355361
// @Inject(method="runGameLoop",at = @At(value = "INVOKE", target = "Lnet/minecraft/profiler/Profiler;startSection(S)V", shift = At.Shift.AFTER, remap = false, ordinal = 2))
356362
// public void injectTick(CallbackInfo ci) {
357363
// if(TickrateChangerClient.cooldownKeyPause>0) {
@@ -412,6 +418,7 @@ public void injectInit(CallbackInfo ci) {
412418

413419
@Inject(method="runTick", at=@At(value="HEAD"), cancellable = true)
414420
public void injectRunTick(CallbackInfo ci) throws IOException {
421+
softLockTimer=0;
415422
if (this.rightClickDelayTimer > 0)
416423
{
417424
--this.rightClickDelayTimer;

src/main/java/de/scribble/lp/tasmod/ticksync/CommandTickSync.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

src/main/java/de/scribble/lp/tasmod/ticksync/TickSyncCamera.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/main/resources/mixins.tasmod.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"MixinGuiChat",
2020
"MixinGuiScreenAdvancements",
2121
"MixinGuiScreen",
22-
"MixinKeyBinding"
22+
"MixinKeyBinding",
23+
"MixinGuiMainMenu"
2324
]
2425
}

0 commit comments

Comments
 (0)