From fee42cc2917c42f61edb479ecd82c55647dad457 Mon Sep 17 00:00:00 2001 From: Rigamortis Date: Tue, 19 Nov 2019 16:42:31 -0900 Subject: [PATCH] Fixed accuracy issue with logout spots, Added blur shader toggle for the HudEditor Gui --- build.gradle | 2 +- .../seppuku/impl/gui/hud/GuiHudEditor.java | 5 ++++ .../impl/module/render/LogoutSpotsModule.java | 17 ++++++------ .../impl/module/ui/HudEditorModule.java | 27 ++++++++++++++++--- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index 1cd2448..916176c 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ apply plugin: "com.github.johnrengelman.shadow" version = "3.0" group = "me.rigamortis" archivesBaseName = "seppuku" -def buildmode = "RELEASE" +def buildmode = "IDE" sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. compileJava { diff --git a/src/main/java/me/rigamortis/seppuku/impl/gui/hud/GuiHudEditor.java b/src/main/java/me/rigamortis/seppuku/impl/gui/hud/GuiHudEditor.java index a2919cf..6895bab 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/gui/hud/GuiHudEditor.java +++ b/src/main/java/me/rigamortis/seppuku/impl/gui/hud/GuiHudEditor.java @@ -9,6 +9,7 @@ import me.rigamortis.seppuku.impl.module.ui.HudEditorModule; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.OpenGlHelper; import org.lwjgl.input.Keyboard; import java.io.IOException; @@ -117,6 +118,10 @@ public final class GuiHudEditor extends GuiScreen { public void onGuiClosed() { Seppuku.INSTANCE.getConfigManager().saveAll(); + if (OpenGlHelper.shadersSupported) { + mc.entityRenderer.stopUseShader(); + } + for (HudComponent component : Seppuku.INSTANCE.getHudManager().getComponentList()) { if (component instanceof DraggableHudComponent) { if (component.isVisible()) { diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/render/LogoutSpotsModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/render/LogoutSpotsModule.java index 291e618..fe3f08f 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/render/LogoutSpotsModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/render/LogoutSpotsModule.java @@ -13,7 +13,7 @@ import me.rigamortis.seppuku.api.value.NumberValue; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import team.stiff.pomelo.impl.annotated.handler.annotation.Listener; import java.util.Map; @@ -76,7 +76,7 @@ public final class LogoutSpotsModule extends Module { GlStateManager.enableAlpha(); GlStateManager.enableDepth(); GlStateManager.color(1, 1, 1, 1); - mc.getRenderManager().renderEntity(data.ghost, data.position.getX() - mc.getRenderManager().renderPosX, data.position.getY() - mc.getRenderManager().renderPosY, data.position.getZ() - mc.getRenderManager().renderPosZ, data.ghost.rotationYaw, mc.getRenderPartialTicks(), false); + mc.getRenderManager().renderEntity(data.ghost, data.position.x - mc.getRenderManager().renderPosX, data.position.y - mc.getRenderManager().renderPosY, data.position.z - mc.getRenderManager().renderPosZ, data.ghost.rotationYaw, mc.getRenderPartialTicks(), false); GlStateManager.disableLighting(); GlStateManager.disableBlend(); GlStateManager.disableAlpha(); @@ -96,7 +96,7 @@ public final class LogoutSpotsModule extends Module { continue; } - final GLUProjection.Projection projection = GLUProjection.getInstance().project(data.position.getX() - mc.getRenderManager().renderPosX, data.position.getY() - mc.getRenderManager().renderPosY, data.position.getZ() - mc.getRenderManager().renderPosZ, GLUProjection.ClampMode.NONE, true); + final GLUProjection.Projection projection = GLUProjection.getInstance().project(data.position.x - mc.getRenderManager().renderPosX, data.position.y - mc.getRenderManager().renderPosY, data.position.z - mc.getRenderManager().renderPosZ, GLUProjection.ClampMode.NONE, true); if (projection != null && projection.isType(GLUProjection.Projection.Type.INSIDE)) { GlStateManager.pushMatrix(); GlStateManager.translate(projection.getX(), projection.getY(), 0); @@ -119,7 +119,8 @@ public final class LogoutSpotsModule extends Module { final EntityPlayer player = this.playerCache.get(uuid); - final PlayerData data = new PlayerData(player.getPosition(), player.getGameProfile(), player); + //final Vec3d interp = MathUtil.interpolateEntity(player, mc.getRenderPartialTicks()); + final PlayerData data = new PlayerData(player.getPositionVector(), player.getGameProfile(), player); if (!this.hasPlayerLogged(uuid)) { this.logoutCache.put(uuid, data); @@ -156,16 +157,16 @@ public final class LogoutSpotsModule extends Module { } private boolean isOutOfRange(PlayerData data) { - BlockPos position = data.position; - return Minecraft.getMinecraft().player.getDistance(position.getX(), position.getY(), position.getZ()) > this.removeDistance.getInt(); + Vec3d position = data.position; + return Minecraft.getMinecraft().player.getDistance(position.x, position.y, position.z) > this.removeDistance.getInt(); } private class PlayerData { - BlockPos position; + Vec3d position; GameProfile profile; EntityPlayer ghost; - public PlayerData(BlockPos position, GameProfile profile, EntityPlayer ghost) { + public PlayerData(Vec3d position, GameProfile profile, EntityPlayer ghost) { this.position = position; this.profile = profile; this.ghost = ghost; diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/ui/HudEditorModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/ui/HudEditorModule.java index 561c32c..dafd498 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/ui/HudEditorModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/ui/HudEditorModule.java @@ -1,8 +1,12 @@ package me.rigamortis.seppuku.impl.module.ui; +import me.rigamortis.seppuku.api.event.minecraft.EventDisplayGui; import me.rigamortis.seppuku.api.module.Module; import me.rigamortis.seppuku.impl.gui.hud.GuiHudEditor; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.util.ResourceLocation; +import team.stiff.pomelo.impl.annotated.handler.annotation.Listener; /** * Author Seth @@ -13,15 +17,32 @@ public final class HudEditorModule extends Module { private boolean open; public HudEditorModule() { - super("HudEditor", new String[] {"HudEdit", "HEdit"}, "Displays a menu to modify the hud", "NONE", -1, ModuleType.UI); + super("HudEditor", new String[]{"HudEdit", "HEdit"}, "Displays a menu to modify the hud", "NONE", -1, ModuleType.UI); this.setHidden(true); } @Override public void onToggle() { super.onToggle(); - Minecraft.getMinecraft().displayGuiScreen(new GuiHudEditor()); - this.open = true; + final Minecraft mc = Minecraft.getMinecraft(); + + if (mc.world != null) { + mc.displayGuiScreen(new GuiHudEditor()); + + if (OpenGlHelper.shadersSupported) { + mc.entityRenderer.loadShader(new ResourceLocation("minecraft", "shaders/post/blur.json")); + } + this.open = true; + } + } + + @Listener + public void displayGui(EventDisplayGui event) { + if (Minecraft.getMinecraft().currentScreen instanceof GuiHudEditor) { + if (event.getScreen() == null && this.open) { + event.setCanceled(true); + } + } } public boolean isOpen() {