From 721bc7ad8cd23f31ecb27f2df0570e927ada7190 Mon Sep 17 00:00:00 2001 From: Ridan Vandenbergh Date: Fri, 17 Aug 2018 19:23:41 +0200 Subject: [PATCH] proper chams implemetation see #4 --- .../kami/mixin/client/MixinRenderLiving.java | 37 ++++++++++++ .../kami/module/modules/render/Chams.java | 56 +++---------------- src/main/resources/mixins.kami.json | 3 +- 3 files changed, 48 insertions(+), 48 deletions(-) create mode 100644 src/main/java/me/zeroeightsix/kami/mixin/client/MixinRenderLiving.java diff --git a/src/main/java/me/zeroeightsix/kami/mixin/client/MixinRenderLiving.java b/src/main/java/me/zeroeightsix/kami/mixin/client/MixinRenderLiving.java new file mode 100644 index 00000000..81842365 --- /dev/null +++ b/src/main/java/me/zeroeightsix/kami/mixin/client/MixinRenderLiving.java @@ -0,0 +1,37 @@ +package me.zeroeightsix.kami.mixin.client; + +import me.zeroeightsix.kami.module.ModuleManager; +import me.zeroeightsix.kami.module.modules.render.Chams; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import org.lwjgl.opengl.GL11; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +/** + * @author 086 + */ +@Mixin(RenderLiving.class) +public class MixinRenderLiving { + + @Inject(method = "doRender", at = @At("HEAD")) + private void injectChamsPre(EntityLiving entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo info) { + if (ModuleManager.isModuleEnabled("Chams") && Chams.renderChams(entity)) { + GL11.glEnable(32823); + GL11.glPolygonOffset(1.0f, -1000000.0f); + } + } + + @Inject(method = "doRender", at = @At("RETURN")) + private void injectChamsPost(EntityLiving entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo info) { + if (ModuleManager.isModuleEnabled("Chams") && Chams.renderChams(entity)) { + GL11.glPolygonOffset(1.0f, 1000000.0f); + GL11.glDisable(32823); + } + } + + +} diff --git a/src/main/java/me/zeroeightsix/kami/module/modules/render/Chams.java b/src/main/java/me/zeroeightsix/kami/module/modules/render/Chams.java index 61bd360a..1c89d91b 100644 --- a/src/main/java/me/zeroeightsix/kami/module/modules/render/Chams.java +++ b/src/main/java/me/zeroeightsix/kami/module/modules/render/Chams.java @@ -2,66 +2,28 @@ package me.zeroeightsix.kami.module.modules.render; import me.zeroeightsix.kami.event.events.RenderEvent; import me.zeroeightsix.kami.module.Module; +import me.zeroeightsix.kami.setting.Setting; import me.zeroeightsix.kami.util.EntityUtil; import me.zeroeightsix.kami.util.Wrapper; +import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.math.Vec3d; /** * Created by 086 on 12/12/2017. */ -@Module.Info(name = "Chams", category = Module.Category.RENDER) +@Module.Info(name = "Chams", category = Module.Category.RENDER, description = "See entities through walls") public class Chams extends Module { -// static Framebuffer entityFBO; + @Setting(name = "Players") private static boolean players = true; + @Setting(name = "Animals") private static boolean animals = false; + @Setting(name = "Mobs") private static boolean mobs = false; - - public Chams() { -// entityFBO = new Framebuffer(mc.displayWidth, mc.displayHeight, false); - } - - @Override - public void onWorldRender(RenderEvent event) { -// entityFBO.setFramebufferColor(0,0,0,0); -// entityFBO.framebufferClear(); - -// entityFBO.bindFramebuffer(false); -// GlStateManager.enableBlend(); -// GlStateManager.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - GlStateManager.pushMatrix(); - mc.world.playerEntities.stream().filter(entityPlayer -> entityPlayer != mc.player).forEach(Chams::drawEntityOutline); - mc.world.loadedEntityList.stream().filter(entity -> EntityUtil.isLiving(entity) && entity != mc.player).forEach(Chams::drawEntityOutline); -// entityFBO.unbindFramebuffer(); - GlStateManager.popMatrix(); -// mc.getFramebuffer().bindFramebuffer(true); - -// entityFBO.framebufferRenderExt(mc.displayWidth, mc.displayHeight, false); - - GlStateManager.color(1,1,1); - GlStateManager.enableBlend(); - } - - /* - @EventHandler - public Listener listener = new Listener<>(event -> { - try { - if (GLContext.getCapabilities() == null) return; - }catch (Exception e) { - return; - } - entityFBO = new Framebuffer(mc.displayWidth, mc.displayHeight, false); - });*/ - - static void drawEntityOutline(Entity e) { - Render render = Wrapper.getMinecraft().getRenderManager().getEntityRenderObject(e); - - Vec3d interp = EntityUtil.getInterpolatedPos(e, Wrapper.getMinecraft().getRenderPartialTicks()); - interp = interp.subtract(mc.getRenderManager().renderPosX,mc.getRenderManager().renderPosY,mc.getRenderManager().renderPosZ); - GlStateManager.enableBlend(); - GlStateManager.enableTexture2D(); - render.doRender(e, interp.x, interp.y, interp.z, e.rotationYaw, Wrapper.getMinecraft().getRenderPartialTicks()); + public static boolean renderChams(Entity entity) { + return (entity instanceof EntityPlayer ? players : (EntityUtil.isPassive(entity) ? animals : mobs)); } } diff --git a/src/main/resources/mixins.kami.json b/src/main/resources/mixins.kami.json index 15177419..37ea9a0f 100644 --- a/src/main/resources/mixins.kami.json +++ b/src/main/resources/mixins.kami.json @@ -19,6 +19,7 @@ "MixinRenderPlayer", "MixinGuiPlayerTabOverlay", "MixinC00Handshake", - "MixinNetHandlerPlayClient" + "MixinNetHandlerPlayClient", + "MixinRenderLiving" ] }