Skip to content

Commit

Permalink
Removed ticksync command and added warnings
Browse files Browse the repository at this point in the history
Closes #20
  • Loading branch information
Scribble authored and PancakeTAS committed Dec 21, 2020
1 parent 774d02f commit d589cf5
Show file tree
Hide file tree
Showing 9 changed files with 122 additions and 66 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ apply plugin: 'org.spongepowered.mixin'
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.


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

Expand Down
2 changes: 0 additions & 2 deletions src/main/java/de/scribble/lp/tasmod/ModLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import de.scribble.lp.tasmod.playback.CommandPlay;
import de.scribble.lp.tasmod.recording.CommandRecord;
import de.scribble.lp.tasmod.tickratechanger.CommandTickrate;
import de.scribble.lp.tasmod.ticksync.CommandTickSync;
import de.scribble.lp.tasmod.tutorial.CommandPlaybacktutorial;
import net.minecraft.server.MinecraftServer;
import net.minecraftforge.fml.common.Mod;
Expand Down Expand Up @@ -58,7 +57,6 @@ public void serverStart(FMLServerStartingEvent ev) {

//Command handling
ev.registerServerCommand(new CommandTickrate());
ev.registerServerCommand(new CommandTickSync());
ev.registerServerCommand(new CommandRecord());
ev.registerServerCommand(new CommandPlay());
ev.registerServerCommand(new CommandPlaybacktutorial());
Expand Down
45 changes: 45 additions & 0 deletions src/main/java/de/scribble/lp/tasmod/gui/GuiMultiplayerTimeOut.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package de.scribble.lp.tasmod.gui;

import java.io.IOException;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.gui.GuiMultiplayer;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.resources.I18n;

public class GuiMultiplayerTimeOut extends GuiScreen{
private GuiScreen previous;

public GuiMultiplayerTimeOut() {
previous=new GuiMainMenu();
}
@Override
public void initGui() {
this.buttonList.add(new GuiButton(0, width / 2 -100, height / 2 + 70, "Continue"));
super.initGui();
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
this.drawDefaultBackground();

ScaledResolution scaled = new ScaledResolution(Minecraft.getMinecraft());
int width = scaled.getScaledWidth();
int height = scaled.getScaledHeight();

drawCenteredString(fontRenderer,I18n.format("TASmod: Timed out"), width / 2, height / 4 + 50 + -16, 0xFFFFFF);
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);
drawCenteredString(fontRenderer,I18n.format("Possible Cause:"), width / 2, height / 4 + 50 + 14, 0xFFFFFF);
drawCenteredString(fontRenderer,I18n.format("The server has no TASmod installed or the server lagged too much."), width / 2, height / 4 + 50 + 24, 0xFFFFFF);
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);
super.drawScreen(mouseX, mouseY, partialTicks);
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
if(button.id==0) {
Minecraft.getMinecraft().displayGuiScreen(new GuiMultiplayer(previous));
}
}
}
43 changes: 43 additions & 0 deletions src/main/java/de/scribble/lp/tasmod/gui/GuiMultiplayerWarn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package de.scribble.lp.tasmod.gui;

import java.io.IOException;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiMultiplayer;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.resources.I18n;

public class GuiMultiplayerWarn extends GuiScreen{
private GuiScreen previous;
public GuiMultiplayerWarn(GuiScreen screen) {
previous=screen;
}
@Override
public void initGui() {
this.buttonList.add(new GuiButton(0, width / 2 -100, height / 2 + 70, "Continue"));
super.initGui();
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
this.drawDefaultBackground();

ScaledResolution scaled = new ScaledResolution(Minecraft.getMinecraft());
int width = scaled.getScaledWidth();
int height = scaled.getScaledHeight();

drawCenteredString(fontRenderer,I18n.format("WARNING"), width / 2, height / 4 + 50 + -16, 0xCE0000);
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);
drawCenteredString(fontRenderer,I18n.format("You will softlock your game for a few seconds then disconnect!"), width / 2, height / 4 + 50 + 4, 0xFFFFFF);
drawCenteredString(fontRenderer,I18n.format("This mod only works together with a server."), width / 2, height / 4 + 50 + 14, 0xFFFFFF);

super.drawScreen(mouseX, mouseY, partialTicks);
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
if(button.id==0) {
Minecraft.getMinecraft().displayGuiScreen(new GuiMultiplayer(previous));
}
}
}
18 changes: 18 additions & 0 deletions src/main/java/de/scribble/lp/tasmod/mixin/MixinGuiMainMenu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package de.scribble.lp.tasmod.mixin;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

import de.scribble.lp.tasmod.gui.GuiMultiplayerWarn;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.gui.GuiScreen;

@Mixin(GuiMainMenu.class)
public class MixinGuiMainMenu {
@Redirect(method = "actionPerformed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;displayGuiScreen(Lnet/minecraft/client/gui/GuiScreen;)V", ordinal = 3))
public void redirectOpenGuiMultiplayer(Minecraft mc) {
mc.displayGuiScreen(new GuiMultiplayerWarn((GuiMainMenu)(Object)this));
}
}
19 changes: 13 additions & 6 deletions src/main/java/de/scribble/lp/tasmod/mixin/MixinMinecraft.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

import de.scribble.lp.tasmod.ModLoader;
import de.scribble.lp.tasmod.duck.SubtickDuck;
import de.scribble.lp.tasmod.gui.GuiMultiplayerTimeOut;
import de.scribble.lp.tasmod.gui.GuiMultiplayerWarn;
import de.scribble.lp.tasmod.playback.InputPlayback;
import de.scribble.lp.tasmod.recording.InputRecorder;
import de.scribble.lp.tasmod.tickratechanger.TickrateChangerClient;
Expand Down Expand Up @@ -178,6 +180,8 @@ public abstract class MixinMinecraft {
protected abstract int getLimitFramerate();
@Shadow
protected abstract boolean isFramerateLimitBelowMax();

public int softLockTimer;
/**
* Rewrites
*
Expand Down Expand Up @@ -224,6 +228,12 @@ public void redoentireRunGameLoop(CallbackInfo ci) throws IOException {
}
this.runTick();
}else if(TickSync.getClienttickcounter()>TickSync.getServertickcounter()) { //If it's too fast
softLockTimer++;
if(softLockTimer==100) {
this.world.sendQuittingDisconnectingPacket();
this.loadWorld((WorldClient)null);
this.displayGuiScreen(new GuiMultiplayerTimeOut());
}
continue;
}else if(TickSync.getClienttickcounter()<TickSync.getServertickcounter()) {
for(int h=0;h<TickSync.getServertickcounter()-TickSync.getClienttickcounter();h++) { //If it's too slow
Expand All @@ -239,12 +249,6 @@ public void redoentireRunGameLoop(CallbackInfo ci) throws IOException {
((SubtickDuck)this.entityRenderer).runSubtick(this.isGamePaused ? this.renderPartialTicksPaused : this.timer.renderPartialTicks);
}
this.runTick();
}else { //If Ticksync is disabled
TickSync.incrementClienttickcounter();
if(TickrateChangerClient.TICKS_PER_SECOND!=0) {
((SubtickDuck)this.entityRenderer).runSubtick(this.isGamePaused ? this.renderPartialTicksPaused : this.timer.renderPartialTicks);
}
this.runTick();
}
if(TickrateChangerClient.ADVANCE_TICK) {
TickrateChangerClient.ADVANCE_TICK=false;
Expand Down Expand Up @@ -352,6 +356,8 @@ public void redoentireRunGameLoop(CallbackInfo ci) throws IOException {
this.mcProfiler.endSection();
ci.cancel();
}
@Shadow
protected abstract void loadWorld(WorldClient worldClient);
// @Inject(method="runGameLoop",at = @At(value = "INVOKE", target = "Lnet/minecraft/profiler/Profiler;startSection(S)V", shift = At.Shift.AFTER, remap = false, ordinal = 2))
// public void injectTick(CallbackInfo ci) {
// if(TickrateChangerClient.cooldownKeyPause>0) {
Expand Down Expand Up @@ -412,6 +418,7 @@ public void injectInit(CallbackInfo ci) {

@Inject(method="runTick", at=@At(value="HEAD"), cancellable = true)
public void injectRunTick(CallbackInfo ci) throws IOException {
softLockTimer=0;
if (this.rightClickDelayTimer > 0)
{
--this.rightClickDelayTimer;
Expand Down
41 changes: 0 additions & 41 deletions src/main/java/de/scribble/lp/tasmod/ticksync/CommandTickSync.java

This file was deleted.

15 changes: 0 additions & 15 deletions src/main/java/de/scribble/lp/tasmod/ticksync/TickSyncCamera.java

This file was deleted.

3 changes: 2 additions & 1 deletion src/main/resources/mixins.tasmod.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"MixinGuiChat",
"MixinGuiScreenAdvancements",
"MixinGuiScreen",
"MixinKeyBinding"
"MixinKeyBinding",
"MixinGuiMainMenu"
]
}

0 comments on commit d589cf5

Please sign in to comment.