mirror of
https://github.com/chylex/Better-Sprinting.git
synced 2025-04-09 18:15:41 +02:00
Reimplement integrity check
This commit is contained in:
parent
5b211f1ed5
commit
e158b7e313
src/main/java/chylex/bettersprinting/client
@ -17,6 +17,8 @@ import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import chylex.bettersprinting.client.gui.GuiButtonSprint;
|
||||
import chylex.bettersprinting.client.gui.GuiSprint;
|
||||
import chylex.bettersprinting.client.player.LivingUpdate;
|
||||
import chylex.bettersprinting.client.player.impl.IntegrityCheck;
|
||||
import chylex.bettersprinting.client.update.UpdateNotificationManager;
|
||||
import chylex.bettersprinting.system.PacketPipeline;
|
||||
|
||||
@ -31,6 +33,7 @@ public final class ClientEventHandler{
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPlayerLoginClient(PlayerLoggedInEvent e){
|
||||
IntegrityCheck.register();
|
||||
UpdateNotificationManager.run();
|
||||
}
|
||||
|
||||
@ -48,6 +51,8 @@ public final class ClientEventHandler{
|
||||
@SubscribeEvent
|
||||
public void onClientDisconnectedFromServer(ClientDisconnectionFromServerEvent e){
|
||||
ClientModManager.svSurvivalFlyingBoost = ClientModManager.svRunInAllDirs = ClientModManager.svDisableMod = false;
|
||||
IntegrityCheck.unregister();
|
||||
LivingUpdate.cleanup();
|
||||
stopChecking = false;
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,6 @@ import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import chylex.bettersprinting.BetterSprintingConfig;
|
||||
import chylex.bettersprinting.BetterSprintingProxy;
|
||||
import chylex.bettersprinting.client.player.impl.LogicImplOverride;
|
||||
import chylex.bettersprinting.client.player.impl.LogicImplPlayerAPI;
|
||||
import chylex.bettersprinting.system.Log;
|
||||
import chylex.bettersprinting.system.PacketPipeline;
|
||||
@ -41,9 +40,6 @@ public class ClientProxy extends BetterSprintingProxy{
|
||||
if (Loader.isModLoaded("PlayerAPI")){
|
||||
LogicImplPlayerAPI.register();
|
||||
}
|
||||
else{
|
||||
LogicImplOverride.register();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -22,6 +22,7 @@ public final class LivingUpdate{
|
||||
private static final Minecraft mc;
|
||||
private static final MethodHandle mPushOutOfBlocks;
|
||||
private static PlayerLogicHandler currentHandler;
|
||||
private static boolean hasTriggered;
|
||||
|
||||
static{
|
||||
mc = Minecraft.getMinecraft();
|
||||
@ -33,10 +34,20 @@ public final class LivingUpdate{
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean checkIntegrity(){
|
||||
return hasTriggered;
|
||||
}
|
||||
|
||||
public static void cleanup(){
|
||||
currentHandler = null;
|
||||
hasTriggered = false;
|
||||
}
|
||||
|
||||
// UPDATE | EntityPlayerSP.onLivingUpdate | 1.12
|
||||
public static void callPreSuper(EntityPlayerSP $this){
|
||||
if (currentHandler == null || currentHandler.getPlayer() != $this){
|
||||
currentHandler = new PlayerLogicHandler($this);
|
||||
hasTriggered = true;
|
||||
}
|
||||
|
||||
// VANILLA
|
||||
|
@ -0,0 +1,49 @@
|
||||
package chylex.bettersprinting.client.player.impl;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent.Phase;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import chylex.bettersprinting.client.ClientModManager;
|
||||
import chylex.bettersprinting.client.player.LivingUpdate;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public final class IntegrityCheck{
|
||||
public static void register(){
|
||||
MinecraftForge.EVENT_BUS.register(instance);
|
||||
}
|
||||
|
||||
public static void unregister(){
|
||||
MinecraftForge.EVENT_BUS.unregister(instance);
|
||||
instance.initialPlayerPos = Vec3d.ZERO;
|
||||
}
|
||||
|
||||
private static final IntegrityCheck instance = new IntegrityCheck();
|
||||
private static final Minecraft mc = Minecraft.getMinecraft();
|
||||
|
||||
private Vec3d initialPlayerPos = Vec3d.ZERO;
|
||||
|
||||
private IntegrityCheck(){}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPlayerTick(ClientTickEvent e){
|
||||
if (e.phase == Phase.END && mc.player != null && mc.playerController != null){
|
||||
if (LivingUpdate.checkIntegrity()){
|
||||
unregister();
|
||||
}
|
||||
else if (initialPlayerPos.equals(Vec3d.ZERO)){
|
||||
initialPlayerPos = mc.player.getPositionVector();
|
||||
}
|
||||
else if (mc.player.getPositionVector().distanceTo(initialPlayerPos) > 1D){
|
||||
// TODO fix bs.game.integrity
|
||||
mc.player.sendMessage(new TextComponentString(ClientModManager.chatPrefix+I18n.format("bs.game.integrity")));
|
||||
unregister();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
package chylex.bettersprinting.client.player.impl;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiDownloadTerrain;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
import net.minecraftforge.client.event.GuiOpenEvent;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent.Phase;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import chylex.bettersprinting.client.ClientModManager;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public final class LogicImplOverride{
|
||||
public static void register(){
|
||||
MinecraftForge.EVENT_BUS.register(new LogicImplOverride());
|
||||
}
|
||||
|
||||
private static final Minecraft mc = Minecraft.getMinecraft();
|
||||
|
||||
private byte checkTimer = -120;
|
||||
private boolean stopChecking = false;
|
||||
|
||||
private LogicImplOverride(){}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onGuiOpen(GuiOpenEvent e){
|
||||
if (e.getGui() != null && e.getGui().getClass() == GuiDownloadTerrain.class){
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onClientTick(ClientTickEvent e){
|
||||
if (e.phase == Phase.END || mc.player == null || mc.playerController == null)return;
|
||||
|
||||
if (!stopChecking && --checkTimer < -125){
|
||||
checkTimer = 120;
|
||||
Class<?> controllerClass = mc.playerController.getClass();
|
||||
|
||||
if (false){ // TODO
|
||||
mc.player.sendMessage(new TextComponentString(ClientModManager.chatPrefix+I18n.format("bs.game.integrity").replace("$", controllerClass.getName())));
|
||||
stopChecking = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user