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.minecraft.EventDisplayGui ;
import me.rigamortis.seppuku.api.event.network.EventSendPacket ;
import me.rigamortis.seppuku.api.event.player.EventPlayerUpdate ;
import me.rigamortis.seppuku.api.event.player.EventUpdateWalkingPlayer ;
import me.rigamortis.seppuku.api.module.Module ;
2019-11-30 01:44:31 +00:00
import me.rigamortis.seppuku.api.value.Value ;
2019-10-27 15:45:44 +00:00
import net.minecraft.client.Minecraft ;
import net.minecraft.client.gui.GuiGameOver ;
import net.minecraft.entity.Entity ;
import net.minecraft.network.play.client.* ;
import net.minecraft.util.EnumHand ;
import team.stiff.pomelo.impl.annotated.handler.annotation.Listener ;
/ * *
* Author Seth
* 4 / 9 / 2019 @ 9 : 06 AM .
* /
public final class GodModeModule extends Module {
2021-10-15 03:02:32 +00:00
public final Value < Mode > mode = new Value < Mode > ( " Mode " , new String [ ] { " Mode " , " M " } , " The mode of the god-mode exploit " , Mode . PORTAL ) ;
2019-11-30 01:44:31 +00:00
public final Value < Boolean > footsteps = new Value < Boolean > ( " FootSteps " , new String [ ] { " Foot " } , " If enabled, others will be able to see your foot-steps during god-mode. (Disable if having trouble getting god-mode to work) " , false ) ;
2019-10-27 15:45:44 +00:00
private Entity riding ;
public GodModeModule ( ) {
super ( " GodMode " , new String [ ] { " God " , " Pgm " , " PortalGodmode " , " PortalGod " , " SickoMode " } , " Makes you invincible in certain cases " , " NONE " , - 1 , ModuleType . PLAYER ) ;
}
@Override
public void onEnable ( ) {
super . onEnable ( ) ;
2019-11-30 01:44:31 +00:00
if ( this . mode . getValue ( ) = = Mode . RIDING ) {
2019-10-27 15:45:44 +00:00
final Minecraft mc = Minecraft . getMinecraft ( ) ;
if ( mc . player . getRidingEntity ( ) ! = null ) {
this . riding = mc . player . getRidingEntity ( ) ;
mc . player . dismountRidingEntity ( ) ;
mc . world . removeEntity ( this . riding ) ;
2019-11-30 01:44:31 +00:00
mc . player . setPosition ( mc . player . getPosition ( ) . getX ( ) , mc . player . getPosition ( ) . getY ( ) - 1 , mc . player . getPosition ( ) . getZ ( ) ) ;
2019-10-27 15:45:44 +00:00
}
}
}
@Override
public void onDisable ( ) {
super . onDisable ( ) ;
2019-11-30 01:44:31 +00:00
if ( this . mode . getValue ( ) = = Mode . RIDING ) {
2019-10-27 15:45:44 +00:00
if ( this . riding ! = null ) {
Minecraft . getMinecraft ( ) . player . connection . sendPacket ( new CPacketUseEntity ( this . riding , EnumHand . MAIN_HAND ) ) ;
}
}
2019-11-30 01:44:31 +00:00
if ( this . mode . getValue ( ) = = Mode . LOCK ) {
2019-10-27 15:45:44 +00:00
Minecraft . getMinecraft ( ) . player . respawnPlayer ( ) ;
}
}
@Override
public String getMetaData ( ) {
2019-11-30 01:44:31 +00:00
return this . mode . getValue ( ) . name ( ) ;
2019-10-27 15:45:44 +00:00
}
@Listener
public void onWalkingUpdate ( EventUpdateWalkingPlayer event ) {
if ( event . getStage ( ) = = EventStageable . EventStage . PRE ) {
final Minecraft mc = Minecraft . getMinecraft ( ) ;
2019-11-30 01:44:31 +00:00
if ( this . mode . getValue ( ) = = Mode . RIDING ) {
2019-10-27 15:45:44 +00:00
if ( this . riding ! = null ) {
this . riding . posX = mc . player . posX ;
2019-11-30 01:44:31 +00:00
this . riding . posY = mc . player . posY + ( this . footsteps . getValue ( ) ? 0 . 3f : 0 . 0f ) ;
2019-10-27 15:45:44 +00:00
this . riding . posZ = mc . player . posZ ;
this . riding . rotationYaw = Minecraft . getMinecraft ( ) . player . rotationYaw ;
mc . player . connection . sendPacket ( new CPacketPlayer . Rotation ( mc . player . rotationYaw , mc . player . rotationPitch , true ) ) ;
mc . player . connection . sendPacket ( new CPacketInput ( mc . player . movementInput . moveForward , mc . player . movementInput . moveStrafe , false , false ) ) ;
mc . player . connection . sendPacket ( new CPacketVehicleMove ( this . riding ) ) ;
}
}
}
}
@Listener
public void onUpdate ( EventPlayerUpdate event ) {
if ( event . getStage ( ) = = EventStageable . EventStage . PRE ) {
final Minecraft mc = Minecraft . getMinecraft ( ) ;
2019-11-30 01:44:31 +00:00
if ( this . mode . getValue ( ) = = Mode . LOCK ) {
2019-10-27 15:45:44 +00:00
if ( mc . currentScreen instanceof GuiGameOver ) {
mc . displayGuiScreen ( null ) ;
}
mc . player . setHealth ( 20 . 0f ) ;
mc . player . getFoodStats ( ) . setFoodLevel ( 20 ) ;
mc . player . isDead = false ;
}
}
}
@Listener
public void sendPacket ( EventSendPacket event ) {
if ( event . getStage ( ) = = EventStageable . EventStage . PRE ) {
2019-11-30 01:44:31 +00:00
if ( this . mode . getValue ( ) = = Mode . PORTAL ) {
2019-10-27 15:45:44 +00:00
if ( event . getPacket ( ) instanceof CPacketConfirmTeleport ) {
event . setCanceled ( true ) ;
}
}
2019-11-30 01:44:31 +00:00
if ( this . mode . getValue ( ) = = Mode . RIDING ) {
2019-10-27 15:45:44 +00:00
if ( event . getPacket ( ) instanceof CPacketUseEntity ) {
final Minecraft mc = Minecraft . getMinecraft ( ) ;
final CPacketUseEntity packet = ( CPacketUseEntity ) event . getPacket ( ) ;
if ( this . riding ! = null ) {
final Entity entity = packet . getEntityFromWorld ( mc . world ) ;
if ( entity ! = null ) {
this . riding . posX = entity . posX ;
this . riding . posY = entity . posY ;
this . riding . posZ = entity . posZ ;
this . riding . rotationYaw = mc . player . rotationYaw ;
mc . player . connection . sendPacket ( new CPacketPlayer . Rotation ( mc . player . rotationYaw , mc . player . rotationPitch , true ) ) ;
mc . player . connection . sendPacket ( new CPacketInput ( mc . player . movementInput . moveForward , mc . player . movementInput . moveStrafe , false , false ) ) ;
mc . player . connection . sendPacket ( new CPacketVehicleMove ( this . riding ) ) ;
}
}
}
if ( event . getPacket ( ) instanceof CPacketPlayer . Position | | event . getPacket ( ) instanceof CPacketPlayer . PositionRotation ) {
event . setCanceled ( true ) ;
}
}
2019-11-30 01:44:31 +00:00
if ( this . mode . getValue ( ) = = Mode . PACKET ) {
2019-10-27 15:45:44 +00:00
if ( event . getPacket ( ) instanceof CPacketPlayer ) {
event . setCanceled ( true ) ;
}
}
}
}
@Listener
public void displayGui ( EventDisplayGui event ) {
2019-11-30 01:44:31 +00:00
if ( event . getScreen ( ) ! = null & & event . getScreen ( ) instanceof GuiGameOver & & this . mode . getValue ( ) = = Mode . LOCK ) {
2019-10-27 15:45:44 +00:00
event . setCanceled ( true ) ;
}
}
2022-10-02 13:20:19 +00:00
private enum Mode {
PORTAL , RIDING , LOCK , PACKET
}
2019-10-27 15:45:44 +00:00
}