chunkfinder, velocity fix, bucket nofall, debug fix

This commit is contained in:
Ridan Vandenbergh 2018-08-08 19:50:34 +02:00
parent 9ae694342f
commit c7117c9946
6 changed files with 169 additions and 18 deletions

View File

@ -0,0 +1,27 @@
package me.zeroeightsix.kami.mixin.client;
import me.zeroeightsix.kami.module.modules.render.ChunkFinder;
import net.minecraft.client.network.NetHandlerPlayClient;
import net.minecraft.network.play.server.SPacketChunkData;
import net.minecraft.world.chunk.Chunk;
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;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
/**
* @author 086
*/
@Mixin(NetHandlerPlayClient.class)
public class MixinNetHandlerPlayClient {
@Inject(method = "handleChunkData",
at = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/Chunk;read(Lnet/minecraft/network/PacketBuffer;IZ)V"),
locals = LocalCapture.CAPTURE_FAILHARD)
private void read(SPacketChunkData data, CallbackInfo info, Chunk chunk) {
if (!data.isFullChunk())
ChunkFinder.newChunk(chunk);
}
}

View File

@ -22,10 +22,6 @@ public class MixinNetworkManager {
@Inject(method = "sendPacket(Lnet/minecraft/network/Packet;)V", at = @At("HEAD"), cancellable = true)
private void onSendPacket(Packet<?> packet, CallbackInfo callbackInfo) {
PacketEvent event = new PacketEvent.Send(packet);
System.out.println("C -> S: " + packet.getClass().getSimpleName());
if (packet instanceof CPacketCustomPayload) {
System.out.println("==> " + ((CPacketCustomPayload) packet).getChannelName());
}
KamiMod.EVENT_BUS.post(event);
if (event.isCancelled()) {
@ -36,13 +32,6 @@ public class MixinNetworkManager {
@Inject(method = "channelRead0", at = @At("HEAD"), cancellable = true)
private void onChannelRead(ChannelHandlerContext context, Packet<?> packet, CallbackInfo callbackInfo) {
PacketEvent event = new PacketEvent.Receive(packet);
System.out.println("S -> C: " + packet.getClass().getSimpleName());
if (packet instanceof SPacketCustomPayload) {
System.out.println("==> " + ((SPacketCustomPayload) packet).getChannelName());
}
if (packet instanceof SPacketTimeUpdate) {
System.out.println(" ( " + ((SPacketTimeUpdate) packet).getTotalWorldTime() + " )");
}
KamiMod.EVENT_BUS.post(event);
if (event.isCancelled()) {

View File

@ -44,12 +44,15 @@ public class Velocity extends Module {
});
@EventHandler
private Listener<EntityEvent.EntityCollision> entityCollisionListener = new Listener<EntityEvent.EntityCollision>(event -> {
private Listener<EntityEvent.EntityCollision> entityCollisionListener = new Listener<>(event -> {
if (event.getEntity() == mc.player) {
if (horizontal == 0 && vertical == 0) {event.cancel(); return; }
event.setX(-event.getX()*horizontal);
if (horizontal == 0 && vertical == 0) {
event.cancel();
return;
}
event.setX(-event.getX() * horizontal);
event.setY(0);
event.setZ(-event.getZ()*horizontal);
event.setZ(-event.getZ() * horizontal);
}
});

View File

@ -1,10 +1,23 @@
package me.zeroeightsix.kami.module.modules.player;
import com.sun.javafx.geom.Vec2d;
import me.zero.alpine.listener.EventHandler;
import me.zero.alpine.listener.Listener;
import me.zeroeightsix.kami.KamiMod;
import me.zeroeightsix.kami.event.events.PacketEvent;
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.init.Items;
import net.minecraft.network.play.client.CPacketHeldItemChange;
import net.minecraft.network.play.client.CPacketPlayer;
import net.minecraft.network.play.client.CPacketPlayerDigging;
import net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;
/**
* Created by 086 on 19/11/2017.
@ -12,11 +25,43 @@ import net.minecraft.network.play.client.CPacketPlayer;
@Module.Info(category = Module.Category.PLAYER, description = "Prevents fall damage", name = "NoFall")
public class NoFall extends Module {
@Setting(name = "Packet") private boolean packet = false;
@Setting(name = "Bucket") private boolean bucket = true;
@Setting(name = "Distance") private int distance = 15;
private long last = 0;
@EventHandler
public Listener<PacketEvent.Send> sendListener = new Listener<PacketEvent.Send>(event -> {
if (event.getPacket() instanceof CPacketPlayer) {
public Listener<PacketEvent.Send> sendListener = new Listener<>(event -> {
if (event.getPacket() instanceof CPacketPlayer && packet) {
((CPacketPlayer) event.getPacket()).onGround = true;
}
});
@Override
public void onUpdate() {
if (bucket && mc.player.fallDistance >= distance && !EntityUtil.isAboveWater(mc.player) && System.currentTimeMillis() - last > 100) {
Vec3d posVec = mc.player.getPositionVector();
RayTraceResult result = mc.world.rayTraceBlocks(posVec, posVec.addVector(0,-5.33f,0), true, true, false);
if (result != null && result.typeOfHit == RayTraceResult.Type.BLOCK) {
EnumHand hand = EnumHand.MAIN_HAND;
if (mc.player.getHeldItemOffhand().getItem() == Items.WATER_BUCKET) hand = EnumHand.OFF_HAND;
else if (mc.player.getHeldItemMainhand().getItem() != Items.WATER_BUCKET) {
for (int i = 0; i < 9; i++)
if (mc.player.inventory.getStackInSlot(i).getItem() == Items.WATER_BUCKET) {
mc.player.inventory.currentItem = i;
mc.player.rotationPitch = 90;
last = System.currentTimeMillis();
return;
}
return;
}
mc.player.rotationPitch = 90;
mc.playerController.processRightClick(mc.player, mc.world, hand);
last = System.currentTimeMillis();
}
}
}
}

View File

@ -0,0 +1,86 @@
package me.zeroeightsix.kami.module.modules.render;
import me.zero.alpine.listener.EventHandler;
import me.zero.alpine.listener.Listener;
import me.zeroeightsix.kami.event.events.RenderEvent;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.event.world.ChunkEvent;
import org.lwjgl.opengl.GL11;
import java.util.ArrayList;
import static org.lwjgl.opengl.GL11.*;
/**
* @author 086
*/
@Module.Info(name = "ChunkFinder", description = "Highlights newly generated chunks", category = Module.Category.RENDER)
public class ChunkFinder extends Module {
@Setting(name = "Y Offset", integer = true) private int yOffset = 0;
static ArrayList<Chunk> chunks = new ArrayList<>();
private static boolean dirty = true;
private int list = GL11.glGenLists(1);
@Override
public void onWorldRender(RenderEvent event) {
if (dirty) {
GL11.glNewList(list, GL11.GL_COMPILE);
glPushMatrix();
glEnable(GL_LINE_SMOOTH);
glDisable(GL_DEPTH_TEST);
glDisable(GL_TEXTURE_2D);
glDepthMask(false);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glLineWidth(1.0F);
for (Chunk chunk : chunks) {
double posX = chunk.x * 16;
double posY = 0;
double posZ = chunk.z * 16;
glColor3f(.6f, .1f, .2f);
glBegin(GL_LINE_LOOP);
glVertex3d(posX, posY, posZ);
glVertex3d(posX + 16, posY, posZ);
glVertex3d(posX + 16, posY, posZ + 16);
glVertex3d(posX, posY, posZ + 16);
glVertex3d(posX, posY, posZ);
glEnd();
}
glDisable(GL_BLEND);
glDepthMask(true);
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glDisable(GL_LINE_SMOOTH);
glPopMatrix();
glColor4f(1, 1, 1, 1);
GL11.glEndList();
dirty = false;
}
double x = mc.getRenderManager().renderPosX;
double z = mc.getRenderManager().renderPosZ;
GL11.glTranslated(-x, yOffset, -z);
GL11.glCallList(list);
GL11.glTranslated(x, -yOffset, z);
}
public static void newChunk(Chunk chunk) {
chunks.add(chunk);
dirty = true;
}
@EventHandler
private Listener<ChunkEvent.Unload> unloadListener = new Listener<>(event -> {
dirty = chunks.remove(event.getChunk());
});
}

View File

@ -18,6 +18,7 @@
"MixinBlockLiquid",
"MixinRenderPlayer",
"MixinGuiPlayerTabOverlay",
"MixinC00Handshake"
"MixinC00Handshake",
"MixinNetHandlerPlayClient"
]
}