2019-10-27 15:45:44 +00:00
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 ;
2022-10-02 13:20:19 +00:00
private boolean send ;
private Entity entity ;
2019-10-27 15:45:44 +00:00
public ItemSpoofModule ( ) {
2021-10-15 03:02:32 +00:00
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 ) ;
2019-10-27 15:45:44 +00:00
}
@Listener
public void sendPacket ( EventSendPacket event ) {
if ( event . getStage ( ) = = EventStageable . EventStage . PRE ) {
2020-11-25 20:00:59 +00:00
if ( event . getPacket ( ) instanceof CPacketPlayerTryUseItemOnBlock ) {
2019-10-27 15:45:44 +00:00
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 ( ) ;
2020-11-25 20:00:59 +00:00
if ( this . position ! = null ) {
2019-10-27 15:45:44 +00:00
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 ) ;
}
}
2020-11-25 20:00:59 +00:00
if ( event . getPacket ( ) instanceof CPacketPlayerTryUseItem ) {
2019-10-27 15:45:44 +00:00
if ( send ) {
send = false ;
return ;
}
final CPacketPlayerTryUseItem packet = ( CPacketPlayerTryUseItem ) event . getPacket ( ) ;
this . hand = packet . getHand ( ) ;
2020-11-25 20:00:59 +00:00
if ( this . hand ! = null ) {
2019-10-27 15:45:44 +00:00
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 ) ;
2020-11-25 20:00:59 +00:00
if ( this . entity ! = null ) {
2019-10-27 15:45:44 +00:00
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 ) ;
}
}
}
}
}
}