101 lines
4.7 KiB
Java
101 lines
4.7 KiB
Java
package me.rigamortis.seppuku.impl.module.player;
|
|
|
|
import me.rigamortis.seppuku.api.event.EventStageable;
|
|
import me.rigamortis.seppuku.api.event.network.EventSendPacket;
|
|
import me.rigamortis.seppuku.api.module.Module;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.inventory.ClickType;
|
|
import net.minecraft.network.play.client.CPacketPlayerTryUseItem;
|
|
import net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock;
|
|
import net.minecraft.network.play.client.CPacketUseEntity;
|
|
import net.minecraft.util.EnumFacing;
|
|
import net.minecraft.util.EnumHand;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import team.stiff.pomelo.impl.annotated.handler.annotation.Listener;
|
|
|
|
/**
|
|
* Author Seth
|
|
* 5/2/2019 @ 4:39 AM.
|
|
*/
|
|
public final class ItemSpoofModule extends Module {
|
|
|
|
public BlockPos position;
|
|
public EnumFacing placedBlockDirection;
|
|
public EnumHand hand;
|
|
public float facingX;
|
|
public float facingY;
|
|
public float facingZ;
|
|
private boolean send;
|
|
private Entity entity;
|
|
|
|
public ItemSpoofModule() {
|
|
super("ItemSpoof", new String[]{"ItemS"}, "Allows you to display a different item server-side (Use the top left slot in your inventory)", "NONE", -1, ModuleType.PLAYER);
|
|
}
|
|
|
|
@Listener
|
|
public void sendPacket(EventSendPacket event) {
|
|
if (event.getStage() == EventStageable.EventStage.PRE) {
|
|
if (event.getPacket() instanceof CPacketPlayerTryUseItemOnBlock) {
|
|
if (send) {
|
|
send = false;
|
|
return;
|
|
}
|
|
final CPacketPlayerTryUseItemOnBlock packet = (CPacketPlayerTryUseItemOnBlock) event.getPacket();
|
|
this.position = packet.getPos();
|
|
this.placedBlockDirection = packet.getDirection();
|
|
this.hand = packet.getHand();
|
|
this.facingX = packet.getFacingX();
|
|
this.facingY = packet.getFacingY();
|
|
this.facingZ = packet.getFacingZ();
|
|
|
|
if (this.position != null) {
|
|
event.setCanceled(true);
|
|
final Minecraft mc = Minecraft.getMinecraft();
|
|
mc.playerController.windowClick(mc.player.inventoryContainer.windowId, 9, mc.player.inventory.currentItem, ClickType.SWAP, mc.player);
|
|
this.send = true;
|
|
mc.player.connection.sendPacket(new CPacketPlayerTryUseItemOnBlock(this.position, this.placedBlockDirection, this.hand, this.facingX, this.facingY, this.facingZ));
|
|
mc.playerController.windowClick(mc.player.inventoryContainer.windowId, 9, mc.player.inventory.currentItem, ClickType.SWAP, mc.player);
|
|
}
|
|
}
|
|
if (event.getPacket() instanceof CPacketPlayerTryUseItem) {
|
|
if (send) {
|
|
send = false;
|
|
return;
|
|
}
|
|
final CPacketPlayerTryUseItem packet = (CPacketPlayerTryUseItem) event.getPacket();
|
|
this.hand = packet.getHand();
|
|
|
|
if (this.hand != null) {
|
|
event.setCanceled(true);
|
|
final Minecraft mc = Minecraft.getMinecraft();
|
|
mc.playerController.windowClick(mc.player.inventoryContainer.windowId, 9, mc.player.inventory.currentItem, ClickType.SWAP, mc.player);
|
|
this.send = true;
|
|
mc.player.connection.sendPacket(new CPacketPlayerTryUseItem(this.hand));
|
|
mc.playerController.windowClick(mc.player.inventoryContainer.windowId, 9, mc.player.inventory.currentItem, ClickType.SWAP, mc.player);
|
|
}
|
|
}
|
|
if (event.getPacket() instanceof CPacketUseEntity) {
|
|
if (send) {
|
|
send = false;
|
|
return;
|
|
}
|
|
final CPacketUseEntity packet = (CPacketUseEntity) event.getPacket();
|
|
if (packet.getAction() == CPacketUseEntity.Action.ATTACK) {
|
|
final Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
this.entity = packet.getEntityFromWorld(mc.world);
|
|
|
|
if (this.entity != null) {
|
|
event.setCanceled(true);
|
|
mc.playerController.windowClick(mc.player.inventoryContainer.windowId, 9, mc.player.inventory.currentItem, ClickType.SWAP, mc.player);
|
|
this.send = true;
|
|
mc.player.connection.sendPacket(new CPacketUseEntity(this.entity));
|
|
mc.playerController.windowClick(mc.player.inventoryContainer.windowId, 9, mc.player.inventory.currentItem, ClickType.SWAP, mc.player);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|