From 9015e8d2f7db157002c6eec8ec28c1359249ed38 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 12 Sep 2021 18:17:29 +0200 Subject: [PATCH] Fix block place lag --- .gitignore | 3 +++ src/main/java/me/vaxry/harakiri/Harakiri.java | 11 ++++++++++ .../framework/mixin/block/MixinBlock.java | 20 ++++++++++--------- .../framework/mixin/gui/MixinGuiScreen.java | 3 --- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 3ebc722..54c6ece 100644 --- a/.gitignore +++ b/.gitignore @@ -186,3 +186,6 @@ hs_err_pid* # End of https://www.gitignore.io/api/java,eclipse,forgegradle,intellij+all /build/ /.gradle/ + +# vs +.vscode/ \ No newline at end of file diff --git a/src/main/java/me/vaxry/harakiri/Harakiri.java b/src/main/java/me/vaxry/harakiri/Harakiri.java index dc7b6f2..f8cd529 100644 --- a/src/main/java/me/vaxry/harakiri/Harakiri.java +++ b/src/main/java/me/vaxry/harakiri/Harakiri.java @@ -14,6 +14,7 @@ import me.vaxry.harakiri.impl.manager.*; import me.vaxry.harakiri.impl.module.config.ReloadConfigsModule; import me.vaxry.harakiri.impl.module.render.CustomFontModule; +import me.vaxry.harakiri.impl.module.render.XrayModule; import net.minecraft.client.Minecraft; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; @@ -43,6 +44,9 @@ public final class Harakiri { private Logger logger; + // For fast access to XRay (block lag) + private XrayModule xrayModule = null; + //private String prevTitle; private EventManager eventManager; @@ -142,6 +146,9 @@ public void init() { // Create the font renderer fontRendererExtd = new FontRendererExtd(Minecraft.getMinecraft().gameSettings, new ResourceLocation("harakirimod", "textures/ascii.png"), Minecraft.getMinecraft().renderEngine, true); + // Get the XRay Module + this.xrayModule = (XrayModule)this.moduleManager.find(XrayModule.class); + // Add runtime hook to listen for shutdown to save configs Runtime.getRuntime().addShutdownHook(new Thread("Harakiri SH") { @Override @@ -420,6 +427,10 @@ public void initPlexusEffect(PlexusComponent plx) { this.plexusEffect = new PlexusEffect(plx); } + public XrayModule getXRayModule() { + return this.xrayModule; + } + public static Harakiri get(){ return INSTANCE; } diff --git a/src/main/java/me/vaxry/harakiri/framework/mixin/block/MixinBlock.java b/src/main/java/me/vaxry/harakiri/framework/mixin/block/MixinBlock.java index aff12f6..7715e4a 100644 --- a/src/main/java/me/vaxry/harakiri/framework/mixin/block/MixinBlock.java +++ b/src/main/java/me/vaxry/harakiri/framework/mixin/block/MixinBlock.java @@ -3,11 +3,10 @@ import me.vaxry.harakiri.Harakiri; import me.vaxry.harakiri.framework.event.render.EventRenderBlockSide; import me.vaxry.harakiri.framework.event.world.EventAddCollisionBox; -import me.vaxry.harakiri.framework.event.world.EventGetBlockLayer; +import me.vaxry.harakiri.impl.module.render.XrayModule; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; -import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; @@ -25,22 +24,25 @@ public class MixinBlock { @Inject(at = @At("HEAD"), method = "shouldSideBeRendered", cancellable = true) private void onShouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side, CallbackInfoReturnable cir) { - final EventRenderBlockSide event = new EventRenderBlockSide((Block) (Object) this); - Harakiri.get().getEventManager().dispatchEvent(event); - if (event.isCanceled()) { - cir.cancel(); - cir.setReturnValue(event.isRenderable()); + // prevent horrible block place lag + if(Harakiri.get().getXRayModule().isEnabled()) { + final EventRenderBlockSide event = new EventRenderBlockSide((Block) (Object) this); + Harakiri.get().getEventManager().dispatchEvent(event); + if (event.isCanceled()) { + cir.cancel(); + cir.setReturnValue(event.isRenderable()); + } } } - @Inject(at = @At("HEAD"), method = "getRenderLayer", cancellable = true) + /*@Inject(at = @At("HEAD"), method = "getRenderLayer", cancellable = true) private void onGetRenderLayer(CallbackInfoReturnable cir) { final EventGetBlockLayer event = new EventGetBlockLayer((Block) (Object) this); Harakiri.get().getEventManager().dispatchEvent(event); if (event.isCanceled()) { cir.cancel(); } - } + }*/ @Inject(at = @At("HEAD"), method = "addCollisionBoxToList(Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/AxisAlignedBB;Ljava/util/List;Lnet/minecraft/entity/Entity;Z)V", cancellable = true) diff --git a/src/main/java/me/vaxry/harakiri/framework/mixin/gui/MixinGuiScreen.java b/src/main/java/me/vaxry/harakiri/framework/mixin/gui/MixinGuiScreen.java index f35aa78..15563cd 100644 --- a/src/main/java/me/vaxry/harakiri/framework/mixin/gui/MixinGuiScreen.java +++ b/src/main/java/me/vaxry/harakiri/framework/mixin/gui/MixinGuiScreen.java @@ -1,14 +1,11 @@ package me.vaxry.harakiri.framework.mixin.gui; -import jdk.nashorn.internal.codegen.CompilerConstants; import me.vaxry.harakiri.Harakiri; import me.vaxry.harakiri.framework.event.gui.EventRenderTooltip; import me.vaxry.harakiri.impl.module.render.GuiPlusModule; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.Tessellator; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At;