proper chams implemetation

see #4
This commit is contained in:
Ridan Vandenbergh 2018-08-17 19:23:41 +02:00
parent 6216841893
commit 721bc7ad8c
3 changed files with 48 additions and 48 deletions

View File

@ -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 <S extends EntityLivingBase> 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);
}
}
}

View File

@ -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<DisplaySizeChangedEvent> 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));
}
}

View File

@ -19,6 +19,7 @@
"MixinRenderPlayer",
"MixinGuiPlayerTabOverlay",
"MixinC00Handshake",
"MixinNetHandlerPlayClient"
"MixinNetHandlerPlayClient",
"MixinRenderLiving"
]
}