├── .gitignore ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── README.md ├── gradle.properties ├── src └── main │ ├── resources │ ├── win32-x86 │ │ └── discord-rpc.dll │ ├── darwin │ │ └── libdiscord-rpc.dylib │ ├── assets │ │ └── notorious │ │ │ ├── Helvetica.ttf │ │ │ ├── Muli-SemiBold.ttf │ │ │ ├── Comfortaa-Regular.ttf │ │ │ └── Helvetica-Bold-Font.ttf │ ├── linux-x86-64 │ │ └── libdiscord-rpc.so │ ├── win32-x86-64 │ │ └── discord-rpc.dll │ ├── mcmod.info │ └── mixins.notorious.json │ └── java │ └── me │ └── gavin │ └── notorious │ ├── event │ ├── events │ │ ├── RenderLayerEvent.java │ │ ├── PlayerMotionUpdateEvent.java │ │ ├── PlayerLivingUpdateEvent.java │ │ ├── PlayerWalkingUpdateEvent.java │ │ ├── Render3DEvent.java │ │ ├── BlockRenderEvent.java │ │ ├── PlayerDamageBlockEvent.java │ │ ├── EntityRemoveEvent.java │ │ ├── TotemPopEvent.java │ │ ├── PacketEvent.java │ │ ├── PlayerModelRotationEvent.java │ │ ├── ConnectionEvent.java │ │ ├── BlockEvent.java │ │ └── RenderEntityEvent.java │ └── EventProcessor.java │ ├── gui │ ├── api │ │ ├── Mode.java │ │ ├── Toggleable.java │ │ ├── Bindable.java │ │ ├── Number.java │ │ ├── SettingComponent.java │ │ ├── Rect.java │ │ ├── AbstractComponent.java │ │ ├── AbstractToggleContainer.java │ │ └── AbstractDragComponent.java │ ├── setting │ │ ├── CustomSliderComponent.java │ │ ├── GroupComponent.java │ │ ├── BooleanComponent.java │ │ ├── QuadSliderComponent.java │ │ ├── ModeComponent.java │ │ └── KeybindComponent.java │ ├── ClickGuiScreen.java │ └── Panel.java │ ├── util │ ├── Instance.java │ ├── TimerUtils.java │ ├── MappingUtil.java │ ├── AnimationUtil.java │ ├── TickTimer.java │ ├── zihasz │ │ └── WorldUtil.java │ ├── font │ │ └── CFontLoader.java │ ├── NColor.java │ ├── UUIDResolver.java │ ├── RotationUtil.java │ ├── DiscordUtil.java │ ├── TotemPopListener.java │ ├── rewrite │ │ └── InventoryUtil.java │ ├── ColorUtil.java │ └── MathUtil.java │ ├── friend │ ├── Friend.java │ └── Friends.java │ ├── stuff │ └── IMinecraft.java │ ├── mixin │ ├── mixins │ │ ├── accessor │ │ │ ├── IEntityMixin.java │ │ │ ├── IMinecraftMixin.java │ │ │ ├── ICPacketPlayerMixin.java │ │ │ ├── IRenderGlobal.java │ │ │ ├── IEntityPlayerSPMixin.java │ │ │ ├── IPlayerControllerMPMixin.java │ │ │ ├── ISPacketExplosionMixin.java │ │ │ └── ICPacketUseEntityMixin.java │ │ ├── MixinWorld.java │ │ ├── GuiBetterChat.java │ │ ├── RenderPlayerMixin.java │ │ ├── MixinRenderItem.java │ │ ├── EntityRendererMixin.java │ │ ├── RenderManagerMixin.java │ │ ├── EntityPlayerSPMixin.java │ │ ├── NetworkManagerMixin.java │ │ ├── PlayerControllerMPMixin.java │ │ ├── ModelPlayerMixin.java │ │ └── MixinItemRenderer.java │ └── NotoriousMixinLoader.java │ ├── hack │ ├── hacks │ │ ├── client │ │ │ ├── Font.java │ │ │ ├── Save.java │ │ │ ├── DiscordRPC.java │ │ │ ├── ClickGUI.java │ │ │ ├── Notification.java │ │ │ └── ToggleMessage.java │ │ ├── render │ │ │ ├── AntiFog.java │ │ │ ├── NoRender.java │ │ │ ├── HellenKeller.java │ │ │ ├── Glint.java │ │ │ ├── ViewModel.java │ │ │ ├── Fullbright.java │ │ │ ├── Alpha.java │ │ │ ├── PenisESP.java │ │ │ ├── SkyColor.java │ │ │ └── BreakESP.java │ │ ├── player │ │ │ ├── Suicide.java │ │ │ ├── FastPlace.java │ │ │ └── ToggleXP.java │ │ ├── chat │ │ │ ├── StringTestModule.java │ │ │ ├── AutoChad.java │ │ │ ├── AutoEZ.java │ │ │ ├── PopCounter.java │ │ │ ├── VisualRange.java │ │ │ ├── ChorusPredict.java │ │ │ ├── AutoGroom.java │ │ │ ├── AutoDox.java │ │ │ ├── ArmorNotify.java │ │ │ └── PotionAlert.java │ │ ├── movement │ │ │ ├── AutoHop.java │ │ │ ├── ReverseStep.java │ │ │ ├── Velocity.java │ │ │ ├── Sprint.java │ │ │ └── AntiVoid.java │ │ ├── misc │ │ │ ├── CopyCoords.java │ │ │ ├── CopyIP.java │ │ │ ├── WeaknessLog.java │ │ │ ├── AutoLog.java │ │ │ ├── RBandDetect.java │ │ │ ├── GhastNotifier.java │ │ │ └── Respawn.java │ │ ├── combat │ │ │ ├── Quiver.java │ │ │ ├── BurrowBreaker.java │ │ │ └── Criticals.java │ │ └── world │ │ │ ├── Lawnmower.java │ │ │ ├── ShulkerJew.java │ │ │ ├── MobOwner.java │ │ │ └── BedFucker.java │ ├── RegisterSetting.java │ ├── RegisterHack.java │ └── Hack.java │ ├── notifications │ ├── NotificationType.java │ └── Notification.java │ ├── setting │ ├── StringSetting.java │ ├── SettingGroup.java │ ├── BooleanSetting.java │ ├── NumSetting.java │ ├── Setting.java │ ├── ModeSetting.java │ └── ColorSetting.java │ ├── command │ ├── RegisterCommand.java │ ├── impl │ │ ├── HelpCommand.java │ │ └── TestCommand.java │ └── Command.java │ ├── manager │ ├── MessageManager.java │ ├── NotificationManager.java │ ├── RotationManager.java │ └── CommandManager.java │ ├── NotoriousMod.java │ └── Notorious.java └── gradlew.bat /.gitignore: -------------------------------------------------------------------------------- 1 | **/run 2 | **/build 3 | .gradle 4 | .idea -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'notorious' 2 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Notorious 2 | Based client so swag 3 | 4 | Made By: gerald0mc (tranny) and Gav06 (based and best) and Ethius (amazing) 5 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | forgeVersion=1.12.2-14.23.5.2847 2 | mcpVersion=stable_39 3 | org.gradle.jvmargs=-Xmx3G 4 | org.gradle.daemon=false 5 | -------------------------------------------------------------------------------- /src/main/resources/win32-x86/discord-rpc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/src/main/resources/win32-x86/discord-rpc.dll -------------------------------------------------------------------------------- /src/main/resources/darwin/libdiscord-rpc.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/src/main/resources/darwin/libdiscord-rpc.dylib -------------------------------------------------------------------------------- /src/main/resources/assets/notorious/Helvetica.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/src/main/resources/assets/notorious/Helvetica.ttf -------------------------------------------------------------------------------- /src/main/resources/linux-x86-64/libdiscord-rpc.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/src/main/resources/linux-x86-64/libdiscord-rpc.so -------------------------------------------------------------------------------- /src/main/resources/win32-x86-64/discord-rpc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/src/main/resources/win32-x86-64/discord-rpc.dll -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/RenderLayerEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | public class RenderLayerEvent { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/Mode.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | public interface Mode { 4 | 5 | String getMode(); 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/notorious/Muli-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/src/main/resources/assets/notorious/Muli-SemiBold.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/notorious/Comfortaa-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/src/main/resources/assets/notorious/Comfortaa-Regular.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/notorious/Helvetica-Bold-Font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerald0mc/Notorious/HEAD/src/main/resources/assets/notorious/Helvetica-Bold-Font.ttf -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/Toggleable.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | public interface Toggleable { 4 | 5 | boolean isEnabled(); 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/Bindable.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | public interface Bindable { 4 | 5 | int getBind(); 6 | 7 | void setBind(int bind); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/Instance.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import net.minecraft.client.Minecraft; 4 | 5 | public interface Instance { 6 | Minecraft mc = Minecraft.getMinecraft(); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/PlayerMotionUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraftforge.fml.common.eventhandler.Event; 4 | 5 | public class PlayerMotionUpdateEvent extends Event { } 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.3-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/Number.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | public interface Number { 4 | 5 | float getMin(); 6 | 7 | float getMax(); 8 | 9 | float getValue(); 10 | 11 | float getIncrement(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/friend/Friend.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.friend; 2 | 3 | public class Friend { 4 | String name; 5 | 6 | public Friend(String n){ 7 | name = n; 8 | } 9 | 10 | public String getName(){ 11 | return name; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/stuff/IMinecraft.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.stuff; 2 | 3 | import net.minecraft.client.Minecraft; 4 | 5 | /** 6 | * @author Gav06 7 | * @since 6/15/2021 8 | */ 9 | 10 | public interface IMinecraft { 11 | 12 | Minecraft mc = Minecraft.getMinecraft(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/PlayerLivingUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraftforge.fml.common.eventhandler.Event; 4 | 5 | /** 6 | * @author Gav06 7 | * @since 6/15/2021 8 | */ 9 | 10 | public class PlayerLivingUpdateEvent extends Event {} 11 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/SettingComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | public abstract class SettingComponent extends AbstractComponent { 4 | public SettingComponent(int x, int y, int width, int height) { 5 | super(x, y, width, height); 6 | } 7 | 8 | public abstract int getTotalHeight(); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/accessor/IEntityMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins.accessor; 2 | 3 | import net.minecraft.entity.Entity; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(Entity.class) 8 | public interface IEntityMixin { 9 | 10 | @Accessor("inPortal") 11 | boolean inPortalAccessor(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/client/Font.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.client; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | import me.gavin.notorious.hack.RegisterSetting; 6 | import me.gavin.notorious.setting.ModeSetting; 7 | 8 | @RegisterHack(name = "Font", description = "Ez", category = Hack.Category.Client) 9 | public class Font extends Hack { } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/TimerUtils.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | public class TimerUtils { 4 | public long lastMilliseconds = System.currentTimeMillis(); 5 | 6 | public boolean hasTimeElapsed(long time) { 7 | return System.currentTimeMillis() - lastMilliseconds > time; 8 | } 9 | 10 | public void reset() { 11 | this.lastMilliseconds = System.currentTimeMillis(); 12 | } 13 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/accessor/IMinecraftMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins.accessor; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(Minecraft.class) 8 | public interface IMinecraftMixin { 9 | 10 | @Accessor("rightClickDelayTimer") 11 | void setRightClickDelayTimerAccessor(int timer); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/notifications/NotificationType.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.notifications; 2 | 3 | import java.awt.*; 4 | 5 | public enum NotificationType { 6 | INFO(new Color(0xff6767ff)), 7 | WARNING(new Color(0xffffbd67)), 8 | ERROR(new Color(0xffff6767)); 9 | 10 | Color color; 11 | 12 | NotificationType(Color color) { 13 | this.color = color; 14 | } 15 | 16 | public Color getColor() { 17 | return color; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/RegisterSetting.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * @author Gav06 10 | * @since 6/15/2021 11 | */ 12 | 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.FIELD) 15 | public @interface RegisterSetting { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/PlayerWalkingUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraftforge.fml.common.eventhandler.Event; 4 | 5 | /** 6 | * @author Gav06 7 | * 8 | * @since 6/16/2021 9 | */ 10 | 11 | public class PlayerWalkingUpdateEvent extends Event { 12 | 13 | public static class Pre extends PlayerWalkingUpdateEvent { } 14 | 15 | public static class Post extends PlayerWalkingUpdateEvent { } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/Render3DEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraftforge.fml.common.eventhandler.Event; 4 | 5 | public class Render3DEvent extends Event { 6 | private final float partialTicks; 7 | 8 | public Render3DEvent(final float partialTicks) { 9 | this.partialTicks = partialTicks; 10 | } 11 | 12 | public float getPartialTicks() { 13 | return this.partialTicks; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/setting/StringSetting.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.setting; 2 | 3 | public class StringSetting extends Setting{ 4 | private String string; 5 | 6 | public StringSetting(String name, String typeable) { 7 | super(name); 8 | this.string = typeable; 9 | } 10 | 11 | public String getString() { 12 | return string; 13 | } 14 | 15 | public void setString(String set) { 16 | set = string; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/RegisterHack.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack; 2 | 3 | import org.lwjgl.input.Keyboard; 4 | 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | 8 | /** 9 | * @author Gav06 10 | * @since 6/15/2021 11 | */ 12 | 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface RegisterHack { 15 | 16 | String name(); 17 | 18 | String description(); 19 | 20 | Hack.Category category(); 21 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/BlockRenderEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | import net.minecraftforge.fml.common.eventhandler.Event; 5 | 6 | public class BlockRenderEvent extends Event { 7 | 8 | private final BlockPos blockPos; 9 | 10 | public BlockRenderEvent(BlockPos blockPos) { 11 | this.blockPos = blockPos; 12 | } 13 | 14 | public BlockPos getBlockPos() { 15 | return blockPos; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/AntiFog.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | import org.lwjgl.input.Keyboard; 6 | 7 | /** 8 | * @author Gav06 9 | * @since 6/15/2021 10 | */ 11 | 12 | // EntityRendererMixin.java 13 | 14 | @RegisterHack(name = "AntiFog", description = "Prevents fog from rendering", category = Hack.Category.Render) 15 | public class AntiFog extends Hack { 16 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/accessor/ICPacketPlayerMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins.accessor; 2 | 3 | import net.minecraft.network.play.client.CPacketPlayer; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(CPacketPlayer.class) 8 | public interface ICPacketPlayerMixin { 9 | 10 | @Accessor("yaw") 11 | void setYawAccessor(float yaw); 12 | 13 | @Accessor("pitch") 14 | void setPitchAccessor(float pitch); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/command/RegisterCommand.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.command; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.TYPE) 10 | public @interface RegisterCommand { 11 | String name(); 12 | String syntax(); 13 | String[] aliases(); 14 | 15 | String description() default "No description."; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/player/Suicide.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.player; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | 6 | @RegisterHack(name = "Suicide", description = "Automatically kills you.", category = Hack.Category.Player) 7 | public class Suicide extends Hack { 8 | 9 | @Override 10 | public void onEnable() { 11 | if(mc.player != null) 12 | mc.player.sendChatMessage("/kill"); 13 | toggle(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/PlayerDamageBlockEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraft.util.EnumFacing; 4 | import net.minecraft.util.math.BlockPos; 5 | import net.minecraftforge.fml.common.eventhandler.Event; 6 | 7 | public class PlayerDamageBlockEvent extends Event { 8 | public BlockPos pos; 9 | 10 | public EnumFacing facing; 11 | 12 | public PlayerDamageBlockEvent(BlockPos pos, EnumFacing facing) { 13 | this.pos = pos; 14 | this.facing = facing; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/accessor/IRenderGlobal.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins.accessor; 2 | 3 | import net.minecraft.client.renderer.DestroyBlockProgress; 4 | import net.minecraft.client.renderer.RenderGlobal; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | import java.util.Map; 9 | 10 | @Mixin(RenderGlobal.class) 11 | public interface IRenderGlobal { 12 | 13 | @Accessor("damagedBlocks") 14 | Map getDamagedBlocks(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "modid": "notorious", 4 | "name": "Notorious", 5 | "description": "If your seeing this your mom is probably sucking my cock.", 6 | "version": "0.6.2", 7 | "mcversion": "1.12.2", 8 | "url": "https://github.com/gerald0mc/Notorious", 9 | "updateUrl": "", 10 | "authorList": ["Gav06", "gerald0mc", "Innards", "rTe_"], 11 | "credits": "", 12 | "logoFile": "", 13 | "screenshots": [], 14 | "dependencies": [] 15 | } 16 | ] 17 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/accessor/IEntityPlayerSPMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins.accessor; 2 | 3 | import net.minecraft.client.entity.EntityPlayerSP; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(EntityPlayerSP.class) 8 | public interface IEntityPlayerSPMixin { 9 | 10 | @Accessor("positionUpdateTicks") 11 | void positionUpdateTicksAccessor(int ticks); 12 | 13 | @Accessor("positionUpdateTicks") 14 | int getPositionUpdateTicksAccessor(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/EntityRemoveEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraftforge.fml.common.eventhandler.Cancelable; 5 | import net.minecraftforge.fml.common.eventhandler.Event; 6 | 7 | @Cancelable 8 | public class EntityRemoveEvent extends Event { 9 | private final Entity entity; 10 | 11 | public EntityRemoveEvent(Entity entity) { 12 | this.entity = entity; 13 | } 14 | 15 | public Entity getEntity() { 16 | return entity; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/accessor/IPlayerControllerMPMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins.accessor; 2 | 3 | import net.minecraft.client.multiplayer.PlayerControllerMP; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(PlayerControllerMP.class) 8 | public interface IPlayerControllerMPMixin { 9 | 10 | @Accessor("curBlockDamageMP") 11 | float getCurBlockDamageMP(); 12 | 13 | @Accessor("curBlockDamageMP") 14 | void setCurBlockDamageMP(float curBlockDamageMPIn); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/setting/SettingGroup.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.setting; 2 | 3 | import java.util.ArrayList; 4 | 5 | public class SettingGroup { 6 | 7 | private final String name; 8 | private static ArrayList values; 9 | 10 | public SettingGroup(String name) { 11 | this.name = name; 12 | this.values = new ArrayList<>(); 13 | } 14 | 15 | public String getName() { 16 | return name; 17 | } 18 | 19 | public static ArrayList getValues() { 20 | return values; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/MappingUtil.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import net.minecraft.client.Minecraft; 4 | 5 | public class MappingUtil { 6 | public static final String tickLength = isObfuscated() ? "field_194149_e" : "tickLength"; 7 | public static final String timer = isObfuscated() ? "field_71428_T" : "timer"; 8 | 9 | public static boolean isObfuscated() { 10 | try { 11 | return Minecraft.class.getDeclaredField("instance") == null; 12 | } catch (Exception var1) { 13 | return true; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/Rect.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | /** 4 | * @author Gav06 5 | * @since 6/15/2021 6 | */ 7 | 8 | public class Rect { 9 | 10 | public int x, y, width, height; 11 | 12 | public Rect(int x, int y, int width, int height) { 13 | this.x = x; 14 | this.y = y; 15 | this.width = width; 16 | this.height = height; 17 | } 18 | 19 | public boolean isMouseInside(int mouseX, int mouseY) { 20 | return mouseX > x && mouseX < x + width && mouseY > y && mouseY < y + height; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/accessor/ISPacketExplosionMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins.accessor; 2 | 3 | import net.minecraft.network.play.server.SPacketExplosion; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(SPacketExplosion.class) 8 | public interface ISPacketExplosionMixin { 9 | 10 | @Accessor("motionX") 11 | void setMotionXAccessor(float value); 12 | 13 | @Accessor("motionY") 14 | void setMotionYAccessor(float value); 15 | 16 | @Accessor("motionZ") 17 | void setMotionZAccessor(float value); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/AnimationUtil.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | public class AnimationUtil { 4 | public static float getSmooth2Animation(int duration, int time) { 5 | double x1 = (float) time / duration; //Used to force input to range from 0 - 1 6 | return (float) (6 * Math.pow(x1, 5) - (15 * Math.pow(x1, 4)) + (10 * Math.pow(x1, 3))); 7 | } 8 | 9 | public static float getSmooth2Animation(float duration, float time) { 10 | double x1 = time / duration; //Used to force input to range from 0 - 1 11 | return (float) (6 * Math.pow(x1, 5) - (15 * Math.pow(x1, 4)) + (10 * Math.pow(x1, 3))); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/accessor/ICPacketUseEntityMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins.accessor; 2 | 3 | import net.minecraft.network.play.client.CPacketUseEntity; 4 | import net.minecraft.util.EnumHand; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(CPacketUseEntity.class) 9 | public interface ICPacketUseEntityMixin { 10 | 11 | @Accessor("entityId") 12 | void setEntityIdAccessor(int id); 13 | 14 | @Accessor("action") 15 | void setActionAccessor(CPacketUseEntity.Action action); 16 | 17 | @Accessor("hand") 18 | void setHandAccessor(EnumHand hand); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/setting/CustomSliderComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.setting; 2 | 3 | import me.gavin.notorious.setting.NumSetting; 4 | 5 | public abstract class CustomSliderComponent extends SliderComponent { 6 | public CustomSliderComponent(NumSetting setting, int x, int y, int width, int height) { 7 | super(setting, x, y, width, height); 8 | } 9 | 10 | @Override 11 | public void render(int mouseX, int mouseY, float partialTicks) { 12 | super.updateSliderLogic(mouseX, mouseY); 13 | drawCustomSlider(mouseX, mouseY, partialTicks); 14 | } 15 | 16 | public abstract void drawCustomSlider(int mouseX, int mouseY, float partialTicks); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/StringTestModule.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | import me.gavin.notorious.hack.RegisterSetting; 6 | import me.gavin.notorious.setting.StringSetting; 7 | 8 | @RegisterHack(name = "StringTestModule", description = "ez", category = Hack.Category.Chat) 9 | public class StringTestModule extends Hack { 10 | 11 | @RegisterSetting 12 | public final StringSetting string = new StringSetting("String", "uwu"); 13 | 14 | @Override 15 | public void onEnable() { 16 | mc.player.sendChatMessage(string.getString()); 17 | toggle(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/client/Save.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.client; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | 6 | @RegisterHack(name = "Save", description = "ez", category = Hack.Category.Client) 7 | public class Save extends Hack { 8 | 9 | @Override 10 | public void onEnable() { 11 | try { 12 | notorious.configManager.save(); 13 | notorious.messageManager.sendMessage("Saved your config."); 14 | }catch (Exception var5) { 15 | notorious.messageManager.sendMessage("Config failed to save?"); 16 | var5.printStackTrace(); 17 | } 18 | toggle(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/TotemPopEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraftforge.fml.common.eventhandler.Event; 4 | 5 | public class TotemPopEvent extends Event { 6 | 7 | private final String name; 8 | private final int popCount; 9 | private final int entId; 10 | 11 | public TotemPopEvent(String name, int count, int entId) { 12 | this.name = name; 13 | this.popCount = count; 14 | this.entId = entId; 15 | } 16 | 17 | public String getName() { 18 | return name; 19 | } 20 | 21 | public int getPopCount() { 22 | return popCount; 23 | } 24 | 25 | public int getEntityId() { 26 | return entId; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/command/impl/HelpCommand.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.command.impl; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.Notorious; 5 | import me.gavin.notorious.command.Command; 6 | import me.gavin.notorious.command.RegisterCommand; 7 | 8 | @RegisterCommand(name = "Help", description = "Tells you stuff about the client and client stuff.", syntax = "help", aliases = {"h", "he", "lp"}) 9 | public class HelpCommand extends Command { 10 | @Override 11 | public void onCommand(String[] args, String command) { 12 | Notorious.INSTANCE.messageManager.sendMessage("Notorious Help:"); 13 | Notorious.INSTANCE.messageManager.sendMessage("TestCommand - " + ChatFormatting.GRAY + "Just a test command."); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/AbstractComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | /** 4 | * @author Gav06 5 | * @since 6/15/2021 6 | */ 7 | 8 | public abstract class AbstractComponent extends Rect { 9 | public AbstractComponent(int x, int y, int width, int height) { 10 | super(x, y, width, height); 11 | } 12 | 13 | public abstract void render(int mouseX, int mouseY, float partialTicks); 14 | 15 | public abstract void mouseClicked(int mouseX, int mouseY, int mouseButton); 16 | 17 | public abstract void mouseReleased(int mouseX, int mouseY, int mouseButton); 18 | 19 | public abstract void keyTyped(char keyChar, int keyCode); 20 | 21 | public void setPos(int x, int y) { 22 | this.x = x; 23 | this.y = y; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/setting/BooleanSetting.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.setting; 2 | 3 | import me.gavin.notorious.gui.api.Toggleable; 4 | 5 | public class BooleanSetting extends Setting implements Toggleable { 6 | 7 | private boolean value; 8 | 9 | public BooleanSetting(String name, boolean value) { 10 | super(name); 11 | this.value = value; 12 | } 13 | 14 | public void setValue(boolean value){ 15 | this.value = value; 16 | } 17 | 18 | public void toggle() { 19 | this.value = !value; 20 | } 21 | 22 | @Override 23 | public boolean isEnabled() { 24 | return value; 25 | } 26 | 27 | public boolean getValue() { 28 | if(isEnabled()) 29 | return true; 30 | else 31 | return false; 32 | } 33 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/TickTimer.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import net.minecraftforge.common.MinecraftForge; 4 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 5 | import net.minecraftforge.fml.common.gameevent.TickEvent; 6 | 7 | public class TickTimer { 8 | 9 | private long ticksPassed = 0L; 10 | private long lastTicks = ticksPassed; 11 | 12 | public TickTimer() { 13 | MinecraftForge.EVENT_BUS.register(this); 14 | } 15 | 16 | @SubscribeEvent 17 | public void onTick(TickEvent.ClientTickEvent event) { 18 | ticksPassed++; 19 | } 20 | 21 | public boolean hasTicksPassed(long ticks) { 22 | return ticksPassed - lastTicks > ticks; 23 | } 24 | 25 | public void reset() { 26 | lastTicks = ticksPassed; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/AbstractToggleContainer.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | import java.util.ArrayList; 4 | 5 | public abstract class AbstractToggleContainer extends AbstractComponent { 6 | 7 | protected boolean open; 8 | protected final Toggleable toggleable; 9 | protected final ArrayList components; 10 | 11 | public AbstractToggleContainer(Toggleable toggleable, int x, int y, int width, int height) { 12 | super(x, y, width, height); 13 | this.toggleable = toggleable; 14 | components = new ArrayList<>(); 15 | } 16 | 17 | public Toggleable getToggleable() { 18 | return toggleable; 19 | } 20 | 21 | public abstract int getTotalHeight(); 22 | 23 | public ArrayList getComponents() { 24 | return components; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/MixinWorld.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.event.events.EntityRemoveEvent; 4 | import net.minecraft.entity.Entity; 5 | import net.minecraft.world.World; 6 | import net.minecraftforge.common.MinecraftForge; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.injection.At; 9 | import org.spongepowered.asm.mixin.injection.Inject; 10 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 11 | 12 | @Mixin(World.class) 13 | public class MixinWorld { 14 | @Inject(method = "onEntityRemoved", at = @At("HEAD"), cancellable = true) 15 | public void onEntityRemoved(Entity entity, CallbackInfo info) { 16 | EntityRemoveEvent event = new EntityRemoveEvent(entity); 17 | MinecraftForge.EVENT_BUS.post(event); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/PacketEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraft.network.Packet; 4 | import net.minecraftforge.fml.common.eventhandler.Cancelable; 5 | import net.minecraftforge.fml.common.eventhandler.Event; 6 | 7 | @Cancelable 8 | public class PacketEvent extends Event { 9 | 10 | private final Packet packet; 11 | 12 | private PacketEvent(Packet packet) { 13 | this.packet = packet; 14 | } 15 | 16 | public Packet getPacket() { 17 | return packet; 18 | } 19 | 20 | public static class Send extends PacketEvent { 21 | 22 | public Send(Packet packet) { 23 | super(packet); 24 | } 25 | } 26 | 27 | public static class Receive extends PacketEvent { 28 | 29 | public Receive(Packet packet) { 30 | super(packet); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/mixins.notorious.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "compatibilityLevel": "JAVA_8", 4 | "package": "me.gavin.notorious.mixin.mixins", 5 | "refmap": "notorious.refmap.json", 6 | "minVersion": "0.7", 7 | "mixins": [ 8 | "EntityPlayerSPMixin", 9 | "EntityRendererMixin", 10 | "GuiBetterChat", 11 | "MixinItemRenderer", 12 | "MixinRenderItem", 13 | "MixinWorld", 14 | "ModelPlayerMixin", 15 | "NetworkManagerMixin", 16 | "PlayerControllerMPMixin", 17 | "RenderManagerMixin", 18 | "RenderPlayerMixin", 19 | "accessor.ICPacketPlayerMixin", 20 | "accessor.ICPacketUseEntityMixin", 21 | "accessor.IEntityMixin", 22 | "accessor.IEntityPlayerSPMixin", 23 | "accessor.IMinecraftMixin", 24 | "accessor.IPlayerControllerMPMixin", 25 | "accessor.IRenderGlobal", 26 | "accessor.ISPacketExplosionMixin" 27 | ] 28 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/api/AbstractDragComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.api; 2 | 3 | public abstract class AbstractDragComponent extends AbstractComponent { 4 | public AbstractDragComponent(int x, int y, int width, int height) { 5 | super(x, y, width, height); 6 | } 7 | 8 | private int dragX, dragY; 9 | public boolean dragging; 10 | 11 | public void startDragging(int mouseX, int mouseY) { 12 | if (isMouseInside(mouseX, mouseY)) { 13 | dragging = true; 14 | dragX = mouseX - x; 15 | dragY = mouseY - y; 16 | } 17 | } 18 | 19 | public void stopDragging(int mouseX, int mouseY) { 20 | this.dragging = false; 21 | } 22 | 23 | public void updateDragPosition(int mouseX, int mouseY) { 24 | if (this.dragging) { 25 | x = (mouseX - dragX); 26 | y = (mouseY - dragY); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/PlayerModelRotationEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraftforge.fml.common.eventhandler.Event; 4 | 5 | public class PlayerModelRotationEvent extends Event { 6 | 7 | private float yaw; 8 | private float pitch; 9 | private float bodyYaw; 10 | 11 | public PlayerModelRotationEvent(float yaw, float pitch) { 12 | this.yaw = yaw; 13 | this.pitch = pitch; 14 | } 15 | 16 | public void setYaw(float yaw) { 17 | this.yaw = yaw; 18 | } 19 | 20 | public float getYaw() { 21 | return yaw; 22 | } 23 | 24 | public void setPitch(float pitch) { 25 | this.pitch = pitch; 26 | } 27 | 28 | public float getPitch() { 29 | return pitch; 30 | } 31 | 32 | public void setBodyYaw(float yaw) { 33 | this.bodyYaw = yaw; 34 | } 35 | 36 | public float getBodyYaw() { 37 | return bodyYaw; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/movement/AutoHop.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.movement; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | 8 | /** 9 | * @author gerald0mc 10 | * @since 7/5/21 11 | * :troll: 12 | */ 13 | 14 | @RegisterHack(name = "AutoHop", description = "ching chong autohop", category = Hack.Category.Movement) 15 | public class AutoHop extends Hack { 16 | 17 | @SubscribeEvent 18 | public void onUpdate(PlayerLivingUpdateEvent event) { 19 | if(mc.player.onGround && !mc.player.isSneaking() && !mc.player.isInLava() && !mc.player.isInWater() && !mc.player.isOnLadder() && !mc.player.noClip && !mc.gameSettings.keyBindSneak.isKeyDown() && !mc.gameSettings.keyBindJump.isKeyDown()) { 20 | mc.player.jump(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/setting/NumSetting.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.setting; 2 | 3 | public class NumSetting extends Setting { 4 | 5 | private float value; 6 | 7 | private final float min; 8 | private final float max; 9 | private final float increment; 10 | 11 | public NumSetting(String name, float value, float min, float max, float increment) { 12 | super(name); 13 | this.value = value; 14 | this.min = min; 15 | this.max = max; 16 | this.increment = increment; 17 | } 18 | 19 | public void setValue(float value) { 20 | this.value = Math.max(min, Math.min(value, max)); 21 | } 22 | 23 | public float getValue() { 24 | return value; 25 | } 26 | 27 | public float getMin() { 28 | return min; 29 | } 30 | 31 | public float getMax() { 32 | return max; 33 | } 34 | 35 | public float getIncrement() { 36 | return increment; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/setting/Setting.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.setting; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | 5 | public class Setting { 6 | 7 | private final String name; 8 | private Hack hack; 9 | 10 | private SettingGroup valueGroup; 11 | 12 | public Setting(String name) { 13 | this.name = name; 14 | } 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | 20 | public static Setting getFromDisplayString(String name) { 21 | for(Setting setting : SettingGroup.getValues()) { 22 | if(setting.getName().equalsIgnoreCase(name)) { 23 | return setting; 24 | } 25 | } 26 | return null; 27 | } 28 | 29 | public void setHack(Hack hack) { 30 | this.hack = hack; 31 | } 32 | 33 | public void setGroup(SettingGroup group) { 34 | this.valueGroup = group; 35 | group.getValues().add(this); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/NoRender.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import me.gavin.notorious.event.events.PacketEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.BooleanSetting; 8 | import net.minecraft.network.play.server.SPacketExplosion; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | @RegisterHack(name = "NoRender", description = "ez", category = Hack.Category.Render) 12 | public class NoRender extends Hack { 13 | 14 | @RegisterSetting 15 | private final BooleanSetting explosions = new BooleanSetting("Explosions", true); 16 | 17 | @SubscribeEvent 18 | public void onPacket(PacketEvent.Receive event) { 19 | if(event.getPacket() instanceof SPacketExplosion && this.explosions.getValue()) { 20 | event.setCanceled(true); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/movement/ReverseStep.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.movement; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | 8 | @RegisterHack(name = "ReverseStep", description = "ez", category = Hack.Category.Movement) 9 | public class ReverseStep extends Hack { 10 | 11 | @SubscribeEvent 12 | public void onUpdate(PlayerLivingUpdateEvent event) { 13 | if(mc.player != null && mc.world != null && mc.player.onGround && !mc.player.isSneaking() && !mc.player.isInWater() && !mc.player.isDead && !mc.player.isInLava() && !mc.player.isOnLadder() && !mc.player.noClip && !mc.gameSettings.keyBindSneak.isKeyDown() && !mc.gameSettings.keyBindJump.isKeyDown()) { 14 | if(mc.player.onGround) { 15 | mc.player.motionY -= 1.0; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/ConnectionEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraftforge.fml.common.eventhandler.Event; 5 | 6 | import java.util.UUID; 7 | 8 | public class ConnectionEvent extends Event { 9 | 10 | private final UUID uuid; 11 | private final EntityPlayer entity; 12 | private final String name; 13 | 14 | public ConnectionEvent(UUID uuid, String name) { 15 | this.uuid = uuid; 16 | this.name = name; 17 | this.entity = null; 18 | } 19 | 20 | public ConnectionEvent(EntityPlayer entity, UUID uuid, String name) { 21 | this.entity = entity; 22 | this.uuid = uuid; 23 | this.name = name; 24 | } 25 | 26 | public String getName() { 27 | return this.name; 28 | } 29 | 30 | public UUID getUuid() { 31 | return this.uuid; 32 | } 33 | 34 | public EntityPlayer getEntity() { 35 | return this.entity; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/setting/GroupComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.setting; 2 | 3 | import me.gavin.notorious.gui.api.SettingComponent; 4 | import me.gavin.notorious.setting.SettingGroup; 5 | 6 | public class GroupComponent extends SettingComponent { 7 | 8 | private final SettingGroup setting; 9 | 10 | private boolean open; 11 | 12 | public GroupComponent(SettingGroup setting, int x, int y, int width, int height) { 13 | super(x, y, width, height); 14 | this.setting = setting; 15 | } 16 | 17 | @Override 18 | public void render(int mouseX, int mouseY, float partialTicks) { 19 | 20 | } 21 | 22 | @Override 23 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) { 24 | 25 | } 26 | 27 | @Override 28 | public void mouseReleased(int mouseX, int mouseY, int mouseButton) { 29 | 30 | } 31 | 32 | @Override 33 | public void keyTyped(char keyChar, int keyCode) { 34 | 35 | } 36 | 37 | @Override 38 | public int getTotalHeight() { 39 | return 0; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/GuiBetterChat.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.hack.hacks.chat.ChatMods; 5 | import net.minecraft.client.gui.Gui; 6 | import net.minecraft.client.gui.GuiNewChat; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.injection.At; 9 | import org.spongepowered.asm.mixin.injection.Redirect; 10 | 11 | @Mixin({GuiNewChat.class}) 12 | public class GuiBetterChat { 13 | 14 | @Redirect(method = "drawChat", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiNewChat;drawRect(IIIII)V", ordinal = 0)) 15 | private void overrideChatBackgroundColour(int left, int top, int right, int bottom, int color) { 16 | if(!Notorious.INSTANCE.hackManager.getHack(ChatMods.class).clearChat.isEnabled() && Notorious.INSTANCE.hackManager.getHack(ChatMods.class).isEnabled() || !Notorious.INSTANCE.hackManager.getHack(ChatMods.class).isEnabled()) { 17 | Gui.drawRect(left, top, right, bottom, color); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/command/impl/TestCommand.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.command.impl; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.command.Command; 5 | import me.gavin.notorious.command.RegisterCommand; 6 | 7 | @RegisterCommand(name = "Test", description = "Just a test command.", syntax = "test ", aliases = {"t", "te", "st"}) 8 | public class TestCommand extends Command { 9 | @Override 10 | public void onCommand(String[] args, String command) { 11 | if (args.length == 1){ 12 | if (args[0].equalsIgnoreCase("one")){ 13 | Notorious.INSTANCE.messageManager.sendMessage(getName()); 14 | } else if (args[0].equalsIgnoreCase("two")){ 15 | Notorious.INSTANCE.messageManager.sendMessage(getDescription()); 16 | } else if (args[0].equalsIgnoreCase("three")){ 17 | Notorious.INSTANCE.messageManager.sendMessage(getSyntax() + " This is not an actual syntax message!"); 18 | } else { 19 | sendSyntax(); 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/HellenKeller.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import net.minecraft.client.gui.Gui; 7 | import net.minecraft.client.renderer.GlStateManager; 8 | import net.minecraftforge.client.event.RenderGameOverlayEvent; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | import java.awt.*; 12 | 13 | @RegisterHack(name = "HellenKeller", description = "", category = Hack.Category.Render) 14 | public class HellenKeller extends Hack { 15 | 16 | @Override 17 | public String getMetaData() { 18 | return " [" + ChatFormatting.GRAY + "Blind" + ChatFormatting.RESET + "]"; 19 | } 20 | 21 | @SubscribeEvent 22 | public void onRender(RenderGameOverlayEvent.Chat event) { 23 | GlStateManager.pushMatrix(); 24 | Gui.drawRect(0, 0, HellenKeller.mc.displayWidth, HellenKeller.mc.displayHeight, new Color(0, 0, 0, 255).getRGB()); 25 | GlStateManager.popMatrix(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/client/DiscordRPC.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.client; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.util.DiscordUtil; 7 | 8 | @RegisterHack(name = "DiscordRPC", description = "ez", category = Hack.Category.Client) 9 | public class DiscordRPC extends Hack { 10 | 11 | @Override 12 | public void onEnable() { 13 | if(mc.world != null && mc.player != null) { 14 | DiscordUtil.startRPC(); 15 | notorious.messageManager.sendMessage("Starting " + ChatFormatting.GREEN + ChatFormatting.BOLD + "RPC" + ChatFormatting.RESET + "!"); 16 | }else { 17 | toggle(); 18 | } 19 | } 20 | 21 | @Override 22 | public void onDisable() { 23 | if(mc.world != null && mc.player != null) { 24 | DiscordUtil.stopRPC(); 25 | notorious.messageManager.sendMessage("Stopping " + ChatFormatting.RED + ChatFormatting.BOLD + "RPC" + ChatFormatting.RESET + "!"); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/RenderPlayerMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.hack.hacks.render.Nametags; 5 | import me.gavin.notorious.hack.hacks.render.PopESP; 6 | import net.minecraft.client.entity.AbstractClientPlayer; 7 | import net.minecraft.client.renderer.entity.RenderPlayer; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.injection.At; 10 | import org.spongepowered.asm.mixin.injection.Inject; 11 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 12 | 13 | @Mixin({RenderPlayer.class}) 14 | public class RenderPlayerMixin { 15 | 16 | @Inject(method = "renderEntityName", at = @At("HEAD"), cancellable = true) 17 | public void renderEntityNameHook(AbstractClientPlayer entityIn, double x, double y, double z, String name, double distanceSq, CallbackInfo info) { 18 | if(Notorious.INSTANCE.hackManager.getHack(PopESP.class).isEnabled() || Notorious.INSTANCE.hackManager.getHack(Nametags.class).isEnabled()) { 19 | info.cancel(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/misc/CopyCoords.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.misc; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | 7 | import java.awt.*; 8 | import java.awt.datatransfer.StringSelection; 9 | 10 | @RegisterHack(name = "CopyCoords", description = "ez", category = Hack.Category.Misc) 11 | public class CopyCoords extends Hack { 12 | 13 | @Override 14 | protected void onEnable() { 15 | if (mc.player != null && mc.world != null) { 16 | Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(mc.player.getPosition().toString()), null); 17 | notorious.messageManager.sendMessage("Copied Coords " + ChatFormatting.GRAY + "[" + ChatFormatting.GREEN + "X:" + mc.player.getPosition().getX() + " Y:" + mc.player.getPosition().getY() + " Z:" + mc.player.getPosition().getZ() + ChatFormatting.GRAY + "]" + ChatFormatting.RESET + " to clipboard"); 18 | } else { 19 | notorious.messageManager.sendError("Unable to copy coords?"); 20 | } 21 | disable(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/MixinRenderItem.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.hack.hacks.render.Glint; 5 | import net.minecraft.client.renderer.RenderItem; 6 | import net.minecraft.client.renderer.block.model.IBakedModel; 7 | import net.minecraft.item.ItemStack; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.Shadow; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.ModifyArg; 12 | 13 | @Mixin({ RenderItem.class }) 14 | public class MixinRenderItem { 15 | 16 | @Shadow 17 | private void renderModel(IBakedModel model, int color, ItemStack stack) { 18 | } 19 | 20 | @ModifyArg(method = "renderEffect", at = @At(value = "INVOKE", target = "net/minecraft/client/renderer/RenderItem.renderModel(Lnet/minecraft/client/renderer/block/model/IBakedModel;I)V"), index = 1) 21 | private int renderEffect(int oldValue) { 22 | return Notorious.INSTANCE.hackManager.getHack(Glint.class).isEnabled() ? ((Glint)Notorious.INSTANCE.hackManager.getHack(Glint.class)).colorShit.getAsColor().getRGB() : oldValue; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/BlockEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraft.util.EnumFacing; 4 | import net.minecraft.util.math.BlockPos; 5 | import net.minecraftforge.fml.common.eventhandler.Event; 6 | 7 | public abstract class BlockEvent extends Event { 8 | 9 | private final BlockPos pos; 10 | 11 | public BlockEvent(BlockPos pos) { 12 | this.pos = pos; 13 | } 14 | 15 | public BlockPos getPos() { 16 | return pos; 17 | } 18 | 19 | public static class Click extends BlockEvent { 20 | private final EnumFacing facing; 21 | 22 | public Click(BlockPos pos, EnumFacing facing) { 23 | super(pos); 24 | this.facing = facing; 25 | } 26 | 27 | public EnumFacing getFacing() { 28 | return facing; 29 | } 30 | } 31 | 32 | public static class Damage extends BlockEvent { 33 | private final EnumFacing facing; 34 | 35 | public Damage(BlockPos pos, EnumFacing facing) { 36 | super(pos); 37 | this.facing = facing; 38 | } 39 | 40 | public EnumFacing getFacing() { 41 | return facing; 42 | } 43 | } 44 | 45 | public static class Destroy extends BlockEvent { 46 | public Destroy(BlockPos pos) { 47 | super(pos); 48 | } 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/manager/MessageManager.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.manager; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.NotoriousMod; 5 | import me.gavin.notorious.stuff.IMinecraft; 6 | import net.minecraft.util.text.TextComponentString; 7 | 8 | public class MessageManager implements IMinecraft { 9 | 10 | public final String messagePrefix = ChatFormatting.BLUE + "<" + NotoriousMod.MOD_ID + "> " + ChatFormatting.RESET; 11 | public final String errorPrefix = ChatFormatting.DARK_RED + "<" + NotoriousMod.MOD_ID + "> " + ChatFormatting.RESET; 12 | 13 | public void sendRawMessage(String message) { 14 | if (mc.player != null) { 15 | mc.player.sendMessage(new TextComponentString(message)); 16 | } 17 | } 18 | 19 | public void sendMessage(String message) { 20 | sendRawMessage(messagePrefix + message); 21 | } 22 | 23 | public void sendError(String message) { 24 | sendRawMessage(errorPrefix + message); 25 | } 26 | 27 | public void sendRemovableMessage(String message, int id) { 28 | mc.ingameGUI.getChatGUI().printChatMessageWithOptionalDeletion(new TextComponentString(messagePrefix + message), id); 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/EntityRendererMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.hack.hacks.render.AntiFog; 5 | import me.gavin.notorious.hack.hacks.render.Nametags; 6 | import me.gavin.notorious.hack.hacks.render.PopESP; 7 | import net.minecraft.client.entity.AbstractClientPlayer; 8 | import net.minecraft.client.renderer.EntityRenderer; 9 | import net.minecraft.client.renderer.GlStateManager; 10 | import net.minecraft.client.renderer.entity.Render; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.injection.At; 13 | import org.spongepowered.asm.mixin.injection.Inject; 14 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 15 | 16 | /** 17 | * @author Gav06 18 | * @since 6/15/2021 19 | */ 20 | 21 | @Mixin(EntityRenderer.class) 22 | public class EntityRendererMixin { 23 | 24 | @Inject(method = "setupFog", at = @At("RETURN")) 25 | public void setupFogInject(int startCoords, float partialTicks, CallbackInfo ci) { 26 | if (Notorious.INSTANCE.hackManager.getHack(AntiFog.class).isEnabled()) 27 | GlStateManager.disableFog(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/events/RenderEntityEvent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event.events; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraftforge.fml.common.eventhandler.Event; 5 | 6 | public abstract class RenderEntityEvent extends Event { 7 | 8 | private final Entity entity; 9 | private final double x, y, z; 10 | 11 | private RenderEntityEvent(Entity entity, double x, double y, double z) { 12 | this.entity = entity; 13 | this.x = x; 14 | this.y = y; 15 | this.z = z; 16 | } 17 | 18 | public Entity getEntity() { 19 | return entity; 20 | } 21 | 22 | public double getX() { 23 | return x; 24 | } 25 | 26 | public double getY() { 27 | return y; 28 | } 29 | 30 | public double getZ() { 31 | return z; 32 | } 33 | 34 | public static class Pre extends RenderEntityEvent { 35 | 36 | public Pre(Entity entity, double x, double y, double z) { 37 | super(entity, x, y, z); 38 | } 39 | } 40 | 41 | public static class Post extends RenderEntityEvent { 42 | 43 | public Post(Entity entity, double x, double y, double z) { 44 | super(entity, x, y, z); 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/misc/CopyIP.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.misc; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import net.minecraft.client.multiplayer.ServerData; 7 | import java.awt.*; 8 | import java.awt.datatransfer.StringSelection; 9 | 10 | @RegisterHack(name = "CopyIP", description = "Copies the current server IP to clipboard", category = Hack.Category.Misc) 11 | public class CopyIP extends Hack { 12 | 13 | @Override 14 | protected void onEnable() { 15 | if (mc.getConnection() != null && mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP != null) { 16 | final ServerData data = mc.getCurrentServerData(); 17 | Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(data.serverIP), null); 18 | notorious.messageManager.sendMessage("Copied IP " + ChatFormatting.GRAY + "[" + ChatFormatting.GREEN + data.serverIP + ChatFormatting.GRAY + "]" + ChatFormatting.RESET + " to clipboard"); 19 | } else { 20 | notorious.messageManager.sendError("Unable to copy server IP."); 21 | } 22 | disable(); 23 | } 24 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/RenderManagerMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.event.events.RenderEntityEvent; 4 | import net.minecraft.client.renderer.entity.RenderManager; 5 | import net.minecraft.entity.Entity; 6 | import net.minecraftforge.common.MinecraftForge; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.injection.At; 9 | import org.spongepowered.asm.mixin.injection.Inject; 10 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 11 | 12 | @Mixin(RenderManager.class) 13 | public class RenderManagerMixin { 14 | 15 | @Inject(method = "renderEntity", at = @At("HEAD")) 16 | public void renderEntity$Inject$HEAD(Entity entityIn, double x, double y, double z, float yaw, float partialTicks, boolean p_188391_10_, CallbackInfo ci) { 17 | MinecraftForge.EVENT_BUS.post(new RenderEntityEvent.Pre(entityIn, x, y, z)); 18 | } 19 | 20 | @Inject(method = "renderEntity", at = @At("TAIL")) 21 | public void renderEntity$Inject$TAIL(Entity entityIn, double x, double y, double z, float yaw, float partialTicks, boolean p_188391_10_, CallbackInfo ci) { 22 | MinecraftForge.EVENT_BUS.post(new RenderEntityEvent.Post(entityIn, x, y, z)); 23 | } 24 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/setting/ModeSetting.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.setting; 2 | 3 | public class ModeSetting extends Setting { 4 | 5 | private int modeIndex; 6 | private String[] modes; 7 | 8 | public ModeSetting(String name, String value, String... modes) { 9 | super(name); 10 | this.modes = modes; 11 | this.modeIndex = getIndex(value); 12 | } 13 | 14 | public String getMode() { 15 | return modes[modeIndex]; 16 | } 17 | 18 | public void setMode(String value) { 19 | this.modeIndex = getIndex(value); 20 | } 21 | 22 | public void cycle(boolean backwards) { 23 | if (!backwards) { 24 | if (modeIndex == modes.length - 1) { 25 | modeIndex = 0; 26 | } else { 27 | modeIndex++; 28 | } 29 | } else { 30 | if (modeIndex == 0) { 31 | modeIndex = modes.length - 1; 32 | } else { 33 | modeIndex--; 34 | } 35 | } 36 | } 37 | 38 | public int getIndex(String value) { 39 | for (int i = 0; i < modes.length; i++) { 40 | if (modes[i].equals(value)) 41 | return i; 42 | } 43 | 44 | return -1; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/zihasz/WorldUtil.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util.zihasz; 2 | 3 | import me.gavin.notorious.util.Instance; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.init.Blocks; 6 | import net.minecraft.util.math.BlockPos; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | public class WorldUtil implements Instance { 12 | 13 | public static List getSphere(BlockPos loc, float r, int h, boolean hollow, boolean sphere, int plus_y) { 14 | List blocks = new ArrayList<>(); 15 | 16 | int cx = loc.getX(); 17 | int cy = loc.getY(); 18 | int cz = loc.getZ(); 19 | 20 | for (int x = cx - (int) r; x <= cx + r; x++) { 21 | for (int z = cz - (int) r; z <= cz + r; z++) { 22 | for (int y = (sphere ? cy - (int) r : cy); y < (sphere ? cy + r : cy + h); y++) { 23 | double dist = (cx - x) * (cx - x) + (cz - z) * (cz - z) + (sphere ? (cy - y) * (cy - y) : 0); 24 | if (dist < r * r && !(hollow && dist < (r - 1) * (r - 1))) { 25 | blocks.add(new BlockPos(x, y + plus_y, z)); 26 | } 27 | } 28 | } 29 | } 30 | return blocks; 31 | } 32 | 33 | public static List getSphere(BlockPos loc, float r, boolean hollow) { 34 | return getSphere(loc, r, (int) r, hollow, true, 0); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/misc/WeaknessLog.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.misc; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.BooleanSetting; 8 | import net.minecraft.init.MobEffects; 9 | import net.minecraft.network.play.server.SPacketDisconnect; 10 | import net.minecraft.util.text.TextComponentString; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | 13 | @RegisterHack(name = "WeaknessLog", description = "ez", category = Hack.Category.Misc) 14 | public class WeaknessLog extends Hack { 15 | 16 | @RegisterSetting 17 | public final BooleanSetting announce = new BooleanSetting("Announce", true); 18 | 19 | @SubscribeEvent 20 | public void onUpdate(PlayerLivingUpdateEvent event) { 21 | if(mc.player.isPotionActive(MobEffects.WEAKNESS)) { 22 | if(announce.isEnabled()) { 23 | mc.player.sendChatMessage("Stop weaknessing retard"); 24 | } 25 | mc.getConnection().handleDisconnect(new SPacketDisconnect(new TextComponentString("Ew you got weaknessed"))); 26 | toggle(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/friend/Friends.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.friend; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class Friends { 7 | public ArrayList friends; 8 | public Friends(){ 9 | friends = new ArrayList<>(); 10 | } 11 | 12 | public List getFriends(){ 13 | return friends; 14 | } 15 | 16 | public boolean isFriend(String name){ 17 | for(Friend f : getFriends()){ 18 | if(f.getName().equalsIgnoreCase(name)) 19 | return true; 20 | } 21 | return false; 22 | } 23 | 24 | public ArrayList getFriendByName() { 25 | ArrayList friendsName = new ArrayList<>(); 26 | friends.forEach(friend -> { 27 | friendsName.add(friend.getName()); 28 | }); 29 | return friendsName; 30 | } 31 | 32 | public Friend getFriendByName(String name){ 33 | Friend fr = null; 34 | for(Friend f : getFriends()){ 35 | if(f.getName().equalsIgnoreCase(name)) fr = f; 36 | } 37 | return fr; 38 | } 39 | 40 | public void addFriend(String name){ 41 | friends.add(new Friend(name)); 42 | } 43 | 44 | public void delFriend(String name){ 45 | friends.remove(getFriendByName(name)); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/AutoChad.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.NumSetting; 8 | import me.gavin.notorious.util.TickTimer; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | import net.minecraftforge.fml.common.gameevent.TickEvent; 11 | 12 | @RegisterHack(name = "AutoChad", description = "ez", category = Hack.Category.Chat) 13 | public class AutoChad extends Hack { 14 | 15 | @RegisterSetting 16 | public final NumSetting delay = new NumSetting("Delay", 10, 1, 15, 1); 17 | 18 | public TickTimer timer = new TickTimer(); 19 | 20 | @Override 21 | public String getMetaData() { 22 | return " [" + ChatFormatting.GRAY + delay.getValue() + ChatFormatting.RESET + "]"; 23 | } 24 | 25 | @SubscribeEvent 26 | public void onUpdate(TickEvent event) { 27 | if (mc.player == null || mc.world == null) return; 28 | 29 | if (timer.hasTicksPassed((long) (delay.getValue() * 20))) { 30 | mc.player.sendChatMessage("youtube.com/channel/UCRpxbpHD4IMS9fZmAirFaDg"); 31 | timer.reset(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/NotoriousMixinLoader.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin; 2 | 3 | import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; 4 | import org.spongepowered.asm.launch.MixinBootstrap; 5 | import org.spongepowered.asm.mixin.MixinEnvironment; 6 | import org.spongepowered.asm.mixin.Mixins; 7 | 8 | import javax.annotation.Nullable; 9 | import java.util.Map; 10 | 11 | /** 12 | * @author Gav06 13 | * @since 6/15/2021 14 | */ 15 | 16 | @IFMLLoadingPlugin.MCVersion("1.12.2") 17 | public class NotoriousMixinLoader implements IFMLLoadingPlugin { 18 | 19 | @Override 20 | public String[] getASMTransformerClass() { 21 | return new String[0]; 22 | } 23 | 24 | @Override 25 | public String getModContainerClass() { 26 | return null; 27 | } 28 | 29 | @Nullable 30 | @Override 31 | public String getSetupClass() { 32 | return null; 33 | } 34 | 35 | @Override 36 | public void injectData(Map data) { 37 | MixinBootstrap.init(); 38 | Mixins.addConfiguration("mixins.notorious.json"); 39 | MixinEnvironment.getDefaultEnvironment().setObfuscationContext("searge"); 40 | } 41 | 42 | @Override 43 | public String getAccessTransformerClass() { 44 | return null; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/command/Command.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.command; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import net.minecraft.client.Minecraft; 5 | 6 | import java.util.Arrays; 7 | import java.util.List; 8 | 9 | public abstract class Command { 10 | protected static final Minecraft mc = Minecraft.getMinecraft(); 11 | 12 | private final String name; 13 | private final String description; 14 | private final String syntax; 15 | private final List aliases; 16 | 17 | public Command(){ 18 | final RegisterCommand annotation = getClass().getAnnotation(RegisterCommand.class); 19 | 20 | this.name = annotation.name(); 21 | this.description = annotation.description(); 22 | this.syntax = annotation.syntax(); 23 | this.aliases = Arrays.asList(annotation.aliases()); 24 | } 25 | 26 | public abstract void onCommand(String[] args, String command); 27 | 28 | public String getName() { 29 | return name; 30 | } 31 | 32 | public String getDescription() { 33 | return description; 34 | } 35 | 36 | public String getSyntax() { 37 | return syntax; 38 | } 39 | 40 | public void sendSyntax(){ 41 | Notorious.INSTANCE.messageManager.sendMessage(getSyntax()); 42 | } 43 | 44 | public List getAliases() { 45 | return aliases; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/client/ClickGUI.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.client; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | import me.gavin.notorious.hack.RegisterSetting; 6 | import me.gavin.notorious.setting.ColorSetting; 7 | import me.gavin.notorious.setting.ModeSetting; 8 | import me.gavin.notorious.setting.NumSetting; 9 | 10 | @RegisterHack(name = "ClickGUI", description = "Opens the click gui", category = Hack.Category.Client) 11 | public class ClickGUI extends Hack { 12 | 13 | @RegisterSetting 14 | public final ModeSetting colorMode = new ModeSetting("ColorMode", "Rainbow", "Rainbow", "RGB"); 15 | @RegisterSetting 16 | public final ColorSetting guiColor = new ColorSetting("RGBColor", 255, 0, 0, 255); 17 | @RegisterSetting 18 | public final NumSetting backgroundAlpha = new NumSetting("BackgroundAlpha", 150, 1, 255, 1); 19 | @RegisterSetting 20 | public final NumSetting length = new NumSetting("Length", 8f, 1f, 15f, 1f); 21 | @RegisterSetting 22 | public final NumSetting saturation = new NumSetting("Saturation", 0.6f, 0.1f, 1f, 0.1f); 23 | @RegisterSetting 24 | public final NumSetting scrollSpeed = new NumSetting("ScrollSpeed", 1, 0.1f, 5, 0.1f); 25 | 26 | @Override 27 | protected void onEnable() { 28 | mc.displayGuiScreen(notorious.clickGuiScreen); 29 | disable(); 30 | } 31 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/EntityPlayerSPMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.event.events.PlayerWalkingUpdateEvent; 5 | import net.minecraft.client.entity.EntityPlayerSP; 6 | import net.minecraftforge.common.MinecraftForge; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.injection.At; 9 | import org.spongepowered.asm.mixin.injection.Inject; 10 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 11 | 12 | /** 13 | * @author Gav06 14 | * @since 6/15/2021 15 | */ 16 | 17 | @Mixin(EntityPlayerSP.class) 18 | public class EntityPlayerSPMixin { 19 | 20 | @Inject(method = "onLivingUpdate", at = @At("HEAD")) 21 | public void onLivingUpdateInject(CallbackInfo ci) { 22 | MinecraftForge.EVENT_BUS.post(new PlayerLivingUpdateEvent()); 23 | } 24 | 25 | @Inject(method = "onUpdateWalkingPlayer", at = @At("HEAD")) 26 | public void onUpdateWalkingPlayerInjectPre(CallbackInfo ci) { 27 | MinecraftForge.EVENT_BUS.post(new PlayerWalkingUpdateEvent.Pre()); 28 | } 29 | 30 | @Inject(method = "onUpdateWalkingPlayer", at = @At("TAIL")) 31 | public void onUpdateWalkingPlayerInjectPost(CallbackInfo ci) { 32 | MinecraftForge.EVENT_BUS.post(new PlayerWalkingUpdateEvent.Post()); 33 | } 34 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/misc/AutoLog.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.misc; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.setting.NumSetting; 9 | import net.minecraft.network.play.server.SPacketDisconnect; 10 | import net.minecraft.util.text.TextComponentString; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | 13 | import java.util.Objects; 14 | 15 | @RegisterHack(name = "AutoLog", description = "ez", category = Hack.Category.Misc) 16 | public class AutoLog extends Hack { 17 | 18 | @RegisterSetting 19 | public final NumSetting health = new NumSetting("HealthToLog", 16f, 1f, 36f, 1f); 20 | 21 | @Override 22 | public String getMetaData() { 23 | return " [" + ChatFormatting.GRAY + health.getValue() + ChatFormatting.RESET + "]"; 24 | } 25 | 26 | @SubscribeEvent 27 | public void onUpdate(PlayerLivingUpdateEvent event) { 28 | if(mc.player.getHealth() <= health.getValue()) { 29 | Objects.requireNonNull(mc.getConnection()).handleDisconnect(new SPacketDisconnect(new TextComponentString("Logged at " + "[" + mc.player.getHealth() + "]"))); 30 | toggle(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/movement/Velocity.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.movement; 2 | 3 | import me.gavin.notorious.event.events.PacketEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.mixin.mixins.accessor.ISPacketExplosionMixin; 7 | import net.minecraft.network.play.server.SPacketEntityVelocity; 8 | import net.minecraft.network.play.server.SPacketExplosion; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | @RegisterHack(name = "Velocity", description = "Cancel packets that give velocity", category = Hack.Category.Movement) 12 | public class Velocity extends Hack { 13 | 14 | @SubscribeEvent 15 | public void onPacketReceive(PacketEvent.Receive event) { 16 | if (event.getPacket() instanceof SPacketExplosion) { 17 | final SPacketExplosion explosion = (SPacketExplosion) event.getPacket(); 18 | final ISPacketExplosionMixin accessor = (ISPacketExplosionMixin) explosion; 19 | accessor.setMotionXAccessor(0f); 20 | accessor.setMotionYAccessor(0f); 21 | accessor.setMotionZAccessor(0f); 22 | } else if (event.getPacket() instanceof SPacketEntityVelocity) { 23 | if (((SPacketEntityVelocity)event.getPacket()).getEntityID() == mc.player.getEntityId()) { 24 | event.setCanceled(true); 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/NetworkManagerMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import io.netty.channel.ChannelHandlerContext; 4 | import me.gavin.notorious.event.events.PacketEvent; 5 | import net.minecraft.network.NetworkManager; 6 | import net.minecraft.network.Packet; 7 | import net.minecraftforge.common.MinecraftForge; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.injection.At; 10 | import org.spongepowered.asm.mixin.injection.Inject; 11 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 12 | 13 | @Mixin(NetworkManager.class) 14 | public class NetworkManagerMixin { 15 | 16 | @Inject(method = "sendPacket(Lnet/minecraft/network/Packet;)V", at = @At("HEAD"), cancellable = true) 17 | public void sendPacketInject(Packet packetIn, CallbackInfo ci) { 18 | final PacketEvent.Send event = new PacketEvent.Send(packetIn); 19 | MinecraftForge.EVENT_BUS.post(event); 20 | if (event.isCanceled()) 21 | ci.cancel(); 22 | } 23 | 24 | @Inject(method = "channelRead0", at = @At("HEAD"), cancellable = true) 25 | public void channelRead0Inject(ChannelHandlerContext p_channelRead0_1_, Packet p_channelRead0_2_, CallbackInfo ci) { 26 | final PacketEvent.Receive event = new PacketEvent.Receive(p_channelRead0_2_); 27 | MinecraftForge.EVENT_BUS.post(event); 28 | if (event.isCanceled()) 29 | ci.cancel(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/manager/NotificationManager.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.manager; 2 | 3 | import me.gavin.notorious.notifications.Notification; 4 | import net.minecraftforge.common.MinecraftForge; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | 8 | import java.util.ArrayDeque; 9 | import java.util.Queue; 10 | 11 | public class NotificationManager { 12 | 13 | public Notification currentNotification; 14 | public Queue notificationQueue = new ArrayDeque<>(); 15 | 16 | public NotificationManager() { 17 | MinecraftForge.EVENT_BUS.register(this); 18 | } 19 | 20 | public void show(Notification notification) { 21 | notificationQueue.add(notification); 22 | } 23 | 24 | public void render() { 25 | this.update(); 26 | 27 | if (currentNotification != null) 28 | currentNotification.draw(); 29 | } 30 | 31 | private void update() { 32 | if (currentNotification != null && currentNotification.expired()) 33 | currentNotification = null; 34 | 35 | if (currentNotification == null && !notificationQueue.isEmpty()) { 36 | currentNotification = notificationQueue.poll(); 37 | currentNotification.show(); 38 | } 39 | if(currentNotification != null && (long) notificationQueue.size() > 1) { 40 | notificationQueue.remove(); 41 | } 42 | } 43 | 44 | @SubscribeEvent 45 | public void onRenderTick(TickEvent.RenderTickEvent event) { 46 | render(); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/Glint.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | import me.gavin.notorious.hack.RegisterSetting; 6 | import me.gavin.notorious.setting.BooleanSetting; 7 | import me.gavin.notorious.setting.ColorSetting; 8 | import me.gavin.notorious.setting.NumSetting; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | import net.minecraftforge.fml.common.gameevent.TickEvent; 11 | 12 | import java.awt.*; 13 | 14 | @RegisterHack(name = "Glint", description = "ez", category = Hack.Category.Render) 15 | public class Glint extends Hack { 16 | 17 | @RegisterSetting 18 | public final ColorSetting colorShit = new ColorSetting("Color", 255, 255, 255, 255); 19 | @RegisterSetting 20 | public static NumSetting saturation = new NumSetting("Saturation", 1.0F, 0.1F, 1.0F, 0.1F); 21 | @RegisterSetting 22 | public final BooleanSetting rainbow = new BooleanSetting("Rainbow", true); 23 | 24 | public static Color getColor(long offset, float fade) { 25 | float hue = (float) (System.nanoTime() + offset) / 1.0E10F % 1.0F; 26 | long color = Long.parseLong(Integer.toHexString(Color.HSBtoRGB(hue, saturation.getValue(), 1.0F)), 16); 27 | Color c = new Color((int) color); 28 | return new Color(c.getRed() / 255.0F * fade, c.getGreen() / 255.0F * fade, c.getBlue() / 255.0F * fade, c.getAlpha() / 255.0F); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/font/CFontLoader.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util.font; 2 | 3 | import java.awt.Font; 4 | 5 | public class CFontLoader { 6 | 7 | public static final Font MULI_SEMIBOLD = getFontByName("muli-semibold").deriveFont(18f); 8 | public static final Font COMFORTAA = getFontByName("comfortaa").deriveFont(18f); 9 | public static final Font HELVETICA_BOLD = getFontByName("helvetica-bold").deriveFont(18f); 10 | public static final Font HELVETICA = getFontByName("helvetica").deriveFont(18f); 11 | 12 | public static Font getFontByName(String name) { 13 | if (name.equalsIgnoreCase("muli-semibold")) { 14 | return getFontFromInput("/assets/notorious/Muli-SemiBold.ttf"); 15 | } else if (name.equalsIgnoreCase("Comfortaa")) { 16 | return getFontFromInput("/assets/notorious/Comfortaa-Regular.ttf"); 17 | } else if (name.equalsIgnoreCase("helvetica-bold")) { 18 | return getFontFromInput("/assets/notorious/Helvetica-Bold-Font.ttf"); 19 | } else if (name.equalsIgnoreCase("helvetica")) { 20 | return getFontFromInput("/assets/notorious/Helvetica.ttf"); 21 | } 22 | 23 | return null; 24 | } 25 | 26 | public static Font getFontFromInput(String path) { 27 | try { 28 | Font newFont = Font.createFont(Font.TRUETYPE_FONT, CFontLoader.class.getResourceAsStream(path)); 29 | return newFont; 30 | } 31 | catch (Exception e) { 32 | return null; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/combat/Quiver.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.combat; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.setting.NumSetting; 9 | import net.minecraft.item.ItemBow; 10 | import net.minecraft.network.play.client.CPacketPlayer; 11 | import net.minecraft.network.play.client.CPacketPlayerTryUseItem; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | 14 | @RegisterHack(name = "Quiver", description = "Automatically places a totem in your offhand.", category = Hack.Category.Combat) 15 | public class Quiver extends Hack{ 16 | 17 | @RegisterSetting 18 | public final NumSetting tickDelay = new NumSetting("HoldTime", 3, 0, 8, 0.5f); 19 | 20 | @Override 21 | public String getMetaData() { 22 | return " [" + ChatFormatting.GRAY + tickDelay.getValue() + ChatFormatting.RESET + "]"; 23 | } 24 | 25 | @SubscribeEvent 26 | public void onUpdate(PlayerLivingUpdateEvent event) { 27 | if (mc.player.getHeldItemMainhand().getItem() instanceof ItemBow && mc.player.getItemInUseMaxCount() >= tickDelay.getValue()) { 28 | mc.player.connection.sendPacket(new CPacketPlayer.Rotation(mc.player.cameraYaw, -90f, true)); 29 | mc.player.connection.sendPacket(new CPacketPlayerTryUseItem()); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/ViewModel.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | import me.gavin.notorious.hack.RegisterSetting; 6 | import me.gavin.notorious.setting.NumSetting; 7 | 8 | @RegisterHack(name = "ViewModel", description = "ez", category = Hack.Category.Render) 9 | public class ViewModel extends Hack { 10 | 11 | @RegisterSetting 12 | public final NumSetting translateX = new NumSetting("TranslateX", 0, -200, 200, 1); 13 | @RegisterSetting 14 | public final NumSetting translateY = new NumSetting("TranslateY", 0, -200, 200, 1); 15 | @RegisterSetting 16 | public final NumSetting translateZ = new NumSetting("TranslateZ", 0, -200, 200, 1); 17 | 18 | @RegisterSetting 19 | public final NumSetting rotateX = new NumSetting("RotateX", 0, -200, 200, 1); 20 | @RegisterSetting 21 | public final NumSetting rotateY = new NumSetting("RotateY", 0, -200, 200, 1); 22 | @RegisterSetting 23 | public final NumSetting rotateZ = new NumSetting("RotateZ", 0, -200, 200, 1); 24 | 25 | @RegisterSetting 26 | public final NumSetting scaleX = new NumSetting("ScaleX", 100, 0, 200, 1); 27 | @RegisterSetting 28 | public final NumSetting scaleY = new NumSetting("ScaleY", 100, 0, 200, 1); 29 | @RegisterSetting 30 | public final NumSetting scaleZ = new NumSetting("ScaleZ", 100, 0, 200, 1); 31 | 32 | public static ViewModel INSTANCE; 33 | 34 | { 35 | INSTANCE = this; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/AutoEZ.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import me.gavin.notorious.event.events.TotemPopEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.NumSetting; 8 | import me.gavin.notorious.util.TickTimer; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | @RegisterHack(name = "AutoEZ", description = "ez", category = Hack.Category.Chat) 12 | public class AutoEZ extends Hack { 13 | 14 | @RegisterSetting 15 | public final NumSetting delay = new NumSetting("Delay", 5, 1, 15, 1); 16 | 17 | public TickTimer timer = new TickTimer(); 18 | 19 | public void onDeath(String name) { 20 | if(timer.hasTicksPassed((long) delay.getValue() * 20)) { 21 | mc.player.sendChatMessage("LOL EZ " + name + " stay dead nn!"); 22 | } 23 | } 24 | 25 | @SubscribeEvent 26 | public void onPop(TotemPopEvent event) { 27 | if(event.getPopCount() == 1) { 28 | if(timer.hasTicksPassed((long) delay.getValue() * 20)) { 29 | mc.player.sendChatMessage("OMG " + event.getName() + " your so bad stop popping!"); 30 | timer.reset(); 31 | } 32 | }else { 33 | if(timer.hasTicksPassed((long) delay.getValue() * 20)) { 34 | mc.player.sendChatMessage("OMG " + event.getName() + " your so bad stop popping!"); 35 | timer.reset(); 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/movement/Sprint.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.movement; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.setting.ModeSetting; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | /** 12 | * @skidded from gavhack stay mad 13 | */ 14 | 15 | @RegisterHack(name = "Sprint", description = "Holds sprint.", category = Hack.Category.Movement) 16 | public class Sprint extends Hack { 17 | 18 | @RegisterSetting 19 | public final ModeSetting sprintMode = new ModeSetting("SprintMode", "Legit", "Legit", "Rage"); 20 | 21 | @Override 22 | public String getMetaData() { 23 | return " [" + ChatFormatting.GRAY + sprintMode.getMode() + ChatFormatting.RESET + "]"; 24 | } 25 | 26 | @SubscribeEvent 27 | public void onLivingUpdate(PlayerLivingUpdateEvent event) { 28 | if(sprintMode.getMode().equals("Legit")) { 29 | if (!mc.player.isSneaking() && !mc.player.isHandActive() && !mc.player.collidedHorizontally) { 30 | if (!mc.player.isSprinting()) 31 | mc.player.setSprinting(true); 32 | } 33 | }else { 34 | if (mc.player.moveForward != 0 || mc.player.moveStrafing != 0) { 35 | if (!mc.player.isSprinting()) 36 | mc.player.setSprinting(true); 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/misc/RBandDetect.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.misc; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.event.events.PacketEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.hack.hacks.combat.AutoCrystal; 9 | import me.gavin.notorious.hack.hacks.movement.AutoHop; 10 | import me.gavin.notorious.hack.hacks.movement.Step; 11 | import me.gavin.notorious.setting.BooleanSetting; 12 | import net.minecraft.network.play.server.SPacketPlayerPosLook; 13 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 14 | 15 | @RegisterHack(name = "RBandDetect", description = "ez", category = Hack.Category.Misc) 16 | public class RBandDetect extends Hack { 17 | 18 | @RegisterSetting public final BooleanSetting disableOnLag = new BooleanSetting("DisableOnLag", true); 19 | @RegisterSetting public final BooleanSetting step = new BooleanSetting("Step", true); 20 | 21 | @SubscribeEvent 22 | public void onPacket(PacketEvent.Receive event) { 23 | if(event.getPacket() instanceof SPacketPlayerPosLook) { 24 | notorious.messageManager.sendError("Rubberband detected!"); 25 | if (disableOnLag.isEnabled() && (step.isEnabled())) { 26 | notorious.messageManager.sendMessage("Toggling modules."); 27 | if(Notorious.INSTANCE.hackManager.getHack(Step.class).isEnabled()) { 28 | Notorious.INSTANCE.hackManager.getHack(Step.class).toggle(); 29 | } 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/NColor.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import java.awt.*; 4 | 5 | public class NColor { 6 | 7 | private int red, green, blue, alpha; 8 | 9 | public NColor(int red, int green, int blue, int alpha) { 10 | this.red = red; 11 | this.green = green; 12 | this.blue = blue; 13 | this.alpha = alpha; 14 | } 15 | 16 | public NColor(int red, int green, int blue) { 17 | this.red = red; 18 | this.green = green; 19 | this.blue = blue; 20 | this.alpha = 255; 21 | } 22 | 23 | public NColor(Color color) { 24 | this.red = color.getRed(); 25 | this.green = color.getGreen(); 26 | this.blue = color.getBlue(); 27 | this.alpha = color.getAlpha(); 28 | } 29 | 30 | public int getRed() { 31 | return red; 32 | } 33 | 34 | public void setRed(int red) { 35 | this.red = red; 36 | } 37 | 38 | public int getGreen() { 39 | return green; 40 | } 41 | 42 | public void setGreen(int green) { 43 | this.green = green; 44 | } 45 | 46 | public int getBlue() { 47 | return blue; 48 | } 49 | 50 | public void setBlue(int blue) { 51 | this.blue = blue; 52 | } 53 | 54 | public int getAlpha() { 55 | return alpha; 56 | } 57 | 58 | public void setAlpha(int alpha) { 59 | this.alpha = alpha; 60 | } 61 | 62 | public int getRGB() { 63 | return (alpha & 255) << 24 | (red & 255) << 16 | (green & 255) << 8 | (blue & 255); 64 | } 65 | 66 | public Color getAsColor() { 67 | return new Color(red, green, blue, alpha); 68 | } 69 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/Fullbright.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | import org.lwjgl.input.Keyboard; 8 | 9 | import java.util.ArrayList; 10 | import java.util.Arrays; 11 | import java.util.List; 12 | 13 | /** 14 | * @author Gav06 15 | * @since 6/15/2021 16 | */ 17 | 18 | @RegisterHack(name = "Fullbright", description = "Makes it fully bright", category = Hack.Category.Render) 19 | public class Fullbright extends Hack { 20 | 21 | private final List previousLevels = new ArrayList<>(); 22 | 23 | @Override 24 | public void onEnable() { 25 | if(mc.player != null && mc.world != null) { 26 | final float[] table = mc.world.provider.getLightBrightnessTable(); 27 | if (mc.world.provider != null) { 28 | for (float f : table) { 29 | previousLevels.add(f); 30 | } 31 | 32 | Arrays.fill(table, 1f); 33 | } 34 | }else { 35 | toggle(); 36 | } 37 | } 38 | 39 | @Override 40 | public void onDisable() { 41 | if(mc.player != null && mc.world != null) { 42 | final float[] table = mc.world.provider.getLightBrightnessTable(); 43 | for (int i = 0; i < table.length; i++) { 44 | table[i] = previousLevels.get(i); 45 | } 46 | 47 | previousLevels.clear(); 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/setting/ColorSetting.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.setting; 2 | 3 | import me.gavin.notorious.util.NColor; 4 | 5 | import java.awt.*; 6 | 7 | public class ColorSetting extends Setting { 8 | 9 | private final NumSetting hue; 10 | private final NumSetting saturation; 11 | private final NumSetting brightness; 12 | private final NumSetting alpha; 13 | 14 | public ColorSetting(String name, NColor color) { 15 | super(name); 16 | final float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); 17 | hue = new NumSetting("Hue", hsb[0], 0f, 1f, 0.01f); 18 | saturation = new NumSetting("Saturation", hsb[1], 0f, 1f, 0.01f); 19 | brightness = new NumSetting("Brightness", hsb[2], 0f, 1f, 0.01f); 20 | alpha = new NumSetting("A", color.getAlpha(), 0, 255, 1); 21 | } 22 | 23 | public ColorSetting(String name, int red, int green, int blue, int alpha) { 24 | this(name, new NColor(red, green, blue, alpha)); 25 | } 26 | 27 | public ColorSetting(String name, Color color) { 28 | this(name, color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()); 29 | } 30 | 31 | public NumSetting getHue() { 32 | return hue; 33 | } 34 | 35 | public NumSetting getSaturation() { 36 | return saturation; 37 | } 38 | 39 | public NumSetting getBrightness() { 40 | return brightness; 41 | } 42 | 43 | public NumSetting getAlpha() { 44 | return alpha; 45 | } 46 | 47 | public Color getAsColor() { 48 | return new Color(Color.HSBtoRGB(hue.getValue(), saturation.getValue(), brightness.getValue())); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/player/FastPlace.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.player; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.mixin.mixins.accessor.IMinecraftMixin; 8 | import me.gavin.notorious.setting.BooleanSetting; 9 | import net.minecraft.init.Items; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | 12 | /** 13 | * @author Gav06 14 | * @since 6/15/2021 15 | */ 16 | 17 | @RegisterHack(name = "FastPlace", description = "Use items faster", category = Hack.Category.Player) 18 | public class FastPlace extends Hack { 19 | 20 | @RegisterSetting 21 | public final BooleanSetting xp = new BooleanSetting("XP", true); 22 | @RegisterSetting 23 | public final BooleanSetting crystals = new BooleanSetting("Crystals", true); 24 | @RegisterSetting 25 | public final BooleanSetting all = new BooleanSetting("All", false); 26 | 27 | @SubscribeEvent 28 | public void onUpdate(PlayerLivingUpdateEvent event) { 29 | if(mc.player.getHeldItemMainhand().getItem() == Items.EXPERIENCE_BOTTLE && xp.isEnabled()) { 30 | ((IMinecraftMixin)mc).setRightClickDelayTimerAccessor(0); 31 | } 32 | if(mc.player.getHeldItemMainhand().getItem() == Items.END_CRYSTAL && crystals.isEnabled()) { 33 | ((IMinecraftMixin)mc).setRightClickDelayTimerAccessor(0); 34 | } 35 | if(all.isEnabled()) { 36 | ((IMinecraftMixin)mc).setRightClickDelayTimerAccessor(0); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/UUIDResolver.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import org.apache.commons.io.IOUtils; 4 | import org.json.simple.JSONArray; 5 | import org.json.simple.JSONObject; 6 | import org.json.simple.JSONValue; 7 | import org.json.simple.parser.ParseException; 8 | 9 | import java.io.IOException; 10 | import java.net.URL; 11 | import java.util.Map; 12 | import java.util.concurrent.ConcurrentHashMap; 13 | 14 | public class UUIDResolver { 15 | 16 | public static final Map uuidNameCache = new ConcurrentHashMap<>(); 17 | 18 | public static String resolveName(String uuid) { 19 | final String original = uuid; 20 | uuid = uuid.replace("-", ""); 21 | if (uuidNameCache.containsKey(uuid)) { 22 | return uuidNameCache.get(uuid); 23 | } 24 | 25 | final String url = "https://api.mojang.com/user/profiles/" + uuid + "/names"; 26 | try { 27 | final String nameJson = IOUtils.toString(new URL(url)); 28 | if (nameJson != null && nameJson.length() > 0) { 29 | final JSONArray jsonArray = (JSONArray) JSONValue.parseWithException(nameJson); 30 | if (jsonArray != null) { 31 | final JSONObject latestName = (JSONObject) jsonArray.get(jsonArray.size() - 1); 32 | if (latestName != null) { 33 | uuidNameCache.put(original, latestName.get("name").toString()); 34 | return latestName.get("name").toString(); 35 | } 36 | } 37 | } 38 | } catch (IOException | ParseException e) { 39 | e.printStackTrace(); 40 | } 41 | 42 | return null; 43 | } 44 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/RotationUtil.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.network.play.client.CPacketPlayer; 5 | import net.minecraft.util.math.MathHelper; 6 | import net.minecraft.util.math.Vec3d; 7 | 8 | public class RotationUtil { 9 | 10 | public static void faceVector(Vec3d vec, boolean normalizeAngle) { 11 | float[] rotations = RotationUtil.getLegitRotations(vec); 12 | Minecraft.getMinecraft().player.connection.sendPacket(new CPacketPlayer.Rotation(rotations[0], normalizeAngle ? (float) MathHelper.normalizeAngle((int)((int)rotations[1]), (int)360) : rotations[1], Minecraft.getMinecraft().player.onGround)); 13 | } 14 | 15 | public static float[] getLegitRotations(Vec3d vec) { 16 | Vec3d eyesPos = RotationUtil.getEyesPos(); 17 | double diffX = vec.x - eyesPos.x; 18 | double diffY = vec.y - eyesPos.y; 19 | double diffZ = vec.z - eyesPos.z; 20 | double diffXZ = Math.sqrt(diffX * diffX + diffZ * diffZ); 21 | float yaw = (float)Math.toDegrees(Math.atan2(diffZ, diffX)) - 90.0f; 22 | float pitch = (float)(-Math.toDegrees(Math.atan2(diffY, diffXZ))); 23 | return new float[]{Minecraft.getMinecraft().player.rotationYaw + MathHelper.wrapDegrees((float)(yaw - Minecraft.getMinecraft().player.rotationYaw)), Minecraft.getMinecraft().player.rotationPitch + MathHelper.wrapDegrees((float)(pitch - Minecraft.getMinecraft().player.rotationPitch))}; 24 | } 25 | 26 | public static Vec3d getEyesPos() { 27 | return new Vec3d(Minecraft.getMinecraft().player.posX, Minecraft.getMinecraft().player.posY + (double)Minecraft.getMinecraft().player.getEyeHeight(), Minecraft.getMinecraft().player.posZ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/Alpha.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import me.gavin.notorious.event.events.RenderEntityEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.NumSetting; 8 | import net.minecraft.client.renderer.GlStateManager; 9 | import net.minecraft.entity.Entity; 10 | import net.minecraft.entity.player.EntityPlayer; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | import org.lwjgl.opengl.GL11; 13 | 14 | @RegisterHack(name = "Alpha", description = "ez", category = Hack.Category.Render) 15 | public class Alpha extends Hack { 16 | //will make players alpha be turned down when you get close to them for when you are stacked inside of players 17 | @RegisterSetting private final NumSetting range = new NumSetting("Range", 4, 1, 8, 1); 18 | @RegisterSetting private final NumSetting a = new NumSetting("Alpha", 125, 1, 255, 0.1f); 19 | 20 | @SubscribeEvent 21 | public void onRenderPre(RenderEntityEvent.Pre event) { 22 | if(shouldRender(event.getEntity())) { 23 | GL11.glColor4f(1f, 1f, 1f, a.getValue() / 255f); 24 | } 25 | } 26 | 27 | @SubscribeEvent 28 | public void onRenderPost(RenderEntityEvent.Post event) { 29 | if(shouldRender(event.getEntity())) { 30 | GL11.glColor4f(1f, 1f, 1f, 1f); 31 | } 32 | } 33 | 34 | public boolean shouldRender(Entity entity) { 35 | if(entity == mc.player) return false; 36 | if(!(entity instanceof EntityPlayer)) return false; 37 | if(entity.getDistance(mc.player) < range.getValue()) return true; 38 | return false; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/PlayerControllerMPMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.event.events.BlockEvent; 4 | import net.minecraft.client.multiplayer.PlayerControllerMP; 5 | import net.minecraft.util.EnumFacing; 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraftforge.common.MinecraftForge; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.injection.At; 10 | import org.spongepowered.asm.mixin.injection.Inject; 11 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 12 | 13 | @Mixin(PlayerControllerMP.class) 14 | public class PlayerControllerMPMixin { 15 | 16 | @Inject(method = "clickBlock", at = @At("HEAD"), cancellable = true) 17 | public void clickBlock(BlockPos loc, EnumFacing face, CallbackInfoReturnable cir) { 18 | BlockEvent.Click event = new BlockEvent.Click(loc, face); 19 | MinecraftForge.EVENT_BUS.post(event); 20 | 21 | if (event.isCanceled()) 22 | cir.cancel(); 23 | } 24 | 25 | @Inject(method = "onPlayerDamageBlock", at = @At("HEAD"), cancellable = true) 26 | public void onPlayerDamageBlock(BlockPos posBlock, EnumFacing directionFacing, CallbackInfoReturnable cir) { 27 | BlockEvent.Damage event = new BlockEvent.Damage(posBlock, directionFacing); 28 | MinecraftForge.EVENT_BUS.post(event); 29 | 30 | if (event.isCanceled()) 31 | cir.cancel(); 32 | } 33 | 34 | @Inject(method = "onPlayerDestroyBlock", at = @At("HEAD"), cancellable = true) 35 | public void onPlayerDestroyBlock(BlockPos pos, CallbackInfoReturnable cir) { 36 | BlockEvent.Destroy event = new BlockEvent.Destroy(pos); 37 | MinecraftForge.EVENT_BUS.post(event); 38 | 39 | 40 | if (event.isCanceled()) 41 | cir.cancel(); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/ModelPlayerMixin.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.event.events.PlayerModelRotationEvent; 4 | import me.gavin.notorious.stuff.IMinecraft; 5 | import net.minecraft.client.model.ModelBase; 6 | import net.minecraft.client.model.ModelPlayer; 7 | import net.minecraft.entity.Entity; 8 | import net.minecraft.entity.EntityLivingBase; 9 | import net.minecraftforge.common.MinecraftForge; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.injection.At; 12 | import org.spongepowered.asm.mixin.injection.Inject; 13 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 14 | 15 | @Mixin(ModelPlayer.class) 16 | public class ModelPlayerMixin implements IMinecraft { 17 | 18 | 19 | @Inject(method = "setRotationAngles", at = @At("INVOKE")) 20 | public void setRotationAnglesInject(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn, CallbackInfo ci) { 21 | if (entityIn == mc.player) { 22 | PlayerModelRotationEvent event = new PlayerModelRotationEvent(netHeadYaw, headPitch); 23 | MinecraftForge.EVENT_BUS.post(event); 24 | ((ModelPlayer) (Object) this).bipedHead.rotateAngleX = event.getPitch() * .017453292F; 25 | ((ModelPlayer) (Object) this).bipedHead.rotateAngleY = event.getYaw() * .017453292F; 26 | ((ModelPlayer) (Object) this).bipedHeadwear.rotateAngleX = event.getYaw() * .017453292F; 27 | ((ModelPlayer) (Object) this).bipedHeadwear.rotateAngleY = event.getYaw() * .017453292F; 28 | //ModelBase.copyModelAngles(((ModelPlayer) (Object) this).bipedHead, ((ModelPlayer) (Object) this).bipedHeadwear); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/ClickGuiScreen.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import net.minecraft.client.gui.GuiScreen; 5 | 6 | import java.io.IOException; 7 | import java.util.ArrayList; 8 | 9 | /** 10 | * @author Gav06 11 | * @since 6/15/2021 12 | */ 13 | 14 | public class ClickGuiScreen extends GuiScreen { 15 | 16 | private final ArrayList panels = new ArrayList<>(); 17 | 18 | public ClickGuiScreen() { 19 | int xoffset = 0; 20 | for (Hack.Category category : Hack.Category.values()) { 21 | panels.add(new Panel(category, 10 + xoffset, 10, 100, 15)); 22 | xoffset += 100; 23 | } 24 | } 25 | 26 | @Override 27 | public void drawScreen(int mouseX, int mouseY, float partialTicks) { 28 | for (Panel panel : panels) { 29 | panel.render(mouseX, mouseY, partialTicks); 30 | } 31 | } 32 | 33 | @Override 34 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) { 35 | for (Panel panel : panels) { 36 | panel.mouseClicked(mouseX, mouseY, mouseButton); 37 | } 38 | } 39 | 40 | @Override 41 | public void mouseReleased(int mouseX, int mouseY, int mouseButton) { 42 | for (Panel panel : panels) { 43 | panel.mouseReleased(mouseX, mouseY, mouseButton); 44 | } 45 | } 46 | 47 | @Override 48 | public void keyTyped(char keychar, int keycode) throws IOException { 49 | for (Panel panel : panels) { 50 | panel.keyTyped(keychar, keycode); 51 | } 52 | 53 | super.keyTyped(keychar, keycode); 54 | } 55 | 56 | @Override 57 | public boolean doesGuiPauseGame() { 58 | return false; 59 | } 60 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/NotoriousMod.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import net.minecraftforge.common.MinecraftForge; 5 | import net.minecraftforge.fml.common.Mod; 6 | import net.minecraftforge.fml.common.event.FMLInitializationEvent; 7 | import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; 8 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 9 | import org.apache.logging.log4j.LogManager; 10 | import org.apache.logging.log4j.Logger; 11 | import org.lwjgl.opengl.Display; 12 | import java.util.Comparator; 13 | 14 | /** 15 | * @author Gav06 16 | * @since 6/15/2021 17 | */ 18 | 19 | @Mod( 20 | modid = NotoriousMod.MOD_ID, 21 | name = NotoriousMod.MOD_NAME, 22 | version = NotoriousMod.VERSION, 23 | clientSideOnly = true 24 | ) 25 | public class NotoriousMod { 26 | 27 | public static final String MOD_ID = "notorious"; 28 | public static final String MOD_NAME = "Notorious"; 29 | public static final String VERSION = "0.6.2"; 30 | public static final String NAME_VERSION = MOD_NAME + " " + VERSION; 31 | 32 | public static final Logger LOGGER = LogManager.getLogger("Notorious"); 33 | 34 | @Mod.EventHandler 35 | public void init(FMLInitializationEvent event) { 36 | new Notorious(); 37 | MinecraftForge.EVENT_BUS.register(this); 38 | } 39 | 40 | @Mod.EventHandler 41 | public void postInit(FMLPostInitializationEvent event) { 42 | 43 | Display.setTitle(NotoriousMod.NAME_VERSION); 44 | } 45 | 46 | @SubscribeEvent 47 | public void onTick(PlayerLivingUpdateEvent event) { 48 | Notorious.INSTANCE.hackManager.getSortedHacks().sort(Comparator.comparing(hack -> -Notorious.INSTANCE.fontRenderer.getStringWidth(hack.getName() + hack.getMetaData()))); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/client/Notification.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.client; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.notifications.NotificationType; 9 | import me.gavin.notorious.setting.BooleanSetting; 10 | import me.gavin.notorious.setting.ModeSetting; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | 13 | @RegisterHack(name = "Notifications", description = "ez", category = Hack.Category.Client) 14 | public class Notification extends Hack { 15 | 16 | @RegisterSetting 17 | public final ModeSetting style = new ModeSetting("Style", "Skeet", "Skeet", "Basic"); 18 | @RegisterSetting 19 | public final BooleanSetting moduleToggle = new BooleanSetting("ModuleToggle", true); 20 | 21 | @SubscribeEvent 22 | public void onUpdate(PlayerLivingUpdateEvent event) { 23 | for (Hack hack : notorious.hackManager.getHacks()) { 24 | if(moduleToggle.isEnabled()) { 25 | if(!hack.isEnabled() && (System.currentTimeMillis() - hack.lastDisabledTime) < 250) { 26 | notorious.notificationManager.show(new me.gavin.notorious.notifications.Notification("ToggleMessage", ChatFormatting.BOLD + hack.getName() + ChatFormatting.RESET + " has been " + ChatFormatting.RED + "DISABLED!", NotificationType.INFO)); 27 | }else if(hack.isEnabled() && (System.currentTimeMillis() - hack.lastEnabledTime) < 250) { 28 | notorious.notificationManager.show(new me.gavin.notorious.notifications.Notification("ToggleMessage", ChatFormatting.BOLD + hack.getName() + ChatFormatting.RESET + " has been " + ChatFormatting.GREEN + "ENABLED!", NotificationType.INFO)); 29 | } 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/Notorious.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious; 2 | 3 | import me.gavin.notorious.event.EventProcessor; 4 | import me.gavin.notorious.friend.Friends; 5 | import me.gavin.notorious.gui.ClickGuiScreen; 6 | import me.gavin.notorious.manager.*; 7 | import me.gavin.notorious.util.TotemPopListener; 8 | import me.gavin.notorious.util.font.CFontLoader; 9 | import me.gavin.notorious.util.font.CFontRenderer; 10 | import net.minecraftforge.common.MinecraftForge; 11 | import org.lwjgl.opengl.Display; 12 | 13 | /** 14 | * @author Gav06 15 | * @since 6/15/2021 16 | */ 17 | 18 | public class Notorious { 19 | 20 | public static Notorious INSTANCE; 21 | 22 | public final HackManager hackManager; 23 | public final ClickGuiScreen clickGuiScreen; 24 | public final CFontRenderer fontRenderer; 25 | public final CommandManager commandManager; 26 | public final MessageManager messageManager; 27 | public final RotationManager rotationManager; 28 | public final TotemPopListener popListener; 29 | public final Friends friend; 30 | public final NotificationManager notificationManager; 31 | public final ConfigManager configManager; 32 | 33 | public Notorious() { 34 | INSTANCE = this; 35 | 36 | hackManager = new HackManager(); 37 | fontRenderer = new CFontRenderer(CFontLoader.HELVETICA, true, true); 38 | clickGuiScreen = new ClickGuiScreen(); 39 | commandManager = new CommandManager(); 40 | messageManager = new MessageManager(); 41 | rotationManager = new RotationManager(); 42 | popListener = new TotemPopListener(); 43 | friend = new Friends(); 44 | notificationManager = new NotificationManager(); 45 | configManager = new ConfigManager(); 46 | 47 | new EventProcessor(); 48 | 49 | MinecraftForge.EVENT_BUS.register(this); 50 | 51 | configManager.load(); 52 | configManager.attach(); 53 | } 54 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/DiscordUtil.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import club.minnced.discord.rpc.DiscordEventHandlers; 4 | import club.minnced.discord.rpc.DiscordRPC; 5 | import club.minnced.discord.rpc.DiscordRichPresence; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraft.client.multiplayer.ServerData; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | import java.util.Objects; 12 | 13 | public class DiscordUtil { 14 | 15 | private static final DiscordRichPresence discordRichPresence = new DiscordRichPresence(); 16 | private static final DiscordRPC discordRPC = DiscordRPC.INSTANCE; 17 | 18 | public static void startRPC() { 19 | DiscordEventHandlers eventHandlers = new DiscordEventHandlers(); 20 | String ip; 21 | if(Minecraft.getMinecraft().isIntegratedServerRunning()) { 22 | ip = "Singleplayer"; 23 | }else { 24 | ip = Objects.requireNonNull(Minecraft.getMinecraft().getCurrentServerData()).serverIP; 25 | } 26 | eventHandlers.disconnected = ((var1, var2) -> System.out.println("Discord RPC disconnected, var1: " + var1 + ", var2: " + var2)); 27 | 28 | String discordID = "866094794517643265"; 29 | discordRPC.Discord_Initialize(discordID, eventHandlers, true, null); 30 | 31 | discordRichPresence.startTimestamp = System.currentTimeMillis() / 1000L; 32 | discordRichPresence.details = "Owning on " + ip; 33 | discordRichPresence.largeImageKey = "big_papa"; 34 | discordRichPresence.largeImageText = "discord.gg/nPBPJRcuqP"; 35 | discordRichPresence.smallImageKey = "jerking_off"; 36 | discordRichPresence.smallImageText = "Busting a nut in your mom."; 37 | discordRichPresence.state = null; 38 | discordRPC.Discord_UpdatePresence(discordRichPresence); 39 | } 40 | 41 | public static void stopRPC() { 42 | discordRPC.Discord_Shutdown(); 43 | discordRPC.Discord_ClearPresence(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/manager/RotationManager.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.manager; 2 | 3 | import me.gavin.notorious.event.events.PacketEvent; 4 | import me.gavin.notorious.mixin.mixins.accessor.ICPacketPlayerMixin; 5 | import me.gavin.notorious.stuff.IMinecraft; 6 | import me.gavin.notorious.util.MathUtil; 7 | import net.minecraft.entity.Entity; 8 | import net.minecraft.network.play.client.CPacketPlayer; 9 | import net.minecraft.util.math.BlockPos; 10 | import net.minecraft.util.math.Vec3d; 11 | import net.minecraftforge.common.MinecraftForge; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | 14 | public class RotationManager implements IMinecraft { 15 | 16 | public RotationManager() { 17 | MinecraftForge.EVENT_BUS.register(this); 18 | } 19 | 20 | public boolean shouldRotate = false; 21 | public float desiredPitch; 22 | public float desiredYaw; 23 | 24 | @SubscribeEvent 25 | public void onPacket(PacketEvent.Send event) { 26 | if (!shouldRotate) 27 | return; 28 | 29 | if (event.getPacket() instanceof CPacketPlayer) { 30 | final CPacketPlayer packet = (CPacketPlayer) event.getPacket(); 31 | final ICPacketPlayerMixin accessor = (ICPacketPlayerMixin) packet; 32 | accessor.setYawAccessor(desiredYaw); 33 | accessor.setPitchAccessor(desiredPitch); 34 | } 35 | } 36 | 37 | public void rotateToEntity(Entity entity) { 38 | final float[] angle = MathUtil.calcAngle(mc.player.getPositionEyes(mc.getRenderPartialTicks()), entity.getPositionVector()); 39 | shouldRotate = true; 40 | desiredYaw = angle[0]; 41 | desiredPitch = angle[1]; 42 | } 43 | 44 | public void rotateToPosition(BlockPos position) { 45 | final float[] angle = MathUtil.calcAngle(mc.player.getPositionEyes(mc.getRenderPartialTicks()), new Vec3d(position.getX() + 0.5f, position.getY() - 0.5f, position.getZ())); 46 | shouldRotate = true; 47 | desiredYaw = angle[0]; 48 | desiredPitch = angle[1]; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/client/ToggleMessage.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.client; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.setting.ModeSetting; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | @RegisterHack(name = "ToggleMessage", description = "ez", category = Hack.Category.Client) 12 | public class ToggleMessage extends Hack { 13 | 14 | @RegisterSetting public final ModeSetting messageMode = new ModeSetting("MessageMode", "Removable", "Removable", "Normal"); 15 | 16 | @SubscribeEvent 17 | public void onUpdate(PlayerLivingUpdateEvent event) { 18 | for (Hack hack : notorious.hackManager.getHacks()) { 19 | if(!hack.isEnabled() && (System.currentTimeMillis() - hack.lastDisabledTime) < 50) { 20 | if(messageMode.getMode().equals("Removable")) { 21 | notorious.messageManager.sendRemovableMessage(ChatFormatting.BOLD + hack.getName() + ChatFormatting.RESET + ChatFormatting.RED + ChatFormatting.BOLD + " DISABLED!", 1); 22 | }else { 23 | notorious.messageManager.sendMessage(ChatFormatting.BOLD + hack.getName() + ChatFormatting.RESET + ChatFormatting.RED + ChatFormatting.BOLD + " DISABLED!"); 24 | } 25 | }else if(hack.isEnabled() && (System.currentTimeMillis() - hack.lastEnabledTime) < 50) { 26 | if(messageMode.getMode().equals("Removable")) { 27 | notorious.messageManager.sendRemovableMessage(ChatFormatting.BOLD + hack.getName() + ChatFormatting.RESET + ChatFormatting.GREEN + ChatFormatting.BOLD + " ENABLED!", 1); 28 | }else { 29 | notorious.messageManager.sendMessage(ChatFormatting.BOLD + hack.getName() + ChatFormatting.RESET + ChatFormatting.GREEN + ChatFormatting.BOLD + " ENABLED!"); 30 | } 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/event/EventProcessor.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.event; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.stuff.IMinecraft; 6 | import me.gavin.notorious.util.ProjectionUtil; 7 | import net.minecraftforge.client.event.RenderWorldLastEvent; 8 | import net.minecraftforge.common.MinecraftForge; 9 | import net.minecraftforge.event.entity.living.LivingEvent; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | import net.minecraftforge.fml.common.gameevent.InputEvent; 12 | import net.minecraftforge.fml.common.gameevent.TickEvent; 13 | import org.lwjgl.input.Keyboard; 14 | 15 | /** 16 | * @author Gav06 17 | * @since 6/15/2021 18 | */ 19 | 20 | public class EventProcessor implements IMinecraft { 21 | 22 | public EventProcessor() { 23 | MinecraftForge.EVENT_BUS.register(this); 24 | } 25 | 26 | @SubscribeEvent 27 | public void onTick(TickEvent.ClientTickEvent event){ 28 | if (mc.player != null && mc.world != null){ 29 | Notorious.INSTANCE.hackManager.getHacks().stream().filter(Hack::isEnabled).forEach(Hack::onTick); 30 | } 31 | } 32 | 33 | @SubscribeEvent 34 | public void onUpdate(LivingEvent.LivingUpdateEvent event){ 35 | if (mc.player != null && mc.world != null){ 36 | Notorious.INSTANCE.hackManager.getHacks().stream().filter(Hack::isEnabled).forEach(Hack::onUpdate); 37 | } 38 | } 39 | 40 | @SubscribeEvent 41 | public void onKey(InputEvent.KeyInputEvent event) { 42 | if (Keyboard.getEventKeyState()) { 43 | if (Keyboard.getEventKey() == 0) 44 | return; 45 | 46 | for (Hack hack : Notorious.INSTANCE.hackManager.getHacks()) { 47 | if (hack.getBind() == Keyboard.getEventKey()) { 48 | hack.toggle(); 49 | } 50 | } 51 | } 52 | } 53 | 54 | @SubscribeEvent 55 | public void onRenderWorldLast(RenderWorldLastEvent event) { 56 | ProjectionUtil.updateMatrix(); 57 | } 58 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/PenisESP.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import me.gavin.notorious.hack.Hack; 4 | import me.gavin.notorious.hack.RegisterHack; 5 | import me.gavin.notorious.hack.RegisterSetting; 6 | import me.gavin.notorious.setting.NumSetting; 7 | import me.gavin.notorious.util.RenderUtil; 8 | import net.minecraft.client.renderer.RenderHelper; 9 | import net.minecraft.entity.player.EntityPlayer; 10 | import net.minecraftforge.client.event.RenderWorldLastEvent; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | import org.lwjgl.opengl.GL11; 13 | 14 | @RegisterHack(name = "PenisESP", description = "ESP for your penis.", category = Hack.Category.Render) 15 | public class PenisESP extends Hack { 16 | 17 | private float pspin, pcumsize, pamount; 18 | 19 | @Override 20 | public void onEnable() { 21 | pspin = 0; 22 | pcumsize = 0; 23 | pamount = 0; 24 | } 25 | 26 | @SubscribeEvent 27 | public void render(RenderWorldLastEvent event) { 28 | for (final Object o : mc.world.loadedEntityList) { 29 | if (o instanceof EntityPlayer) { 30 | final EntityPlayer player = (EntityPlayer)o; 31 | final double x2 = player.lastTickPosX + (player.posX - player.lastTickPosX) * mc.getRenderPartialTicks(); 32 | final double x = x2 - mc.getRenderManager().viewerPosX; 33 | final double y2 = player.lastTickPosY + (player.posY - player.lastTickPosY) * mc.getRenderPartialTicks(); 34 | final double y = y2 - mc.getRenderManager().viewerPosY; 35 | final double z2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * mc.getRenderPartialTicks(); 36 | final double z = z2 - mc.getRenderManager().viewerPosZ; 37 | GL11.glPushMatrix(); 38 | RenderHelper.disableStandardItemLighting(); 39 | RenderUtil.drawPenis(player, x, y, z, pspin, pcumsize, pamount); 40 | RenderHelper.enableStandardItemLighting(); 41 | GL11.glPopMatrix(); 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/notifications/Notification.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.notifications; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.stuff.IMinecraft; 5 | import net.minecraft.client.gui.Gui; 6 | import net.minecraft.client.gui.ScaledResolution; 7 | 8 | import java.awt.*; 9 | 10 | public class Notification implements IMinecraft { 11 | 12 | public String title; 13 | public String message; 14 | public NotificationType type; 15 | 16 | public long start; 17 | 18 | public Notification(String title, String message, NotificationType type) { 19 | this.title = title; 20 | this.message = message; 21 | this.type = type; 22 | 23 | } 24 | 25 | public void show() { 26 | start = System.currentTimeMillis(); 27 | } 28 | 29 | public void draw() { 30 | int width = mc.fontRenderer.getStringWidth(message) + 2; 31 | 32 | ScaledResolution sr = new ScaledResolution(mc); 33 | 34 | if(Notorious.INSTANCE.hackManager.getHack(me.gavin.notorious.hack.hacks.client.Notification.class).style.getMode().equals("Skeet")) { 35 | Gui.drawRect(sr.getScaledWidth() - width, sr.getScaledHeight() - 40, sr.getScaledWidth(), sr.getScaledHeight() - 5, new Color(0, 0, 0, 255).getRGB()); 36 | Gui.drawRect(sr.getScaledWidth() - width, sr.getScaledHeight() - 40, sr.getScaledWidth() - width + 5, sr.getScaledHeight() - 5, type.color.getRGB()); 37 | }else { 38 | Gui.drawRect(sr.getScaledWidth() - width, sr.getScaledHeight() - 20, sr.getScaledWidth(), sr.getScaledHeight() - 5, 0x7F000000); 39 | } 40 | 41 | if(Notorious.INSTANCE.hackManager.getHack(me.gavin.notorious.hack.hacks.client.Notification.class).style.getMode().equals("Skeet")) { 42 | mc.fontRenderer.drawString(title, sr.getScaledWidth() - width + 8, sr.getScaledHeight() - 2 - 35, -1); 43 | mc.fontRenderer.drawString(message, sr.getScaledWidth() - width + 8, sr.getScaledHeight() - 15, -1); 44 | }else { 45 | mc.fontRenderer.drawString(message, sr.getScaledWidth() - width + 4, sr.getScaledHeight() - 15, -1); 46 | } 47 | } 48 | 49 | public long timeLeft() { 50 | return System.currentTimeMillis() - start; 51 | } 52 | 53 | public boolean expired() { 54 | return timeLeft() > 2000; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/world/Lawnmower.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.world; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.util.BlockUtil; 8 | import me.gavin.notorious.setting.NumSetting; 9 | import me.gavin.notorious.util.MathUtil; 10 | import me.gavin.notorious.util.RenderUtil; 11 | import net.minecraft.block.Block; 12 | import net.minecraft.init.Blocks; 13 | import net.minecraft.util.EnumFacing; 14 | import net.minecraft.util.EnumHand; 15 | import net.minecraft.util.math.AxisAlignedBB; 16 | import net.minecraft.util.math.BlockPos; 17 | import net.minecraftforge.client.event.RenderWorldLastEvent; 18 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 19 | import org.lwjgl.input.Keyboard; 20 | import org.lwjgl.opengl.GL11; 21 | 22 | import java.awt.*; 23 | import java.lang.reflect.Array; 24 | import java.util.ArrayList; 25 | import java.util.List; 26 | 27 | /** 28 | * @author Gav06 and gerald0mc 29 | * @since 6/15/2021 30 | */ 31 | 32 | @RegisterHack(name = "Lawnmower", description = "Mines tall grass and stuff around you", category = Hack.Category.World) 33 | public class Lawnmower extends Hack { 34 | 35 | @RegisterSetting 36 | public final NumSetting delay = new NumSetting("Delay", 5, 1, 10, 1); 37 | 38 | public ArrayList posList; 39 | 40 | private BlockPos targetBlock; 41 | 42 | @SubscribeEvent 43 | public void onLivingUpdate(PlayerLivingUpdateEvent event) { 44 | posList = BlockUtil.getSurroundingBlocks(4, true); 45 | 46 | for (BlockPos pos : posList) { 47 | if (isMineable(mc.world.getBlockState(pos).getBlock()) && mc.player.ticksExisted % delay.getValue() == 0.0) { 48 | BlockUtil.damageBlock(pos, false, true); 49 | } 50 | } 51 | } 52 | 53 | private boolean isMineable(Block block) { 54 | return block == Blocks.TALLGRASS || block == Blocks.DOUBLE_PLANT || block == Blocks.RED_FLOWER || block == Blocks.YELLOW_FLOWER; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/SkyColor.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.hack.hacks.client.ClickGUI; 8 | import me.gavin.notorious.setting.BooleanSetting; 9 | import me.gavin.notorious.setting.ColorSetting; 10 | import me.gavin.notorious.setting.ModeSetting; 11 | import net.minecraftforge.client.event.EntityViewRenderEvent; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import net.minecraftforge.fml.common.gameevent.TickEvent; 14 | 15 | import java.awt.*; 16 | 17 | @RegisterHack(name = "SkyColor", description = "ez", category = Hack.Category.Render) 18 | public class SkyColor extends Hack { 19 | 20 | @RegisterSetting 21 | public final ModeSetting colorMode = new ModeSetting("ColorMode", "ClientSync", "ClientSync", "RGB"); 22 | @RegisterSetting 23 | public final ColorSetting rgba = new ColorSetting("SkyColor", 125, 0, 255, 255); 24 | @RegisterSetting 25 | public final BooleanSetting fog = new BooleanSetting("Fog", true); 26 | 27 | @SubscribeEvent 28 | public void fogColors(final EntityViewRenderEvent.FogColors event) { 29 | if(colorMode.getMode().equals("RGB")) { 30 | event.setRed(rgba.getAsColor().getRed() / 255f); 31 | event.setGreen(rgba.getAsColor().getGreen() / 255f); 32 | event.setBlue(rgba.getAsColor().getBlue() / 255f); 33 | }else { 34 | event.setRed(Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).guiColor.getAsColor().getRed() / 255f); 35 | event.setGreen(Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).guiColor.getAsColor().getGreen() / 255f); 36 | event.setBlue(Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).guiColor.getAsColor().getBlue() / 255f); 37 | } 38 | } 39 | 40 | @SubscribeEvent 41 | public void fog_density(final EntityViewRenderEvent.FogDensity event) { 42 | if(fog.isEnabled()) { 43 | event.setDensity(0.0f); 44 | event.setCanceled(true); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/misc/GhastNotifier.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.misc; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.BooleanSetting; 8 | import net.minecraft.entity.Entity; 9 | import net.minecraft.entity.monster.EntityGhast; 10 | import net.minecraft.init.SoundEvents; 11 | import net.minecraftforge.event.entity.living.LivingEvent; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import java.util.HashSet; 14 | import java.util.Set; 15 | 16 | @RegisterHack(name = "GhastNotifier", description = "", category = Hack.Category.Misc) 17 | public class GhastNotifier extends Hack { 18 | 19 | // commented out because it crashes you randomly 20 | // get better at skidding faggot 21 | 22 | @RegisterSetting 23 | public final BooleanSetting playSound = new BooleanSetting("PlaySound", true); 24 | @RegisterSetting 25 | public final BooleanSetting glow = new BooleanSetting("Glow", true); 26 | 27 | private Set ghasts = new HashSet(); 28 | 29 | @Override 30 | public void onEnable() { 31 | if(!ghasts.isEmpty()) { 32 | ghasts.clear(); 33 | } 34 | } 35 | 36 | @SubscribeEvent 37 | public void onUpdate(LivingEvent.LivingUpdateEvent event) { 38 | for(Entity e : mc.world.loadedEntityList) { 39 | if(!(e instanceof EntityGhast) || ghasts.contains(e)) 40 | continue; 41 | notorious.messageManager.sendMessage("Ghast detected at X: " + ChatFormatting.RED + ChatFormatting.BOLD + e.getPosition().getX() + ChatFormatting.RESET + " Y: " + ChatFormatting.RED + ChatFormatting.BOLD + e.getPosition().getY() + ChatFormatting.RESET + " Z: " + ChatFormatting.RED + ChatFormatting.BOLD + e.getPosition().getZ() + ChatFormatting.RESET + "!"); 42 | ghasts.add(e); 43 | if(playSound.isEnabled()) 44 | mc.player.playSound(SoundEvents.BLOCK_ANVIL_DESTROY, 1.0f, 1.0f); 45 | if(glow.isEnabled()) 46 | e.setGlowing(true); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/mixin/mixins/MixinItemRenderer.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.mixin.mixins; 2 | 3 | import me.gavin.notorious.hack.hacks.render.ViewModel; 4 | import net.minecraft.client.renderer.GlStateManager; 5 | import net.minecraft.client.renderer.ItemRenderer; 6 | import net.minecraft.client.renderer.block.model.ItemCameraTransforms; 7 | import net.minecraft.entity.EntityLivingBase; 8 | import net.minecraft.item.ItemStack; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 13 | 14 | @Mixin({ItemRenderer.class}) 15 | public class MixinItemRenderer { 16 | 17 | @Inject(method = "renderItemSide", at = @At("HEAD")) 18 | public void renderItemSide(EntityLivingBase entitylivingbaseIn, ItemStack heldStack, ItemCameraTransforms.TransformType transform, boolean leftHanded, CallbackInfo ci) { 19 | if (ViewModel.INSTANCE.isEnabled()) { 20 | GlStateManager.scale(ViewModel.INSTANCE.scaleX.getValue() / 100F, ViewModel.INSTANCE.scaleY.getValue() / 100F, ViewModel.INSTANCE.scaleZ.getValue() / 100F); 21 | if (transform == ItemCameraTransforms.TransformType.FIRST_PERSON_RIGHT_HAND) { 22 | GlStateManager.translate(ViewModel.INSTANCE.translateX.getValue() / 200F, ViewModel.INSTANCE.translateY.getValue() / 200F, ViewModel.INSTANCE.translateZ.getValue() / 200F); 23 | GlStateManager.rotate(ViewModel.INSTANCE.rotateX.getValue(), 1, 0, 0); 24 | GlStateManager.rotate(ViewModel.INSTANCE.rotateY.getValue(), 0, 1, 0); 25 | GlStateManager.rotate(ViewModel.INSTANCE.rotateZ.getValue(), 0, 0, 1); 26 | } else if (transform == ItemCameraTransforms.TransformType.FIRST_PERSON_LEFT_HAND) { 27 | GlStateManager.translate(-ViewModel.INSTANCE.translateX.getValue() / 200F, ViewModel.INSTANCE.translateY.getValue() / 200F, ViewModel.INSTANCE.translateZ.getValue() / 200F); 28 | GlStateManager.rotate(-ViewModel.INSTANCE.rotateX.getValue(), 1, 0, 0); 29 | GlStateManager.rotate(ViewModel.INSTANCE.rotateY.getValue(), 0, 1, 0); 30 | GlStateManager.rotate(ViewModel.INSTANCE.rotateZ.getValue(), 0, 0, 1); 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/PopCounter.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.Notorious; 5 | import me.gavin.notorious.event.events.TotemPopEvent; 6 | import me.gavin.notorious.hack.Hack; 7 | import me.gavin.notorious.hack.RegisterHack; 8 | import me.gavin.notorious.notifications.Notification; 9 | import me.gavin.notorious.notifications.NotificationType; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | 12 | @RegisterHack(name = "PopCounter", description = "Counts totem pops", category = Hack.Category.Chat) 13 | public class PopCounter extends Hack { 14 | 15 | public void onDeath(String name, int pops, int entId) { 16 | final String s = pops == 1 ? "" : "s"; 17 | notorious.messageManager.sendRemovableMessage(ChatFormatting.RED + name + ChatFormatting.RESET + " has died after popping " + ChatFormatting.GREEN + pops + ChatFormatting.RESET + " totem" + s, entId); 18 | if(Notorious.INSTANCE.hackManager.getHack(me.gavin.notorious.hack.hacks.client.Notification.class).isEnabled()) { 19 | notorious.notificationManager.show(new Notification("Totem Pop", String.format("%s has died after popping %s...", name, pops), NotificationType.INFO)); 20 | } 21 | } 22 | 23 | @SubscribeEvent 24 | public void onPop(TotemPopEvent event) { 25 | if (event.getPopCount() == 1) { 26 | notorious.messageManager.sendRemovableMessage(ChatFormatting.RED + event.getName() + ChatFormatting.RESET + " has popped a totem", event.getEntityId()); 27 | if(Notorious.INSTANCE.hackManager.getHack(me.gavin.notorious.hack.hacks.client.Notification.class).isEnabled()) { 28 | notorious.notificationManager.show(new Notification("Totem Pop", String.format("%s has popped a totem...", event.getName(), event.getPopCount()), NotificationType.INFO)); 29 | } 30 | } else { 31 | notorious.messageManager.sendRemovableMessage(ChatFormatting.RED + event.getName() + ChatFormatting.RESET + " has popped " + ChatFormatting.GREEN + event.getPopCount() + ChatFormatting.RESET + " totems", event.getEntityId()); 32 | if(Notorious.INSTANCE.hackManager.getHack(me.gavin.notorious.hack.hacks.client.Notification.class).isEnabled()) { 33 | notorious.notificationManager.show(new Notification("Totem Pop", String.format("%s has popped %s totems...", event.getName(), event.getPopCount()), NotificationType.INFO)); 34 | } 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/combat/BurrowBreaker.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.combat; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.BooleanSetting; 8 | import me.gavin.notorious.util.BlockUtil; 9 | import net.minecraft.entity.Entity; 10 | import net.minecraft.entity.player.EntityPlayer; 11 | import net.minecraft.init.Blocks; 12 | import net.minecraft.init.Items; 13 | import net.minecraft.item.ItemPickaxe; 14 | import net.minecraft.util.EnumHand; 15 | import net.minecraft.util.math.BlockPos; 16 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 17 | 18 | import java.util.ArrayList; 19 | import java.util.List; 20 | 21 | @RegisterHack(name = "BurrowBreaker", description = "ez", category = Hack.Category.Combat) 22 | public class BurrowBreaker extends Hack { 23 | 24 | @RegisterSetting 25 | public final BooleanSetting packet = new BooleanSetting("Packet", false); 26 | @RegisterSetting 27 | public final BooleanSetting rotate = new BooleanSetting("Rotate", true); 28 | 29 | private boolean isBreaking = false; 30 | public BlockPos pos; 31 | public List burrowedEntities = new ArrayList<>(); 32 | 33 | @SubscribeEvent 34 | public void onUpdate(PlayerLivingUpdateEvent event) { 35 | burrowedEntities.clear(); 36 | for(Entity e : mc.world.loadedEntityList) { 37 | if(e instanceof EntityPlayer) { 38 | if(e.equals(mc.player)) 39 | return; 40 | pos = new BlockPos(e.posX, e.posY + 0.2D, e.posZ); 41 | if(mc.world.getBlockState(pos).getBlock() == Blocks.OBSIDIAN || mc.world.getBlockState(pos).getBlock() == Blocks.ENDER_CHEST) { 42 | burrowedEntities.add(pos); 43 | } 44 | if(burrowedEntities.contains(pos) && mc.player.getHeldItemMainhand().getItem() instanceof ItemPickaxe && !isBreaking) { 45 | BlockUtil.damageBlock(pos, packet.getValue(), rotate.getValue()); 46 | isBreaking = true; 47 | } 48 | if(mc.world.getBlockState(pos).getBlock() == Blocks.AIR) { 49 | isBreaking = false; 50 | } 51 | } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/VisualRange.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import net.minecraft.entity.Entity; 8 | import net.minecraft.entity.player.EntityPlayer; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | @RegisterHack(name = "VisualRange", description = "Sends a message in chat when a player enters your range.", category = Hack.Category.Chat) 15 | public class VisualRange extends Hack { 16 | 17 | private List peopleInArea; 18 | private List peopleNearbyNew; 19 | private List peopleToRemove; 20 | 21 | @Override 22 | public void onEnable() { 23 | peopleInArea = new ArrayList<>(); 24 | peopleToRemove = new ArrayList<>(); 25 | } 26 | 27 | @SubscribeEvent 28 | public void onUpdate(PlayerLivingUpdateEvent event) { 29 | peopleNearbyNew = new ArrayList<>(); 30 | List playerEntities = mc.world.playerEntities; 31 | for(Entity e : playerEntities) { 32 | if(e.getName().equals(mc.player.getName())) continue; 33 | peopleNearbyNew.add(e.getName()); 34 | } 35 | if(peopleNearbyNew.size() > 0) { 36 | for(String name : peopleNearbyNew) { 37 | if(!peopleInArea.contains(name)) { 38 | notorious.messageManager.sendMessage(ChatFormatting.RED + name + ChatFormatting.RESET + " has entered your Visual Range"); 39 | peopleInArea.add(name); 40 | } 41 | } 42 | } 43 | if(peopleInArea.size() > 0) { 44 | for(String name : peopleInArea) { 45 | if(!peopleNearbyNew.contains(name)) { 46 | peopleToRemove.add(name); 47 | notorious.messageManager.sendMessage(ChatFormatting.RED + name + ChatFormatting.RESET + " has left your Visual Range"); 48 | } 49 | } 50 | if(peopleToRemove.size() > 0) { 51 | for(String name : peopleToRemove) { 52 | peopleInArea.remove(name); 53 | } 54 | peopleToRemove.clear(); 55 | } 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/movement/AntiVoid.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.movement; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.setting.ModeSetting; 9 | import me.gavin.notorious.setting.NumSetting; 10 | import net.minecraft.util.math.RayTraceResult; 11 | import net.minecraft.util.math.Vec3d; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | 14 | @RegisterHack(name = "AntiVoid", description = "ez", category = Hack.Category.Movement) 15 | public class AntiVoid extends Hack { 16 | 17 | @RegisterSetting 18 | public final ModeSetting mode = new ModeSetting("Mode", "TP", "TP", "Jump", "Freeze"); 19 | @RegisterSetting 20 | public final NumSetting yOffset = new NumSetting("YOffset", 0.5f, 0.1f, 1f, 0.1f); 21 | 22 | @Override 23 | public String getMetaData() { 24 | return " [" + ChatFormatting.GRAY + mode.getMode() + ChatFormatting.RESET + "]"; 25 | } 26 | 27 | @SubscribeEvent 28 | public void onUpdate(PlayerLivingUpdateEvent event) { 29 | double yLevel = mc.player.posY; 30 | if(mode.getMode().equals("TP")) { 31 | if(yLevel <= (int) yOffset.getValue()) { 32 | mc.player.setPosition(mc.player.posX, mc.player.posY + 2, mc.player.posZ); 33 | notorious.messageManager.sendMessage("Attempting to TP out of void hole."); 34 | } 35 | }else if(mode.getMode().equals("Jump")){ 36 | if(yLevel <= (int) yOffset.getValue()) { 37 | mc.player.jump(); 38 | notorious.messageManager.sendMessage("Attempting to jump out of void hole."); 39 | } 40 | }else { 41 | // skidded from zware :trol: 42 | if (!mc.player.noClip && yLevel <= (double) yOffset.getValue()) { 43 | RayTraceResult trace = mc.world.rayTraceBlocks(mc.player.getPositionVector(), new Vec3d(mc.player.posX, 0.0D, mc.player.posZ), false, false, false); 44 | if (trace != null && trace.typeOfHit == RayTraceResult.Type.BLOCK) 45 | return; 46 | mc.player.setVelocity(0.0D, 0.0D, 0.0D); 47 | if (mc.player.getRidingEntity() != null) 48 | mc.player.getRidingEntity().setVelocity(0.0D, 0.0D, 0.0D); 49 | } 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/setting/BooleanComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.setting; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.gui.api.SettingComponent; 5 | import me.gavin.notorious.hack.hacks.client.ClickGUI; 6 | import me.gavin.notorious.hack.hacks.client.Font; 7 | import me.gavin.notorious.setting.BooleanSetting; 8 | import me.gavin.notorious.util.ColorUtil; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.client.gui.Gui; 11 | 12 | import java.awt.*; 13 | 14 | public class BooleanComponent extends SettingComponent { 15 | 16 | private final BooleanSetting setting; 17 | 18 | public BooleanComponent(BooleanSetting setting, int x, int y, int width, int height) { 19 | super(x, y, width, height); 20 | this.setting = setting; 21 | } 22 | 23 | @Override 24 | public void render(int mouseX, int mouseY, float partialTicks) { 25 | float time = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).length.getValue(); 26 | float saturation = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).saturation.getValue(); 27 | Font font = ((Font)Notorious.INSTANCE.hackManager.getHack(Font.class)); 28 | int color; 29 | int yOffset = 2; 30 | if(((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).colorMode.getMode().equals("Rainbow")) { 31 | color = ColorUtil.getRGBWave(time, saturation, yOffset * 20L); 32 | }else { 33 | color = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).guiColor.getAsColor().getRGB(); 34 | } 35 | Gui.drawRect(x, y, x + width, y + height, setting.isEnabled() ? color : new Color(0, 0, 0, (int) Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).backgroundAlpha.getValue()).getRGB()); 36 | Gui.drawRect(x, y, x + 2, y + height, color); 37 | if(font.isEnabled()) { 38 | Notorious.INSTANCE.fontRenderer.drawStringWithShadow(setting.getName(), x + 9f, y + 3f, Color.WHITE); 39 | }else { 40 | Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(setting.getName(), x + 9f, y + 1f, new Color(255, 255, 255).getRGB()); 41 | } 42 | } 43 | 44 | @Override 45 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) { 46 | if (isMouseInside(mouseX, mouseY) && mouseButton == 0) 47 | setting.toggle(); 48 | } 49 | 50 | @Override 51 | public void mouseReleased(int mouseX, int mouseY, int mouseButton) { } 52 | 53 | @Override 54 | public void keyTyped(char keyChar, int keyCode) { } 55 | 56 | @Override 57 | public int getTotalHeight() { 58 | return height; 59 | } 60 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/setting/QuadSliderComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.setting; 2 | 3 | import me.gavin.notorious.gui.api.SettingComponent; 4 | import me.gavin.notorious.setting.NumSetting; 5 | 6 | public abstract class QuadSliderComponent extends SettingComponent { 7 | 8 | private final NumSetting xSetting; 9 | private final NumSetting ySetting; 10 | 11 | private boolean dragging; 12 | protected float sliderWidth; 13 | protected float sliderHeight; 14 | 15 | public QuadSliderComponent(NumSetting xSetting, NumSetting ySetting, int x, int y, int width, int height) { 16 | super(x, y, width, height); 17 | this.xSetting = xSetting; 18 | this.ySetting = ySetting; 19 | } 20 | 21 | @Override 22 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) { 23 | if (isMouseInside(mouseX, mouseY) && mouseButton == 0) 24 | dragging = true; 25 | } 26 | 27 | @Override 28 | public void mouseReleased(int mouseX, int mouseY, int mouseButton) { 29 | if (mouseButton == 0) 30 | dragging = false; 31 | } 32 | 33 | @Override 34 | public void render(int mouseX, int mouseY, float partialTicks) { 35 | updateLogicX(mouseX); 36 | updateLogicY(mouseY); 37 | drawPicker(mouseX, mouseY, partialTicks); 38 | } 39 | 40 | public abstract void drawPicker(int mouseX, int mouseY, float partialTicks); 41 | 42 | private void updateLogicX(int mouseX) { 43 | float difference = Math.min(width, Math.max(0, mouseX - x)); 44 | float min = xSetting.getMin(); 45 | float max = xSetting.getMax(); 46 | float value = xSetting.getValue(); 47 | sliderWidth = width * (value - min) / (max - min); 48 | if (dragging) { 49 | if (difference == 0) { 50 | xSetting.setValue(min); 51 | } else { 52 | float val = SliderComponent.roundToPlace(difference / width * (max - min) + min, 3); 53 | xSetting.setValue(val); 54 | } 55 | } 56 | } 57 | 58 | private void updateLogicY(int mouseY) { 59 | float difference = Math.min(height, Math.max(0, mouseY - y)); 60 | float min = ySetting.getMin(); 61 | float max = ySetting.getMax(); 62 | float value = ySetting.getValue(); 63 | sliderHeight = height * (value - min) / (max - min); 64 | if (dragging) { 65 | if (difference == 0) { 66 | ySetting.setValue(min); 67 | } else { 68 | float val = SliderComponent.roundToPlace(difference / height * (max - min) + min, 3); 69 | ySetting.setValue(val); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/combat/Criticals.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.combat; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PacketEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.hack.hacks.combat.AutoCrystal; 9 | import me.gavin.notorious.setting.ModeSetting; 10 | import net.minecraft.entity.item.EntityEnderCrystal; 11 | import net.minecraft.network.play.client.CPacketPlayer; 12 | import net.minecraft.network.play.client.CPacketUseEntity; 13 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 14 | 15 | @RegisterHack(name = "Criticals", description = "Makes every one of your hits a critical.", category = Hack.Category.Combat) 16 | public class Criticals extends Hack { 17 | @RegisterSetting 18 | public final ModeSetting mode = new ModeSetting("Mode", "Packet", "Packet", "FakeJump", "Jump", "MiniJump"); 19 | 20 | @Override 21 | public String getMetaData() { 22 | return " [" + ChatFormatting.GRAY + mode.getMode() + ChatFormatting.RESET + "]"; 23 | } 24 | 25 | @SubscribeEvent 26 | public void onPacketSend(PacketEvent.Send event){ 27 | if (event.getPacket() instanceof CPacketUseEntity){ 28 | CPacketUseEntity packet = (CPacketUseEntity) event.getPacket(); 29 | if (packet.getAction() == CPacketUseEntity.Action.ATTACK && !(packet.getEntityFromWorld(mc.world) instanceof EntityEnderCrystal) && !AutoCrystal.isPredicting){ 30 | if (!mc.player.onGround) return; 31 | if (mc.player.isInWater() || mc.player.isInLava()) return; 32 | 33 | if (mode.getMode().equals("Packet")){ 34 | mc.player.connection.sendPacket(new CPacketPlayer.Position(mc.player.posX, mc.player.posY + 0.0625, mc.player.posZ, true)); 35 | mc.player.connection.sendPacket(new CPacketPlayer.Position(mc.player.posX, mc.player.posY, mc.player.posZ, false)); 36 | mc.player.connection.sendPacket(new CPacketPlayer.Position(mc.player.posX, mc.player.posY + 1.1E-5, mc.player.posZ, false)); 37 | mc.player.connection.sendPacket(new CPacketPlayer.Position(mc.player.posX, mc.player.posY, mc.player.posZ, false)); 38 | } else if (mode.getMode().equals("FakeJump")){ 39 | mc.player.motionY = 0.1f; 40 | mc.player.fallDistance = 0.1f; 41 | mc.player.onGround = false; 42 | } else { 43 | mc.player.jump(); 44 | if (mode.getMode().equals("MiniJump")){ 45 | mc.player.motionY /= 2; 46 | } 47 | } 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/setting/ModeComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.setting; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.gui.api.SettingComponent; 5 | import me.gavin.notorious.hack.hacks.client.ClickGUI; 6 | import me.gavin.notorious.hack.hacks.client.Font; 7 | import me.gavin.notorious.setting.ModeSetting; 8 | import me.gavin.notorious.util.ColorUtil; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.client.gui.Gui; 11 | import org.lwjgl.input.Keyboard; 12 | 13 | import java.awt.*; 14 | 15 | public class ModeComponent extends SettingComponent { 16 | 17 | private final ModeSetting setting; 18 | 19 | public ModeComponent(ModeSetting setting, int x, int y, int width, int height) { 20 | super(x, y, width, height); 21 | this.setting = setting; 22 | } 23 | 24 | @Override 25 | public void render(int mouseX, int mouseY, float partialTicks) { 26 | Font font = ((Font)Notorious.INSTANCE.hackManager.getHack(Font.class)); 27 | float time = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).length.getValue(); 28 | float saturation = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).saturation.getValue(); 29 | int color; 30 | if(((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).colorMode.getMode().equals("Rainbow")) { 31 | color = ColorUtil.getRainbow(time, saturation); 32 | }else { 33 | color = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).guiColor.getAsColor().getRGB(); 34 | } 35 | Gui.drawRect(x, y, x + width, y + height, new Color(0, 0, 0, (int) Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).backgroundAlpha.getValue()).getRGB()); 36 | Gui.drawRect(x, y, x + 2, y + height, color); 37 | if(font.isEnabled()) { 38 | Notorious.INSTANCE.fontRenderer.drawStringWithShadow(setting.getName() + " <" + setting.getMode() + ">", x + 9f, y + 3f, Color.WHITE); 39 | }else { 40 | Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(setting.getName() + " <" + setting.getMode() + ">", x + 9f, y + 1f, new Color(255, 255, 255).getRGB()); 41 | } 42 | } 43 | 44 | @Override 45 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) { 46 | if (isMouseInside(mouseX, mouseY)) { 47 | if (mouseButton == 0) { 48 | setting.cycle(false); 49 | }else if (mouseButton == 1) { 50 | setting.cycle(true); 51 | } 52 | } 53 | } 54 | 55 | @Override 56 | public void mouseReleased(int mouseX, int mouseY, int mouseButton) { } 57 | 58 | @Override 59 | public void keyTyped(char keyChar, int keyCode) { } 60 | 61 | @Override 62 | public int getTotalHeight() { 63 | return height; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/player/ToggleXP.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.player; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.mixin.mixins.accessor.IMinecraftMixin; 8 | import me.gavin.notorious.setting.BooleanSetting; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.init.Items; 11 | import net.minecraft.item.Item; 12 | import net.minecraft.network.play.client.CPacketHeldItemChange; 13 | import net.minecraft.network.play.client.CPacketPlayer; 14 | import net.minecraft.network.play.client.CPacketPlayerTryUseItem; 15 | import net.minecraft.util.EnumHand; 16 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 17 | 18 | @RegisterHack(name = "ToggleXP", description = "Ez", category = Hack.Category.Player) 19 | public class ToggleXP extends Hack { 20 | @RegisterSetting 21 | public final BooleanSetting footXP = new BooleanSetting("FootXP", true); 22 | 23 | private int serverSlot = -1; 24 | 25 | @Override 26 | public void onDisable() { 27 | mc.player.connection.sendPacket(new CPacketHeldItemChange(mc.player.inventory.currentItem)); 28 | serverSlot = -1; 29 | } 30 | 31 | @SubscribeEvent 32 | public void onUpdate(PlayerLivingUpdateEvent event) { 33 | int getSlot = getXPSlot(); 34 | if (getSlot != -1) { 35 | if (serverSlot == -1) { 36 | mc.player.connection.sendPacket(new CPacketHeldItemChange(getSlot)); 37 | serverSlot = getSlot; 38 | } else { 39 | if (mc.player.inventory.getStackInSlot(serverSlot).getItem() != Items.EXPERIENCE_BOTTLE) { 40 | serverSlot = -1; 41 | } else { 42 | if(footXP.isEnabled()) { 43 | mc.player.connection.sendPacket(new CPacketPlayer.Rotation(mc.player.rotationYaw, 90.0f, mc.player.onGround)); 44 | } 45 | ((IMinecraftMixin) mc).setRightClickDelayTimerAccessor(0); 46 | mc.player.connection.sendPacket(new CPacketPlayerTryUseItem(EnumHand.MAIN_HAND)); 47 | } 48 | } 49 | } 50 | } 51 | 52 | private int getXPSlot() { 53 | final Item item = Items.EXPERIENCE_BOTTLE; 54 | final Minecraft mc = Minecraft.getMinecraft(); 55 | int itemSlot = mc.player.getHeldItemMainhand().getItem() == item ? mc.player.inventory.currentItem : -1; 56 | if (itemSlot == -1) { 57 | for (int l = 0; l < 9; ++l) { 58 | if (mc.player.inventory.getStackInSlot(l).getItem() == item) { 59 | itemSlot = l; 60 | } 61 | } 62 | } 63 | 64 | return itemSlot; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/ChorusPredict.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PacketEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.setting.BooleanSetting; 9 | import me.gavin.notorious.setting.ColorSetting; 10 | import me.gavin.notorious.util.RenderUtil; 11 | import me.gavin.notorious.util.TimerUtils; 12 | import net.minecraft.init.SoundEvents; 13 | import net.minecraft.network.play.server.SPacketSoundEffect; 14 | import net.minecraft.util.math.AxisAlignedBB; 15 | import net.minecraft.util.math.BlockPos; 16 | import net.minecraftforge.client.event.RenderWorldLastEvent; 17 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 18 | 19 | import java.awt.*; 20 | 21 | @RegisterHack(name = "ChorusPredict", description = "ez", category = Hack.Category.Chat) 22 | public class ChorusPredict extends Hack { 23 | 24 | @RegisterSetting 25 | public final ColorSetting outlineColor = new ColorSetting("Outline", new Color(255, 255, 255, 255)); 26 | @RegisterSetting 27 | public final ColorSetting boxColor = new ColorSetting("Box", new Color(255, 255, 255, 125)); 28 | @RegisterSetting 29 | public final BooleanSetting render = new BooleanSetting("Render", true); 30 | 31 | private final TimerUtils timer = new TimerUtils(); 32 | private BlockPos chorusPos; 33 | 34 | @SubscribeEvent 35 | public void onUpdate(PacketEvent.Receive event) { 36 | if (event.getPacket() instanceof SPacketSoundEffect) { 37 | final SPacketSoundEffect packet = (SPacketSoundEffect) event.getPacket(); 38 | if(packet.getSound() == SoundEvents.ITEM_CHORUS_FRUIT_TELEPORT || packet.getSound() == SoundEvents.ENTITY_ENDERMEN_TELEPORT) { 39 | chorusPos = new BlockPos(packet.getX(), packet.getY(), packet.getZ()); 40 | notorious.messageManager.sendMessage("Player has used a chorus and is now at X:" + ChatFormatting.RED + ChatFormatting.BOLD + packet.getX() + ChatFormatting.RESET + " Y:" + ChatFormatting.RED + ChatFormatting.BOLD + packet.getY() + ChatFormatting.RESET + " Z:" + ChatFormatting.RED + ChatFormatting.BOLD + packet.getZ() + ChatFormatting.RESET + "!"); 41 | timer.reset(); 42 | } 43 | } 44 | } 45 | 46 | public void onTick() { 47 | if(timer.hasTimeElapsed(2000L)) { 48 | chorusPos = null; 49 | return; 50 | } 51 | } 52 | 53 | @SubscribeEvent 54 | public void onRender(RenderWorldLastEvent event) { 55 | if(chorusPos != null) { 56 | RenderUtil.renderFilledBB(new AxisAlignedBB(chorusPos), boxColor.getAsColor()); 57 | RenderUtil.renderOutlineBB(new AxisAlignedBB(chorusPos), outlineColor.getAsColor()); 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/AutoGroom.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.NumSetting; 8 | import me.gavin.notorious.util.TickTimer; 9 | import me.gavin.notorious.util.TimerUtils; 10 | import net.minecraft.entity.Entity; 11 | import net.minecraft.entity.player.EntityPlayer; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | @RegisterHack(name = "AutoGroom", description = "SyndicateNA simulator", category = Hack.Category.Chat) 18 | public class AutoGroom extends Hack { 19 | 20 | @RegisterSetting 21 | public final NumSetting delay = new NumSetting("Delay", 10, 1, 15, 1); 22 | 23 | private List peopleInArea; 24 | private List peopleNearbyNew; 25 | private List peopleToRemove; 26 | private TickTimer timer = new TickTimer(); 27 | 28 | @Override 29 | public void onEnable() { 30 | peopleInArea = new ArrayList<>(); 31 | peopleToRemove = new ArrayList<>(); 32 | } 33 | 34 | @SubscribeEvent 35 | public void onUpdate(PlayerLivingUpdateEvent event) { 36 | peopleNearbyNew = new ArrayList<>(); 37 | List playerEntities = mc.world.playerEntities; 38 | for(Entity e : playerEntities) { 39 | if(e.getName().equals(mc.player.getName())) continue; 40 | peopleNearbyNew.add(e.getName()); 41 | } 42 | if(peopleNearbyNew.size() > 0) { 43 | for(String name : peopleNearbyNew) { 44 | if(!peopleInArea.contains(name)) { 45 | if (timer.hasTicksPassed((long) (delay.getValue() * 20))) { 46 | mc.player.sendChatMessage("/msg " + name + " hewwo wittle kitten, come be my wittle discord girl? | discord.gg/BU9g9HgGBa"); 47 | timer.reset(); 48 | } 49 | peopleInArea.add(name); 50 | } 51 | } 52 | } 53 | if(peopleInArea.size() > 0) { 54 | for(String name : peopleInArea) { 55 | if(!peopleNearbyNew.contains(name)) { 56 | peopleToRemove.add(name); 57 | if (timer.hasTicksPassed((long) (delay.getValue() * 20))) { 58 | mc.player.sendChatMessage("/msg " + name + " ow no pwease dont weave me my wittle kitten UWU"); 59 | timer.reset(); 60 | } 61 | } 62 | } 63 | if(peopleToRemove.size() > 0) { 64 | for(String name : peopleToRemove) { 65 | peopleInArea.remove(name); 66 | } 67 | peopleToRemove.clear(); 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/AutoDox.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.BooleanSetting; 8 | import me.gavin.notorious.setting.ModeSetting; 9 | import me.gavin.notorious.setting.NumSetting; 10 | import me.gavin.notorious.util.TickTimer; 11 | import net.minecraft.entity.player.EntityPlayer; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import net.minecraftforge.fml.common.gameevent.TickEvent; 14 | 15 | @RegisterHack(name = "AutoDox", description = "ez", category = Hack.Category.Chat) 16 | public class AutoDox extends Hack { 17 | 18 | @RegisterSetting 19 | public final ModeSetting player = new ModeSetting("Player", "Sjnez", "Sjnez", "5nt", "waspgod", "FitMC", "SalC1", "ThousandStar"); 20 | @RegisterSetting 21 | public final NumSetting delay = new NumSetting("Delay", 10, 1, 15, 1); 22 | 23 | public TickTimer timer = new TickTimer(); 24 | 25 | @Override 26 | public String getMetaData() { 27 | return " [" + ChatFormatting.GRAY + player.getMode() + ChatFormatting.RESET + "]"; 28 | } 29 | 30 | @SubscribeEvent 31 | public void onUpdate(TickEvent.ClientTickEvent event) { 32 | if (mc.player == null || mc.world == null) return; 33 | 34 | if (timer.hasTicksPassed((long) (delay.getValue() * 20))) { 35 | String dox = "Name: Address: Email: Phone: "; 36 | switch (player.getMode()) { 37 | case "Sjnez": 38 | dox = "Name: Samuel J Nezzbit Address: 1820 261 St, Los Angelos, California Email: samuelnez@gmail.com Phone: (310)-538-8734 (310)-371-4746"; 39 | break; 40 | case "5nt": 41 | dox = "Name: Jake Findlay Piggot Address: 179 Ikwikws RdWest Vancouver Email: jakeyisad@gmail.com"; 42 | break; 43 | case "waspgod": 44 | dox = "Name: Wallace Arney Address: 152 Hazel Ln Piedmont, CA 94611 MomsEmail: lucy@lucyridgway.com Phone: (510) 735-9913 (510) 482-1580 (601) 923-1474"; 45 | break; 46 | case "FitMC": 47 | dox = "Name: Peter Michael Larsen Address: 190 N Collier Blvd Apt M7 Marco Island FL 34145-3213 Email: SonOfShoop@gmail.com"; 48 | break; 49 | case "SalC1": 50 | dox = "Name: Salvatore V Cracchiolo Address: 42 Waverly Ln Grosse Pt Frm Michigan 48236 Phone: 313-881-2977 313-881-2132"; 51 | break; 52 | case "ThousandStar": 53 | dox = "Name: Samuel Breedlove Address: 4204 50th Ave NE Seattle, WA 98105E mail: samgamingmmoments@gmail.com"; 54 | break; 55 | } 56 | mc.player.sendChatMessage(dox); 57 | timer.reset(); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/misc/Respawn.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.misc; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.BooleanSetting; 8 | import net.minecraft.client.gui.GuiGameOver; 9 | import net.minecraftforge.client.event.GuiOpenEvent; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | 12 | @RegisterHack(name = "Respawn", description = "Respawn automatically", category = Hack.Category.Misc) 13 | public class Respawn extends Hack { 14 | 15 | @RegisterSetting 16 | public final BooleanSetting antiDeathScreen = new BooleanSetting("Respawn", true); 17 | @RegisterSetting 18 | public final BooleanSetting deathCoord = new BooleanSetting("DeathCoords", true); 19 | 20 | @Override 21 | public String getMetaData() { 22 | return " [" + ChatFormatting.GRAY + deathCoords + ChatFormatting.RESET + "]"; 23 | } 24 | 25 | String deathCoords = "X:0 Y:0 Z:0"; 26 | 27 | @SubscribeEvent 28 | public void onDeath(GuiOpenEvent event) { 29 | if (event.getGui() instanceof GuiGameOver) { 30 | int x = mc.player.getPosition().getX(); 31 | int y = mc.player.getPosition().getY(); 32 | int z = mc.player.getPosition().getZ(); 33 | if (antiDeathScreen.isEnabled()) 34 | event.setCanceled(true); 35 | if (mc.player.getHealth() <= 0f) 36 | mc.player.respawnPlayer(); 37 | if(deathCoord.isEnabled()) { 38 | if (mc.player.dimension == -1) 39 | notorious.messageManager.sendRemovableMessage("You died at X: " + ChatFormatting.RED + ChatFormatting.BOLD + x + ChatFormatting.RESET + " Y: " + ChatFormatting.RED + ChatFormatting.BOLD + y + ChatFormatting.RESET + " Z: " + ChatFormatting.RED + ChatFormatting.BOLD + z + ChatFormatting.RESET + " Dimension: " + ChatFormatting.RED + ChatFormatting.BOLD + "Nether", 1); 40 | if (mc.player.dimension == 0) 41 | notorious.messageManager.sendRemovableMessage("You died at X: " + ChatFormatting.RED + ChatFormatting.BOLD + x + ChatFormatting.RESET + " Y: " + ChatFormatting.RED + ChatFormatting.BOLD + y + ChatFormatting.RESET + " Z: " + ChatFormatting.RED + ChatFormatting.BOLD + z + ChatFormatting.RESET + " Dimension: " + ChatFormatting.GREEN + ChatFormatting.BOLD + "Overworld", 2); 42 | if (mc.player.dimension == 1) 43 | notorious.messageManager.sendRemovableMessage("You died at X: " + ChatFormatting.RED + ChatFormatting.BOLD + x + ChatFormatting.RESET + " Y: " + ChatFormatting.RED + ChatFormatting.BOLD + y + ChatFormatting.RESET + " Z: " + ChatFormatting.RED + ChatFormatting.BOLD + z + ChatFormatting.RESET + " Dimension: " + ChatFormatting.DARK_PURPLE + ChatFormatting.BOLD + "End", 3); 44 | } 45 | deathCoords = "X:" + x + " Y:" + y + " Z:" + z; 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/TotemPopListener.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.event.events.PacketEvent; 5 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 6 | import me.gavin.notorious.event.events.TotemPopEvent; 7 | import me.gavin.notorious.hack.hacks.chat.PopCounter; 8 | import me.gavin.notorious.hack.hacks.misc.FakePlayer; 9 | import me.gavin.notorious.stuff.IMinecraft; 10 | import net.minecraft.entity.Entity; 11 | import net.minecraft.entity.player.EntityPlayer; 12 | import net.minecraft.network.play.server.SPacketEntityStatus; 13 | import net.minecraftforge.common.MinecraftForge; 14 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 15 | 16 | import java.util.HashMap; 17 | import java.util.Map; 18 | 19 | public class TotemPopListener implements IMinecraft { 20 | 21 | public final Map popMap = new HashMap<>(); 22 | private final Notorious notorious = Notorious.INSTANCE; 23 | 24 | public TotemPopListener() { 25 | MinecraftForge.EVENT_BUS.register(this); 26 | } 27 | 28 | @SubscribeEvent 29 | public void onPacket(PacketEvent.Receive event) { 30 | if (event.getPacket() instanceof SPacketEntityStatus) { 31 | final SPacketEntityStatus packet = (SPacketEntityStatus) event.getPacket(); 32 | if (packet.getOpCode() == 35) { 33 | final Entity entity = packet.getEntity(mc.world); 34 | if (entity instanceof EntityPlayer) { 35 | if (entity.equals(mc.player)) 36 | return; 37 | 38 | final EntityPlayer player = (EntityPlayer) entity; 39 | handlePop(player); 40 | } 41 | } 42 | } 43 | } 44 | 45 | public void handlePop(EntityPlayer player) { 46 | if (!popMap.containsKey(player.getName())) { 47 | MinecraftForge.EVENT_BUS.post(new TotemPopEvent(player.getName(), 1, player.getEntityId())); 48 | popMap.put(player.getName(), 1); 49 | } else { 50 | popMap.put(player.getName(), popMap.get(player.getName()) + 1); 51 | MinecraftForge.EVENT_BUS.post(new TotemPopEvent(player.getName(), popMap.get(player.getName()), player.getEntityId())); 52 | } 53 | } 54 | 55 | @SubscribeEvent 56 | public void onTick(PlayerLivingUpdateEvent event) { 57 | for (EntityPlayer player : mc.world.playerEntities) { 58 | if (player == notorious.hackManager.getHack(FakePlayer.class).fakePlayer) 59 | continue; 60 | 61 | if (player != mc.player && popMap.containsKey(player.getName())) { 62 | if ((player.isDead || !player.isEntityAlive() || player.getHealth() <= 0)) { 63 | notorious.hackManager.getHack(PopCounter.class).onDeath(player.getName(), popMap.get(player.getName()), player.getEntityId()); 64 | popMap.remove(player.getName()); 65 | } 66 | } 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/rewrite/InventoryUtil.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util.rewrite; 2 | 3 | import me.gavin.notorious.util.Instance; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.init.Items; 6 | import net.minecraft.inventory.ClickType; 7 | import net.minecraft.inventory.Slot; 8 | import net.minecraft.item.Item; 9 | import net.minecraft.item.ItemBlock; 10 | import net.minecraft.item.ItemStack; 11 | import net.minecraft.network.play.client.CPacketHeldItemChange; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | import java.util.Map; 16 | 17 | public class InventoryUtil implements Instance { 18 | /* NOTE TO DEVS!!! 19 | - In the old findItem method, the minimum was 0 and the maximum was 36 20 | - In the new one, it should be 0 and 35 if you're looking through the whole inventory 21 | - In the new one, it should be 0 and 9 if you're looking through the hotbar 22 | - In the new one, it should be 100 and 103 if you're looking through the armor slots 23 | */ 24 | 25 | /* Getting item to use in moveItemToSlot (minimum - maximum) 26 | - Crafting Output (0 - 0) 27 | - Crafting Input (1 - 4) 28 | - Armor (5 - 8) 29 | - Whole Inventory (9 - 35) 30 | - Hotbar (36 - 44) 31 | - Offhand Slot (45 - 45) 32 | */ 33 | 34 | public static int findItem(Item item, int minimum, int maximum){ 35 | for (int i = minimum; i <= maximum; i++){ 36 | ItemStack stack = mc.player.inventory.getStackInSlot(i); 37 | if (stack.getItem() == item) return i; 38 | } 39 | 40 | return -1; 41 | } 42 | 43 | public static int findBlock(Block block, int minimum, int maximum){ 44 | for (int i = minimum; i <= maximum; i++){ 45 | ItemStack stack = mc.player.inventory.getStackInSlot(i); 46 | if (stack.getItem() instanceof ItemBlock){ 47 | ItemBlock item = (ItemBlock) stack.getItem(); 48 | if (item.getBlock() == block) return i; 49 | } 50 | } 51 | 52 | return -1; 53 | } 54 | 55 | public static void switchToSlot(final int slot, final boolean silent) { 56 | mc.player.connection.sendPacket(new CPacketHeldItemChange(slot)); 57 | if (!silent) mc.player.inventory.currentItem = slot; 58 | 59 | if (mc.player.connection.getNetworkManager().isChannelOpen()) { 60 | mc.player.connection.getNetworkManager().processReceivedPackets(); 61 | } else { 62 | mc.player.connection.getNetworkManager().handleDisconnection(); 63 | } 64 | } 65 | 66 | public static void moveItemToSlot(Integer startSlot, Integer endSlot) { 67 | mc.playerController.windowClick(mc.player.inventoryContainer.windowId, startSlot, 0, ClickType.PICKUP, mc.player); 68 | mc.playerController.windowClick(mc.player.inventoryContainer.windowId, endSlot, 0, ClickType.PICKUP, mc.player); 69 | mc.playerController.windowClick(mc.player.inventoryContainer.windowId, startSlot, 0, ClickType.PICKUP, mc.player); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/manager/CommandManager.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.manager; 2 | 3 | import com.google.common.reflect.ClassPath; 4 | import me.gavin.notorious.Notorious; 5 | import me.gavin.notorious.command.Command; 6 | import me.gavin.notorious.command.RegisterCommand; 7 | import me.gavin.notorious.stuff.IMinecraft; 8 | import net.minecraftforge.client.event.ClientChatEvent; 9 | import net.minecraftforge.common.MinecraftForge; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | 12 | import java.io.IOException; 13 | import java.util.ArrayList; 14 | import java.util.Arrays; 15 | 16 | public class CommandManager implements IMinecraft { 17 | private String prefix = "."; 18 | private final ArrayList commands; 19 | 20 | public CommandManager(){ 21 | MinecraftForge.EVENT_BUS.register(this); 22 | commands = new ArrayList<>(); 23 | 24 | final ClassLoader loader = Thread.currentThread().getContextClassLoader(); 25 | 26 | try { 27 | final ClassPath path = ClassPath.from(loader); 28 | for (ClassPath.ClassInfo info : path.getTopLevelClassesRecursive("dev.notorious.client.commands.impl")){ 29 | final Class commandClass = info.load(); 30 | if (Command.class.isAssignableFrom(commandClass)){ 31 | if (commandClass.isAnnotationPresent(RegisterCommand.class)){ 32 | commands.add((Command) commandClass.newInstance()); 33 | } 34 | } 35 | } 36 | } catch (IOException | IllegalAccessException | InstantiationException exception){ 37 | exception.printStackTrace(); 38 | } 39 | } 40 | 41 | @SubscribeEvent 42 | public void onChatSent(ClientChatEvent event){ 43 | String message = event.getMessage(); 44 | 45 | if (message.startsWith(getPrefix())) { 46 | event.setCanceled(true); 47 | message = message.substring(getPrefix().length()); 48 | 49 | if (message.split(" ").length > 0){ 50 | String name = message.split(" ")[0]; 51 | boolean found = false; 52 | 53 | for (Command command : getCommands()){ 54 | if (command.getAliases().contains(name.toLowerCase()) || command.getName().equalsIgnoreCase(name)){ 55 | mc.ingameGUI.getChatGUI().addToSentMessages(event.getMessage()); 56 | command.onCommand(Arrays.copyOfRange(message.split(" "), 1, message.split(" ").length), message); 57 | found = true; 58 | break; 59 | } 60 | } 61 | 62 | if (!found){ 63 | Notorious.INSTANCE.messageManager.sendError("Command could not be found."); 64 | } 65 | } 66 | } 67 | } 68 | 69 | public ArrayList getCommands(){ 70 | return commands; 71 | } 72 | 73 | public String getPrefix(){ 74 | return prefix; 75 | } 76 | 77 | public void setPrefix(String prefix){ 78 | this.prefix = prefix; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/ArmorNotify.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.friend.Friend; 5 | import me.gavin.notorious.friend.Friends; 6 | import me.gavin.notorious.hack.Hack; 7 | import me.gavin.notorious.hack.RegisterHack; 8 | import me.gavin.notorious.hack.RegisterSetting; 9 | import me.gavin.notorious.setting.BooleanSetting; 10 | import me.gavin.notorious.setting.NumSetting; 11 | import me.gavin.notorious.util.ColorUtil; 12 | import net.minecraft.entity.Entity; 13 | import net.minecraft.entity.player.EntityPlayer; 14 | import net.minecraft.item.ItemStack; 15 | import net.minecraftforge.client.event.RenderGameOverlayEvent; 16 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 17 | 18 | @RegisterHack(name = "ArmorNotify", description = "ez", category = Hack.Category.Chat) 19 | public class ArmorNotify extends Hack { 20 | 21 | @RegisterSetting 22 | public final NumSetting x = new NumSetting("X", 2.0f, 0.1f, 1000.0f, 0.1f); 23 | @RegisterSetting 24 | public final NumSetting y = new NumSetting("Y", 2.0f, 0.1f, 600.0f, 0.1f); 25 | @RegisterSetting 26 | public final BooleanSetting rainbow = new BooleanSetting("Rainbow", true); 27 | 28 | boolean hasAnnounced = false; 29 | 30 | @SubscribeEvent 31 | public void onChat(PlayerLivingUpdateEvent event) { 32 | for(Entity e : mc.world.loadedEntityList) { 33 | boolean armorDurability = getArmorDurability(); 34 | if(e.equals(mc.player)) 35 | return; 36 | if(e instanceof EntityPlayer) { 37 | if(notorious.friend.isFriend(e.getName())) { 38 | if(armorDurability && !hasAnnounced) { 39 | mc.player.sendChatMessage("/msg " + ((EntityPlayer) e).getDisplayNameString() + " Hey bro you need to mend your armor :o"); 40 | hasAnnounced = true; 41 | } 42 | if(armorAboveSeventyFive()) { 43 | hasAnnounced = false; 44 | } 45 | } 46 | } 47 | } 48 | } 49 | 50 | @SubscribeEvent 51 | public void onUpdate(RenderGameOverlayEvent.Text event) { 52 | boolean armorDurability = getArmorDurability(); 53 | 54 | if(armorDurability) { 55 | mc.fontRenderer.drawStringWithShadow("Armor is below 50%", x.getValue(), y.getValue(), rainbow.getValue() ? ColorUtil.getRainbow(6f, 1f) : -1); 56 | } 57 | } 58 | 59 | private boolean getArmorDurability(){ 60 | for(ItemStack itemStack : mc.player.inventory.armorInventory){ 61 | if ((itemStack.getMaxDamage()/2) < itemStack.getItemDamage()){ 62 | return true; 63 | } 64 | } 65 | return false; 66 | } 67 | 68 | private boolean armorAboveSeventyFive() { 69 | for(ItemStack itemStack : mc.player.inventory.armorInventory) { 70 | if((itemStack.getMaxDamage()/3) < itemStack.getMaxDamage()) { 71 | return true; 72 | } 73 | } 74 | return false; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/world/ShulkerJew.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.world; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.RegisterHack; 7 | import me.gavin.notorious.hack.RegisterSetting; 8 | import me.gavin.notorious.setting.ColorSetting; 9 | import me.gavin.notorious.setting.NumSetting; 10 | import me.gavin.notorious.util.BlockUtil; 11 | import me.gavin.notorious.util.NColor; 12 | import me.gavin.notorious.util.RenderUtil; 13 | import net.minecraft.block.Block; 14 | import net.minecraft.block.BlockShulkerBox; 15 | import net.minecraft.init.Blocks; 16 | import net.minecraft.item.ItemPickaxe; 17 | import net.minecraft.util.math.AxisAlignedBB; 18 | import net.minecraft.util.math.BlockPos; 19 | import net.minecraftforge.client.event.RenderWorldLastEvent; 20 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 21 | 22 | @RegisterHack(name = "ShulkerJew", description = "Automatically breaks shulkers.", category = Hack.Category.World) 23 | public class ShulkerJew extends Hack { 24 | 25 | @RegisterSetting 26 | public final NumSetting range = new NumSetting("Range", 5f, 0f, 6f, 0.5f); 27 | @RegisterSetting 28 | public final ColorSetting boxColor = new ColorSetting("Box", new NColor(255, 255, 255, 125)); 29 | @RegisterSetting 30 | public final ColorSetting outlineColor = new ColorSetting("Outline", new NColor(255, 255, 255, 255)); 31 | 32 | private BlockPos targetedBlock = null; 33 | 34 | @Override 35 | public String getMetaData() { 36 | return " [" + ChatFormatting.GRAY + range.getValue() + ChatFormatting.RESET + "]"; 37 | } 38 | 39 | @SubscribeEvent 40 | public void onLivingUpdate(PlayerLivingUpdateEvent event) { 41 | if(targetedBlock == null) { 42 | for(BlockPos pos : BlockUtil.getSurroundingBlocks(5, true)) { 43 | final Block block = mc.world.getBlockState(pos).getBlock(); 44 | 45 | if(block instanceof BlockShulkerBox && mc.player.getHeldItemMainhand().getItem() instanceof ItemPickaxe) { 46 | targetedBlock = pos; 47 | break; 48 | } 49 | } 50 | }else { 51 | if(mc.world.getBlockState(targetedBlock).getBlock() == Blocks.AIR) { 52 | targetedBlock = null; 53 | return; 54 | } 55 | 56 | if(targetedBlock.getDistance(mc.player.getPosition().getX(), mc.player.getPosition().getY(), mc.player.getPosition().getZ()) > range.getValue()) { 57 | targetedBlock = null; 58 | return; 59 | } 60 | 61 | BlockUtil.damageBlock(targetedBlock, false, true); 62 | } 63 | } 64 | 65 | @SubscribeEvent 66 | public void onRender(RenderWorldLastEvent event) { 67 | if(targetedBlock != null) { 68 | final AxisAlignedBB bb = new AxisAlignedBB(targetedBlock); 69 | RenderUtil.renderFilledBB(bb, boxColor.getAsColor()); 70 | RenderUtil.renderOutlineBB(bb, outlineColor.getAsColor()); 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/ColorUtil.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import net.minecraft.util.math.MathHelper; 4 | 5 | import java.awt.*; 6 | 7 | public class ColorUtil { 8 | 9 | public static int getRainbow(float time, float saturation) { 10 | float hue = (System.currentTimeMillis() % (int) (time * 1000)) / (time * 1000); 11 | return Color.HSBtoRGB(hue, saturation, 1f); 12 | } 13 | 14 | public static int getRGBWave(float seconds, float saturation, long index) { 15 | float hue = (float) ((System.currentTimeMillis() + index) % (long) ((int) (seconds * 1000.0F))) / (seconds * 1000.0F); 16 | return Color.HSBtoRGB(hue, saturation, 1f); 17 | } 18 | 19 | public static Color colorRainbow(int delay, float saturation, float brightness) { 20 | double rainbowState = Math.ceil((double) (System.currentTimeMillis() + (long) delay) / 20.0); 21 | return Color.getHSBColor((float) ((rainbowState %= 360.0) / 360.0), saturation, brightness); 22 | } 23 | 24 | public static Color normalizedFade(float value) { 25 | final float green = (1f - value); 26 | return new Color((value), green, 0f); 27 | } 28 | 29 | public static Color normalizedFade(float value, Color startColor, Color endColor) { 30 | final float sr = startColor.getRed() / 255f; 31 | final float sg = startColor.getGreen() / 255f; 32 | final float sb = startColor.getBlue() / 255f; 33 | 34 | final float er = endColor.getRed() / 255f; 35 | final float eg = endColor.getGreen() / 255f; 36 | final float eb = endColor.getBlue() / 255f; 37 | 38 | final float r = MathHelper.clamp(sr * value + er * (1f - value), 0.0f, 1.0f); 39 | final float g = MathHelper.clamp(sg * value + eg * (1f - value), 0.0f, 1.0f); 40 | final float b = MathHelper.clamp(sb * value + eb * (1f - value), 0.0f, 1.0f); 41 | 42 | return new Color(r, g, b); 43 | } 44 | 45 | public static Color brightenFade(float value, Color color) { 46 | final float sr = color.getRed() / 255f; 47 | final float sg = color.getGreen() / 255f; 48 | final float sb = color.getBlue() / 255f; 49 | 50 | final float er = color.getRed() / 3f; 51 | final float eg = color.getGreen() / 3f; 52 | final float eb = color.getBlue() / 3f; 53 | 54 | final float r = MathHelper.clamp(sr * value + er * (4f - value), 0.0f, 1.0f); 55 | final float g = MathHelper.clamp(sg * value + eg * (4f - value), 0.0f, 1.0f); 56 | final float b = MathHelper.clamp(sb * value + eb * (4f - value), 0.0f, 1.0f); 57 | 58 | return new Color(r, g, b); 59 | } 60 | 61 | public static Color getColorFlow(double time, double speed, Color startColor, Color endColor) { 62 | final float sin = (float) (Math.sin(((System.currentTimeMillis() / speed) + time)) * 0.5f) + 0.5f; 63 | return normalizedFade(sin, startColor, endColor); 64 | } 65 | 66 | public static Color getColorBrighten(double time, double speed, Color startColor, Color endColor) { 67 | final float sin = (float) (Math.sin(((System.currentTimeMillis() / speed) + time)) * 0.5f) + 0.5f; 68 | return normalizedFade(sin, startColor, endColor); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/chat/PotionAlert.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.chat; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.setting.BooleanSetting; 8 | import net.minecraft.init.MobEffects; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | import net.minecraftforge.fml.common.gameevent.TickEvent; 11 | 12 | import java.awt.*; 13 | 14 | @RegisterHack(name = "PotionAlert", description = "Tells you in chat when you are hit by a arrow.", category = Hack.Category.Chat) 15 | public class PotionAlert extends Hack { 16 | 17 | @RegisterSetting 18 | public final BooleanSetting weakness = new BooleanSetting("Weakness", true); 19 | @RegisterSetting 20 | public final BooleanSetting slowness = new BooleanSetting("Slowness", true); 21 | 22 | @Override 23 | public String getMetaData() { 24 | String weakness; 25 | String slowness; 26 | if(mc.player.isPotionActive(MobEffects.WEAKNESS)) { 27 | weakness = ChatFormatting.GREEN + "Weakness"; 28 | }else { 29 | weakness = ChatFormatting.GRAY + "Weakness"; 30 | } 31 | if(mc.player.isPotionActive(MobEffects.SLOWNESS)) { 32 | slowness = ChatFormatting.GREEN + "Slowness"; 33 | }else { 34 | slowness = ChatFormatting.GRAY + "Slowness"; 35 | } 36 | return " [" + weakness + ChatFormatting.GRAY + ChatFormatting.RESET + " | " + ChatFormatting.GRAY + slowness + ChatFormatting.RESET + "]"; 37 | } 38 | 39 | private boolean hasAnnouncedWeakness = false; 40 | private boolean hasAnnouncedSlowness = false; 41 | 42 | @SubscribeEvent 43 | public void onUpdate(TickEvent.PlayerTickEvent event) { 44 | if(weakness.isEnabled()) { 45 | if(mc.player.isPotionActive(MobEffects.WEAKNESS) && !hasAnnouncedWeakness) { 46 | notorious.messageManager.sendMessage("RIP bro you now have " + ChatFormatting.GRAY + ChatFormatting.BOLD + "WEAKNESS" + ChatFormatting.RESET + "!"); 47 | hasAnnouncedWeakness = true; 48 | } 49 | if(!mc.player.isPotionActive(MobEffects.WEAKNESS) && hasAnnouncedWeakness) { 50 | notorious.messageManager.sendMessage("Ey bro good job you don't have " + ChatFormatting.GRAY + ChatFormatting.BOLD + "WEAKNESS" + ChatFormatting.RESET + " anymore!"); 51 | hasAnnouncedWeakness = false; 52 | } 53 | } 54 | if(slowness.isEnabled()) { 55 | if(mc.player.isPotionActive(MobEffects.SLOWNESS) && !hasAnnouncedSlowness) { 56 | notorious.messageManager.sendMessage("RIP bro you now have " + ChatFormatting.AQUA + ChatFormatting.BOLD + "SLOWNESS" + ChatFormatting.RESET + "!"); 57 | hasAnnouncedSlowness = true; 58 | } 59 | if(!mc.player.isPotionActive(MobEffects.SLOWNESS) && hasAnnouncedSlowness) { 60 | notorious.messageManager.sendMessage("Ey bro good job you don't have " + ChatFormatting.AQUA + ChatFormatting.BOLD + "SLOWNESS" + ChatFormatting.RESET + " anymore!"); 61 | hasAnnouncedSlowness = false; 62 | } 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/Hack.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.gui.api.Bindable; 5 | import me.gavin.notorious.gui.api.Toggleable; 6 | import me.gavin.notorious.setting.Setting; 7 | import me.gavin.notorious.stuff.IMinecraft; 8 | import net.minecraftforge.common.MinecraftForge; 9 | 10 | import java.util.ArrayList; 11 | 12 | /** 13 | * @author Gav06 14 | * @since 6/15/2021 15 | */ 16 | 17 | public abstract class Hack implements Toggleable, Bindable, IMinecraft { 18 | protected final Notorious notorious = Notorious.INSTANCE; 19 | 20 | private String name; 21 | private String description; 22 | private Category category; 23 | private boolean drawn = false; 24 | 25 | public long lastEnabledTime = -1L; 26 | public long lastDisabledTime = -1L; 27 | 28 | private int keybind; 29 | 30 | private boolean enabled; 31 | 32 | private final ArrayList settings = new ArrayList<>(); 33 | 34 | public ArrayList getSettings() { 35 | return settings; 36 | } 37 | 38 | @Override 39 | public boolean isEnabled() { 40 | return enabled; 41 | } 42 | 43 | public void toggle() { 44 | if (enabled) disable(); else enable(); 45 | } 46 | 47 | public void enable() { 48 | enabled = true; 49 | MinecraftForge.EVENT_BUS.register(this); 50 | onEnable(); 51 | lastEnabledTime = System.currentTimeMillis(); 52 | } 53 | 54 | public void disable() { 55 | enabled = false; 56 | MinecraftForge.EVENT_BUS.unregister(this); 57 | onDisable(); 58 | lastDisabledTime = System.currentTimeMillis(); 59 | } 60 | 61 | public void onUpdate(){} 62 | 63 | public void onTick(){} 64 | 65 | protected void onEnable() { } 66 | 67 | protected void onDisable() { } 68 | 69 | public String getName() { 70 | return name; 71 | } 72 | 73 | public void setName(String name) { 74 | this.name = name; 75 | } 76 | 77 | public String getDescription() { 78 | return description; 79 | } 80 | 81 | public void setDescription(String description) { 82 | this.description = description; 83 | } 84 | 85 | public Category getCategory() { 86 | return category; 87 | } 88 | 89 | @Override 90 | public int getBind() { 91 | return keybind; 92 | } 93 | 94 | @Override 95 | public void setBind(int keybind) { 96 | this.keybind = keybind; 97 | } 98 | 99 | public String getMetaData() { 100 | return ""; 101 | } 102 | 103 | public void setCategory(Category category) { 104 | this.category = category; 105 | } 106 | 107 | public void setDrawn() { 108 | this.drawn = true; 109 | } 110 | 111 | public void setUndrawn() { 112 | this.drawn = false; 113 | } 114 | 115 | public boolean isDrawn() { 116 | return drawn; 117 | } 118 | 119 | public enum Category { 120 | Combat, 121 | Player, 122 | Movement, 123 | Render, 124 | Misc, 125 | World, 126 | Chat, 127 | Client 128 | } 129 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/util/MathUtil.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.util; 2 | 3 | import me.gavin.notorious.stuff.IMinecraft; 4 | import net.minecraft.client.entity.EntityPlayerSP; 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.util.math.MathHelper; 7 | import net.minecraft.util.math.Vec3d; 8 | 9 | public class MathUtil implements IMinecraft { 10 | 11 | public static float normalize(float value, float min, float max) { 12 | return 1.0f - ((value - min) / (max - min)); 13 | } 14 | 15 | public static float[] calculateLookAt(double x, double y, double z, EntityPlayer me) { 16 | double dirx = lerp(mc.getRenderPartialTicks(), me.lastTickPosX, me.posX) - x; 17 | double diry = lerp(mc.getRenderPartialTicks(), me.lastTickPosY, me.posY) + me.getEyeHeight() - y; 18 | double dirz = lerp(mc.getRenderPartialTicks(), me.lastTickPosZ, me.posZ) - z; 19 | 20 | double distance = Math.sqrt(dirx * dirx + diry * diry + dirz * dirz); 21 | 22 | dirx /= distance; 23 | diry /= distance; 24 | dirz /= distance; 25 | 26 | float pitch = (float) Math.asin(diry); 27 | float yaw = (float) Math.atan2(dirz, dirx); 28 | 29 | pitch = (float) (pitch * 180.0f / Math.PI); 30 | yaw = (float) (yaw * 180.0f / Math.PI); 31 | 32 | yaw += 90.0f; 33 | 34 | return new float[]{yaw, pitch}; 35 | } 36 | 37 | private static float[] getLegitRotations(Vec3d vec) { 38 | Vec3d eyesPos = getEyesPos(); 39 | double diffX = vec.x - eyesPos.x; 40 | double diffY = vec.y - eyesPos.y; 41 | double diffZ = vec.z - eyesPos.z; 42 | double diffXZ = Math.sqrt(diffX * diffX + diffZ * diffZ); 43 | float yaw = (float) Math.toDegrees(Math.atan2(diffZ, diffX)) - 90.0F; 44 | float pitch = (float) -Math.toDegrees(Math.atan2(diffY, diffXZ)); 45 | return new float[]{mc.player.rotationYaw + MathHelper.wrapDegrees(yaw - mc.player.rotationYaw), mc.player.rotationPitch + MathHelper.wrapDegrees(pitch - mc.player.rotationPitch)}; 46 | } 47 | 48 | public static double roundValueToCenter(double inputVal) { 49 | double roundVal = Math.round(inputVal); 50 | 51 | if (roundVal > inputVal) { 52 | roundVal -= 0.5; 53 | } else if (roundVal <= inputVal) { 54 | roundVal += 0.5; 55 | } 56 | 57 | return roundVal; 58 | } 59 | 60 | private static Vec3d getEyesPos() { 61 | return new Vec3d(mc.player.posX, mc.player.posY + mc.player.getEyeHeight(), mc.player.posZ); 62 | } 63 | 64 | public static float[] calcAngle(Vec3d from, Vec3d to) { 65 | double difX = to.x - from.x; 66 | double difY = (to.y - from.y) * -1.0; 67 | double difZ = to.z - from.z; 68 | double dist = MathHelper.sqrt(difX * difX + difZ * difZ); 69 | return new float[]{(float) MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(difZ, difX)) - 90.0), (float) MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(difY, dist)))}; 70 | } 71 | 72 | public static float lerp(float delta, float start, float end) { 73 | return start + delta * (end - start); 74 | } 75 | 76 | public static double lerp(double delta, double start, double end) { 77 | return start + delta * (end - start); 78 | } 79 | 80 | public static double square(double input) { 81 | return input * input; 82 | } 83 | 84 | public static int clamp(int num, int min, int max) { 85 | return (num < min) ? min : Math.min(num, max); 86 | } 87 | 88 | } 89 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/setting/KeybindComponent.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui.setting; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.gui.api.Bindable; 5 | import me.gavin.notorious.gui.api.SettingComponent; 6 | import me.gavin.notorious.hack.hacks.client.ClickGUI; 7 | import me.gavin.notorious.hack.hacks.client.Font; 8 | import me.gavin.notorious.util.ColorUtil; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.client.gui.Gui; 11 | import org.lwjgl.input.Keyboard; 12 | 13 | import java.awt.*; 14 | 15 | public class KeybindComponent extends SettingComponent { 16 | 17 | private final Bindable setting; 18 | 19 | private boolean listening = false; 20 | 21 | public KeybindComponent(Bindable setting, int x, int y, int width, int height) { 22 | super(x, y, width, height); 23 | this.setting = setting; 24 | } 25 | 26 | @Override 27 | public void render(int mouseX, int mouseY, float partialTicks) { 28 | Font font = ((Font)Notorious.INSTANCE.hackManager.getHack(Font.class)); 29 | float time = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).length.getValue(); 30 | float saturation = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).saturation.getValue(); 31 | int color; 32 | if(((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).colorMode.getMode().equals("Rainbow")) { 33 | color = ColorUtil.getRainbow(time, saturation); 34 | }else { 35 | color = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).guiColor.getAsColor().getRGB(); 36 | } 37 | Gui.drawRect(x, y, x + width, y + height, new Color(0, 0, 0, (int) Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).backgroundAlpha.getValue()).getRGB()); 38 | Gui.drawRect(x, y, x + 2, y + height, color); 39 | if (listening) { 40 | if(font.isEnabled()) { 41 | Notorious.INSTANCE.fontRenderer.drawStringWithShadow("Bind: Listening...", x + 9f, y + 3f, Color.WHITE); 42 | }else { 43 | Minecraft.getMinecraft().fontRenderer.drawStringWithShadow("Bind: Listening...", x + 9f, y + 1f, new Color(255, 255, 255).getRGB()); 44 | } 45 | } else { 46 | if(font.isEnabled()) { 47 | Notorious.INSTANCE.fontRenderer.drawStringWithShadow("Bind: <" + Keyboard.getKeyName(setting.getBind()) + ">", x + 9f, y + 3f, Color.WHITE); 48 | }else { 49 | Minecraft.getMinecraft().fontRenderer.drawStringWithShadow("Bind: <" + Keyboard.getKeyName(setting.getBind()) + ">", x + 9f, y + 1f, new Color(255, 255, 255).getRGB()); 50 | } 51 | } 52 | } 53 | 54 | @Override 55 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) { 56 | if (isMouseInside(mouseX, mouseY) && mouseButton == 0) { 57 | listening = !listening; 58 | } 59 | } 60 | 61 | @Override 62 | public void mouseReleased(int mouseX, int mouseY, int mouseButton) { 63 | } 64 | 65 | @Override 66 | public void keyTyped(char keyChar, int keyCode) { 67 | if (listening) { 68 | listening = false; 69 | if (keyCode == Keyboard.KEY_DELETE || keyCode == Keyboard.KEY_BACK) { 70 | setting.setBind(0); 71 | return; 72 | } 73 | 74 | setting.setBind(keyCode); 75 | } 76 | } 77 | 78 | @Override 79 | public int getTotalHeight() { 80 | return height; 81 | } 82 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/world/MobOwner.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.world; 2 | 3 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.util.ProjectionUtil; 7 | import me.gavin.notorious.util.UUIDResolver; 8 | import net.minecraft.client.renderer.GlStateManager; 9 | import net.minecraft.entity.Entity; 10 | import net.minecraft.entity.passive.EntityTameable; 11 | import net.minecraft.util.math.MathHelper; 12 | import net.minecraft.util.math.Vec3d; 13 | import net.minecraftforge.client.event.RenderGameOverlayEvent; 14 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 15 | 16 | import java.util.HashMap; 17 | 18 | @RegisterHack(name = "MobOwner", description = "Shows you who owns the mob", category = Hack.Category.World) 19 | public class MobOwner extends Hack { 20 | 21 | private final HashMap resolvedEntities = new HashMap<>(); 22 | 23 | @SubscribeEvent 24 | public void onTick(PlayerLivingUpdateEvent event) { 25 | for (Entity entity : mc.world.loadedEntityList) { 26 | if (entity instanceof EntityTameable) { 27 | final EntityTameable tameable = (EntityTameable) entity; 28 | if (tameable.getOwnerId() != null) { 29 | final String ownerUUID = tameable.getOwnerId().toString(); 30 | if (!resolvedEntities.containsKey(tameable)) { 31 | resolvedEntities.put(tameable, null); 32 | new Thread(() -> resolvedEntities.put(tameable, UUIDResolver.resolveName(ownerUUID))).start(); 33 | } 34 | } 35 | } 36 | } 37 | } 38 | 39 | @SubscribeEvent 40 | public void onRender(RenderGameOverlayEvent.Text event) { 41 | for (Entity entity : mc.world.loadedEntityList) { 42 | if (entity instanceof EntityTameable) { 43 | final EntityTameable entityTameable = (EntityTameable) entity; 44 | if (entityTameable.getOwnerId() != null) { 45 | if (resolvedEntities.containsKey(entityTameable)) { 46 | String s; 47 | if (resolvedEntities.get(entityTameable) != null) { 48 | s = resolvedEntities.get(entityTameable); 49 | } else { 50 | s = entityTameable.getOwnerId().toString(); 51 | } 52 | 53 | final double lerpX = MathHelper.clampedLerp(entityTameable.lastTickPosX, entityTameable.posX, event.getPartialTicks()); 54 | final double lerpY = MathHelper.clampedLerp(entityTameable.lastTickPosY, entityTameable.posY, event.getPartialTicks()); 55 | final double lerpZ = MathHelper.clampedLerp(entityTameable.lastTickPosZ, entityTameable.posZ, event.getPartialTicks()); 56 | 57 | final Vec3d projection = ProjectionUtil.toScaledScreenPos(new Vec3d(lerpX, lerpY + entityTameable.height, lerpZ)); 58 | 59 | GlStateManager.pushMatrix(); 60 | GlStateManager.translate(projection.x, projection.y, 0); 61 | GlStateManager.scale(0.85f, 0.85f, 0f); 62 | mc.fontRenderer.drawStringWithShadow(s, -(mc.fontRenderer.getStringWidth(s) / 2f), -mc.fontRenderer.FONT_HEIGHT, -1); 63 | GlStateManager.popMatrix(); 64 | } 65 | } 66 | } 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/render/BreakESP.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.render; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.hack.Hack; 5 | import me.gavin.notorious.hack.RegisterHack; 6 | import me.gavin.notorious.hack.RegisterSetting; 7 | import me.gavin.notorious.mixin.mixins.accessor.IRenderGlobal; 8 | import me.gavin.notorious.setting.BooleanSetting; 9 | import me.gavin.notorious.setting.ColorSetting; 10 | import me.gavin.notorious.setting.ModeSetting; 11 | import me.gavin.notorious.setting.NumSetting; 12 | import me.gavin.notorious.util.ColorUtil; 13 | import me.gavin.notorious.util.RenderUtil; 14 | import net.minecraft.util.math.AxisAlignedBB; 15 | import net.minecraftforge.client.event.RenderWorldLastEvent; 16 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 17 | 18 | import java.awt.*; 19 | 20 | @RegisterHack(name = "BreakESP", description = "shows break progress", category = Hack.Category.Render) 21 | public class BreakESP extends Hack { 22 | 23 | @RegisterSetting 24 | public final ModeSetting mode = new ModeSetting("Mode", "Outline", "Both", "Outline", "Box"); 25 | @RegisterSetting 26 | public final ColorSetting outlineColor = new ColorSetting("OutlineColor", 255, 255, 255, 125); 27 | @RegisterSetting 28 | public final ColorSetting boxColor = new ColorSetting("BoxColor", 255, 255, 255, 125); 29 | @RegisterSetting 30 | public final BooleanSetting rainbow = new BooleanSetting("Rainbow", true); 31 | @RegisterSetting 32 | public final NumSetting saturation = new NumSetting("Saturation", 0.6f, 0.1f, 1f, 0.1f); 33 | @RegisterSetting 34 | public final NumSetting time = new NumSetting("RainbowLength", 8, 1, 15, 1); 35 | @RegisterSetting 36 | public final NumSetting range = new NumSetting("Range", 15, 1, 20, 1); 37 | @RegisterSetting 38 | public final BooleanSetting fade = new BooleanSetting("Fade", true); 39 | 40 | @Override 41 | public String getMetaData() { 42 | return " [" + ChatFormatting.GRAY + mode.getMode() + ChatFormatting.RESET + "]"; 43 | } 44 | 45 | boolean outline = false; 46 | boolean fill = false; 47 | 48 | @SubscribeEvent 49 | public void onRender(RenderWorldLastEvent event) { 50 | ((IRenderGlobal) mc.renderGlobal).getDamagedBlocks().forEach((integer, destroyBlockProgress) -> { 51 | Color rainbowColor = ColorUtil.colorRainbow((int) time.getValue(), saturation.getValue(), 1f); 52 | if(mode.getMode().equals("Both")) { 53 | outline = true; 54 | fill = true; 55 | }else if(mode.getMode().equals("Outline")) { 56 | outline = true; 57 | fill = false; 58 | }else { 59 | fill = true; 60 | outline = false; 61 | } 62 | if(destroyBlockProgress.getPosition().getDistance((int) mc.player.posX,(int) mc.player.posY,(int) mc.player.posZ) <= range.getValue()) { 63 | AxisAlignedBB pos = mc.world.getBlockState(destroyBlockProgress.getPosition()).getSelectedBoundingBox(mc.world, destroyBlockProgress.getPosition()); 64 | if (fade.isEnabled()) 65 | pos = pos.shrink((3 - (destroyBlockProgress.getPartialBlockDamage()) / (2.0 + (2.0 / 3.0))) / 9.0); 66 | if(outline) 67 | if(rainbow.isEnabled()) { 68 | RenderUtil.renderOutlineBB(pos, rainbowColor); 69 | }else { 70 | RenderUtil.renderOutlineBB(pos, outlineColor.getAsColor()); 71 | } 72 | if(fill) 73 | if(rainbow.isEnabled()) { 74 | RenderUtil.renderFilledBB(pos, rainbowColor); 75 | }else { 76 | RenderUtil.renderFilledBB(pos, boxColor.getAsColor()); 77 | } 78 | } 79 | }); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/gui/Panel.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.gui; 2 | 3 | import me.gavin.notorious.Notorious; 4 | import me.gavin.notorious.gui.api.*; 5 | import me.gavin.notorious.hack.Hack; 6 | import me.gavin.notorious.hack.hacks.client.ClickGUI; 7 | import me.gavin.notorious.hack.hacks.client.Font; 8 | import me.gavin.notorious.util.ColorUtil; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.client.gui.Gui; 11 | import org.lwjgl.input.Mouse; 12 | 13 | import java.awt.*; 14 | import java.util.ArrayList; 15 | 16 | public class Panel extends AbstractDragComponent { 17 | 18 | private final ArrayList buttons; 19 | 20 | private final Hack.Category category; 21 | 22 | public Panel(Hack.Category category, int x, int y, int width, int height) { 23 | super(x, y, width, height); 24 | this.buttons = new ArrayList<>(); 25 | this.category = category; 26 | 27 | for (Hack hack : Notorious.INSTANCE.hackManager.getHacksFromCategory(category)) { 28 | buttons.add(new Button(hack, x, y, width, 10)); 29 | } 30 | } 31 | 32 | @Override 33 | public void render(int mouseX, int mouseY, float partialTicks) { 34 | if (Mouse.getEventDWheel() > 0) { 35 | y -= (int) Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).scrollSpeed.getValue(); 36 | } else if (Mouse.getEventDWheel() < 0) { 37 | y += (int) Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).scrollSpeed.getValue(); 38 | } 39 | Font font = ((Font)Notorious.INSTANCE.hackManager.getHack(Font.class)); 40 | float time = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).length.getValue(); 41 | float saturation = ((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).saturation.getValue(); 42 | int color; 43 | if(((ClickGUI)Notorious.INSTANCE.hackManager.getHack(ClickGUI.class)).colorMode.getMode().equals("Rainbow")) { 44 | color = ColorUtil.getRainbow(time, saturation); 45 | }else { 46 | color = Notorious.INSTANCE.hackManager.getHack(ClickGUI.class).guiColor.getAsColor().getRGB(); 47 | } 48 | Gui.drawRect(x, y, x + width, y + height - 2, color); 49 | if(font.isEnabled()) { 50 | Notorious.INSTANCE.fontRenderer.drawStringWithShadow(category.name(), x + 3f, y + 5f, Color.WHITE); 51 | }else { 52 | Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(category.name(), x + 3f, y + 3f, new Color(255, 255, 255).getRGB()); 53 | } 54 | 55 | int yOffset = height; 56 | for (AbstractToggleContainer button : buttons) { 57 | button.x = this.x; 58 | button.y = this.y + yOffset; 59 | yOffset += button.getTotalHeight(); 60 | button.render(mouseX, mouseY, partialTicks); 61 | } 62 | 63 | updateDragPosition(mouseX, mouseY); 64 | } 65 | 66 | @Override 67 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) { 68 | if (isMouseInside(mouseX, mouseY) && mouseButton == 0) { 69 | startDragging(mouseX, mouseY); 70 | } 71 | 72 | for (AbstractToggleContainer button : buttons) { 73 | button.mouseClicked(mouseX, mouseY, mouseButton); 74 | } 75 | } 76 | 77 | @Override 78 | public void mouseReleased(int mouseX, int mouseY, int mouseButton) { 79 | if (mouseButton == 0) { 80 | stopDragging(mouseX, mouseY); 81 | } 82 | 83 | for (AbstractToggleContainer button : buttons) { 84 | button.mouseReleased(mouseX, mouseY, mouseButton); 85 | } 86 | } 87 | 88 | @Override 89 | public void keyTyped(char keyChar, int keyCode) { 90 | for (AbstractToggleContainer button : buttons) { 91 | button.keyTyped(keyChar, keyCode); 92 | } 93 | } 94 | 95 | public ArrayList getButtons() { 96 | return buttons; 97 | } 98 | } -------------------------------------------------------------------------------- /src/main/java/me/gavin/notorious/hack/hacks/world/BedFucker.java: -------------------------------------------------------------------------------- 1 | package me.gavin.notorious.hack.hacks.world; 2 | 3 | import com.mojang.realmsclient.gui.ChatFormatting; 4 | import me.gavin.notorious.event.events.PlayerLivingUpdateEvent; 5 | import me.gavin.notorious.event.events.PlayerModelRotationEvent; 6 | import me.gavin.notorious.event.events.PlayerWalkingUpdateEvent; 7 | import me.gavin.notorious.hack.Hack; 8 | import me.gavin.notorious.hack.RegisterHack; 9 | import me.gavin.notorious.hack.RegisterSetting; 10 | import me.gavin.notorious.mixin.mixins.accessor.IEntityPlayerSPMixin; 11 | import me.gavin.notorious.setting.ColorSetting; 12 | import me.gavin.notorious.setting.ModeSetting; 13 | import me.gavin.notorious.util.BlockUtil; 14 | import me.gavin.notorious.setting.NumSetting; 15 | import me.gavin.notorious.util.MathUtil; 16 | import me.gavin.notorious.util.NColor; 17 | import me.gavin.notorious.util.RenderUtil; 18 | import net.minecraft.block.Block; 19 | import net.minecraft.client.renderer.RenderGlobal; 20 | import net.minecraft.init.Blocks; 21 | import net.minecraft.util.EnumFacing; 22 | import net.minecraft.util.EnumHand; 23 | import net.minecraft.util.math.AxisAlignedBB; 24 | import net.minecraft.util.math.BlockPos; 25 | import net.minecraft.util.math.MathHelper; 26 | import net.minecraftforge.client.event.RenderWorldLastEvent; 27 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 28 | import org.lwjgl.input.Keyboard; 29 | 30 | /** 31 | * @author Gav06 32 | * @since 6/15/2021 33 | */ 34 | 35 | @RegisterHack(name = "BedFucker", description = "Fucks beds", category = Hack.Category.World) 36 | public class BedFucker extends Hack { 37 | 38 | @RegisterSetting 39 | public final NumSetting range = new NumSetting("Range", 5f, 0f, 6f, 0.5f); 40 | @RegisterSetting 41 | public final ColorSetting boxColor = new ColorSetting("Box", new NColor(255, 255, 255, 125)); 42 | @RegisterSetting 43 | public final ColorSetting outlineColor = new ColorSetting("Outline", new NColor(255, 255, 255, 255)); 44 | 45 | private BlockPos targetedBlock = null; 46 | 47 | @Override 48 | public String getMetaData() { 49 | return " [" + ChatFormatting.GRAY + range.getValue() + ChatFormatting.RESET + "]"; 50 | } 51 | 52 | @SubscribeEvent 53 | public void onLivingUpdate(PlayerWalkingUpdateEvent.Pre event) { 54 | if (targetedBlock == null) { 55 | for (BlockPos pos : BlockUtil.getSurroundingBlocks(MathHelper.ceil(range.getValue()), true)) { 56 | final Block block = mc.world.getBlockState(pos).getBlock(); 57 | 58 | if (block == Blocks.BED) { 59 | targetedBlock = pos; 60 | break; 61 | } 62 | } 63 | } else { 64 | if (mc.world.getBlockState(targetedBlock).getBlock() == Blocks.AIR) { 65 | targetedBlock = null; 66 | return; 67 | } 68 | 69 | if (targetedBlock.getDistance(mc.player.getPosition().getX(), mc.player.getPosition().getY(), mc.player.getPosition().getZ()) > range.getValue()) { 70 | targetedBlock = null; 71 | return; 72 | } 73 | 74 | BlockUtil.damageBlock(targetedBlock, false, true); 75 | } 76 | } 77 | 78 | // @SubscribeEvent 79 | // public void onPlayerModelRotate(PlayerModelRotationEvent event) { 80 | // if (targetedBlock != null) { 81 | // 82 | // //event.setYaw(rotation[0] - MathHelper.wrapDegrees(mc.player.rotationYaw)); 83 | // event.setPitch(rotation[1]); 84 | // } 85 | // } 86 | 87 | @SubscribeEvent 88 | public void onRender(RenderWorldLastEvent event) { 89 | if (targetedBlock != null) { 90 | final AxisAlignedBB bb = new AxisAlignedBB(targetedBlock); 91 | RenderUtil.renderFilledBB(bb, boxColor.getAsColor()); 92 | RenderUtil.renderOutlineBB(bb, outlineColor.getAsColor()); 93 | } 94 | } 95 | } --------------------------------------------------------------------------------